]> git.donarmstrong.com Git - dsa-puppet.git/blob - 3rdparty/modules/keystone/spec/unit/provider/keystone_tenant/openstack_spec.rb
11861fc8b26fde7e5c5fc6ec13582cf2bb37640e
[dsa-puppet.git] / 3rdparty / modules / keystone / spec / unit / provider / keystone_tenant / openstack_spec.rb
1 require 'puppet'
2 require 'spec_helper'
3 require 'puppet/provider/keystone_tenant/openstack'
4
5 provider_class = Puppet::Type.type(:keystone_tenant).provider(:openstack)
6
7 describe provider_class do
8
9   describe 'when updating a tenant' do
10
11     let(:tenant_attrs) do
12       {
13         :name         => 'foo',
14         :description  => 'foo',
15         :ensure       => 'present',
16         :enabled      => 'True',
17         :auth         => {
18           'username'    => 'test',
19           'password'    => 'abc123',
20           'tenant_name' => 'foo',
21           'auth_url'    => 'http://127.0.0.1:5000/v2.0',
22         }
23       }
24     end
25
26     let(:resource) do
27       Puppet::Type::Keystone_tenant.new(tenant_attrs)
28     end
29
30     let(:provider) do
31       provider_class.new(resource)
32     end
33
34     describe '#create' do
35       it 'creates a tenant' do
36         provider.class.stubs(:openstack)
37                       .with('project', 'list', '--quiet', '--format', 'csv', [['--long', '--os-username', 'test', '--os-password', 'abc123', '--os-tenant-name', 'foo', '--os-auth-url', 'http://127.0.0.1:5000/v2.0']])
38                       .returns('"ID","Name","Description","Enabled"
39 "1cb05cfed7c24279be884ba4f6520262","foo","foo",True
40 ')
41         provider.class.stubs(:openstack)
42                       .with('project', 'create', '--format', 'shell', [['foo', '--enable', '--description', 'foo', '--os-username', 'test', '--os-password', 'abc123', '--os-tenant-name', 'foo', '--os-auth-url', 'http://127.0.0.1:5000/v2.0']])
43                       .returns('description="foo"
44 enabled="True"
45 name="foo"
46 ')
47         provider.create
48         expect(provider.exists?).to be_truthy
49       end
50     end
51
52     describe '#destroy' do
53       it 'destroys a tenant' do
54         provider.class.stubs(:openstack)
55                       .with('project', 'list', '--quiet', '--format', 'csv', [['--long', '--os-username', 'test', '--os-password', 'abc123', '--os-tenant-name', 'foo', '--os-auth-url', 'http://127.0.0.1:5000/v2.0']])
56                       .returns('"ID","Name","Description","Enabled"')
57         provider.class.stubs(:openstack)
58                       .with('project', 'delete', [['foo', '--os-username', 'test', '--os-password', 'abc123', '--os-tenant-name', 'foo', '--os-auth-url', 'http://127.0.0.1:5000/v2.0']])
59         provider.destroy
60         expect(provider.exists?).to be_falsey
61       end
62
63     end
64
65     describe '#exists' do
66       context 'when tenant exists' do
67
68         subject(:response) do
69           provider.class.stubs(:openstack)
70                         .with('project', 'list', '--quiet', '--format', 'csv', [['--long', '--os-username', 'test', '--os-password', 'abc123', '--os-tenant-name', 'foo', '--os-auth-url', 'http://127.0.0.1:5000/v2.0']])
71                         .returns('"ID","Name","Description","Enabled"
72 "1cb05cfed7c24279be884ba4f6520262","foo","foo",True
73 ')
74           response = provider.exists?
75         end
76
77         it { is_expected.to be_truthy }
78       end
79
80       context 'when tenant does not exist' do
81
82         subject(:response) do
83           provider.class.stubs(:openstack)
84                         .with('project', 'list', '--quiet', '--format', 'csv', [['--long', '--os-username', 'test', '--os-password', 'abc123', '--os-tenant-name', 'foo', '--os-auth-url', 'http://127.0.0.1:5000/v2.0']])
85                       .returns('"ID","Name","Description","Enabled"')
86           response = provider.exists?
87         end
88
89         it { is_expected.to be_falsey }
90       end
91     end
92
93     describe '#instances' do
94       it 'finds every tenant' do
95         provider.class.stubs(:openstack)
96                       .with('project', 'list', '--quiet', '--format', 'csv', [['--long', '--os-username', 'test', '--os-password', 'abc123', '--os-tenant-name', 'foo', '--os-auth-url', 'http://127.0.0.1:5000/v2.0']])
97                       .returns('"ID","Name","Description","Enabled"
98 "1cb05cfed7c24279be884ba4f6520262","foo","foo",True
99 ')
100         instances = provider.instances
101         expect(instances.count).to eq(1)
102       end
103     end
104
105   end
106 end