3 require 'puppet/provider/keystone_domain/openstack'
5 provider_class = Puppet::Type.type(:keystone_domain).provider(:openstack)
7 class Puppet::Provider::Keystone
13 @domain_id_to_name = nil
14 @default_domain_id = nil
19 describe provider_class do
25 shared_examples 'authenticated with environment variables' do
26 ENV['OS_USERNAME'] = 'test'
27 ENV['OS_PASSWORD'] = 'abc123'
28 ENV['OS_PROJECT_NAME'] = 'test'
29 ENV['OS_AUTH_URL'] = 'http://127.0.0.1:35357/v2.0'
32 describe 'when managing a domain' do
37 :description => 'foo',
44 Puppet::Type::Keystone_domain.new(domain_attrs)
48 provider_class.new(resource)
51 it_behaves_like 'authenticated with environment variables' do
53 it 'creates a domain' do
55 File.expects(:exists?).returns(true)
57 'identity' => {'default_domain_id' => ' default'}
59 Puppet::Util::IniConfig::File.expects(:new).returns(kcmock)
60 kcmock.expects(:read).with('/etc/keystone/keystone.conf')
61 provider.class.expects(:openstack)
62 .with('domain', 'create', '--format', 'shell', ['foo', '--enable', '--description', 'foo'])
63 .returns('id="1cb05cfed7c24279be884ba4f6520262"
69 expect(provider.exists?).to be_truthy
74 describe '#destroy' do
75 it 'destroys a domain' do
76 provider.instance_variable_get('@property_hash')[:id] = 'my-domainid'
78 File.expects(:exists?).returns(true)
80 'identity' => {'default_domain_id' => ' default'}
82 Puppet::Util::IniConfig::File.expects(:new).returns(kcmock)
83 kcmock.expects(:read).with('/etc/keystone/keystone.conf')
84 provider.class.expects(:openstack)
85 .with('domain', 'set', ['foo', '--disable'])
86 provider.class.expects(:openstack)
87 .with('domain', 'delete', 'foo')
89 expect(provider.exists?).to be_falsey
94 describe '#instances' do
95 it 'finds every domain' do
96 provider.class.expects(:openstack)
97 .with('domain', 'list', '--quiet', '--format', 'csv', [])
98 .returns('"ID","Name","Description","Enabled"
99 "1cb05cfed7c24279be884ba4f6520262","foo","foo",True
101 instances = provider_class.instances
102 expect(instances.count).to eq(1)
106 describe '#create default' do
107 let(:domain_attrs) do
110 :description => 'foo',
111 :ensure => 'present',
113 :is_default => 'True',
117 it 'creates a default domain' do
118 File.expects(:exists?).returns(true)
120 'identity' => {'default_domain_id' => ' default'}
122 Puppet::Util::IniConfig::File.expects(:new).returns(mock)
123 mock.expects(:read).with('/etc/keystone/keystone.conf')
125 provider.class.expects(:openstack)
126 .with('domain', 'create', '--format', 'shell', ['foo', '--enable', '--description', 'foo'])
127 .returns('id="1cb05cfed7c24279be884ba4f6520262"
133 expect(provider.exists?).to be_truthy
134 expect(mock['identity']['default_domain_id']).to eq('1cb05cfed7c24279be884ba4f6520262')
138 describe '#destroy default' do
139 it 'destroys a default domain' do
140 provider.instance_variable_get('@property_hash')[:is_default] = true
141 provider.instance_variable_get('@property_hash')[:id] = 'my-domainid'
143 File.expects(:exists?).returns(true)
145 'identity' => {'default_domain_id' => ' my-domainid'}
147 Puppet::Util::IniConfig::File.expects(:new).returns(kcmock)
148 kcmock.expects(:read).with('/etc/keystone/keystone.conf')
149 kcmock.expects(:store)
150 provider.class.expects(:openstack)
151 .with('domain', 'set', ['foo', '--disable'])
152 provider.class.expects(:openstack)
153 .with('domain', 'delete', 'foo')
155 expect(provider.exists?).to be_falsey
156 expect(kcmock['identity']['default_domain_id']).to eq('default')
161 let(:domain_attrs) do
164 :description => 'new description',
165 :ensure => 'present',
167 :is_default => 'True',
171 it 'changes the description' do
172 provider.class.expects(:openstack)
173 .with('domain', 'set', ['foo', '--description', 'new description'])
174 provider.description=('new description')
178 it 'changes is_default' do
180 File.expects(:exists?).returns(true)
182 'identity' => {'default_domain_id' => ' my-domainid'}
184 Puppet::Util::IniConfig::File.expects(:new).returns(kcmock)
185 kcmock.expects(:read).with('/etc/keystone/keystone.conf')
186 provider.is_default=(true)