Exemple #1
0
def close_account(case_id):
    try:
        closure_data = request.get_json(force=True)
        app.logger.info("Starting to close account {}".format(case_id))
        result = service.close_account(case_id, closure_data)
        closure_text = 'Account closure requested by: {}, for reason: {}'.format(
            closure_data['requester'], closure_data['close_detail'])
        service.insert_note(case_id, {
            'staff_id': closure_data['staff_id'],
            'note_text': closure_text
        })

        user_details = service.get_pending_by_id(case_id)
        user_details = {
            key: '' if value is None else value
            for (key, value) in user_details.items()
        }
        closure_details = service.get_closure_by_id(case_id)
        user_details.update(closure_details)

        insert_metric_event('account closed', user_details)

        return jsonify(result), 200
    except ApplicationError as error:
        error_msg = 'Failed to close account {} - {}'.format(
            case_id, error.message)
        app.logger.error(error_msg)

        return jsonify(error=error_msg), error.http_code
 def test_insert_note(self, mock_lock, mock_note, mock_case, *_):
     mock_case.get_case_by_id.return_value = MagicMock()
     mock_lock.return_value = True
     service.insert_note('1', {
         'staff_id': 'LRTM101',
         'note_text': 'Test note'
     })
     mock_note.assert_called_once_with('1', 'LRTM101', 'Test note')
     mock_case.get_case_by_id.assert_called_once()
    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))
Exemple #4
0
def insert_notes(case_id):
    try:
        note_details = request.get_json(force=True)
        app.logger.info("Inserting note for case {}".format(case_id))
        service.insert_note(case_id, note_details)
        message = 'Note added for case {}'.format(case_id)
        return jsonify(message=message), 201
    except ApplicationError as error:
        error_msg = 'Failed to insert note - {}'.format(error.message)
        app.logger.error(error_msg)
        return jsonify(error=error_msg), error.http_code
    def test_add_note_case_not_found(self, mock_case, *_):
        mock_case.get_case_by_id.return_value = None

        with self.assertRaises(ApplicationError) as context:
            service.insert_note('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_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_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)