diff --git a/server/src/test/java/com/ning/billing/jaxrs/TestAccount.java b/server/src/test/java/com/ning/billing/jaxrs/TestAccount.java
index fab5627..7f6c232 100644
--- a/server/src/test/java/com/ning/billing/jaxrs/TestAccount.java
+++ b/server/src/test/java/com/ning/billing/jaxrs/TestAccount.java
@@ -55,39 +55,27 @@ import static org.testng.Assert.assertTrue;
public class TestAccount extends TestJaxrsBase {
- private static final Logger log = LoggerFactory.getLogger(TestAccount.class);
-
@Test(groups = "slow")
public void testAccountOk() throws Exception {
-
- final AccountJson input = createAccount("xoxo", "shdgfhwe", "xoxo@yahoo.com");
+ final AccountJson input = createAccount();
// Retrieves by external key
- final Map<String, String> queryParams = new HashMap<String, String>();
- queryParams.put(JaxrsResource.QUERY_EXTERNAL_KEY, "shdgfhwe");
- Response response = doGet(JaxrsResource.ACCOUNTS_PATH, queryParams, DEFAULT_HTTP_TIMEOUT_SEC);
- Assert.assertEquals(response.getStatusCode(), Status.OK.getStatusCode());
- String baseJson = response.getResponseBody();
- AccountJson objFromJson = mapper.readValue(baseJson, AccountJson.class);
- Assert.assertTrue(objFromJson.equals(input));
+ final AccountJson retrievedAccount = getAccountByExternalKey(input.getExternalKey());
+ Assert.assertTrue(retrievedAccount.equals(input));
// Update Account
- final AccountJson newInput = new AccountJson(objFromJson.getAccountId(),
- "zozo", 4, objFromJson.getExternalKey(), "rr@google.com", new BillCycleDayJson(18, 18),
+ final AccountJson newInput = new AccountJson(input.getAccountId(),
+ "zozo", 4, input.getExternalKey(), "rr@google.com", new BillCycleDayJson(18, 18),
"USD", null, "UTC", "bl1", "bh2", "", "", "ca", "San Francisco", "usa", "en", "415-255-2991",
false, false);
- baseJson = mapper.writeValueAsString(newInput);
- final String uri = JaxrsResource.ACCOUNTS_PATH + "/" + objFromJson.getAccountId();
- response = doPut(uri, baseJson, DEFAULT_EMPTY_QUERY, DEFAULT_HTTP_TIMEOUT_SEC);
- Assert.assertEquals(response.getStatusCode(), Status.OK.getStatusCode());
- baseJson = response.getResponseBody();
- objFromJson = mapper.readValue(baseJson, AccountJson.class);
- Assert.assertTrue(objFromJson.equals(newInput));
+ final AccountJson updatedAccount = updateAccount(input.getAccountId(), newInput);
+ Assert.assertTrue(updatedAccount.equals(newInput));
}
@Test(groups = "slow")
public void testUpdateNonExistentAccount() throws Exception {
- final AccountJson input = getAccountJson("xoxo", "shghaahwe", "xoxo@yahoo.com");
+ final AccountJson input = getAccountJson();
+
final String baseJson = mapper.writeValueAsString(input);
final String uri = JaxrsResource.ACCOUNTS_PATH + "/" + input.getAccountId();
final Response response = doPut(uri, baseJson, DEFAULT_EMPTY_QUERY, DEFAULT_HTTP_TIMEOUT_SEC);
@@ -110,37 +98,16 @@ public class TestAccount extends TestJaxrsBase {
@Test(groups = "slow")
public void testAccountTimeline() throws Exception {
-
clock.setTime(new DateTime(2012, 4, 25, 0, 3, 42, 0));
- final AccountJson accountJson = createAccountWithDefaultPaymentMethod("poney", "shdddqgfhwe", "poney@yahoo.com");
- assertNotNull(accountJson);
-
- final BundleJsonNoSubscriptions bundleJson = createBundle(accountJson.getAccountId(), "996599");
- assertNotNull(bundleJson);
-
- final SubscriptionJsonNoEvents subscriptionJson = createSubscription(bundleJson.getBundleId(), "Shotgun", ProductCategory.BASE.toString(), BillingPeriod.MONTHLY.toString(), true);
- assertNotNull(subscriptionJson);
-
- // MOVE AFTER TRIAL
- clock.addDays(31);
-
- crappyWaitForLackOfProperSynchonization();
-
- final String uri = JaxrsResource.ACCOUNTS_PATH + "/" + accountJson.getAccountId() + "/" + JaxrsResource.TIMELINE;
+ final AccountJson accountJson = createAccountWithPMBundleAndSubscriptionAndWaitForFirstInvoice();
- final Response response = doGet(uri, DEFAULT_EMPTY_QUERY, DEFAULT_HTTP_TIMEOUT_SEC);
- Assert.assertEquals(response.getStatusCode(), Status.OK.getStatusCode());
- final String baseJson = response.getResponseBody();
- final AccountTimelineJson objFromJson = mapper.readValue(baseJson, AccountTimelineJson.class);
- assertNotNull(objFromJson);
- log.info(baseJson);
-
- Assert.assertEquals(objFromJson.getPayments().size(), 1);
- Assert.assertEquals(objFromJson.getInvoices().size(), 2);
- Assert.assertEquals(objFromJson.getBundles().size(), 1);
- Assert.assertEquals(objFromJson.getBundles().get(0).getSubscriptions().size(), 1);
- Assert.assertEquals(objFromJson.getBundles().get(0).getSubscriptions().get(0).getEvents().size(), 2);
+ final AccountTimelineJson timeline = getAccountTimeline(accountJson.getAccountId());
+ Assert.assertEquals(timeline.getPayments().size(), 1);
+ Assert.assertEquals(timeline.getInvoices().size(), 2);
+ Assert.assertEquals(timeline.getBundles().size(), 1);
+ Assert.assertEquals(timeline.getBundles().get(0).getSubscriptions().size(), 1);
+ Assert.assertEquals(timeline.getBundles().get(0).getSubscriptions().get(0).getEvents().size(), 2);
}
@Test(groups = "slow")
@@ -280,36 +247,15 @@ public class TestAccount extends TestJaxrsBase {
@Test(groups = "slow")
public void testAccountPaymentsWithRefund() throws Exception {
+ final AccountJson accountJson = createAccountWithPMBundleAndSubscriptionAndWaitForFirstInvoice();
- //clock.setTime(new DateTime(2012, 4, 25, 0, 3, 42, 0));
-
- final AccountJson accountJson = createAccountWithDefaultPaymentMethod("ermenehildo", "shtyrgfhwe", "ermenehildo@yahoo.com");
- assertNotNull(accountJson);
-
- final BundleJsonNoSubscriptions bundleJson = createBundle(accountJson.getAccountId(), "396199");
- assertNotNull(bundleJson);
-
- final SubscriptionJsonNoEvents subscriptionJson = createSubscription(bundleJson.getBundleId(), "Shotgun", ProductCategory.BASE.toString(), BillingPeriod.MONTHLY.toString(), true);
- assertNotNull(subscriptionJson);
-
- clock.addMonths(1);
- crappyWaitForLackOfProperSynchonization();
-
- String uri = JaxrsResource.ACCOUNTS_PATH + "/" + accountJson.getAccountId() + "/" + JaxrsResource.PAYMENTS;
-
- Response response = doGet(uri, DEFAULT_EMPTY_QUERY, DEFAULT_HTTP_TIMEOUT_SEC);
- Assert.assertEquals(response.getStatusCode(), Status.OK.getStatusCode());
- String baseJson = response.getResponseBody();
- List<PaymentJsonSimple> objFromJson = mapper.readValue(baseJson, new TypeReference<List<PaymentJsonSimple>>() {});
+ // Verify payments
+ final List<PaymentJsonSimple> objFromJson = getPaymentsForAccount(accountJson.getAccountId());
Assert.assertEquals(objFromJson.size(), 1);
- uri = JaxrsResource.ACCOUNTS_PATH + "/" + accountJson.getAccountId() + "/" + JaxrsResource.REFUNDS;
- response = doGet(uri, DEFAULT_EMPTY_QUERY, DEFAULT_HTTP_TIMEOUT_SEC);
- Assert.assertEquals(response.getStatusCode(), Status.OK.getStatusCode());
- baseJson = response.getResponseBody();
- List<RefundJson> objRefundFromJson = mapper.readValue(baseJson, new TypeReference<List<RefundJson>>() {});
+ // Verify refunds
+ final List<RefundJson> objRefundFromJson = getRefundsForAccount(accountJson.getAccountId());
Assert.assertEquals(objRefundFromJson.size(), 0);
-
}
@Test(groups = "slow")
diff --git a/server/src/test/java/com/ning/billing/jaxrs/TestJaxrsBase.java b/server/src/test/java/com/ning/billing/jaxrs/TestJaxrsBase.java
index 1ab8f18..3de0e0e 100644
--- a/server/src/test/java/com/ning/billing/jaxrs/TestJaxrsBase.java
+++ b/server/src/test/java/com/ning/billing/jaxrs/TestJaxrsBase.java
@@ -64,6 +64,7 @@ import com.ning.billing.invoice.api.InvoiceNotifier;
import com.ning.billing.invoice.glue.DefaultInvoiceModule;
import com.ning.billing.invoice.notification.NullInvoiceNotifier;
import com.ning.billing.jaxrs.json.AccountJson;
+import com.ning.billing.jaxrs.json.AccountTimelineJson;
import com.ning.billing.jaxrs.json.BillCycleDayJson;
import com.ning.billing.jaxrs.json.BundleJsonNoSubscriptions;
import com.ning.billing.jaxrs.json.InvoiceItemJsonSimple;
@@ -359,6 +360,19 @@ public class TestJaxrsBase extends ServerTestSuiteWithEmbeddedDB {
return objFromJson;
}
+ protected AccountTimelineJson getAccountTimeline(final String accountId) throws Exception {
+ final String uri = JaxrsResource.ACCOUNTS_PATH + "/" + accountId + "/" + JaxrsResource.TIMELINE;
+
+ final Response response = doGet(uri, DEFAULT_EMPTY_QUERY, DEFAULT_HTTP_TIMEOUT_SEC);
+ Assert.assertEquals(response.getStatusCode(), Status.OK.getStatusCode());
+
+ final String baseJson = response.getResponseBody();
+ final AccountTimelineJson objFromJson = mapper.readValue(baseJson, AccountTimelineJson.class);
+ assertNotNull(objFromJson);
+
+ return objFromJson;
+ }
+
protected AccountJson createAccountWithDefaultPaymentMethod(final String name, final String key, final String email) throws Exception {
final AccountJson input = createAccount(name, key, email);
@@ -383,6 +397,10 @@ public class TestJaxrsBase extends ServerTestSuiteWithEmbeddedDB {
return objFromJson;
}
+ protected AccountJson createAccount() throws Exception {
+ return createAccount(UUID.randomUUID().toString(), UUID.randomUUID().toString(), UUID.randomUUID().toString().substring(0, 5) + '@' + UUID.randomUUID().toString().substring(0, 5));
+ }
+
protected AccountJson createAccount(final String name, final String key, final String email) throws Exception {
final AccountJson input = getAccountJson(name, key, email);
String baseJson = mapper.writeValueAsString(input);
@@ -402,6 +420,20 @@ public class TestJaxrsBase extends ServerTestSuiteWithEmbeddedDB {
return objFromJson;
}
+ protected AccountJson updateAccount(final String accountId, final AccountJson newInput) throws Exception {
+ final String baseJson = mapper.writeValueAsString(newInput);
+
+ final String uri = JaxrsResource.ACCOUNTS_PATH + "/" + accountId;
+ final Response response = doPut(uri, baseJson, DEFAULT_EMPTY_QUERY, DEFAULT_HTTP_TIMEOUT_SEC);
+ Assert.assertEquals(response.getStatusCode(), Status.OK.getStatusCode());
+
+ final String retrievedJson = response.getResponseBody();
+ final AccountJson objFromJson = mapper.readValue(retrievedJson, AccountJson.class);
+ assertNotNull(objFromJson);
+
+ return objFromJson;
+ }
+
protected BundleJsonNoSubscriptions createBundle(final String accountId, final String key) throws Exception {
final BundleJsonNoSubscriptions input = new BundleJsonNoSubscriptions(null, accountId, key, null, null);
String baseJson = mapper.writeValueAsString(input);
@@ -699,6 +731,18 @@ public class TestJaxrsBase extends ServerTestSuiteWithEmbeddedDB {
// REFUNDS
//
+ protected List<RefundJson> getRefundsForAccount(final String accountId) throws IOException {
+ final String uri = JaxrsResource.ACCOUNTS_PATH + "/" + accountId + "/" + JaxrsResource.REFUNDS;
+ final Response response = doGet(uri, DEFAULT_EMPTY_QUERY, DEFAULT_HTTP_TIMEOUT_SEC);
+
+ Assert.assertEquals(response.getStatusCode(), Status.OK.getStatusCode());
+ final String baseJson = response.getResponseBody();
+ List<RefundJson> refunds = mapper.readValue(baseJson, new TypeReference<List<RefundJson>>() {});
+ assertNotNull(refunds);
+
+ return refunds;
+ }
+
protected List<RefundJson> getRefundsForPayment(final String paymentId) throws IOException {
final String uri = JaxrsResource.PAYMENTS_PATH + "/" + paymentId + "/" + JaxrsResource.REFUNDS;
final Response response = doGet(uri, DEFAULT_EMPTY_QUERY, DEFAULT_HTTP_TIMEOUT_SEC);
@@ -849,6 +893,10 @@ public class TestJaxrsBase extends ServerTestSuiteWithEmbeddedDB {
return builder;
}
+ protected AccountJson getAccountJson() {
+ return getAccountJson(UUID.randomUUID().toString(), UUID.randomUUID().toString(), UUID.randomUUID().toString().substring(0, 5) + '@' + UUID.randomUUID().toString().substring(0, 5));
+ }
+
public AccountJson getAccountJson(final String name, final String externalKey, final String email) {
final String accountId = UUID.randomUUID().toString();
final int length = 4;