3 require 'puppet/provider/keystone_endpoint/openstack'
5 provider_class = Puppet::Type.type(:keystone_endpoint).provider(:openstack)
7 describe provider_class do
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'
16 describe 'when managing an endpoint' do
18 let(:endpoint_attrs) do
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',
29 Puppet::Type::Keystone_endpoint.new(endpoint_attrs)
33 provider_class.new(resource)
36 it_behaves_like 'authenticated with environment variables' 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"
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"
51 service_id="8137d72980fd462192f276585a002426"
56 expect(provider.exists?).to be_truthy
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"
67 provider.class.stubs(:openstack)
68 .with('endpoint', 'delete', [])
70 expect(provider.exists?).to be_falsey
75 context 'when tenant does not exist' 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?
83 it { is_expected.to be_falsey }
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"
94 instances = Puppet::Type::Keystone_endpoint::ProviderOpenstack.instances
95 expect(instances.count).to eq(1)