def entry(request): """Browser is POSTed to here to initiate a payment""" agency_id = request.POST.get('agency_id') app_name = request.POST.get('app_name') if not agency_id: return HttpResponseBadRequest('Needs agency_id') elif not request.POST.get('agency_tracking_id'): return HttpResponseBadRequest('Needs agency_tracking_id') else: url = lookup_config("transaction_url", agency_id, app_name) if not url: return HttpResponseBadRequest( 'agency_id + app_name cannot be found in settings') else: data = { 'agency_id': agency_id, 'agency_tracking_id': request.POST['agency_tracking_id'] } agency_response = requests.post(url, data=data) agency_response = agency_response_to_dict(agency_response.text) if isinstance(agency_response, dict): agency_response = clean_response(agency_response) if isinstance(agency_response, str): return HttpResponseBadRequest(agency_response) else: return generate_form(request, agency_id, app_name, agency_response)
def entry(request): """Browser is POSTed to here to initiate a payment""" agency_id = request.POST.get('agency_id') app_name = request.POST.get('app_name') if not agency_id: return HttpResponseBadRequest('Needs agency_id') elif not request.POST.get('agency_tracking_id'): return HttpResponseBadRequest('Needs agency_tracking_id') else: url = lookup_config("transaction_url", agency_id, app_name) if not url: return HttpResponseBadRequest( 'agency_id + app_name cannot be found in settings') else: data = {'agency_id': agency_id, 'agency_tracking_id': request.POST['agency_tracking_id']} agency_response = requests.post(url, data=data) agency_response = agency_response_to_dict(agency_response.text) if isinstance(agency_response, dict): agency_response = clean_response(agency_response) if isinstance(agency_response, str): return HttpResponseBadRequest(agency_response) else: return generate_form(request, agency_id, app_name, agency_response)
def test_clean_response(self): """Verify that required fields must be present, and that no additional fields are accepted""" nodata = access_settings.clean_response({}) self.assertTrue(isinstance(nodata, str)) data = {'protocol_version': 'pv', 'response_message': 'rm', 'action': 'a', 'form_id': 'fi', 'agency_tracking_id': 'ati', 'invalid_field': 'if'} new_field = access_settings.clean_response(data) self.assertTrue(isinstance(new_field, str)) self.assertNotEqual(nodata, new_field) # different errors del(data['invalid_field']) data['payment_amount'] = '20.25' result = access_settings.clean_response(data) self.assertEqual(data, result) self.assertNotEqual(id(data), id(result))