Commit 339a3404 by Tuomas Riihimäki

Minor renames, and fix unit test cases.

 * Rename CheckoutFi parameters more correctly
 * All test classes need to start with Test or end with Test or TestCase
   To be included in maven builds
1 parent 6ae71ff6
......@@ -41,7 +41,6 @@ public class CheckoutBank {
throw new RuntimeException("Wrong type of node " + bank + " type " + bank.getNodeType());
}
key = bank.getNodeName();
logger.info("Bank type {}", bank);
NamedNodeMap attrs = bank.getAttributes();
String iconval = null;
String nameval = null;
......
......@@ -18,18 +18,14 @@
*/
package fi.codecrew.moya.beans;
import java.io.BufferedInputStream;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.EnumMap;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
......@@ -62,8 +58,8 @@ import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
import fi.codecrew.moya.checkoutfi.CheckoutFiCheckParam;
import fi.codecrew.moya.checkoutfi.CheckoutFiParam;
import fi.codecrew.moya.checkoutfi.CheckoutQuery;
import fi.codecrew.moya.checkoutfi.CheckoutFiPaymentParam;
import fi.codecrew.moya.checkoutfi.CheckoutQueryParam;
import fi.codecrew.moya.clientutils.BortalLocalContextHolder;
import fi.codecrew.moya.enums.apps.BillPermission;
import fi.codecrew.moya.facade.BillFacade;
......@@ -115,7 +111,7 @@ public class CheckoutFiBean implements CheckoutFiBeanLocal {
*
*/
public boolean isBillPaid(Bill bill) {
QueryBuilder<CheckoutFiCheckParam> cb = initQuerybuilder(CheckoutFiCheckParam.class, CheckoutFiCheckParam.values());
QueryBuilder cb = initQuerybuilder(CheckoutFiCheckParam.values());
if (!cb.isCredentialsValid()) {
throw new EJBException("Invalid Credentials");
......@@ -179,7 +175,7 @@ public class CheckoutFiBean implements CheckoutFiBeanLocal {
return ret;
}
protected <T extends Enum<T>> QueryBuilder<T> initQuerybuilder(Class<T> clz, CheckoutQuery[] params) {
protected QueryBuilder initQuerybuilder(CheckoutQueryParam[] params) {
final LanEventPrivateProperty expire = eventbean.getPrivateProperty(LanEventPrivatePropertyKey.CHECKOUT_FI_KEY_EXPIRE);
final String merchantid = eventbean.getPrivatePropertyString(LanEventPrivatePropertyKey.CHECKOUT_FI_MERCHANT_ID);
......@@ -188,7 +184,7 @@ public class CheckoutFiBean implements CheckoutFiBeanLocal {
if (expire != null) {
date = expire.getDateValue();
}
QueryBuilder<T> ret = new QueryBuilder<T>(clz, params, date, merchantid, merchantPassword);
QueryBuilder ret = new QueryBuilder(params, date, merchantid, merchantPassword);
return ret;
}
......@@ -200,7 +196,7 @@ public class CheckoutFiBean implements CheckoutFiBeanLocal {
if (bill.isFoowavePaymentOver()) {
return null;
}
QueryBuilder<CheckoutFiParam> queryBuilder = initQuerybuilder(CheckoutFiParam.class, CheckoutFiParam.values());
QueryBuilder queryBuilder = initQuerybuilder(CheckoutFiPaymentParam.values());
if (!queryBuilder.isCredentialsValid()) {
return null;
......@@ -214,15 +210,15 @@ public class CheckoutFiBean implements CheckoutFiBeanLocal {
final String priceInCents = Integer.valueOf(bill.totalPrice().multiply(TO_CENTS).intValue()).toString();
queryBuilder.addParam(CheckoutFiParam.STAMP, getStamp(bill));
queryBuilder.addParam(CheckoutFiParam.AMOUNT, priceInCents);
queryBuilder.addParam(CheckoutFiParam.REFERENCE, bill.getReferenceNumber().toString());
queryBuilder.addParam(CheckoutFiParam.MERCHANT, queryBuilder.getMerchantId());
queryBuilder.addParam(CheckoutFiParam.RETURN, returnUrl + "return.jsf");
queryBuilder.addParam(CheckoutFiParam.CANCEL, returnUrl + "cancel.jsf");
queryBuilder.addParam(CheckoutFiParam.REJECT, returnUrl + "reject.jsf");
queryBuilder.addParam(CheckoutFiParam.DELAYED, returnUrl + "delayed.jsf");
queryBuilder.addParam(CheckoutFiParam.DELIVERY_DATE, new SimpleDateFormat(DATEFORMAT).format(new Date()));
queryBuilder.addParam(CheckoutFiPaymentParam.STAMP, getStamp(bill));
queryBuilder.addParam(CheckoutFiPaymentParam.AMOUNT, priceInCents);
queryBuilder.addParam(CheckoutFiPaymentParam.REFERENCE, bill.getReferenceNumber().toString());
queryBuilder.addParam(CheckoutFiPaymentParam.MERCHANT, queryBuilder.getMerchantId());
queryBuilder.addParam(CheckoutFiPaymentParam.RETURN, returnUrl + "return.jsf");
queryBuilder.addParam(CheckoutFiPaymentParam.CANCEL, returnUrl + "cancel.jsf");
queryBuilder.addParam(CheckoutFiPaymentParam.REJECT, returnUrl + "reject.jsf");
queryBuilder.addParam(CheckoutFiPaymentParam.DELAYED, returnUrl + "delayed.jsf");
queryBuilder.addParam(CheckoutFiPaymentParam.DELIVERY_DATE, new SimpleDateFormat(DATEFORMAT).format(new Date()));
CloseableHttpResponse response = null;
List<CheckoutBank> ret = null;
......@@ -253,7 +249,7 @@ public class CheckoutFiBean implements CheckoutFiBeanLocal {
}
private static CloseableHttpResponse sendQuery(QueryBuilder<?> queryBuilder) throws ClientProtocolException, IOException {
private static CloseableHttpResponse sendQuery(QueryBuilder queryBuilder) throws ClientProtocolException, IOException {
CloseableHttpResponse response = null;
final HttpPost postRequest = new HttpPost(REMOTE_URL);
postRequest.setEntity(new UrlEncodedFormEntity(queryBuilder.getNameValuePairs()));
......@@ -416,14 +412,14 @@ public class CheckoutFiBean implements CheckoutFiBeanLocal {
return ret;
}
static class QueryBuilder<T extends Enum<T>> {
private final Map<CheckoutQuery, String> values = new HashMap<>();;
static class QueryBuilder {
private final Map<CheckoutQueryParam, String> values = new HashMap<>();;
private final Date expireDate;
private final String merchantId;
private final String merchantPassword;
private final CheckoutQuery[] types;
private final CheckoutQueryParam[] types;
QueryBuilder(Class<T> clz, CheckoutQuery[] types, Date expire, String merchantId, String merchantPassword) {
QueryBuilder(CheckoutQueryParam[] types, Date expire, String merchantId, String merchantPassword) {
this.expireDate = expire;
this.merchantId = merchantId;
this.merchantPassword = merchantPassword;
......@@ -438,7 +434,7 @@ public class CheckoutFiBean implements CheckoutFiBeanLocal {
}
public void addParam(CheckoutQuery key, String value) {
public void addParam(CheckoutQueryParam key, String value) {
values.put(key, value);
}
......@@ -447,14 +443,13 @@ public class CheckoutFiBean implements CheckoutFiBeanLocal {
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
StringBuilder mdString = new StringBuilder();
for (CheckoutQuery v : types) {
for (CheckoutQueryParam v : types) {
String value = null;
if (values.containsKey(v)) {
value = values.get(v);
} else {
value = v.getDefaultValue();
}
logger.info("Add key {},value {}", v.name(), value);
if (value != null) {
mdString.append(value);
nameValuePairs.add(new BasicNameValuePair(v.name(), value));
......@@ -465,7 +460,6 @@ public class CheckoutFiBean implements CheckoutFiBeanLocal {
mdString.append(merchantPassword);
final String calculatedHash = PasswordFunctions.calculateMd5(mdString.toString());
logger.info("Calculated checksum {} from {}", mdString.toString(), calculatedHash);
nameValuePairs.add(new BasicNameValuePair("MAC", calculatedHash));
......
package fi.codecrew.moya.checkoutfi;
public enum CheckoutFiCheckParam implements CheckoutQuery {
public enum CheckoutFiCheckParam implements CheckoutQueryParam {
// DO NOT CHANGE THE ORDER OF THESE!
// The md5 checksum is calculated from
// these values...
......
......@@ -18,7 +18,7 @@
*/
package fi.codecrew.moya.checkoutfi;
public enum CheckoutFiParam implements CheckoutQuery {
public enum CheckoutFiPaymentParam implements CheckoutQueryParam {
// DO NOT CHANGE THE ORDER OF THESE!
// The md5 checksum is calculated from
......@@ -52,7 +52,7 @@ public enum CheckoutFiParam implements CheckoutQuery {
private final String defaultValue;
private CheckoutFiParam(String def) {
private CheckoutFiPaymentParam(String def) {
defaultValue = def;
}
......
package fi.codecrew.moya.checkoutfi;
public interface CheckoutQuery {
public interface CheckoutQueryParam {
public String name();
......
package fi.codecrew.moya.beans;
import org.testng.annotations.BeforeTest;
import javax.ejb.embeddable.EJBContainer;
import javax.naming.NamingException;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;
@Test
public abstract class AbstractEjbTest {
@BeforeTest
......
......@@ -19,8 +19,8 @@
package fi.codecrew.moya.beans;
import org.testng.annotations.Test;
public class BarcodeTests {
@Test
public class BarcodeTest {
@Test
public void tbd() {
}
......
package fi.codecrew.moya.beans;
import static org.testng.AssertJUnit.*;
import static org.testng.AssertJUnit.assertEquals;
import static org.testng.AssertJUnit.assertTrue;
import static org.testng.AssertJUnit.fail;
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.FileReader;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.math.BigDecimal;
......@@ -21,23 +21,41 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.annotations.Test;
import fi.codecrew.moya.beans.CheckoutFiBean.QueryBuilder;
import fi.codecrew.moya.checkoutfi.CheckoutFiParam;
import fi.codecrew.moya.clientutils.BortalLocalContextHolder;
import fi.codecrew.moya.checkoutfi.CheckoutFiPaymentParam;
import fi.codecrew.moya.checkoutfi.CheckoutQueryParam;
import fi.codecrew.moya.model.Bill;
import fi.codecrew.moya.model.BillLine;
import fi.codecrew.moya.model.LanEvent;
import fi.codecrew.moya.model.Product;
import fi.codecrew.moya.util.CheckoutBank;
@Test
public class CheckoutFiBeanTests extends CheckoutFiBean {
public class CheckoutFiBeanTest {
private static final Logger logger = LoggerFactory.getLogger(CheckoutFiBeanTests.class);
@Test
public void testQuery() {
new CheckoutFiBeanMock().testQuery();
}
@Test
public void testXml() {
new CheckoutFiBeanMock().testXml();
}
@Test
public void testPollXml() throws UnsupportedEncodingException
{
new CheckoutFiBeanMock().testPollXml();
}
public static class CheckoutFiBeanMock extends CheckoutFiBean {
private static final Logger logger = LoggerFactory.getLogger(CheckoutFiBeanTest.class);
public void testQuery() {
QueryBuilder<CheckoutFiParam> queryBuilder = new QueryBuilder<CheckoutFiParam>(CheckoutFiParam.class, CheckoutFiParam.values(), new Date(System.currentTimeMillis() + 60000), "375917", "SAIPPUAKAUPPIAS");
QueryBuilder queryBuilder = new QueryBuilder(CheckoutFiPaymentParam.values(), new Date(System.currentTimeMillis() + 60000), "375917", "SAIPPUAKAUPPIAS");
assertTrue("Credentials are valid!", queryBuilder.isCredentialsValid());
......@@ -64,7 +82,7 @@ public class CheckoutFiBeanTests extends CheckoutFiBean {
prod.setName("Hurr");
prod.setPrice(new BigDecimal(111.11).setScale(4, RoundingMode.HALF_UP));
bill.getBillLines().add(new BillLine(bill, prod, new BigDecimal(5)));
logger.info("Total price{}" + bill.getTotalPrice());
final String priceInCents = Integer.valueOf(bill.totalPrice().multiply(TO_CENTS).intValue()).toString();
final Map<String, String> requiredParams = new HashMap<>();
requiredParams.put("VERSION", "0001");
......@@ -76,32 +94,32 @@ public class CheckoutFiBeanTests extends CheckoutFiBean {
requiredParams.put("ALGORITHM", "2");
requiredParams.put("LANGUAGE", "FI");
queryBuilder.addParam(CheckoutFiParam.STAMP, getStamp(bill));
queryBuilder.addParam((CheckoutQueryParam) CheckoutFiPaymentParam.STAMP, getStamp(bill));
requiredParams.put("STAMP", "67890a1427495053");
queryBuilder.addParam(CheckoutFiParam.AMOUNT, priceInCents);
queryBuilder.addParam(CheckoutFiPaymentParam.AMOUNT, priceInCents);
requiredParams.put("AMOUNT", "55555");
queryBuilder.addParam(CheckoutFiParam.REFERENCE, bill.getReferenceNumber().toString());
queryBuilder.addParam(CheckoutFiPaymentParam.REFERENCE, bill.getReferenceNumber().toString());
// 112345 + checksum(2)
requiredParams.put("REFERENCE", "1123452");
queryBuilder.addParam(CheckoutFiParam.MERCHANT, queryBuilder.getMerchantId());
queryBuilder.addParam(CheckoutFiPaymentParam.MERCHANT, queryBuilder.getMerchantId());
requiredParams.put("MERCHANT", "375917");
queryBuilder.addParam(CheckoutFiParam.RETURN, returnUrl + "return.jsf");
queryBuilder.addParam(CheckoutFiPaymentParam.RETURN, returnUrl + "return.jsf");
requiredParams.put("RETURN", "https://localhost/MoyaWeb/checkout/return.jsf");
queryBuilder.addParam(CheckoutFiParam.CANCEL, returnUrl + "cancel.jsf");
queryBuilder.addParam(CheckoutFiPaymentParam.CANCEL, returnUrl + "cancel.jsf");
requiredParams.put("CANCEL", "https://localhost/MoyaWeb/checkout/cancel.jsf");
queryBuilder.addParam(CheckoutFiParam.REJECT, returnUrl + "reject.jsf");
queryBuilder.addParam(CheckoutFiPaymentParam.REJECT, returnUrl + "reject.jsf");
requiredParams.put("REJECT", "https://localhost/MoyaWeb/checkout/reject.jsf");
queryBuilder.addParam(CheckoutFiParam.DELAYED, returnUrl + "delayed.jsf");
queryBuilder.addParam(CheckoutFiPaymentParam.DELAYED, returnUrl + "delayed.jsf");
requiredParams.put("DELAYED", "https://localhost/MoyaWeb/checkout/delayed.jsf");
queryBuilder.addParam(CheckoutFiParam.DELIVERY_DATE, new SimpleDateFormat(DATEFORMAT).format(d));
queryBuilder.addParam(CheckoutFiPaymentParam.DELIVERY_DATE, new SimpleDateFormat(DATEFORMAT).format(d));
requiredParams.put("DELIVERY_DATE", "20150328");
requiredParams.put("MAC", "7FBDC5A633794B7292E6B02020330E64");
......@@ -191,4 +209,5 @@ public class CheckoutFiBeanTests extends CheckoutFiBean {
assertEquals("2", ret);
}
}
}
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!