@@ -313,6 +313,7 @@ def test_create_user_with_invalid_role(self):
313313 token = self .login (client , USERNAME_ADMIN , PASSWORD_ADMIN )
314314
315315 uri = "api/v1/security/users/"
316+
316317 create_user_payload = {
317318 "active" : True ,
318319 "email" : "fab@test_create_user_1.com" ,
@@ -393,6 +394,72 @@ def test_edit_user(self):
393394 self .session .delete (r )
394395 self .session .commit ()
395396
397+ def test_edit_user_check_password (self ):
398+ client = self .app .test_client ()
399+ token = self .login (client , USERNAME_ADMIN , PASSWORD_ADMIN )
400+ role_id = self .appbuilder .sm .find_role ("Admin" ).id
401+ uri = "api/v1/security/users/"
402+ create_user_payload = {
403+ "active" : True ,
404+ 405+ "first_name" : "test" ,
406+ "last_name" : "test" ,
407+ "password" : "password" ,
408+ "roles" : [role_id ],
409+ "username" : "test_password" ,
410+ }
411+ rv = self .auth_client_post (client , token , uri , create_user_payload )
412+ self .assertEqual (rv .status_code , 201 )
413+
414+ user = self .appbuilder .sm .find_user (username = "test_password" )
415+ self .assertIsNotNone (user )
416+ user_id = user .id
417+ old_password_hash = user .password
418+
419+ update_payload = {"username" : "test_password_renamed" }
420+ rv = self .auth_client_put (client , token , f"{ uri } { user_id } " , update_payload )
421+ self .assertEqual (rv .status_code , 200 )
422+
423+ updated_user = self .appbuilder .sm .find_user (username = "test_password_renamed" )
424+ self .assertIsNotNone (updated_user )
425+ self .assertEqual (updated_user .password , old_password_hash )
426+
427+ self .session .delete (updated_user )
428+ self .session .commit ()
429+
430+ def test_edit_user_change_password (self ):
431+ client = self .app .test_client ()
432+ token = self .login (client , USERNAME_ADMIN , PASSWORD_ADMIN )
433+ role_id = self .appbuilder .sm .find_role ("Admin" ).id
434+ uri = "api/v1/security/users/"
435+
436+ create_user_payload = {
437+ "active" : True ,
438+ 439+ "first_name" : "test" ,
440+ "last_name" : "test" ,
441+ "password" : "initial_password" ,
442+ "roles" : [role_id ],
443+ "username" : "test_change_password" ,
444+ }
445+ rv = self .auth_client_post (client , token , uri , create_user_payload )
446+ self .assertEqual (rv .status_code , 201 )
447+
448+ user = self .appbuilder .sm .find_user (username = "test_change_password" )
449+ self .assertIsNotNone (user )
450+ user_id = user .id
451+ old_password_hash = user .password
452+
453+ update_payload = {"password" : "new_secure_password" }
454+ rv = self .auth_client_put (client , token , f"{ uri } { user_id } " , update_payload )
455+ self .assertEqual (rv .status_code , 200 )
456+
457+ updated_user = self .appbuilder .sm .find_user (username = "test_change_password" )
458+ self .assertIsNotNone (updated_user )
459+ self .assertNotEqual (updated_user .password , old_password_hash )
460+
461+ self .appbuilder .sm .del_register_user (updated_user )
462+
396463 def test_delete_user (self ):
397464 client = self .app .test_client ()
398465 token = self .login (client , USERNAME_ADMIN , PASSWORD_ADMIN )
0 commit comments