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