package com.paymill.samples.webhookresolver; import java.util.Scanner; import org.testng.Assert; import org.testng.annotations.Test; import com.paymill.context.PaymillContext; import com.paymill.models.Webhook.EventType; public class WebhookResolverTest { @Test public void testResolveSubscriptionSucceeded_shouldSecceed() throws Exception { String content = new Scanner( this.getClass().getResourceAsStream( "/subscription.succeeded.json" ) ).useDelimiter( "\\Z" ).next(); WebhookResolver resolver = WebhookResolver.fromString( content ); Assert.assertEquals( resolver.getEventType(), EventType.SUBSCRIPTION_SUCCEEDED ); Assert.assertEquals( resolver.getTransaction().getId(), "tran_59c55c0a7e7d6597f08d55e5981a" ); Assert.assertEquals( resolver.getSubscription().getId(), "sub_1dfa3dc813004a11c9d6" ); Assert.assertNull( resolver.getRefund() ); Assert.assertNull( resolver.getClient() ); } @Test public void testResolveTransactionCreated_shouldSecceed() throws Exception { String content = new Scanner( this.getClass().getResourceAsStream( "/transaction.created.json" ) ).useDelimiter( "\\Z" ).next(); WebhookResolver resolver = WebhookResolver.fromString( content ); Assert.assertEquals( resolver.getEventType(), EventType.TRANSACTION_CREATED ); Assert.assertEquals( resolver.getTransaction().getId(), "tran_656a13cb793ac165f35556f16ce5" ); Assert.assertNull( resolver.getSubscription() ); Assert.assertNull( resolver.getRefund() ); Assert.assertNull( resolver.getClient() ); Assert.assertEquals( resolver.getAppId(), "app_1234" ); } @Test public void testResolveInvoiceAvailable_shouldSecceed() throws Exception { String content = new Scanner( this.getClass().getResourceAsStream( "/invoice.available.json" ) ).useDelimiter( "\\Z" ).next(); WebhookResolver resolver = WebhookResolver.fromString( content ); Assert.assertEquals( resolver.getEventType(), EventType.INVOICE_AVAILABLE ); Assert.assertEquals( resolver.getInvoice().getInvoiceNumber(), "1293724" ); Assert.assertEquals( resolver.getInvoice().getNetto(), (Integer) 12399 ); Assert.assertEquals( resolver.getInvoice().getBrutto(), (Integer) 14755 ); Assert.assertEquals( resolver.getInvoice().getStatus(), "sent" ); Assert.assertEquals( resolver.getInvoice().getVatRate(), (Integer) 19 ); Assert.assertNull( resolver.getSubscription() ); Assert.assertNull( resolver.getRefund() ); Assert.assertNull( resolver.getClient() ); } @Test public void testResolveAppMerchantActivated_shouldSecceed() throws Exception { String content = new Scanner( this.getClass().getResourceAsStream( "/app.merchant.activated.json" ) ).useDelimiter( "\\Z" ).next(); PaymillContext paymillContext; WebhookResolver resolver = WebhookResolver.fromString( content ); Assert.assertEquals( resolver.getEventType(), EventType.APP_MERCHANT_ACTIVATED ); Assert.assertEquals( resolver.getMerchant().getIdentifier(), "mer_123456789" ); Assert.assertEquals( resolver.getMerchant().getEmail(), "mail@example.com" ); Assert.assertEquals( resolver.getMerchant().getLocale(), "de_DE" ); Assert.assertEquals( resolver.getMerchant().getCountry(), "DEU" ); Assert.assertEquals( resolver.getMerchant().getMethods().get( 0 ), "visa" ); Assert.assertEquals( resolver.getMerchant().getMethods().get( 1 ), "mastercard" ); Assert.assertNull( resolver.getSubscription() ); Assert.assertNull( resolver.getRefund() ); Assert.assertNull( resolver.getClient() ); switch( resolver.getEventType() ) { case TRANSACTION_CREATED: Transaction transaction = paymillContext.getTransactionService().get( resolver.getTransaction() ); break; default: break; } } }