killbill-aplcache
Changes
account/pom.xml 5(+5 -0)
Details
account/pom.xml 5(+5 -0)
diff --git a/account/pom.xml b/account/pom.xml
index 78a4147..d27448c 100644
--- a/account/pom.xml
+++ b/account/pom.xml
@@ -120,6 +120,11 @@
</dependency>
<dependency>
<groupId>org.kill-bill.billing</groupId>
+ <artifactId>killbill-tenant</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.kill-bill.billing</groupId>
<artifactId>killbill-util</artifactId>
</dependency>
<dependency>
diff --git a/account/src/test/java/org/killbill/billing/account/api/user/TestDefaultAccountUserApi.java b/account/src/test/java/org/killbill/billing/account/api/user/TestDefaultAccountUserApi.java
index 0a0d2ac..9fe5b8c 100644
--- a/account/src/test/java/org/killbill/billing/account/api/user/TestDefaultAccountUserApi.java
+++ b/account/src/test/java/org/killbill/billing/account/api/user/TestDefaultAccountUserApi.java
@@ -33,8 +33,12 @@ import org.killbill.billing.account.api.DefaultAccount;
import org.killbill.billing.account.api.DefaultMutableAccountData;
import org.killbill.billing.account.api.MutableAccountData;
import org.killbill.billing.account.dao.AccountModelDao;
+import org.killbill.billing.callcontext.DefaultCallContext;
import org.killbill.billing.catalog.api.Currency;
import org.killbill.billing.events.AccountCreationInternalEvent;
+import org.killbill.billing.tenant.dao.TenantModelDao;
+import org.killbill.billing.tenant.dao.TenantSqlDao;
+import org.killbill.billing.util.callcontext.CallContext;
import org.killbill.billing.util.entity.Pagination;
import org.testng.Assert;
import org.testng.annotations.Test;
@@ -432,4 +436,27 @@ public class TestDefaultAccountUserApi extends AccountTestSuiteWithEmbeddedDB {
assertEquals(e.getCode(), ErrorCode.EXTERNAL_KEY_LIMIT_EXCEEDED.getCode());
}
}
+
+ @Test(groups = "slow", description = "Test Account creation with same External Key in different tenants")
+ public void testCreateAccountWithSameExternalKeyInDifferentTenants() throws Exception {
+ final AccountData accountData = createAccountData();
+
+ final Account account1 = accountUserApi.createAccount(accountData, callContext);
+ try {
+ // Same tenant
+ accountUserApi.createAccount(accountData, callContext);
+ Assert.fail();
+ } catch (final AccountApiException e) {
+ assertEquals(e.getCode(), ErrorCode.ACCOUNT_ALREADY_EXISTS.getCode());
+ }
+
+ final TenantSqlDao tenantSqlDao = dbi.onDemand(TenantSqlDao.class);
+ final TenantModelDao tenant2 = new TenantModelDao();
+ tenantSqlDao.create(tenant2, internalCallContext);
+ final CallContext callContext2 = new DefaultCallContext(tenant2.getId(), callContext.getUserName(), callContext.getCallOrigin(), callContext.getUserType(), callContext.getUserToken(), clock);
+ final Account account2 = accountUserApi.createAccount(accountData, callContext2);
+
+ Assert.assertEquals(account1.getExternalKey(), account2.getExternalKey());
+ Assert.assertNotEquals(account1.getId(), account2.getId());
+ }
}