]> git.donarmstrong.com Git - dsa-puppet.git/blob - 3rdparty/modules/keystone/spec/unit/provider/keystone_user_role/openstack_spec.rb
f3c35dcf668cc6f5492fd868af5b899091af8287
[dsa-puppet.git] / 3rdparty / modules / keystone / spec / unit / provider / keystone_user_role / openstack_spec.rb
1 require 'puppet'
2 require 'spec_helper'
3 require 'puppet/provider/keystone_user_role/openstack'
4
5 provider_class = Puppet::Type.type(:keystone_user_role).provider(:openstack)
6
7 describe provider_class do
8
9   describe 'when updating a user\'s role' do
10
11     let(:user_role_attrs) do
12       {
13         :name         => 'foo@example.com@foo',
14         :ensure       => 'present',
15         :roles        => ['foo', 'bar'],
16         :auth         => {
17           'username'    => 'test',
18           'password'    => 'abc123',
19           'tenant_name' => 'foo',
20           'auth_url'    => 'http://127.0.0.1:5000/v2.0',
21         }
22       }
23     end
24
25     let(:resource) do
26       Puppet::Type::Keystone_user_role.new(user_role_attrs)
27     end
28
29     let(:provider) do
30       provider_class.new(resource)
31     end
32
33     before(:each) do
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']])
36                     .returns('"ID","Name"
37 "1cb05cfed7c24279be884ba4f6520262","foo@example.com"
38 ')
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']])
41                     .returns('"ID","Name"
42 "1cb05cfed7c24279be884ba4f6520262","foo"
43 ')
44     end
45
46     describe '#create' do
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"
53 ')
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']])
58         provider.create
59         expect(provider.exists?).to be_truthy
60       end
61     end
62
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']])
72         provider.destroy
73         expect(provider.exists?).to be_falsey
74       end
75
76     end
77
78     describe '#exists' do
79       subject(:response) do
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"
85 ')
86         response = provider.exists?
87       end
88
89       it { is_expected.to be_truthy }
90
91     end
92
93   end
94 end