Search in sources :

Example 1 with Tag

use of org.killbill.billing.client.model.gen.Tag in project killbill by killbill.

the class TestInvoiceItem method testTags.

@Test(groups = "slow", description = "Add tags to invoice item")
public void testTags() throws Exception {
    final Account accountJson = createAccountNoPMBundleAndSubscriptionAndWaitForFirstInvoice();
    final Invoices invoicesJson = accountApi.getInvoicesForAccount(accountJson.getAccountId(), null, null, false, false, false, null, AuditLevel.NONE, requestOptions);
    Assert.assertNotNull(invoicesJson);
    Assert.assertEquals(invoicesJson.size(), 2);
    final List<InvoiceItem> invoiceItems = invoicesJson.get(0).getItems();
    Assert.assertNotNull(invoiceItems);
    // Create tag definition
    final TagDefinition input = new TagDefinition(null, false, "tagtest", "invoice item tag test", ImmutableList.<ObjectType>of(ObjectType.INVOICE_ITEM), null);
    final TagDefinition objFromJson = tagDefinitionApi.createTagDefinition(input, requestOptions);
    Assert.assertNotNull(objFromJson);
    Assert.assertEquals(objFromJson.getName(), input.getName());
    Assert.assertEquals(objFromJson.getDescription(), input.getDescription());
    // Add a tag
    final Multimap<String, String> followQueryParams = HashMultimap.create();
    followQueryParams.put(JaxrsResource.QUERY_ACCOUNT_ID, accountJson.getAccountId().toString());
    final RequestOptions followRequestOptions = requestOptions.extend().withQueryParamsForFollow(followQueryParams).build();
    invoiceItemApi.createInvoiceItemTags(invoiceItems.get(0).getInvoiceItemId(), ImmutableList.<UUID>of(objFromJson.getId()), followRequestOptions);
    // Retrieves all tags
    final List<Tag> tags1 = invoiceItemApi.getInvoiceItemTags(invoiceItems.get(0).getInvoiceItemId(), accountJson.getAccountId(), null, AuditLevel.FULL, requestOptions);
    Assert.assertEquals(tags1.size(), 1);
    Assert.assertEquals(tags1.get(0).getTagDefinitionId(), objFromJson.getId());
    // Verify adding the same tag a second time doesn't do anything
    invoiceItemApi.createInvoiceItemTags(invoiceItems.get(0).getInvoiceItemId(), ImmutableList.<UUID>of(objFromJson.getId()), followRequestOptions);
    // Retrieves all tags again
    final List<Tag> tags2 = invoiceItemApi.getInvoiceItemTags(invoiceItems.get(0).getInvoiceItemId(), accountJson.getAccountId(), null, AuditLevel.FULL, requestOptions);
    Assert.assertEquals(tags2, tags1);
    // Verify audit logs
    Assert.assertEquals(tags2.get(0).getAuditLogs().size(), 1);
    final AuditLog auditLogJson = tags2.get(0).getAuditLogs().get(0);
    Assert.assertEquals(auditLogJson.getChangeType(), "INSERT");
    Assert.assertEquals(auditLogJson.getChangedBy(), createdBy);
    Assert.assertEquals(auditLogJson.getReasonCode(), reason);
    Assert.assertEquals(auditLogJson.getComments(), comment);
    Assert.assertNotNull(auditLogJson.getChangeDate());
    Assert.assertNotNull(auditLogJson.getUserToken());
    // remove it
    invoiceItemApi.deleteInvoiceItemTags(invoiceItems.get(0).getInvoiceItemId(), ImmutableList.<UUID>of(objFromJson.getId()), requestOptions);
    final List<Tag> tags3 = invoiceItemApi.getInvoiceItemTags(invoiceItems.get(0).getInvoiceItemId(), accountJson.getAccountId(), null, AuditLevel.FULL, requestOptions);
    Assert.assertEquals(tags3.size(), 0);
    tagDefinitionApi.deleteTagDefinition(objFromJson.getId(), requestOptions);
    List<TagDefinition> objsFromJson = tagDefinitionApi.getTagDefinitions(requestOptions);
    Assert.assertNotNull(objsFromJson);
    Boolean isFound = false;
    for (TagDefinition tagDefinition : objsFromJson) {
        isFound |= tagDefinition.getId().equals(objFromJson.getId());
    }
    Assert.assertFalse(isFound);
}
Also used : Account(org.killbill.billing.client.model.gen.Account) TagDefinition(org.killbill.billing.client.model.gen.TagDefinition) InvoiceItem(org.killbill.billing.client.model.gen.InvoiceItem) RequestOptions(org.killbill.billing.client.RequestOptions) Invoices(org.killbill.billing.client.model.Invoices) AuditLog(org.killbill.billing.client.model.gen.AuditLog) Tag(org.killbill.billing.client.model.gen.Tag) Test(org.testng.annotations.Test)

