3 require 'puppet/provider/keystone_service/openstack'
5 provider_class = Puppet::Type.type(:keystone_service).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:5000/v3'
16 describe 'when managing a service' do
18 let(:service_attrs) do
21 :description => 'foo',
28 Puppet::Type::Keystone_service.new(service_attrs)
32 provider_class.new(resource)
35 it_behaves_like 'authenticated with environment variables' do
37 it 'creates a service' do
38 provider.class.stubs(:openstack)
39 .with('service', 'list', '--quiet', '--format', 'csv', '--long')
40 .returns('"ID","Name","Type","Description"
41 "1cb05cfed7c24279be884ba4f6520262","foo","foo","foo"
43 provider.class.stubs(:openstack)
44 .with('service', 'create', '--format', 'shell', ['foo', '--name', 'foo', '--description', 'foo'])
45 .returns('description="foo"
47 id="8f0dd4c0abc44240998fbb3f5089ecbf"
52 expect(provider.exists?).to be_truthy
56 describe '#destroy' do
57 it 'destroys a service' do
58 provider.class.stubs(:openstack)
59 .with('service', 'list', '--quiet', '--format', 'csv', '--long')
60 .returns('"ID","Name","Type","Description"
61 "1cb05cfed7c24279be884ba4f6520262","foo","foo","foo"
63 provider.class.stubs(:openstack)
64 .with('service', 'delete', [])
66 expect(provider.exists?).to be_falsey
69 context 'when service does not exist' do
71 provider.class.stubs(:openstack)
72 .with('service', 'list', '--quiet', '--format', 'csv', '--long')
73 .returns('"ID","Name","Type","Description"')
74 response = provider.exists?
76 it { is_expected.to be_falsey }
80 describe '#instances' do
81 it 'finds every service' do
82 provider.class.stubs(:openstack)
83 .with('service', 'list', '--quiet', '--format', 'csv', '--long')
84 .returns('"ID","Name","Type","Description"
85 "8f0dd4c0abc44240998fbb3f5089ecbf","foo","foo","foo"
87 instances = Puppet::Type::Keystone_service::ProviderOpenstack.instances
88 expect(instances.count).to eq(1)