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))
Example #2
0
    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)
Example #5
0
    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)
Example #9
0
    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)
Example #19
0
    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))
Example #20
0
    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)
Example #23
0
    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))
Example #24
0
    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)
Example #26
0
    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)