|
5 | 5 | describe Puppet::Type.type(:mongodb_user).provider(:mongodb) do |
6 | 6 | let(:raw_users) do |
7 | 7 | [ |
8 | | - { '_id' => 'admin.root', 'user' => 'root', 'db' => 'admin', 'credentials' => { 'MONGODB-CR' => 'pass', 'SCRAM-SHA-1' => { 'iterationCount' => 10_000, 'salt' => 'salt', 'storedKey' => 'storedKey', 'serverKey' => 'serverKey' } }, 'roles' => [{ 'role' => 'role2', 'db' => 'admin' }, { 'role' => 'role1', 'db' => 'admin' }] } |
| 8 | + { '_id' => 'admin.root', 'user' => 'root', 'db' => 'admin', 'credentials' => { 'MONGODB-CR' => 'pass', 'SCRAM-SHA-1' => { 'iterationCount' => 10_000, 'salt' => 'salt', 'storedKey' => 'storedKey', 'serverKey' => 'serverKey' } }, 'roles' => [{ 'role' => 'role2', 'db' => 'admin' }, { 'role' => 'role3', 'db' => 'user_database' }, { 'role' => 'role1', 'db' => 'admin' }] } |
9 | 9 | ].to_json |
10 | 10 | end |
11 | 11 |
|
|
17 | 17 | name: 'new_user', |
18 | 18 | database: 'new_database', |
19 | 19 | password_hash: 'pass', |
20 | | - roles: %w[role1 role2], |
| 20 | + roles: %w[role1 role2@other_database], |
21 | 21 | provider: described_class.name |
22 | 22 | ) |
23 | 23 | end |
|
56 | 56 | "createUser":"new_user", |
57 | 57 | "pwd":"pass", |
58 | 58 | "customData":{"createdBy":"Puppet Mongodb_user['new_user']"}, |
59 | | - "roles":["role1","role2"], |
| 59 | + "roles":[{"role":"role1","db":"new_database"},{"role":"role2","db":"other_database"}], |
60 | 60 | "digestPassword":false |
61 | 61 | } |
62 | 62 | EOS |
|
114 | 114 |
|
115 | 115 | describe 'roles' do |
116 | 116 | it 'returns a sorted roles' do |
117 | | - expect(instance.roles).to eq(%w[role1 role2]) |
| 117 | + expect(instance.roles).to eq(%w[role1 role2 role3@user_database]) |
118 | 118 | end |
119 | 119 | end |
120 | 120 |
|
121 | 121 | describe 'roles=' do |
122 | 122 | it 'changes nothing' do |
123 | | - resource.provider.set(name: 'new_user', ensure: :present, roles: %w[role1 role2]) |
| 123 | + resource.provider.set(name: 'new_user', ensure: :present, roles: %w[role1 role2@other_database]) |
124 | 124 | expect(provider).not_to receive(:mongo_eval) |
125 | | - provider.roles = %w[role1 role2] |
| 125 | + provider.roles = %w[role1 role2@other_database] |
126 | 126 | end |
127 | 127 |
|
128 | 128 | it 'grant a role' do |
129 | | - resource.provider.set(name: 'new_user', ensure: :present, roles: %w[role1 role2]) |
| 129 | + resource.provider.set(name: 'new_user', ensure: :present, roles: %w[role1 role2@other_database]) |
130 | 130 | expect(provider).to receive(:mongo_eval). |
131 | | - with('db.getSiblingDB("new_database").grantRolesToUser("new_user", ["role3"])') |
132 | | - provider.roles = %w[role1 role2 role3] |
| 131 | + with('db.getSiblingDB("new_database").grantRolesToUser("new_user", [{"role":"role3","db":"new_database"}])') |
| 132 | + provider.roles = %w[role1 role2@other_database role3] |
133 | 133 | end |
134 | 134 |
|
135 | 135 | it 'revokes a role' do |
136 | | - resource.provider.set(name: 'new_user', ensure: :present, roles: %w[role1 role2]) |
| 136 | + resource.provider.set(name: 'new_user', ensure: :present, roles: %w[role1 role2@other_database]) |
137 | 137 | expect(provider).to receive(:mongo_eval). |
138 | | - with('db.getSiblingDB("new_database").revokeRolesFromUser("new_user", ["role1"])') |
139 | | - provider.roles = ['role2'] |
| 138 | + with('db.getSiblingDB("new_database").revokeRolesFromUser("new_user", [{"role":"role1","db":"new_database"}])') |
| 139 | + provider.roles = ['role2@other_database'] |
140 | 140 | end |
141 | 141 |
|
142 | 142 | # rubocop:disable RSpec/MultipleExpectations |
143 | 143 | it 'exchanges a role' do |
144 | | - resource.provider.set(name: 'new_user', ensure: :present, roles: %w[role1 role2]) |
| 144 | + resource.provider.set(name: 'new_user', ensure: :present, roles: %w[role1 role2@other_database]) |
145 | 145 | expect(provider).to receive(:mongo_eval). |
146 | | - with('db.getSiblingDB("new_database").revokeRolesFromUser("new_user", ["role1"])') |
| 146 | + with('db.getSiblingDB("new_database").revokeRolesFromUser("new_user", [{"role":"role1","db":"new_database"}])') |
147 | 147 | expect(provider).to receive(:mongo_eval). |
148 | | - with('db.getSiblingDB("new_database").grantRolesToUser("new_user", ["role3"])') |
| 148 | + with('db.getSiblingDB("new_database").grantRolesToUser("new_user", [{"role":"role3","db":"new_database"}])') |
149 | 149 |
|
150 | | - provider.roles = %w[role2 role3] |
| 150 | + provider.roles = %w[role2@other_database role3] |
151 | 151 | end |
152 | 152 | # rubocop:enable RSpec/MultipleExpectations |
153 | 153 | end |
|
0 commit comments