diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/ComboPaymentResource.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/ComboPaymentResource.java
index a372150..e308641 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/ComboPaymentResource.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/ComboPaymentResource.java
@@ -23,6 +23,7 @@ import java.util.UUID;
import javax.annotation.Nullable;
import javax.inject.Inject;
+import org.killbill.billing.ErrorCode;
import org.killbill.billing.account.api.Account;
import org.killbill.billing.account.api.AccountApiException;
import org.killbill.billing.account.api.AccountUserApi;
@@ -93,6 +94,7 @@ public abstract class ComboPaymentResource extends JaxRsResourceBase {
})) {
return match;
}
+ throw new PaymentApiException(ErrorCode.PAYMENT_NO_SUCH_PAYMENT_METHOD, match);
}
// If we were specified a paymentMethod externalKey and we find it, we return it
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 1cfdb15..22a5996 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
@@ -193,6 +193,24 @@ public class TestPayment extends TestJaxrsBase {
voidTransactionExternalKey, null, "VOID", "SUCCESS");
}
+ @Test(groups = "slow")
+ public void testComboAuthorizationInvalidPaymentMethod() throws Exception {
+ final Account accountJson = getAccount();
+ accountJson.setAccountId(null);
+
+ final PaymentMethodPluginDetail info = new PaymentMethodPluginDetail();
+ info.setProperties(null);
+
+ final UUID paymentMethodId = UUID.randomUUID();
+ final PaymentMethod paymentMethodJson = new PaymentMethod(paymentMethodId, null, null, true, PLUGIN_NAME, info);
+
+ final ComboPaymentTransaction comboPaymentTransaction = new ComboPaymentTransaction(accountJson, paymentMethodJson, null, ImmutableList.<PluginProperty>of(), ImmutableList.<PluginProperty>of());
+
+ final Payment payment = killBillClient.createPayment(comboPaymentTransaction, ImmutableMap.<String, String>of(), createdBy, reason, comment);
+ // Client returns null in case of a 404
+ Assert.assertNull(payment);
+ }
+
private void testCreateRetrievePayment(final Account account, @Nullable final UUID paymentMethodId,
final String paymentExternalKey, final int paymentNb) throws Exception {
// Authorization