]> git.donarmstrong.com Git - dsa-puppet.git/blob - 3rdparty/modules/keystone/spec/unit/provider/keystone_endpoint/openstack_spec.rb
try with modules from master
[dsa-puppet.git] / 3rdparty / modules / keystone / spec / unit / provider / keystone_endpoint / openstack_spec.rb
1 require 'puppet'
2 require 'spec_helper'
3 require 'puppet/provider/keystone_endpoint/openstack'
4
5 provider_class = Puppet::Type.type(:keystone_endpoint).provider(:openstack)
6
7 describe provider_class do
8
9   shared_examples 'authenticated with environment variables' do
10     ENV['OS_USERNAME']     = 'test'
11     ENV['OS_PASSWORD']     = 'abc123'
12     ENV['OS_PROJECT_NAME'] = 'test'
13     ENV['OS_AUTH_URL']     = 'http://127.0.0.1:35357/v2.0'
14   end
15
16   describe 'when managing an endpoint' do
17
18     let(:endpoint_attrs) do
19       {
20         :name         => 'foo/bar',
21         :ensure       => 'present',
22         :public_url   => 'http://127.0.0.1:5000/v2.0',
23         :internal_url => 'http://127.0.0.1:5001/v2.0',
24         :admin_url    => 'http://127.0.0.1:5002/v2.0',
25       }
26     end
27
28     let(:resource) do
29       Puppet::Type::Keystone_endpoint.new(endpoint_attrs)
30     end
31
32     let(:provider) do
33       provider_class.new(resource)
34     end
35
36     it_behaves_like 'authenticated with environment variables' do
37       describe '#create' do
38         it 'creates an endpoint' do
39           provider.class.stubs(:openstack)
40                         .with('endpoint', 'list', '--quiet', '--format', 'csv', '--long')
41                         .returns('"ID","Region","Service Name","Service Type","PublicURL","AdminURL","InternalURL"
42 "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"
43 ')
44           provider.class.stubs(:openstack)
45                         .with('endpoint', 'create', '--format', 'shell', ['bar', '--region', 'foo', '--publicurl', 'http://127.0.0.1:5000/v2.0', '--internalurl', 'http://127.0.0.1:5001/v2.0', '--adminurl', 'http://127.0.0.1:5002/v2.0'])
46                         .returns('adminurl="http://127.0.0.1:5002/v2.0"
47 id="3a5c4378981e4112a0d44902a43e16ef"
48 internalurl="http://127.0.0.1:5001/v2.0"
49 publicurl="http://127.0.0.1:5000/v2.0"
50 region="foo"
51 service_id="8137d72980fd462192f276585a002426"
52 service_name="bar"
53 service_type="test"
54 ')
55           provider.create
56           expect(provider.exists?).to be_truthy
57         end
58       end
59
60       describe '#destroy' do
61         it 'destroys an endpoint' do
62           provider.class.stubs(:openstack)
63                         .with('endpoint', 'list', '--quiet', '--format', 'csv', '--long')
64                         .returns('"ID","Region","Service Name","Service Type","PublicURL","AdminURL","InternalURL"
65 "1cb05cfed7c24279be884ba4f6520262","foo","bar","test","http://127.0.0.1:5000/v2.0","http://127.0.0.1:5001/v2.0","http://127.0.0.1:5002/v2.0"
66 ')
67           provider.class.stubs(:openstack)
68                         .with('endpoint', 'delete', [])
69           provider.destroy
70           expect(provider.exists?).to be_falsey
71         end
72       end
73
74       describe '#exists' do
75         context 'when tenant does not exist' do
76           subject(:response) do
77             provider.class.stubs(:openstack)
78                           .with('endpoint', 'list', '--quiet', '--format', 'csv', '--long')
79                           .returns('"ID","Region","Service Name","Service Type","PublicURL","AdminURL","InternalURL"')
80             response = provider.exists?
81           end
82
83           it { is_expected.to be_falsey }
84         end
85       end
86
87       describe '#instances' do
88         it 'finds every tenant' do
89           provider.class.stubs(:openstack)
90                         .with('endpoint', 'list', '--quiet', '--format', 'csv', '--long')
91                         .returns('"ID","Region","Service Name","Service Type","PublicURL","AdminURL","InternalURL"
92 "3a5c4378981e4112a0d44902a43e16ef","foo","bar","test","http://127.0.0.1:5000/v2.0","http://127.0.0.1:5001/v2.0","http://127.0.0.1:5002/v2.0"
93 ')
94           instances = Puppet::Type::Keystone_endpoint::ProviderOpenstack.instances
95           expect(instances.count).to eq(1)
96         end
97       end
98     end
99   end
100 end