/* * Copyright(c) 2005 Center for E-Commerce Infrastructure Development, The * University of Hong Kong (HKU). All Rights Reserved. * * This software is licensed under the GNU GENERAL PUBLIC LICENSE Version 2.0 [1] * * [1] http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt */ package hk.hku.cecid.ebms.spa.dao; import java.util.List; import org.junit.Assert; import org.junit.Ignore; import org.junit.Test; import hk.hku.cecid.piazza.commons.dao.DAOException; import hk.hku.cecid.piazza.commons.test.DAOTest; @Ignore public class MessageDataSourceDAOTest extends DAOTest<MessageDataSourceDAO> { @Override public String getTableName() { return "message"; } @Test public void testFindInboxReadyMaxSequenceNoByCpa() throws DAOException { MessageDataSourceDAO dao = super.getTestingTarget(); MessageDVO dvo = (MessageDVO)dao.createDVO(); dvo.setService("cecid:cecid"); dvo.setAction("order"); dvo.setConvId("convId"); int currentSequenceNumber; // first inbox ordered message dvo.setCpaId("cecid1"); currentSequenceNumber = dao.findInboxReadyMaxSequenceNoByCpa(dvo); Assert.assertEquals(-1, currentSequenceNumber); // last ordered message is 'PS' dvo.setCpaId("cecid2"); currentSequenceNumber = dao.findInboxReadyMaxSequenceNoByCpa(dvo); Assert.assertEquals(1, currentSequenceNumber); // last ordered message is 'DL' dvo.setCpaId("cecid3"); currentSequenceNumber = dao.findInboxReadyMaxSequenceNoByCpa(dvo); Assert.assertEquals(2, currentSequenceNumber); } @Test public void testFindMessageByCpa() throws DAOException { MessageDVO dvo; List list; MessageDVO result; MessageDataSourceDAO dao = super.getTestingTarget(); // test cpa_id, service & action and order (3,4,2,5,1) dvo = (MessageDVO)dao.createDVO(); dvo.setCpaId("cecid4"); dvo.setService("cecid:cecid"); dvo.setAction("order"); list = dao.findMessageByCpa(dvo, 10); Assert.assertEquals(5, list.size()); result = (MessageDVO)list.get(0); Assert.assertEquals("convId3", result.getConvId()); result = (MessageDVO)list.get(1); Assert.assertEquals("convId4", result.getConvId()); result = (MessageDVO)list.get(2); Assert.assertEquals("convId2", result.getConvId()); result = (MessageDVO)list.get(3); Assert.assertEquals("convId5", result.getConvId()); result = (MessageDVO)list.get(4); Assert.assertEquals("convId1", result.getConvId()); // test no. of message list = dao.findMessageByCpa(dvo, 1); Assert.assertEquals(1, list.size()); // test from party ID dvo = (MessageDVO)dao.createDVO(); dvo.setCpaId("cecid4"); dvo.setService("cecid:cecid"); dvo.setAction("order"); dvo.setFromPartyId("fromPartyId1"); list = dao.findMessageByCpa(dvo, 10); result = (MessageDVO)list.get(0); Assert.assertEquals("fromPartyId1", result.getFromPartyId()); // test from party type dvo = (MessageDVO)dao.createDVO(); dvo.setCpaId("cecid4"); dvo.setService("cecid:cecid"); dvo.setAction("order"); dvo.setFromPartyRole("fromPartyType2"); list = dao.findMessageByCpa(dvo, 10); result = (MessageDVO)list.get(0); Assert.assertEquals("fromPartyType2", result.getFromPartyRole()); // test to party ID dvo = (MessageDVO)dao.createDVO(); dvo.setCpaId("cecid4"); dvo.setService("cecid:cecid"); dvo.setAction("order"); dvo.setToPartyId("toPartyId3"); list = dao.findMessageByCpa(dvo, 10); result = (MessageDVO)list.get(0); Assert.assertEquals("toPartyId3", result.getToPartyId()); // test to party type dvo = (MessageDVO)dao.createDVO(); dvo.setCpaId("cecid4"); dvo.setService("cecid:cecid"); dvo.setAction("order"); dvo.setToPartyRole("toPartyType4"); list = dao.findMessageByCpa(dvo, 10); result = (MessageDVO)list.get(0); Assert.assertEquals("toPartyType4", result.getToPartyRole()); // test conv ID dvo = (MessageDVO)dao.createDVO(); dvo.setCpaId("cecid4"); dvo.setService("cecid:cecid"); dvo.setAction("order"); dvo.setConvId("convId5"); list = dao.findMessageByCpa(dvo, 10); result = (MessageDVO)list.get(0); Assert.assertEquals("convId5", result.getConvId()); // test all parameters dvo = (MessageDVO)dao.createDVO(); dvo.setCpaId("cecid4"); dvo.setService("cecid:cecid"); dvo.setAction("order"); dvo.setConvId("convId5"); dvo.setFromPartyId("fromPartyId5"); dvo.setFromPartyRole("fromPartyType5"); dvo.setToPartyId("toPartyId5"); dvo.setToPartyRole("toPartyType5"); list = dao.findMessageByCpa(dvo, 10); Assert.assertEquals(1, list.size()); } @Test public void testFindMessagesByHistory() throws DAOException { // Test Search Criteria one by one MessageDVO criteriaDVO; MessageDataSourceDAO dao = super.getTestingTarget(); List result = null; // Search by message_ID only criteriaDVO = (MessageDVO)dao.createDVO(); criteriaDVO.setMessageId("20080311-155320-90407@192.168.0.1"); result = dao.findMessagesByHistory(criteriaDVO, 100, 0); Assert.assertEquals(2, result.size()); Assert.assertEquals("20080311-155320-90407@192.168.0.1", ((MessageDVO)result.get(0)).getMessageId()); // Assert MessageID Assert.assertEquals("inbox", ((MessageDVO)result.get(0)).getMessageBox()); // Assert Message Box Assert.assertEquals("Order", ((MessageDVO)result.get(0)).getMessageType()); // Assert Message Type Assert.assertEquals("20080311-155320-90407@192.168.0.1", ((MessageDVO)result.get(1)).getMessageId()); // Assert MessageID Assert.assertEquals("outbox", ((MessageDVO)result.get(1)).getMessageBox()); // Assert Message Box Assert.assertEquals("Order", ((MessageDVO)result.get(1)).getMessageType()); // Assert Message Type criteriaDVO = null; criteriaDVO = (MessageDVO)dao.createDVO(); criteriaDVO.setMessageId("20080311-155320-90407%"); result = dao.findMessagesByHistory(criteriaDVO, 100, 0); Assert.assertEquals(2, result.size()); Assert.assertEquals("20080311-155320-90407@192.168.0.1", ((MessageDVO)result.get(0)).getMessageId()); // Assert MessageID Assert.assertEquals("inbox", ((MessageDVO)result.get(0)).getMessageBox()); // Assert Message Box Assert.assertEquals("Order", ((MessageDVO)result.get(0)).getMessageType()); // Assert Message Type Assert.assertEquals("20080311-155320-90407@192.168.0.1", ((MessageDVO)result.get(1)).getMessageId()); // Assert MessageID Assert.assertEquals("outbox", ((MessageDVO)result.get(1)).getMessageBox()); // Assert Message Box Assert.assertEquals("Order", ((MessageDVO)result.get(1)).getMessageType()); // Assert Message Type // Search by message box and messageid criteriaDVO = null; criteriaDVO = (MessageDVO)dao.createDVO(); criteriaDVO.setMessageBox("inbox"); criteriaDVO.setMessageId("20080311-155320-90407@192.168.0.1"); result = dao.findMessagesByHistory(criteriaDVO, 100, 0); Assert.assertEquals(1, result.size()); Assert.assertEquals("20080311-155320-90407@192.168.0.1", ((MessageDVO)result.get(0)).getMessageId()); // Assert MessageID Assert.assertEquals("inbox", ((MessageDVO)result.get(0)).getMessageBox()); // Assert Message Box Assert.assertEquals("Order", ((MessageDVO)result.get(0)).getMessageType()); // Assert Message Type // Search by Service only criteriaDVO = null; result = null; criteriaDVO = (MessageDVO)dao.createDVO(); criteriaDVO.setService("testhistory:testhistory"); result = dao.findMessagesByHistory(criteriaDVO, 100, 0); Assert.assertEquals(1, result.size()); Assert.assertEquals("20080311-155227-07708@192.168.0.1", ((MessageDVO)result.get(0)).getMessageId()); // Assert MessageID Assert.assertEquals("testhistory:testhistory", ((MessageDVO)result.get(0)).getService()); // Assert Service Assert.assertEquals("Order", ((MessageDVO)result.get(0)).getMessageType()); // Assert Message Type Assert.assertEquals("outbox", ((MessageDVO)result.get(0)).getMessageBox()); // Assert Message Box criteriaDVO = null; result = null; criteriaDVO = (MessageDVO)dao.createDVO(); criteriaDVO.setService("%history"); result = dao.findMessagesByHistory(criteriaDVO, 100, 0); Assert.assertEquals(1, result.size()); Assert.assertEquals("20080311-155227-07708@192.168.0.1", ((MessageDVO)result.get(0)).getMessageId()); // Assert MessageID Assert.assertEquals("testhistory:testhistory", ((MessageDVO)result.get(0)).getService()); // Assert Service Assert.assertEquals("Order", ((MessageDVO)result.get(0)).getMessageType()); // Assert Message Type Assert.assertEquals("outbox", ((MessageDVO)result.get(0)).getMessageBox()); // Assert Message Box // Search by Action criteriaDVO = null; result = null; criteriaDVO = (MessageDVO)dao.createDVO(); criteriaDVO.setAction("action"); result = dao.findMessagesByHistory(criteriaDVO, 100, 0); Assert.assertEquals(1, result.size()); Assert.assertEquals("20080311-155223-07106@192.168.0.1", ((MessageDVO)result.get(0)).getMessageId()); // Assert MessageID Assert.assertEquals("outbox", ((MessageDVO)result.get(0)).getMessageBox()); // Assert Message Box Assert.assertEquals("Order", ((MessageDVO)result.get(0)).getMessageType()); // Assert Message Type Assert.assertEquals("action", ((MessageDVO)result.get(0)).getAction()); // Assert Action criteriaDVO = null; result = null; criteriaDVO = (MessageDVO)dao.createDVO(); criteriaDVO.setAction("a%i_n"); result = dao.findMessagesByHistory(criteriaDVO, 100, 0); Assert.assertEquals(1, result.size()); Assert.assertEquals("20080311-155223-07106@192.168.0.1", ((MessageDVO)result.get(0)).getMessageId()); // Assert MessageID Assert.assertEquals("outbox", ((MessageDVO)result.get(0)).getMessageBox()); // Assert Message Box Assert.assertEquals("Order", ((MessageDVO)result.get(0)).getMessageType()); // Assert Message Type Assert.assertEquals("action", ((MessageDVO)result.get(0)).getAction()); // Assert Action // Search by Status criteriaDVO = null; result = null; criteriaDVO = (MessageDVO)dao.createDVO(); criteriaDVO.setStatus("PD"); result = dao.findMessagesByHistory(criteriaDVO, 100, 0); Assert.assertEquals(1, result.size()); Assert.assertEquals("20080311-155225-71207@192.168.0.1", ((MessageDVO)result.get(0)).getMessageId()); // Assert MessageID Assert.assertEquals("outbox", ((MessageDVO)result.get(0)).getMessageBox()); // Assert Message Box Assert.assertEquals("Order", ((MessageDVO)result.get(0)).getMessageType()); // Assert Message Type Assert.assertEquals("PD", ((MessageDVO)result.get(0)).getStatus()); // Assert Message Status criteriaDVO = null; result = null; criteriaDVO = (MessageDVO)dao.createDVO(); criteriaDVO.setStatus("P_"); result = dao.findMessagesByHistory(criteriaDVO, 100, 0); Assert.assertEquals(0, result.size()); // Search by ConvID only criteriaDVO = null; result = null; criteriaDVO = (MessageDVO)dao.createDVO(); criteriaDVO.setConvId("convId_test5"); result = dao.findMessagesByHistory(criteriaDVO, 100, 0); Assert.assertEquals(1, result.size()); Assert.assertEquals("20080311-155228-42309@192.168.0.1", ((MessageDVO)result.get(0)).getMessageId()); // Assert MessageID Assert.assertEquals("outbox", ((MessageDVO)result.get(0)).getMessageBox()); // Assert Message Box Assert.assertEquals("Order", ((MessageDVO)result.get(0)).getMessageType()); // Assert Message Type Assert.assertEquals("convId_test5", ((MessageDVO)result.get(0)).getConvId()); // Assert CovID criteriaDVO = null; result = null; criteriaDVO = (MessageDVO)dao.createDVO(); criteriaDVO.setConvId("%test5"); result = dao.findMessagesByHistory(criteriaDVO, 100, 0); Assert.assertEquals(1, result.size()); Assert.assertEquals("20080311-155228-42309@192.168.0.1", ((MessageDVO)result.get(0)).getMessageId()); // Assert MessageID Assert.assertEquals("outbox", ((MessageDVO)result.get(0)).getMessageBox()); // Assert Message Box Assert.assertEquals("Order", ((MessageDVO)result.get(0)).getMessageType()); // Assert Message Type Assert.assertEquals("convId_test5", ((MessageDVO)result.get(0)).getConvId()); // Assert CovID // Test The Ordering(By Time Stamp) and limit number criteriaDVO = null; result = null; criteriaDVO = (MessageDVO)dao.createDVO(); criteriaDVO.setService("test:test"); criteriaDVO.setMessageBox("outbox"); result = dao.findMessagesByHistory(criteriaDVO, 2, 0); Assert.assertEquals(2, result.size()); Assert.assertEquals("20080311-155228-42309@192.168.0.1", ((MessageDVO)result.get(0)).getMessageId()); // Assert MessageID Assert.assertEquals("20080311-155225-71207@192.168.0.1", ((MessageDVO)result.get(1)).getMessageId()); // Assert MessageID // Test Space Trimming criteriaDVO = (MessageDVO)dao.createDVO(); criteriaDVO.setMessageId("20080311-155320-90407@192.168.0.1"); criteriaDVO.setMessageBox("outbox"); criteriaDVO.setService(" "); criteriaDVO.setAction(" "); criteriaDVO.setCpaId(" "); criteriaDVO.setConvId(" "); result = dao.findMessagesByHistory(criteriaDVO, 100, 0); Assert.assertEquals(1, result.size()); Assert.assertEquals("20080311-155320-90407@192.168.0.1", ((MessageDVO)result.get(0)).getMessageId()); // Assert MessageID Assert.assertEquals("outbox", ((MessageDVO)result.get(0)).getMessageBox()); // Assert Message Box Assert.assertEquals("Order", ((MessageDVO)result.get(0)).getMessageType()); // Assert Message Type Assert.assertEquals("test:test", ((MessageDVO)result.get(0)).getService()); Assert.assertEquals("testhistory5", ((MessageDVO)result.get(0)).getCpaId()); Assert.assertEquals("convId_test1", ((MessageDVO)result.get(0)).getConvId()); // Search By all criteria case criteriaDVO = null; result = null; criteriaDVO = (MessageDVO)dao.createDVO(); criteriaDVO.setMessageId("%@192.168.0.1"); criteriaDVO.setService("test%history%"); criteriaDVO.setConvId("convId%"); criteriaDVO.setAction("order"); criteriaDVO.setStatus(""); result = dao.findMessagesByHistory(criteriaDVO, 100, 0); Assert.assertEquals("20080311-155227-07708@192.168.0.1", ((MessageDVO)result.get(0)).getMessageId()); // Assert MessageID Assert.assertEquals("testhistory:testhistory", ((MessageDVO)result.get(0)).getService()); // Assert Service Assert.assertEquals("outbox", ((MessageDVO)result.get(0)).getMessageBox()); // Assert Message Box Assert.assertEquals("Order", ((MessageDVO)result.get(0)).getMessageType()); // Assert Message Type // Search By '%' in criteria the criteria that using equal instead of 'like' criteriaDVO = null; result = null; criteriaDVO = (MessageDVO)dao.createDVO(); criteriaDVO.setMessageId("%@192.168.0.1"); criteriaDVO.setService("test%history"); result = dao.findMessagesByHistory(criteriaDVO, 100, 0); Assert.assertEquals("20080311-155227-07708@192.168.0.1", ((MessageDVO)result.get(0)).getMessageId()); // Assert MessageID Assert.assertEquals("outbox", ((MessageDVO)result.get(0)).getMessageBox()); // Assert Message Box Assert.assertEquals("Order", ((MessageDVO)result.get(0)).getMessageType()); // Assert Message Type Assert.assertEquals("testhistory:testhistory", ((MessageDVO)result.get(0)).getService()); // Assert Service // Test Search By All Message Box and Message Status when service is "test:test" criteriaDVO = null; result = null; criteriaDVO = (MessageDVO)dao.createDVO(); criteriaDVO.setService("test:test"); criteriaDVO.setMessageBox(""); criteriaDVO.setStatus(""); result = dao.findMessagesByHistory(criteriaDVO, 100, 0); Assert.assertEquals(5, result.size()); Assert.assertEquals("20080311-155228-42309@192.168.0.1", ((MessageDVO)result.get(0)).getMessageId()); // Assert MessageID Assert.assertEquals("outbox", ((MessageDVO)result.get(0)).getMessageBox()); // Assert Message Box Assert.assertEquals("Order", ((MessageDVO)result.get(0)).getMessageType()); // Assert Message Type Assert.assertEquals("20080311-155225-71207@192.168.0.1", ((MessageDVO)result.get(1)).getMessageId()); // Assert MessageID Assert.assertEquals("outbox", ((MessageDVO)result.get(1)).getMessageBox()); // Assert Message Box Assert.assertEquals("Order", ((MessageDVO)result.get(1)).getMessageType()); // Assert Message Type Assert.assertEquals("20080311-155223-07106@192.168.0.1", ((MessageDVO)result.get(2)).getMessageId()); // Assert MessageID Assert.assertEquals("outbox", ((MessageDVO)result.get(2)).getMessageBox()); // Assert Message Box Assert.assertEquals("Order", ((MessageDVO)result.get(2)).getMessageType()); // Assert Message Type Assert.assertEquals("20080311-155320-90407@192.168.0.1", ((MessageDVO)result.get(3)).getMessageId()); // Assert MessageID Assert.assertEquals("inbox", ((MessageDVO)result.get(3)).getMessageBox()); // Assert Message Box Assert.assertEquals("Order", ((MessageDVO)result.get(3)).getMessageType()); // Assert Message Type Assert.assertEquals("20080311-155320-90407@192.168.0.1", ((MessageDVO)result.get(4)).getMessageId()); // Assert MessageID Assert.assertEquals("outbox", ((MessageDVO)result.get(4)).getMessageBox()); // Assert Message Box Assert.assertEquals("Order", ((MessageDVO)result.get(4)).getMessageType()); // Assert Message Type // Test Negative case criteriaDVO = null; criteriaDVO = (MessageDVO)dao.createDVO(); criteriaDVO.setMessageBox("%box"); result = dao.findMessagesByHistory(criteriaDVO, 100, 0); Assert.assertEquals(0, result.size()); criteriaDVO = null; criteriaDVO = (MessageDVO)dao.createDVO(); criteriaDVO.setStatus("%L"); result = dao.findMessagesByHistory(criteriaDVO, 100, 0); Assert.assertEquals(0, result.size()); } @Test public void testFindNumberOFMessagesByHistory() throws DAOException { // Test Search Criteria one by one MessageDVO criteriaDVO; MessageDataSourceDAO dao = super.getTestingTarget(); int result = -1; // Search by message_ID only criteriaDVO = (MessageDVO)dao.createDVO(); criteriaDVO.setMessageId("20080311-155320-90407@192.168.0.1"); result = dao.findNumberOfMessagesByHistory(criteriaDVO); Assert.assertEquals(2, result); criteriaDVO = (MessageDVO)dao.createDVO(); criteriaDVO.setMessageId("20080311-155320-90407%"); result = dao.findNumberOfMessagesByHistory(criteriaDVO); Assert.assertEquals(2, result); // Search by message box and messageid criteriaDVO = null; result = -1; criteriaDVO = (MessageDVO)dao.createDVO(); criteriaDVO.setMessageBox("inbox"); criteriaDVO.setMessageId("20080311-155320-90407@192.168.0.1"); result = dao.findNumberOfMessagesByHistory(criteriaDVO); Assert.assertEquals(1, result); // Search by Service only criteriaDVO = null; result = -1; criteriaDVO = (MessageDVO)dao.createDVO(); criteriaDVO.setService("testhistory:testhistory"); result = dao.findNumberOfMessagesByHistory(criteriaDVO); Assert.assertEquals(1, result); criteriaDVO = null; result = -1; criteriaDVO = (MessageDVO)dao.createDVO(); criteriaDVO.setService("test%history"); result = dao.findNumberOfMessagesByHistory(criteriaDVO); Assert.assertEquals(1, result); // Search by Action only criteriaDVO = null; result = -1; criteriaDVO = (MessageDVO)dao.createDVO(); criteriaDVO.setAction("action"); result = dao.findNumberOfMessagesByHistory(criteriaDVO); Assert.assertEquals(1, result); criteriaDVO = null; result = -1; criteriaDVO = (MessageDVO)dao.createDVO(); criteriaDVO.setAction("a%i_n"); result = dao.findNumberOfMessagesByHistory(criteriaDVO); Assert.assertEquals(1, result); // Search by Status only criteriaDVO = null; result = -1; criteriaDVO = (MessageDVO)dao.createDVO(); criteriaDVO.setStatus("PD"); result = dao.findNumberOfMessagesByHistory(criteriaDVO); Assert.assertEquals(1, result); // Search by ConvID only criteriaDVO = null; result = -1; criteriaDVO = (MessageDVO)dao.createDVO(); criteriaDVO.setConvId("convId_test5"); result = dao.findNumberOfMessagesByHistory(criteriaDVO); Assert.assertEquals(1, result); criteriaDVO = null; result = -1; criteriaDVO = (MessageDVO)dao.createDVO(); criteriaDVO.setConvId("%test5"); result = dao.findNumberOfMessagesByHistory(criteriaDVO); Assert.assertEquals(1, result); // Test Space Triming criteriaDVO = null; result = -1; criteriaDVO = (MessageDVO)dao.createDVO(); criteriaDVO.setMessageId("20080311-155320-90407@192.168.0.1"); criteriaDVO.setMessageBox("outbox"); criteriaDVO.setService(" "); criteriaDVO.setAction(" "); criteriaDVO.setCpaId(" "); criteriaDVO.setConvId(" "); result = dao.findNumberOfMessagesByHistory(criteriaDVO); Assert.assertEquals(1, result); // Search By all criteria case criteriaDVO = null; result = -1; criteriaDVO = (MessageDVO)dao.createDVO(); criteriaDVO.setMessageId("%@192.168.0.1"); criteriaDVO.setService("test%history%"); criteriaDVO.setConvId("convId%"); criteriaDVO.setAction("order"); criteriaDVO.setStatus(""); result = dao.findNumberOfMessagesByHistory(criteriaDVO); Assert.assertEquals(1, result); // Test Negative case criteriaDVO = null; result = -1; criteriaDVO = (MessageDVO)dao.createDVO(); criteriaDVO.setMessageBox("%box"); result = dao.findNumberOfMessagesByHistory(criteriaDVO); Assert.assertEquals(0, result); criteriaDVO = null; result = -1; criteriaDVO = (MessageDVO)dao.createDVO(); criteriaDVO.setStatus("%L"); result = dao.findNumberOfMessagesByHistory(criteriaDVO); Assert.assertEquals(0, result); } }