View Javadoc

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   * @since v2.0
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          //check second firstRecord which does not contain optional fields
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 }