コード例 #1
0
def decline_worklist_item():
    try:
        session['search_params'] = None
        staff_id = _get_user_name()
        item_id = request.form['item_id']
        if not check_correct_lock_user(item_id, session['username']):
            flash('You are not the current locked user of Worklist item {}'.
                  format(item_id))
            return redirect(url_for('verification.get_worklist'))
        reason = request.form['decline_reason']
        advice = request.form['decline_advice']
        current_app.logger.info('User {} declining worklist item {}...'.format(
            staff_id, item_id))
        verification_api = VerificationAPI()
        verification_api.decline_worklist_item(item_id, staff_id, reason,
                                               advice)
    except ApplicationError:
        raise ApplicationError(
            'Something went wrong when declining the application. '
            'Please raise an incident quoting the following id: {}'.format(
                g.trace_id))
    else:
        current_app.logger.info(
            'Worklist item {} was declined'.format(item_id))
        flash('Application was declined')
        return redirect(url_for('verification.get_worklist'))
    def test_decline_worklist_item_http_error(self, mock_post):
        mock_post.side_effect = HTTPError(self.error_msg)

        with self.assertRaises(ApplicationError) as context:
            verification_api = VerificationAPI()
            verification_api.decline_worklist_item(self.item_id, self.staff_id,
                                                   self.decline_reason,
                                                   self.decline_advice)

        self.assertEqual(
            context.exception.message,
            'Received the following response from verification_api: {}'.format(
                self.error_msg))
        self.assertEqual(context.exception.code, 'E401')
        self.assertEqual(context.exception.http_code, 500)
    def test_decline_worklist_item_timeout_error(self, mock_post):
        mock_post.side_effect = Timeout(self.error_msg)

        with self.assertRaises(ApplicationError) as context:
            verification_api = VerificationAPI()
            verification_api.decline_worklist_item(self.item_id, self.staff_id,
                                                   self.decline_reason,
                                                   self.decline_advice)

        self.assertEqual(
            context.exception.message,
            'Connection to verification_api timed out: {}'.format(
                self.error_msg))
        self.assertEqual(context.exception.code, 'E403')
        self.assertEqual(context.exception.http_code, 500)
    def test_decline_worklist_item(self, mock_post):
        mock_post.return_value.json.return_value = {
            'case_id': self.item_id,
            'staff_id': self.staff_id,
            'status_updated': True,
            'reason': self.decline_reason,
            'advice': self.decline_advice
        }
        mock_post.return_value.status_code = 201

        verification_api = VerificationAPI()
        response = verification_api.decline_worklist_item(
            self.item_id, self.staff_id, self.decline_reason,
            self.decline_advice)

        self.assertEqual(
            response, {
                'case_id': self.item_id,
                'staff_id': self.staff_id,
                'status_updated': True,
                'reason': self.decline_reason,
                'advice': self.decline_advice
            })