コード例 #1
0
    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))
コード例 #2
0
    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)
コード例 #3
0
    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)
コード例 #4
0
    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)
コード例 #5
0
    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)
コード例 #6
0
    def test_dps_action_approve(self, mock_lock, mock_case, *_):
        mock_lock.return_value = True
        mock_case.return_value = _generate_test_profile()
        data = {'staff_id': 'LRTM101'}

        result = service.dps_action('Approve', '1', data)

        expected_result = {
            'case_id': '1',
            'staff_id': 'LRTM101',
            'status_updated': True
        }
        self.assertEqual(result, expected_result)
コード例 #7
0
    def test_dps_action_decline(self, mock_lock, mock_case, *_):
        mock_lock.return_value = True
        mock_case.return_value = _generate_test_profile()
        data = {
            'staff_id': 'LRTM101',
            'reason': 'Company Failed',
            'advice': 'Reapply'
        }

        result = service.dps_action('Decline', '1', data)

        expected_result = {
            'case_id': '1',
            'staff_id': 'LRTM101',
            'reason': 'Company Failed',
            'advice': 'Reapply',
            'status_updated': True
        }
        self.assertDictEqual(result, expected_result)
コード例 #8
0
def decline_case(case_id):
    try:
        decline = request.get_json(force=True)
        app.logger.info("Declining case {}, by: {}".format(
            case_id, decline['staff_id']))
        result = service.dps_action('Decline', case_id, decline)
        if not result['status_updated']:
            app.logger.error('Failed to approve case {}'.format(case_id))
            return jsonify(result), 500

        user_details = service.get_pending_by_id(case_id)
        user_details['decline_reason'] = decline['reason']

        return jsonify(result), 200

    except ApplicationError as error:
        error_msg = 'Failed to decline case - {}'.format(error.message)
        app.logger.error(error_msg)

        return jsonify(error=error_msg), error.http_code
コード例 #9
0
def approve_case(case_id):
    try:
        approval = request.get_json(force=True)
        app.logger.info('Approving case {}, by: {}'.format(
            case_id, approval['staff_id']))
        result = service.dps_action('Approve', case_id, approval)
        if not result['status_updated']:
            app.logger.error('Failed to approve case {}'.format(case_id))
            return jsonify(result), 500

        user_details = service.get_pending_by_id(case_id)

        insert_metric_event('dst action approved', user_details)

        return jsonify(result), 200

    except ApplicationError as error:
        error_msg = 'Failed to approve case - {}'.format(error.message)
        app.logger.error(error_msg)

        return jsonify(error=error_msg), error.http_code