Details
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/json/PaymentMethodJson.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/json/PaymentMethodJson.java
index 2738b24..7117692 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/json/PaymentMethodJson.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/json/PaymentMethodJson.java
@@ -104,7 +104,7 @@ public class PaymentMethodJson extends JsonBase {
@Override
public String getExternalKey() {
- return null;
+ return externalKey;
}
@Override
diff --git a/payment/src/main/java/org/killbill/billing/payment/core/PaymentMethodProcessor.java b/payment/src/main/java/org/killbill/billing/payment/core/PaymentMethodProcessor.java
index 1483905..066c19e 100644
--- a/payment/src/main/java/org/killbill/billing/payment/core/PaymentMethodProcessor.java
+++ b/payment/src/main/java/org/killbill/billing/payment/core/PaymentMethodProcessor.java
@@ -104,7 +104,7 @@ public class PaymentMethodProcessor extends ProcessorBase {
pluginApi = getPaymentPluginApi(paymentPluginServiceName);
pm = new DefaultPaymentMethod(paymentMethodExternalKey, account.getId(), paymentPluginServiceName, paymentMethodProps);
pluginApi.addPaymentMethod(account.getId(), pm.getId(), paymentMethodProps, setDefault, properties, callContext);
- final PaymentMethodModelDao pmModel = new PaymentMethodModelDao(pm.getId(), pm.getCreatedDate(), pm.getUpdatedDate(),
+ final PaymentMethodModelDao pmModel = new PaymentMethodModelDao(pm.getId(), pm.getExternalKey(), pm.getCreatedDate(), pm.getUpdatedDate(),
pm.getAccountId(), pm.getPluginName(), pm.isActive());
paymentDao.insertPaymentMethod(pmModel, context);
@@ -434,7 +434,7 @@ public class PaymentMethodProcessor extends ProcessorBase {
// If the kbPaymentId is NULL, the plugin does not know about it, so we create a new UUID
final UUID paymentMethodId = cur.getPaymentMethodId() != null ? cur.getPaymentMethodId() : UUID.randomUUID();
final PaymentMethod input = new DefaultPaymentMethod(paymentMethodId, paymentMethodId.toString(), account.getId(), pluginName);
- final PaymentMethodModelDao pmModel = new PaymentMethodModelDao(input.getId(), input.getCreatedDate(), input.getUpdatedDate(),
+ final PaymentMethodModelDao pmModel = new PaymentMethodModelDao(input.getId(), input.getExternalKey(), input.getCreatedDate(), input.getUpdatedDate(),
input.getAccountId(), input.getPluginName(), input.isActive());
finalPaymentMethods.add(pmModel);
diff --git a/payment/src/main/java/org/killbill/billing/payment/dao/PaymentMethodModelDao.java b/payment/src/main/java/org/killbill/billing/payment/dao/PaymentMethodModelDao.java
index 2fea339..5475e17 100644
--- a/payment/src/main/java/org/killbill/billing/payment/dao/PaymentMethodModelDao.java
+++ b/payment/src/main/java/org/killbill/billing/payment/dao/PaymentMethodModelDao.java
@@ -36,11 +36,11 @@ public class PaymentMethodModelDao extends EntityBase implements EntityModelDao<
public PaymentMethodModelDao() { /* For the DAO mapper */ }
- public PaymentMethodModelDao(final UUID id, @Nullable final DateTime createdDate, @Nullable final DateTime updatedDate,
+ public PaymentMethodModelDao(final UUID id, final String externalKey, @Nullable final DateTime createdDate, @Nullable final DateTime updatedDate,
final UUID accountId, final String pluginName,
final Boolean isActive) {
super(id, createdDate, updatedDate);
- this.externalKey = id.toString();
+ this.externalKey = externalKey;
this.accountId = accountId;
this.pluginName = pluginName;
this.isActive = isActive;
diff --git a/payment/src/test/java/org/killbill/billing/payment/core/sm/TestDirectPaymentOperation.java b/payment/src/test/java/org/killbill/billing/payment/core/sm/TestDirectPaymentOperation.java
index 4fd5d17..e0deb5b 100644
--- a/payment/src/test/java/org/killbill/billing/payment/core/sm/TestDirectPaymentOperation.java
+++ b/payment/src/test/java/org/killbill/billing/payment/core/sm/TestDirectPaymentOperation.java
@@ -116,7 +116,7 @@ public class TestDirectPaymentOperation extends PaymentTestSuiteNoDB {
internalCallContext,
callContext);
- final PaymentMethodModelDao paymentMethodModelDao = new PaymentMethodModelDao(directPaymentStateContext.getPaymentMethodId(), clock.getUTCNow(), clock.getUTCNow(),
+ final PaymentMethodModelDao paymentMethodModelDao = new PaymentMethodModelDao(directPaymentStateContext.getPaymentMethodId(), UUID.randomUUID().toString(), clock.getUTCNow(), clock.getUTCNow(),
directPaymentStateContext.getAccount().getId(), MockPaymentProviderPlugin.PLUGIN_NAME, true);
final PaymentDao paymentDao = Mockito.mock(PaymentDao.class);
Mockito.when(paymentDao.getPaymentMethodIncludedDeleted(directPaymentStateContext.getPaymentMethodId(), internalCallContext)).thenReturn(paymentMethodModelDao);
diff --git a/payment/src/test/java/org/killbill/billing/payment/dao/TestPaymentDao.java b/payment/src/test/java/org/killbill/billing/payment/dao/TestPaymentDao.java
index 839e65a..19ec769 100644
--- a/payment/src/test/java/org/killbill/billing/payment/dao/TestPaymentDao.java
+++ b/payment/src/test/java/org/killbill/billing/payment/dao/TestPaymentDao.java
@@ -207,7 +207,7 @@ public class TestPaymentDao extends PaymentTestSuiteWithEmbeddedDB {
final String pluginName = "nobody";
final Boolean isActive = Boolean.TRUE;
- final PaymentMethodModelDao method = new PaymentMethodModelDao(paymentMethodId, null, null,
+ final PaymentMethodModelDao method = new PaymentMethodModelDao(paymentMethodId,UUID.randomUUID().toString(), null, null,
accountId, pluginName, isActive);
PaymentMethodModelDao savedMethod = paymentDao.insertPaymentMethod(method, internalCallContext);
diff --git a/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/KillbillClient.java b/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/KillbillClient.java
index 6ba435c..9f604ed 100644
--- a/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/KillbillClient.java
+++ b/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/KillbillClient.java
@@ -88,16 +88,20 @@ public abstract class KillbillClient extends GuicyKillbillTestSuiteWithEmbeddedD
return properties;
}
+ protected Account createAccountWithDefaultPaymentMethod(final String externalkey) throws Exception {
+ return createAccountWithDefaultPaymentMethod(externalkey, null);
+ }
+
protected Account createAccountWithDefaultPaymentMethod() throws Exception {
- return createAccountWithDefaultPaymentMethod(null);
+ return createAccountWithDefaultPaymentMethod(UUID.randomUUID().toString(), null);
}
- protected Account createAccountWithDefaultPaymentMethod(@Nullable final List<PluginProperty> pmProperties) throws Exception {
+ protected Account createAccountWithDefaultPaymentMethod(final String externalkey, @Nullable final List<PluginProperty> pmProperties) throws Exception {
final Account input = createAccount();
final PaymentMethodPluginDetail info = new PaymentMethodPluginDetail();
info.setProperties(pmProperties);
- final PaymentMethod paymentMethodJson = new PaymentMethod(null, UUID.randomUUID().toString(), input.getAccountId(), true, PLUGIN_NAME, info);
+ final PaymentMethod paymentMethodJson = new PaymentMethod(null, externalkey, input.getAccountId(), true, PLUGIN_NAME, info);
killBillClient.createPaymentMethod(paymentMethodJson, createdBy, reason, comment);
return killBillClient.getAccount(input.getExternalKey());
}
diff --git a/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestPaymentMethod.java b/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestPaymentMethod.java
index 56ce839..8a21a30 100644
--- a/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestPaymentMethod.java
+++ b/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestPaymentMethod.java
@@ -31,6 +31,20 @@ import org.testng.annotations.Test;
public class TestPaymentMethod extends TestJaxrsBase {
+ @Test(groups = "slow", description = "Create/retrieve by externalKey")
+ public void testGePaymentMethodsByKey() throws Exception {
+
+ final Account accountJson = createAccountWithDefaultPaymentMethod("foo");
+
+ final PaymentMethod paymentMethodJson1 = killBillClient.getPaymentMethodByKey("foo", true);
+
+ final PaymentMethod paymentMethodJson2 = killBillClient.getPaymentMethod(accountJson.getPaymentMethodId(), true);
+ Assert.assertEquals(paymentMethodJson1, paymentMethodJson2);
+
+ final PaymentMethod paymentMethodJson3 = killBillClient.getPaymentMethodByKey("doesnotexist", true);
+ Assert.assertNull(paymentMethodJson3);
+ }
+
@Test(groups = "slow", description = "Can search payment methods")
public void testSearchPaymentMethods() throws Exception {
// Search random key
@@ -45,13 +59,9 @@ public class TestPaymentMethod extends TestJaxrsBase {
pmProperties.add(new PluginProperty("CC_STATE", "CA", false));
pmProperties.add(new PluginProperty("CC_COUNTRY", "Zimbawe", false));
- final Account accountJson = createAccountWithDefaultPaymentMethod(pmProperties);
+ final Account accountJson = createAccountWithDefaultPaymentMethod(UUID.randomUUID().toString(), pmProperties);
final PaymentMethod paymentMethodJson = killBillClient.getPaymentMethod(accountJson.getPaymentMethodId(), true);
-
- final PaymentMethod paymentMethodJson2 = killBillClient.getPaymentMethodByKey(paymentMethodJson.getExternalKey(), true);
- Assert.assertEquals(paymentMethodJson, paymentMethodJson2);
-
// Search random key again
Assert.assertEquals(killBillClient.searchPaymentMethodsByKey(UUID.randomUUID().toString()).size(), 0);
Assert.assertEquals(killBillClient.searchPaymentMethodsByKeyAndPlugin(UUID.randomUUID().toString(), PLUGIN_NAME).size(), 0);