Fix leaking environment variables in tests
In rspec provider tests the environment variables are used to authenticate the calls. The environment was set in a shared example. The problem is that rspec read all those environment variables when it compile the tests. Then the last shared environment red by rspec was setting the environment for all the test. This was leading to unpredictable behavior. This fix this problem by setting the environment variables before each test at rspec run time. Change-Id: I28c952273d6f981c953cb3e2c960a98609ece263 Closes-Bug: 1482243
This commit is contained in:
parent
40a1d04410
commit
42d918040d
spec/unit/provider
keystone_domain
keystone_endpoint
keystone_role
keystone_service
keystone_spec.rbkeystone_tenant
keystone_user
keystone_user_role
@ -8,7 +8,7 @@ provider_class = Puppet::Type.type(:keystone_domain).provider(:openstack)
|
||||
|
||||
describe provider_class do
|
||||
|
||||
shared_examples 'authenticated with environment variables' do
|
||||
let(:set_env) do
|
||||
ENV['OS_USERNAME'] = 'test'
|
||||
ENV['OS_PASSWORD'] = 'abc123'
|
||||
ENV['OS_PROJECT_NAME'] = 'test'
|
||||
@ -41,12 +41,15 @@ describe provider_class do
|
||||
AnotherKlass
|
||||
end
|
||||
|
||||
before :each do
|
||||
set_env
|
||||
end
|
||||
|
||||
after :each do
|
||||
provider_class.reset
|
||||
another_class.reset
|
||||
end
|
||||
|
||||
it_behaves_like 'authenticated with environment variables' do
|
||||
describe '#create' do
|
||||
it 'creates a domain' do
|
||||
# keystone.conf
|
||||
@ -62,7 +65,8 @@ describe provider_class do
|
||||
name="foo"
|
||||
description="foo"
|
||||
enabled=True
|
||||
')
|
||||
'
|
||||
)
|
||||
provider.create
|
||||
expect(provider.exists?).to be_truthy
|
||||
end
|
||||
@ -95,7 +99,8 @@ enabled=True
|
||||
.with('domain', 'list', '--quiet', '--format', 'csv', [])
|
||||
.returns('"ID","Name","Description","Enabled"
|
||||
"1cb05cfed7c24279be884ba4f6520262","foo","foo",True
|
||||
')
|
||||
'
|
||||
)
|
||||
instances = provider_class.instances
|
||||
expect(instances.count).to eq(1)
|
||||
end
|
||||
@ -126,7 +131,8 @@ enabled=True
|
||||
name="foo"
|
||||
description="foo"
|
||||
enabled=True
|
||||
')
|
||||
'
|
||||
)
|
||||
expect(provider.class.default_domain_id).to eq('default')
|
||||
expect(another_class.default_domain_id).to eq('default')
|
||||
provider.create
|
||||
@ -193,4 +199,3 @@ enabled=True
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -6,7 +6,7 @@ provider_class = Puppet::Type.type(:keystone_endpoint).provider(:openstack)
|
||||
|
||||
describe provider_class do
|
||||
|
||||
shared_examples 'authenticated with environment variables' do
|
||||
let(:set_env) do
|
||||
ENV['OS_USERNAME'] = 'test'
|
||||
ENV['OS_PASSWORD'] = 'abc123'
|
||||
ENV['OS_PROJECT_NAME'] = 'test'
|
||||
@ -33,14 +33,18 @@ describe provider_class do
|
||||
provider_class.new(resource)
|
||||
end
|
||||
|
||||
it_behaves_like 'authenticated with environment variables' do
|
||||
before(:each) do
|
||||
set_env
|
||||
end
|
||||
|
||||
describe '#create' do
|
||||
it 'creates an endpoint' do
|
||||
provider.class.stubs(:openstack)
|
||||
.with('endpoint', 'list', '--quiet', '--format', 'csv', '--long')
|
||||
.returns('"ID","Region","Service Name","Service Type","PublicURL","AdminURL","InternalURL"
|
||||
"1cb05cfed7c24279be884ba4f6520262","foo","bar","","http://127.0.0.1:5000/v2.0","http://127.0.0.1:5001/v2.0","http://127.0.0.1:5002/v2.0"
|
||||
')
|
||||
'
|
||||
)
|
||||
provider.class.stubs(:openstack)
|
||||
.with('endpoint', 'create', '--format', 'shell', ['bar', '--region', 'foo', '--publicurl', 'http://127.0.0.1:5000', '--internalurl', 'http://127.0.0.1:5001', '--adminurl', 'http://127.0.0.1:5002'])
|
||||
.returns('adminurl="http://127.0.0.1:5002"
|
||||
@ -51,7 +55,8 @@ region="foo"
|
||||
service_id="8137d72980fd462192f276585a002426"
|
||||
service_name="bar"
|
||||
service_type="test"
|
||||
')
|
||||
'
|
||||
)
|
||||
provider.create
|
||||
expect(provider.exists?).to be_truthy
|
||||
end
|
||||
@ -63,7 +68,8 @@ service_type="test"
|
||||
.with('endpoint', 'list', '--quiet', '--format', 'csv', '--long')
|
||||
.returns('"ID","Region","Service Name","Service Type","PublicURL","AdminURL","InternalURL"
|
||||
"1cb05cfed7c24279be884ba4f6520262","foo","bar","test","http://127.0.0.1:5000","http://127.0.0.1:5001","http://127.0.0.1:5002"
|
||||
')
|
||||
'
|
||||
)
|
||||
provider.class.stubs(:openstack)
|
||||
.with('endpoint', 'delete', [])
|
||||
provider.destroy
|
||||
@ -90,11 +96,11 @@ service_type="test"
|
||||
.with('endpoint', 'list', '--quiet', '--format', 'csv', '--long')
|
||||
.returns('"ID","Region","Service Name","Service Type","PublicURL","AdminURL","InternalURL"
|
||||
"3a5c4378981e4112a0d44902a43e16ef","foo","bar","test","http://127.0.0.1:5000","http://127.0.0.1:5001","http://127.0.0.1:5002"
|
||||
')
|
||||
'
|
||||
)
|
||||
instances = Puppet::Type::Keystone_endpoint::ProviderOpenstack.instances
|
||||
expect(instances.count).to eq(1)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -6,15 +6,18 @@ provider_class = Puppet::Type.type(:keystone_role).provider(:openstack)
|
||||
|
||||
describe provider_class do
|
||||
|
||||
shared_examples 'authenticated with environment variables' do
|
||||
let(:set_env) do
|
||||
ENV['OS_USERNAME'] = 'test'
|
||||
ENV['OS_PASSWORD'] = 'abc123'
|
||||
ENV['OS_PROJECT_NAME'] = 'test'
|
||||
ENV['OS_AUTH_URL'] = 'http://127.0.0.1:5000'
|
||||
end
|
||||
|
||||
before(:each) do
|
||||
set_env
|
||||
end
|
||||
|
||||
describe 'when creating a role' do
|
||||
it_behaves_like 'authenticated with environment variables' do
|
||||
let(:role_attrs) do
|
||||
{
|
||||
:name => 'foo',
|
||||
@ -65,11 +68,11 @@ describe provider_class do
|
||||
.with('role', 'list', '--quiet', '--format', 'csv', [])
|
||||
.returns('"ID","Name"
|
||||
"1cb05cfed7c24279be884ba4f6520262","foo"
|
||||
')
|
||||
'
|
||||
)
|
||||
instances = Puppet::Type::Keystone_role::ProviderOpenstack.instances
|
||||
expect(instances.count).to eq(1)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -6,13 +6,17 @@ provider_class = Puppet::Type.type(:keystone_service).provider(:openstack)
|
||||
|
||||
describe provider_class do
|
||||
|
||||
shared_examples 'authenticated with environment variables' do
|
||||
let(:set_env) do
|
||||
ENV['OS_USERNAME'] = 'test'
|
||||
ENV['OS_PASSWORD'] = 'abc123'
|
||||
ENV['OS_PROJECT_NAME'] = 'test'
|
||||
ENV['OS_AUTH_URL'] = 'http://127.0.0.1:5000/v3'
|
||||
end
|
||||
|
||||
before(:each) do
|
||||
set_env
|
||||
end
|
||||
|
||||
describe 'when managing a service' do
|
||||
|
||||
let(:service_attrs) do
|
||||
@ -32,14 +36,14 @@ describe provider_class do
|
||||
provider_class.new(resource)
|
||||
end
|
||||
|
||||
it_behaves_like 'authenticated with environment variables' do
|
||||
describe '#create' do
|
||||
it 'creates a service' do
|
||||
provider.class.stubs(:openstack)
|
||||
.with('service', 'list', '--quiet', '--format', 'csv', '--long')
|
||||
.returns('"ID","Name","Type","Description"
|
||||
"1cb05cfed7c24279be884ba4f6520262","foo","foo","foo"
|
||||
')
|
||||
'
|
||||
)
|
||||
provider.class.stubs(:openstack)
|
||||
.with('service', 'create', '--format', 'shell', ['foo', '--name', 'foo', '--description', 'foo'])
|
||||
.returns('description="foo"
|
||||
@ -47,11 +51,11 @@ enabled="True"
|
||||
id="8f0dd4c0abc44240998fbb3f5089ecbf"
|
||||
name="foo"
|
||||
type="foo"
|
||||
')
|
||||
'
|
||||
)
|
||||
provider.create
|
||||
expect(provider.exists?).to be_truthy
|
||||
end
|
||||
end
|
||||
|
||||
describe '#destroy' do
|
||||
it 'destroys a service' do
|
||||
@ -59,7 +63,8 @@ type="foo"
|
||||
.with('service', 'list', '--quiet', '--format', 'csv', '--long')
|
||||
.returns('"ID","Name","Type","Description"
|
||||
"1cb05cfed7c24279be884ba4f6520262","foo","foo","foo"
|
||||
')
|
||||
'
|
||||
)
|
||||
provider.class.stubs(:openstack)
|
||||
.with('service', 'delete', [])
|
||||
provider.destroy
|
||||
@ -83,7 +88,8 @@ type="foo"
|
||||
.with('service', 'list', '--quiet', '--format', 'csv', '--long')
|
||||
.returns('"ID","Name","Type","Description"
|
||||
"8f0dd4c0abc44240998fbb3f5089ecbf","foo","foo","foo"
|
||||
')
|
||||
'
|
||||
)
|
||||
instances = Puppet::Type::Keystone_service::ProviderOpenstack.instances
|
||||
expect(instances.count).to eq(1)
|
||||
end
|
||||
|
@ -200,6 +200,17 @@ describe Puppet::Provider::Keystone do
|
||||
end
|
||||
|
||||
describe 'when using domains' do
|
||||
let(:set_env) do
|
||||
ENV['OS_USERNAME'] = 'test'
|
||||
ENV['OS_PASSWORD'] = 'abc123'
|
||||
ENV['OS_PROJECT_NAME'] = 'test'
|
||||
ENV['OS_AUTH_URL'] = 'http://127.0.0.1:35357/v3'
|
||||
end
|
||||
|
||||
before(:each) do
|
||||
set_env
|
||||
end
|
||||
|
||||
it 'name_and_domain should return the resource domain' do
|
||||
expect(klass.name_and_domain('foo::in_name', 'from_resource', 'default')).to eq(['foo', 'from_resource'])
|
||||
end
|
||||
@ -210,10 +221,6 @@ describe Puppet::Provider::Keystone do
|
||||
expect(klass.name_and_domain('foo::in_name', nil, 'default')).to eq(['foo', 'in_name'])
|
||||
end
|
||||
it 'should return the default domain name using the default_domain_id from keystone.conf' do
|
||||
ENV['OS_USERNAME'] = 'test'
|
||||
ENV['OS_PASSWORD'] = 'abc123'
|
||||
ENV['OS_PROJECT_NAME'] = 'test'
|
||||
ENV['OS_AUTH_URL'] = 'http://127.0.0.1:35357/v3'
|
||||
mock = {
|
||||
'DEFAULT' => {
|
||||
'admin_endpoint' => 'http://127.0.0.1:35357',
|
||||
@ -232,10 +239,6 @@ describe Puppet::Provider::Keystone do
|
||||
expect(klass.name_and_domain('foo')).to eq(['foo', 'SomeName'])
|
||||
end
|
||||
it 'should return the default_domain_id from one class set in another class' do
|
||||
ENV['OS_USERNAME'] = 'test'
|
||||
ENV['OS_PASSWORD'] = 'abc123'
|
||||
ENV['OS_PROJECT_NAME'] = 'test'
|
||||
ENV['OS_AUTH_URL'] = 'http://127.0.0.1:35357/v3'
|
||||
klass.expects(:openstack)
|
||||
.with('domain', 'list', '--quiet', '--format', 'csv', [])
|
||||
.returns('"ID","Name","Enabled","Description"
|
||||
@ -255,10 +258,6 @@ describe Puppet::Provider::Keystone do
|
||||
expect(another_class.default_domain).to eq('SomeName')
|
||||
end
|
||||
it 'should return Default if default_domain_id is not configured' do
|
||||
ENV['OS_USERNAME'] = 'test'
|
||||
ENV['OS_PASSWORD'] = 'abc123'
|
||||
ENV['OS_PROJECT_NAME'] = 'test'
|
||||
ENV['OS_AUTH_URL'] = 'http://127.0.0.1:35357/v3'
|
||||
mock = {}
|
||||
Puppet::Util::IniConfig::File.expects(:new).returns(mock)
|
||||
File.expects(:exists?).with('/etc/keystone/keystone.conf').returns(true)
|
||||
@ -271,10 +270,6 @@ describe Puppet::Provider::Keystone do
|
||||
expect(klass.name_and_domain('foo')).to eq(['foo', 'Default'])
|
||||
end
|
||||
it 'should list all domains when requesting a domain name from an ID' do
|
||||
ENV['OS_USERNAME'] = 'test'
|
||||
ENV['OS_PASSWORD'] = 'abc123'
|
||||
ENV['OS_PROJECT_NAME'] = 'test'
|
||||
ENV['OS_AUTH_URL'] = 'http://127.0.0.1:35357/v3'
|
||||
klass.expects(:openstack)
|
||||
.with('domain', 'list', '--quiet', '--format', 'csv', [])
|
||||
.returns('"ID","Name","Enabled","Description"
|
||||
@ -283,10 +278,6 @@ describe Puppet::Provider::Keystone do
|
||||
expect(klass.domain_name_from_id('somename')).to eq('SomeName')
|
||||
end
|
||||
it 'should lookup a domain when not found in the hash' do
|
||||
ENV['OS_USERNAME'] = 'test'
|
||||
ENV['OS_PASSWORD'] = 'abc123'
|
||||
ENV['OS_PROJECT_NAME'] = 'test'
|
||||
ENV['OS_AUTH_URL'] = 'http://127.0.0.1:35357/v3'
|
||||
klass.expects(:openstack)
|
||||
.with('domain', 'list', '--quiet', '--format', 'csv', [])
|
||||
.returns('"ID","Name","Enabled","Description"
|
||||
@ -302,10 +293,6 @@ id="another"
|
||||
expect(klass.domain_name_from_id('another')).to eq('AnOther')
|
||||
end
|
||||
it 'should print an error when there is no such domain' do
|
||||
ENV['OS_USERNAME'] = 'test'
|
||||
ENV['OS_PASSWORD'] = 'abc123'
|
||||
ENV['OS_PROJECT_NAME'] = 'test'
|
||||
ENV['OS_AUTH_URL'] = 'http://127.0.0.1:35357/v3'
|
||||
klass.expects(:openstack)
|
||||
.with('domain', 'list', '--quiet', '--format', 'csv', [])
|
||||
.returns('"ID","Name","Enabled","Description"
|
||||
|
@ -39,7 +39,8 @@ describe provider_class do
|
||||
"another_domain_id","another_domain",True,"another domain"
|
||||
"disabled_domain_id","disabled_domain",False,"disabled domain"
|
||||
"default","Default",True,"the default domain"
|
||||
')
|
||||
'
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
@ -51,16 +52,19 @@ describe provider_class do
|
||||
before_hook(false)
|
||||
end
|
||||
|
||||
shared_examples 'authenticated with environment variables' do
|
||||
let(:set_env) do
|
||||
ENV['OS_USERNAME'] = 'test'
|
||||
ENV['OS_PASSWORD'] = 'abc123'
|
||||
ENV['OS_PROJECT_NAME'] = 'test'
|
||||
ENV['OS_AUTH_URL'] = 'http://127.0.0.1:35357/v3'
|
||||
end
|
||||
|
||||
before(:each) do
|
||||
set_env
|
||||
end
|
||||
|
||||
describe 'when managing a tenant' do
|
||||
|
||||
it_behaves_like 'authenticated with environment variables' do
|
||||
describe '#create', :domainlist => true do
|
||||
it 'creates a tenant' do
|
||||
provider.class.expects(:openstack)
|
||||
@ -70,7 +74,8 @@ enabled="True"
|
||||
name="foo"
|
||||
id="foo"
|
||||
domain_id="foo_domain_id"
|
||||
')
|
||||
'
|
||||
)
|
||||
provider.create
|
||||
expect(provider.exists?).to be_truthy
|
||||
end
|
||||
@ -101,7 +106,8 @@ domain_id="foo_domain_id"
|
||||
.returns('"ID","Name","Domain ID","Description","Enabled"
|
||||
"1cb05cfed7c24279be884ba4f6520262","foo","foo_domain_id","foo",True
|
||||
"2cb05cfed7c24279be884ba4f6520262","foo","bar_domain_id","foo",True
|
||||
')
|
||||
'
|
||||
)
|
||||
instances = provider.class.instances
|
||||
expect(instances[0].name).to eq('foo')
|
||||
expect(instances[0].domain).to eq('bar_domain')
|
||||
@ -135,7 +141,8 @@ enabled="True"
|
||||
name="foo"
|
||||
id="project-id"
|
||||
domain_id="foo_domain_id"
|
||||
')
|
||||
'
|
||||
)
|
||||
provider.create
|
||||
expect(provider.exists?).to be_truthy
|
||||
expect(provider.id).to eq("project-id")
|
||||
@ -163,7 +170,8 @@ enabled="True"
|
||||
name="foo"
|
||||
id="project-id"
|
||||
domain_id="foo_domain_id"
|
||||
')
|
||||
'
|
||||
)
|
||||
provider.create
|
||||
expect(provider.exists?).to be_truthy
|
||||
expect(provider.id).to eq("project-id")
|
||||
@ -189,7 +197,8 @@ enabled="True"
|
||||
name="foo"
|
||||
id="project-id"
|
||||
domain_id="foo_domain_id"
|
||||
')
|
||||
'
|
||||
)
|
||||
provider.create
|
||||
expect(provider.exists?).to be_truthy
|
||||
expect(provider.id).to eq("project-id")
|
||||
@ -217,7 +226,8 @@ enabled="True"
|
||||
name="foo"
|
||||
id="project-id"
|
||||
domain_id="foo_domain_id"
|
||||
')
|
||||
'
|
||||
)
|
||||
provider.create
|
||||
expect(provider.exists?).to be_truthy
|
||||
expect(provider.id).to eq("project-id")
|
||||
@ -225,4 +235,3 @@ domain_id="foo_domain_id"
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -13,7 +13,7 @@ end
|
||||
|
||||
describe provider_class do
|
||||
|
||||
shared_examples 'authenticated with environment variables' do
|
||||
let(:set_env) do
|
||||
ENV['OS_USERNAME'] = 'test'
|
||||
ENV['OS_PASSWORD'] = 'abc123'
|
||||
ENV['OS_PROJECT_NAME'] = 'test'
|
||||
@ -46,6 +46,7 @@ describe provider_class do
|
||||
end
|
||||
|
||||
def before_hook(delete, missing, noproject, user_cached, project_only)
|
||||
set_env
|
||||
unless noproject
|
||||
project_class.expects(:openstack).once
|
||||
.with('domain', 'list', '--quiet', '--format', 'csv', [])
|
||||
@ -55,7 +56,8 @@ describe provider_class do
|
||||
"bar_domain_id","bar_domain",True,"bar domain"
|
||||
"another_domain_id","another_domain",True,"another domain"
|
||||
"disabled_domain_id","disabled_domain",False,"disabled domain"
|
||||
')
|
||||
'
|
||||
)
|
||||
end
|
||||
|
||||
if project_only
|
||||
@ -70,7 +72,8 @@ describe provider_class do
|
||||
"bar_domain_id","bar_domain",True,"bar domain"
|
||||
"another_domain_id","another_domain",True,"another domain"
|
||||
"disabled_domain_id","disabled_domain",False,"disabled domain"
|
||||
')
|
||||
'
|
||||
)
|
||||
if user_cached
|
||||
return # using cached user, so no user list
|
||||
end
|
||||
@ -84,7 +87,8 @@ describe provider_class do
|
||||
"1cb05cfed7c24279be884ba4f6520262","foo",' + project + ',"foo_domain_id","foo description","foo@example.com",True
|
||||
"2cb05cfed7c24279be884ba4f6520262","foo",' + project + ',"bar_domain_id","foo description","foo@example.com",True
|
||||
"3cb05cfed7c24279be884ba4f6520262","foo",' + project + ',"another_domain_id","foo description","foo@example.com",True
|
||||
']
|
||||
'
|
||||
]
|
||||
nn = 1
|
||||
if delete
|
||||
nn = 2
|
||||
@ -117,7 +121,7 @@ describe provider_class do
|
||||
before_hook(false, false, false, true, false)
|
||||
end
|
||||
before :each, :nohooks => true do
|
||||
# do nothing
|
||||
set_env
|
||||
end
|
||||
before :each, :project_only => true do
|
||||
before_hook(false, false, false, false, true)
|
||||
@ -127,7 +131,6 @@ describe provider_class do
|
||||
end
|
||||
|
||||
describe 'when managing a user' do
|
||||
it_behaves_like 'authenticated with environment variables' do
|
||||
describe '#create', :project_only => true do
|
||||
it 'creates a user' do
|
||||
project_class.expects(:openstack)
|
||||
@ -135,12 +138,14 @@ describe provider_class do
|
||||
.returns('"ID","Name","Domain ID","Description","Enabled"
|
||||
"1cb05cfed7c24279be884ba4f6520262","foo","foo_domain_id","foo",True
|
||||
"2cb05cfed7c24279be884ba4f6520262","foo","bar_domain_id","foo",True
|
||||
')
|
||||
'
|
||||
)
|
||||
provider.class.expects(:openstack)
|
||||
.with('role', 'show', '--format', 'shell', '_member_')
|
||||
.returns('
|
||||
name="_member_"
|
||||
')
|
||||
'
|
||||
)
|
||||
provider.class.expects(:openstack)
|
||||
.with('role', 'add', ['_member_', '--project', '2cb05cfed7c24279be884ba4f6520262', '--user', '12b23f07d4a3448d8189521ab09610b0'])
|
||||
provider.class.expects(:openstack)
|
||||
@ -150,7 +155,8 @@ enabled="True"
|
||||
id="12b23f07d4a3448d8189521ab09610b0"
|
||||
name="foo"
|
||||
username="foo"
|
||||
')
|
||||
'
|
||||
)
|
||||
provider.create
|
||||
expect(provider.exists?).to be_truthy
|
||||
end
|
||||
@ -195,12 +201,14 @@ username="foo"
|
||||
.returns('"ID","Name","Domain ID","Description","Enabled"
|
||||
"1cb05cfed7c24279be884ba4f6520262","foo","foo_domain_id","foo",True
|
||||
"2cb05cfed7c24279be884ba4f6520262","bar","bar_domain_id","bar",True
|
||||
')
|
||||
'
|
||||
)
|
||||
provider.class.expects(:openstack)
|
||||
.with('project', 'list', '--quiet', '--format', 'csv', ['--user', '1cb05cfed7c24279be884ba4f6520262', '--long'])
|
||||
.returns('"ID","Name","Domain ID","Description","Enabled"
|
||||
"foo_project_id1","foo","foo_domain_id","",True
|
||||
')
|
||||
'
|
||||
)
|
||||
provider.instance_variable_get('@property_hash')[:id] = '1cb05cfed7c24279be884ba4f6520262'
|
||||
tenant = provider.tenant
|
||||
expect(tenant).to eq('foo')
|
||||
@ -213,14 +221,16 @@ username="foo"
|
||||
.returns('"ID","Name","Domain ID","Description","Enabled"
|
||||
"1cb05cfed7c24279be884ba4f6520262","foo","foo_domain_id","foo",True
|
||||
"2cb05cfed7c24279be884ba4f6520262","bar","bar_domain_id","bar",True
|
||||
')
|
||||
'
|
||||
)
|
||||
provider.class.expects(:openstack)
|
||||
.with('project', 'list', '--quiet', '--format', 'csv', ['--user', '1cb05cfed7c24279be884ba4f6520262', '--long'])
|
||||
.returns('"ID","Name","Domain ID","Description","Enabled"
|
||||
"foo_project_id1","foo","foo_domain_id","",True
|
||||
"bar_project_id2","bar","bar_domain_id","",True
|
||||
"foo_project_id2","foo","another_domain_id","",True
|
||||
')
|
||||
'
|
||||
)
|
||||
tenant = provider.tenant
|
||||
expect(tenant).to eq('foo')
|
||||
end
|
||||
@ -235,7 +245,8 @@ username="foo"
|
||||
.returns('"ID","Name","Domain ID","Description","Enabled"
|
||||
"1cb05cfed7c24279be884ba4f6520262","foo","foo_domain_id","foo",True
|
||||
"2cb05cfed7c24279be884ba4f6520262","bar","bar_domain_id","bar",True
|
||||
')
|
||||
'
|
||||
)
|
||||
provider.class.expects(:openstack)
|
||||
.with('role', 'show', '--format', 'shell', '_member_')
|
||||
.returns('name="_member_"')
|
||||
@ -253,7 +264,8 @@ username="foo"
|
||||
.returns('"ID","Name","Domain ID","Description","Enabled"
|
||||
"1cb05cfed7c24279be884ba4f6520262","foo","foo_domain_id","foo",True
|
||||
"2cb05cfed7c24279be884ba4f6520262","bar","bar_domain_id","bar",True
|
||||
')
|
||||
'
|
||||
)
|
||||
provider.class.expects(:openstack)
|
||||
.with('role', 'show', '--format', 'shell', '_member_')
|
||||
.returns('name="_member_"')
|
||||
@ -269,7 +281,8 @@ username="foo"
|
||||
.returns('"ID","Name","Domain ID","Description","Enabled"
|
||||
"1cb05cfed7c24279be884ba4f6520262","foo","foo_domain_id","foo",True
|
||||
"2cb05cfed7c24279be884ba4f6520262","bar","bar_domain_id","bar",True
|
||||
')
|
||||
'
|
||||
)
|
||||
provider.class.expects(:openstack)
|
||||
.with('role', 'show', '--format', 'shell', '_member_')
|
||||
.raises(Puppet::ExecutionFailure, 'no such role _member_')
|
||||
@ -290,7 +303,8 @@ username="foo"
|
||||
.returns('"ID","Name","Domain ID","Description","Enabled"
|
||||
"1cb05cfed7c24279be884ba4f6520262","foo","foo_domain_id","foo",True
|
||||
"2cb05cfed7c24279be884ba4f6520262","bar","bar_domain_id","bar",True
|
||||
')
|
||||
'
|
||||
)
|
||||
provider.class.expects(:openstack)
|
||||
.with('role', 'show', '--format', 'shell', '_member_')
|
||||
.returns('name="_member_"')
|
||||
@ -301,7 +315,6 @@ username="foo"
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe "#password" do
|
||||
let(:user_attrs) do
|
||||
@ -324,11 +337,6 @@ username="foo"
|
||||
provider_class.new(resource)
|
||||
end
|
||||
|
||||
shared_examples 'with auth-url environment variable' do
|
||||
ENV['OS_AUTH_URL'] = 'http://127.0.0.1:5000'
|
||||
end
|
||||
|
||||
it_behaves_like 'with auth-url environment variable' do
|
||||
it 'checks the password', :noproject_user_cached => true do
|
||||
provider.instance_variable_get('@property_hash')[:id] = '1cb05cfed7c24279be884ba4f6520262'
|
||||
mock_creds = Puppet::Provider::Openstack::CredentialsV3.new
|
||||
@ -342,14 +350,16 @@ username="foo"
|
||||
.with('project', 'list', '--quiet', '--format', 'csv', ['--user', '1cb05cfed7c24279be884ba4f6520262', '--long'])
|
||||
.returns('"ID","Name","Domain ID","Description","Enabled"
|
||||
"project-id-1","foo","foo_domain_id","foo",True
|
||||
')
|
||||
'
|
||||
)
|
||||
Puppet::Provider::Openstack.expects(:openstack)
|
||||
.with('token', 'issue', ['--format', 'value'])
|
||||
.returns('2015-05-14T04:06:05Z
|
||||
e664a386befa4a30878dcef20e79f167
|
||||
8dce2ae9ecd34c199d2877bf319a3d06
|
||||
ac43ec53d5a74a0b9f51523ae41a29f0
|
||||
')
|
||||
'
|
||||
)
|
||||
password = provider.password
|
||||
expect(password).to eq('foo')
|
||||
end
|
||||
@ -360,7 +370,8 @@ ac43ec53d5a74a0b9f51523ae41a29f0
|
||||
.with('project', 'list', '--quiet', '--format', 'csv', ['--user', '1cb05cfed7c24279be884ba4f6520262', '--long'])
|
||||
.returns('"ID","Name","Domain ID","Description","Enabled"
|
||||
"project-id-1","foo","foo_domain_id","foo",True
|
||||
')
|
||||
'
|
||||
)
|
||||
Puppet::Provider::Openstack.expects(:openstack)
|
||||
.with('token', 'issue', ['--format', 'value'])
|
||||
.raises(Puppet::ExecutionFailure, 'HTTP 401 invalid authentication')
|
||||
@ -381,19 +392,20 @@ ac43ec53d5a74a0b9f51523ae41a29f0
|
||||
Puppet::Provider::Openstack.expects(:openstack)
|
||||
.with('project', 'list', '--quiet', '--format', 'csv', ['--user', '1cb05cfed7c24279be884ba4f6520262', '--long'])
|
||||
.returns('"ID","Name","Domain ID","Description","Enabled"
|
||||
')
|
||||
'
|
||||
)
|
||||
Puppet::Provider::Openstack.expects(:openstack)
|
||||
.with('token', 'issue', ['--format', 'value'])
|
||||
.returns('2015-05-14T04:06:05Z
|
||||
e664a386befa4a30878dcef20e79f167
|
||||
8dce2ae9ecd34c199d2877bf319a3d06
|
||||
ac43ec53d5a74a0b9f51523ae41a29f0
|
||||
')
|
||||
'
|
||||
)
|
||||
password = provider.password
|
||||
expect(password).to eq('foo')
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe 'when updating a user with unmanaged password', :nohooks => true do
|
||||
|
||||
@ -426,7 +438,6 @@ ac43ec53d5a74a0b9f51523ae41a29f0
|
||||
end
|
||||
end
|
||||
|
||||
it_behaves_like 'authenticated with environment variables' do
|
||||
describe 'v3 domains with no domain in resource', :user_cached => true do
|
||||
let(:user_attrs) do
|
||||
{
|
||||
@ -449,18 +460,21 @@ ac43ec53d5a74a0b9f51523ae41a29f0
|
||||
provider.class.expects(:openstack)
|
||||
.with('project', 'list', '--quiet', '--format', 'csv', ['--user', '1cb05cfed7c24279be884ba4f6520262', '--long'])
|
||||
.returns('"ID","Name"
|
||||
')
|
||||
'
|
||||
)
|
||||
project_class.expects(:openstack)
|
||||
.with('project', 'list', '--quiet', '--format', 'csv', '--long')
|
||||
.returns('"ID","Name","Domain ID","Description","Enabled"
|
||||
"1cb05cfed7c24279be884ba4f6520262","foo","foo_domain_id","foo",True
|
||||
"2cb05cfed7c24279be884ba4f6520262","bar","bar_domain_id","bar",True
|
||||
')
|
||||
'
|
||||
)
|
||||
provider.class.expects(:openstack)
|
||||
.with('role', 'show', '--format', 'shell', '_member_')
|
||||
.returns('
|
||||
name="_member_"
|
||||
')
|
||||
'
|
||||
)
|
||||
provider.class.expects(:openstack)
|
||||
.with('role', 'add', ['_member_', '--project', '1cb05cfed7c24279be884ba4f6520262', '--user', '1cb05cfed7c24279be884ba4f6520262'])
|
||||
provider.class.expects(:openstack)
|
||||
@ -470,7 +484,8 @@ enabled="True"
|
||||
id="1cb05cfed7c24279be884ba4f6520262"
|
||||
name="foo"
|
||||
username="foo"
|
||||
')
|
||||
'
|
||||
)
|
||||
provider.create
|
||||
expect(provider.exists?).to be_truthy
|
||||
expect(provider.id).to eq("1cb05cfed7c24279be884ba4f6520262")
|
||||
@ -496,12 +511,14 @@ username="foo"
|
||||
.returns('"ID","Name","Domain ID","Description","Enabled"
|
||||
"1cb05cfed7c24279be884ba4f6520262","foo","foo_domain_id","foo",True
|
||||
"2cb05cfed7c24279be884ba4f6520262","bar","bar_domain_id","bar",True
|
||||
')
|
||||
'
|
||||
)
|
||||
provider.class.expects(:openstack)
|
||||
.with('role', 'show', '--format', 'shell', '_member_')
|
||||
.returns('
|
||||
name="_member_"
|
||||
')
|
||||
'
|
||||
)
|
||||
provider.class.expects(:openstack)
|
||||
.with('role', 'add', ['_member_', '--project', '1cb05cfed7c24279be884ba4f6520262', '--user', '2cb05cfed7c24279be884ba4f6520262'])
|
||||
provider.class.expects(:openstack)
|
||||
@ -511,7 +528,8 @@ enabled="True"
|
||||
id="2cb05cfed7c24279be884ba4f6520262"
|
||||
name="foo"
|
||||
username="foo"
|
||||
')
|
||||
'
|
||||
)
|
||||
provider.create
|
||||
expect(provider.exists?).to be_truthy
|
||||
expect(provider.id).to eq("2cb05cfed7c24279be884ba4f6520262")
|
||||
@ -536,12 +554,14 @@ username="foo"
|
||||
.returns('"ID","Name","Domain ID","Description","Enabled"
|
||||
"1cb05cfed7c24279be884ba4f6520262","foo","foo_domain_id","foo",True
|
||||
"2cb05cfed7c24279be884ba4f6520262","bar","bar_domain_id","bar",True
|
||||
')
|
||||
'
|
||||
)
|
||||
provider.class.expects(:openstack)
|
||||
.with('role', 'show', '--format', 'shell', '_member_')
|
||||
.returns('
|
||||
name="_member_"
|
||||
')
|
||||
'
|
||||
)
|
||||
provider.class.expects(:openstack)
|
||||
.with('role', 'add', ['_member_', '--project', '1cb05cfed7c24279be884ba4f6520262', '--user', '2cb05cfed7c24279be884ba4f6520262'])
|
||||
provider.class.expects(:openstack)
|
||||
@ -551,7 +571,8 @@ enabled="True"
|
||||
id="2cb05cfed7c24279be884ba4f6520262"
|
||||
name="foo"
|
||||
username="foo"
|
||||
')
|
||||
'
|
||||
)
|
||||
provider.create
|
||||
expect(provider.exists?).to be_truthy
|
||||
expect(provider.id).to eq("2cb05cfed7c24279be884ba4f6520262")
|
||||
@ -578,12 +599,14 @@ username="foo"
|
||||
.returns('"ID","Name","Domain ID","Description","Enabled"
|
||||
"1cb05cfed7c24279be884ba4f6520262","foo","foo_domain_id","foo",True
|
||||
"2cb05cfed7c24279be884ba4f6520262","bar","bar_domain_id","bar",True
|
||||
')
|
||||
'
|
||||
)
|
||||
provider.class.expects(:openstack)
|
||||
.with('role', 'show', '--format', 'shell', '_member_')
|
||||
.returns('
|
||||
name="_member_"
|
||||
')
|
||||
'
|
||||
)
|
||||
provider.class.expects(:openstack)
|
||||
.with('role', 'add', ['_member_', '--project', '1cb05cfed7c24279be884ba4f6520262', '--user', '2cb05cfed7c24279be884ba4f6520262'])
|
||||
provider.class.expects(:openstack)
|
||||
@ -593,7 +616,8 @@ enabled="True"
|
||||
id="2cb05cfed7c24279be884ba4f6520262"
|
||||
name="foo"
|
||||
username="foo"
|
||||
')
|
||||
'
|
||||
)
|
||||
provider.create
|
||||
expect(provider.exists?).to be_truthy
|
||||
expect(provider.id).to eq("2cb05cfed7c24279be884ba4f6520262")
|
||||
@ -620,12 +644,14 @@ username="foo"
|
||||
.returns('"ID","Name","Domain ID","Description","Enabled"
|
||||
"1cb05cfed7c24279be884ba4f6520262","foo","foo_domain_id","foo",True
|
||||
"2cb05cfed7c24279be884ba4f6520262","foo","bar_domain_id","foo",True
|
||||
')
|
||||
'
|
||||
)
|
||||
provider.class.expects(:openstack)
|
||||
.with('role', 'show', '--format', 'shell', '_member_')
|
||||
.returns('
|
||||
name="_member_"
|
||||
')
|
||||
'
|
||||
)
|
||||
provider.class.expects(:openstack)
|
||||
.with('role', 'add', ['_member_', '--project', '1cb05cfed7c24279be884ba4f6520262', '--user', '2cb05cfed7c24279be884ba4f6520262'])
|
||||
provider.class.expects(:openstack)
|
||||
@ -635,7 +661,8 @@ enabled="True"
|
||||
id="2cb05cfed7c24279be884ba4f6520262"
|
||||
name="foo"
|
||||
username="foo"
|
||||
')
|
||||
'
|
||||
)
|
||||
provider.create
|
||||
expect(provider.exists?).to be_truthy
|
||||
expect(provider.id).to eq("2cb05cfed7c24279be884ba4f6520262")
|
||||
@ -643,4 +670,3 @@ username="foo"
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -137,7 +137,15 @@ describe provider_class do
|
||||
end
|
||||
end
|
||||
|
||||
let(:set_env) do
|
||||
ENV['OS_USERNAME'] = 'test'
|
||||
ENV['OS_PASSWORD'] = 'abc123'
|
||||
ENV['OS_PROJECT_NAME'] = 'test'
|
||||
ENV['OS_AUTH_URL'] = 'http://127.0.0.1:5000'
|
||||
end
|
||||
|
||||
def before_common(destroy, nolist=false, instances=false)
|
||||
set_env
|
||||
rolelistprojectuser = [['role-id-1','foo','foo','foo'],
|
||||
['role-id-2','bar','foo','foo']]
|
||||
csvlist = list_to_csv(rolelistprojectuser)
|
||||
@ -186,15 +194,7 @@ describe provider_class do
|
||||
before_common(true, true, true)
|
||||
end
|
||||
|
||||
shared_examples 'authenticated with environment variables' do
|
||||
ENV['OS_USERNAME'] = 'test'
|
||||
ENV['OS_PASSWORD'] = 'abc123'
|
||||
ENV['OS_PROJECT_NAME'] = 'test'
|
||||
ENV['OS_AUTH_URL'] = 'http://127.0.0.1:5000'
|
||||
end
|
||||
|
||||
describe 'when updating a user\'s role' do
|
||||
it_behaves_like 'authenticated with environment variables' do
|
||||
let(:user_role_attrs) do
|
||||
{
|
||||
:name => 'foo@foo',
|
||||
@ -290,4 +290,3 @@ describe provider_class do
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
Loading…
x
Reference in New Issue
Block a user