package com.box.sdk; import java.text.ParseException; import static org.hamcrest.Matchers.is; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertThat; import static org.junit.Assert.assertTrue; import org.junit.Test; import org.junit.experimental.categories.Category; import com.eclipsesource.json.JsonObject; public class BoxEventTest { @Test @Category(UnitTest.class) public void newBoxEventHandlesUnknownEventType() { String eventJSON = "{ \"type\": \"event\", \"event_id\": \"f82c3ba03e41f7e8a7608363cc6c0390183c3f83\", " + "\"event_type\": \"UNKNOWN_EVENT_TYPE\" }"; BoxEvent event = new BoxEvent(null, eventJSON); assertThat(event.getType(), is(BoxEvent.Type.UNKNOWN)); } @Test @Category(UnitTest.class) public void newBoxEventShouldParseAllFieldsCorrectly() throws ParseException { final String eventID = "non-empty event ID"; final String sessionID = "non-empty session ID"; final String userID = "non-empty user ID"; final String userName = "non-empty user name"; final String userLogin = "non-empty user login"; final String createdAt = "2014-12-18T16:25:15-08:00"; final String ipAddress = "non-empty IP"; final String detailsType = "non-empty details type"; final boolean isPerformedByAdmin = true; JsonObject eventJSON = new JsonObject() .add("event_id", eventID) .add("session_id", sessionID) .add("created_by", new JsonObject() .add("type", "user") .add("id", userID) .add("name", userName) .add("login", userLogin)) .add("created_at", createdAt) .add("ip_address", ipAddress) .add("additional_details", new JsonObject() .add("type", detailsType) .add("is_performed_by_admin", isPerformedByAdmin)) .add("accessible_by", new JsonObject() .add("type", "user") .add("id", userID) .add("name", userName) .add("login", userLogin)); BoxEvent event = new BoxEvent(null, eventJSON); assertEquals(eventID, event.getID()); assertEquals(sessionID, event.getSessionID()); assertEquals(userID, event.getCreatedBy().getID()); assertEquals(userName, event.getCreatedBy().getName()); assertEquals(userLogin, event.getCreatedBy().getLogin()); assertEquals(BoxDateFormat.parse(createdAt), event.getCreatedAt()); assertEquals(ipAddress, event.getIPAddress()); assertEquals(detailsType, event.getAdditionalDetails().get("type").asString()); assertEquals(isPerformedByAdmin, event.getAdditionalDetails().get("is_performed_by_admin").asBoolean()); assertEquals(userID, event.getAccessibleBy().getID()); assertEquals(userName, event.getAccessibleBy().getName()); assertEquals(userLogin, ((BoxUser.Info) event.getAccessibleBy()).getLogin()); } @Test @Category(UnitTest.class) public void newBoxEventShouldParseAccessibleByFieldCorrectlyWhenItIsAGroup() throws ParseException { final String eventID = "non-empty event ID"; final String groupID = "non-empty group ID"; final String groupName = "non-empty group name"; JsonObject eventJSON = new JsonObject() .add("event_id", eventID) .add("accessible_by", new JsonObject() .add("type", "group") .add("id", groupID) .add("name", groupName)); BoxEvent event = new BoxEvent(null, eventJSON); assertEquals(eventID, event.getID()); assertTrue(event.getAccessibleBy() instanceof BoxGroup.Info); BoxGroup.Info parsedGroupInfo = (BoxGroup.Info) event.getAccessibleBy(); assertEquals(groupID, parsedGroupInfo.getID()); assertEquals(groupName, parsedGroupInfo.getName()); } }