1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.openehealth.ipf.commons.ihe.hpd.iti59;
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.audit.model.ParticipantObjectIdentificationType;
23 import org.openehealth.ipf.commons.ihe.core.atna.AuditDataset.HumanUser;
24 import org.openehealth.ipf.commons.ihe.hpd.atna.HpdAuditorTestBase;
25 import org.openehealth.ipf.commons.ihe.hpd.audit.codes.HpdParticipantObjectIdTypeCode;
26
27 import static org.junit.Assert.assertEquals;
28
29
30
31
32 public class Iti59AuditStrategyTest extends HpdAuditorTestBase {
33
34 @Test
35 public void testServerSide() {
36 testRequest(true, new Iti59ServerAuditStrategy());
37 }
38
39 @Test
40 public void testClientSide() {
41 testRequest(false, new Iti59ClientAuditStrategy());
42 }
43
44 private void testRequest(boolean serverSide, Iti59AuditStrategy strategy) {
45 Iti59AuditDataset auditDataset = getHpdAuditDataset(strategy);
46 AuditMessage[] auditMessages = makeAuditMessages(strategy, auditContext, auditDataset);
47
48 assertEquals(3, auditMessages.length);
49
50 for (AuditMessage auditMessage : auditMessages) {
51 auditMessage.validate();
52 System.out.println(printAuditMessage(auditMessage));
53
54 assertEquals(1, auditMessage.getParticipantObjectIdentifications().size());
55 ParticipantObjectIdentificationType participant = auditMessage.getParticipantObjectIdentifications().get(0);
56 assertEquals(ParticipantObjectTypeCodeRole.Provider, participant.getParticipantObjectTypeCodeRole());
57 assertEquals(HpdParticipantObjectIdTypeCode.RelativeDistinguishedName, participant.getParticipantObjectIDTypeCode());
58 }
59
60 assertCommonHpdAuditAttributes(auditMessages[0],
61 EventOutcomeIndicator.Success,
62 serverSide ? EventIdCode.Import : EventIdCode.Export,
63 EventActionCode.Update,
64 serverSide);
65
66 ParticipantObjectIdentificationType participant = auditMessages[2].getParticipantObjectIdentifications().get(0);
67 assertEquals(1, participant.getParticipantObjectDetails().size());
68 assertEquals("new uid", participant.getParticipantObjectDetails().get(0).getType());
69 assertEquals("Mi4yMi4yMjIuMjIyMjprbG1ubw==", new String(participant.getParticipantObjectDetails().get(0).getValue()));
70 }
71
72 private Iti59AuditDataset getHpdAuditDataset(Iti59AuditStrategy strategy) {
73 Iti59AuditDataset auditDataset = strategy.createAuditDataset();
74 auditDataset.setEventOutcomeIndicator(EventOutcomeIndicator.Success);
75
76 auditDataset.setRemoteAddress(CLIENT_IP_ADDRESS);
77 auditDataset.setSourceUserId(REPLY_TO_URI);
78 auditDataset.setDestinationUserId(SERVER_URI);
79 auditDataset.setRequestPayload(QUERY_PAYLOAD);
80 auditDataset.setPurposesOfUse(PURPOSES_OF_USE);
81 auditDataset.getHumanUsers().add(new HumanUser(USER_ID, USER_NAME, USER_ROLES));
82
83 Iti59AuditDataset.RequestItem requestItem1 = new Iti59AuditDataset.RequestItem(QUERY_ID, EventActionCode.Update);
84 requestItem1.setUid("1.2.3.4.5.6:abcde");
85 requestItem1.setParticipantObjectTypeCode(ParticipantObjectTypeCode.Organization);
86 requestItem1.setOutcomeCode(EventOutcomeIndicator.Success);
87
88 Iti59AuditDataset.RequestItem requestItem2 = new Iti59AuditDataset.RequestItem(QUERY_ID, EventActionCode.Create);
89 requestItem2.setUid("2.3.4.5.6.7:qrstu");
90 requestItem2.setParticipantObjectTypeCode(ParticipantObjectTypeCode.Person);
91 requestItem2.setOutcomeCode(EventOutcomeIndicator.MinorFailure);
92
93
94 Iti59AuditDataset.RequestItem requestItem3 = new Iti59AuditDataset.RequestItem(QUERY_ID, EventActionCode.Execute);
95 requestItem3.setUid(null);
96 requestItem3.setNewUid("1.3.5.7:fghij");
97 requestItem3.setParticipantObjectTypeCode(ParticipantObjectTypeCode.Person);
98 requestItem3.setOutcomeCode(EventOutcomeIndicator.Success);
99
100 Iti59AuditDataset.RequestItem requestItem4 = new Iti59AuditDataset.RequestItem(QUERY_ID, EventActionCode.Execute);
101 requestItem4.setUid("1.11.111.1111:klmno");
102 requestItem4.setNewUid("2.22.222.2222:klmno");
103 requestItem4.setParticipantObjectTypeCode(ParticipantObjectTypeCode.Organization);
104 requestItem4.setOutcomeCode(EventOutcomeIndicator.Success);
105
106 auditDataset.setRequestItems(new Iti59AuditDataset.RequestItem[]{requestItem1, requestItem2, requestItem3, requestItem4});
107 return auditDataset;
108 }
109 }