blob: c438fa7e2318eaa92be88b56a3e6f383dafd002a [file] [log] [blame]
/*******************************************************************************
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF 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 org.ofbiz.accounting.thirdparty.securepay;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
import junit.framework.TestCase;
import org.ofbiz.base.util.Debug;
import org.ofbiz.base.util.UtilMisc;
import org.ofbiz.base.util.UtilValidate;
import org.ofbiz.entity.GenericValue;
import org.ofbiz.service.GenericServiceException;
import org.ofbiz.service.ModelService;
import org.ofbiz.service.testtools.OFBizTestCase;
public class SecurePayServiceTest extends OFBizTestCase{
public SecurePayServiceTest(String name) {
super(name);
}
public static final String module = SecurePayServiceTest.class.getName();
// test data
protected GenericValue emailAddr = null;
protected String orderId = null;
protected GenericValue creditCard = null;
protected GenericValue billingAddress = null;
protected GenericValue shippingAddress = null;
protected BigDecimal creditAmount = null;
protected String configFile = null;
protected GenericValue orderPaymentPreference = null;
protected List<Object> orderItems = null;
protected Map<String, Object> orderItemMap = null;
protected GenericValue billToParty = null;
protected String paymentGatewayConfigId = null;
protected BigDecimal refundAmount = null;
protected GenericValue paymentGatewayResponse = null;
protected String releaseRefNum = null;
@Override
protected void setUp() throws Exception {
// populate test data
configFile = "paymentTest.properties";
creditAmount = new BigDecimal("234.51");
emailAddr = delegator.makeValue("ContactMech", UtilMisc.toMap(
"infoString","test@hansbakker.com"));
orderId = "Demo1002";
creditCard = delegator.makeValue("CreditCard", UtilMisc.toMap(
"cardType","CCT_VISA",
"expireDate","10/2011", // mm/yyyy, gets converted to mm/yy
"cardNumber","4444333322221111"));
billingAddress = delegator.makeValue("PostalAddress", UtilMisc.toMap(
"toName","The customer Name",
"address1","The customer billingAddress1",
"address2","The customer billingAddress2",
"city","The customer city",
"stateProvinceGeoId", "NLD"));
shippingAddress = delegator.makeValue("PostalAddress", UtilMisc.toMap(
"toName","The customer Name",
"address1","The customer shippingStreet1",
"address2","The customer shippingStreet2",
"city","The customer city",
"stateProvinceGeoId", "NLD",
"postalCode","12345"));
orderItemMap = UtilMisc.<String, Object>toMap(
"orderId", "Demo1002",
"orderItemSeqId", "00001",
"orderItemTypeId", "PRODUCT_ORDER_ITEM",
"productId", "GZ-1000",
"prodCatalogId", "DemoCatalog",
"quantity" , new BigDecimal("2.000000"),
"unitPrice", new BigDecimal("59.00"),
"statusId" ,"ITEM_COMPLETED"
);
orderItems = UtilMisc.<Object>toList(orderItemMap);
billToParty = delegator.makeValue("Party" , UtilMisc.toMap("partyId", "DemoCustomer"));
paymentGatewayConfigId = "SECUREPAY_CONFIG";
refundAmount = new BigDecimal("100.08");
orderPaymentPreference = delegator.makeValue("OrderPaymentPreference", UtilMisc.toMap(
"orderPaymentPreferenceId", "testOrder1000_01",
"orderId", "Demo1002",
"paymentMethodTypeId", "CREDIT_CARD",
"maxAmount", new BigDecimal("200.00"),
"statusId", "PAYMENT_AUTHORIZED"));
GenericValue checkOrderPaymentPreference = EntityQuery.use(delegator).from("OrderPaymentPreference").where("orderPaymentPreferenceId", "testOrder1000_01").queryOne();
if (UtilValidate.isEmpty(checkOrderPaymentPreference)) {
orderPaymentPreference.create();
}
}
public void testAuth() throws Exception{
Debug.logInfo("=====[testAuth] starting....", module);
try {
Map<String, Object> serviceInput = UtilMisc.<String, Object>toMap(
"paymentConfig", configFile,
"billToParty", billToParty,
"billToEmail", emailAddr,
"orderPaymentPreference", orderPaymentPreference,
"orderItems", orderItems,
"creditCard", creditCard,
"billingAddress", billingAddress,
"shippingAddress", shippingAddress,
"orderId", orderId,
"currency", "AUD"
);
serviceInput.put("processAmount", new BigDecimal("100.08"));
// run the service
Map<String, Object> result = dispatcher.runSync("ofbScAuthorize",serviceInput);
// verify the results
String responseMessage = (String) result.get(ModelService.RESPONSE_MESSAGE);
Debug.logInfo("[testCCAuth] responseMessage: " + responseMessage, module);
TestCase.assertEquals("Service result is success", ModelService.RESPOND_SUCCESS, responseMessage);
if (((Boolean) result.get("authResult")).equals(new Boolean(false))) { // returnCode ok?
Debug.logInfo("[testAuth] Error Messages from SecurePay: " + result.get("internalRespMsgs"), module);
TestCase.fail("Returned messages:" + result.get("internalRespMsgs"));
} else {
Debug.logInfo("[testAuth] Result from SecurePay: " + result, module);
String authRefNum = (String) result.get("authRefNum");
BigDecimal processAmount = (BigDecimal) result.get("processAmount");
paymentGatewayResponse = delegator.makeValue("PaymentGatewayResponse" , UtilMisc.toMap(
"paymentGatewayResponseId", "testOrder1000_01",
"orderPaymentPreferenceId", "testOrder1000_01",
"amount" , processAmount,
"referenceNum", authRefNum,
"paymentMethodTypeId", "CREDIT_CARD",
"paymentServiceTypeEnumId", "PRDS_PAY_AUTH",
"currencyUomId", "AUD"
));
GenericValue checkPaymentGatewayResponse = EntityQuery.use(delegator).from("PaymentGatewayResponse").where("paymentGatewayResponseId", "testOrder1000_01").queryOne();
if (UtilValidate.isEmpty(checkPaymentGatewayResponse)) {
paymentGatewayResponse.create();
}
}
} catch (GenericServiceException ex) {
TestCase.fail(ex.getMessage());
}
}
public void testdoCapture() throws Exception {
Debug.logInfo("=====[testdoCapture] starting....", module);
GenericValue paymentGatewayResponse = EntityQuery.use(delegator).from("PaymentGatewayResponse").where("paymentGatewayResponseId", "testOrder1000_01").queryOne();
try {
Map<String, Object> serviceInput = UtilMisc.<String, Object>toMap(
"paymentConfig", configFile,
"orderPaymentPreference", orderPaymentPreference,
"authTrans", paymentGatewayResponse
);
serviceInput.put("captureAmount", refundAmount);
// run the service
Map<String, Object> result = dispatcher.runSync("ofbScCapture",serviceInput);
// verify the results
String responseMessage = (String) result.get(ModelService.RESPONSE_MESSAGE);
Debug.logInfo("[testdoCapture] responseMessage: " + responseMessage, module);
TestCase.assertEquals("Service result is success", ModelService.RESPOND_SUCCESS, responseMessage);
if (((Boolean) result.get("captureResult")).equals(new Boolean(false))) { // returnCode ok?
Debug.logInfo("[testdoCapture] Error Messages from SecurePay: " + result.get("internalRespMsgs"), module);
TestCase.fail("Returned messages:" + result.get("internalRespMsgs"));
} else {
String captureRefNum = (String) result.get("captureRefNum");
GenericValue checkPaymentGatewayResponse = EntityQuery.use(delegator).from("PaymentGatewayResponse").where("paymentGatewayResponseId", "testOrder1000_01").queryOne();
checkPaymentGatewayResponse.set("referenceNum", captureRefNum);
checkPaymentGatewayResponse.store();
Debug.logInfo("[testdoCapture] Result from SecurePay: " + result, module);
}
} catch (GenericServiceException ex) {
TestCase.fail(ex.getMessage());
}
}
public void testdoRefund() throws Exception {
Debug.logInfo("=====[testdoRefund] starting....", module);
try {
Map<String, Object> serviceInput = UtilMisc.toMap(
"paymentConfig", configFile,
"orderPaymentPreference", orderPaymentPreference
);
serviceInput.put("refundAmount", refundAmount);
// run the service
Map<String, Object> result = dispatcher.runSync("ofbScRefund", serviceInput);
// verify the results
String responseMessage = (String) result.get(ModelService.RESPONSE_MESSAGE);
Debug.logInfo("[testdoRefund] responseMessage: " + responseMessage, module);
TestCase.assertEquals("Service result is success", ModelService.RESPOND_SUCCESS, responseMessage);
if (((Boolean) result.get("refundResult")).equals(new Boolean(false))) { // returnCode ok?
Debug.logInfo("[testdoRefund] Error Messages from SecurePay: " + result.get("internalRespMsgs"), module);
TestCase.fail("Returned messages:" + result.get("internalRespMsgs"));
} else {
Debug.logInfo("[testdoRefund] Result from SecurePay: " + result, module);
}
} catch (GenericServiceException ex) {
TestCase.fail(ex.getMessage());
}
}
public void testdoCredit() throws Exception{
Debug.logInfo("=====[testdoCredit] starting....", module);
try {
Map<String, Object> serviceInput = UtilMisc.toMap(
"paymentConfig", configFile,
"billToParty", billToParty,
"billToEmail", emailAddr,
"orderItems", orderItems,
"creditCard", creditCard,
"billingAddress", billingAddress,
"referenceCode", orderId,
"currency", "AUD"
);
serviceInput.put("creditAmount", creditAmount);
// run the service
Map<String, Object> result = dispatcher.runSync("ofbScCCCredit",serviceInput);
// verify the results
String responseMessage = (String) result.get(ModelService.RESPONSE_MESSAGE);
Debug.logInfo("[testdoCredit] responseMessage: " + responseMessage, module);
TestCase.assertEquals("Service result is success", ModelService.RESPOND_SUCCESS, responseMessage);
if (((Boolean) result.get("creditResult")).equals(new Boolean(false))) { // returnCode ok?
Debug.logInfo("[testdoCredit] Error Messages from SecurePay: " + result.get("internalRespMsgs"), module);
TestCase.fail("Returned messages:" + result.get("internalRespMsgs"));
} else {
Debug.logInfo("[testdoCredit] Result from SecurePay: " + result, module);
}
} catch (GenericServiceException ex) {
TestCase.fail(ex.getMessage());
}
}
}