Example #1
0
 def test_approve_with_timeout(self, mock_post):
     mock_post.side_effect = Timeout(self.error_msg)
     with app.app_context() as ac:
         ac.g.trace_id = None
         ac.g.requests = requests.Session()
         with app.test_request_context():
             with self.assertRaises(ApplicationError) as context:
                 AccountAPI.approve(self, '1234-567-890')
                 self.assertTrue(ApplicationError in str(context.exception))
             self.assertEqual(context.exception.message,
                              'Connection to account_api timed out: {}'.format(self.error_msg))
             self.assertEqual(context.exception.code, 'E503')
             self.assertEqual(context.exception.http_code, 500)
Example #2
0
    def test_get_connection_error(self, mock_get):
        with app.app_context() as ac:
            ac.g.trace_id = None
            ac.g.requests = requests.Session()
            with app.test_request_context():
                mock_get.side_effect = ConnectionError(self.error_msg)

                with self.assertRaises(ApplicationError) as context:
                    AccountAPI.get(self, '1234-567-890')

                self.assertEqual(context.exception.message,
                                 'Encountered an error connecting to account_api: {}'.format(self.error_msg))
                self.assertEqual(context.exception.code, 'E502')
                self.assertEqual(context.exception.http_code, 500)
Example #3
0
    def test_get_http_error(self, mock_get):
        with app.app_context() as ac:
            ac.g.trace_id = None
            ac.g.requests = requests.Session()
            with app.test_request_context():
                mock_get.side_effect = HTTPError(self.error_msg)

                with self.assertRaises(ApplicationError) as context:
                    AccountAPI.get(self, '1234-567-890')

                self.assertEqual(context.exception.message,
                                 'Received the following response from account_api: {}'.format(self.error_msg))
                self.assertEqual(context.exception.code, 'E501')
                self.assertEqual(context.exception.http_code, 500)
Example #4
0
 def test_approve(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.return_value.text = 'Success'
             mock_post.return_value.status_code = 200
             response = AccountAPI.approve(self, '1234-567-890')
             assert response == {'message': 'approved'}
Example #5
0
 def test_update_groups(self, mock_patch):
     with app.app_context() as ac:
         ac.g.trace_id = None
         ac.g.requests = requests.Session()
         with app.test_request_context():
             mock_patch.return_value.text = 'Success'
             mock_patch.return_value.status_code = 200
             response = AccountAPI.update_groups(self, '1234-567-890', {"nps": True})
             self.assertEqual(response, {'message': 'groups updated'})
Example #6
0
 def test_get(self, mock_get):
     with app.app_context() as ac:
         ac.g.trace_id = None
         ac.g.requests = requests.Session()
         with app.test_request_context():
             mock_get.return_value.json.return_value = 'Success'
             mock_get.return_value.status_code = 200
             response = AccountAPI.get(self, '1234-567-890')
             self.assertEqual(response, 'Success')
Example #7
0
 def test_close(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.return_value.text = 'Success'
             mock_post.return_value.status_code = 200
             response = AccountAPI.close(self, '1234-567-890', '0987-654-321', 'customer')
             assert response == {'message': 'closed'}
Example #8
0
 def test_decline(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.return_value.text = 'Success'
             mock_post.return_value.status_code = 200
             response = AccountAPI.decline(self, '1234-567-890', 'Failed company checks', 'Reapply', '1')
             assert response == {'message': 'declined'}
Example #9
0
def get_groups(case_id):
    log.info("Getting list of groups from account_api")
    case = Case.get_case_by_id(case_id)

    if case is None:
        raise ApplicationError(*errors.get('verification_api',
                                           'CASE_NOT_FOUND',
                                           filler=case_id),
                               http_code=404)

    ldap_details = AccountAPI().get(case.ldap_id)

    if isinstance(ldap_details['groups'], str):
        group_dns = [ldap_details['groups']]
    else:
        group_dns = ldap_details['groups']

    groups = [group.split(',')[0][3:] for group in group_dns]
    return groups, case
Example #10
0
def dps_action(action, case_id, data):
    case = Case.get_case_by_id(case_id)
    if not case:
        raise ApplicationError(*errors.get('verification_api',
                                           'CASE_NOT_FOUND',
                                           filler=case_id),
                               http_code=404)

    if not _can_perform_action(case, data['staff_id']):
        error_msg = 'Could not perform action on case as it is locked to another user'
        raise ApplicationError(*errors.get('verification_api',
                                           'LOCKING_ERROR',
                                           filler=error_msg),
                               http_code=403)

    account_api = AccountAPI()

    if action == 'Approve':
        account_api.approve(case.ldap_id)
        _status_update(case, 'Approved', data)
    elif action == 'Decline':
        # need to make the first letter in the reason lowercase due to the layout of the template
        reason = data['reason'][0].lower() + data['reason'][1:]
        account_api.decline(case.ldap_id, reason, data['advice'], case.user_id)
        _status_update(case, 'Declined', data)
        # add the decline reason as a notepad entry
        note_text = 'Declined: Reason - {}; Next Steps - {}'.format(
            data['reason'], data['advice'])
        _add_note(case_id, data['staff_id'], note_text)

    else: