def test_get_dataset_activity_http_error(self, mock_get): case_id = 999 mock_get.side_effect = HTTPError(self.error_msg) with self.assertRaises(ApplicationError) as context: verification_api = VerificationAPI() verification_api.get_dataset_activity(case_id) mock_get.assert_called_once() 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_get_dataset_activity_timeout_error(self, mock_get): case_id = 999 mock_get.side_effect = Timeout(self.error_msg) with self.assertRaises(ApplicationError) as context: verification_api = VerificationAPI() verification_api.get_dataset_activity(case_id) mock_get.assert_called_once() 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_get_dataset_activity(self, mock_get): case_id = 999 mock_get.return_value.json.return_value = ['test'] mock_get.return_value.status_code = 200 verification_api = VerificationAPI() response = verification_api.get_dataset_activity(case_id) mock_get.assert_called_once() self.assertEqual(response, ['test'])
def get_item(item_id): current_app.logger.info( 'User requested to view item {}...'.format(item_id)) try: _get_user_name() verification_api = VerificationAPI() case = verification_api.get_item(item_id) lock = _handle_lock(case, verification_api) if case['status'] in [ 'Pending', 'In Progress' ] else None if case['status'] == 'Approved': dataset_activity = verification_api.get_dataset_activity(item_id) dataset_access = verification_api.get_user_dataset_access(item_id) from_search = request.args.get('from', None) == 'search' if not from_search: session['search_params'] = None except ApplicationError as error: if error.http_code == 404: return render_template('app/errors/unhandled.html', http_code=404) raise ApplicationError( 'Something went wrong when requesting the application details. ' 'Please raise and incident quoting the following id: {}'.format( g.trace_id)) else: current_app.logger.info( 'Putting worklist item information into viewable format...') case_data_for_template = { 'id': item_id, 'status': case['status'], 'info': build_details_table(case), 'notes': [{ 'text': note['note_text'], 'meta_data': format_note_metadata(note) } for note in case['notes']] } if case['status'] in ['Pending', 'In Progress', 'Declined']: forms = _build_app_forms(item_id, case['status'], lock is None, verification_api) return render_template('app/application_details.html', case_data=case_data_for_template, forms=forms, search=from_search, lock=lock) else: account_name = ' '.join([ case['registration_data']['title'], case['registration_data']['first_name'], case['registration_data']['last_name'] ]) if case['status'] == 'Approved': forms = _build_acc_forms(item_id, case['status'], dataset_access) activity = build_dataset_activity(dataset_activity) return render_template('app/account_details.html', case_data=case_data_for_template, forms=forms, search=from_search, activity=activity, account_name=account_name, dataset_access=dataset_access) else: forms = _build_acc_forms(item_id, case['status']) return render_template('app/account_details.html', case_data=case_data_for_template, forms=forms, search=from_search, account_name=account_name)