diff --git a/Adyen/client.py b/Adyen/client.py index 8915f078..e8324854 100644 --- a/Adyen/client.py +++ b/Adyen/client.py @@ -611,7 +611,7 @@ def _handle_response(self, url, raw_response, raw_request, Returns: AdyenResult: Result object if successful. """ - if (status_code != 200 and status_code != 201): + if (status_code != 200 and status_code != 201): response = {} # If the result can't be parsed into json, most likely is raw html. # Some response are neither json or raw html, handle them here: diff --git a/Adyen/util.py b/Adyen/util.py index b9cb9520..4efe6243 100644 --- a/Adyen/util.py +++ b/Adyen/util.py @@ -35,6 +35,8 @@ def escape_val(val): def is_valid_hmac(dict_object, hmac_key): + dict_object = dict_object.copy() + if 'additionalData' in dict_object: if dict_object['additionalData']['hmacSignature'] == "": raise ValueError("Must Provide hmacSignature in additionalData") @@ -85,6 +87,8 @@ def escape_val(val): def is_valid_hmac_notification(dict_object, hmac_key): + dict_object = dict_object.copy() + if 'additionalData' in dict_object: if dict_object['additionalData']['hmacSignature'] == "": raise ValueError("Must Provide hmacSignature in additionalData") diff --git a/test/CheckoutTest.py b/test/CheckoutTest.py index a94dd297..19d7bf42 100644 --- a/test/CheckoutTest.py +++ b/test/CheckoutTest.py @@ -497,4 +497,4 @@ def test_sessions_error(self): result = self.adyen.checkout.sessions(request) self.assertEqual(422, result.message['status']) self.assertEqual("130", result.message['errorCode']) - self.assertEqual("validation", result.message['errorType']) \ No newline at end of file + self.assertEqual("validation", result.message['errorType']) diff --git a/test/UtilTest.py b/test/UtilTest.py index 9cd9b334..488c6c12 100644 --- a/test/UtilTest.py +++ b/test/UtilTest.py @@ -34,6 +34,9 @@ def test_hpp_request_item_hmac(self): self.assertEqual(hmac_calculation_str, expected_hmac) request['additionalData'] = {'hmacSignature': hmac_calculation_str} hmac_validate = is_valid_hmac(request, key) + self.assertIn('additionalData', request) + self.assertDictEqual(request['additionalData'], + {'hmacSignature': hmac_calculation_str}) self.assertTrue(hmac_validate) def test_notification_request_item_hmac(self): @@ -49,9 +52,9 @@ def test_notification_request_item_hmac(self): "success": "true", "eventDate": "2019-05-06T17:15:34.121+02:00", "operations": [ - "CANCEL", - "CAPTURE", - "REFUND" + "CANCEL", + "CAPTURE", + "REFUND" ], "paymentMethod": "visa", } @@ -64,4 +67,7 @@ def test_notification_request_item_hmac(self): self.assertEqual(hmac_calculation_str, expected_hmac) request['additionalData'] = {'hmacSignature': hmac_calculation_str} hmac_validate = is_valid_hmac_notification(request, key) + self.assertIn('additionalData', request) + self.assertDictEqual(request['additionalData'], + {'hmacSignature': hmac_calculation_str}) self.assertTrue(hmac_validate)