Example 2 with Tag

use of org.killbill.billing.client.model.gen.Tag in project killbill by killbill.

the class TestAccount method testAccountPaymentMethods.

@Test(groups = "slow", description = "Can CRUD payment methods")
public void testAccountPaymentMethods() throws Exception {
    final Account accountJson = createAccount();
    assertNotNull(accountJson);
    final PaymentMethodPluginDetail info = new PaymentMethodPluginDetail();
    info.setProperties(getPaymentMethodCCProperties());
    PaymentMethod paymentMethodJson = new PaymentMethod(null, UUID.randomUUID().toString(), accountJson.getAccountId(), true, PLUGIN_NAME, info, EMPTY_AUDIT_LOGS);
    final PaymentMethod paymentMethodCC = accountApi.createPaymentMethod(accountJson.getAccountId(), paymentMethodJson, true, false, NULL_PLUGIN_NAMES, NULL_PLUGIN_PROPERTIES, requestOptions);
    assertTrue(paymentMethodCC.isDefault());
    // 
    // Add another payment method
    // 
    final PaymentMethodPluginDetail info2 = new PaymentMethodPluginDetail();
    info2.setProperties(getPaymentMethodPaypalProperties());
    paymentMethodJson = new PaymentMethod(null, UUID.randomUUID().toString(), accountJson.getAccountId(), false, PLUGIN_NAME, info2, EMPTY_AUDIT_LOGS);
    final PaymentMethod paymentMethodPP = accountApi.createPaymentMethod(accountJson.getAccountId(), paymentMethodJson, NULL_PLUGIN_NAMES, NULL_PLUGIN_PROPERTIES, requestOptions);
    assertFalse(paymentMethodPP.isDefault());
    // 
    // FETCH ALL PAYMENT METHODS
    // 
    List<PaymentMethod> paymentMethods = accountApi.getPaymentMethodsForAccount(accountJson.getAccountId(), NULL_PLUGIN_PROPERTIES, requestOptions);
    assertEquals(paymentMethods.size(), 2);
    // 
    // CHANGE DEFAULT
    // 
    assertTrue(paymentMethodApi.getPaymentMethod(paymentMethodCC.getPaymentMethodId(), NULL_PLUGIN_PROPERTIES, requestOptions).isDefault());
    assertFalse(paymentMethodApi.getPaymentMethod(paymentMethodPP.getPaymentMethodId(), NULL_PLUGIN_PROPERTIES, requestOptions).isDefault());
    accountApi.setDefaultPaymentMethod(accountJson.getAccountId(), paymentMethodPP.getPaymentMethodId(), NULL_PLUGIN_PROPERTIES, requestOptions);
    assertTrue(paymentMethodApi.getPaymentMethod(paymentMethodPP.getPaymentMethodId(), NULL_PLUGIN_PROPERTIES, requestOptions).isDefault());
    assertFalse(paymentMethodApi.getPaymentMethod(paymentMethodCC.getPaymentMethodId(), NULL_PLUGIN_PROPERTIES, requestOptions).isDefault());
    // 
    // DELETE NON DEFAULT PM
    // 
    paymentMethodApi.deletePaymentMethod(paymentMethodCC.getPaymentMethodId(), false, false, NULL_PLUGIN_PROPERTIES, requestOptions);
    // 
    // FETCH ALL PAYMENT METHODS
    // 
    paymentMethods = accountApi.getPaymentMethodsForAccount(accountJson.getAccountId(), NULL_PLUGIN_PROPERTIES, requestOptions);
    assertEquals(paymentMethods.size(), 1);
    // 
    try {
        paymentMethodApi.deletePaymentMethod(paymentMethodPP.getPaymentMethodId(), false, false, NULL_PLUGIN_PROPERTIES, requestOptions);
        fail();
    } catch (final KillBillClientException e) {
    }
    // 
    // RETRY TO DELETE DEFAULT PAYMENT METHOD (with special flag this time)
    // 
    paymentMethodApi.deletePaymentMethod(paymentMethodPP.getPaymentMethodId(), true, false, NULL_PLUGIN_PROPERTIES, requestOptions);
    // CHECK ACCOUNT IS NOW AUTO_PAY_OFF
    final List<Tag> tagsJson = accountApi.getAccountTags(accountJson.getAccountId(), requestOptions);
    Assert.assertEquals(tagsJson.size(), 1);
    final Tag tagJson = tagsJson.get(0);
    Assert.assertEquals(tagJson.getTagDefinitionName(), "AUTO_PAY_OFF");
    Assert.assertEquals(tagJson.getTagDefinitionId(), new UUID(0, 1));
    // FETCH ACCOUNT AGAIN AND CHECK THERE IS NO DEFAULT PAYMENT METHOD SET
    final Account updatedAccount = accountApi.getAccount(accountJson.getAccountId(), requestOptions);
    Assert.assertEquals(updatedAccount.getAccountId(), accountJson.getAccountId());
    Assert.assertNull(updatedAccount.getPaymentMethodId());
    // 
    try {
        accountApi.deleteAccountTags(accountJson.getAccountId(), ImmutableList.<UUID>of(new UUID(0, 1)), requestOptions);
    } catch (final KillBillClientException e) {
        Assert.assertTrue(e.getBillingException().getCode() == ErrorCode.TAG_CANNOT_BE_REMOVED.getCode());
    }
}
Also used : Account(org.killbill.billing.client.model.gen.Account) PaymentMethodPluginDetail(org.killbill.billing.client.model.gen.PaymentMethodPluginDetail) PaymentMethod(org.killbill.billing.client.model.gen.PaymentMethod) KillBillClientException(org.killbill.billing.client.KillBillClientException) Tag(org.killbill.billing.client.model.gen.Tag) UUID(java.util.UUID) Test(org.testng.annotations.Test)

