package gov.samhsa.acs.contexthandler; import gov.samhsa.acs.common.exception.DS4PException; import gov.samhsa.acs.xdsb.common.XdsbDocumentType; import gov.samhsa.acs.xdsb.registry.wsclient.adapter.XdsbRegistryAdapter; import gov.samhsa.acs.xdsb.repository.wsclient.adapter.XdsbRepositoryAdapter; import ihe.iti.xds_b._2007.RetrieveDocumentSetRequest; import ihe.iti.xds_b._2007.RetrieveDocumentSetResponse; import ihe.iti.xds_b._2007.RetrieveDocumentSetResponse.DocumentResponse; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.List; import oasis.names.tc.ebxml_regrep.xsd.query._3.AdhocQueryResponse; import org.herasaf.xacml.core.SyntaxException; import org.herasaf.xacml.core.context.impl.RequestType; import org.herasaf.xacml.core.policy.Evaluatable; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import static org.junit.Assert.*; import static org.mockito.Mockito.*; @RunWith(MockitoJUnitRunner.class) public class RequestGeneratorTest { RequestGenerator requestGenerator=new RequestGenerator (); @Test public void testGetDate() { String date=requestGenerator.getDate(); assertTrue (date.matches("\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}-\\d{4}")); } @Test public void testGenerateRequestString(){ RequestGenerator sut=spy(requestGenerator); when(sut.getDate()).thenReturn("2013-12-23T14:48:07-0500"); assertEquals("<Request xmlns=\"urn:oasis:names:tc:xacml:2.0:context:schema:os\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"> <Subject> <Attribute AttributeId=\"urn:oasis:names:tc:xacml:1.0:subject-category:recipient-subject\" DataType=\"http://www.w3.org/2001/XMLSchema#string\"> <AttributeValue>123</AttributeValue> </Attribute> <Attribute AttributeId=\"urn:oasis:names:tc:xacml:1.0:subject-category:intermediary-subject\" DataType=\"http://www.w3.org/2001/XMLSchema#string\"> <AttributeValue>456</AttributeValue> </Attribute>\t <Attribute AttributeId=\"gov.samhsa.consent2share.purpose-of-use-code\" DataType=\"http://www.w3.org/2001/XMLSchema#string\"> <AttributeValue>TREAT</AttributeValue> </Attribute> </Subject> <Resource> <Attribute AttributeId=\"urn:oasis:names:tc:xacml:1.0:resource:resource-id\" DataType=\"http://www.w3.org/2001/XMLSchema#string\"> <AttributeValue>789</AttributeValue> </Attribute> </Resource> <Action> <Attribute AttributeId=\"urn:oasis:names:tc:xacml:1.0:action:action-id\" DataType=\"http://www.w3.org/2001/XMLSchema#string\"> <AttributeValue>write</AttributeValue> </Attribute> </Action> <Environment>\t\t<Attribute AttributeId=\"urn:oasis:names:tc:xacml:1.0:environment:current-dateTime\" DataType=\"http://www.w3.org/2001/XMLSchema#dateTime\"> <AttributeValue>2013-12-23T14:48:07-0500</AttributeValue> </Attribute>\t </Environment> </Request>",sut.generateRequestString("123", "456", "TREAT", "789")); } @Test public void testGenerateRequest() throws SyntaxException{ RequestGenerator sut=spy(requestGenerator); RequestType request=mock(RequestType.class); doReturn(request).when(sut).unmarshalRequest(any(InputStream.class)); when(sut.getDate()).thenReturn("2013-12-23T14:48:07-0500"); sut.generateRequest("123", "456", "TREAT", "789"); verify (sut,times(1)).unmarshalRequest(any(InputStream.class)); } @Test public void testGenerateRequestWhenThereIsSyntaxErrorAndExceptionIsHandled() throws SyntaxException{ RequestGenerator sut=spy(requestGenerator); doThrow(new SyntaxException()).when(sut).unmarshalRequest(any(InputStream.class)); when(sut.getDate()).thenReturn("2013-12-23T14:48:07-0500"); sut.generateRequest("123", "456", "TREAT", "789"); } }