package edu.harvard.i2b2.im.ws; import static org.junit.Assert.*; import java.io.DataInputStream; import java.io.FileInputStream; import java.io.StringWriter; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import javax.xml.bind.JAXBElement; import junit.framework.JUnit4TestAdapter; import org.apache.axiom.om.OMElement; import org.junit.BeforeClass; import org.junit.Test; import edu.harvard.i2b2.common.util.jaxb.JAXBUnWrapHelper; import edu.harvard.i2b2.im.datavo.pdo.ObservationType; import edu.harvard.i2b2.im.datavo.pdo.PidType; import edu.harvard.i2b2.im.datavo.pdo.PidType.PatientMapId; import edu.harvard.i2b2.im.datavo.pdo.query.PatientDataResponseType; import edu.harvard.i2b2.im.datavo.i2b2message.ResponseMessageType; import edu.harvard.i2b2.im.datavo.wdo.AuditType; import edu.harvard.i2b2.im.datavo.wdo.AuditsType; import edu.harvard.i2b2.im.datavo.wdo.IsKeySetType; import edu.harvard.i2b2.im.datavo.wdo.SetKeyType; import edu.harvard.i2b2.im.util.IMJAXBUtil; public class IMServiceRESTTest extends IMAxisAbstract{ private static String testFileDir = ""; private static String imTargetEPR = "http://127.0.0.1:9090/i2b2/services/IMService/"; private static String isKeySet = "isKeySet"; private static String pdorequest = "pdorequest"; private static String setKey = "setKey"; private static String validateSiteId = "validateSiteId"; private static String getAudit = "getAudit"; public static junit.framework.Test suite() { return new JUnit4TestAdapter(IMServiceRESTTest.class); } @BeforeClass public static void setUp() throws Exception { testFileDir = "test"; //System.getProperty("testfiledir"); System.out.println("test file dir " + testFileDir); if (!((testFileDir != null) && (testFileDir.trim().length() > 0))) { throw new Exception( "please provide test file directory info -Dtestfiledir"); } } @Test public void SetKeyValidUser() throws Exception { String filename = testFileDir + "/set_key_valid_user.xml"; try { String requestString = getQueryString(filename); OMElement requestElement = convertStringToOMElement(requestString); OMElement responseElement = getServiceClient(imTargetEPR + setKey).sendReceive(requestElement); JAXBElement responseJaxb = IMJAXBUtil.getJAXBUtil().unMashallFromString(responseElement.toString()); ResponseMessageType r = (ResponseMessageType)responseJaxb.getValue(); String msg = r.getResponseHeader().getResultStatus().getStatus().getType(); assertEquals("DONE", msg); } catch (Exception e) { e.printStackTrace(); assertTrue(false); } } @Test public void pdo_minvalue() throws Exception { String filename = testFileDir + "/get_pdo.xml"; try { String requestString = getQueryString(filename); OMElement requestElement = convertStringToOMElement(requestString); OMElement responseElement = getServiceClient(imTargetEPR + pdorequest).sendReceive(requestElement); //read test file and store query instance ; //unmarshall this response string JAXBElement responseJaxb = IMJAXBUtil.getJAXBUtil().unMashallFromString(responseElement.toString()); ResponseMessageType r = (ResponseMessageType)responseJaxb.getValue(); JAXBUnWrapHelper helper = new JAXBUnWrapHelper(); /*MM TODO PatientDataResponseType patientDataResponseType = (PatientDataResponseType)helper.getObjectByClass(r.getMessageBody().getAny(),PatientDataResponseType.class); assertTrue("checking patient set size > 0 ",patientDataResponseType.getPatientData().getPidSet().getPid().size()>0); */ } catch (Exception e) { e.printStackTrace(); assertTrue(false); } } @Test public void SetKeyValidMD5() throws Exception { String filename = testFileDir + "/set_key_valid_md5.xml"; String masterInstanceResult = null; try { String requestString = getQueryString(filename); OMElement requestElement = convertStringToOMElement(requestString); OMElement responseElement = getServiceClient(imTargetEPR + setKey).sendReceive(requestElement); JAXBElement responseJaxb = IMJAXBUtil.getJAXBUtil().unMashallFromString(responseElement.toString()); ResponseMessageType r = (ResponseMessageType)responseJaxb.getValue(); String msg = r.getResponseHeader().getResultStatus().getStatus().getType(); assertEquals("DONE", msg); } catch (Exception e) { e.printStackTrace(); assertTrue(false); } } @Test public void SetKeyInValidMD5() throws Exception { String filename = testFileDir + "/set_key_invalid_md5.xml"; try { String requestString = getQueryString(filename); OMElement requestElement = convertStringToOMElement(requestString); OMElement responseElement = getServiceClient(imTargetEPR + setKey).sendReceive(requestElement); JAXBElement responseJaxb = IMJAXBUtil.getJAXBUtil().unMashallFromString(responseElement.toString()); ResponseMessageType r = (ResponseMessageType)responseJaxb.getValue(); JAXBUnWrapHelper helper = new JAXBUnWrapHelper(); String err = r.getResponseHeader().getResultStatus().getStatus().getType(); assertEquals("ERROR", err); } catch (Exception e) { e.printStackTrace(); assertTrue(false); } } @Test public void SetKeyInValidUser() throws Exception { String filename = testFileDir + "/set_key_invalid_user.xml"; try { String requestString = getQueryString(filename); OMElement requestElement = convertStringToOMElement(requestString); OMElement responseElement = getServiceClient(imTargetEPR + setKey).sendReceive(requestElement); JAXBElement responseJaxb = IMJAXBUtil.getJAXBUtil().unMashallFromString(responseElement.toString()); ResponseMessageType r = (ResponseMessageType)responseJaxb.getValue(); JAXBUnWrapHelper helper = new JAXBUnWrapHelper(); String err = r.getResponseHeader().getResultStatus().getStatus().getType(); assertEquals("ERROR", err); } catch (Exception e) { e.printStackTrace(); assertTrue(false); } } @Test public void IsSetKeyInValidUser() throws Exception { String filename = testFileDir + "/iskey_set_invalid_user.xml"; try { String requestString = getQueryString(filename); OMElement requestElement = convertStringToOMElement(requestString); OMElement responseElement = getServiceClient(imTargetEPR + isKeySet).sendReceive(requestElement); JAXBElement responseJaxb = IMJAXBUtil.getJAXBUtil().unMashallFromString(responseElement.toString()); ResponseMessageType r = (ResponseMessageType)responseJaxb.getValue(); JAXBUnWrapHelper helper = new JAXBUnWrapHelper(); String err = r.getResponseHeader().getResultStatus().getStatus().getType(); assertEquals("ERROR", err); } catch (Exception e) { e.printStackTrace(); assertTrue(false); } } @Test public void IsKeySetValidUser() throws Exception { String filename = testFileDir + "/iskey_set_valid_user.xml"; try { String requestString = getQueryString(filename); OMElement requestElement = convertStringToOMElement(requestString); OMElement responseElement = getServiceClient(imTargetEPR + isKeySet).sendReceive(requestElement); JAXBElement responseJaxb = IMJAXBUtil.getJAXBUtil().unMashallFromString(responseElement.toString()); ResponseMessageType r = (ResponseMessageType)responseJaxb.getValue(); JAXBUnWrapHelper helper = new JAXBUnWrapHelper(); IsKeySetType masterInstanceResult = (IsKeySetType)helper.getObjectByClass(r.getMessageBody().getAny(),IsKeySetType.class); assertNotNull(masterInstanceResult); assertTrue(masterInstanceResult.isActive()); } catch (Exception e) { e.printStackTrace(); assertTrue(false); } } @Test public void IsKeySetNonProject() throws Exception { String filename = testFileDir + "/iskey_set_non_project.xml"; try { String requestString = getQueryString(filename); OMElement requestElement = convertStringToOMElement(requestString); OMElement responseElement = getServiceClient(imTargetEPR + isKeySet).sendReceive(requestElement); JAXBElement responseJaxb = IMJAXBUtil.getJAXBUtil().unMashallFromString(responseElement.toString()); ResponseMessageType r = (ResponseMessageType)responseJaxb.getValue(); JAXBUnWrapHelper helper = new JAXBUnWrapHelper(); String err = r.getResponseHeader().getResultStatus().getStatus().getType(); assertEquals("ERROR", err); } catch (Exception e) { e.printStackTrace(); assertTrue(false); } } @Test public void UnSetKeyValidUser() throws Exception { String filename = testFileDir + "/unset_key_valid_user.xml"; String masterInstanceResult = null; try { String requestString = getQueryString(filename); OMElement requestElement = convertStringToOMElement(requestString); OMElement responseElement = getServiceClient(imTargetEPR + setKey).sendReceive(requestElement); JAXBElement responseJaxb = IMJAXBUtil.getJAXBUtil().unMashallFromString(responseElement.toString()); ResponseMessageType r = (ResponseMessageType)responseJaxb.getValue(); JAXBUnWrapHelper helper = new JAXBUnWrapHelper(); String msg = r.getResponseHeader().getResultStatus().getStatus().getType(); assertEquals("DONE", msg); filename = testFileDir + "/iskey_set_valid_user.xml"; requestString = getQueryString(filename); requestElement = convertStringToOMElement(requestString); responseElement = getServiceClient(imTargetEPR + isKeySet).sendReceive(requestElement); responseJaxb = IMJAXBUtil.getJAXBUtil().unMashallFromString(responseElement.toString()); r = (ResponseMessageType)responseJaxb.getValue(); helper = new JAXBUnWrapHelper(); IsKeySetType key = (IsKeySetType)helper.getObjectByClass(r.getMessageBody().getAny(),IsKeySetType.class); assertNotNull(key); assertFalse(key.isActive()); } catch (Exception e) { e.printStackTrace(); assertTrue(false); } } @Test public void ReSetKeyValidUser() throws Exception { String filename = testFileDir + "/set_key_valid_user.xml"; String masterInstanceResult = null; try { String requestString = getQueryString(filename); OMElement requestElement = convertStringToOMElement(requestString); OMElement responseElement = getServiceClient(imTargetEPR + setKey).sendReceive(requestElement); JAXBElement responseJaxb = IMJAXBUtil.getJAXBUtil().unMashallFromString(responseElement.toString()); ResponseMessageType r = (ResponseMessageType)responseJaxb.getValue(); String msg = r.getResponseHeader().getResultStatus().getStatus().getType(); assertEquals("DONE", msg); } catch (Exception e) { e.printStackTrace(); assertTrue(false); } } @Test public void validatesiteid() throws Exception { String filename = testFileDir + "/validate_site.xml"; try { String requestString = getQueryString(filename); OMElement requestElement = convertStringToOMElement(requestString); OMElement responseElement = getServiceClient(imTargetEPR + validateSiteId).sendReceive(requestElement); //read test file and store query instance ; //unmarshall this response string JAXBElement responseJaxb = IMJAXBUtil.getJAXBUtil().unMashallFromString(responseElement.toString()); ResponseMessageType r = (ResponseMessageType)responseJaxb.getValue(); JAXBUnWrapHelper helper = new JAXBUnWrapHelper(); PatientDataResponseType patientDataResponseType = (PatientDataResponseType)helper.getObjectByClass(r.getMessageBody().getAny(),PatientDataResponseType.class); //StatusType.Condition condition = patientDataResponseType.getStatus().getCondition().get(0); //assertEquals(condition.getType(),"DONE","checking crc message status 'DONE'"); assertTrue("checking patient set size = 2 ",patientDataResponseType.getPatientData().getPidSet().getPid().get(0).getPatientMapId().size()==2); //System.out.println(patientDataResponseType.getPatientData().getObservationSet().get(0).getObservation().get(0).getPatientId().getSource()); boolean found = false; for (PatientMapId results : patientDataResponseType.getPatientData().getPidSet().getPid().get(0).getPatientMapId()) { if (results.getValue().equals("2000002062")) { found = true; } } assertTrue(found); found = false; for (PatientMapId results : patientDataResponseType.getPatientData().getPidSet().getPid().get(0).getPatientMapId()) { if (results.getValue().equals("2000002017")) { found = true; } } assertTrue(found); } catch (Exception e) { e.printStackTrace(); assertTrue(false); } } /* @Test public void ValidteThanGetAudit() throws Exception { String filename = testFileDir + "/get_audit.xml"; try { String requestString = getQueryString(filename); OMElement requestElement = convertStringToOMElement(requestString); OMElement responseElement = getServiceClient(imTargetEPR + getAudit).sendReceive(requestElement); //read test file and store query instance ; //unmarshall this response string JAXBElement responseJaxb = IMJAXBUtil.getJAXBUtil().unMashallFromString(responseElement.toString()); ResponseMessageType r = (ResponseMessageType)responseJaxb.getValue(); JAXBUnWrapHelper helper = new JAXBUnWrapHelper(); AuditsType auditsType = (AuditsType)helper.getObjectByClass(r.getMessageBody().getAny(),AuditsType.class); // System.out.println(r.toString()); boolean found = false; for (AuditType results : auditsType.getAudit()) { if (results.getPid().equals("2000002062")) { found = true; break; } } assertTrue("Searching for 2000002062", found); found = false; for (AuditType results : auditsType.getAudit()) { if (results.getPid().equals("2000002017")) { found = true; break; } } assertTrue("Searching for 2000002017", found); // assertTrue("checking patient set size > 0 ",patientDataResponseType.getPatientData().getPidSet().getPid().size()>0); } catch (Exception e) { e.printStackTrace(); assertTrue(false); } } */ public static String getQueryString(String filename) throws Exception { //StringBuffer queryStr = new StringBuffer(); String queryStr = ""; DataInputStream dataStream = new DataInputStream(new FileInputStream( filename)); while (dataStream.available() > 0) { queryStr += (dataStream.readLine() + "\n"); } return queryStr; } }