spec: updates for rspec-puppet 2.x and rspec 3.x
This patch aim to update our specs test in order to work with the rspec-puppet release 2.0.0, in the mean time, we update rspec syntax order to be prepared for rspec 3.x move. In details: * Upgrade and pin rspec-puppet from 1.0.1 to 2.0.0 * Convert 'should' keyword to 'is_expected.to' (prepare rspec 3.x) * Fix spec tests for rspec-puppet 2.0.0 * Clean Gemfile (remove over-specificication of runtime deps of puppetlabs_spec_helper) Change-Id: I405830cd95c9f0635418b91ff081c43d77234e39 Signed-off-by: Gael Chamoulaud <gchamoul@redhat.com>
This commit is contained in:
parent
f6bece8c53
commit
cb436e722e
4
Gemfile
4
Gemfile
@ -2,6 +2,7 @@ source 'https://rubygems.org'
|
|||||||
|
|
||||||
group :development, :test do
|
group :development, :test do
|
||||||
gem 'puppetlabs_spec_helper', :require => false
|
gem 'puppetlabs_spec_helper', :require => false
|
||||||
|
gem 'rspec-puppet', '~> 2.0.0', :require => false
|
||||||
|
|
||||||
gem 'puppet-lint', '~> 1.1.0'
|
gem 'puppet-lint', '~> 1.1.0'
|
||||||
gem 'metadata-json-lint'
|
gem 'metadata-json-lint'
|
||||||
@ -16,9 +17,6 @@ group :development, :test do
|
|||||||
gem 'puppet-lint-variable_contains_upcase'
|
gem 'puppet-lint-variable_contains_upcase'
|
||||||
gem 'puppet-lint-numericvariable'
|
gem 'puppet-lint-numericvariable'
|
||||||
|
|
||||||
gem 'rspec-puppet', '~> 1.0.1'
|
|
||||||
gem 'rake', '10.1.1'
|
|
||||||
gem 'rspec', '< 2.99'
|
|
||||||
gem 'json'
|
gem 'json'
|
||||||
gem 'webmock'
|
gem 'webmock'
|
||||||
end
|
end
|
||||||
|
@ -25,20 +25,20 @@ describe 'horizon' do
|
|||||||
|
|
||||||
context 'with default parameters' do
|
context 'with default parameters' do
|
||||||
it {
|
it {
|
||||||
should contain_package('python-lesscpy').with_ensure('present')
|
is_expected.to contain_package('python-lesscpy').with_ensure('present')
|
||||||
should contain_package('horizon').with(
|
is_expected.to contain_package('horizon').with(
|
||||||
:ensure => 'present',
|
:ensure => 'present',
|
||||||
:tag => 'openstack'
|
:tag => 'openstack'
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
it { should contain_exec('refresh_horizon_django_cache').with({
|
it { is_expected.to contain_exec('refresh_horizon_django_cache').with({
|
||||||
:command => '/usr/share/openstack-dashboard/manage.py compress',
|
:command => '/usr/share/openstack-dashboard/manage.py compress',
|
||||||
:refreshonly => true,
|
:refreshonly => true,
|
||||||
})}
|
})}
|
||||||
it { should contain_concat(platforms_params[:config_file]).that_notifies('Exec[refresh_horizon_django_cache]') }
|
it { is_expected.to contain_concat(platforms_params[:config_file]).that_notifies('Exec[refresh_horizon_django_cache]') }
|
||||||
|
|
||||||
it 'configures apache' do
|
it 'configures apache' do
|
||||||
should contain_class('horizon::wsgi::apache').with({
|
is_expected.to contain_class('horizon::wsgi::apache').with({
|
||||||
:servername => 'some.host.tld',
|
:servername => 'some.host.tld',
|
||||||
:listen_ssl => false,
|
:listen_ssl => false,
|
||||||
:servername => 'some.host.tld',
|
:servername => 'some.host.tld',
|
||||||
@ -47,7 +47,7 @@ describe 'horizon' do
|
|||||||
end
|
end
|
||||||
|
|
||||||
it 'generates local_settings.py' do
|
it 'generates local_settings.py' do
|
||||||
verify_concat_fragment_contents(subject, 'local_settings.py', [
|
verify_concat_fragment_contents(catalogue, 'local_settings.py', [
|
||||||
'DEBUG = False',
|
'DEBUG = False',
|
||||||
"ALLOWED_HOSTS = ['*', ]",
|
"ALLOWED_HOSTS = ['*', ]",
|
||||||
"SECRET_KEY = 'elj1IWiLoWHgcyYxFVLj7cM5rGOOxWl0'",
|
"SECRET_KEY = 'elj1IWiLoWHgcyYxFVLj7cM5rGOOxWl0'",
|
||||||
@ -71,13 +71,13 @@ describe 'horizon' do
|
|||||||
])
|
])
|
||||||
|
|
||||||
# From internals of verify_contents, get the contents to check for absence of a line
|
# From internals of verify_contents, get the contents to check for absence of a line
|
||||||
content = subject.resource('concat::fragment', 'local_settings.py').send(:parameters)[:content]
|
content = catalogue.resource('concat::fragment', 'local_settings.py').send(:parameters)[:content]
|
||||||
|
|
||||||
# With default options, should _not_ have a line to configure SESSION_ENGINE
|
# With default options, should _not_ have a line to configure SESSION_ENGINE
|
||||||
content.should_not match(/^SESSION_ENGINE/)
|
expect(content).not_to match(/^SESSION_ENGINE/)
|
||||||
end
|
end
|
||||||
|
|
||||||
it { should_not contain_file(params[:file_upload_temp_dir]) }
|
it { is_expected.not_to contain_file(params[:file_upload_temp_dir]) }
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'with overridden parameters' do
|
context 'with overridden parameters' do
|
||||||
@ -102,7 +102,7 @@ describe 'horizon' do
|
|||||||
end
|
end
|
||||||
|
|
||||||
it 'generates local_settings.py' do
|
it 'generates local_settings.py' do
|
||||||
verify_concat_fragment_contents(subject, 'local_settings.py', [
|
verify_concat_fragment_contents(catalogue, 'local_settings.py', [
|
||||||
'DEBUG = True',
|
'DEBUG = True',
|
||||||
"ALLOWED_HOSTS = ['*', ]",
|
"ALLOWED_HOSTS = ['*', ]",
|
||||||
'CSRF_COOKIE_SECURE = True',
|
'CSRF_COOKIE_SECURE = True',
|
||||||
@ -129,9 +129,9 @@ describe 'horizon' do
|
|||||||
])
|
])
|
||||||
end
|
end
|
||||||
|
|
||||||
it { should_not contain_file(platforms_params[:config_file]).that_notifies('Exec[refresh_horizon_django_cache]') }
|
it { is_expected.not_to contain_file(platforms_params[:config_file]).that_notifies('Exec[refresh_horizon_django_cache]') }
|
||||||
|
|
||||||
it { should contain_file(params[:file_upload_temp_dir]) }
|
it { is_expected.to contain_file(params[:file_upload_temp_dir]) }
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'with overridden parameters and cache_server_ip array' do
|
context 'with overridden parameters and cache_server_ip array' do
|
||||||
@ -142,12 +142,12 @@ describe 'horizon' do
|
|||||||
end
|
end
|
||||||
|
|
||||||
it 'generates local_settings.py' do
|
it 'generates local_settings.py' do
|
||||||
verify_concat_fragment_contents(subject, 'local_settings.py', [
|
verify_concat_fragment_contents(catalogue, 'local_settings.py', [
|
||||||
" 'LOCATION': [ '10.0.0.1:11211','10.0.0.2:11211', ],",
|
" 'LOCATION': [ '10.0.0.1:11211','10.0.0.2:11211', ],",
|
||||||
])
|
])
|
||||||
end
|
end
|
||||||
|
|
||||||
it { should contain_exec('refresh_horizon_django_cache') }
|
it { is_expected.to contain_exec('refresh_horizon_django_cache') }
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'with vhost_extra_params' do
|
context 'with vhost_extra_params' do
|
||||||
@ -158,7 +158,7 @@ describe 'horizon' do
|
|||||||
end
|
end
|
||||||
|
|
||||||
it 'configures apache' do
|
it 'configures apache' do
|
||||||
should contain_class('horizon::wsgi::apache').with({
|
is_expected.to contain_class('horizon::wsgi::apache').with({
|
||||||
:extra_params => { 'add_listen' => false },
|
:extra_params => { 'add_listen' => false },
|
||||||
})
|
})
|
||||||
end
|
end
|
||||||
@ -177,7 +177,7 @@ describe 'horizon' do
|
|||||||
end
|
end
|
||||||
|
|
||||||
it 'configures apache' do
|
it 'configures apache' do
|
||||||
should contain_class('horizon::wsgi::apache').with({
|
is_expected.to contain_class('horizon::wsgi::apache').with({
|
||||||
:bind_address => nil,
|
:bind_address => nil,
|
||||||
:listen_ssl => true,
|
:listen_ssl => true,
|
||||||
:horizon_cert => '/etc/pki/tls/certs/httpd.crt',
|
:horizon_cert => '/etc/pki/tls/certs/httpd.crt',
|
||||||
@ -193,7 +193,7 @@ describe 'horizon' do
|
|||||||
end
|
end
|
||||||
|
|
||||||
it 'does not configure apache' do
|
it 'does not configure apache' do
|
||||||
should_not contain_class('horizon::wsgi::apache')
|
is_expected.not_to contain_class('horizon::wsgi::apache')
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -208,7 +208,7 @@ describe 'horizon' do
|
|||||||
end
|
end
|
||||||
|
|
||||||
it 'AVAILABLE_REGIONS is configured' do
|
it 'AVAILABLE_REGIONS is configured' do
|
||||||
verify_concat_fragment_contents(subject, 'local_settings.py', [
|
verify_concat_fragment_contents(catalogue, 'local_settings.py', [
|
||||||
"AVAILABLE_REGIONS = [",
|
"AVAILABLE_REGIONS = [",
|
||||||
" ('http://region-1.example.com:5000/v2.0', 'Region-1'),",
|
" ('http://region-1.example.com:5000/v2.0', 'Region-1'),",
|
||||||
" ('http://region-2.example.com:5000/v2.0', 'Region-2'),",
|
" ('http://region-2.example.com:5000/v2.0', 'Region-2'),",
|
||||||
@ -230,7 +230,7 @@ describe 'horizon' do
|
|||||||
end
|
end
|
||||||
|
|
||||||
it 'POLICY_FILES_PATH and POLICY_FILES are configured' do
|
it 'POLICY_FILES_PATH and POLICY_FILES are configured' do
|
||||||
verify_concat_fragment_contents(subject, 'local_settings.py', [
|
verify_concat_fragment_contents(catalogue, 'local_settings.py', [
|
||||||
"POLICY_FILES_PATH = '/opt/openstack-dashboard'",
|
"POLICY_FILES_PATH = '/opt/openstack-dashboard'",
|
||||||
"POLICY_FILES = {",
|
"POLICY_FILES = {",
|
||||||
" 'compute': 'nova_policy.json',",
|
" 'compute': 'nova_policy.json',",
|
||||||
@ -251,7 +251,7 @@ describe 'horizon' do
|
|||||||
end
|
end
|
||||||
|
|
||||||
it 'uses the custom local_settings.py template' do
|
it 'uses the custom local_settings.py template' do
|
||||||
verify_concat_fragment_contents(subject, 'local_settings.py', [
|
verify_concat_fragment_contents(catalogue, 'local_settings.py', [
|
||||||
'# Custom local_settings.py',
|
'# Custom local_settings.py',
|
||||||
'DEBUG = True',
|
'DEBUG = True',
|
||||||
"HORIZON_CONFIG = {",
|
"HORIZON_CONFIG = {",
|
||||||
@ -280,7 +280,7 @@ describe 'horizon' do
|
|||||||
})
|
})
|
||||||
end
|
end
|
||||||
|
|
||||||
it { should_not contain_file(params[:file_upload_temp_dir]) }
|
it { is_expected.not_to contain_file(params[:file_upload_temp_dir]) }
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -29,13 +29,13 @@ describe 'horizon::wsgi::apache' do
|
|||||||
|
|
||||||
context 'with default parameters' do
|
context 'with default parameters' do
|
||||||
it 'configures apache' do
|
it 'configures apache' do
|
||||||
should contain_class('horizon::params')
|
is_expected.to contain_class('horizon::params')
|
||||||
should contain_class('apache')
|
is_expected.to contain_class('apache')
|
||||||
should contain_class('apache::mod::wsgi')
|
is_expected.to contain_class('apache::mod::wsgi')
|
||||||
should contain_service('httpd').with_name(platforms_params[:http_service])
|
is_expected.to contain_service('httpd').with_name(platforms_params[:http_service])
|
||||||
should contain_file(platforms_params[:httpd_config_file])
|
is_expected.to contain_file(platforms_params[:httpd_config_file])
|
||||||
should contain_package('horizon').with_ensure('present')
|
is_expected.to contain_package('horizon').with_ensure('present')
|
||||||
should contain_apache__vhost('horizon_vhost').with(
|
is_expected.to contain_apache__vhost('horizon_vhost').with(
|
||||||
'servername' => 'some.host.tld',
|
'servername' => 'some.host.tld',
|
||||||
'access_log_file' => 'horizon_access.log',
|
'access_log_file' => 'horizon_access.log',
|
||||||
'error_log_file' => 'horizon_error.log',
|
'error_log_file' => 'horizon_error.log',
|
||||||
@ -62,13 +62,13 @@ describe 'horizon::wsgi::apache' do
|
|||||||
end
|
end
|
||||||
|
|
||||||
it 'configures apache' do
|
it 'configures apache' do
|
||||||
should contain_class('horizon::params')
|
is_expected.to contain_class('horizon::params')
|
||||||
should contain_class('apache')
|
is_expected.to contain_class('apache')
|
||||||
should contain_class('apache::mod::wsgi')
|
is_expected.to contain_class('apache::mod::wsgi')
|
||||||
should contain_service('httpd').with_name(platforms_params[:http_service])
|
is_expected.to contain_service('httpd').with_name(platforms_params[:http_service])
|
||||||
should contain_file(platforms_params[:httpd_config_file])
|
is_expected.to contain_file(platforms_params[:httpd_config_file])
|
||||||
should contain_package('horizon').with_ensure('present')
|
is_expected.to contain_package('horizon').with_ensure('present')
|
||||||
should contain_apache__vhost('horizon_vhost').with(
|
is_expected.to contain_apache__vhost('horizon_vhost').with(
|
||||||
'servername' => 'some.host.tld',
|
'servername' => 'some.host.tld',
|
||||||
'access_log_file' => 'horizon_access.log',
|
'access_log_file' => 'horizon_access.log',
|
||||||
'error_log_file' => 'horizon_error.log',
|
'error_log_file' => 'horizon_error.log',
|
||||||
@ -100,9 +100,9 @@ describe 'horizon::wsgi::apache' do
|
|||||||
|
|
||||||
context 'with required parameters' do
|
context 'with required parameters' do
|
||||||
it 'configures apache for SSL' do
|
it 'configures apache for SSL' do
|
||||||
should contain_class('apache::mod::ssl')
|
is_expected.to contain_class('apache::mod::ssl')
|
||||||
end
|
end
|
||||||
it { should contain_apache__vhost('horizon_ssl_vhost').with(
|
it { is_expected.to contain_apache__vhost('horizon_ssl_vhost').with(
|
||||||
'servername' => 'some.host.tld',
|
'servername' => 'some.host.tld',
|
||||||
'access_log_file' => 'horizon_ssl_access.log',
|
'access_log_file' => 'horizon_ssl_access.log',
|
||||||
'error_log_file' => 'horizon_ssl_error.log',
|
'error_log_file' => 'horizon_ssl_error.log',
|
||||||
@ -121,7 +121,7 @@ describe 'horizon::wsgi::apache' do
|
|||||||
'wsgi_script_aliases' => { platforms_params[:root_url] => '/usr/share/openstack-dashboard/openstack_dashboard/wsgi/django.wsgi' }
|
'wsgi_script_aliases' => { platforms_params[:root_url] => '/usr/share/openstack-dashboard/openstack_dashboard/wsgi/django.wsgi' }
|
||||||
)}
|
)}
|
||||||
|
|
||||||
it { should contain_apache__vhost('horizon_vhost').with(
|
it { is_expected.to contain_apache__vhost('horizon_vhost').with(
|
||||||
'servername' => 'some.host.tld',
|
'servername' => 'some.host.tld',
|
||||||
'access_log_file' => 'horizon_access.log',
|
'access_log_file' => 'horizon_access.log',
|
||||||
'error_log_file' => 'horizon_error.log',
|
'error_log_file' => 'horizon_error.log',
|
||||||
@ -167,7 +167,7 @@ describe 'horizon::wsgi::apache' do
|
|||||||
end
|
end
|
||||||
|
|
||||||
it 'configures apache' do
|
it 'configures apache' do
|
||||||
should contain_apache__vhost('horizon_vhost').with(
|
is_expected.to contain_apache__vhost('horizon_vhost').with(
|
||||||
'add_listen' => false,
|
'add_listen' => false,
|
||||||
'docroot' => '/tmp'
|
'docroot' => '/tmp'
|
||||||
)
|
)
|
||||||
@ -201,7 +201,7 @@ describe 'horizon::wsgi::apache' do
|
|||||||
|
|
||||||
it_behaves_like 'apache for horizon'
|
it_behaves_like 'apache for horizon'
|
||||||
it {
|
it {
|
||||||
should contain_class('apache::mod::wsgi').with(:wsgi_socket_prefix => '/var/run/wsgi')
|
is_expected.to contain_class('apache::mod::wsgi').with(:wsgi_socket_prefix => '/var/run/wsgi')
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
shared_examples_for "a Puppet::Error" do |description|
|
shared_examples_for "a Puppet::Error" do |description|
|
||||||
it "with message matching #{description.inspect}" do
|
it "with message matching #{description.inspect}" do
|
||||||
expect { subject }.to raise_error(Puppet::Error, description)
|
expect { is_expected.to have_class_count(1) }.to raise_error(Puppet::Error, description)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -8,5 +8,5 @@ end
|
|||||||
|
|
||||||
def verify_concat_fragment_contents(subject, title, expected_lines)
|
def verify_concat_fragment_contents(subject, title, expected_lines)
|
||||||
content = subject.resource('concat::fragment', title).send(:parameters)[:content]
|
content = subject.resource('concat::fragment', title).send(:parameters)[:content]
|
||||||
(content.split("\n") & expected_lines).should == expected_lines
|
expect(content.split("\n") & expected_lines).to eq(expected_lines)
|
||||||
end
|
end
|
||||||
|
@ -5,51 +5,51 @@ describe "the os_any2array function" do
|
|||||||
let(:scope) { PuppetlabsSpec::PuppetInternals.scope }
|
let(:scope) { PuppetlabsSpec::PuppetInternals.scope }
|
||||||
|
|
||||||
it "should exist" do
|
it "should exist" do
|
||||||
Puppet::Parser::Functions.function("os_any2array").should == "function_os_any2array"
|
expect(Puppet::Parser::Functions.function("os_any2array")).to eq("function_os_any2array")
|
||||||
end
|
end
|
||||||
|
|
||||||
it "should return an empty array if there is less than 1 argument" do
|
it "should return an empty array if there is less than 1 argument" do
|
||||||
result = scope.function_os_any2array([])
|
result = scope.function_os_any2array([])
|
||||||
result.should(eq([]))
|
expect(result).to(eq([]))
|
||||||
end
|
end
|
||||||
|
|
||||||
it "should convert boolean true to [ true ] " do
|
it "should convert boolean true to [ true ] " do
|
||||||
result = scope.function_os_any2array([true])
|
result = scope.function_os_any2array([true])
|
||||||
result.should(eq([true]))
|
expect(result).to(eq([true]))
|
||||||
end
|
end
|
||||||
|
|
||||||
it "should convert one object to [object]" do
|
it "should convert one object to [object]" do
|
||||||
result = scope.function_os_any2array(['one'])
|
result = scope.function_os_any2array(['one'])
|
||||||
result.should(eq(['one']))
|
expect(result).to(eq(['one']))
|
||||||
end
|
end
|
||||||
|
|
||||||
it "should convert multiple objects to [objects]" do
|
it "should convert multiple objects to [objects]" do
|
||||||
result = scope.function_os_any2array(['one', 'two'])
|
result = scope.function_os_any2array(['one', 'two'])
|
||||||
result.should(eq(['one', 'two']))
|
expect(result).to(eq(['one', 'two']))
|
||||||
end
|
end
|
||||||
|
|
||||||
it "should return empty array it was called with" do
|
it "should return empty array it was called with" do
|
||||||
result = scope.function_os_any2array([[]])
|
result = scope.function_os_any2array([[]])
|
||||||
result.should(eq([]))
|
expect(result).to(eq([]))
|
||||||
end
|
end
|
||||||
|
|
||||||
it "should return one-member array it was called with" do
|
it "should return one-member array it was called with" do
|
||||||
result = scope.function_os_any2array([['string']])
|
result = scope.function_os_any2array([['string']])
|
||||||
result.should(eq(['string']))
|
expect(result).to(eq(['string']))
|
||||||
end
|
end
|
||||||
|
|
||||||
it "should return multi-member array it was called with" do
|
it "should return multi-member array it was called with" do
|
||||||
result = scope.function_os_any2array([['one', 'two']])
|
result = scope.function_os_any2array([['one', 'two']])
|
||||||
result.should(eq(['one', 'two']))
|
expect(result).to(eq(['one', 'two']))
|
||||||
end
|
end
|
||||||
|
|
||||||
it "should return members of a hash it was called with" do
|
it "should return members of a hash it was called with" do
|
||||||
result = scope.function_os_any2array([{ 'key' => 'value' }])
|
result = scope.function_os_any2array([{ 'key' => 'value' }])
|
||||||
result.should(eq(['key', 'value']))
|
expect(result).to(eq(['key', 'value']))
|
||||||
end
|
end
|
||||||
|
|
||||||
it "should return an empty array if it was called with an empty hash" do
|
it "should return an empty array if it was called with an empty hash" do
|
||||||
result = scope.function_os_any2array([{ }])
|
result = scope.function_os_any2array([{ }])
|
||||||
result.should(eq([]))
|
expect(result).to(eq([]))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
Loading…
Reference in New Issue
Block a user