3 require 'puppet/provider/keystone_role/openstack'
5 provider_class = Puppet::Type.type(:keystone_role).provider(:openstack)
7 describe provider_class do
9 describe 'when creating a role' do
17 'password' => 'abc123',
18 'tenant_name' => 'foo',
19 'auth_url' => 'http://127.0.0.1:5000/v2.0',
25 Puppet::Type::Keystone_role.new(role_attrs)
29 provider_class.new(resource)
33 it 'creates a role' do
34 provider.class.stubs(:openstack)
35 .with('role', 'list', '--quiet', '--format', 'csv', [['--os-username', 'test', '--os-password', 'abc123', '--os-tenant-name', 'foo', '--os-auth-url', 'http://127.0.0.1:5000/v2.0']])
37 "1cb05cfed7c24279be884ba4f6520262","foo"
39 provider.class.stubs(:openstack)
40 .with('role', 'create', '--format', 'shell', [['foo', '--os-username', 'test', '--os-password', 'abc123', '--os-tenant-name', 'foo', '--os-auth-url', 'http://127.0.0.1:5000/v2.0']])
41 .returns('name="foo"')
43 expect(provider.exists?).to be_truthy
47 describe '#destroy' do
48 it 'destroys a role' do
49 provider.class.stubs(:openstack)
50 .with('role', 'list', '--quiet', '--format', 'csv', [['--os-username', 'test', '--os-password', 'abc123', '--os-tenant-name', 'foo', '--os-auth-url', 'http://127.0.0.1:5000/v2.0']])
51 .returns('"ID","Name"')
52 provider.class.stubs(:openstack)
53 .with('role', 'delete', [['foo', '--os-username', 'test', '--os-password', 'abc123', '--os-tenant-name', 'foo', '--os-auth-url', 'http://127.0.0.1:5000/v2.0']])
55 expect(provider.exists?).to be_falsey
61 context 'when role exists' do
64 provider.class.stubs(:openstack)
65 .with('role', 'list', '--quiet', '--format', 'csv', [['--os-username', 'test', '--os-password', 'abc123', '--os-tenant-name', 'foo', '--os-auth-url', 'http://127.0.0.1:5000/v2.0']])
67 "1cb05cfed7c24279be884ba4f6520262","foo"
69 response = provider.exists?
72 it { is_expected.to be_truthy }
75 context 'when role does not exist' do
78 provider.class.stubs(:openstack)
79 .with('role', 'list', '--quiet', '--format', 'csv', [['--os-username', 'test', '--os-password', 'abc123', '--os-tenant-name', 'foo', '--os-auth-url', 'http://127.0.0.1:5000/v2.0']])
80 .returns('"ID","Name"')
81 response = provider.exists?
84 it { is_expected.to be_falsey }
88 describe '#instances' do
89 it 'finds every role' do
90 provider.class.stubs(:openstack)
91 .with('role', 'list', '--quiet', '--format', 'csv', [['--os-username', 'test', '--os-password', 'abc123', '--os-tenant-name', 'foo', '--os-auth-url', 'http://127.0.0.1:5000/v2.0']])
93 "1cb05cfed7c24279be884ba4f6520262","foo"
95 instances = provider.instances
96 expect(instances.count).to eq(1)