Skip to content

Commit 7112bf5

Browse files
committed
test: update retirement tests after removing obsolete API methods
1 parent ec29480 commit 7112bf5

3 files changed

Lines changed: 5 additions & 172 deletions

File tree

scripts/user_retirement/tests/retirement_helpers.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ def flatten_partner_list(partner_list):
5353
return [partner for sublist in partner_list for partner in sublist]
5454

5555

56-
def fake_config_file(f, orgs=None, fetch_ecom_segment_id=False):
56+
def fake_config_file(f, orgs=None):
5757
"""
5858
Create a config file for a single test. Combined with CliRunner.isolated_filesystem() to
5959
ensure the file lifetime is limited to the test. See _call_script for usage.
@@ -85,9 +85,6 @@ def fake_config_file(f, orgs=None, fetch_ecom_segment_id=False):
8585
'segment_auth_token': 'fakeauthtoken',
8686
}
8787

88-
if fetch_ecom_segment_id:
89-
config['fetch_ecommerce_segment_id'] = True
90-
9188
yaml.safe_dump(config, f)
9289

9390

scripts/user_retirement/tests/test_retire_one_learner.py

Lines changed: 4 additions & 118 deletions
Original file line numberDiff line numberDiff line change
@@ -19,23 +19,22 @@
1919
from 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):
4847
def 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

scripts/user_retirement/tests/utils/test_edx_api.py

Lines changed: 0 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -351,39 +351,6 @@ def tearDown(self):
351351
super().tearDown()
352352
responses.reset()
353353

354-
@patch.object(edx_api.EcommerceApi, 'retire_learner')
355-
def test_retirement_partner_report(self, mock_method):
356-
json_data = {
357-
'username': FAKE_ORIGINAL_USERNAME,
358-
}
359-
responses.add(
360-
POST,
361-
urljoin(self.lms_base_url, 'api/v2/user/retire/'),
362-
match=[matchers.json_params_matcher(json_data)]
363-
)
364-
self.ecommerce_api.retire_learner(
365-
learner=get_fake_user_retirement(original_username=FAKE_ORIGINAL_USERNAME)
366-
)
367-
mock_method.assert_called_once_with(
368-
learner=get_fake_user_retirement(original_username=FAKE_ORIGINAL_USERNAME)
369-
)
370-
371-
@patch.object(edx_api.EcommerceApi, 'retire_learner')
372-
def get_tracking_key(self, mock_method):
373-
original_username = {
374-
'original_username': get_fake_user_retirement(original_username=FAKE_ORIGINAL_USERNAME)
375-
}
376-
responses.add(
377-
GET,
378-
urljoin(self.lms_base_url, f"api/v2/retirement/tracking_id/{original_username}/"),
379-
)
380-
self.ecommerce_api.get_tracking_key(
381-
learner=get_fake_user_retirement(original_username=FAKE_ORIGINAL_USERNAME)
382-
)
383-
mock_method.assert_called_once_with(
384-
learner=get_fake_user_retirement(original_username=FAKE_ORIGINAL_USERNAME)
385-
)
386-
387354
@patch.object(edx_api.EcommerceApi, 'replace_usernames')
388355
def test_replace_usernames(self, mock_method):
389356
json_data = {
@@ -424,23 +391,6 @@ def tearDown(self):
424391
super().tearDown()
425392
responses.reset()
426393

427-
@patch.object(edx_api.CredentialsApi, 'retire_learner')
428-
def test_retire_learner(self, mock_method):
429-
json_data = {
430-
'username': FAKE_ORIGINAL_USERNAME
431-
}
432-
responses.add(
433-
POST,
434-
urljoin(self.credentials_base_url, 'user/retire/'),
435-
match=[matchers.json_params_matcher(json_data)]
436-
)
437-
self.credentials_api.retire_learner(
438-
learner=get_fake_user_retirement(original_username=FAKE_ORIGINAL_USERNAME)
439-
)
440-
mock_method.assert_called_once_with(
441-
learner=get_fake_user_retirement(original_username=FAKE_ORIGINAL_USERNAME)
442-
)
443-
444394
@patch.object(edx_api.CredentialsApi, 'replace_usernames')
445395
def test_replace_usernames(self, mock_method):
446396
json_data = {

0 commit comments

Comments
 (0)