Skip to content
This repository was archived by the owner on Jan 1, 2024. It is now read-only.

Commit 942f3f9

Browse files
dokshinaolegrok
andauthored
Update Cartridge to 2.3.0 in tests (#116)
Co-authored-by: Oleg Babin <[email protected]>
1 parent 3485bba commit 942f3f9

File tree

4 files changed

+92
-3
lines changed

4 files changed

+92
-3
lines changed

.gitlab-ci.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
variables:
3-
BUNDLE_VERSION: 2.3.1-13-g882baf7
4-
CARTRIDGE_CLI_VERSION: 2.0.0
3+
BUNDLE_VERSION: 2.4.2-17-g5c752b1
4+
CARTRIDGE_CLI_VERSION: 2.3.0
55

66
stages:
77
- prebuild

library/cartridge_auth.py

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,27 @@ def user_is_deleted(user):
157157
return 'deleted' in user and user['deleted'] is True
158158

159159

160+
def users_are_equal(user1, user2):
161+
for key in user1:
162+
if key == 'version':
163+
continue
164+
165+
if key not in user2:
166+
return False
167+
168+
if user1[key] != user2[key]:
169+
return False
170+
171+
for key in user2:
172+
if key == 'version':
173+
continue
174+
175+
if key not in user1:
176+
return False
177+
178+
return True
179+
180+
160181
def manage_auth(params):
161182
auth_params = params['auth']
162183
control_console = get_control_console(params['control_sock'])
@@ -236,7 +257,7 @@ def manage_auth(params):
236257
if not ok:
237258
return ModuleRes(success=False, msg=edited_user)
238259

239-
users_changed = users_changed or cluster_user != edited_user
260+
users_changed = users_changed or not users_are_equal(cluster_user, edited_user)
240261

241262
for user in users_to_delete:
242263
ok, err = delete_cluster_user(control_console, user)

unit/mock/cartridge.lua

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ local vars = {
6363
membership_members = {},
6464
known_servers = {},
6565
become_unhealthy_after_edit = false,
66+
user_has_version = true,
6667
}
6768

6869
local topology = {
@@ -523,6 +524,10 @@ function cartridge_auth.add_user(username, password, fullname, email)
523524
email = email,
524525
}
525526

527+
if vars.user_has_version then
528+
user.version = 1
529+
end
530+
526531
table.insert(vars.users, user)
527532
return user
528533
end
@@ -575,6 +580,10 @@ function cartridge_auth.edit_user(username, password, fullname, email)
575580
user.email = email
576581
end
577582

583+
if user.version ~= nil then
584+
user.version = user.version + 1
585+
end
586+
578587
return user
579588
end
580589

unit/test_auth.py

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -249,6 +249,65 @@ def test_edit_user(self):
249249
self.assertFalse(res.success)
250250
self.assertIn('cartridge err', res.msg)
251251

252+
def test_edit_user_no_version(self):
253+
# all required operations are implemented
254+
set_user_functions_implemented(self.instance)
255+
self.instance.set_variable('user_has_version', False)
256+
257+
USER = {
258+
'username': 'dokshina',
259+
'email': '[email protected]',
260+
'fullname': 'Elizaveta Dokshina',
261+
}
262+
263+
new_params = {
264+
'password': 'new-password',
265+
'email': '[email protected]_a_bit_more',
266+
'fullname': 'The Princess',
267+
}
268+
269+
for param, value in new_params.items():
270+
self.instance.set_variable('users', [USER])
271+
272+
self.instance.clear_calls('auth_add_user')
273+
self.instance.clear_calls('auth_edit_user')
274+
self.instance.clear_calls('auth_remove_user')
275+
276+
user_patch = {
277+
'username': USER['username'],
278+
param: value,
279+
}
280+
281+
res = call_manage_auth(self.console_sock, users=[user_patch])
282+
self.assertTrue(res.success, msg=res.msg)
283+
if param != 'password':
284+
self.assertTrue(res.changed)
285+
else:
286+
self.assertFalse(res.changed)
287+
288+
calls = self.instance.get_calls('auth_add_user')
289+
self.assertEqual(len(calls), 0)
290+
291+
calls = self.instance.get_calls('auth_edit_user')
292+
self.assertEqual(len(calls), 1)
293+
self.assertEqual(calls[0], user_patch)
294+
295+
calls = self.instance.get_calls('auth_remove_user')
296+
self.assertEqual(len(calls), 0)
297+
298+
# fail on auth_edit_user
299+
self.instance.set_fail_on('auth_edit_user')
300+
self.instance.set_variable('users', [USER])
301+
302+
user_patch = {
303+
'username': USER['username'],
304+
'password': 'new-password',
305+
}
306+
307+
res = call_manage_auth(self.console_sock, users=[user_patch])
308+
self.assertFalse(res.success)
309+
self.assertIn('cartridge err', res.msg)
310+
252311
def test_delete_user(self):
253312
# all required operations are implemented
254313
set_user_functions_implemented(self.instance)

0 commit comments

Comments
 (0)