Example 3 with Tag

use of org.killbill.billing.client.model.gen.Tag in project killbill by killbill.

the class TestAccount method testTags.

@Test(groups = "slow", description = "Add tags to account")
public void testTags() throws Exception {
    final Account input = createAccount();
    // Use tag definition for AUTO_PAY_OFF
    final UUID autoPayOffId = new UUID(0, 1);
    // Add a tag
    accountApi.createAccountTags(input.getAccountId(), ImmutableList.<UUID>of(autoPayOffId), requestOptions);
    // Retrieves all tags
    final List<Tag> tags1 = accountApi.getAccountTags(input.getAccountId(), false, AuditLevel.FULL, requestOptions);
    Assert.assertEquals(tags1.size(), 1);
    Assert.assertEquals(tags1.get(0).getTagDefinitionId(), autoPayOffId);
    // Verify adding the same tag a second time doesn't do anything
    accountApi.createAccountTags(input.getAccountId(), ImmutableList.<UUID>of(autoPayOffId), requestOptions);
    // Retrieves all tags again
    accountApi.createAccountTags(input.getAccountId(), ImmutableList.<UUID>of(autoPayOffId), requestOptions);
    final List<Tag> tags2 = accountApi.getAccountTags(input.getAccountId(), true, AuditLevel.FULL, requestOptions);
    Assert.assertEquals(tags2, tags1);
    // Verify audit logs
    Assert.assertEquals(tags2.get(0).getAuditLogs().size(), 1);
    final AuditLog auditLogJson = tags2.get(0).getAuditLogs().get(0);
    Assert.assertEquals(auditLogJson.getChangeType(), "INSERT");
    Assert.assertEquals(auditLogJson.getChangedBy(), createdBy);
    Assert.assertEquals(auditLogJson.getReasonCode(), reason);
    Assert.assertEquals(auditLogJson.getComments(), comment);
    Assert.assertNotNull(auditLogJson.getChangeDate());
    Assert.assertNotNull(auditLogJson.getUserToken());
}
Also used : Account(org.killbill.billing.client.model.gen.Account) Tag(org.killbill.billing.client.model.gen.Tag) UUID(java.util.UUID) AuditLog(org.killbill.billing.client.model.gen.AuditLog) Test(org.testng.annotations.Test)

