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 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'
16 describe 'when updating a user\'s role' do
17 it_behaves_like 'authenticated with environment variables' do
18 let(:user_role_attrs) do
22 :roles => ['foo', 'bar'],
27 Puppet::Type::Keystone_user_role.new(user_role_attrs)
31 provider_class.new(resource)
35 provider.class.stubs(:openstack)
36 .with('user', 'list', '--quiet', '--format', 'csv', ['foo', '--project', 'foo'])
37 .returns('"ID","Name","Project","User"
38 "1cb05cfed7c24279be884ba4f6520262","foo","foo","foo"
43 it 'adds all the roles to the user' do
44 provider.class.stubs(:openstack)
45 .with('role', 'add', ['foo', '--project', 'foo', '--user', 'foo'])
46 provider.class.stubs(:openstack)
47 .with('role', 'add', ['bar', '--project', 'foo', '--user', 'foo'])
48 provider.class.stubs(:openstack)
49 .with('user role', 'list', '--quiet', '--format', 'csv', ['foo', '--project', 'foo'])
50 .returns('"ID","Name","Project","User"
51 "1cb05ed7c24279be884ba4f6520262","foo","foo","foo"
52 "2cb05ed7c24279be884ba4f6520262","bar","foo","foo"
55 expect(provider.exists?).to be_truthy
59 describe '#destroy' do
60 it 'removes all the roles from a user' do
61 provider.class.stubs(:openstack)
62 .with('user role', 'list', '--quiet', '--format', 'csv', ['foo', '--project', 'foo'])
63 .returns('"ID","Name","Project","User"')
64 provider.class.stubs(:openstack)
65 .with('role', 'remove', ['foo', '--project', 'foo', '--user', 'foo'])
66 provider.class.stubs(:openstack)
67 .with('role', 'remove', ['bar', '--project', 'foo', '--user', 'foo'])
69 expect(provider.exists?).to be_falsey
76 provider.class.stubs(:openstack)
77 .with('user role', 'list', '--quiet', '--format', 'csv', ['foo', '--project', 'foo'])
78 .returns('"ID","Name","Project","User"
79 "1cb05ed7c24279be884ba4f6520262","foo","foo","foo"
81 response = provider.exists?
84 it { is_expected.to be_truthy }