killbill-memoizeit
Changes
entitlement/src/test/java/com/ning/billing/entitlement/api/TestDefaultSubscriptionApi.java 55(+55 -0)
entitlement/src/test/java/com/ning/billing/entitlement/EntitlementTestSuiteWithEmbeddedDB.java 3(+3 -0)
entitlement/src/test/java/com/ning/billing/entitlement/glue/TestEntitlementModuleWithEmbeddedDB.java 2(+2 -0)
pom.xml 2(+1 -1)
Details
diff --git a/entitlement/src/test/java/com/ning/billing/entitlement/api/TestDefaultSubscriptionApi.java b/entitlement/src/test/java/com/ning/billing/entitlement/api/TestDefaultSubscriptionApi.java
index 6f27ece..bcfd0f1 100644
--- a/entitlement/src/test/java/com/ning/billing/entitlement/api/TestDefaultSubscriptionApi.java
+++ b/entitlement/src/test/java/com/ning/billing/entitlement/api/TestDefaultSubscriptionApi.java
@@ -32,6 +32,9 @@ import com.ning.billing.catalog.api.PriceListSet;
import com.ning.billing.catalog.api.ProductCategory;
import com.ning.billing.entitlement.EntitlementTestSuiteWithEmbeddedDB;
import com.ning.billing.junction.DefaultBlockingState;
+import com.ning.billing.util.api.AuditLevel;
+import com.ning.billing.util.audit.AuditLog;
+import com.ning.billing.util.audit.ChangeType;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertNull;
@@ -175,4 +178,56 @@ public class TestDefaultSubscriptionApi extends EntitlementTestSuiteWithEmbedded
assertNull(thirdBundle.getSubscriptions().get(0).getBillingEndDate());
assertEquals(thirdBundle.getOriginalCreatedDate().compareTo(firstbundle.getCreatedDate()), 0);
}
+
+ @Test(groups = "slow", description = "Test for https://github.com/killbill/killbill/issues/136")
+ public void testAuditLogsForEntitlementAndSubscriptionBaseObjects() throws AccountApiException, EntitlementApiException, SubscriptionApiException {
+ final LocalDate initialDate = new LocalDate(2013, 8, 7);
+ clock.setDay(initialDate);
+
+ final Account account = accountApi.createAccount(getAccountData(7), callContext);
+
+ // Create entitlement
+ testListener.pushExpectedEvent(NextEvent.CREATE);
+ final PlanPhaseSpecifier spec = new PlanPhaseSpecifier("Shotgun", ProductCategory.BASE, BillingPeriod.ANNUAL, PriceListSet.DEFAULT_PRICELIST_NAME, null);
+ final Entitlement baseEntitlement = entitlementApi.createBaseEntitlement(account.getId(), spec, account.getExternalKey(), initialDate, callContext);
+ assertListenerStatus();
+
+ // Get the phase event out of the way
+ testListener.pushExpectedEvents(NextEvent.PHASE);
+ clock.setDay(new LocalDate(2013, 9, 7));
+ assertListenerStatus();
+
+ final LocalDate pauseDate = new LocalDate(2013, 9, 17);
+ entitlementApi.pause(baseEntitlement.getBundleId(), pauseDate, callContext);
+
+ final LocalDate resumeDate = new LocalDate(2013, 12, 24);
+ entitlementApi.resume(baseEntitlement.getBundleId(), resumeDate, callContext);
+
+ final LocalDate cancelDate = new LocalDate(2013, 12, 27);
+ baseEntitlement.cancelEntitlementWithDate(cancelDate, true, callContext);
+
+ testListener.pushExpectedEvents(NextEvent.PAUSE, NextEvent.BLOCK, NextEvent.RESUME, NextEvent.BLOCK, NextEvent.CANCEL, NextEvent.BLOCK);
+ clock.setDay(cancelDate.plusDays(1));
+ assertListenerStatus();
+
+ final SubscriptionBundle bundle = subscriptionApi.getSubscriptionBundle(baseEntitlement.getBundleId(), callContext);
+ final List<SubscriptionEvent> transitions = bundle.getTimeline().getSubscriptionEvents();
+ assertEquals(transitions.size(), 9);
+ checkSubscriptionEventAuditLog(transitions, 0, SubscriptionEventType.START_ENTITLEMENT);
+ checkSubscriptionEventAuditLog(transitions, 1, SubscriptionEventType.START_BILLING);
+ checkSubscriptionEventAuditLog(transitions, 2, SubscriptionEventType.PHASE);
+ checkSubscriptionEventAuditLog(transitions, 3, SubscriptionEventType.PAUSE_ENTITLEMENT);
+ checkSubscriptionEventAuditLog(transitions, 4, SubscriptionEventType.PAUSE_BILLING);
+ checkSubscriptionEventAuditLog(transitions, 5, SubscriptionEventType.RESUME_ENTITLEMENT);
+ checkSubscriptionEventAuditLog(transitions, 6, SubscriptionEventType.RESUME_BILLING);
+ checkSubscriptionEventAuditLog(transitions, 7, SubscriptionEventType.STOP_ENTITLEMENT);
+ checkSubscriptionEventAuditLog(transitions, 8, SubscriptionEventType.STOP_BILLING);
+ }
+
+ private void checkSubscriptionEventAuditLog(final List<SubscriptionEvent> transitions, final int idx, final SubscriptionEventType expectedType) {
+ assertEquals(transitions.get(idx).getSubscriptionEventType(), expectedType);
+ final List<AuditLog> auditLogs = auditUserApi.getAuditLogs(transitions.get(idx).getId(), transitions.get(idx).getSubscriptionEventType().getObjectType(), AuditLevel.FULL, callContext);
+ assertEquals(auditLogs.size(), 1);
+ assertEquals(auditLogs.get(0).getChangeType(), ChangeType.INSERT);
+ }
}
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 99711d9..e0396c1 100644
--- a/entitlement/src/test/java/com/ning/billing/entitlement/EntitlementTestSuiteWithEmbeddedDB.java
+++ b/entitlement/src/test/java/com/ning/billing/entitlement/EntitlementTestSuiteWithEmbeddedDB.java
@@ -52,6 +52,7 @@ import com.ning.billing.subscription.api.SubscriptionBaseInternalApi;
import com.ning.billing.subscription.api.SubscriptionBaseService;
import com.ning.billing.subscription.engine.core.DefaultSubscriptionBaseService;
import com.ning.billing.tag.TagInternalApi;
+import com.ning.billing.util.api.AuditUserApi;
import com.ning.billing.util.callcontext.InternalCallContextFactory;
import com.ning.billing.util.svcsapi.bus.BusService;
import com.ning.billing.util.tag.dao.TagDao;
@@ -108,6 +109,8 @@ public class EntitlementTestSuiteWithEmbeddedDB extends GuicyKillbillTestSuiteWi
@Inject
protected EventsStreamBuilder eventsStreamBuilder;
@Inject
+ protected AuditUserApi auditUserApi;
+ @Inject
protected InternalCallContextFactory internalCallContextFactory;
protected Catalog catalog;
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 2369cb6..0b40737 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
@@ -25,6 +25,7 @@ import com.ning.billing.api.TestListenerStatus;
import com.ning.billing.catalog.glue.CatalogModule;
import com.ning.billing.entitlement.EntitlementTestListenerStatus;
import com.ning.billing.subscription.glue.DefaultSubscriptionModule;
+import com.ning.billing.util.glue.AuditModule;
import com.ning.billing.util.glue.BusModule;
import com.ning.billing.util.glue.MetricsModule;
import com.ning.billing.util.glue.NonEntityDaoModule;
@@ -49,6 +50,7 @@ public class TestEntitlementModuleWithEmbeddedDB extends TestEntitlementModule {
install(new CatalogModule(configSource));
install(new NotificationQueueModule(configSource));
install(new DefaultSubscriptionModule(configSource));
+ install(new AuditModule());
bind(TestListenerStatus.class).to(EntitlementTestListenerStatus.class).asEagerSingleton();
bind(TestApiListener.class).asEagerSingleton();
pom.xml 2(+1 -1)
diff --git a/pom.xml b/pom.xml
index 220af20..c937e6b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -19,7 +19,7 @@
<parent>
<artifactId>killbill-oss-parent</artifactId>
<groupId>com.ning.billing</groupId>
- <version>0.5.7</version>
+ <version>0.5.8</version>
</parent>
<artifactId>killbill</artifactId>
<version>0.8.5-SNAPSHOT</version>