]> git.donarmstrong.com Git - dsa-puppet.git/blob - 3rdparty/modules/keystone/spec/unit/provider/keystone_domain/openstack_spec.rb
Update to Kilo
[dsa-puppet.git] / 3rdparty / modules / keystone / spec / unit / provider / keystone_domain / openstack_spec.rb
1 require 'puppet'
2 require 'spec_helper'
3 require 'puppet/provider/keystone_domain/openstack'
4
5 provider_class = Puppet::Type.type(:keystone_domain).provider(:openstack)
6
7 class Puppet::Provider::Keystone
8   def self.reset
9     @admin_endpoint = nil
10     @tenant_hash    = nil
11     @admin_token    = nil
12     @keystone_file  = nil
13     @domain_id_to_name = nil
14     @default_domain_id = nil
15     @domain_hash = nil
16   end
17 end
18
19 describe provider_class do
20
21   after :each do
22     provider_class.reset
23   end
24
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'
30   end
31
32   describe 'when managing a domain' do
33
34     let(:domain_attrs) do
35       {
36         :name         => 'foo',
37         :description  => 'foo',
38         :ensure       => 'present',
39         :enabled      => 'True',
40       }
41     end
42
43     let(:resource) do
44       Puppet::Type::Keystone_domain.new(domain_attrs)
45     end
46
47     let(:provider) do
48       provider_class.new(resource)
49     end
50
51     it_behaves_like 'authenticated with environment variables' do
52       describe '#create' do
53         it 'creates a domain' do
54           # keystone.conf
55           File.expects(:exists?).returns(true)
56           kcmock = {
57             'identity' => {'default_domain_id' => ' default'}
58           }
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"
64 name="foo"
65 description="foo"
66 enabled=True
67 ')
68           provider.create
69           expect(provider.exists?).to be_truthy
70         end
71
72       end
73
74       describe '#destroy' do
75         it 'destroys a domain' do
76           provider.instance_variable_get('@property_hash')[:id] = 'my-domainid'
77           # keystone.conf
78           File.expects(:exists?).returns(true)
79           kcmock = {
80             'identity' => {'default_domain_id' => ' default'}
81           }
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')
88           provider.destroy
89           expect(provider.exists?).to be_falsey
90         end
91
92       end
93
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
100 ')
101           instances = provider_class.instances
102           expect(instances.count).to eq(1)
103         end
104       end
105
106       describe '#create default' do
107         let(:domain_attrs) do
108           {
109             :name         => 'foo',
110             :description  => 'foo',
111             :ensure       => 'present',
112             :enabled      => 'True',
113             :is_default   => 'True',
114           }
115         end
116
117         it 'creates a default domain' do
118           File.expects(:exists?).returns(true)
119           mock = {
120             'identity' => {'default_domain_id' => ' default'}
121           }
122           Puppet::Util::IniConfig::File.expects(:new).returns(mock)
123           mock.expects(:read).with('/etc/keystone/keystone.conf')
124           mock.expects(:store)
125           provider.class.expects(:openstack)
126                         .with('domain', 'create', '--format', 'shell', ['foo', '--enable', '--description', 'foo'])
127                         .returns('id="1cb05cfed7c24279be884ba4f6520262"
128 name="foo"
129 description="foo"
130 enabled=True
131 ')
132           provider.create
133           expect(provider.exists?).to be_truthy
134           expect(mock['identity']['default_domain_id']).to eq('1cb05cfed7c24279be884ba4f6520262')
135         end
136       end
137
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'
142           # keystone.conf
143           File.expects(:exists?).returns(true)
144           kcmock = {
145             'identity' => {'default_domain_id' => ' my-domainid'}
146           }
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')
154           provider.destroy
155           expect(provider.exists?).to be_falsey
156           expect(kcmock['identity']['default_domain_id']).to eq('default')
157         end
158       end
159
160       describe '#flush' do
161         let(:domain_attrs) do
162           {
163             :name         => 'foo',
164             :description  => 'new description',
165             :ensure       => 'present',
166             :enabled      => 'True',
167             :is_default   => 'True',
168           }
169         end
170
171         it 'changes the description' do
172           provider.class.expects(:openstack)
173                         .with('domain', 'set', ['foo', '--description', 'new description'])
174           provider.description=('new description')
175           provider.flush
176         end
177
178         it 'changes is_default' do
179           # keystone.conf
180           File.expects(:exists?).returns(true)
181           kcmock = {
182             'identity' => {'default_domain_id' => ' my-domainid'}
183           }
184           Puppet::Util::IniConfig::File.expects(:new).returns(kcmock)
185           kcmock.expects(:read).with('/etc/keystone/keystone.conf')
186           provider.is_default=(true)
187           provider.flush
188         end
189       end
190     end
191   end
192 end