Example 4 with Tag

use of org.killbill.billing.client.model.gen.Tag in project killbill by killbill.

the class TestTag method testTagsPagination.

@Test(groups = "slow", description = "Can paginate through all tags")
public void testTagsPagination() throws Exception {
    final Account account = createAccount();
    for (int i = 0; i < 5; i++) {
        final TagDefinition tagDefinition = new TagDefinition(null, false, "td-" + i, UUID.randomUUID().toString(), ImmutableList.<ObjectType>of(ObjectType.ACCOUNT), null);
        final UUID tagDefinitionId = tagDefinitionApi.createTagDefinition(tagDefinition, requestOptions).getId();
        accountApi.createAccountTags(account.getAccountId(), ImmutableList.<UUID>of(tagDefinitionId), requestOptions);
    }
    final Tags allTags = accountApi.getAccountTags(account.getAccountId(), requestOptions);
    Assert.assertEquals(allTags.size(), 5);
    Tags page = tagApi.getTags(0L, 1L, AuditLevel.NONE, requestOptions);
    for (int i = 0; i < 5; i++) {
        Assert.assertNotNull(page);
        Assert.assertEquals(page.size(), 1);
        final Tag targetTag = page.get(0);
        Assert.assertTrue(Iterables.any(allTags, new Predicate<Tag>() {

            @Override
            public boolean apply(@Nullable final Tag input) {
                return input.equals(targetTag);
            }
        }));
        page = page.getNext();
    }
    Assert.assertNull(page);
    for (final Tag tag : allTags) {
        doSearchTag(UUID.randomUUID().toString(), null);
        doSearchTag(tag.getTagId().toString(), tag);
        doSearchTag(tag.getTagDefinitionName(), tag);
        final TagDefinition tagDefinition = tagDefinitionApi.getTagDefinition(tag.getTagDefinitionId(), requestOptions);
        doSearchTag(tagDefinition.getDescription(), tag);
    }
    final Tags tags = tagApi.searchTags(ObjectType.ACCOUNT.toString(), requestOptions);
    Assert.assertEquals(tags.size(), 5);
    Assert.assertEquals(tags.getPaginationCurrentOffset(), 0);
    Assert.assertEquals(tags.getPaginationTotalNbRecords(), 5);
    Assert.assertEquals(tags.getPaginationMaxNbRecords(), 5);
}
Also used : Account(org.killbill.billing.client.model.gen.Account) TagDefinition(org.killbill.billing.client.model.gen.TagDefinition) Tag(org.killbill.billing.client.model.gen.Tag) UUID(java.util.UUID) Tags(org.killbill.billing.client.model.Tags) SystemTags(org.killbill.billing.util.tag.dao.SystemTags) Nullable(javax.annotation.Nullable) Predicate(com.google.common.base.Predicate) Test(org.testng.annotations.Test)

Aggregations

Account (org.killbill.billing.client.model.gen.Account)4 Tag (org.killbill.billing.client.model.gen.Tag)4 Test (org.testng.annotations.Test)4 UUID (java.util.UUID)3 AuditLog (org.killbill.billing.client.model.gen.AuditLog)2 TagDefinition (org.killbill.billing.client.model.gen.TagDefinition)2 Predicate (com.google.common.base.Predicate)1 Nullable (javax.annotation.Nullable)1 KillBillClientException (org.killbill.billing.client.KillBillClientException)1 RequestOptions (org.killbill.billing.client.RequestOptions)1 Invoices (org.killbill.billing.client.model.Invoices)1 Tags (org.killbill.billing.client.model.Tags)1 InvoiceItem (org.killbill.billing.client.model.gen.InvoiceItem)1 PaymentMethod (org.killbill.billing.client.model.gen.PaymentMethod)1 PaymentMethodPluginDetail (org.killbill.billing.client.model.gen.PaymentMethodPluginDetail)1 SystemTags (org.killbill.billing.util.tag.dao.SystemTags)1