diff --git a/src/main/java/SecureNetRestApiSDK/Api/Models/ExtendedInformation.java b/src/main/java/SecureNetRestApiSDK/Api/Models/ExtendedInformation.java index 8400161..acdc564 100755 --- a/src/main/java/SecureNetRestApiSDK/Api/Models/ExtendedInformation.java +++ b/src/main/java/SecureNetRestApiSDK/Api/Models/ExtendedInformation.java @@ -154,8 +154,32 @@ public String getInvoiceDescription() { public void setInvoiceDescription(String value) { invoiceDescription = value; + } + + /** + * Displays a description in addition to the merchants DBA. + */ + private String softDescriptor = new String(); + public String getSoftDescriptor() { + return softDescriptor; + } + + public void setSoftDescriptor(String value) { + softDescriptor = value; } + /** + * Displays a 4 characters dynamic merchant category code. + */ + private String dynamicMCC = new String(); + public String getDynamicMCC() { + return dynamicMCC; + } + + public void setDynamicMCC(String value) { + dynamicMCC = value; + } + } diff --git a/src/main/java/SecureNetRestApiSDK/Api/Models/InstallmentPaymentPlan.java b/src/main/java/SecureNetRestApiSDK/Api/Models/InstallmentPaymentPlan.java index deb0c5a..722df7f 100755 --- a/src/main/java/SecureNetRestApiSDK/Api/Models/InstallmentPaymentPlan.java +++ b/src/main/java/SecureNetRestApiSDK/Api/Models/InstallmentPaymentPlan.java @@ -219,6 +219,25 @@ public void setUserDefinedFields(List value) { userDefinedFields = value; } + private String softDescriptor = new String(); + + public String getSoftDescriptor() { + return softDescriptor; + } + + public void setSoftDescriptor(String value) { + softDescriptor = value; + } + + private String dynamicMCC = new String(); + public String getDynamicMCC() { + return dynamicMCC; + } + + public void setDynamicMCC(String value) { + dynamicMCC = value; + } + } diff --git a/src/main/java/SecureNetRestApiSDK/Api/Models/RecurringPaymentPlan.java b/src/main/java/SecureNetRestApiSDK/Api/Models/RecurringPaymentPlan.java index fa34aba..1136201 100755 --- a/src/main/java/SecureNetRestApiSDK/Api/Models/RecurringPaymentPlan.java +++ b/src/main/java/SecureNetRestApiSDK/Api/Models/RecurringPaymentPlan.java @@ -154,6 +154,23 @@ public void setUserDefinedFields(List value) { userDefinedFields = value; } -} - - + + private String softDescriptor = new String(); + public String getSoftDescriptor() { + return softDescriptor; + } + + public void setSoftDescriptor(String value) { + softDescriptor = value; + } + + private String dynamicMCC = new String(); + public String getDynamicMCC() { + return dynamicMCC; + } + + public void setDynamicMCC(String value) { + dynamicMCC = value; + } + +} diff --git a/src/main/java/SecureNetRestApiSDK/Api/Models/StoredInstallmentPaymentPlan.java b/src/main/java/SecureNetRestApiSDK/Api/Models/StoredInstallmentPaymentPlan.java index 6307441..2b69126 100755 --- a/src/main/java/SecureNetRestApiSDK/Api/Models/StoredInstallmentPaymentPlan.java +++ b/src/main/java/SecureNetRestApiSDK/Api/Models/StoredInstallmentPaymentPlan.java @@ -7,6 +7,23 @@ public class StoredInstallmentPaymentPlan { + private String softDescriptor = new String(); + public String getSoftDescriptor() { + return softDescriptor; + } + + public void setSoftDescriptor(String value) { + softDescriptor = value; + } + + private String dynamicMCC = new String(); + public String getDynamicMCC() { + return dynamicMCC; + } + + public void setDynamicMCC(String value) { + dynamicMCC = value; + } } diff --git a/src/main/java/SecureNetRestApiSDK/Api/Models/StoredRecurringPaymentPlan.java b/src/main/java/SecureNetRestApiSDK/Api/Models/StoredRecurringPaymentPlan.java index 4e36681..0e98951 100755 --- a/src/main/java/SecureNetRestApiSDK/Api/Models/StoredRecurringPaymentPlan.java +++ b/src/main/java/SecureNetRestApiSDK/Api/Models/StoredRecurringPaymentPlan.java @@ -161,7 +161,25 @@ public List getSchedules() { public void setSchedules(List value) { schedules = value; } - -} - - + + private String softDescriptor = new String(); + public String getSoftDescriptor() { + return softDescriptor; + } + + public void setSoftDescriptor(String value) { + softDescriptor = value; + } + + private String dynamicMCC = new String(); + public String getDynamicMCC() { + return dynamicMCC; + } + + public void setDynamicMCC(String value) { + dynamicMCC = value; + } + +} + + diff --git a/src/main/java/SecureNetRestApiSDK/Api/Models/StoredVariablePaymentPlan.java b/src/main/java/SecureNetRestApiSDK/Api/Models/StoredVariablePaymentPlan.java index c1301b5..cd36f43 100755 --- a/src/main/java/SecureNetRestApiSDK/Api/Models/StoredVariablePaymentPlan.java +++ b/src/main/java/SecureNetRestApiSDK/Api/Models/StoredVariablePaymentPlan.java @@ -4,17 +4,15 @@ package SecureNetRestApiSDK.Api.Models; -import java.util.Date; - public class StoredVariablePaymentPlan { - private Date planStartDate = new Date(); - public Date getPlanStartDate() { + private Object planStartDate = new Object(); + public Object getPlanStartDate() { return planStartDate; } - public void setPlanStartDate(Date value) { + public void setPlanStartDate(Object value) { planStartDate = value; } @@ -43,8 +41,26 @@ public String getNotes() { public void setNotes(String value) { notes = value; + } + + private String softDescriptor = new String(); + public String getSoftDescriptor() { + return softDescriptor; + } + + public void setSoftDescriptor(String value) { + softDescriptor = value; } + private String dynamicMCC = new String(); + public String getDynamicMCC() { + return dynamicMCC; + } + + public void setDynamicMCC(String value) { + dynamicMCC = value; + } + } diff --git a/src/main/java/SecureNetRestApiSDK/Api/Models/Transaction.java b/src/main/java/SecureNetRestApiSDK/Api/Models/Transaction.java index a171213..2ec7d4a 100755 --- a/src/main/java/SecureNetRestApiSDK/Api/Models/Transaction.java +++ b/src/main/java/SecureNetRestApiSDK/Api/Models/Transaction.java @@ -447,7 +447,25 @@ public Object getImageResult() { public void setImageResult(Object value) { imageResult = value; } - -} - - + + private String softDescriptor = new String(); + public String getSoftDescriptor() { + return softDescriptor; + } + + public void setSoftDescriptor(String value) { + softDescriptor = value; + } + + private String dynamicMCC = new String(); + public String getDynamicMCC() { + return dynamicMCC; + } + + public void setDynamicMCC(String value) { + dynamicMCC = value; + } + +} + + diff --git a/src/main/java/SecureNetRestApiSDK/Api/Models/VariablePaymentPlan.java b/src/main/java/SecureNetRestApiSDK/Api/Models/VariablePaymentPlan.java index 4cb32b6..dedcc47 100755 --- a/src/main/java/SecureNetRestApiSDK/Api/Models/VariablePaymentPlan.java +++ b/src/main/java/SecureNetRestApiSDK/Api/Models/VariablePaymentPlan.java @@ -7,8 +7,8 @@ public class VariablePaymentPlan extends StoredVariablePaymentPlan { - private Date planEndDate = new Date(); - public Date getPlanEndDate() { + private Object planEndDate = new Object(); + public Object getPlanEndDate() { return planEndDate; } diff --git a/src/main/java/SecureNetRestApiSDK/Api/Requests/CreditRequest.java b/src/main/java/SecureNetRestApiSDK/Api/Requests/CreditRequest.java index a6af07b..e710859 100755 --- a/src/main/java/SecureNetRestApiSDK/Api/Requests/CreditRequest.java +++ b/src/main/java/SecureNetRestApiSDK/Api/Requests/CreditRequest.java @@ -6,6 +6,7 @@ import SNET.Core.HttpMethodEnum; import SecureNetRestApiSDK.Api.Models.Card; +import SecureNetRestApiSDK.Api.Models.ExtendedInformation; public class CreditRequest extends SecureNetRequest { @@ -27,6 +28,20 @@ public void setCard(Card value) { card = value; } + + /** + * Additional data to assist in reporting, ecommerce or moto transactions, + * and level 2 or level 3 processing. Includes user-defined fields and + * invoice-related information. + */ + private ExtendedInformation extendedInformation; + public ExtendedInformation getExtendedInformation(){ + return extendedInformation; + } + + public void setExtendedInformation(ExtendedInformation value) { + extendedInformation = value; + } public String getUri() throws Exception { return "api/Payments/Credit"; diff --git a/src/main/java/SecureNetRestApiSDK/Api/Requests/UpdateVariablePaymentPlanRequest.java b/src/main/java/SecureNetRestApiSDK/Api/Requests/UpdateVariablePaymentPlanRequest.java index 4b43554..6df0f7c 100755 --- a/src/main/java/SecureNetRestApiSDK/Api/Requests/UpdateVariablePaymentPlanRequest.java +++ b/src/main/java/SecureNetRestApiSDK/Api/Requests/UpdateVariablePaymentPlanRequest.java @@ -3,6 +3,7 @@ // package SecureNetRestApiSDK.Api.Requests; +import SecureNetRestApiSDK.Api.Models.VariablePaymentPlan; import SNET.Core.HttpMethodEnum; @@ -26,17 +27,17 @@ public void setPlanId(String value) { planId = value; } - private Object plan = new Object(); - public Object getPlan() { + private VariablePaymentPlan plan = new VariablePaymentPlan(); + public VariablePaymentPlan getPlan() { return plan; } - public void setPlan(Object value) { + public void setPlan(VariablePaymentPlan value) { plan = value; } public String getUri() throws Exception { - return String.format("api/Customers/%s/PaymentSchedules/variable/%s", getCustomerId(), getPlan().toString()); + return String.format("api/Customers/%s/PaymentSchedules/variable/%s", getCustomerId(), getPlanId().toString()); } public HttpMethodEnum getMethod() throws Exception { diff --git a/src/main/java/SecureNetRestApiSDK/Api/Responses/UpdateVariablePaymentPlanResponse.java b/src/main/java/SecureNetRestApiSDK/Api/Responses/UpdateVariablePaymentPlanResponse.java index 2a5b6a2..c033817 100755 --- a/src/main/java/SecureNetRestApiSDK/Api/Responses/UpdateVariablePaymentPlanResponse.java +++ b/src/main/java/SecureNetRestApiSDK/Api/Responses/UpdateVariablePaymentPlanResponse.java @@ -4,10 +4,37 @@ package SecureNetRestApiSDK.Api.Responses; +import SecureNetRestApiSDK.Api.Models.StoredVariablePaymentPlan; import SecureNetRestApiSDK.Api.Responses.SecureNetResponse; public class UpdateVariablePaymentPlanResponse extends SecureNetResponse { + private Object storedInstallmentPaymentPlan = new Object(); + public Object getStoredInstallmentPaymentPlan() { + return storedInstallmentPaymentPlan; + } + + public void setStoredInstallmentPaymentPlan(Object value) { + storedInstallmentPaymentPlan = value; + } + + private Object storedRecurringPaymentPlan; + public Object getStoredRecurringPaymentPlan() { + return storedRecurringPaymentPlan; + } + + public void setStoredRecurringPaymentPlan(Object value) { + storedRecurringPaymentPlan = value; + } + + private StoredVariablePaymentPlan storedVariablePaymentPlan = new StoredVariablePaymentPlan(); + public StoredVariablePaymentPlan getStoredVariablePaymentPlan() { + return storedVariablePaymentPlan; + } + + public void setStoredVariablePaymentPlan(StoredVariablePaymentPlan value) { + storedVariablePaymentPlan = value; + } } diff --git a/src/main/resources/config.properties b/src/main/resources/config.properties index 48e796b..8c726e5 100755 --- a/src/main/resources/config.properties +++ b/src/main/resources/config.properties @@ -8,3 +8,5 @@ developerId=12345678 versionId=1.2 publicKey=2c28646f-abc4-48f9-af60-6060e5f533d8 origin=testing.com +isSoftDescriptorEnabled=true +isDynamicMCCEnabled=true \ No newline at end of file diff --git a/src/test/java/test/HelperTest.java b/src/test/java/test/HelperTest.java new file mode 100644 index 0000000..6c14d8e --- /dev/null +++ b/src/test/java/test/HelperTest.java @@ -0,0 +1,51 @@ +package test; + +import org.junit.Before; + +import java.io.IOException; +import java.io.InputStream; +import java.util.Properties; + +public class HelperTest { + private Boolean _isSoftDescriptorEnabled ; + private Boolean _isDynamicMCCEnabled ; + private String SoftDescriptorValue = "Valid Soft Descriptor"; + private String DynamicMCCValue = "2047"; + private Properties config ; + private String _requestSoftDescriptor; + private String _responseSoftDescriptor; + private String _requestDynamicMCC; + private String _responseDynamicMCC; + + public HelperTest() throws IOException { + InputStream stream = this.getClass().getResourceAsStream("/config.properties"); + config = new Properties(); + config.load(stream); + _isSoftDescriptorEnabled = Boolean.parseBoolean(config.getProperty("isSoftDescriptorEnabled")); + _requestSoftDescriptor = _isSoftDescriptorEnabled ? SoftDescriptorValue : null; + _responseSoftDescriptor = _isSoftDescriptorEnabled ? SoftDescriptorValue : ""; + _isDynamicMCCEnabled = Boolean.parseBoolean(config.getProperty("isDynamicMCCEnabled")); + _requestDynamicMCC = _isDynamicMCCEnabled ? DynamicMCCValue : null; + _responseDynamicMCC = _isDynamicMCCEnabled ? DynamicMCCValue : ""; + } + + public String getRequestSoftDescriptor() + { + return _requestSoftDescriptor; + } + + public String getResponseSoftDescriptor() + { + return _responseSoftDescriptor; + } + + public String getRequestDynamicMCC() + { + return _requestDynamicMCC; + } + + public String getResponseDynamicMCC() + { + return _responseDynamicMCC; + } +} \ No newline at end of file diff --git a/src/test/java/test/controllers/CustomersControllerTest.java b/src/test/java/test/controllers/CustomersControllerTest.java index 2540156..b743af2 100755 --- a/src/test/java/test/controllers/CustomersControllerTest.java +++ b/src/test/java/test/controllers/CustomersControllerTest.java @@ -3,7 +3,10 @@ package test.controllers; +import java.io.IOException; import java.io.InputStream; +import java.text.ParseException; +import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -23,6 +26,8 @@ import SecureNetRestApiSDK.Api.Models.PaymentVaultToken; import SecureNetRestApiSDK.Api.Models.RecurringPaymentPlan; import SecureNetRestApiSDK.Api.Models.UserDefinedField; +import SecureNetRestApiSDK.Api.Models.VariablePaymentPlan; +import SecureNetRestApiSDK.Api.Models.Schedule; import SecureNetRestApiSDK.Api.Requests.AddInstallmentPaymentPlanRequest; import SecureNetRestApiSDK.Api.Requests.AddPaymentMethodRequest; import SecureNetRestApiSDK.Api.Requests.AddRecurringPaymentPlanRequest; @@ -55,16 +60,19 @@ import SecureNetRestApiSDK.Api.Responses.UpdateRecurringPaymentPlanResponse; import SecureNetRestApiSDK.Api.Responses.UpdateVariablePaymentPlanResponse; import SecureNetRestApiSDK.Api.Responses.VaultCustomerAndPaymentMethodResponse; +import test.HelperTest; public class CustomersControllerTest { Properties config ; + HelperTest helper; @Before public void before() throws Exception{ InputStream stream = this.getClass().getResourceAsStream("/config.properties"); config = new Properties(); config.load(stream); + helper = new HelperTest(); } @@ -129,8 +137,8 @@ public void secureNetVaultCreateCustomerAndPaymentAccountRequestReturnsSuccessfu // Act /* [UNSUPPORTED] 'var' as type is unsupported "var" */ VaultCustomerAndPaymentMethodResponse response = (VaultCustomerAndPaymentMethodResponse) controller.processRequest(apiContext, request,VaultCustomerAndPaymentMethodResponse.class); - Assert.assertTrue(response.toResponseString(), response.getSuccess()); // Assert + Assert.assertTrue(response.toResponseString(), response.getSuccess()); } /** @@ -151,8 +159,8 @@ public void secureNetVaultStoreAccountAfterChargeRequestReturnsSuccessfully() // Act /* [UNSUPPORTED] 'var' as type is unsupported "var" */ ChargeResponse response = (ChargeResponse) controller.processRequest(apiContext, request,ChargeResponse.class); - Assert.assertTrue(response.toResponseString(),response.getSuccess()); // Assert + Assert.assertTrue(response.toResponseString(),response.getSuccess()); } /** @@ -176,8 +184,8 @@ public void recurringBillingCreateRetrieveUpdateAndDeleteInstallmentPlanRequests recurringBillingRetrievePaymentPlanRequestReturnsSuccessfully( customerId, planId); // Update the Installment Plan - /*recurringBillingUpdateInstallmentPlanRequestReturnsSuccessfully( - customerId, planId);*/ + recurringBillingUpdateInstallmentPlanrequestReturnsSuccessfully( + customerId, planId); // Delete the Payment Account /*secureNetVaultDeletePaymentAccountRequestReturnsSuccessfully( customerId, paymentMethodId);*/ @@ -210,6 +218,34 @@ public void recurringBillingCreateRetrieveUpdateAndDeleteRecurringPaymentPlanReq /*secureNetVaultDeletePaymentAccountRequestReturnsSuccessfully( customerId, paymentMethodId);*/ } + + /** + * Unit Tests for Creating a Payment Account, Creating a Variable Payment + * Plan, Updating the Variable Payment Plan, Retrieving the Variable + * Payment Plan, and deleting the Variable Payment Plan requests. Tests + * combined in one method to pass the required payment method identifier, + * the plan identifier and to guaranteee the order of operation. + */ + @Test + public void recurringBillingCreateRetrieveUpdateAndDeleteVariablePaymentPlanRequestsReturnsSuccessfully() + throws Exception { + // Create the Customer + String customerId = secureNetVaultCreateCustomerRequestReturnsSuccessfully(); + // Create the Payment Account + String paymentMethodId = secureNetVaultCreatePaymentAccountRequestReturnsSuccessfully(customerId); + // Create the Variable Payment Plan + String planId = recurringBillingCreateVariablePaymentPlanRequestReturnsSuccessfully( + customerId, paymentMethodId); + // Retrieve the Variable Payment Plan + recurringBillingRetrievePaymentPlanRequestReturnsSuccessfully( + customerId, planId); + // Update the Variable Payment Plan + recurringBillingUpdateVariablePaymentPlanRequestReturnsSuccessfully( + customerId, planId); + // Delete the Payment Account + /*secureNetVaultDeletePaymentAccountRequestReturnsSuccessfully( + customerId, paymentMethodId);*/ + } /** * Successful response returned from a Create Customer request. @@ -383,8 +419,8 @@ private void secureNetVaultDeletePaymentAccountRequestReturnsSuccessfully( // Act /* [UNSUPPORTED] 'var' as type is unsupported "var" */ RemovePaymentMethodResponse response = (RemovePaymentMethodResponse) controller.processRequest(apiContext, request,RemovePaymentMethodResponse.class); - Assert.assertTrue(response.toResponseString(),response.getSuccess()); // Assert + Assert.assertTrue(response.toResponseString(),response.getSuccess()); } // Delete the Customer @@ -409,8 +445,11 @@ private String recurringBillingCreateRecurringPaymentPlanRequestReturnsSuccessfu AddRecurringPaymentPlanResponse response = (AddRecurringPaymentPlanResponse) controller .processRequest(apiContext, request, AddRecurringPaymentPlanResponse.class); - Assert.assertTrue(response.toResponseString(), response.getSuccess()); // Assert + Assert.assertTrue(response.toResponseString(), response.getSuccess()); + Assert.assertEquals(response.getStoredRecurringPaymentPlan().getSoftDescriptor(), helper.getResponseSoftDescriptor()); + Assert.assertEquals(response.getStoredRecurringPaymentPlan().getDynamicMCC(), helper.getResponseDynamicMCC()); + return response.getPlanId(); } @@ -428,6 +467,8 @@ private RecurringPaymentPlan getRecurringPaymentPlan(String paymentMethodId) { plan.setPrimaryPaymentMethodId(paymentMethodId); plan.setNotes("This is a recurring plan"); plan.setActive(true); + plan.setSoftDescriptor(helper.getRequestSoftDescriptor()); + plan.setDynamicMCC(helper.getRequestDynamicMCC()); return plan; } @@ -452,8 +493,10 @@ private void recurringBillingUpdateRecurringPaymentPlanRequestReturnsSuccessfull // Act /* [UNSUPPORTED] 'var' as type is unsupported "var" */ UpdateRecurringPaymentPlanResponse response = (UpdateRecurringPaymentPlanResponse) controller.processRequest(apiContext, request,UpdateRecurringPaymentPlanResponse.class); - Assert.assertTrue(response.toResponseString(), response.getSuccess()); // Assert + Assert.assertTrue(response.toResponseString(), response.getSuccess()); + Assert.assertEquals(response.getStoredRecurringPaymentPlan().getSoftDescriptor(), helper.getResponseSoftDescriptor()); + Assert.assertEquals(response.getStoredRecurringPaymentPlan().getDynamicMCC(), helper.getResponseDynamicMCC()); } // Delete the Customer @@ -478,6 +521,10 @@ private String recurringBillingCreateInstallmentPlanRequestReturnsSuccessfully( .processRequest(apiContext, request, AddInstallmentPaymentPlanResponse.class); // Assert + Assert.assertTrue(response.toResponseString(), response.getSuccess()); + Assert.assertEquals(response.getStoredInstallmentPaymentPlan().getSoftDescriptor(), helper.getResponseSoftDescriptor()); + Assert.assertEquals(response.getStoredInstallmentPaymentPlan().getDynamicMCC(), helper.getResponseDynamicMCC()); + return response.getPlanId(); } @@ -495,6 +542,26 @@ private InstallmentPaymentPlan getInstallmentPlan(String paymentMethodId) { plan.setNotes("This is a installment plan"); plan.setActive(true); plan.setPrimaryPaymentMethodId(paymentMethodId); + plan.setSoftDescriptor(helper.getRequestSoftDescriptor()); + plan.setDynamicMCC(helper.getRequestDynamicMCC()); + return plan; + } + + private VariablePaymentPlan getVariablePaymentPlan(String paymentMethodId) { + VariablePaymentPlan plan = new VariablePaymentPlan(); + SimpleDateFormat format = new SimpleDateFormat("MM/dd/yyyy"); + try { + plan.setPlanStartDate(format.parse("07/02/2017")); + plan.setPlanEndDate(format.parse("08/05/2018")); + } catch (ParseException e) { + e.printStackTrace(); + } + plan.setMaxRetries(4); + plan.setPrimaryPaymentMethodId(paymentMethodId); + plan.setNotes("This is a variable plan"); + plan.setSoftDescriptor(helper.getRequestSoftDescriptor()); + plan.setDynamicMCC(helper.getRequestDynamicMCC()); + plan.setScheduledPayments(getSchedule()); return plan; } @@ -516,8 +583,10 @@ private void recurringBillingUpdateInstallmentPlanrequestReturnsSuccessfully( // Act /* [UNSUPPORTED] 'var' as type is unsupported "var" */ UpdateInstallmentPaymentPlanResponse response = (UpdateInstallmentPaymentPlanResponse) controller.processRequest(apiContext, request,UpdateInstallmentPaymentPlanResponse.class); - Assert.assertTrue(response.toResponseString(), response.getSuccess()); // Assert + Assert.assertTrue(response.toResponseString(), response.getSuccess()); + Assert.assertEquals(response.getStoredInstallmentPaymentPlan().getSoftDescriptor(), helper.getResponseSoftDescriptor()); + Assert.assertEquals(response.getStoredInstallmentPaymentPlan().getDynamicMCC(), helper.getResponseDynamicMCC()); } /** @@ -532,6 +601,7 @@ private String recurringBillingCreateVariablePaymentPlanRequestReturnsSuccessful AddVariablePaymentPlanRequest request = new AddVariablePaymentPlanRequest(); request.setCustomerId(customerId); request.setDeveloperApplication(getDeveloperApplication()); + request.setPlan(getVariablePaymentPlan(paymentMethodId)); APIContext apiContext = new APIContext(); CustomersController controller = new CustomersController(); // Act @@ -540,6 +610,10 @@ private String recurringBillingCreateVariablePaymentPlanRequestReturnsSuccessful .processRequest(apiContext, request, AddVariablePaymentPlanResponse.class); // Assert + Assert.assertTrue(response.toResponseString(), response.getSuccess()); + Assert.assertEquals(response.getStoredVariablePaymentPlan().getSoftDescriptor(), helper.getResponseSoftDescriptor()); + Assert.assertEquals(response.getStoredVariablePaymentPlan().getDynamicMCC(), helper.getResponseDynamicMCC()); + return response.getPlanId(); } @@ -556,13 +630,16 @@ private void recurringBillingUpdateVariablePaymentPlanRequestReturnsSuccessfully request.setCustomerId(customerId); request.setPlanId(planId); request.setDeveloperApplication(getDeveloperApplication()); + request.setPlan(getVariablePaymentPlan("1")); APIContext apiContext = new APIContext(); CustomersController controller = new CustomersController(); // Act /* [UNSUPPORTED] 'var' as type is unsupported "var" */ UpdateVariablePaymentPlanResponse response = (UpdateVariablePaymentPlanResponse) controller.processRequest(apiContext, request,UpdateVariablePaymentPlanResponse.class); - Assert.assertTrue(response.toResponseString(), response.getSuccess()); // Assert + Assert.assertTrue(response.toResponseString(), response.getSuccess()); + Assert.assertEquals(response.getStoredVariablePaymentPlan().getSoftDescriptor(), helper.getResponseSoftDescriptor()); + Assert.assertEquals(response.getStoredVariablePaymentPlan().getDynamicMCC(), helper.getResponseDynamicMCC()); } /** @@ -666,4 +743,20 @@ private PaymentVaultToken getPaymentVaultToken(String customerId, String payment return paymentVaultToken; } + private List getSchedule() { + SimpleDateFormat format = new SimpleDateFormat("MM/dd/yyyy"); + List list = new ArrayList(); + Schedule schedule = new Schedule(); + schedule.setInstallmentDate("08/05/2017"); + schedule.setAmount(4); + try { + schedule.setPaymentdate(format.parse("08/06/2017")); + } catch (ParseException e) { + e.printStackTrace(); + } + schedule.setScheduleId(1093920); + list.add(schedule); + return list; + } + } diff --git a/src/test/java/test/controllers/PaymentsControllerTest.java b/src/test/java/test/controllers/PaymentsControllerTest.java index 5b2b937..cbeab9a 100755 --- a/src/test/java/test/controllers/PaymentsControllerTest.java +++ b/src/test/java/test/controllers/PaymentsControllerTest.java @@ -3,6 +3,7 @@ package test.controllers; +import java.io.IOException; import java.io.InputStream; import java.util.Properties; @@ -30,16 +31,19 @@ import SecureNetRestApiSDK.Api.Responses.PriorAuthCaptureResponse; import SecureNetRestApiSDK.Api.Responses.RefundResponse; import SecureNetRestApiSDK.Api.Responses.VoidResponse; +import test.HelperTest; public class PaymentsControllerTest { Properties config ; + HelperTest helper; @Before public void before() throws Exception{ InputStream stream = this.getClass().getResourceAsStream("/config.properties"); config = new Properties(); config.load(stream); + helper = new HelperTest(); } /** * Unit Tests for an AuthorizationOnly request and a subsequent @@ -49,6 +53,7 @@ public void before() throws Exception{ @Test public void creditCardPresentAuthorizationOnlyAndPriorAuthCaptureRequestsReturnsSuccessfully() throws Exception { + // Arrange int transactionId = creditCardPresentAuthorizationOnlyRequestReturnsSuccessfully(); PriorAuthCaptureRequest request = new PriorAuthCaptureRequest(); request.setAmount(20d); @@ -56,7 +61,9 @@ public void creditCardPresentAuthorizationOnlyAndPriorAuthCaptureRequestsReturns request.setDeveloperApplication(getDeveloperApplication()); APIContext apiContext = new APIContext(); PaymentsController controller = new PaymentsController(); + // Act PriorAuthCaptureResponse response = (PriorAuthCaptureResponse) controller.processRequest(apiContext, request, PriorAuthCaptureResponse.class); + // Assert Assert.assertTrue(response.toResponseString(), response.getSuccess()); } @@ -74,12 +81,16 @@ private int creditCardPresentAuthorizationOnlyRequestReturnsSuccessfully() request.setAddToVault(true); request.setAmount(20d); request.setDeveloperApplication(getDeveloperApplication()); + request.setExtendedInformation(getExtendedInformation()); APIContext apiContext = new APIContext(); PaymentsController controller = new PaymentsController(); // Act AuthorizeResponse response = (AuthorizeResponse) controller.processRequest(apiContext, request,AuthorizeResponse.class); // Assert + Assert.assertTrue(response.toResponseString(), response.getSuccess()); + Assert.assertEquals(response.getTransaction().getSoftDescriptor(), helper.getResponseSoftDescriptor()); + Assert.assertEquals(response.getTransaction().getDynamicMCC(), helper.getResponseDynamicMCC()); return response.getTransaction().getTransactionId(); } @@ -98,14 +109,15 @@ public void creditCardPresentChargeRequestReturnsSuccessfully() request.setAmount(20d); request.setCard(getCard()); request.setDeveloperApplication(getDeveloperApplication()); + request.setExtendedInformation(getExtendedInformation()); APIContext apiContext = new APIContext(); PaymentsController controller = new PaymentsController(); // Act - ChargeResponse response = (ChargeResponse) controller.processRequest(apiContext, request,ChargeResponse.class); - Assert.assertTrue(response.toResponseString(), response.getSuccess()); // Assert - + Assert.assertTrue(response.toResponseString(), response.getSuccess()); + Assert.assertEquals(response.getTransaction().getSoftDescriptor(), helper.getResponseSoftDescriptor()); + Assert.assertEquals(response.getTransaction().getDynamicMCC(), helper.getResponseDynamicMCC()); } /** @@ -125,8 +137,8 @@ public void creditCardPresentIncludeTipAuthorizationOnlyAndPriorAuthCaptureReque APIContext apiContext = new APIContext(); PaymentsController controller = new PaymentsController(); // Act - PriorAuthCaptureResponse response = (PriorAuthCaptureResponse) controller.processRequest(apiContext, request,PriorAuthCaptureResponse.class); + // Assert Assert.assertTrue(response.toResponseString(), response.getSuccess()); } @@ -143,13 +155,16 @@ private int creditCardPresentIncludeTipAuthorizationOnlyRequestReturnsSuccessful request.setCard(getCard()); request.setAmount(20d); request.setDeveloperApplication(getDeveloperApplication()); + request.setExtendedInformation(getExtendedInformation()); APIContext apiContext = new APIContext(); PaymentsController controller = new PaymentsController(); // Act - AuthorizeResponse response = (AuthorizeResponse) controller.processRequest(apiContext, request,AuthorizeResponse.class); - Assert.assertTrue(response.toResponseString(), response.getSuccess()); // Assert + Assert.assertTrue(response.toResponseString(), response.getSuccess()); + Assert.assertEquals(response.getTransaction().getSoftDescriptor(), helper.getResponseSoftDescriptor()); + Assert.assertEquals(response.getTransaction().getDynamicMCC(), helper.getResponseDynamicMCC()); + return response.getTransaction().getTransactionId(); } @@ -168,14 +183,15 @@ public void creditCardPresentChargeRequestIncludingAddressReturnsSuccessfully() request.setCard(getCard()); request.setDeveloperApplication(getDeveloperApplication()); request.setAmount(20d); + request.setExtendedInformation(getExtendedInformation()); APIContext apiContext = new APIContext(); PaymentsController controller = new PaymentsController(); // Act - ChargeResponse response = (ChargeResponse) controller.processRequest(apiContext, request,ChargeResponse.class); - Assert.assertTrue(response.toResponseString(), response.getSuccess()); // Assert - + Assert.assertTrue(response.toResponseString(), response.getSuccess()); + Assert.assertEquals(response.getTransaction().getSoftDescriptor(), helper.getResponseSoftDescriptor()); + Assert.assertEquals(response.getTransaction().getDynamicMCC(), helper.getResponseDynamicMCC()); } /** @@ -186,6 +202,7 @@ public void creditCardPresentChargeRequestIncludingAddressReturnsSuccessfully() @Test public void creditCardNotPresentAuthorizationOnlyAndPriorAuthCaptureRequestsReturnsSuccessfully() throws Exception { + // Arrange int transactionId = creditCardNotPresentAuthorizationOnlyRequestReturnsSuccessfully(); PriorAuthCaptureRequest request = new PriorAuthCaptureRequest(); request.setAmount(10d); @@ -194,8 +211,8 @@ public void creditCardNotPresentAuthorizationOnlyAndPriorAuthCaptureRequestsRetu APIContext apiContext = new APIContext(); PaymentsController controller = new PaymentsController(); // Act - PriorAuthCaptureResponse response = (PriorAuthCaptureResponse) controller.processRequest(apiContext, request,PriorAuthCaptureResponse.class); + // Assert Assert.assertTrue(response.toResponseString(), response.getSuccess()); } @@ -213,13 +230,16 @@ private int creditCardNotPresentAuthorizationOnlyRequestReturnsSuccessfully() request.setCard(getCard()); request.setAddToVault(true); request.setAmount(20d); + request.setExtendedInformation(getExtendedInformation()); APIContext apiContext = new APIContext(); PaymentsController controller = new PaymentsController(); // Act - AuthorizeResponse response = (AuthorizeResponse) controller.processRequest(apiContext, request,AuthorizeResponse.class); // Assert Assert.assertTrue(response.toResponseString(), response.getSuccess()); + Assert.assertEquals(response.getTransaction().getSoftDescriptor(), helper.getResponseSoftDescriptor()); + Assert.assertEquals(response.getTransaction().getDynamicMCC(), helper.getResponseDynamicMCC()); + return response.getTransaction().getTransactionId(); } @@ -239,17 +259,17 @@ public void creditCardNotPresentChargeAuthorizationAndCaptureRequestReturnsSucce request.setAddToVault(true); request.setAmount(100d); request.setDeveloperApplication(getDeveloperApplication()); - ExtendedInformation extendedInfo = new ExtendedInformation(); + ExtendedInformation extendedInfo = getExtendedInformation(); extendedInfo.setTypeOfGoods("PHYSICAL"); request.setExtendedInformation(extendedInfo); APIContext apiContext = new APIContext(); PaymentsController controller = new PaymentsController(); // Act - ChargeResponse response = (ChargeResponse) controller.processRequest(apiContext, request,ChargeResponse.class); - Assert.assertTrue(response.toResponseString(), response.getSuccess()); // Assert - + Assert.assertTrue(response.toResponseString(), response.getSuccess()); + Assert.assertEquals(response.getTransaction().getSoftDescriptor(), helper.getResponseSoftDescriptor()); + Assert.assertEquals(response.getTransaction().getDynamicMCC(), helper.getResponseDynamicMCC()); } /** @@ -265,17 +285,17 @@ public void creditCardNotPresentIncludeAddresRequestReturnsSuccessfully() request.setCard(getCard()); request.setAmount(80d); request.setDeveloperApplication(getDeveloperApplication()); - ExtendedInformation extendedInfo = new ExtendedInformation(); + ExtendedInformation extendedInfo = getExtendedInformation(); extendedInfo.setTypeOfGoods("PHYSICAL"); request.setExtendedInformation(extendedInfo); APIContext apiContext = new APIContext(); PaymentsController controller = new PaymentsController(); // Act - ChargeResponse response = (ChargeResponse) controller.processRequest(apiContext, request,ChargeResponse.class); - Assert.assertTrue(response.toResponseString(), response.getSuccess()); // Assert - + Assert.assertTrue(response.toResponseString(), response.getSuccess()); + Assert.assertEquals(response.getTransaction().getSoftDescriptor(), helper.getResponseSoftDescriptor()); + Assert.assertEquals(response.getTransaction().getDynamicMCC(), helper.getResponseDynamicMCC()); } /** @@ -290,17 +310,17 @@ private void creditCardNotPresentChargeUsingTokenizationRequestReturnsSuccessful request.setCard(getCard()); request.setAmount(80d); request.setDeveloperApplication(getDeveloperApplication()); - ExtendedInformation extendedInfo = new ExtendedInformation(); + ExtendedInformation extendedInfo = getExtendedInformation(); extendedInfo.setTypeOfGoods("PHYSICAL"); request.setExtendedInformation(extendedInfo); APIContext apiContext = new APIContext(); PaymentsController controller = new PaymentsController(); // Act - ChargeResponse response = (ChargeResponse) controller.processRequest(apiContext, request,ChargeResponse.class); - Assert.assertTrue(response.toResponseString(), response.getSuccess()); // Assert - + Assert.assertTrue(response.toResponseString(), response.getSuccess()); + Assert.assertEquals(response.getTransaction().getSoftDescriptor(), helper.getResponseSoftDescriptor()); + Assert.assertEquals(response.getTransaction().getDynamicMCC(), helper.getResponseDynamicMCC()); } /** @@ -318,11 +338,9 @@ public void achPayByCheckChargeRequestReturnsSuccessfully() APIContext apiContext = new APIContext(); PaymentsController controller = new PaymentsController(); // Act - ChargeResponse response = (ChargeResponse) controller.processRequest(apiContext, request,ChargeResponse.class); - Assert.assertTrue(response.toResponseString(), response.getSuccess()); // Assert - + Assert.assertTrue(response.toResponseString(), response.getSuccess()); } /** @@ -356,9 +374,10 @@ public void achChargeAccountUsingPOSRequestReturnsSuccessfully() PaymentsController controller = new PaymentsController(); // Act ChargeResponse response = (ChargeResponse) controller.processRequest(apiContext, request,ChargeResponse.class); - Assert.assertTrue(response.toResponseString(), response.getSuccess()); // Assert - + Assert.assertTrue(response.toResponseString(), response.getSuccess()); + Assert.assertEquals(response.getTransaction().getSoftDescriptor(), helper.getResponseSoftDescriptor()); + Assert.assertEquals(response.getTransaction().getDynamicMCC(), helper.getResponseDynamicMCC()); } /** @@ -381,11 +400,9 @@ public void achAddBillingAddressChargeRequestReturnsSuccessfully() APIContext apiContext = new APIContext(); PaymentsController controller = new PaymentsController(); // Act - ChargeResponse response = (ChargeResponse) controller.processRequest(apiContext, request,ChargeResponse.class); - Assert.assertTrue(response.toResponseString(), response.getSuccess()); // Assert - + Assert.assertTrue(response.toResponseString(), response.getSuccess()); } /** @@ -408,11 +425,9 @@ public void achPayingByCheckWithVerificationChargeRequestReturnsSuccessfully() APIContext apiContext = new APIContext(); PaymentsController controller = new PaymentsController(); // Act - ChargeResponse response = (ChargeResponse) controller.processRequest(apiContext, request,ChargeResponse.class); - Assert.assertTrue(response.toResponseString(), response.getSuccess()); // Assert - + Assert.assertTrue(response.toResponseString(), response.getSuccess()); } /** @@ -427,14 +442,15 @@ public void creditsCreditAnAccountRequestReturnsSuccessfully() request.setCard(getCard()); request.setAmount(1.05d); request.setDeveloperApplication(getDeveloperApplication()); + request.setExtendedInformation(getExtendedInformation()); APIContext apiContext = new APIContext(); PaymentsController controller = new PaymentsController(); // Act - CreditResponse response = (CreditResponse) controller.processRequest(apiContext, request,CreditResponse.class); - Assert.assertTrue(response.toResponseString(), response.getSuccess()); // Assert - + Assert.assertTrue(response.toResponseString(), response.getSuccess()); + Assert.assertEquals(response.getTransaction().getSoftDescriptor(), helper.getResponseSoftDescriptor()); + Assert.assertEquals(response.getTransaction().getDynamicMCC(), helper.getResponseDynamicMCC()); } /** @@ -452,8 +468,8 @@ public void refundsChargeAndRefundRequestsReturnsSuccessfully() APIContext apiContext = new APIContext(); PaymentsController controller = new PaymentsController(); // Act - RefundResponse response = (RefundResponse) controller.processRequest(apiContext, request,RefundResponse.class); + // Assert Assert.assertTrue(response.toResponseString(), response.getSuccess()); } @@ -468,13 +484,15 @@ private int refundsChargeRequestReturnsSuccessfully() throws Exception { request.setCard(getCard()); request.setAmount(10d); request.setDeveloperApplication(getDeveloperApplication()); + request.setExtendedInformation(getExtendedInformation()); APIContext apiContext = new APIContext(); PaymentsController controller = new PaymentsController(); // Act - ChargeResponse response = (ChargeResponse) controller.processRequest(apiContext, request,ChargeResponse.class); - Assert.assertTrue(response.toResponseString(), response.getSuccess()); // Assert + Assert.assertTrue(response.toResponseString(), response.getSuccess()); + Assert.assertEquals(response.getTransaction().getSoftDescriptor(), helper.getResponseSoftDescriptor()); + Assert.assertEquals(response.getTransaction().getDynamicMCC(), helper.getResponseDynamicMCC()); return response.getTransaction().getTransactionId(); } @@ -494,8 +512,8 @@ public void voidChargeAndVoidRequestsReturnsSuccessfully() APIContext apiContext = new APIContext(); PaymentsController controller = new PaymentsController(); // Act - VoidResponse response = (VoidResponse) controller.processRequest(apiContext, request,VoidResponse.class); + // Assert Assert.assertTrue(response.toResponseString(), response.getSuccess()); } @@ -510,13 +528,15 @@ private int voidChargeRequestReturnsSuccessfully() throws Exception { request.setCard(getCard()); request.setAmount(10d); request.setDeveloperApplication(getDeveloperApplication()); + request.setExtendedInformation(getExtendedInformation()); APIContext apiContext = new APIContext(); PaymentsController controller = new PaymentsController(); // Act - ChargeResponse response = (ChargeResponse) controller.processRequest(apiContext, request,ChargeResponse.class); - Assert.assertTrue(response.toResponseString(), response.getSuccess()); // Assert + Assert.assertTrue(response.toResponseString(), response.getSuccess()); + Assert.assertEquals(response.getTransaction().getSoftDescriptor(), helper.getResponseSoftDescriptor()); + Assert.assertEquals(response.getTransaction().getDynamicMCC(), helper.getResponseDynamicMCC()); return response.getTransaction().getTransactionId(); } @@ -556,4 +576,11 @@ private Check getCheck() { check.setAccountNumber("123456"); return check; } + + private ExtendedInformation getExtendedInformation() { + ExtendedInformation extendedInfo = new ExtendedInformation(); + extendedInfo.setSoftDescriptor(helper.getRequestSoftDescriptor()); + extendedInfo.setDynamicMCC(helper.getRequestDynamicMCC()); + return extendedInfo; + } } diff --git a/src/test/java/test/controllers/PrevaultControllerTest.java b/src/test/java/test/controllers/PrevaultControllerTest.java index 89de9b5..21d33e0 100755 --- a/src/test/java/test/controllers/PrevaultControllerTest.java +++ b/src/test/java/test/controllers/PrevaultControllerTest.java @@ -41,6 +41,7 @@ public void before() throws Exception{ @Test public void tokenizationCreateTokenUsingCreditCardRequest() throws Exception { + // Arrange TokenCardRequest request = new TokenCardRequest(); request.setDeveloperApplication(getDeveloperApplication()); request.setCard(getCard()); @@ -48,12 +49,15 @@ public void tokenizationCreateTokenUsingCreditCardRequest() throws Exception { APIContext apiContext = new APIContext(); apiContext.setHTTPHeaders(getOrigin()); PreVaultController controller = new PreVaultController(); + // Act TokenCardResponse response = (TokenCardResponse) controller.processRequest(apiContext,request,TokenCardResponse.class); + // Assert Assert.assertTrue(response.toResponseString(), response.getSuccess()); } @Test public void tokenizationCreateTokenUsingCheckingInformationRequestReturnsSuccessfully() throws Exception { + // Arrange TokenCheckRequest request = new TokenCheckRequest(); request.setCheck(getCheck()); request.setDeveloperApplication(getDeveloperApplication()); @@ -61,7 +65,9 @@ public void tokenizationCreateTokenUsingCheckingInformationRequestReturnsSuccess APIContext apiContext = new APIContext(); apiContext.setHTTPHeaders(getOrigin()); PreVaultController controller = new PreVaultController(); + // Act TokenCheckResponse response = (TokenCheckResponse) controller.processRequest(apiContext,request,TokenCheckResponse.class); + // Assert Assert.assertTrue(response.toResponseString(), response.getSuccess()); } diff --git a/src/test/java/test/controllers/TransactionsControllerTest.java b/src/test/java/test/controllers/TransactionsControllerTest.java index 080a03d..1b1a8d6 100755 --- a/src/test/java/test/controllers/TransactionsControllerTest.java +++ b/src/test/java/test/controllers/TransactionsControllerTest.java @@ -43,7 +43,7 @@ public void before() throws Exception{ */ @Test public void transactionReportingAndManagementSearchTransactionRequestReturnsSuccessfully() throws Exception { - // Arramge + // Arrange TransactionSearchRequest request = new TransactionSearchRequest(); request.setDeveloperApplication(getDeveloperApplication()); request.setTransactionId(createTransaction()); @@ -51,8 +51,8 @@ public void transactionReportingAndManagementSearchTransactionRequestReturnsSucc TransactionsController controller = new TransactionsController(); // Act TransactionSearchResponse response = (TransactionSearchResponse) controller.processRequest(apiContext,request,TransactionSearchResponse.class); - Assert.assertTrue(response.toResponseString(), response.getSuccess()); // Assert + Assert.assertTrue(response.toResponseString(), response.getSuccess()); } /** @@ -69,8 +69,8 @@ public void transactionReportingAndManagementRetrieveTransactionRequestReturnsSu TransactionsController controller = new TransactionsController(); // Act TransactionRetrieveResponse response = (TransactionRetrieveResponse) controller.processRequest(apiContext,request,TransactionRetrieveResponse.class); - Assert.assertTrue(response.toResponseString(), response.getSuccess()); // Assert + Assert.assertTrue(response.toResponseString(), response.getSuccess()); } /** @@ -87,8 +87,8 @@ public void transactionReportingAndManagementUpdateTransactionRequestReturnsSucc TransactionsController controller = new TransactionsController(); // Act TransactionUpdateResponse response = (TransactionUpdateResponse) controller.processRequest(apiContext,request,TransactionUpdateResponse.class); - Assert.assertTrue(response.toResponseString(), response.getSuccess()); // Assert + Assert.assertTrue(response.toResponseString(), response.getSuccess()); } private DeveloperApplication getDeveloperApplication() {