killbill-aplcache

First entitlement basic tests

8/12/2013 7:46:56 PM

Details

diff --git a/entitlement/killbill-entitlement.iml b/entitlement/killbill-entitlement.iml
index 5f378db..5aac51c 100644
--- a/entitlement/killbill-entitlement.iml
+++ b/entitlement/killbill-entitlement.iml
@@ -19,17 +19,16 @@
     <orderEntry type="library" scope="PROVIDED" name="Maven: javax.inject:javax.inject:1" level="project" />
     <orderEntry type="library" scope="PROVIDED" name="Maven: aopalliance:aopalliance:1.0" level="project" />
     <orderEntry type="library" scope="TEST" name="Maven: com.h2database:h2:1.3.158" level="project" />
+    <orderEntry type="module" module-name="killbill-account" />
+    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.1.0" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.1.0" level="project" />
     <orderEntry type="library" name="Maven: com.ning.billing:killbill-api:0.3.3-SNAPSHOT" level="project" />
     <orderEntry type="library" name="Maven: joda-time:joda-time:2.0" level="project" />
-    <orderEntry type="module" module-name="killbill-catalog" scope="TEST" production-on-test="" />
-    <orderEntry type="library" scope="TEST" name="Maven: com.ning.billing:killbill-catalog:test-jar:tests:0.3.6-SNAPSHOT" level="project" />
     <orderEntry type="module" module-name="killbill-internal-api" />
     <orderEntry type="library" name="Maven: com.ning.billing.plugin:killbill-plugin-api-payment:0.2.5" level="project" />
     <orderEntry type="library" name="Maven: org.skife.config:config-magic:0.14" level="project" />
     <orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.5" level="project" />
     <orderEntry type="module" module-name="killbill-util" />
-    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.1.0" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.1.0" level="project" />
     <orderEntry type="library" name="Maven: com.fasterxml.jackson.dataformat:jackson-dataformat-csv:2.1.0" level="project" />
     <orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-joda:2.0.1" level="project" />
     <orderEntry type="library" name="Maven: com.jolbox:bonecp:0.7.1.RELEASE" level="project" />
@@ -49,6 +48,8 @@
     <orderEntry type="library" name="Maven: org.apache.commons:commons-email:1.2" level="project" />
     <orderEntry type="library" name="Maven: javax.mail:mail:1.4.1" level="project" />
     <orderEntry type="library" name="Maven: javax.activation:activation:1.1" level="project" />
+    <orderEntry type="module" module-name="killbill-catalog" scope="TEST" production-on-test="" />
+    <orderEntry type="library" scope="TEST" name="Maven: com.ning.billing:killbill-catalog:test-jar:tests:0.3.6-SNAPSHOT" level="project" />
     <orderEntry type="module" module-name="killbill-catalog" scope="TEST" />
     <orderEntry type="module" module-name="killbill-util" scope="TEST" production-on-test="" />
     <orderEntry type="library" scope="TEST" name="Maven: com.ning.billing:killbill-util:test-jar:tests:0.3.6-SNAPSHOT" level="project" />
diff --git a/entitlement/pom.xml b/entitlement/pom.xml
index f7a3164..2d62a73 100644
--- a/entitlement/pom.xml
+++ b/entitlement/pom.xml
@@ -51,6 +51,10 @@
         </dependency>
         <dependency>
             <groupId>com.ning.billing</groupId>
+            <artifactId>killbill-account</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.ning.billing</groupId>
             <artifactId>killbill-api</artifactId>
         </dependency>
         <dependency>
