package gov.samhsa.acs.pep.ws; import static org.junit.Assert.assertEquals; import static org.mockito.Matchers.isA; import static org.mockito.Mockito.when; import gov.samhsa.acs.pep.PolicyEnforcementPoint; import gov.samhsa.acs.pep.ws.PepPortTypeImpl; import gov.samhsa.ds4ppilot.contract.pep.PepPortType; import gov.samhsa.ds4ppilot.contract.pep.PepService; import gov.samhsa.ds4ppilot.schema.pep.DirectEmailSendRequest; import gov.samhsa.ds4ppilot.schema.pep.DirectEmailSendResponse; import ihe.iti.xds_b._2007.RetrieveDocumentSetRequest; import ihe.iti.xds_b._2007.RetrieveDocumentSetResponse; import java.net.URL; import java.util.Properties; import javax.xml.namespace.QName; import javax.xml.ws.Endpoint; import oasis.names.tc.ebxml_regrep.xsd.query._3.AdhocQueryRequest; import oasis.names.tc.ebxml_regrep.xsd.query._3.AdhocQueryResponse; import oasis.names.tc.ebxml_regrep.xsd.rs._3.RegistryResponseType; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.Resource; import org.springframework.core.io.support.PropertiesLoaderUtils; public class PepPortTypeImplTest { private static final String TEST_REQUEST_ID = "TEST_REQUEST_ID"; private URL wsdlURL; private String address; private QName serviceName; private Endpoint ep; @Mock private PolicyEnforcementPoint pep; @Before public void setUp() throws Exception { Resource resource = new ClassPathResource("/jettyServerPortForTesing.properties"); Properties props = PropertiesLoaderUtils.loadProperties(resource); String portNumber = props.getProperty("jettyServerPortForTesing.number"); address = String.format("http://localhost:%s/services/PepService", portNumber); MockitoAnnotations.initMocks(this); serviceName = new QName("http://www.samhsa.gov/ds4ppilot/contract/pep", "PepService"); wsdlURL = new URL(address + "?wsdl"); ep = Endpoint.publish(address, new PepPortTypeImpl(pep)); } @After public void tearDown() throws Exception { try { ep.stop(); } catch (Throwable t) { System.out.println("Error thrown: " + t.getMessage()); } } @Test public void testDirectEmailSend() { // Arrange DirectEmailSendRequest req = new DirectEmailSendRequest(); DirectEmailSendResponse resp = new DirectEmailSendResponse(); resp.setReturn(TEST_REQUEST_ID); PepService service = new PepService(wsdlURL, serviceName); PepPortType port = service.getXDSHTTPEndpoint(); when(pep.directEmailSend(isA(DirectEmailSendRequest.class))) .thenReturn(resp); // Act DirectEmailSendResponse response = port.directEmailSend(req); // Assert assertEquals(resp.getReturn(), response.getReturn()); } @Test public void testRegistryStoredQuery() { // Arrange AdhocQueryRequest req = new AdhocQueryRequest(); AdhocQueryResponse resp = new AdhocQueryResponse(); resp.setRequestId(TEST_REQUEST_ID); PepService service = new PepService(wsdlURL, serviceName); PepPortType port = service.getXDSHTTPEndpoint(); when(pep.registryStoredQuery(isA(AdhocQueryRequest.class))).thenReturn( resp); // Act AdhocQueryResponse response = port.registryStoredQuery(req); // Assert assertEquals(resp.getRequestId(), response.getRequestId()); } @Test public void testRetrieveDocumentSet() { // Arrange RetrieveDocumentSetRequest req = new RetrieveDocumentSetRequest(); RetrieveDocumentSetResponse resp = new RetrieveDocumentSetResponse(); RegistryResponseType regResp = new RegistryResponseType(); regResp.setRequestId(TEST_REQUEST_ID); resp.setRegistryResponse(regResp); PepService service = new PepService(wsdlURL, serviceName); PepPortType port = service.getXDSHTTPEndpoint(); when(pep.retrieveDocumentSet(isA(RetrieveDocumentSetRequest.class))).thenReturn(resp); // Act RetrieveDocumentSetResponse response = port.retrieveDocumentSet(req); // Assert assertEquals(resp.getRegistryResponse().getRequestId(), response.getRegistryResponse().getRequestId()); } }