package com.box.sdk; import java.net.MalformedURLException; import java.net.URL; import java.text.ParseException; import java.util.Date; import java.util.Iterator; import org.junit.Assert; import org.junit.Test; import org.junit.experimental.categories.Category; import com.eclipsesource.json.JsonObject; /** * {@link BoxFileVersionRetention} related unit tests. */ public class BoxFileVersionRetentionTest { /** * Unit test for {@link BoxFileVersionRetention#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/file_version_retentions/0?fields=file%2Capplied_at", request.getUrl().toString()); return new BoxJSONResponse() { @Override public String getJSON() { return "{\"id\": \"0\"}"; } }; } }); BoxFileVersionRetention retention = new BoxFileVersionRetention(api, "0"); retention.getInfo("file", "applied_at"); } /** * Unit test for {@link BoxFileVersionRetention#getInfo(String...)} */ @Test @Category(UnitTest.class) public void testGetInfoParseAllFieldsCorrectly() throws ParseException { final String id = "112729"; final Date appliedAt = BoxDateFormat.parse("2015-08-06T22:02:24-07:00"); final Date dispositionAt = BoxDateFormat.parse("2016-08-06T21:45:28-07:00"); final String winningPolicyID = "41173"; final String winningPolicyName = "Tax Documents"; final String fileVersionID = "124887629"; final String fileVersionSHA1 = "4262d6250b0e6f440dca43a2337bd4621bad9136"; final String fileID = "5011706273"; final String fileEtag = "2"; final JsonObject fakeJSONResponse = JsonObject.readFrom("{\n" + " \"type\": \"file_version_retention\",\n" + " \"id\": \"112729\",\n" + " \"applied_at\": \"2015-08-06T22:02:24-07:00\",\n" + " \"disposition_at\": \"2016-08-06T21:45:28-07:00\",\n" + " \"winning_retention_policy\": {\n" + " \"type\": \"retention_policy\",\n" + " \"id\": \"41173\",\n" + " \"policy_name\": \"Tax Documents\"\n" + " },\n" + " \"file_version\": {\n" + " \"type\": \"file_version\",\n" + " \"id\": \"124887629\",\n" + " \"sha1\": \"4262d6250b0e6f440dca43a2337bd4621bad9136\"\n" + " },\n" + " \"file\": {\n" + " \"type\": \"file_version\",\n" + " \"id\": \"5011706273\",\n" + " \"etag\": \"2\"\n" + " }\n" + "}"); BoxAPIConnection api = new BoxAPIConnection(""); api.setRequestInterceptor(JSONRequestInterceptor.respondWith(fakeJSONResponse)); BoxFileVersionRetention retention = new BoxFileVersionRetention(api, id); BoxFileVersionRetention.Info info = retention.getInfo(); Assert.assertEquals(appliedAt, info.getAppliedAt()); Assert.assertEquals(dispositionAt, info.getDispositionAt()); Assert.assertEquals(winningPolicyID, info.getWinningPolicy().getID()); Assert.assertEquals(winningPolicyName, info.getWinningPolicy().getPolicyName()); Assert.assertEquals(fileVersionID, info.getFileVersion().getID()); Assert.assertEquals(fileVersionSHA1, info.getFileVersion().getSha1()); Assert.assertEquals(fileID, info.getFile().getID()); Assert.assertEquals(fileEtag, info.getFile().getEtag()); } /** * Unit test for {@link BoxFileVersionRetention#getAll(BoxAPIConnection, String...)} */ @Test @Category(UnitTest.class) public void testGetAllSendsCorrectRequest() { BoxAPIConnection api = new BoxAPIConnection(""); api.setRequestInterceptor(new RequestInterceptor() { @Override public BoxAPIResponse onRequest(BoxAPIRequest request) { Assert.assertEquals("https://api.box.com/2.0/file_version_retentions", request.getUrl().toString()); return new BoxJSONResponse() { @Override public String getJSON() { return "{\"entries\": []}"; } }; } }); BoxFileVersionRetention.getAll(api); } /** * Unit test for * {@link BoxFileVersionRetention#getRetentions(BoxAPIConnection, BoxFileVersionRetention.QueryFilter, String...)} */ @Test @Category(UnitTest.class) public void testGetRetentionsSendsCorrectRequest() throws ParseException { final String urlString = "https://api.box.com/2.0/file_version_retentions" + "?file_id=0&file_version_id=1&policy_id=2" + "&disposition_action=permanently_delete" + "&disposition_before=2016-09-15T13%3A15%3A35%2B0000" + "&disposition_after=2014-09-15T13%3A15%3A35%2B0000" + "&fields=file%2Capplied_at" + "&limit=100"; BoxAPIConnection api = new BoxAPIConnection(""); api.setRequestInterceptor(new RequestInterceptor() { @Override public BoxAPIResponse onRequest(BoxAPIRequest request) { try { Assert.assertEquals(new URL(urlString), request.getUrl()); } catch (MalformedURLException e) { assert false; } return new BoxJSONResponse() { @Override public String getJSON() { return "{\"entries\": []}"; } }; } }); BoxFileVersionRetention.QueryFilter filter = new BoxFileVersionRetention.QueryFilter() .addFileID("0") .addFileVersionID("1") .addPolicyID("2") .addDispositionAction(BoxRetentionPolicy.ACTION_PERMANENTLY_DELETE) .addDispositionBefore(BoxDateFormat.parse("2016-09-15T13:15:35+0000")) .addDispositionAfter(BoxDateFormat.parse("2014-09-15T13:15:35+0000")); Iterator<BoxFileVersionRetention.Info> iterator = BoxFileVersionRetention.getRetentions(api, filter, "file", "applied_at").iterator(); iterator.hasNext(); } /** * Unit test for {@link BoxFileVersionRetention#getAll(BoxAPIConnection, String...)} */ @Test @Category(UnitTest.class) public void testGetAllParseAllFieldsCorrectly() { final String firstEntryID = "112725"; final String secondEntryID = "112733"; final JsonObject fakeJSONResponse = JsonObject.readFrom("{\n" + " \"entries\": [\n" + " {\n" + " \"type\": \"file_version_retention\",\n" + " \"id\": \"112725\"\n" + " },\n" + " {\n" + " \"type\": \"file_version_retention\",\n" + " \"id\": \"112733\"\n" + " }\n" + " ],\n" + " \"limit\": 100,\n" + " \"order\": [\n" + " {\n" + " \"by\": \"file_version_id\",\n" + " \"direction\": \"ASC\"\n" + " }\n" + " ]\n" + "}"); BoxAPIConnection api = new BoxAPIConnection(""); api.setRequestInterceptor(JSONRequestInterceptor.respondWith(fakeJSONResponse)); Iterator<BoxFileVersionRetention.Info> iterator = BoxFileVersionRetention.getAll(api).iterator(); BoxFileVersionRetention.Info info = iterator.next(); Assert.assertEquals(firstEntryID, info.getID()); info = iterator.next(); Assert.assertEquals(secondEntryID, info.getID()); Assert.assertEquals(false, iterator.hasNext()); } }