def test_unmarshal_missing_headers(self): helper = self.__create_helper() InMemorySecretKeyStore.INSTANCE().store_secret_key( self.__KEY_ID, self.__SECRET_KEY) body = self.__read_resource("valid-body") self.assertRaises(SignatureValidationException, helper.unmarshal, body, ())
def test_unmarshal_string_invalid_signature(self): helper = self.__create_helper() InMemorySecretKeyStore.INSTANCE().store_secret_key(self.__KEY_ID, self.__SECRET_KEY) body = self.__read_resource("valid-body") request_headers = [ RequestHeader(self.__SIGNATURE_HEADER, "1" + self.__SIGNATURE), RequestHeader(self.__KEY_ID_HEADER, self.__KEY_ID)] self.assertRaises(SignatureValidationException, helper.unmarshal, body, request_headers)
def test_unmarshal_api_version_mismatch(self): marshaller = mock(Marshaller) event = WebhooksEvent() event.api_version = "v0" body = self.__read_resource("valid-body") when(marshaller).unmarshal(body, WebhooksEvent).thenReturn(event) helper = self.__create_helper(marshaller) InMemorySecretKeyStore.INSTANCE().store_secret_key( self.__KEY_ID, self.__SECRET_KEY) request_headers = [ RequestHeader(self.__SIGNATURE_HEADER, self.__SIGNATURE), RequestHeader(self.__KEY_ID_HEADER, self.__KEY_ID) ] self.assertRaises(ApiVersionMismatchException, helper.unmarshal, body, request_headers)
def test_unmarshal_string_success(self): helper = self.__create_helper() InMemorySecretKeyStore.INSTANCE().store_secret_key( self.__KEY_ID, self.__SECRET_KEY) body_stream = self.__read_resource("valid-body") request_headers = [ RequestHeader(self.__SIGNATURE_HEADER, self.__SIGNATURE), RequestHeader(self.__KEY_ID_HEADER, self.__KEY_ID) ] event = helper.unmarshal(body_stream, request_headers) self.assertEqual("v1", event.api_version) self.assertEqual("8ee793f6-4553-4749-85dc-f2ef095c5ab0", event.id) self.assertEqual("2017-02-02T11:24:14.040+0100", event.created) self.assertEqual("20000", event.merchant_id) self.assertEqual("payment.paid", event.type) self.assertIsNone(event.refund) self.assertIsNone(event.payout) self.assertIsNone(event.token) self.assertIsNotNone(event.payment) self.assertEqual("00000200000143570012", event.payment.id) self.assertIsNotNone(event.payment.payment_output) self.assertIsNotNone(event.payment.payment_output.amount_of_money) self.assertEqual(1000, event.payment.payment_output.amount_of_money.amount) self.assertEqual( "EUR", event.payment.payment_output.amount_of_money.currency_code) self.assertIsNotNone( event.payment.payment_output.amount_of_money.currency_code) self.assertIsNotNone(event.payment.payment_output.references) self.assertEqual( "200001681810", event.payment.payment_output.references.payment_reference) self.assertEqual("bankTransfer", event.payment.payment_output.payment_method) self.assertIsNone( event.payment.payment_output.card_payment_method_specific_output) self.assertIsNone( event.payment.payment_output.cash_payment_method_specific_output) self.assertIsNone(event.payment.payment_output. direct_debit_payment_method_specific_output) self.assertIsNone(event.payment.payment_output. invoice_payment_method_specific_output) self.assertIsNone(event.payment.payment_output. redirect_payment_method_specific_output) self.assertIsNone(event.payment.payment_output. sepa_direct_debit_payment_method_specific_output) self.assertIsNotNone(event.payment.payment_output. bank_transfer_payment_method_specific_output) self.assertEqual( 11, event.payment.payment_output. bank_transfer_payment_method_specific_output.payment_product_id) self.assertEqual("PAID", event.payment.status) self.assertIsNotNone(event.payment.status_output) self.assertEqual(False, event.payment.status_output.is_cancellable) self.assertEqual("COMPLETED", event.payment.status_output.status_category) self.assertEqual(1000, event.payment.status_output.status_code) self.assertEqual( "20170202112414", event.payment.status_output.status_code_change_date_time) self.assertEqual(True, event.payment.status_output.is_authorized)
def clear_public_key_cache(self): InMemorySecretKeyStore.INSTANCE().clear()
def __create_helper(self, marshaller=DefaultMarshaller.INSTANCE()): return WebhooksHelper(marshaller, InMemorySecretKeyStore.INSTANCE())
def test_create_helper(self): helper = Webhooks.create_helper(InMemorySecretKeyStore.INSTANCE()) self.assertIs(DefaultMarshaller.INSTANCE(), helper.marshaller) self.assertIs(InMemorySecretKeyStore.INSTANCE(), helper.secret_key_store)