package gov.samhsa.acs.contexthandler; import static org.junit.Assert.assertNotNull; import gov.samhsa.acs.common.dto.XacmlRequest; import gov.samhsa.acs.common.tool.SimpleMarshaller; import gov.samhsa.acs.common.tool.SimpleMarshallerImpl; import gov.samhsa.acs.common.tool.XmlTransformer; import gov.samhsa.acs.common.tool.XmlTransformerImpl; import gov.samhsa.acs.contexthandler.exception.NoPolicyFoundException; import gov.samhsa.acs.contexthandler.exception.PolicyProviderException; import gov.samhsa.acs.polrep.client.PolRepRestClient; import gov.samhsa.consent2share.hl7.Hl7v3Transformer; import gov.samhsa.consent2share.hl7.Hl7v3TransformerImpl; import gov.samhsa.consent2share.pixclient.service.PixManagerService; import gov.samhsa.consent2share.pixclient.service.PixManagerServiceImpl; import gov.samhsa.consent2share.pixclient.util.PixManagerMessageHelper; import gov.samhsa.consent2share.pixclient.util.PixManagerRequestXMLToJava; import java.io.IOException; import java.io.StringWriter; import java.util.UUID; import org.herasaf.xacml.core.WritingException; import org.herasaf.xacml.core.policy.Evaluatable; import org.herasaf.xacml.core.policy.PolicyMarshaller; import org.herasaf.xacml.core.simplePDP.SimplePDPFactory; import org.junit.After; import org.junit.Before; import org.junit.Test; public class PolRepPolicyProviderIT { @Before public void setUp() throws Exception { } @After public void tearDown() throws Exception { } @Test public void testGetPolicies() throws WritingException, NoPolicyFoundException, PolicyProviderException, IOException { final String pidDomain = "2.16.840.1.113883.3.72.5.9.4"; final String pidDomainType = "ISO"; final String empiEndpointAddress = ""; final String scheme = "http"; final String host = "localhost"; final int port = 8080; final String context = "polrep-web"; final String version = "latest"; final String empiDomainId = "2.16.840.1.113883.4.357"; final String intermediarySubjectNPI = "1972838936"; final String eid = "a5d1c640-ad43-11e4-96f1-00155d0a6a16"; final String patientUniqueId = "'a5d1c640-ad43-11e4-96f1-00155d0a6a16^^^&2.16.840.1.113883.4.357&ISO'"; final String purposeOfUse = "TREATMENT"; final String recipientSubjectNPI = "1477888469"; final String messageId = UUID.randomUUID().toString(); SimplePDPFactory.getSimplePDP(); final SimpleMarshaller marshaller = new SimpleMarshallerImpl(); final XmlTransformer xmlTransformer = new XmlTransformerImpl(marshaller); final Hl7v3Transformer hl7v3Transformer = new Hl7v3TransformerImpl( xmlTransformer); final PixManagerRequestXMLToJava requestXMLToJava = new PixManagerRequestXMLToJava( marshaller); final PixManagerMessageHelper pixManagerMessageHelper = new PixManagerMessageHelper(); final PixManagerService pixManagerService = new PixManagerServiceImpl( empiEndpointAddress); final PolRepRestClient polRepRestClient = new PolRepRestClient(scheme, host, port, context, version); final PolicyProvider sut = new PolRepPolicyProvider(pidDomain, pidDomainType, hl7v3Transformer, requestXMLToJava, pixManagerMessageHelper, pixManagerService, polRepRestClient); final XacmlRequest xacmlRequest = new XacmlRequest(); xacmlRequest.setHomeCommunityId(empiDomainId); xacmlRequest.setIntermediarySubjectNPI(intermediarySubjectNPI); xacmlRequest.setMessageId(messageId); xacmlRequest.setPatientId(eid); xacmlRequest.setPatientUniqueId(patientUniqueId); xacmlRequest.setPurposeOfUse(purposeOfUse); xacmlRequest.setRecipientSubjectNPI(recipientSubjectNPI); String xacml = null; try (StringWriter writer = new StringWriter()) { Evaluatable evaluatable = sut.getPolicies(xacmlRequest).get(0); PolicyMarshaller.marshal(evaluatable, System.out); PolicyMarshaller.marshal(evaluatable, writer); xacml = writer.toString(); } assertNotNull(xacml); } }