@@ -100,3 +100,59 @@ def test_it_state_session_settings_and_delete(mode: str, integration_client: Mel
100100
101101 invoke (integration_client , mode , "delete_user" , sid )
102102 assert_credentials_invalid (integration_client , mode , login , pwd_2 )
103+
104+
105+ @pytest .mark .parametrize ("mode" , ["sync" , "async" ], ids = ["sync" , "async" ])
106+ def test_it_user_additional_fields (mode : str , integration_client : Mellophone ) -> None :
107+ unique = uuid4 ().hex [:8 ]
108+ sid = f"it-extra-{ mode } -{ unique } "
109+ login = f"it_extra_{ mode } _{ unique } "
110+ pwd_1 = "pwd_1"
111+ pwd_2 = "pwd_2"
112+
113+ create_payload = {
114+ "sid" : sid ,
115+ "login" : login ,
116+ "password" : pwd_1 ,
117+ "field_str" : f"{ login } @example.com" ,
118+ "field_int" : 20 ,
119+ "field_float" : 4.5 ,
120+ "field_bool" : False ,
121+ "field_none" : None ,
122+ "field_empty_str" : "" ,
123+ "field_empty_list" : [],
124+ "field_list" : ["org1" ],
125+ }
126+ update_payload = {
127+ "sid" : sid ,
128+ "login" : login ,
129+ "pwd" : pwd_2 ,
130+ "field_str" : f"{ login } +updated@example.com" ,
131+ "field_int" : 30 ,
132+ "field_float" : 9.75 ,
133+ "field_bool" : True ,
134+ "field_list" : ["org1" , "org2" ],
135+ }
136+
137+ try :
138+ invoke (integration_client , mode , "create_user" , create_payload )
139+ assert_credentials_valid (integration_client , mode , login , pwd_1 , sid )
140+
141+ users_after_create = users_from_list (invoke (integration_client , mode , "get_user_list" , gp = "not_defined" ))
142+ created_user = next ((user for user in users_after_create if user .get ("sid" ) == sid ), None )
143+ assert created_user is not None
144+ for key in filter (lambda x : x not in ('password' , 'pwd' ), create_payload ):
145+ assert created_user .get (key ) == str (create_payload [key ])
146+
147+ invoke (integration_client , mode , "update_user" , sid , update_payload )
148+ assert_credentials_invalid (integration_client , mode , login , pwd_1 )
149+ assert_credentials_valid (integration_client , mode , login , pwd_2 , sid )
150+
151+ users_after_update = users_from_list (invoke (integration_client , mode , "get_user_list" , gp = "not_defined" ))
152+ updated_user = next ((user for user in users_after_update if user .get ("sid" ) == sid ), None )
153+ assert updated_user is not None
154+ for key in filter (lambda x : x not in ('password' , 'pwd' ), update_payload ):
155+ assert updated_user .get (key ) == str (update_payload [key ])
156+ finally :
157+ ...
158+ # invoke(integration_client, mode, "delete_user", sid)
0 commit comments