package gov.samhsa.acs.dss.wsclient; import static org.junit.Assert.assertEquals; import gov.samhsa.acs.dss.ws.schema.DSSRequest; import gov.samhsa.acs.dss.ws.schema.DSSRequestForDirect; import gov.samhsa.acs.dss.ws.schema.DSSResponse; import gov.samhsa.acs.dss.ws.schema.DSSResponseForDirect; import java.util.Properties; import javax.xml.ws.Endpoint; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.Resource; import org.springframework.core.io.support.PropertiesLoaderUtils; public class DSSWebServiceClientTest { private static final String DOCUMENT_XML_MOCK = "DOCUMENT_XML_MOCK"; private static final String ENFORCEMENT_POLICIES_XML_MOCK = "ENFORCEMENT_POLICIES_XML_MOCK"; private static final String SEGMENTED_DOCUMENT_XML_MOCK = "SEGMENTED_DOCUMENT_XML_MOCK"; private static final String RECIPIENT_EMAIL_ADDRESS = "RECIPIENT_EMAIL_ADDRESS"; private static final String SENDER_EMAIL_ADDRESS = "SENDER_EMAIL_ADDRESS"; private static final String XDS_DOCUMENT_ENTRY_UNIQUEID = "XDS_DOCUMENT_ENTRY_UNIQUEID"; protected static Endpoint ep; protected static String address; private static final DSSRequest expectedValueOfDSSRequest = new DSSRequest(); private static final DSSResponse returnedValueOfDSSResponse = new DSSResponse(); private static final DSSRequestForDirect expectedValueOfDSSRequestForDirect = new DSSRequestForDirect(); private static final DSSResponseForDirect returnedValueOfDSSResponseForDirect = new DSSResponseForDirect(); private DSSWebServiceClient sut; @Before public void setUp() throws Exception { final Resource resource = new ClassPathResource( "/jettyServerPortForTesing.properties"); final Properties props = PropertiesLoaderUtils.loadProperties(resource); final String portNumber = props .getProperty("jettyServerPortForTesing.number"); address = String.format("http://localhost:%s/services/DSS", portNumber); ep = Endpoint.publish(address, new DSSPortTypeImpl()); sut = new DSSWebServiceClient(address); } @After public void tearDown() throws Exception { try { ep.stop(); } catch (final Throwable t) { System.out.println("Error thrown: " + t.getMessage()); } } @Test public void testSegmentDocument() { // Arrange expectedValueOfDSSRequest.setDocumentXml(DOCUMENT_XML_MOCK); expectedValueOfDSSRequest .setEnforcementPoliciesXml(ENFORCEMENT_POLICIES_XML_MOCK); DSSPortTypeImpl.expectedValueOfDSSRequest = expectedValueOfDSSRequest; returnedValueOfDSSResponse .setSegmentedDocumentXml(SEGMENTED_DOCUMENT_XML_MOCK); DSSPortTypeImpl.returnedValueOfDSSResponse = returnedValueOfDSSResponse; // Act final String actualResponse = sut.segmentDocument( expectedValueOfDSSRequest).getSegmentedDocumentXml(); // Assert assertEquals(SEGMENTED_DOCUMENT_XML_MOCK, actualResponse); } @Test(expected = DSSWebServiceClientException.class) public void testSegmentDocument_Throws_DSSWebServiceClientException() { // Arrange ep.stop(); ep = Endpoint.publish(address, new DSSPortTypeImplThrowingException()); // Act final String actualResponse = sut.segmentDocument( expectedValueOfDSSRequest).getSegmentedDocumentXml(); // Assert assertEquals(SEGMENTED_DOCUMENT_XML_MOCK, actualResponse); } @Test public void testSegmentDocumentForDirect() { // Arrange expectedValueOfDSSRequestForDirect.setDocumentXml(DOCUMENT_XML_MOCK); expectedValueOfDSSRequestForDirect .setEnforcementPoliciesXml(ENFORCEMENT_POLICIES_XML_MOCK); expectedValueOfDSSRequestForDirect .setRecipientEmailAddress(RECIPIENT_EMAIL_ADDRESS); expectedValueOfDSSRequestForDirect .setSenderEmailAddress(SENDER_EMAIL_ADDRESS); expectedValueOfDSSRequestForDirect .setXdsDocumentEntryUniqueId(XDS_DOCUMENT_ENTRY_UNIQUEID); DSSPortTypeImpl.expectedValueOfDSSRequestForDirect = expectedValueOfDSSRequestForDirect; returnedValueOfDSSResponseForDirect .setSegmentedDocumentXml(SEGMENTED_DOCUMENT_XML_MOCK); DSSPortTypeImpl.returnedValueOfDSSResponseForDirect = returnedValueOfDSSResponseForDirect; // Act final String actualResponse = sut.segmentDocumentForDirect( expectedValueOfDSSRequestForDirect).getSegmentedDocumentXml(); // Assert assertEquals(SEGMENTED_DOCUMENT_XML_MOCK, actualResponse); } @Test(expected = DSSWebServiceClientException.class) public void testSegmentDocumentForDirect_Throws_DSSWebServiceClientException() { // Arrange ep.stop(); ep = Endpoint.publish(address, new DSSPortTypeImplThrowingException()); // Act final String actualResponse = sut.segmentDocumentForDirect( expectedValueOfDSSRequestForDirect).getSegmentedDocumentXml(); // Assert assertEquals(SEGMENTED_DOCUMENT_XML_MOCK, actualResponse); } }