source: ccr/trunk/nhin-vista/projects/NHINC/Current/Product/Production/Gateway/NhincAuditLogDteEJB/test/gov/hhs/fha/nhinc/transform/audit/SubscribeTransformsTest.java@ 507

Last change on this file since 507 was 507, checked in by George Lilly, 15 years ago

NHIN gateway and adaptor for use on linux with VistA EHR and RPMS

File size: 11.5 KB
Line 
1package gov.hhs.fha.nhinc.transform.audit;
2
3import com.services.nhinc.schema.auditmessage.AuditMessageType;
4import com.services.nhinc.schema.auditmessage.AuditSourceIdentificationType;
5import com.services.nhinc.schema.auditmessage.EventIdentificationType;
6import static org.junit.Assert.*;
7import org.junit.Test;
8import gov.hhs.fha.nhinc.common.auditlog.LogEventRequestType;
9import gov.hhs.fha.nhinc.common.auditlog.LogNhinSubscribeRequestType;
10import gov.hhs.fha.nhinc.common.auditlog.LogSubscribeResponseType;
11import gov.hhs.fha.nhinc.common.auditlog.SubscribeResponseMessageType;
12import gov.hhs.fha.nhinc.common.nhinccommon.AssertionType;
13import gov.hhs.fha.nhinc.common.nhinccommon.HomeCommunityType;
14import gov.hhs.fha.nhinc.common.nhinccommoninternalorch.SubscribeRequestType;
15import oasis.names.tc.ebxml_regrep.xsd.rim._3.AdhocQueryType;
16import gov.hhs.fha.nhinc.common.nhinccommon.PersonNameType;
17import oasis.names.tc.ebxml_regrep.xsd.rim._3.SlotType1;
18import gov.hhs.fha.nhinc.common.nhinccommon.UserType;
19import javax.xml.parsers.DocumentBuilderFactory;
20import javax.xml.parsers.ParserConfigurationException;
21import javax.xml.ws.wsaddressing.W3CEndpointReference;
22import javax.xml.ws.wsaddressing.W3CEndpointReferenceBuilder;
23import oasis.names.tc.ebxml_regrep.xsd.rim._3.ValueListType;
24import org.apache.commons.logging.Log;
25import org.apache.commons.logging.LogFactory;
26import org.oasis_open.docs.wsn.b_2.FilterType;
27import org.oasis_open.docs.wsn.b_2.Subscribe;
28import org.oasis_open.docs.wsn.b_2.TopicExpressionType;
29import org.oasis_open.docs.wsn.b_2.SubscribeResponse;
30import org.w3c.dom.Document;
31import org.w3c.dom.Element;
32
33/**
34 * Test for SubscribeTransforms class
35 *
36 * @author Neil Webb
37 */
38public class SubscribeTransformsTest
39{
40 private static Log log = LogFactory.getLog(SubscribeTransformsTest.class);
41
42 @Test
43 public void testSubscribeRequest()
44 {
45 log.debug("Begin testSubscribeRequest");
46 try
47 {
48 LogNhinSubscribeRequestType logSubscribeRequest = new LogNhinSubscribeRequestType();
49 logSubscribeRequest.setDirection("Inbound");
50 logSubscribeRequest.setInterface("Nhin");
51
52 SubscribeRequestType subscribeRequest = new SubscribeRequestType();
53 Subscribe subscribe = new Subscribe();
54
55 // Consumer Reference
56 subscribe.setConsumerReference(createNhinSubscriptionReference("http://www.somewhere.com/SubscriptionManager", "http://www.hhs.gov/healthid/nhin", "SubscriptionId", "testval"));
57
58 // Filter
59 FilterType filter = new FilterType();
60 TopicExpressionType topic = new TopicExpressionType();
61 topic.setDialect("http://doc.oasis-open.org/wsn/t-1/TopicExpression/Simple");
62 topic.getContent().add("document");
63 org.oasis_open.docs.wsn.b_2.ObjectFactory wsntObjectFactory = new org.oasis_open.docs.wsn.b_2.ObjectFactory();
64 filter.getAny().add(wsntObjectFactory.createTopicExpression(topic));
65 subscribe.setFilter(filter);
66
67 // AdhocQuery
68 AdhocQueryType adhocQuery = new AdhocQueryType();
69 oasis.names.tc.ebxml_regrep.xsd.rim._3.ObjectFactory rimObjectFactory = new oasis.names.tc.ebxml_regrep.xsd.rim._3.ObjectFactory();
70 adhocQuery.setId("urn:uuid:14d4debf-8f97-4251-9a74-a90016b0af0d");
71 SlotType1 slot = new SlotType1();
72 slot.setName("$XDSDocumentEntryPatientId");
73 ValueListType valueList = new ValueListType();
74 valueList.getValue().add("'Local-1^^^&1.1&ISO'");
75 adhocQuery.getSlot().add(slot);
76 slot = new SlotType1();
77 slot.setName("$XDSDocumentEntryClassCode");
78 valueList = new ValueListType();
79 valueList.getValue().add("('XNHIN-CONSENT')");
80 adhocQuery.getSlot().add(slot);
81 subscribe.getAny().add(rimObjectFactory.createAdhocQuery(adhocQuery));
82
83 // Assertion
84 HomeCommunityType home = new HomeCommunityType();
85 home.setHomeCommunityId("2.16.840.1.113883.3.200");
86 home.setName("Federal - VA");
87 UserType userInfo = new UserType();
88 userInfo.setOrg(home);
89 PersonNameType personName = new PersonNameType();
90 personName.setFamilyName("Smith");
91 personName.setGivenName("Mary");
92 userInfo.setPersonName(personName);
93 AssertionType assertion = new AssertionType();
94 assertion.setUserInfo(userInfo);
95
96 subscribeRequest.setSubscribe(subscribe);
97 subscribeRequest.setAssertion(assertion);
98 logSubscribeRequest.setMessage(subscribeRequest);
99
100 // Expected log result
101 LogEventRequestType expResult = new LogEventRequestType();
102 AuditMessageType auditMsg = new AuditMessageType();
103 expResult.setAuditMessage(auditMsg);
104 AuditMessageType.ActiveParticipant participant = new AuditMessageType.ActiveParticipant();
105 participant.setUserName("Mary Smith");
106 expResult.getAuditMessage().getActiveParticipant().add(participant);
107 AuditSourceIdentificationType sourceId = new AuditSourceIdentificationType();
108 sourceId.setAuditEnterpriseSiteID(home.getName());
109 expResult.getAuditMessage().getAuditSourceIdentification().add(sourceId);
110 EventIdentificationType eventId = new EventIdentificationType();
111 eventId.setEventActionCode(AuditDataTransformConstants.EVENT_ACTION_CODE_CREATE);
112 expResult.getAuditMessage().setEventIdentification(eventId);
113
114 // Transform
115 SubscribeTransforms transform = new SubscribeTransforms();
116 LogEventRequestType result = transform.transformNhinSubscribeRequestToAuditMessage(logSubscribeRequest);
117
118 // Validate
119 assertNotNull("LogEventRequestType was null", result);
120 assertEquals(expResult.getAuditMessage().getActiveParticipant().get(0).getUserName(), result.getAuditMessage().getActiveParticipant().get(0).getUserName());
121 assertEquals(expResult.getAuditMessage().getAuditSourceIdentification().get(0).getAuditEnterpriseSiteID(),
122 result.getAuditMessage().getAuditSourceIdentification().get(0).getAuditEnterpriseSiteID());
123 assertEquals(expResult.getAuditMessage().getEventIdentification().getEventActionCode(), result.getAuditMessage().getEventIdentification().getEventActionCode());
124 } catch (Throwable t)
125 {
126 log.error("Error in testSubscribeRequest: " + t.getMessage(), t);
127 fail(t.getMessage());
128 }
129 log.debug("End testSubscribeRequest");
130 }
131
132 @Test
133 public void testSubscribeResponse()
134 {
135 log.debug("Begin testSubscribeResponse");
136 try
137 {
138 LogSubscribeResponseType logSubscribeResponse = new LogSubscribeResponseType();
139 logSubscribeResponse.setDirection("Outbound");
140 logSubscribeResponse.setInterface("Nhin");
141
142 SubscribeResponseMessageType subscribeResponseMessage = new SubscribeResponseMessageType();
143 logSubscribeResponse.setMessage(subscribeResponseMessage);
144
145 // SubscribeResponse
146 SubscribeResponse subscribeResponse = new SubscribeResponse();
147 subscribeResponse.setSubscriptionReference(createNhinSubscriptionReference("http://www.somewhere.com/SubscriptionManager", "http://www.hhs.gov/healthid/nhin", "SubscriptionId", "testval"));
148
149 subscribeResponseMessage.setSubscribeResponse(subscribeResponse);
150
151 // Assertion
152 HomeCommunityType home = new HomeCommunityType();
153 home.setHomeCommunityId("2.16.840.1.113883.3.200");
154 home.setName("Federal - VA");
155 UserType userInfo = new UserType();
156 userInfo.setOrg(home);
157 PersonNameType personName = new PersonNameType();
158 personName.setFamilyName("Smith");
159 personName.setGivenName("Mary");
160 userInfo.setPersonName(personName);
161 AssertionType assertion = new AssertionType();
162 assertion.setUserInfo(userInfo);
163 subscribeResponseMessage.setAssertion(assertion);
164
165 // Expected log result
166 LogEventRequestType expResult = new LogEventRequestType();
167 AuditMessageType auditMsg = new AuditMessageType();
168 expResult.setAuditMessage(auditMsg);
169 AuditMessageType.ActiveParticipant participant = new AuditMessageType.ActiveParticipant();
170 participant.setUserName("Mary Smith");
171 expResult.getAuditMessage().getActiveParticipant().add(participant);
172 AuditSourceIdentificationType sourceId = new AuditSourceIdentificationType();
173 sourceId.setAuditEnterpriseSiteID(home.getName());
174 expResult.getAuditMessage().getAuditSourceIdentification().add(sourceId);
175 EventIdentificationType eventId = new EventIdentificationType();
176 eventId.setEventActionCode(AuditDataTransformConstants.EVENT_ACTION_CODE_CREATE);
177 expResult.getAuditMessage().setEventIdentification(eventId);
178
179 // Transform
180 SubscribeTransforms transform = new SubscribeTransforms();
181 LogEventRequestType result = transform.transformSubscribeResponseToAuditMessage(logSubscribeResponse);
182
183 // Validate
184 assertNotNull("LogEventRequestType was null", result);
185 assertEquals(expResult.getAuditMessage().getActiveParticipant().get(0).getUserName(), result.getAuditMessage().getActiveParticipant().get(0).getUserName());
186 assertEquals(expResult.getAuditMessage().getAuditSourceIdentification().get(0).getAuditEnterpriseSiteID(),
187 result.getAuditMessage().getAuditSourceIdentification().get(0).getAuditEnterpriseSiteID());
188 assertEquals(expResult.getAuditMessage().getEventIdentification().getEventActionCode(), result.getAuditMessage().getEventIdentification().getEventActionCode());
189 } catch (Throwable t)
190 {
191 log.error("Error in testSubscribeResponse: " + t.getMessage(), t);
192 fail(t.getMessage());
193 }
194 log.debug("End testSubscribeResponse");
195 }
196
197 public static W3CEndpointReference createNhinSubscriptionReference(String subMgrEndpointAddress, String refParamNamespace, String refParamElementName, String refParamValue)
198 {
199 log.info("begin createNhinSubscriptionReference");
200 W3CEndpointReference subRef;
201
202 W3CEndpointReferenceBuilder resultBuilder = new W3CEndpointReferenceBuilder();
203 log.info("internalSubscriptionRef.getSubscriptionManagerEndpointAddress()=" + subMgrEndpointAddress);
204 resultBuilder.address(subMgrEndpointAddress);
205
206 DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
207 Document doc = null;
208 try
209 {
210 doc = docBuilderFactory.newDocumentBuilder().newDocument();
211 } catch (ParserConfigurationException ex)
212 {
213 throw new RuntimeException(ex);
214 }
215
216 doc.setXmlStandalone(true);
217
218 log.info("handling reference parameter " + refParamNamespace + ";" + refParamElementName + ";" + refParamValue);
219 Element subscriptionElem = doc.createElementNS(refParamNamespace, refParamElementName);
220 subscriptionElem.setTextContent(refParamValue);
221 resultBuilder.referenceParameter(subscriptionElem);
222
223 log.info("building.. resultBuilder.build()");
224 subRef = resultBuilder.build();
225 log.info("end createNhinSubscriptionReference");
226 return subRef;
227 }
228}
Note: See TracBrowser for help on using the repository browser.