killbill-memoizeit

jaxrs: fix payment HTTP status codes regression This fixes

2/1/2017 10:53:20 PM

Details

diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/JaxRsResourceBase.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/JaxRsResourceBase.java
index 74dabf6..c61ada1 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/JaxRsResourceBase.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/JaxRsResourceBase.java
@@ -591,7 +591,7 @@ public abstract class JaxRsResourceBase implements JaxrsResource {
                 exception = createBillingException("This should never have happened!!!");
         }
         addExceptionToResponse(responseBuilder, exception);
-        return uriBuilder.buildResponse(uriInfo, PaymentResource.class, "getPayment", payment.getId(), request);
+        return uriBuilder.buildResponse(responseBuilder, uriInfo, PaymentResource.class, "getPayment", payment.getId(), request);
     }
 
     private void addExceptionToResponse(final ResponseBuilder responseBuilder, final BillingExceptionJson exception) {
diff --git a/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestPayment.java b/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestPayment.java
index 6a2e8f6..13b0fa4 100644
--- a/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestPayment.java
+++ b/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestPayment.java
@@ -122,6 +122,34 @@ public class TestPayment extends TestJaxrsBase {
     }
 
     @Test(groups = "slow")
+    public void testWithFailedPaymentAndWithoutFollowLocation() throws Exception {
+        final Account account = createAccountWithDefaultPaymentMethod();
+
+        mockPaymentProviderPlugin.makeNextPaymentFailWithError();
+
+        final PaymentTransaction authTransaction = new PaymentTransaction();
+        authTransaction.setAmount(BigDecimal.ONE);
+        authTransaction.setCurrency(account.getCurrency());
+        authTransaction.setTransactionType(TransactionType.AUTHORIZE.name());
+
+        final RequestOptions requestOptionsWithoutFollowLocation = RequestOptions.builder()
+                                                                                 .withCreatedBy(createdBy)
+                                                                                 .withReason(reason)
+                                                                                 .withComment(comment)
+                                                                                 .withFollowLocation(false)
+                                                                                 .build();
+
+        try {
+            killBillClient.createPayment(account.getAccountId(), account.getPaymentMethodId(), authTransaction,
+                                         ImmutableMap.<String, String>of(), requestOptionsWithoutFollowLocation);
+            fail();
+        } catch (final KillBillClientException e) {
+            assertEquals(e.getResponse().getStatusCode(), 402);
+            assertEquals(e.getBillingException().getMessage(), "Payment decline by gateway. Error message: gatewayError");
+        }
+    }
+
+    @Test(groups = "slow")
     public void testWithCanceledPayment() throws Exception {
         final Account account = createAccountWithDefaultPaymentMethod();