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