package com.box.sdk; import java.text.ParseException; import java.util.Date; import java.util.Iterator; import java.util.NoSuchElementException; import org.junit.Assert; import org.junit.Test; import org.junit.experimental.categories.Category; import com.eclipsesource.json.JsonObject; /** * {@link BoxDevicePin} related unit tests. */ public class BoxDevicePinTest { /** * Unit test for {@link BoxDevicePin#getInfo(String...)}. */ @Test @Category(UnitTest.class) public void testGetInfoSendsCorrectRequest() { BoxAPIConnection api = new BoxAPIConnection(""); api.setRequestInterceptor(new RequestInterceptor() { @Override public BoxAPIResponse onRequest(BoxAPIRequest request) { Assert.assertEquals("https://api.box.com/2.0/device_pinners/0?fields=owned_by%2Cproduct_name", request.getUrl().toString()); return new BoxJSONResponse() { @Override public String getJSON() { return "{}"; } }; } }); BoxDevicePin pin = new BoxDevicePin(api, "0"); pin.getInfo("owned_by", "product_name"); } /** * Unit test for {@link BoxDevicePin#getInfo(String...)}. */ @Test @Category(UnitTest.class) public void testGetInfoParseAllFieldsCorrectly() throws ParseException { final String id = "788804"; final String userID = "222276603"; final String userName = "Ted Blosser"; final String userLogin = "ted+boxworks2@box.com"; final String productName = "iPad"; final Date createdAt = BoxDateFormat.parse("2014-09-23T22:56:18-07:00"); final Date modifiedAt = BoxDateFormat.parse("2014-09-23T22:56:18-07:00"); final JsonObject fakeJSONResponse = JsonObject.readFrom("{\n" + " \"type\": \"device_pinner\",\n" + " \"id\": \"788804\",\n" + " \"owned_by\": {\n" + " \"type\": \"user\",\n" + " \"id\": \"222276603\",\n" + " \"name\": \"Ted Blosser\",\n" + " \"login\": \"ted+boxworks2@box.com\"\n" + " },\n" + " \"product_name\": \"iPad\",\n" + " \"created_at\": \"2014-09-23T22:56:18-07:00\",\n" + " \"modified_at\": \"2014-09-23T22:56:18-07:00\"\n" + "}"); BoxAPIConnection api = new BoxAPIConnection(""); api.setRequestInterceptor(JSONRequestInterceptor.respondWith(fakeJSONResponse)); BoxDevicePin pin = new BoxDevicePin(api, "788804"); BoxDevicePin.Info info = pin.getInfo(); Assert.assertEquals(id, info.getID()); Assert.assertEquals(userID, info.getOwnedBy().getID()); Assert.assertEquals(userName, info.getOwnedBy().getName()); Assert.assertEquals(userLogin, info.getOwnedBy().getLogin()); Assert.assertEquals(productName, info.getProductName()); Assert.assertEquals(createdAt, info.getCreatedAt()); Assert.assertEquals(modifiedAt, info.getModifiedAt()); } /** * Unit test for {@link BoxDevicePin#getEnterpriceDevicePins(BoxAPIConnection, String, String...)}. */ @Test(expected = NoSuchElementException.class) @Category(UnitTest.class) public void testGetEnterpriseDevicePinsSendsCorrectRequest() { BoxAPIConnection api = new BoxAPIConnection(""); api.setRequestInterceptor(new RequestInterceptor() { @Override public BoxAPIResponse onRequest(BoxAPIRequest request) { Assert.assertEquals( "https://api.box.com/2.0/enterprises/0/device_pinners?fields=owned_by%2Cproduct_name&limit=100", request.getUrl().toString()); return new BoxJSONResponse() { @Override public String getJSON() { return "{\"entries\":[]}"; } }; } }); Iterator<BoxDevicePin.Info> iterator = BoxDevicePin.getEnterpriceDevicePins(api, "0", "owned_by", "product_name").iterator(); iterator.next(); } /** * Unit test for {@link BoxDevicePin#getEnterpriceDevicePins(BoxAPIConnection, String, String...)}. */ @Test @Category(UnitTest.class) public void testGetEnterpriseDevicePinsParseAllFieldsCorrectly() { final String firstEntryID = "788804"; final String firstEntryUserID = "222276603"; final String firstEntryUserName = "Ted Blosser"; final String firstEntryUserLogin = "ted+boxworks2@box.com"; final String firstEntryProductName = "iPad"; final String secondEntryID = "1003086"; final String secondEntryUserID = "222276604"; final String secondEntryUserName = "Alison Wonderland"; final String secondEntryUserLogin = "alison+wonderland2@box.com"; final String secondEntryProductName = "iPhone"; final JsonObject fakeJSONResponse = JsonObject.readFrom("{\n" + " \"entries\": [\n" + " {\n" + " \"type\": \"device_pinner\",\n" + " \"id\": \"788804\",\n" + " \"owned_by\": {\n" + " \"type\": \"user\",\n" + " \"id\": \"222276603\",\n" + " \"name\": \"Ted Blosser\",\n" + " \"login\": \"ted+boxworks2@box.com\"\n" + " },\n" + " \"product_name\": \"iPad\"\n" + " },\n" + "\n" + " {\n" + " \"type\": \"device_pinner\",\n" + " \"id\": \"1003086\",\n" + " \"owned_by\": {\n" + " \"type\": \"user\",\n" + " \"id\": \"222276604\",\n" + " \"name\": \"Alison Wonderland\",\n" + " \"login\": \"alison+wonderland2@box.com\"\n" + " },\n" + " \"product_name\": \"iPhone\"\n" + " }\n" + " ],\n" + " \"limit\": 100,\n" + " \"order\": [\n" + " {\n" + " \"by\": \"id\",\n" + " \"direction\": \"ASC\"\n" + " }\n" + " ]\n" + "}"); BoxAPIConnection api = new BoxAPIConnection(""); api.setRequestInterceptor(JSONRequestInterceptor.respondWith(fakeJSONResponse)); Iterator<BoxDevicePin.Info> iterator = BoxDevicePin.getEnterpriceDevicePins(api, "0").iterator(); BoxDevicePin.Info info = iterator.next(); Assert.assertEquals(firstEntryID, info.getID()); Assert.assertEquals(firstEntryUserID, info.getOwnedBy().getID()); Assert.assertEquals(firstEntryUserName, info.getOwnedBy().getName()); Assert.assertEquals(firstEntryUserLogin, info.getOwnedBy().getLogin()); Assert.assertEquals(firstEntryProductName, info.getProductName()); info = iterator.next(); Assert.assertEquals(secondEntryID, info.getID()); Assert.assertEquals(secondEntryUserID, info.getOwnedBy().getID()); Assert.assertEquals(secondEntryUserName, info.getOwnedBy().getName()); Assert.assertEquals(secondEntryUserLogin, info.getOwnedBy().getLogin()); Assert.assertEquals(secondEntryProductName, info.getProductName()); Assert.assertEquals(false, iterator.hasNext()); } /** * Unit test for {@link BoxDevicePin#delete()}. */ @Test @Category(UnitTest.class) public void testDeleteSendsCorrectRequest() { BoxAPIConnection api = new BoxAPIConnection(""); api.setRequestInterceptor(new RequestInterceptor() { @Override public BoxAPIResponse onRequest(BoxAPIRequest request) { Assert.assertEquals("https://api.box.com/2.0/device_pinners/0", request.getUrl().toString()); return new BoxJSONResponse() { @Override public String getJSON() { return "{}"; } }; } }); BoxDevicePin pin = new BoxDevicePin(api, "0"); pin.delete(); } }