Details
diff --git a/api/src/main/java/com/ning/billing/util/api/AuditLevel.java b/api/src/main/java/com/ning/billing/util/api/AuditLevel.java
new file mode 100644
index 0000000..53e6bd6
--- /dev/null
+++ b/api/src/main/java/com/ning/billing/util/api/AuditLevel.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright 2010-2012 Ning, Inc.
+ *
+ * Ning licenses this file to you under the Apache License, version 2.0
+ * (the "License"); you may not use this file except in compliance with the
+ * License. You may obtain a copy of the License at:
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
+ */
+
+package com.ning.billing.util.api;
+
+public enum AuditLevel {
+ // All audits
+ FULL,
+ // Initial inserts only
+ MINIMAL,
+ // No audit
+ NONE
+}
diff --git a/api/src/main/java/com/ning/billing/util/api/AuditUserApi.java b/api/src/main/java/com/ning/billing/util/api/AuditUserApi.java
index 266eb3b..c4e6bb2 100644
--- a/api/src/main/java/com/ning/billing/util/api/AuditUserApi.java
+++ b/api/src/main/java/com/ning/billing/util/api/AuditUserApi.java
@@ -37,49 +37,55 @@ public interface AuditUserApi {
/**
* Fetch all audit logs for bundles.
*
- * @param bundles the bundles to lookup
+ * @param bundles the bundles to lookup
+ * @param auditLevel audit level (verbosity)
* @return all audit logs for these refunds
*/
- public AuditLogsForBundles getAuditLogsForBundles(final List<SubscriptionBundle> bundles);
+ public AuditLogsForBundles getAuditLogsForBundles(final List<SubscriptionBundle> bundles, final AuditLevel auditLevel);
/**
* Fetch all audit logs for invoice payments.
*
* @param invoicePayments the invoice payments to lookup
+ * @param auditLevel audit level (verbosity)
* @return all audit logs for these invoice payments
*/
- public AuditLogsForInvoicePayments getAuditLogsForInvoicePayments(final List<InvoicePayment> invoicePayments);
+ public AuditLogsForInvoicePayments getAuditLogsForInvoicePayments(final List<InvoicePayment> invoicePayments, final AuditLevel auditLevel);
/**
* Fetch all audit logs for refunds.
*
- * @param refunds the refunds to lookup
+ * @param refunds the refunds to lookup
+ * @param auditLevel audit level (verbosity)
* @return all audit logs for these refunds
*/
- public AuditLogsForRefunds getAuditLogsForRefunds(final List<Refund> refunds);
+ public AuditLogsForRefunds getAuditLogsForRefunds(final List<Refund> refunds, final AuditLevel auditLevel);
/**
* Fetch all audit logs for payments.
*
- * @param payments the payments to lookup
+ * @param payments the payments to lookup
+ * @param auditLevel audit level (verbosity)
* @return all audit logs for these payments
*/
- public AuditLogsForPayments getAuditLogsForPayments(final List<Payment> payments);
+ public AuditLogsForPayments getAuditLogsForPayments(final List<Payment> payments, final AuditLevel auditLevel);
/**
* Fetch all audit logs for invoices and associated invoice items.
*
- * @param invoices the invoices to lookup
+ * @param invoices the invoices to lookup
+ * @param auditLevel audit level (verbosity)
* @return all audit logs for these invoices
*/
- public AuditLogsForInvoices getAuditLogsForInvoices(final List<Invoice> invoices);
+ public AuditLogsForInvoices getAuditLogsForInvoices(final List<Invoice> invoices, final AuditLevel auditLevel);
/**
* Get all the audit entries for a given object.
*
* @param objectId the object id
* @param objectType the type of object
+ * @param auditLevel audit level (verbosity)
* @return all audit entries for that object
*/
- public List<AuditLog> getAuditLogs(final UUID objectId, final ObjectType objectType);
+ public List<AuditLog> getAuditLogs(final UUID objectId, final ObjectType objectType, final AuditLevel auditLevel);
}
diff --git a/util/src/main/java/com/ning/billing/util/audit/api/DefaultAuditUserApi.java b/util/src/main/java/com/ning/billing/util/audit/api/DefaultAuditUserApi.java
index 14ca318..25b7a8a 100644
--- a/util/src/main/java/com/ning/billing/util/audit/api/DefaultAuditUserApi.java
+++ b/util/src/main/java/com/ning/billing/util/audit/api/DefaultAuditUserApi.java
@@ -29,6 +29,7 @@ import com.ning.billing.invoice.api.InvoiceItem;
import com.ning.billing.invoice.api.InvoicePayment;
import com.ning.billing.payment.api.Payment;
import com.ning.billing.payment.api.Refund;
+import com.ning.billing.util.api.AuditLevel;
import com.ning.billing.util.api.AuditUserApi;
import com.ning.billing.util.audit.AuditLog;
import com.ning.billing.util.audit.AuditLogsForBundles;
@@ -57,53 +58,53 @@ public class DefaultAuditUserApi implements AuditUserApi {
}
@Override
- public AuditLogsForBundles getAuditLogsForBundles(final List<SubscriptionBundle> bundles) {
+ public AuditLogsForBundles getAuditLogsForBundles(final List<SubscriptionBundle> bundles, final AuditLevel auditLevel) {
final Map<UUID, List<AuditLog>> bundlesAuditLogs = new HashMap<UUID, List<AuditLog>>();
for (final SubscriptionBundle bundle : bundles) {
- bundlesAuditLogs.put(bundle.getId(), getAuditLogs(bundle.getId(), ObjectType.BUNDLE));
+ bundlesAuditLogs.put(bundle.getId(), getAuditLogs(bundle.getId(), ObjectType.BUNDLE, auditLevel));
}
return new DefaultAuditLogsForBundles(bundlesAuditLogs);
}
@Override
- public AuditLogsForInvoicePayments getAuditLogsForInvoicePayments(final List<InvoicePayment> invoicePayments) {
+ public AuditLogsForInvoicePayments getAuditLogsForInvoicePayments(final List<InvoicePayment> invoicePayments, final AuditLevel auditLevel) {
final Map<UUID, List<AuditLog>> invoicePaymentsAuditLogs = new HashMap<UUID, List<AuditLog>>();
for (final InvoicePayment invoicePayment : invoicePayments) {
- invoicePaymentsAuditLogs.put(invoicePayment.getId(), getAuditLogs(invoicePayment.getId(), ObjectType.INVOICE_PAYMENT));
+ invoicePaymentsAuditLogs.put(invoicePayment.getId(), getAuditLogs(invoicePayment.getId(), ObjectType.INVOICE_PAYMENT, auditLevel));
}
return new DefaultAuditLogsForInvoicePayments(invoicePaymentsAuditLogs);
}
@Override
- public AuditLogsForRefunds getAuditLogsForRefunds(final List<Refund> refunds) {
+ public AuditLogsForRefunds getAuditLogsForRefunds(final List<Refund> refunds, final AuditLevel auditLevel) {
final Map<UUID, List<AuditLog>> refundsAuditLogs = new HashMap<UUID, List<AuditLog>>();
for (final Refund refund : refunds) {
- refundsAuditLogs.put(refund.getId(), getAuditLogs(refund.getId(), ObjectType.REFUND));
+ refundsAuditLogs.put(refund.getId(), getAuditLogs(refund.getId(), ObjectType.REFUND, auditLevel));
}
return new DefaultAuditLogsForRefunds(refundsAuditLogs);
}
@Override
- public AuditLogsForPayments getAuditLogsForPayments(final List<Payment> payments) {
+ public AuditLogsForPayments getAuditLogsForPayments(final List<Payment> payments, final AuditLevel auditLevel) {
final Map<UUID, List<AuditLog>> paymentsAuditLogs = new HashMap<UUID, List<AuditLog>>();
for (final Payment payment : payments) {
- paymentsAuditLogs.put(payment.getId(), getAuditLogs(payment.getId(), ObjectType.PAYMENT));
+ paymentsAuditLogs.put(payment.getId(), getAuditLogs(payment.getId(), ObjectType.PAYMENT, auditLevel));
}
return new DefaultAuditLogsForPayments(paymentsAuditLogs);
}
@Override
- public AuditLogsForInvoices getAuditLogsForInvoices(final List<Invoice> invoices) {
+ public AuditLogsForInvoices getAuditLogsForInvoices(final List<Invoice> invoices, final AuditLevel auditLevel) {
final Map<UUID, List<AuditLog>> invoiceAuditLogs = new HashMap<UUID, List<AuditLog>>();
final Map<UUID, List<AuditLog>> invoiceItemsAuditLogs = new HashMap<UUID, List<AuditLog>>();
for (final Invoice invoice : invoices) {
- invoiceAuditLogs.put(invoice.getId(), getAuditLogs(invoice.getId(), ObjectType.INVOICE));
+ invoiceAuditLogs.put(invoice.getId(), getAuditLogs(invoice.getId(), ObjectType.INVOICE, auditLevel));
for (final InvoiceItem invoiceItem : invoice.getInvoiceItems()) {
- invoiceItemsAuditLogs.put(invoiceItem.getId(), getAuditLogs(invoiceItem.getId(), ObjectType.INVOICE_ITEM));
+ invoiceItemsAuditLogs.put(invoiceItem.getId(), getAuditLogs(invoiceItem.getId(), ObjectType.INVOICE_ITEM, auditLevel));
}
}
@@ -111,13 +112,18 @@ public class DefaultAuditUserApi implements AuditUserApi {
}
@Override
- public List<AuditLog> getAuditLogs(final UUID objectId, final ObjectType objectType) {
+ public List<AuditLog> getAuditLogs(final UUID objectId, final ObjectType objectType, final AuditLevel auditLevel) {
+ // Optimization - bail early
+ if (AuditLevel.NONE.equals(auditLevel)) {
+ return ImmutableList.<AuditLog>of();
+ }
+
final TableName tableName = getTableNameFromObjectType(objectType);
if (tableName == null) {
return ImmutableList.<AuditLog>of();
}
- return auditDao.getAuditLogsForId(tableName, objectId);
+ return auditDao.getAuditLogsForId(tableName, objectId, auditLevel);
}
private TableName getTableNameFromObjectType(final ObjectType objectType) {
diff --git a/util/src/main/java/com/ning/billing/util/audit/dao/AuditDao.java b/util/src/main/java/com/ning/billing/util/audit/dao/AuditDao.java
index 4244ddc..3f0e485 100644
--- a/util/src/main/java/com/ning/billing/util/audit/dao/AuditDao.java
+++ b/util/src/main/java/com/ning/billing/util/audit/dao/AuditDao.java
@@ -19,10 +19,11 @@ package com.ning.billing.util.audit.dao;
import java.util.List;
import java.util.UUID;
+import com.ning.billing.util.api.AuditLevel;
import com.ning.billing.util.audit.AuditLog;
import com.ning.billing.util.dao.TableName;
public interface AuditDao {
- public List<AuditLog> getAuditLogsForId(final TableName tableName, final UUID objectId);
+ public List<AuditLog> getAuditLogsForId(final TableName tableName, final UUID objectId, final AuditLevel auditLevel);
}
diff --git a/util/src/main/java/com/ning/billing/util/audit/dao/DefaultAuditDao.java b/util/src/main/java/com/ning/billing/util/audit/dao/DefaultAuditDao.java
index 73f82ec..0e71983 100644
--- a/util/src/main/java/com/ning/billing/util/audit/dao/DefaultAuditDao.java
+++ b/util/src/main/java/com/ning/billing/util/audit/dao/DefaultAuditDao.java
@@ -24,6 +24,7 @@ import javax.inject.Inject;
import org.skife.jdbi.v2.IDBI;
+import com.ning.billing.util.api.AuditLevel;
import com.ning.billing.util.audit.AuditLog;
import com.ning.billing.util.dao.AuditSqlDao;
import com.ning.billing.util.dao.TableName;
@@ -40,25 +41,25 @@ public class DefaultAuditDao implements AuditDao {
}
@Override
- public List<AuditLog> getAuditLogsForId(final TableName tableName, final UUID objectId) {
+ public List<AuditLog> getAuditLogsForId(final TableName tableName, final UUID objectId, final AuditLevel auditLevel) {
if (tableName.hasHistoryTable()) {
- return doGetAuditLogsViaHistoryForId(tableName, objectId);
+ return doGetAuditLogsViaHistoryForId(tableName, objectId, auditLevel);
} else {
- return doGetAuditLogsForId(tableName, objectId);
+ return doGetAuditLogsForId(tableName, objectId, auditLevel);
}
}
- private List<AuditLog> doGetAuditLogsForId(final TableName tableName, final UUID objectId) {
+ private List<AuditLog> doGetAuditLogsForId(final TableName tableName, final UUID objectId, final AuditLevel auditLevel) {
// Look at the table and gather all record_id for that objectId
final Long recordId = auditSqlDao.getRecordIdForTable(tableName.getTableName().toLowerCase(), objectId.toString());
if (recordId == null) {
return ImmutableList.<AuditLog>of();
} else {
- return auditSqlDao.getAuditLogsForRecordId(tableName, recordId);
+ return getAuditLogsForRecordId(tableName, recordId, auditLevel);
}
}
- private List<AuditLog> doGetAuditLogsViaHistoryForId(final TableName tableName, final UUID objectId) {
+ private List<AuditLog> doGetAuditLogsViaHistoryForId(final TableName tableName, final UUID objectId, final AuditLevel auditLevel) {
final List<AuditLog> auditLogs = new ArrayList<AuditLog>();
// Look at the history table and gather all the history_record_id for that objectId
@@ -68,10 +69,23 @@ public class DefaultAuditDao implements AuditDao {
return auditLogs;
} else {
for (final Long recordId : recordIds) {
- auditLogs.addAll(auditSqlDao.getAuditLogsForRecordId(tableName.getHistoryTableName(), recordId));
+ auditLogs.addAll(getAuditLogsForRecordId(tableName.getHistoryTableName(), recordId, auditLevel));
}
return auditLogs;
}
}
+
+ private List<AuditLog> getAuditLogsForRecordId(final TableName tableName, final Long recordId, final AuditLevel auditLevel) {
+ final List<AuditLog> allAuditLogs = auditSqlDao.getAuditLogsForRecordId(tableName, recordId);
+ if (AuditLevel.FULL.equals(auditLevel)) {
+ return allAuditLogs;
+ } else if (AuditLevel.MINIMAL.equals(auditLevel) && allAuditLogs.size() > 0) {
+ return ImmutableList.<AuditLog>of(allAuditLogs.get(0));
+ } else if (AuditLevel.NONE.equals(auditLevel)) {
+ return ImmutableList.<AuditLog>of();
+ } else {
+ return allAuditLogs;
+ }
+ }
}
diff --git a/util/src/main/resources/com/ning/billing/util/dao/AuditSqlDao.sql.stg b/util/src/main/resources/com/ning/billing/util/dao/AuditSqlDao.sql.stg
index c8d64bb..20cd42f 100644
--- a/util/src/main/resources/com/ning/billing/util/dao/AuditSqlDao.sql.stg
+++ b/util/src/main/resources/com/ning/billing/util/dao/AuditSqlDao.sql.stg
@@ -20,7 +20,8 @@ getAuditLogsForRecordId() ::= <<
SELECT <fields()>
FROM audit_log
WHERE record_id = :recordId
- AND table_name = :tableName;
+ AND table_name = :tableName
+ ORDER BY change_date ASC
>>
getRecordIdForTable(tableName) ::= <<
diff --git a/util/src/test/java/com/ning/billing/util/audit/api/TestDefaultAuditUserApi.java b/util/src/test/java/com/ning/billing/util/audit/api/TestDefaultAuditUserApi.java
index 9c58442..debece4 100644
--- a/util/src/test/java/com/ning/billing/util/audit/api/TestDefaultAuditUserApi.java
+++ b/util/src/test/java/com/ning/billing/util/audit/api/TestDefaultAuditUserApi.java
@@ -32,6 +32,7 @@ import com.ning.billing.invoice.api.InvoiceItem;
import com.ning.billing.invoice.api.InvoicePayment;
import com.ning.billing.payment.api.Payment;
import com.ning.billing.payment.api.Refund;
+import com.ning.billing.util.api.AuditLevel;
import com.ning.billing.util.api.AuditUserApi;
import com.ning.billing.util.audit.AuditLog;
import com.ning.billing.util.audit.AuditLogsForBundles;
@@ -74,32 +75,40 @@ public class TestDefaultAuditUserApi extends AuditLogsTestBase {
// TODO check SubscriptionEventsAuditLogs
- final AuditLogsForBundles auditLogsForBundles = auditUserApi.getAuditLogsForBundles(bundles);
- verifyAuditLogs(auditLogsForBundles.getBundlesAuditLogs());
+ for (final AuditLevel level : AuditLevel.values()) {
+ final AuditLogsForBundles auditLogsForBundles = auditUserApi.getAuditLogsForBundles(bundles, level);
+ verifyAuditLogs(auditLogsForBundles.getBundlesAuditLogs(), level);
+ }
}
@Test(groups = "fast")
public void testForInvoicePayments() throws Exception {
final List<InvoicePayment> invoicePayments = createMocks(InvoicePayment.class);
- final AuditLogsForInvoicePayments auditLogsForInvoicePayments = auditUserApi.getAuditLogsForInvoicePayments(invoicePayments);
- verifyAuditLogs(auditLogsForInvoicePayments.getInvoicePaymentsAuditLogs());
+ for (final AuditLevel level : AuditLevel.values()) {
+ final AuditLogsForInvoicePayments auditLogsForInvoicePayments = auditUserApi.getAuditLogsForInvoicePayments(invoicePayments, level);
+ verifyAuditLogs(auditLogsForInvoicePayments.getInvoicePaymentsAuditLogs(), level);
+ }
}
@Test(groups = "fast")
public void testForRefunds() throws Exception {
final List<Refund> refunds = createMocks(Refund.class);
- final AuditLogsForRefunds auditLogsForRefunds = auditUserApi.getAuditLogsForRefunds(refunds);
- verifyAuditLogs(auditLogsForRefunds.getRefundsAuditLogs());
+ for (final AuditLevel level : AuditLevel.values()) {
+ final AuditLogsForRefunds auditLogsForRefunds = auditUserApi.getAuditLogsForRefunds(refunds, level);
+ verifyAuditLogs(auditLogsForRefunds.getRefundsAuditLogs(), level);
+ }
}
@Test(groups = "fast")
public void testForPayments() throws Exception {
final List<Payment> payments = createMocks(Payment.class);
- final AuditLogsForPayments auditLogsForPayments = auditUserApi.getAuditLogsForPayments(payments);
- verifyAuditLogs(auditLogsForPayments.getPaymentsAuditLogs());
+ for (final AuditLevel level : AuditLevel.values()) {
+ final AuditLogsForPayments auditLogsForPayments = auditUserApi.getAuditLogsForPayments(payments, level);
+ verifyAuditLogs(auditLogsForPayments.getPaymentsAuditLogs(), level);
+ }
}
@Test(groups = "fast")
@@ -110,24 +119,46 @@ public class TestDefaultAuditUserApi extends AuditLogsTestBase {
Mockito.when(invoice.getInvoiceItems()).thenReturn(invoiceItems);
}
- final AuditLogsForInvoices auditLogsForInvoices = auditUserApi.getAuditLogsForInvoices(invoices);
- verifyAuditLogs(auditLogsForInvoices.getInvoiceAuditLogs());
- verifyAuditLogs(auditLogsForInvoices.getInvoiceItemsAuditLogs());
+ for (final AuditLevel level : AuditLevel.values()) {
+ final AuditLogsForInvoices auditLogsForInvoices = auditUserApi.getAuditLogsForInvoices(invoices, level);
+ verifyAuditLogs(auditLogsForInvoices.getInvoiceAuditLogs(), level);
+ verifyAuditLogs(auditLogsForInvoices.getInvoiceItemsAuditLogs(), level);
+ }
}
@Test(groups = "fast")
public void testForObject() throws Exception {
for (final ObjectType objectType : ObjectType.values()) {
for (final UUID objectId : objectIds) {
- Assert.assertEquals(auditUserApi.getAuditLogs(objectId, objectType), auditLogs);
+ for (final AuditLevel level : AuditLevel.values()) {
+ if (AuditLevel.NONE.equals(level)) {
+ Assert.assertEquals(auditUserApi.getAuditLogs(objectId, objectType, level).size(), 0);
+ } else if (AuditLevel.MINIMAL.equals(level)) {
+ Assert.assertEquals(auditUserApi.getAuditLogs(objectId, objectType, level), ImmutableList.<AuditLog>of(auditLogs.get(0)));
+ } else {
+ Assert.assertEquals(auditUserApi.getAuditLogs(objectId, objectType, level), auditLogs);
+ }
+ }
}
}
}
- private void verifyAuditLogs(final Map<UUID, List<AuditLog>> objectsAuditLogs) {
+ private void verifyAuditLogs(final Map<UUID, List<AuditLog>> objectsAuditLogs, final AuditLevel level) {
Assert.assertEquals(objectsAuditLogs.size(), objectIds.size());
- for (final UUID objectId : objectIds) {
- Assert.assertEquals(objectsAuditLogs.get(objectId), auditLogs);
+
+ if (AuditLevel.NONE.equals(level)) {
+ for (final UUID objectId : objectIds) {
+ Assert.assertEquals(objectsAuditLogs.get(objectId).size(), 0);
+ }
+ } else if (AuditLevel.MINIMAL.equals(level)) {
+ for (final UUID objectId : objectIds) {
+ Assert.assertEquals(objectsAuditLogs.get(objectId).size(), 1);
+ Assert.assertEquals(objectsAuditLogs.get(objectId).get(0), auditLogs.get(0));
+ }
+ } else {
+ for (final UUID objectId : objectIds) {
+ Assert.assertEquals(objectsAuditLogs.get(objectId), auditLogs);
+ }
}
}
diff --git a/util/src/test/java/com/ning/billing/util/audit/dao/MockAuditDao.java b/util/src/test/java/com/ning/billing/util/audit/dao/MockAuditDao.java
index 7af195c..daee3e8 100644
--- a/util/src/test/java/com/ning/billing/util/audit/dao/MockAuditDao.java
+++ b/util/src/test/java/com/ning/billing/util/audit/dao/MockAuditDao.java
@@ -22,6 +22,7 @@ import java.util.List;
import java.util.Map;
import java.util.UUID;
+import com.ning.billing.util.api.AuditLevel;
import com.ning.billing.util.audit.AuditLog;
import com.ning.billing.util.dao.TableName;
@@ -49,13 +50,22 @@ public class MockAuditDao implements AuditDao {
}
@Override
- public List<AuditLog> getAuditLogsForId(final TableName tableName, final UUID objectId) {
+ public List<AuditLog> getAuditLogsForId(final TableName tableName, final UUID objectId, final AuditLevel auditLevel) {
final Map<UUID, List<AuditLog>> auditLogsForTableName = auditLogsForTables.get(tableName);
if (auditLogsForTableName == null) {
return ImmutableList.<AuditLog>of();
}
final List<AuditLog> auditLogsForObjectId = auditLogsForTableName.get(objectId);
- return Objects.firstNonNull(auditLogsForObjectId, ImmutableList.<AuditLog>of());
+ final List<AuditLog> allAuditLogs = Objects.firstNonNull(auditLogsForObjectId, ImmutableList.<AuditLog>of());
+ if (AuditLevel.FULL.equals(auditLevel)) {
+ return allAuditLogs;
+ } else if (AuditLevel.MINIMAL.equals(auditLevel) && allAuditLogs.size() > 0) {
+ return ImmutableList.<AuditLog>of(allAuditLogs.get(0));
+ } else if (AuditLevel.NONE.equals(auditLevel)) {
+ return ImmutableList.<AuditLog>of();
+ } else {
+ return allAuditLogs;
+ }
}
}
diff --git a/util/src/test/java/com/ning/billing/util/audit/dao/TestDefaultAuditDao.java b/util/src/test/java/com/ning/billing/util/audit/dao/TestDefaultAuditDao.java
index e4abf3c..220e564 100644
--- a/util/src/test/java/com/ning/billing/util/audit/dao/TestDefaultAuditDao.java
+++ b/util/src/test/java/com/ning/billing/util/audit/dao/TestDefaultAuditDao.java
@@ -31,6 +31,7 @@ import org.testng.annotations.Test;
import com.ning.billing.util.ChangeType;
import com.ning.billing.util.UtilTestSuiteWithEmbeddedDB;
+import com.ning.billing.util.api.AuditLevel;
import com.ning.billing.util.api.TagApiException;
import com.ning.billing.util.api.TagDefinitionApiException;
import com.ning.billing.util.audit.AuditLog;
@@ -95,16 +96,20 @@ public class TestDefaultAuditDao extends UtilTestSuiteWithEmbeddedDB {
final String tagHistoryString = (String) handle.select("select id from tag_history limit 1").get(0).get("id");
handle.close();
- final List<AuditLog> auditLogs = auditDao.getAuditLogsForId(TableName.TAG_HISTORY, UUID.fromString(tagHistoryString));
- verifyAuditLogsForTag(auditLogs);
+ for (final AuditLevel level : AuditLevel.values()) {
+ final List<AuditLog> auditLogs = auditDao.getAuditLogsForId(TableName.TAG_HISTORY, UUID.fromString(tagHistoryString), level);
+ verifyAuditLogsForTag(auditLogs, level);
+ }
}
@Test(groups = "slow")
public void testRetrieveAuditsViaHistory() throws Exception {
addTag();
- final List<AuditLog> auditLogs = auditDao.getAuditLogsForId(TableName.TAG, tagId);
- verifyAuditLogsForTag(auditLogs);
+ for (final AuditLevel level : AuditLevel.values()) {
+ final List<AuditLog> auditLogs = auditDao.getAuditLogsForId(TableName.TAG, tagId, level);
+ verifyAuditLogsForTag(auditLogs, level);
+ }
}
private void addTag() throws TagDefinitionApiException, TagApiException {
@@ -124,7 +129,12 @@ public class TestDefaultAuditDao extends UtilTestSuiteWithEmbeddedDB {
tagId = tag.getId();
}
- private void verifyAuditLogsForTag(final List<AuditLog> auditLogs) {
+ private void verifyAuditLogsForTag(final List<AuditLog> auditLogs, final AuditLevel level) {
+ if (AuditLevel.NONE.equals(level)) {
+ Assert.assertEquals(auditLogs.size(), 0);
+ return;
+ }
+
Assert.assertEquals(auditLogs.size(), 1);
Assert.assertEquals(auditLogs.get(0).getUserToken(), context.getUserToken().toString());
Assert.assertEquals(auditLogs.get(0).getChangeType(), ChangeType.INSERT);