diff --git a/entitlement/src/main/java/com/ning/billing/entitlement/api/DefaultEntitlement.java b/entitlement/src/main/java/com/ning/billing/entitlement/api/DefaultEntitlement.java
index 76a3615..4f98224 100644
--- a/entitlement/src/main/java/com/ning/billing/entitlement/api/DefaultEntitlement.java
+++ b/entitlement/src/main/java/com/ning/billing/entitlement/api/DefaultEntitlement.java
@@ -117,7 +117,7 @@ public class DefaultEntitlement extends EntityBase implements Entitlement {
         if (entitlementBlockingState != null && entitlementBlockingState.getStateName().equals(DefaultEntitlementApi.ENT_STATE_CANCELLED)) {
             return new LocalDate(entitlementBlockingState.getCreatedDate(), accountTimeZone);
         }
-        return new LocalDate(subscriptionBase.getEndDate(), accountTimeZone);
+        return subscriptionBase.getEndDate() != null ? new LocalDate(subscriptionBase.getEndDate(), accountTimeZone) : null;
     }
 
     @Override
diff --git a/entitlement/src/main/java/com/ning/billing/entitlement/api/DefaultEntitlementApi.java b/entitlement/src/main/java/com/ning/billing/entitlement/api/DefaultEntitlementApi.java
index 1ac038a..94cb080 100644
--- a/entitlement/src/main/java/com/ning/billing/entitlement/api/DefaultEntitlementApi.java
+++ b/entitlement/src/main/java/com/ning/billing/entitlement/api/DefaultEntitlementApi.java
@@ -88,11 +88,11 @@ public class DefaultEntitlementApi implements EntitlementApi {
 
     @Override
     public Entitlement createBaseEntitlement(final UUID accountId, final PlanPhaseSpecifier planPhaseSpecifier, final String externalKey, final CallContext callContext) throws EntitlementApiException {
-        final InternalCallContext context = internalCallContextFactory.createInternalCallContext(callContext);
+        final InternalCallContext contextWithValidAccountRecordId = internalCallContextFactory.createInternalCallContext(accountId, callContext);
         try {
-            final Account account = accountApi.getAccountById(accountId, context);
-            final SubscriptionBaseBundle bundle = subscriptionInternalApi.createBundleForAccount(accountId, externalKey, context);
-            final SubscriptionBase subscription = subscriptionInternalApi.createSubscription(bundle.getId(), planPhaseSpecifier, clock.getUTCNow(), context);
+            final Account account = accountApi.getAccountById(accountId, contextWithValidAccountRecordId);
+            final SubscriptionBaseBundle bundle = subscriptionInternalApi.createBundleForAccount(accountId, externalKey, contextWithValidAccountRecordId);
+            final SubscriptionBase subscription = subscriptionInternalApi.createSubscription(bundle.getId(), planPhaseSpecifier, clock.getUTCNow(), contextWithValidAccountRecordId);
             return new DefaultEntitlement(accountApi, subscription, accountId, bundle.getExternalKey(), false, null, account.getTimeZone(), internalCallContextFactory, clock, checker);
         } catch (SubscriptionBaseApiException e) {
             throw new EntitlementApiException(e);
@@ -196,7 +196,7 @@ public class DefaultEntitlementApi implements EntitlementApi {
     private List<Entitlement> getAllEntitlementsForBundleId(final UUID bundleId, final UUID accountId, final String externalKey, final InternalTenantContext context) throws EntitlementApiException {
 
         try {
-            final Account account = accountApi.getAccountById(bundleId, context);
+            final Account account = accountApi.getAccountById(accountId, context);
             final List<SubscriptionBase> subscriptions = subscriptionInternalApi.getSubscriptionsForBundle(bundleId, context);
             return ImmutableList.<Entitlement>copyOf(Collections2.transform(subscriptions, new Function<SubscriptionBase, Entitlement>() {
                 @Nullable
diff --git a/entitlement/src/test/java/com/ning/billing/entitlement/api/TestDefaultEntitlementApi.java b/entitlement/src/test/java/com/ning/billing/entitlement/api/TestDefaultEntitlementApi.java
index d6aeaa5..9711717 100644
--- a/entitlement/src/test/java/com/ning/billing/entitlement/api/TestDefaultEntitlementApi.java
+++ b/entitlement/src/test/java/com/ning/billing/entitlement/api/TestDefaultEntitlementApi.java
@@ -1,9 +1,8 @@
 package com.ning.billing.entitlement.api;
 
-import java.util.UUID;
+import java.util.List;
 
 import org.joda.time.LocalDate;
-import org.mockito.Mockito;
 import org.testng.Assert;
 import org.testng.annotations.Test;
 
@@ -16,7 +15,6 @@ import com.ning.billing.catalog.api.ProductCategory;
 import com.ning.billing.entitlement.EntitlementTestSuiteWithEmbeddedDB;
 import com.ning.billing.entitlement.api.Entitlement.EntitlementSourceType;
 import com.ning.billing.entitlement.api.Entitlement.EntitlementState;
-import com.ning.billing.util.callcontext.InternalTenantContext;
 
 import static org.testng.Assert.assertEquals;
 import static org.testng.Assert.assertNull;
@@ -25,26 +23,23 @@ import static org.testng.Assert.assertNull;
 public class TestDefaultEntitlementApi extends EntitlementTestSuiteWithEmbeddedDB {
 
     @Test(groups = "slow")
-    public void test1() {
+    public void testCreateEntitlementWithCheck() {
 
         try {
             final LocalDate initialDate = new LocalDate(2013, 8, 7);
             clock.setDay(initialDate);
-            final UUID accountId = UUID.randomUUID();
-            final String externalKey = "externalKey";
-            final Account account = Mockito.mock(Account.class);
-            Mockito.when(account.getId()).thenReturn(accountId);
-            Mockito.when(accountInternalApi.getAccountById(Mockito.<UUID>any(), Mockito.<InternalTenantContext>any())).thenReturn(account);
+
+            final Account account = accountApi.createAccount(getAccountData(7), callContext);
 
             final PlanPhaseSpecifier spec = new PlanPhaseSpecifier("Shotgun", ProductCategory.BASE, BillingPeriod.MONTHLY, PriceListSet.DEFAULT_PRICELIST_NAME, null);
 
-            final Entitlement entitlement = entitlementApi.createBaseEntitlement(accountId, spec, externalKey, callContext);
-            assertEquals(entitlement.getAccountId(), accountId);
-            assertEquals(entitlement.getExternalKey(), externalKey);
+            // Create entitlement and check each field
+            final Entitlement entitlement = entitlementApi.createBaseEntitlement(account.getId(), spec, account.getExternalKey(), callContext);
+            assertEquals(entitlement.getAccountId(), account.getId());
+            assertEquals(entitlement.getExternalKey(), account.getExternalKey());
 
-            assertEquals(entitlement.getRequestedEndDate(), initialDate);
             assertEquals(entitlement.getEffectiveStartDate(), initialDate);
-            assertNull(entitlement.getEffectiveStartDate());
+            assertNull(entitlement.getEffectiveEndDate());
 
             assertEquals(entitlement.getPriceList().getName(), PriceListSet.DEFAULT_PRICELIST_NAME);
             assertEquals(entitlement.getProduct().getName(), "Shotgun");
@@ -55,10 +50,69 @@ public class TestDefaultEntitlementApi extends EntitlementTestSuiteWithEmbeddedD
             assertEquals(entitlement.getState(), EntitlementState.ACTIVE);
             assertEquals(entitlement.getSourceType(), EntitlementSourceType.NATIVE);
 
-            assertEquals(entitlement.getLastActivePlan(), null);
-            assertEquals(entitlement.getLastActivePriceList(), null);
-            assertEquals(entitlement.getLastActiveProduct(), null);
-            assertEquals(entitlement.getLastActiveProductCategory(), null);
+            assertEquals(entitlement.getLastActivePlan().getName(), "shotgun-monthly");
+            assertEquals(entitlement.getLastActivePriceList().getName(), PriceListSet.DEFAULT_PRICELIST_NAME);
+            assertEquals(entitlement.getLastActiveProduct().getName(), "Shotgun");
+            assertEquals(entitlement.getLastActiveProductCategory(), ProductCategory.BASE);
+
+            assertEquals(entitlement.getState(), EntitlementState.ACTIVE);
+            assertEquals(entitlement.getSourceType(), EntitlementSourceType.NATIVE);
+
+            // Now retrieve entitlement by id and recheck everything
+            final Entitlement entitlement2 = entitlementApi.getEntitlementForId(entitlement.getId(), callContext);
+
+            assertEquals(entitlement2.getAccountId(), account.getId());
+            assertEquals(entitlement2.getExternalKey(), account.getExternalKey());
+
+            assertEquals(entitlement2.getEffectiveStartDate(), initialDate);
+            assertNull(entitlement2.getEffectiveEndDate());
+
+            assertEquals(entitlement2.getPriceList().getName(), PriceListSet.DEFAULT_PRICELIST_NAME);
+            assertEquals(entitlement2.getProduct().getName(), "Shotgun");
+            assertEquals(entitlement2.getCurrentPhase().getName(), "shotgun-monthly-trial");
+            assertEquals(entitlement2.getPlan().getName(), "shotgun-monthly");
+            assertEquals(entitlement2.getProductCategory(), ProductCategory.BASE);
+
+            assertEquals(entitlement2.getState(), EntitlementState.ACTIVE);
+            assertEquals(entitlement2.getSourceType(), EntitlementSourceType.NATIVE);
+
+            assertEquals(entitlement2.getLastActivePlan().getName(), "shotgun-monthly");
+            assertEquals(entitlement2.getLastActivePriceList().getName(), PriceListSet.DEFAULT_PRICELIST_NAME);
+            assertEquals(entitlement2.getLastActiveProduct().getName(), "Shotgun");
+            assertEquals(entitlement2.getLastActiveProductCategory(), ProductCategory.BASE);
+
+            assertEquals(entitlement2.getState(), EntitlementState.ACTIVE);
+            assertEquals(entitlement2.getSourceType(), EntitlementSourceType.NATIVE);
+
+            // Finally
+            List<Entitlement> accountEntitlements = entitlementApi.getAllEntitlementsForAccountId(account.getId(), callContext);
+            assertEquals(accountEntitlements.size(), 1);
+
+            final Entitlement entitlement3 = accountEntitlements.get(0);
+
+            assertEquals(entitlement3.getAccountId(), account.getId());
+            assertEquals(entitlement3.getExternalKey(), account.getExternalKey());
+
+            assertEquals(entitlement3.getEffectiveStartDate(), initialDate);
+            assertNull(entitlement3.getEffectiveEndDate());
+
+            assertEquals(entitlement3.getPriceList().getName(), PriceListSet.DEFAULT_PRICELIST_NAME);
+            assertEquals(entitlement3.getProduct().getName(), "Shotgun");
+            assertEquals(entitlement3.getCurrentPhase().getName(), "shotgun-monthly-trial");
+            assertEquals(entitlement3.getPlan().getName(), "shotgun-monthly");
+            assertEquals(entitlement3.getProductCategory(), ProductCategory.BASE);
+
+            assertEquals(entitlement3.getState(), EntitlementState.ACTIVE);
+            assertEquals(entitlement3.getSourceType(), EntitlementSourceType.NATIVE);
+
+            assertEquals(entitlement3.getLastActivePlan().getName(), "shotgun-monthly");
+            assertEquals(entitlement3.getLastActivePriceList().getName(), PriceListSet.DEFAULT_PRICELIST_NAME);
+            assertEquals(entitlement3.getLastActiveProduct().getName(), "Shotgun");
+            assertEquals(entitlement3.getLastActiveProductCategory(), ProductCategory.BASE);
+
+            assertEquals(entitlement3.getState(), EntitlementState.ACTIVE);
+            assertEquals(entitlement3.getSourceType(), EntitlementSourceType.NATIVE);
+
 
         } catch (EntitlementApiException e) {
             Assert.fail("Test failed " + e.getMessage());
@@ -66,4 +120,49 @@ public class TestDefaultEntitlementApi extends EntitlementTestSuiteWithEmbeddedD
             Assert.fail("Test failed " + e.getMessage());
         }
     }
+
+    @Test(groups = "slow")
+    public void testAddEntitlement() {
+
+        try {
+
+            final LocalDate initialDate = new LocalDate(2013, 8, 7);
+            clock.setDay(initialDate);
+
+            final Account account = accountApi.createAccount(getAccountData(7), callContext);
+
+            final PlanPhaseSpecifier spec = new PlanPhaseSpecifier("Shotgun", ProductCategory.BASE, BillingPeriod.ANNUAL, PriceListSet.DEFAULT_PRICELIST_NAME, null);
+
+            // Create entitlement and check each field
+            final Entitlement baseEntitlement = entitlementApi.createBaseEntitlement(account.getId(), spec, account.getExternalKey(), callContext);
+
+            // Add ADD_ON
+            final PlanPhaseSpecifier spec1 = new PlanPhaseSpecifier("Telescopic-Scope", ProductCategory.BASE, BillingPeriod.MONTHLY, PriceListSet.DEFAULT_PRICELIST_NAME, null);
+            final Entitlement telescopicEntitlement = entitlementApi.addEntitlement(baseEntitlement.getBundleId(), spec1, callContext);
+
+            assertEquals(telescopicEntitlement.getAccountId(), account.getId());
+            assertEquals(telescopicEntitlement.getExternalKey(), account.getExternalKey());
+
+            assertEquals(telescopicEntitlement.getEffectiveStartDate(), initialDate);
+            assertNull(telescopicEntitlement.getEffectiveEndDate());
+
+            assertEquals(telescopicEntitlement.getPriceList().getName(), PriceListSet.DEFAULT_PRICELIST_NAME);
+            assertEquals(telescopicEntitlement.getProduct().getName(), "Telescopic-Scope");
+            assertEquals(telescopicEntitlement.getCurrentPhase().getName(), "telescopic-scope-monthly-discount");
+            assertEquals(telescopicEntitlement.getPlan().getName(), "telescopic-scope-monthly");
+            assertEquals(telescopicEntitlement.getProductCategory(), ProductCategory.ADD_ON);
+
+            List<Entitlement> bundleEntitlements = entitlementApi.getAllEntitlementsForBundle(telescopicEntitlement.getBundleId(), callContext);
+            assertEquals(bundleEntitlements.size(), 2);
+
+            bundleEntitlements = entitlementApi.getAllEntitlementsForAccountIdAndExternalKey(account.getId(), account.getExternalKey(), callContext);
+            assertEquals(bundleEntitlements.size(), 2);
+
+        } catch (AccountApiException e) {
+            Assert.fail("Test failed " + e.getMessage());
+        } catch (EntitlementApiException e) {
+            Assert.fail("Test failed " + e.getMessage());
+        }
+    }
+
 }
diff --git a/entitlement/src/test/java/com/ning/billing/entitlement/EntitlementTestSuiteWithEmbeddedDB.java b/entitlement/src/test/java/com/ning/billing/entitlement/EntitlementTestSuiteWithEmbeddedDB.java
index a6d9a85..5691cc9 100644
--- a/entitlement/src/test/java/com/ning/billing/entitlement/EntitlementTestSuiteWithEmbeddedDB.java
+++ b/entitlement/src/test/java/com/ning/billing/entitlement/EntitlementTestSuiteWithEmbeddedDB.java
@@ -17,8 +17,10 @@
 package com.ning.billing.entitlement;
 
 import java.net.URL;
+import java.util.UUID;
 
 import org.joda.time.DateTime;
+import org.joda.time.DateTimeZone;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.testng.Assert;
@@ -27,16 +29,20 @@ import org.testng.annotations.BeforeClass;
 import org.testng.annotations.BeforeMethod;
 
 import com.ning.billing.GuicyKillbillTestSuiteWithEmbeddedDB;
+import com.ning.billing.account.api.AccountData;
+import com.ning.billing.account.api.AccountUserApi;
 import com.ning.billing.api.TestApiListener;
 import com.ning.billing.api.TestListenerStatus;
 import com.ning.billing.bus.api.PersistentBus;
 import com.ning.billing.catalog.DefaultCatalogService;
 import com.ning.billing.catalog.api.Catalog;
 import com.ning.billing.catalog.api.CatalogService;
+import com.ning.billing.catalog.api.Currency;
 import com.ning.billing.clock.ClockMock;
 import com.ning.billing.entitlement.api.EntitlementApi;
 import com.ning.billing.entitlement.dao.BlockingStateDao;
 import com.ning.billing.entitlement.glue.TestEntitlementModuleWithEmbeddedDB;
+import com.ning.billing.mock.MockAccountBuilder;
 import com.ning.billing.subscription.api.SubscriptionBaseService;
 import com.ning.billing.subscription.engine.core.DefaultSubscriptionBaseService;
 import com.ning.billing.util.svcapi.account.AccountInternalApi;
@@ -58,6 +64,8 @@ public class EntitlementTestSuiteWithEmbeddedDB extends GuicyKillbillTestSuiteWi
     protected static final Logger log = LoggerFactory.getLogger(EntitlementTestSuiteWithEmbeddedDB.class);
 
     @Inject
+    protected AccountUserApi accountApi;
+    @Inject
     protected AccountInternalApi accountInternalApi;
     @Inject
     protected BlockingInternalApi blockingInternalApi;
@@ -184,4 +192,20 @@ public class EntitlementTestSuiteWithEmbeddedDB extends GuicyKillbillTestSuiteWi
     private void stopSubscriptionService(final SubscriptionBaseService subscriptionBaseService) throws Exception {
         ((DefaultSubscriptionBaseService) subscriptionBaseService).stop();
     }
+
+
+    protected AccountData getAccountData(final int billingDay) {
+        return new MockAccountBuilder().name(UUID.randomUUID().toString().substring(1, 8))
+                                       .firstNameLength(6)
+                                       .email(UUID.randomUUID().toString().substring(1, 8))
+                                       .phone(UUID.randomUUID().toString().substring(1, 8))
+                                       .migrated(false)
+                                       .isNotifiedForInvoices(false)
+                                       .externalKey(UUID.randomUUID().toString().substring(1, 8))
+                                       .billingCycleDayLocal(billingDay)
+                                       .currency(Currency.USD)
+                                       .paymentMethodId(UUID.randomUUID())
+                                       .timeZone(DateTimeZone.UTC)
+                                       .build();
+    }
 }
diff --git a/entitlement/src/test/java/com/ning/billing/entitlement/glue/TestEntitlementModule.java b/entitlement/src/test/java/com/ning/billing/entitlement/glue/TestEntitlementModule.java
index 96d7152..7306110 100644
--- a/entitlement/src/test/java/com/ning/billing/entitlement/glue/TestEntitlementModule.java
+++ b/entitlement/src/test/java/com/ning/billing/entitlement/glue/TestEntitlementModule.java
@@ -38,6 +38,5 @@ public class TestEntitlementModule extends DefaultEntitlementModule {
         super.configure();
         install(new CacheModule(configSource));
         install(new CallContextModule());
-        install(new MockAccountModule());
     }
 }
diff --git a/entitlement/src/test/java/com/ning/billing/entitlement/glue/TestEntitlementModuleNoDB.java b/entitlement/src/test/java/com/ning/billing/entitlement/glue/TestEntitlementModuleNoDB.java
index 579a606..83147c6 100644
--- a/entitlement/src/test/java/com/ning/billing/entitlement/glue/TestEntitlementModuleNoDB.java
+++ b/entitlement/src/test/java/com/ning/billing/entitlement/glue/TestEntitlementModuleNoDB.java
@@ -20,6 +20,7 @@ import com.ning.billing.GuicyKillbillTestNoDBModule;
 import com.ning.billing.catalog.MockCatalogModule;
 import com.ning.billing.entitlement.dao.BlockingStateDao;
 import com.ning.billing.entitlement.dao.MockBlockingStateDao;
+import com.ning.billing.mock.glue.MockAccountModule;
 import com.ning.billing.mock.glue.MockNonEntityDaoModule;
 import com.ning.billing.mock.glue.MockSubscriptionModule;
 import com.ning.billing.mock.glue.MockTagModule;
@@ -41,6 +42,7 @@ public class TestEntitlementModuleNoDB extends TestEntitlementModule {
         install(new MockTagModule());
         install(new MockSubscriptionModule());
         install(new MockCatalogModule());
+        install(new MockAccountModule());
     }
 
     @Override
diff --git a/entitlement/src/test/java/com/ning/billing/entitlement/glue/TestEntitlementModuleWithEmbeddedDB.java b/entitlement/src/test/java/com/ning/billing/entitlement/glue/TestEntitlementModuleWithEmbeddedDB.java
index 20f7401..1f45f91 100644
--- a/entitlement/src/test/java/com/ning/billing/entitlement/glue/TestEntitlementModuleWithEmbeddedDB.java
+++ b/entitlement/src/test/java/com/ning/billing/entitlement/glue/TestEntitlementModuleWithEmbeddedDB.java
@@ -17,10 +17,12 @@
 package com.ning.billing.entitlement.glue;
 
 import com.ning.billing.GuicyKillbillTestWithEmbeddedDBModule;
+import com.ning.billing.account.glue.DefaultAccountModule;
 import com.ning.billing.api.TestApiListener;
 import com.ning.billing.api.TestListenerStatus;
 import com.ning.billing.catalog.glue.CatalogModule;
 import com.ning.billing.entitlement.EntitlementTestListenerStatus;
+import com.ning.billing.glue.AccountModule;
 import com.ning.billing.subscription.glue.DefaultSubscriptionModule;
 import com.ning.billing.util.glue.BusModule;
 import com.ning.billing.util.glue.NonEntityDaoModule;
@@ -37,6 +39,7 @@ public class TestEntitlementModuleWithEmbeddedDB extends TestEntitlementModule {
     @Override
     protected void configure() {
         super.configure();
+        install(new DefaultAccountModule(configSource));
         install(new GuicyKillbillTestWithEmbeddedDBModule());
         install(new NonEntityDaoModule());
         install(new BusModule(configSource));
diff --git a/junction/killbill-junction.iml b/junction/killbill-junction.iml
index 53d4625..a6a87bb 100644
--- a/junction/killbill-junction.iml
+++ b/junction/killbill-junction.iml
@@ -52,6 +52,7 @@
     <orderEntry type="module" module-name="killbill-catalog" scope="TEST" />
     <orderEntry type="module" module-name="killbill-entitlement" scope="TEST" production-on-test="" />
     <orderEntry type="library" scope="TEST" name="Maven: com.ning.billing:killbill-entitlement:test-jar:tests:0.3.6-SNAPSHOT" level="project" />
+    <orderEntry type="module" module-name="killbill-account" scope="TEST" />
     <orderEntry type="module" module-name="killbill-entitlement" scope="TEST" />
     <orderEntry type="module" module-name="killbill-util" scope="TEST" production-on-test="" />
     <orderEntry type="library" scope="TEST" name="Maven: com.ning.billing:killbill-util:test-jar:tests:0.3.6-SNAPSHOT" level="project" />