3838PASSWORD = "edx"
3939
4040
41- def get_mapping_data_by_usernames (usernames ):
41+ def get_mapping_data_by_usernames (usernames , remote_id_field_name = False ):
4242 """ Generate mapping data used in response """
43+ if remote_id_field_name :
44+ return [{'username' : username , 'remote_id' : 'external_' + username } for username in usernames ]
4345 return [{'username' : username , 'remote_id' : 'remote_' + username } for username in usernames ]
4446
4547
@@ -76,11 +78,13 @@ def setUp(self): # pylint: disable=arguments-differ
7678 provider = google .backend_name ,
7779 uid = f'{ username } @gmail.com' ,
7880 )
79- UserSocialAuth .objects .create (
81+ usa = UserSocialAuth .objects .create (
8082 user = user ,
8183 provider = testshib .backend_name ,
8284 uid = f'{ testshib .slug } :remote_{ username } ' ,
8385 )
86+ usa .set_extra_data ({'external_user_id' : f'external_{ username } ' })
87+ usa .refresh_from_db ()
8488 # Create another user not linked to any providers:
8589 UserFactory .create (username = CARL_USERNAME , email = f'{ CARL_USERNAME } @example.com' , password = PASSWORD )
8690
@@ -304,12 +308,20 @@ def test_list_all_user_mappings_oauth2(self, valid_call, expect_code, expect_dat
304308 @ddt .data (
305309 ({'username' : [ALICE_USERNAME , STAFF_USERNAME ]}, 200 ,
306310 get_mapping_data_by_usernames ([ALICE_USERNAME , STAFF_USERNAME ])),
311+ ({'username' : [ALICE_USERNAME , STAFF_USERNAME ], 'remote_id_field_name' : 'external_user_id' }, 200 ,
312+ get_mapping_data_by_usernames ([ALICE_USERNAME , STAFF_USERNAME ], remote_id_field_name = True )),
307313 ({'remote_id' : ['remote_' + ALICE_USERNAME , 'remote_' + STAFF_USERNAME , 'remote_' + CARL_USERNAME ]}, 200 ,
308314 get_mapping_data_by_usernames ([ALICE_USERNAME , STAFF_USERNAME ])),
315+ ({'remote_id' : ['remote_' + ALICE_USERNAME , 'remote_' + STAFF_USERNAME , 'remote_' + CARL_USERNAME ],
316+ 'remote_id_field_name' : 'external_user_id' }, 200 ,
317+ get_mapping_data_by_usernames ([ALICE_USERNAME , STAFF_USERNAME ], remote_id_field_name = True )),
309318 ({'username' : [ALICE_USERNAME , CARL_USERNAME , STAFF_USERNAME ]}, 200 ,
310319 get_mapping_data_by_usernames ([ALICE_USERNAME , STAFF_USERNAME ])),
311320 ({'username' : [ALICE_USERNAME ], 'remote_id' : ['remote_' + STAFF_USERNAME ]}, 200 ,
312321 get_mapping_data_by_usernames ([ALICE_USERNAME , STAFF_USERNAME ])),
322+ ({'username' : [ALICE_USERNAME ], 'remote_id' : ['remote_' + STAFF_USERNAME ],
323+ 'remote_id_field_name' : 'external_user_id' }, 200 ,
324+ get_mapping_data_by_usernames ([ALICE_USERNAME , STAFF_USERNAME ], remote_id_field_name = True )),
313325 )
314326 @ddt .unpack
315327 def test_user_mappings_with_query_params_comma_separated (self , query_params , expect_code , expect_data ):
@@ -321,19 +333,29 @@ def test_user_mappings_with_query_params_comma_separated(self, query_params, exp
321333 for attr in ['username' , 'remote_id' ]:
322334 if attr in query_params :
323335 params .append ('{}={}' .format (attr , ',' .join (query_params [attr ])))
336+ if 'remote_id_field_name' in query_params :
337+ params .append ('remote_id_field_name={}' .format (query_params ['remote_id_field_name' ]))
324338 url = "{}?{}" .format (base_url , '&' .join (params ))
325339 response = self .client .get (url , HTTP_X_EDX_API_KEY = VALID_API_KEY )
326340 self ._verify_response (response , expect_code , expect_data )
327341
328342 @ddt .data (
329343 ({'username' : [ALICE_USERNAME , STAFF_USERNAME ]}, 200 ,
330344 get_mapping_data_by_usernames ([ALICE_USERNAME , STAFF_USERNAME ])),
345+ ({'username' : [ALICE_USERNAME , STAFF_USERNAME ], 'remote_id_field_name' : 'external_user_id' }, 200 ,
346+ get_mapping_data_by_usernames ([ALICE_USERNAME , STAFF_USERNAME ], remote_id_field_name = True )),
331347 ({'remote_id' : ['remote_' + ALICE_USERNAME , 'remote_' + STAFF_USERNAME , 'remote_' + CARL_USERNAME ]}, 200 ,
332348 get_mapping_data_by_usernames ([ALICE_USERNAME , STAFF_USERNAME ])),
349+ ({'remote_id' : ['remote_' + ALICE_USERNAME , 'remote_' + STAFF_USERNAME , 'remote_' + CARL_USERNAME ],
350+ 'remote_id_field_name' : 'external_user_id' }, 200 ,
351+ get_mapping_data_by_usernames ([ALICE_USERNAME , STAFF_USERNAME ], remote_id_field_name = True )),
333352 ({'username' : [ALICE_USERNAME , CARL_USERNAME , STAFF_USERNAME ]}, 200 ,
334353 get_mapping_data_by_usernames ([ALICE_USERNAME , STAFF_USERNAME ])),
335354 ({'username' : [ALICE_USERNAME ], 'remote_id' : ['remote_' + STAFF_USERNAME ]}, 200 ,
336355 get_mapping_data_by_usernames ([ALICE_USERNAME , STAFF_USERNAME ])),
356+ ({'username' : [ALICE_USERNAME ], 'remote_id' : ['remote_' + STAFF_USERNAME ],
357+ 'remote_id_field_name' : 'external_user_id' }, 200 ,
358+ get_mapping_data_by_usernames ([ALICE_USERNAME , STAFF_USERNAME ], remote_id_field_name = True )),
337359 )
338360 @ddt .unpack
339361 def test_user_mappings_with_query_params_multi_value_key (self , query_params , expect_code , expect_data ):
@@ -345,6 +367,8 @@ def test_user_mappings_with_query_params_multi_value_key(self, query_params, exp
345367 for attr in ['username' , 'remote_id' ]:
346368 if attr in query_params :
347369 params .setlist (attr , query_params [attr ])
370+ if 'remote_id_field_name' in query_params :
371+ params ['remote_id_field_name' ] = query_params ['remote_id_field_name' ]
348372 url = f"{ base_url } ?{ params .urlencode ()} "
349373 response = self .client .get (url , HTTP_X_EDX_API_KEY = VALID_API_KEY )
350374 self ._verify_response (response , expect_code , expect_data )
0 commit comments