3 require 'puppet/provider/keystone_user_role/openstack'
5 provider_class = Puppet::Type.type(:keystone_user_role).provider(:openstack)
7 describe provider_class do
9 describe 'when updating a user\'s role' do
11 let(:user_role_attrs) do
13 :name => 'foo@example.com@foo',
15 :roles => ['foo', 'bar'],
18 'password' => 'abc123',
19 'tenant_name' => 'foo',
20 'auth_url' => 'http://127.0.0.1:5000/v2.0',
26 Puppet::Type::Keystone_user_role.new(user_role_attrs)
30 provider_class.new(resource)
34 provider.class.stubs(:openstack)
35 .with('user', 'list', '--quiet', '--format', 'csv', [['--project', 'foo', '--os-username', 'test', '--os-password', 'abc123', '--os-tenant-name', 'foo', '--os-auth-url', 'http://127.0.0.1:5000/v2.0']])
37 "1cb05cfed7c24279be884ba4f6520262","foo@example.com"
39 provider.class.stubs(:openstack)
40 .with('project', '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']])
42 "1cb05cfed7c24279be884ba4f6520262","foo"
47 it 'adds all the roles to the user' do
48 provider.class.stubs(:openstack)
49 .with('user role', 'list', '--quiet', '--format', 'csv', [['--project', 'foo', 'foo@example.com', '--os-username', 'test', '--os-password', 'abc123', '--os-tenant-name', 'foo', '--os-auth-url', 'http://127.0.0.1:5000/v2.0']])
50 .returns('"ID","Name","Project","User"
51 "1cb05cfed7c24279be884ba4f6520262","foo","foo","foo@example.com"
52 "1cb05cfed7c24279be884ba4f6520263","bar","foo","foo@example.com"
54 provider.class.stubs(:openstack)
55 .with('role', 'add', [['foo', '--project', 'foo', '--user', 'foo@example.com', '--os-username', 'test', '--os-password', 'abc123', '--os-tenant-name', 'foo', '--os-auth-url', 'http://127.0.0.1:5000/v2.0']])
56 provider.class.stubs(:openstack)
57 .with('role', 'add', [['bar', '--project', 'foo', '--user', 'foo@example.com', '--os-username', 'test', '--os-password', 'abc123', '--os-tenant-name', 'foo', '--os-auth-url', 'http://127.0.0.1:5000/v2.0']])
59 expect(provider.exists?).to be_truthy
63 describe '#destroy' do
64 it 'removes all the roles from a user' do
65 provider.class.stubs(:openstack)
66 .with('user role', 'list', '--quiet', '--format', 'csv', [['--project', 'foo', 'foo@example.com', '--os-username', 'test', '--os-password', 'abc123', '--os-tenant-name', 'foo', '--os-auth-url', 'http://127.0.0.1:5000/v2.0']])
67 .returns('"ID","Name","Project","User"')
68 provider.class.stubs(:openstack)
69 .with('role', 'remove', [['foo', '--project', 'foo', '--user', 'foo@example.com', '--os-username', 'test', '--os-password', 'abc123', '--os-tenant-name', 'foo', '--os-auth-url', 'http://127.0.0.1:5000/v2.0']])
70 provider.class.stubs(:openstack)
71 .with('role', 'remove', [['bar', '--project', 'foo', '--user', 'foo@example.com', '--os-username', 'test', '--os-password', 'abc123', '--os-tenant-name', 'foo', '--os-auth-url', 'http://127.0.0.1:5000/v2.0']])
73 expect(provider.exists?).to be_falsey
80 provider.class.stubs(:openstack)
81 .with('user role', 'list', '--quiet', '--format', 'csv', [['--project', 'foo', 'foo@example.com', '--os-username', 'test', '--os-password', 'abc123', '--os-tenant-name', 'foo', '--os-auth-url', 'http://127.0.0.1:5000/v2.0']])
82 .returns('"ID","Name","Project","User"
83 "1cb05ed7c24279be884ba4f6520262","foo","foo","foo@example.com"
84 "1cb05ed7c24279be884ba4f6520262","bar","foo","foo@example.com"
86 response = provider.exists?
89 it { is_expected.to be_truthy }