diff --git a/recipes/registration.rb b/recipes/registration.rb index ee6e653..ed76c2f 100644 --- a/recipes/registration.rb +++ b/recipes/registration.rb @@ -27,11 +27,15 @@ end identity_admin_endpoint = endpoint 'identity-admin' identity_endpoint = endpoint 'identity-api' +auth_uri = ::URI.decode identity_admin_endpoint.to_s +# FIXME(invsblduck): RuboCop gating was enabled mid-review; +# Remove these variables in a separate commit if really not needed. +# rubocop:disable UselessAssignment admin_tenant_name = node['openstack']['identity']['admin_tenant_name'] admin_user = node['openstack']['identity']['admin_user'] admin_pass = get_password 'user', node['openstack']['identity']['admin_user'] -auth_uri = ::URI.decode identity_admin_endpoint.to_s +# rubocop:enable UselessAssignment bootstrap_token = secret 'secrets', 'openstack_identity_bootstrap_token' diff --git a/spec/default_spec.rb b/spec/default_spec.rb deleted file mode 100644 index 3026108..0000000 --- a/spec/default_spec.rb +++ /dev/null @@ -1,7 +0,0 @@ -# encoding: UTF-8 -# - -require_relative 'spec_helper' - -describe 'openstack-identity::default' do -end diff --git a/spec/registration_spec.rb b/spec/registration_spec.rb index 32321ff..ccf1fe5 100644 --- a/spec/registration_spec.rb +++ b/spec/registration_spec.rb @@ -4,17 +4,12 @@ require_relative 'spec_helper' describe 'openstack-identity::registration' do - before { identity_stubs } - describe 'ubuntu' do - let(:chef_run) do - runner = ::ChefSpec::Runner.new ::UBUNTU_OPTS - runner.converge 'openstack-identity::registration' - end - - let(:chef_run_test_users) do - runner = ::ChefSpec::Runner.new ::UBUNTU_OPTS - runner.node.set['openstack']['identity']['users'] = { + let(:node) { runner.node } + let(:runner) { ChefSpec::Runner.new(UBUNTU_OPTS) } + let(:chef_run) { runner.converge(described_recipe) } + let(:node_add_user) do + node.set_unless['openstack']['identity']['users'] = { 'user1' => { 'default_tenant' => 'default_tenant1', 'password' => 'secret1', @@ -22,11 +17,12 @@ describe 'openstack-identity::registration' do 'role1' => ['role_tenant1'], 'role2' => ['default_tenant1'] } - }, + } } - runner.converge 'openstack-identity::registration' end + include_context 'identity_stubs' + describe 'tenant registration' do context 'default tenants' do ['admin', 'service'].each do |tenant_name| @@ -48,11 +44,10 @@ describe 'openstack-identity::registration' do end context 'configured tenants from users attribute' do - tenants = ['default_tenant1', 'role_tenant1'] - - tenants.each do |tenant_name| + before { node_add_user } + ['default_tenant1', 'role_tenant1'].each do |tenant_name| it "registers the #{tenant_name} tenant" do - resource = chef_run_test_users.find_resource( + resource = chef_run.find_resource( 'openstack-identity_register', "Register '#{tenant_name}' Tenant" ).to_hash @@ -89,12 +84,11 @@ describe 'openstack-identity::registration' do end context 'configured roles derived from users attribute' do + before { node_add_user } - roles = ['role1', 'role2'] - - roles.each do |role_name| + ['role1', 'role2'].each do |role_name| it "registers the #{role_name} role" do - resource = chef_run_test_users.find_resource( + resource = chef_run.find_resource( 'openstack-identity_register', "Register '#{role_name}' Role" ).to_hash @@ -112,10 +106,13 @@ describe 'openstack-identity::registration' do describe 'user registration' do context 'default users' do - [ - ['admin', 'admin', ['admin', 'KeystoneAdmin', 'KeystoneServiceAdmin']], - ['monitoring', 'service', ['Member']] - ].each do |user, tenant, roles| + user_monit = ['monitoring', 'service', ['Member']] + user_admin = [ + 'admin', 'admin', + ['admin', 'KeystoneAdmin', 'KeystoneServiceAdmin'] + ] + + [user_monit, user_admin].each do |user, tenant, roles| context "#{user} user" do it "registers the #{user} user" do user_resource = chef_run.find_resource( @@ -150,13 +147,16 @@ describe 'openstack-identity::registration' do ) end end + end end end context 'configured user' do + before { node_add_user } + it 'registers the user1 user' do - resource = chef_run_test_users.find_resource( + resource = chef_run.find_resource( 'openstack-identity_register', "Register 'user1' User" ).to_hash @@ -172,7 +172,7 @@ describe 'openstack-identity::registration' do end it "grants 'role1' role to 'user1' user in 'role_tenant1' tenant" do - grant_resource = chef_run_test_users.find_resource( + grant_resource = chef_run.find_resource( 'openstack-identity_register', "Grant 'role1' Role to 'user1' User in 'role_tenant1' Tenant" ).to_hash diff --git a/spec/server-opensuse_spec.rb b/spec/server-opensuse_spec.rb index cb86647..b2180de 100644 --- a/spec/server-opensuse_spec.rb +++ b/spec/server-opensuse_spec.rb @@ -4,83 +4,68 @@ require_relative 'spec_helper' describe 'openstack-identity::server' do - before { identity_stubs } describe 'suse' do - before do - @chef_run = ::ChefSpec::Runner.new ::OPENSUSE_OPTS - @chef_run.converge 'openstack-identity::server' - end + let(:runner) { ChefSpec::Runner.new(OPENSUSE_OPTS) } + let(:node) { runner.node } + let(:chef_run) { runner.converge(described_recipe) } + + include_context 'identity_stubs' it 'converges when configured to use sqlite db backend' do - chef_run = ::ChefSpec::Runner.new ::OPENSUSE_OPTS - node = chef_run.node node.set['openstack']['db']['identity']['service_type'] = 'sqlite' - chef_run.converge 'openstack-identity::server' + expect { chef_run }.to_not raise_error end it 'installs mysql python packages' do - expect(@chef_run).to install_package 'python-mysql' + expect(chef_run).to install_package('python-mysql') end it 'installs postgresql python packages if explicitly told' do - chef_run = ::ChefSpec::Runner.new ::OPENSUSE_OPTS do |n| - n.set['openstack']['db']['identity']['service_type'] = 'postgresql' - end - chef_run.converge 'openstack-identity::server' - - expect(chef_run).to install_package 'python-psycopg2' + node.set['openstack']['db']['identity']['service_type'] = 'postgresql' + expect(chef_run).to install_package('python-psycopg2') end it 'installs memcache python packages' do - expect(@chef_run).to install_package 'python-python-memcached' + expect(chef_run).to install_package('python-python-memcached') end it 'installs keystone packages' do - expect(@chef_run).to upgrade_package 'openstack-keystone' + expect(chef_run).to upgrade_package('openstack-keystone') end it 'starts keystone on boot' do - expect(@chef_run).to enable_service('openstack-keystone') + expect(chef_run).to enable_service('openstack-keystone') end describe '/etc/keystone' do - before do - @dir = @chef_run.directory '/etc/keystone' - end + let(:dir) { chef_run.directory('/etc/keystone') } it 'has proper owner' do - expect(@dir.owner).to eq('openstack-keystone') - expect(@dir.group).to eq('openstack-keystone') + expect(dir.owner).to eq('openstack-keystone') + expect(dir.group).to eq('openstack-keystone') end end describe '/etc/keystone/ssl' do - before do - chef_run = ::ChefSpec::Runner.new(::OPENSUSE_OPTS) do |n| - n.set['openstack']['auth']['strategy'] = 'pki' - end - chef_run.converge 'openstack-identity::server' - @dir = chef_run.directory '/etc/keystone/ssl' - end + before { node.set['openstack']['auth']['strategy'] = 'pki' } + let(:dir) { chef_run.directory('/etc/keystone/ssl') } it 'has proper owner' do - expect(@dir.owner).to eq('openstack-keystone') - expect(@dir.group).to eq('openstack-keystone') + expect(dir.owner).to eq('openstack-keystone') + expect(dir.group).to eq('openstack-keystone') end end it 'deletes keystone.db' do - expect(@chef_run).to delete_file '/var/lib/keystone/keystone.db' + expect(chef_run).to delete_file('/var/lib/keystone/keystone.db') end describe 'keystone.conf' do - before do - @template = @chef_run.template '/etc/keystone/keystone.conf' - end + let(:template) { chef_run.template '/etc/keystone/keystone.conf' } it 'has proper owner' do - expect(@template.owner).to eq('openstack-keystone') - expect(@template.group).to eq('openstack-keystone') + expect(template.owner).to eq('openstack-keystone') + expect(template.group).to eq('openstack-keystone') end it 'template contents' do @@ -90,17 +75,15 @@ describe 'openstack-identity::server' do describe 'default_catalog.templates' do before do - chef_run = ::ChefSpec::Runner.new(::OPENSUSE_OPTS) do |n| - n.set['openstack']['identity']['catalog']['backend'] = 'templated' - end - chef_run.converge 'openstack-identity::server' - @template = chef_run.template( - '/etc/keystone/default_catalog.templates') + node.set['openstack']['identity']['catalog']['backend'] = 'templated' + end + let(:template) do + chef_run.template('/etc/keystone/default_catalog.templates') end it 'has proper owner' do - expect(@template.owner).to eq('openstack-keystone') - expect(@template.group).to eq('openstack-keystone') + expect(template.owner).to eq('openstack-keystone') + expect(template.group).to eq('openstack-keystone') end it 'template contents' do diff --git a/spec/server-redhat_spec.rb b/spec/server-redhat_spec.rb index ceb4af9..34f10b3 100644 --- a/spec/server-redhat_spec.rb +++ b/spec/server-redhat_spec.rb @@ -4,54 +4,45 @@ require_relative 'spec_helper' describe 'openstack-identity::server' do - before { identity_stubs } describe 'redhat' do - before do - @chef_run = ::ChefSpec::Runner.new ::REDHAT_OPTS - @chef_run.converge 'openstack-identity::server' - end + let(:runner) { ChefSpec::Runner.new(REDHAT_OPTS) } + let(:node) { runner.node } + let(:chef_run) { runner.converge(described_recipe) } + + include_context 'identity_stubs' it 'converges when configured to use sqlite db backend' do - chef_run = ::ChefSpec::Runner.new ::REDHAT_OPTS - node = chef_run.node node.set['openstack']['db']['identity']['service_type'] = 'sqlite' - chef_run.converge 'openstack-identity::server' + expect { chef_run }.to_not raise_error end it 'installs mysql python packages' do - expect(@chef_run).to install_package 'MySQL-python' + expect(chef_run).to install_package('MySQL-python') end it 'installs db2 python packages if explicitly told' do - chef_run = ::ChefSpec::Runner.new ::REDHAT_OPTS do |n| - n.set['openstack']['db']['identity']['service_type'] = 'db2' - end - chef_run.converge 'openstack-identity::server' + node.set['openstack']['db']['identity']['service_type'] = 'db2' ['db2-odbc', 'python-ibm-db', 'python-ibm-db-sa'].each do |pkg| - expect(chef_run).to install_package pkg + expect(chef_run).to install_package(pkg) end end it 'installs postgresql python packages if explicitly told' do - chef_run = ::ChefSpec::Runner.new ::REDHAT_OPTS do |n| - n.set['openstack']['db']['identity']['service_type'] = 'postgresql' - end - chef_run.converge 'openstack-identity::server' - - expect(chef_run).to install_package 'python-psycopg2' + node.set['openstack']['db']['identity']['service_type'] = 'postgresql' + expect(chef_run).to install_package('python-psycopg2') end it 'installs memcache python packages' do - expect(@chef_run).to install_package 'python-memcached' + expect(chef_run).to install_package('python-memcached') end it 'installs keystone packages' do - expect(@chef_run).to upgrade_package 'openstack-keystone' + expect(chef_run).to upgrade_package('openstack-keystone') end it 'starts keystone on boot' do - expect(@chef_run).to enable_service('openstack-keystone') + expect(chef_run).to enable_service('openstack-keystone') end end end diff --git a/spec/server_spec.rb b/spec/server_spec.rb index 406a1cd..ce11fcb 100644 --- a/spec/server_spec.rb +++ b/spec/server_spec.rb @@ -4,145 +4,122 @@ require_relative 'spec_helper' describe 'openstack-identity::server' do - before { identity_stubs } describe 'ubuntu' do - before do - @chef_run = ::ChefSpec::Runner.new ::UBUNTU_OPTS do |n| - n.set['openstack']['identity']['syslog']['use'] = true - n.set['openstack']['endpoints']['identity-api'] = { - 'host' => '127.0.1.1', - 'port' => '5000', - 'scheme' => 'https' - } - n.set['openstack']['endpoints']['identity-admin'] = { - 'host' => '127.0.1.1', - 'port' => '35357', - 'scheme' => 'https' - } - end - @chef_run.converge 'openstack-identity::server' + let(:runner) { ChefSpec::Runner.new(UBUNTU_OPTS) } + let(:node) { runner.node } + let(:chef_run) do + node.set_unless['openstack']['endpoints']['identity-api'] = { + 'host' => '127.0.1.1', + 'port' => '5000', + 'scheme' => 'https' + } + node.set_unless['openstack']['endpoints']['identity-admin'] = { + 'host' => '127.0.1.1', + 'port' => '35357', + 'scheme' => 'https' + } + + runner.converge(described_recipe) end + include_context 'identity_stubs' + it 'runs logging recipe if node attributes say to' do - expect(@chef_run).to include_recipe 'openstack-common::logging' + node.set['openstack']['identity']['syslog']['use'] = true + expect(chef_run).to include_recipe('openstack-common::logging') end it 'does not run logging recipe' do - chef_run = ::ChefSpec::Runner.new ::UBUNTU_OPTS - chef_run.converge 'openstack-identity::server' - - expect(chef_run).not_to include_recipe 'openstack-common::logging' + expect(chef_run).not_to include_recipe('openstack-common::logging') end it 'converges when configured to use sqlite db backend' do - chef_run = ::ChefSpec::Runner.new ::UBUNTU_OPTS - node = chef_run.node node.set['openstack']['db']['identity']['service_type'] = 'sqlite' - chef_run.converge 'openstack-identity::server' + expect { chef_run }.to_not raise_error end it 'installs mysql python packages' do - expect(@chef_run).to install_package 'python-mysqldb' + expect(chef_run).to install_package('python-mysqldb') end it 'installs postgresql python packages if explicitly told' do - chef_run = ::ChefSpec::Runner.new ::UBUNTU_OPTS - node = chef_run.node node.set['openstack']['db']['identity']['service_type'] = 'postgresql' - chef_run.converge 'openstack-identity::server' - - expect(chef_run).to install_package 'python-psycopg2' + expect(chef_run).to install_package('python-psycopg2') end it 'installs memcache python packages' do - expect(@chef_run).to install_package 'python-memcache' + expect(chef_run).to install_package('python-memcache') end it 'installs keystone packages' do - expect(@chef_run).to upgrade_package 'keystone' + expect(chef_run).to upgrade_package('keystone') end it 'starts keystone on boot' do - expect(@chef_run).to enable_service('keystone') + expect(chef_run).to enable_service('keystone') end it 'sleep on keystone service enable' do - expect(@chef_run.service('keystone')).to notify( + expect(chef_run.service('keystone')).to notify( 'execute[Keystone: sleep]').to(:run) end describe '/etc/keystone' do - before do - @dir = @chef_run.directory '/etc/keystone' - end + let(:dir) { chef_run.directory('/etc/keystone') } it 'has proper owner' do - expect(@dir.owner).to eq('keystone') - expect(@dir.group).to eq('keystone') + expect(dir.owner).to eq('keystone') + expect(dir.group).to eq('keystone') end it 'has proper modes' do - expect(sprintf('%o', @dir.mode)).to eq '700' + expect(sprintf('%o', dir.mode)).to eq('700') end end describe '/etc/keystone/ssl' do - before { @dir = '/etc/keystone/ssl' } + let(:ssl_dir) { '/etc/keystone/ssl' } describe 'without pki' do it 'does not create' do - chef_run = ::ChefSpec::Runner.new(::UBUNTU_OPTS) - chef_run.converge 'openstack-identity::server' - - expect(chef_run).not_to create_directory @dir + expect(chef_run).not_to create_directory(ssl_dir) end end describe 'with pki' do - before do - @chef_run = ::ChefSpec::Runner.new(::UBUNTU_OPTS) do |n| - n.set['openstack']['auth']['strategy'] = 'pki' - end - @chef_run.converge 'openstack-identity::server' - @directory = @chef_run.directory @dir - end + before { node.set['openstack']['auth']['strategy'] = 'pki' } + let(:dir_resource) { chef_run.directory(ssl_dir) } it 'creates' do - expect(@chef_run).to create_directory @directory.name + expect(chef_run).to create_directory(ssl_dir) end it 'has proper owner' do - expect(@directory.owner).to eq('keystone') - expect(@directory.group).to eq('keystone') + expect(dir_resource.owner).to eq('keystone') + expect(dir_resource.group).to eq('keystone') end it 'has proper modes' do - expect(sprintf('%o', @directory.mode)).to eq '700' + expect(sprintf('%o', dir_resource.mode)).to eq('700') end end end it 'deletes keystone.db' do - expect(@chef_run).to delete_file '/var/lib/keystone/keystone.db' + expect(chef_run).to delete_file('/var/lib/keystone/keystone.db') end it 'does not delete keystone.db when configured to use sqlite' do - chef_run = ::ChefSpec::Runner.new(::UBUNTU_OPTS) - node = chef_run.node node.set['openstack']['db']['identity']['service_type'] = 'sqlite' - chef_run.converge 'openstack-identity::server' - expect(chef_run).not_to delete_file '/var/lib/keystone/keystone.db' + expect(chef_run).not_to delete_file('/var/lib/keystone/keystone.db') end describe 'pki setup' do - before { @cmd = 'keystone-manage pki_setup' } + let(:cmd) { 'keystone-manage pki_setup' } describe 'without pki' do it 'does not execute' do - chef_run = ::ChefSpec::Runner.new ::UBUNTU_OPTS - chef_run.converge 'openstack-identity::server' - - expect(chef_run).to_not run_execute(@cmd).with( + expect(chef_run).to_not run_execute(cmd).with( user: 'keystone', group: 'keystone' ) @@ -150,19 +127,14 @@ describe 'openstack-identity::server' do end describe 'with pki' do - before do - @chef_run = ::ChefSpec::Runner.new(::UBUNTU_OPTS) do |n| - n.set['openstack']['auth']['strategy'] = 'pki' - end - end + before { node.set['openstack']['auth']['strategy'] = 'pki' } it 'executes' do ::FileTest.should_receive(:exists?) .with('/etc/keystone/ssl/private/signing_key.pem') .and_return(false) - @chef_run.converge 'openstack-identity::server' - expect(@chef_run).to run_execute(@cmd).with( + expect(chef_run).to run_execute(cmd).with( user: 'keystone', group: 'keystone' ) @@ -172,9 +144,8 @@ describe 'openstack-identity::server' do ::FileTest.should_receive(:exists?) .with('/etc/keystone/ssl/private/signing_key.pem') .and_return(true) - @chef_run.converge 'openstack-identity::server' - expect(@chef_run).not_to run_execute(@cmd).with( + expect(chef_run).not_to run_execute(cmd).with( user: 'keystone', group: 'keystone' ) @@ -183,40 +154,38 @@ describe 'openstack-identity::server' do end describe 'keystone.conf' do - before do - @template = @chef_run.template '/etc/keystone/keystone.conf' - end + let(:template) { chef_run.template '/etc/keystone/keystone.conf' } it 'has proper owner' do - expect(@template.owner).to eq('keystone') - expect(@template.group).to eq('keystone') + expect(template.owner).to eq('keystone') + expect(template.group).to eq('keystone') end it 'has proper modes' do - expect(sprintf('%o', @template.mode)).to eq '644' + expect(sprintf('%o', template.mode)).to eq('644') end it 'has bind host' do match = 'bind_host = 127.0.1.1' - expect(@chef_run).to render_file(@template.name).with_content(match) + expect(chef_run).to render_file(template.name).with_content(match) end it 'has proper public and admin endpoint' do pub_endpoint = 'public_endpoint = https://127.0.1.1:5000/' adm_endpoint = 'admin_endpoint = https://127.0.1.1:35357/' - expect(@chef_run).to render_file(@template.name).with_content( + expect(chef_run).to render_file(template.name).with_content( pub_endpoint) - expect(@chef_run).to render_file(@template.name).with_content( + expect(chef_run).to render_file(template.name).with_content( adm_endpoint) end it 'has policy driver' do match = 'driver = keystone.policy.backends.sql.Policy' - expect(@chef_run).to render_file(@template.name).with_content( - match) + expect(chef_run).to render_file(template.name).with_content(match) end + it 'notifies keystone restart' do - expect(@template).to notify('service[keystone]').to(:restart) + expect(template).to notify('service[keystone]').to(:restart) end describe 'optional LDAP attributes' do @@ -229,12 +198,12 @@ describe 'openstack-identity::server' do optional_attrs.each do |setting| it "does not have the optional #{setting} LDAP attribute" do - expect(@chef_run).not_to render_file(@template.name).with_content( + expect(chef_run).not_to render_file(template.name).with_content( /^#{Regexp.quote(setting)} =/) end it "has the optional #{setting} LDAP attribute commented out" do - expect(@chef_run).to render_file(@template.name).with_content( + expect(chef_run).to render_file(template.name).with_content( /^# #{Regexp.quote(setting)} =$/) end end @@ -264,44 +233,38 @@ describe 'openstack-identity::server' do group_allow_update group_allow_delete }.each do |setting| it "has a #{setting} LDAP attribute" do - expect(@chef_run).to render_file(@template.name).with_content( + expect(chef_run).to render_file(template.name).with_content( /^#{Regexp.quote(setting)} = \w+/) end end end describe 'default_catalog.templates' do - before { @file = '/etc/keystone/default_catalog.templates' } + let(:file) { '/etc/keystone/default_catalog.templates' } describe 'without templated' do it 'does not create' do - chef_run = ::ChefSpec::Runner.new(::UBUNTU_OPTS) - chef_run.converge 'openstack-identity::server' - - expect(chef_run).not_to render_file(@file) + expect(chef_run).not_to render_file(file) end end describe 'with templated' do before do - @chef_run = ::ChefSpec::Runner.new(::UBUNTU_OPTS) do |n| - n.set['openstack']['identity']['catalog']['backend'] = 'templated' - end - @chef_run.converge 'openstack-identity::server' - @template = @chef_run.template @file + node.set['openstack']['identity']['catalog']['backend'] = 'templated' end + let(:template) { chef_run.template(file) } it 'creates' do - expect(@chef_run).to render_file(@file) + expect(chef_run).to render_file(file) end it 'has proper owner' do - expect(@template.owner).to eq('keystone') - expect(@template.group).to eq('keystone') + expect(template.owner).to eq('keystone') + expect(template.group).to eq('keystone') end it 'has proper modes' do - expect(sprintf('%o', @template.mode)).to eq '644' + expect(sprintf('%o', template.mode)).to eq('644') end it 'template contents' do @@ -309,30 +272,24 @@ describe 'openstack-identity::server' do end it 'notifies keystone restart' do - expect(@template).to notify('service[keystone]').to(:restart) + expect(template).to notify('service[keystone]').to(:restart) end end end describe 'db_sync' do - before do - @cmd = 'keystone-manage db_sync' - end + let(:cmd) { 'keystone-manage db_sync' } it 'runs migrations' do - expect(@chef_run).to run_execute(@cmd).with( + expect(chef_run).to run_execute(cmd).with( user: 'keystone', group: 'keystone' - ) + ) end it 'does not run migrations' do - chef_run = ::ChefSpec::Runner.new(::UBUNTU_OPTS) do |n| - n.set['openstack']['db']['identity']['migrate'] = false - end - chef_run.converge 'openstack-identity::server' - - expect(chef_run).not_to run_execute(@cmd).with( + node.set['openstack']['db']['identity']['migrate'] = false + expect(chef_run).not_to run_execute(cmd).with( user: 'keystone', group: 'keystone' ) diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 7429ef3..b7fdb51 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -4,39 +4,40 @@ require 'chefspec' require 'chefspec/berkshelf' -::LOG_LEVEL = :fatal -::OPENSUSE_OPTS = { +LOG_LEVEL = :fatal +OPENSUSE_OPTS = { platform: 'opensuse', version: '12.3', - log_level: ::LOG_LEVEL + log_level: LOG_LEVEL } -::REDHAT_OPTS = { +REDHAT_OPTS = { platform: 'redhat', version: '6.3', - log_level: ::LOG_LEVEL + log_level: LOG_LEVEL } -::UBUNTU_OPTS = { +UBUNTU_OPTS = { platform: 'ubuntu', version: '12.04', - log_level: ::LOG_LEVEL + log_level: LOG_LEVEL } -# TODO(galstrom21): Factor this into proper RSpec shared_contexts -def identity_stubs # rubocop: disable MethodLength - ::Chef::Recipe.any_instance.stub(:address_for) - .with('lo') - .and_return('127.0.1.1') - ::Chef::Recipe.any_instance.stub(:memcached_servers).and_return [] - ::Chef::Recipe.any_instance.stub(:get_password) - .with('db', anything) - .and_return('') - ::Chef::Recipe.any_instance.stub(:get_password) - .with('user', anything) - .and_return('') - ::Chef::Recipe.any_instance.stub(:get_password) - .with('user', 'user1') - .and_return('secret1') - ::Chef::Recipe.any_instance.stub(:secret) - .with('secrets', 'openstack_identity_bootstrap_token') - .and_return('bootstrap-token') +shared_context 'identity_stubs' do + before do + ::Chef::Recipe.any_instance.stub(:address_for) + .with('lo') + .and_return('127.0.1.1') + ::Chef::Recipe.any_instance.stub(:memcached_servers).and_return [] + ::Chef::Recipe.any_instance.stub(:get_password) + .with('db', anything) + .and_return('') + ::Chef::Recipe.any_instance.stub(:get_password) + .with('user', anything) + .and_return('') + ::Chef::Recipe.any_instance.stub(:get_password) + .with('user', 'user1') + .and_return('secret1') + ::Chef::Recipe.any_instance.stub(:secret) + .with('secrets', 'openstack_identity_bootstrap_token') + .and_return('bootstrap-token') + end end