1919from scripts .user_retirement .utils .exception import HttpDoesNotExistException
2020
2121
22- def _call_script (username , fetch_ecom_segment_id = False ):
22+ def _call_script (username ):
2323 """
2424 Call the retired learner script with the given username and a generic, temporary config file.
2525 Returns the CliRunner.invoke results
2626 """
2727 runner = CliRunner ()
2828 with runner .isolated_filesystem ():
2929 with open ('test_config.yml' , 'w' ) as f :
30- fake_config_file (f , fetch_ecom_segment_id = fetch_ecom_segment_id )
30+ fake_config_file (f )
3131 result = runner .invoke (retire_learner , args = ['--username' , username , '--config_file' , 'test_config.yml' ])
3232 print (result )
3333 print (result .output )
3434 return result
3535
3636
3737@patch ('scripts.user_retirement.utils.edx_api.BaseApiClient.get_access_token' )
38- @patch ('scripts.user_retirement.utils.edx_api.EcommerceApi.get_tracking_key' )
3938@patch .multiple (
4039 'scripts.user_retirement.utils.edx_api.LmsApi' ,
4140 get_learner_retirement_state = DEFAULT ,
@@ -48,7 +47,7 @@ def _call_script(username, fetch_ecom_segment_id=False):
4847def test_successful_retirement (* args , ** kwargs ):
4948 username = 'test_username'
5049
51- mock_get_access_token = args [1 ]
50+ mock_get_access_token = args [0 ]
5251 mock_get_retirement_state = kwargs ['get_learner_retirement_state' ]
5352 mock_update_learner_state = kwargs ['update_learner_retirement_state' ]
5453 mock_retire_forum = kwargs ['retirement_retire_forum' ]
@@ -59,7 +58,7 @@ def test_successful_retirement(*args, **kwargs):
5958 mock_get_access_token .return_value = ('THIS_IS_A_JWT' , None )
6059 mock_get_retirement_state .return_value = get_fake_user_retirement (original_username = username )
6160
62- result = _call_script (username , fetch_ecom_segment_id = True )
61+ result = _call_script (username )
6362
6463 # Called once per API we instantiate (LMS, ECommerce, Credentials)
6564 assert mock_get_access_token .call_count == 3
@@ -297,116 +296,3 @@ def test_skipping_states(*args, **kwargs):
297296 assert required_output in result .output
298297
299298
300- @patch ('scripts.user_retirement.utils.edx_api.BaseApiClient.get_access_token' )
301- @patch ('scripts.user_retirement.utils.edx_api.EcommerceApi.get_tracking_key' )
302- @patch .multiple (
303- 'scripts.user_retirement.utils.edx_api.LmsApi' ,
304- get_learner_retirement_state = DEFAULT ,
305- update_learner_retirement_state = DEFAULT ,
306- retirement_retire_forum = DEFAULT ,
307- retirement_retire_mailings = DEFAULT ,
308- retirement_unenroll = DEFAULT ,
309- retirement_lms_retire = DEFAULT
310- )
311- def test_get_segment_id_success (* args , ** kwargs ):
312- username = 'test_username'
313-
314- mock_get_tracking_key = args [0 ]
315- mock_get_access_token = args [1 ]
316- mock_get_retirement_state = kwargs ['get_learner_retirement_state' ]
317- mock_retirement_retire_forum = kwargs ['retirement_retire_forum' ]
318-
319- mock_get_access_token .return_value = ('THIS_IS_A_JWT' , None )
320- mock_get_tracking_key .return_value = {'id' : 1 , 'ecommerce_tracking_id' : 'ecommerce-1' }
321-
322- # The learner starts off with these values, 'ecommerce_segment_id' is added during script
323- # startup
324- mock_get_retirement_state .return_value = get_fake_user_retirement (
325- original_username = username ,
326- )
327-
328- _call_script (username , fetch_ecom_segment_id = True )
329- mock_get_tracking_key .assert_called_once_with (mock_get_retirement_state .return_value )
330-
331- config_after_get_segment_id = mock_get_retirement_state .return_value
332- config_after_get_segment_id ['ecommerce_segment_id' ] = 'ecommerce-1'
333-
334- mock_retirement_retire_forum .assert_called_once_with (config_after_get_segment_id )
335-
336-
337- @patch ('scripts.user_retirement.utils.edx_api.BaseApiClient.get_access_token' )
338- @patch ('scripts.user_retirement.utils.edx_api.EcommerceApi.get_tracking_key' )
339- @patch .multiple (
340- 'scripts.user_retirement.utils.edx_api.LmsApi' ,
341- get_learner_retirement_state = DEFAULT ,
342- update_learner_retirement_state = DEFAULT ,
343- retirement_retire_forum = DEFAULT ,
344- retirement_retire_mailings = DEFAULT ,
345- retirement_unenroll = DEFAULT ,
346- retirement_lms_retire = DEFAULT
347- )
348- def test_get_segment_id_not_found (* args , ** kwargs ):
349- username = 'test_username'
350-
351- mock_get_tracking_key = args [0 ]
352- mock_get_access_token = args [1 ]
353- mock_get_retirement_state = kwargs ['get_learner_retirement_state' ]
354-
355- mock_get_access_token .return_value = ('THIS_IS_A_JWT' , None )
356- mock_get_tracking_key .side_effect = HttpDoesNotExistException ('{} not found' .format (username )) # noqa: UP032
357-
358- mock_get_retirement_state .return_value = get_fake_user_retirement (
359- original_username = username ,
360- )
361-
362- result = _call_script (username , fetch_ecom_segment_id = True )
363- mock_get_tracking_key .assert_called_once_with (mock_get_retirement_state .return_value )
364- assert 'Setting Ecommerce Segment ID to None' in result .output
365-
366- # Reset our call counts for the next test
367- mock_get_access_token .reset_mock ()
368- mock_get_retirement_state .reset_mock ()
369-
370-
371- @patch ('scripts.user_retirement.utils.edx_api.BaseApiClient.get_access_token' )
372- @patch ('scripts.user_retirement.utils.edx_api.EcommerceApi.get_tracking_key' )
373- @patch .multiple (
374- 'scripts.user_retirement.utils.edx_api.LmsApi' ,
375- get_learner_retirement_state = DEFAULT ,
376- update_learner_retirement_state = DEFAULT ,
377- retirement_retire_forum = DEFAULT ,
378- retirement_retire_mailings = DEFAULT ,
379- retirement_unenroll = DEFAULT ,
380- retirement_lms_retire = DEFAULT
381- )
382- def test_get_segment_id_error (* args , ** kwargs ):
383- username = 'test_username'
384-
385- mock_get_tracking_key = args [0 ]
386- mock_get_access_token = args [1 ]
387- mock_get_retirement_state = kwargs ['get_learner_retirement_state' ]
388- mock_update_learner_state = kwargs ['update_learner_retirement_state' ]
389-
390- mock_get_access_token .return_value = ('THIS_IS_A_JWT' , None )
391-
392- test_exception_message = 'Test Exception!'
393- mock_get_tracking_key .side_effect = Exception (test_exception_message )
394-
395- mock_get_retirement_state .return_value = get_fake_user_retirement (
396- original_username = username ,
397- )
398-
399- mock_get_retirement_state .return_value = {
400- 'original_username' : username ,
401- 'current_state' : {
402- 'state_name' : 'PENDING'
403- }
404- }
405-
406- result = _call_script (username , fetch_ecom_segment_id = True )
407- mock_get_tracking_key .assert_called_once_with (mock_get_retirement_state .return_value )
408- mock_update_learner_state .assert_not_called ()
409-
410- assert result .exit_code == ERR_SETUP_FAILED
411- assert 'Unexpected error fetching Ecommerce tracking id!' in result .output
412- assert test_exception_message in result .output
0 commit comments