def test_insert_note_sql_error(self, mock_case, *_): mock_case.get_case_by_id.side_effect = self.error with self.assertRaises(ApplicationError) as context: service.insert_note('1', {}) expected_err = ('verification_api', 'SQLALCHEMY_ERROR') self.assertEqual(context.exception.message, errors.get_message(*expected_err, filler=self.error)) self.assertEqual(context.exception.code, errors.get_code(*expected_err))
def test_get_api_datasets_not_found(self, mock_auth, mock_ulapd_api): error = ('ulapd_ui', 'NO_DATASETS_FOUND') instance = mock_ulapd_api.return_value instance.get_datasets.return_value = [] with self.assertRaises(ApplicationError) as cm: get_api_datasets() self.assertEqual(cm.exception.message, errors.get_message(*error)) self.assertEqual(cm.exception.code, errors.get_code(*error))
def test_insert_case_error(self, mock_case, *_): error = ('verification_api', 'VERIFICATION_ERROR') mock_case.side_effect = ApplicationError( *errors.get(*error, filler='TEST ERR')) with self.assertRaises(ApplicationError) as context: service.insert_case({'foo': 'bar'}) self.assertEqual(context.exception.message, errors.get_message(*error, filler='TEST ERR')) self.assertEqual(context.exception.code, errors.get_code(*error))
def test_get_pending_by_id_no_row(self, mock_case, *_): mock_case.get_case_by_id.return_value = None with self.assertRaises(ApplicationError) as context: service.get_pending_by_id('1') expected_err = ('verification_api', 'CASE_NOT_FOUND') expected_err_message = errors.get_message(*expected_err, filler='1') expected_err_code = errors.get_code(*expected_err) self.assertEqual(context.exception.message, expected_err_message) self.assertEqual(context.exception.code, expected_err_code)
def test_get_dataset_history_no_row(self, mock_dataset, *_): mock_dataset.get_dataset_by_name.return_value = None with self.assertRaises(ApplicationError) as context: service.get_dataset_history('ccod') expected_err = ('ulapd_api', 'DATASET_NOT_FOUND') expected_err_message = errors.get_message(*expected_err, filler='ccod') expected_err_code = errors.get_code(*expected_err) self.assertEqual(context.exception.message, expected_err_message) self.assertEqual(context.exception.code, expected_err_code)
def test_decline_reasons_error(self, mock_extract, *_): error = ('verification_api', 'VERIFICATION_ERROR') mock_extract.side_effect = ApplicationError( *errors.get(*error, filler='TEST ERR')) with self.assertRaises(ApplicationError) as context: service.get_decline_reasons() self.assertEqual(context.exception.message, errors.get_message(*error, filler='TEST ERR')) self.assertEqual(context.exception.code, errors.get_code(*error))
def test_manage_case_lock_case_not_found(self, mock_case, *_): mock_case.get_case_by_id.return_value = None test_case_id = '1' with self.assertRaises(ApplicationError) as context: service.manage_case_lock(test_case_id) expected_err = ('verification_api', 'CASE_NOT_FOUND') expected_err_message = errors.get_message(*expected_err, filler='1') expected_err_code = errors.get_code(*expected_err) self.assertEqual(context.exception.message, expected_err_message) self.assertEqual(context.exception.code, expected_err_code)
def test_dps_action_no_row(self, mock_case, *_): mock_case.get_case_by_id.return_value = None with self.assertRaises(ApplicationError) as context: service.dps_action('Approve', '1', {'staff_id': 'LRTM101'}) expected_err = ('verification_api', 'CASE_NOT_FOUND') expected_err_message = errors.get_message(*expected_err, filler='1') expected_err_code = errors.get_code(*expected_err) self.assertEqual(context.exception.message, expected_err_message) self.assertEqual(context.exception.code, expected_err_code)
def test_get_api_dataset_by_name_not_found(self, mock_auth, mock_ulapd_api): error = ('ulapd_ui', 'DATASET_NOT_FOUND') instance = mock_ulapd_api.return_value instance.get_dataset_by_name.return_value = None with self.assertRaises(ApplicationError) as cm: get_api_dataset_by_name('abc') self.assertEqual(cm.exception.message, errors.get_message(*error, filler='abc')) self.assertEqual(cm.exception.code, errors.get_code(*error))
def test_dps_action_error(self, mock_account, mock_case, *_): error = ('verification_api', 'VERIFICATION_ERROR') mock_account.side_effect = ApplicationError( *errors.get(*error, filler='TEST ERROR')) mock_case.get_case_by_id.return_value = _generate_test_profile() with self.assertRaises(ApplicationError) as context: service.dps_action('Approve', '1', {'staff_id': 'LRTM101'}) expected_err = errors.get_message(*error, filler='TEST ERROR') self.assertEqual(context.exception.message, expected_err) self.assertEqual(context.exception.code, errors.get_code(*error))
def test_retrieve_metrics_by_id_no_row(self, mock_extract, *_): mock_extract.return_value = [] with self.assertRaises(ApplicationError) as context: service.retrieve_metrics_by_id('123-123-123') expected_err = ('dps_metric_api', 'CASE_NOT_FOUND') expected_err_message = errors.get_message(*expected_err, filler='123-123-123') expected_err_code = errors.get_code(*expected_err) self.assertEqual(context.exception.message, expected_err_message) self.assertEqual(context.exception.code, expected_err_code)
def test_get_pending_error(self, mock_extract, mock_case, *_): error = ('verification_api', 'VERIFICATION_ERROR') mock_extract.side_effect = ApplicationError( *errors.get(*error, filler='TEST ERR')) with self.assertRaises(ApplicationError) as context: mock_case.get_pending.return_value = _generate_test_profile() service.get_pending() self.assertEqual(context.exception.message, errors.get_message(*error, filler='TEST ERR')) self.assertEqual(context.exception.code, errors.get_code(*error))
def test_get_pending_by_id_sql_error(self, mock_case, *_): with self.assertRaises(ApplicationError) as context: mock_case.get_case_by_id.side_effect = self.error service.get_pending_by_id('1') self.assertEqual( context.exception.message, errors.get_message("verification_api", "SQLALCHEMY_ERROR", filler=self.error)) self.assertEqual( errors.get_code("verification_api", "SQLALCHEMY_ERROR"), context.exception.code)
def test_update_user_details_sql_error(self, mock_case, *_): with self.assertRaises(ApplicationError) as context: mock_case.get_case_by_id.side_effect = self.error service.update_user_details(1, {'foo': 'bar'}) self.assertEqual( context.exception.message, errors.get_message("verification_api", "SQLALCHEMY_ERROR", filler=self.error)) self.assertEqual( errors.get_code("verification_api", "SQLALCHEMY_ERROR"), context.exception.code)
def test_dps_action_sql_error(self, mock_case, *_): with self.assertRaises(ApplicationError) as context: mock_case.get_case_by_id.side_effect = self.error service.dps_action('Approve', '1', {'staff_id': 'LRTM101'}) self.assertEqual( context.exception.message, errors.get_message("verification_api", "SQLALCHEMY_ERROR", filler=self.error)) self.assertEqual( errors.get_code("verification_api", "SQLALCHEMY_ERROR"), context.exception.code)
def test_decline_reasons_sql_error(self, mock_decline, mock_extract, *_): with self.assertRaises(ApplicationError) as context: mock_extract.return_value = self.decline_data mock_decline.side_effect = self.error service.get_decline_reasons() self.assertEqual( context.exception.message, errors.get_message("verification_api", "SQLALCHEMY_ERROR", filler=self.error)) self.assertEqual( errors.get_code("verification_api", "SQLALCHEMY_ERROR"), context.exception.code)
def test_close_account_invalid_status(self, mock_case, *_): mock_case.get_case_by_id.return_value = _generate_test_profile( status='Pending') with self.assertRaises(ApplicationError) as context: service.close_account('1', {}) expected_err = ('verification_api', 'VERIFICATION_ERROR') expected_err_message = 'Account closure only permitted on active user accounts' expected_err_message = errors.get_message(*expected_err, filler=expected_err_message) expected_err_code = errors.get_code(*expected_err) self.assertEqual(context.exception.message, expected_err_message) self.assertEqual(context.exception.code, expected_err_code)
def test_retrieve_all_metrics_sql_error(self, mock_extract, mock_activity, *_): mock_extract.return_value = [{'foo': 'bar'}] with self.assertRaises(ApplicationError) as context: mock_activity.select_all.side_effect = self.error service.retrieve_all_metrics() self.assertEqual( context.exception.message, errors.get_message("dps_metric_api", "SQLALCHEMY_ERROR", filler=self.error)) self.assertEqual(errors.get_code("dps_metric_api", "SQLALCHEMY_ERROR"), context.exception.code)
def test_authenticate_fail(self, mock_request): error = ('ulapd_ui', 'API_KEY_ERROR') m = Mock() m.get_user_details.side_effect = ApplicationError('Test') mock_request.headers = {} mock_request.headers['Authorization'] = '1234' with self.assertRaises(ApplicationError) as cm: _authenticate(m) self.assertEqual(cm.exception.message, errors.get_message(*error, filler='1234')) self.assertEqual(cm.exception.code, errors.get_code(*error))
def test_get_api_download_link_not_agreed(self, mock_auth, mock_ulapd_api): error = ('ulapd_ui', 'NO_LICENCE_SIGNED') instance = mock_ulapd_api.return_value instance.get_dataset_by_name.return_value = data.get_dataset_by_name[ 'ccod'] mock_auth.return_value = data.user_details_no_agreements with self.assertRaises(ApplicationError) as cm: get_api_download_link('ccod', 'CCOD_FULL.CSV') self.assertEqual(cm.exception.message, errors.get_message(*error, filler='ccod')) self.assertEqual(cm.exception.code, errors.get_code(*error))
def test_timeout_error(self, mock_get): error = ('ulapd_ui', 'API_TIMEOUT') response = Mock() response.status_code = 500 response.raise_for_status.side_effect = Timeout(self.error_msg) mock_get.return_value = response with self.assertRaises(ApplicationError) as cm: ulapd_api = UlapdAPI() ulapd_api.get_datasets() self.assertEqual(cm.exception.message, errors.get_message(*error, filler=self.error_msg)) self.assertEqual(cm.exception.code, errors.get_code(*error)) self.assertEqual(cm.exception.http_code, 500)
def test_dps_action_approve_locked(self, mock_lock, mock_case, *_): mock_lock.return_value = False mock_case.return_value = _generate_test_profile() data = {'staff_id': 'LRTM101'} with self.assertRaises(ApplicationError) as context: service.dps_action('Approve', '1', data) expected_err = ('verification_api', 'LOCKING_ERROR') expected_err_message = 'Could not perform action on case as it is locked to another user' expected_err_message = errors.get_message(*expected_err, filler=expected_err_message) expected_err_code = errors.get_code(*expected_err) self.assertEqual(context.exception.message, expected_err_message) self.assertEqual(context.exception.code, expected_err_code)
def test_get_api_download_link_no_resource(self, mock_curr_app, mock_auth, mock_ulapd_api): error = ('ulapd_ui', 'FILE_DOES_NOT_EXIST') instance = mock_ulapd_api.return_value instance.get_dataset_by_name.return_value = data.get_dataset_by_name[ 'ocod'] mock_auth.return_value = data.user_details_with_agreements with self.assertRaises(ApplicationError) as cm: get_api_download_link('ocod', 'blah') self.assertEqual(cm.exception.message, errors.get_message(*error, filler='blah')) self.assertEqual(cm.exception.code, errors.get_code(*error))
def test_get_api_download_link_not_agreed_private(self, mock_auth, mock_ulapd_api): error = ('ulapd_ui', 'NO_DATASET_ACCESS') instance = mock_ulapd_api.return_value instance.get_dataset_by_name.return_value = data.get_dataset_by_name[ 'nps'] mock_auth.return_value = data.user_details_no_agreements with self.assertRaises(ApplicationError) as cm: get_api_download_link('nps', 'NPS_FULL.CSV') self.assertEqual(cm.exception.message, errors.get_message(*error, filler='nps')) self.assertEqual(cm.exception.code, errors.get_code(*error))
def test_dps_action_invalid_action(self, mock_lock, mock_case, *_): mock_lock.return_value = True mock_case.return_value = _generate_test_profile() data = {'staff_id': 'LRTM101', 'reason': 'Company Failed'} with self.assertRaises(ApplicationError) as context: service.dps_action('Obliviate', '1', data) expected_err = ('verification_api', 'VERIFICATION_ERROR') expected_err_message = errors.get_message( *expected_err, filler='Invalid action Obliviate') expected_err_code = errors.get_code(*expected_err) self.assertEqual(context.exception.message, expected_err_message) self.assertEqual(context.exception.code, expected_err_code)
def test_get_api_download_link_api_error(self, mock_curr_app, mock_auth, mock_ulapd_api): error = ('ulapd_ui', 'DATASET_NOT_FOUND') instance = mock_ulapd_api.return_value instance.get_dataset_by_name.return_value = data.get_dataset_by_name[ 'ocod'] instance.get_download_link.return_value = None mock_auth.return_value = data.user_details_with_agreements with self.assertRaises(ApplicationError) as cm: get_api_download_link('ocod', 'OCOD_FULL.CSV') self.assertEqual(cm.exception.message, errors.get_message(*error, filler='ocod')) self.assertEqual(cm.exception.code, errors.get_code(*error))
def test_manage_case_lock_invalid_status(self, mock_case, *_): mocked_case = MagicMock() mocked_case.status = 'Approved' mock_case.get_case_by_id.return_value = mocked_case test_case_id = '1' with self.assertRaises(ApplicationError) as context: service.manage_case_lock(test_case_id) expected_err = ('verification_api', 'LOCKING_ERROR') expected_err_message = errors.get_message( *expected_err, filler='Cannot lock resolved case') expected_err_code = errors.get_code(*expected_err) self.assertEqual(context.exception.message, expected_err_message) self.assertEqual(context.exception.code, expected_err_code)
def test_add_note_case_locked(self, mock_lock, mock_case, *_): mock_lock.return_value = False mock_case.get_case_by_id.return_value = _generate_test_profile() test_note = {'staff_id': 'SOMEONE_ELSE'} with self.assertRaises(ApplicationError) as context: service.insert_note('1', test_note) expected_err = ('verification_api', 'LOCKING_ERROR') expected_err_message = 'Could not add note to case as it is locked to another user' expected_err_message = errors.get_message(*expected_err, filler=expected_err_message) expected_err_code = errors.get_code(*expected_err) mock_lock.assert_called_once() self.assertEqual(context.exception.message, expected_err_message) self.assertEqual(context.exception.code, expected_err_code)
def test_insert_note_error(self, mock_lock, *_): test_error = ('verification_api', 'VERIFICATION_ERROR') mock_lock.side_effect = ApplicationError( *errors.get(*test_error, filler='TEST ERROR')) with self.assertRaises(ApplicationError) as context: service.insert_note('1', { 'staff_id': 'LRTM101', 'note_text': 'Test note' }) expected_err_message = errors.get_message(*test_error, filler='TEST ERROR') expected_err_code = errors.get_code(*test_error) self.assertEqual(context.exception.message, expected_err_message) self.assertEqual(context.exception.code, expected_err_code)
def test_update_dataset_access_connection_error(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.side_effect = ConnectionError(self.error_msg) with self.assertRaises(ApplicationError) as context: UlapdAPI.update_dataset_access(self, {}) expected_err = ('verification_api', 'ULAPD_API_CONN_ERROR') expected_err_message = errors.get_message( *expected_err, filler=self.error_msg) expected_err_code = errors.get_code(*expected_err) mock_post.assert_called_once() self.assertEqual(context.exception.message, expected_err_message) self.assertEqual(context.exception.code, expected_err_code)