def test_approve_with_timeout(self, mock_post): mock_post.side_effect = Timeout(self.error_msg) with app.app_context() as ac: ac.g.trace_id = None ac.g.requests = requests.Session() with app.test_request_context(): with self.assertRaises(ApplicationError) as context: AccountAPI.approve(self, '1234-567-890') self.assertTrue(ApplicationError in str(context.exception)) self.assertEqual(context.exception.message, 'Connection to account_api timed out: {}'.format(self.error_msg)) self.assertEqual(context.exception.code, 'E503') self.assertEqual(context.exception.http_code, 500)
def test_get_connection_error(self, mock_get): with app.app_context() as ac: ac.g.trace_id = None ac.g.requests = requests.Session() with app.test_request_context(): mock_get.side_effect = ConnectionError(self.error_msg) with self.assertRaises(ApplicationError) as context: AccountAPI.get(self, '1234-567-890') self.assertEqual(context.exception.message, 'Encountered an error connecting to account_api: {}'.format(self.error_msg)) self.assertEqual(context.exception.code, 'E502') self.assertEqual(context.exception.http_code, 500)
def test_get_http_error(self, mock_get): with app.app_context() as ac: ac.g.trace_id = None ac.g.requests = requests.Session() with app.test_request_context(): mock_get.side_effect = HTTPError(self.error_msg) with self.assertRaises(ApplicationError) as context: AccountAPI.get(self, '1234-567-890') self.assertEqual(context.exception.message, 'Received the following response from account_api: {}'.format(self.error_msg)) self.assertEqual(context.exception.code, 'E501') self.assertEqual(context.exception.http_code, 500)
def test_approve(self, mock_post): with app.app_context() as ac: ac.g.trace_id = None ac.g.requests = requests.Session() with app.test_request_context(): mock_post.return_value.text = 'Success' mock_post.return_value.status_code = 200 response = AccountAPI.approve(self, '1234-567-890') assert response == {'message': 'approved'}
def test_update_groups(self, mock_patch): with app.app_context() as ac: ac.g.trace_id = None ac.g.requests = requests.Session() with app.test_request_context(): mock_patch.return_value.text = 'Success' mock_patch.return_value.status_code = 200 response = AccountAPI.update_groups(self, '1234-567-890', {"nps": True}) self.assertEqual(response, {'message': 'groups updated'})
def test_get(self, mock_get): with app.app_context() as ac: ac.g.trace_id = None ac.g.requests = requests.Session() with app.test_request_context(): mock_get.return_value.json.return_value = 'Success' mock_get.return_value.status_code = 200 response = AccountAPI.get(self, '1234-567-890') self.assertEqual(response, 'Success')
def test_close(self, mock_post): with app.app_context() as ac: ac.g.trace_id = None ac.g.requests = requests.Session() with app.test_request_context(): mock_post.return_value.text = 'Success' mock_post.return_value.status_code = 200 response = AccountAPI.close(self, '1234-567-890', '0987-654-321', 'customer') assert response == {'message': 'closed'}
def test_decline(self, mock_post): with app.app_context() as ac: ac.g.trace_id = None ac.g.requests = requests.Session() with app.test_request_context(): mock_post.return_value.text = 'Success' mock_post.return_value.status_code = 200 response = AccountAPI.decline(self, '1234-567-890', 'Failed company checks', 'Reapply', '1') assert response == {'message': 'declined'}
def get_groups(case_id): log.info("Getting list of groups from account_api") case = Case.get_case_by_id(case_id) if case is None: raise ApplicationError(*errors.get('verification_api', 'CASE_NOT_FOUND', filler=case_id), http_code=404) ldap_details = AccountAPI().get(case.ldap_id) if isinstance(ldap_details['groups'], str): group_dns = [ldap_details['groups']] else: group_dns = ldap_details['groups'] groups = [group.split(',')[0][3:] for group in group_dns] return groups, case
def dps_action(action, case_id, data): case = Case.get_case_by_id(case_id) if not case: raise ApplicationError(*errors.get('verification_api', 'CASE_NOT_FOUND', filler=case_id), http_code=404) if not _can_perform_action(case, data['staff_id']): error_msg = 'Could not perform action on case as it is locked to another user' raise ApplicationError(*errors.get('verification_api', 'LOCKING_ERROR', filler=error_msg), http_code=403) account_api = AccountAPI() if action == 'Approve': account_api.approve(case.ldap_id) _status_update(case, 'Approved', data) elif action == 'Decline': # need to make the first letter in the reason lowercase due to the layout of the template reason = data['reason'][0].lower() + data['reason'][1:] account_api.decline(case.ldap_id, reason, data['advice'], case.user_id) _status_update(case, 'Declined', data) # add the decline reason as a notepad entry note_text = 'Declined: Reason - {}; Next Steps - {}'.format( data['reason'], data['advice']) _add_note(case_id, data['staff_id'], note_text) else: