1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.openehealth.ipf.commons.ihe.xds.rad69;
18
19 import org.junit.Test;
20 import org.openehealth.ipf.commons.audit.codes.*;
21 import org.openehealth.ipf.commons.audit.model.AuditMessage;
22 import org.openehealth.ipf.commons.ihe.core.atna.AuditDataset.HumanUser;
23 import org.openehealth.ipf.commons.ihe.xds.atna.XdsAuditorTestBase;
24 import org.openehealth.ipf.commons.ihe.xds.core.audit.XdsIRetrieveAuditStrategy30;
25 import org.openehealth.ipf.commons.ihe.xds.core.audit.XdsNonconstructiveDocumentSetRequestAuditDataset;
26
27 import static org.junit.Assert.assertEquals;
28 import static org.junit.Assert.assertNotNull;
29
30
31
32
33 public class Rad69AuditStrategyTest extends XdsAuditorTestBase {
34
35 @Test
36 public void testServerSide() {
37 testRequest(true, new Rad69ServerAuditStrategy());
38 }
39
40 @Test
41 public void testClientSide() {
42 testRequest(false, new Rad69ClientAuditStrategy());
43 }
44
45 private void testRequest(boolean serverSide, XdsIRetrieveAuditStrategy30 strategy) {
46 XdsNonconstructiveDocumentSetRequestAuditDataset auditDataset = getXdsAuditDataset(strategy);
47 AuditMessage auditMessage = makeAuditMessage(strategy, auditContext, auditDataset);
48
49 assertNotNull(auditMessage);
50 auditMessage.validate();
51
52
53
54 assertCommonXdsAuditAttributes(auditMessage,
55 EventOutcomeIndicator.Success,
56 serverSide ? EventIdCode.Export : EventIdCode.Import,
57 serverSide ? EventActionCode.Read : EventActionCode.Create,
58 serverSide,
59 true);
60
61 assertEquals(3, auditMessage.findParticipantObjectIdentifications(
62 poit -> poit.getParticipantObjectTypeCodeRole() == ParticipantObjectTypeCodeRole.Report).size());
63
64 assertEquals(4, auditMessage.findParticipantObjectIdentifications(
65 poit -> poit.getParticipantObjectTypeCode() == ParticipantObjectTypeCode.System)
66 .get(0)
67 .getParticipantObjectDetails().size());
68
69 }
70
71 private XdsNonconstructiveDocumentSetRequestAuditDataset getXdsAuditDataset(XdsIRetrieveAuditStrategy30 strategy) {
72 XdsNonconstructiveDocumentSetRequestAuditDataset auditDataset = strategy.createAuditDataset();
73 auditDataset.setEventOutcomeIndicator(EventOutcomeIndicator.Success);
74
75 auditDataset.setRemoteAddress(CLIENT_IP_ADDRESS);
76 auditDataset.setSourceUserId(REPLY_TO_URI);
77 auditDataset.setDestinationUserId(SERVER_URI);
78 auditDataset.setRequestPayload(QUERY_PAYLOAD);
79 auditDataset.setPurposesOfUse(PURPOSES_OF_USE);
80 auditDataset.getPatientIds().add(PATIENT_IDS[0]);
81 auditDataset.getHumanUsers().add(new HumanUser(USER_ID, USER_NAME, USER_ROLES));
82
83 for (int i = 0; i < 3; i++) {
84 auditDataset.getDocuments().add(
85 new XdsNonconstructiveDocumentSetRequestAuditDataset.Document(
86 DOCUMENT_OIDS[i],
87 REPOSITORY_OIDS[i],
88 HOME_COMMUNITY_IDS[i],
89 STUDY_INSTANCE_UUIDS[i],
90 SERIES_INSTANCE_UUIDS[i],
91 XdsNonconstructiveDocumentSetRequestAuditDataset.Status.SUCCESSFUL));
92 }
93 return auditDataset;
94 }
95 }