1 package com.atlassian.jira.rest.client.internal.json;
2
3 import com.atlassian.jira.rest.client.api.domain.AuditAssociatedItem;
4 import com.atlassian.jira.rest.client.api.domain.AuditChangedValue;
5 import com.atlassian.jira.rest.client.api.domain.AuditRecord;
6 import com.atlassian.jira.rest.client.api.domain.AuditRecordsData;
7 import org.joda.time.DateTime;
8 import org.joda.time.DateTimeZone;
9 import org.joda.time.Instant;
10 import org.junit.Test;
11
12 import java.util.Iterator;
13
14 import static org.hamcrest.CoreMatchers.is;
15 import static org.hamcrest.CoreMatchers.notNullValue;
16 import static org.hamcrest.CoreMatchers.nullValue;
17 import static org.junit.Assert.assertThat;
18
19
20
21
22 public class AuditRecordsJsonParserTest {
23
24 public static final Instant SAMPLE_DATE = new DateTime(1994, 11, 05, 13, 15, 30, 111, DateTimeZone.UTC).toInstant();
25 private final AuditRecordsJsonParser parser = new AuditRecordsJsonParser();
26
27 @Test
28 public void testParseValidResponse() throws Exception {
29 final AuditRecordsData auditRecordsData = parser.parse(ResourceUtil.getJsonObjectFromResource("/json/auditRecord/valid.json"));
30
31 assertThat(auditRecordsData.getOffset(), is(0));
32 assertThat(auditRecordsData.getLimit(), is(1000));
33 assertThat(auditRecordsData.getTotal(), is(2));
34
35 final Iterator<AuditRecord> recordsIterator = auditRecordsData.getRecords().iterator();
36 final AuditRecord firstRecord = recordsIterator.next();
37 assertThat(firstRecord.getSummary(), is("User added to group"));
38 assertThat(firstRecord.getRemoteAddress(), is("127.0.0.1"));
39
40 assertThat(firstRecord.getCreated().toInstant(), is(SAMPLE_DATE));
41 assertThat(firstRecord.getCategory(), is("group management"));
42 assertThat(firstRecord.getEventSource(), is("Connect plugin"));
43 assertThat(firstRecord.getAuthorKey(), is("admin"));
44
45 assertThat(firstRecord.getObjectItem().getId(), nullValue());
46 assertThat(firstRecord.getObjectItem().getName(), is("jira-developers"));
47 assertThat(firstRecord.getObjectItem().getTypeName(), is("GROUP"));
48 assertThat(firstRecord.getObjectItem().getParentId(), nullValue());
49 assertThat(firstRecord.getObjectItem().getParentName(), nullValue());
50
51 final AuditAssociatedItem firstItem = firstRecord.getAssociatedItems().iterator().next();
52 assertThat(firstItem.getId(), is("admin"));
53 assertThat(firstItem.getName(), is("admin"));
54 assertThat(firstItem.getTypeName(), is("USER"));
55 assertThat(firstItem.getParentId(), is("1"));
56 assertThat(firstItem.getParentName(), is("JIRA Internal Directory"));
57
58 assertThat(firstRecord.getChangedValues(), notNullValue());
59
60 final Iterator<AuditChangedValue> iterator = firstRecord.getChangedValues().iterator();
61 final AuditChangedValue valueItem1 = iterator.next();
62 assertThat(valueItem1.getFieldName(), is("Username"));
63 assertThat(valueItem1.getChangedFrom(), nullValue());
64 assertThat(valueItem1.getChangedTo(), is("admin"));
65
66 final AuditChangedValue valueItem2 = iterator.next();
67 assertThat(valueItem2.getFieldName(), is("Full Name"));
68 assertThat(valueItem2.getChangedFrom(), is("administrator"));
69 assertThat(valueItem2.getChangedTo(), is("admin"));
70
71 final AuditChangedValue valueItem3 = iterator.next();
72 assertThat(valueItem3.getFieldName(), is("Email"));
73 assertThat(valueItem3.getChangedTo(), is("admin@local.com"));
74
75 final AuditChangedValue valueItem4 = iterator.next();
76 assertThat(valueItem4.getFieldName(), is("Active / Inactive"));
77 assertThat(valueItem4.getChangedTo(), is("Active"));
78
79
80 final AuditRecord secondRecord = recordsIterator.next();
81 assertThat(secondRecord.getSummary(), is("User added to group"));
82 assertThat(secondRecord.getRemoteAddress(), nullValue());
83 assertThat(secondRecord.getCreated().toInstant(), is(SAMPLE_DATE));
84 assertThat(secondRecord.getCategory(), is("group management"));
85 assertThat(secondRecord.getEventSource(), is("Other connect plugin"));
86 assertThat(secondRecord.getAuthorKey(), is("admin"));
87
88 assertThat(secondRecord.getObjectItem().getId(), nullValue());
89 assertThat(secondRecord.getObjectItem().getName(), is("jira-developers"));
90 assertThat(secondRecord.getObjectItem().getTypeName(), is("GROUP"));
91 assertThat(secondRecord.getObjectItem().getParentId(), nullValue());
92 assertThat(secondRecord.getObjectItem().getParentName(), nullValue());
93
94 final AuditAssociatedItem secondItem = secondRecord.getAssociatedItems().iterator().next();
95 assertThat(secondItem.getName(), is("admin"));
96 assertThat(secondItem.getTypeName(), is("USER"));
97 assertThat(secondItem.getId(), nullValue());
98 assertThat(secondItem.getParentId(), nullValue());
99 assertThat(secondItem.getParentName(), nullValue());
100
101 assertThat(secondRecord.getChangedValues().iterator().hasNext(), is(false));
102 }
103 }