package com.box.sdk;
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 BoxRetentionPolicy} related unit tests.
*/
public class BoxRetentionPolicyTest {
/**
* Unit test for {@link BoxRetentionPolicy#createIndefinitePolicy(BoxAPIConnection, String)}
*/
@Test
@Category(UnitTest.class)
public void testCreateIndefinitePolicySendsCorrectJson() {
final String name = "non-empty name";
final String type = "indefinite";
final String action = BoxRetentionPolicy.ACTION_REMOVE_RETENTION;
BoxAPIConnection api = new BoxAPIConnection("");
api.setRequestInterceptor(new JSONRequestInterceptor() {
@Override
protected BoxAPIResponse onJSONRequest(BoxJSONRequest request, JsonObject json) {
Assert.assertEquals("https://api.box.com/2.0/retention_policies", request.getUrl().toString());
Assert.assertEquals(name, json.get("policy_name").asString());
Assert.assertEquals(type, json.get("policy_type").asString());
Assert.assertEquals(action, json.get("disposition_action").asString());
return new BoxJSONResponse() {
@Override
public String getJSON() {
return "{\"id\": \"0\"}";
}
};
}
});
BoxRetentionPolicy.createIndefinitePolicy(api, name);
}
/**
* Unit test for {@link BoxRetentionPolicy#createFinitePolicy(BoxAPIConnection, String, int, String)}
*/
@Test
@Category(UnitTest.class)
public void testCreateFinitePolicySendsCorrectJson() {
final String name = "non-empty name";
final String type = "finite";
final String action = BoxRetentionPolicy.ACTION_PERMANENTLY_DELETE;
final int length = 1;
BoxAPIConnection api = new BoxAPIConnection("");
api.setRequestInterceptor(new JSONRequestInterceptor() {
@Override
protected BoxAPIResponse onJSONRequest(BoxJSONRequest request, JsonObject json) {
Assert.assertEquals("https://api.box.com/2.0/retention_policies", request.getUrl().toString());
Assert.assertEquals(name, json.get("policy_name").asString());
Assert.assertEquals(type, json.get("policy_type").asString());
Assert.assertEquals(action, json.get("disposition_action").asString());
Assert.assertEquals(length, json.get("retention_length").asInt());
return new BoxJSONResponse() {
@Override
public String getJSON() {
return "{\"id\": \"0\"}";
}
};
}
});
BoxRetentionPolicy.createFinitePolicy(api, name, length, action);
}
/**
* Unit test for {@link BoxRetentionPolicy#createFinitePolicy(BoxAPIConnection, String, int, String)}
*/
@Test
@Category(UnitTest.class)
public void testCreatePolicyParseAllFieldsCorrectly() throws ParseException {
final String id = "123456789";
final String name = "Tax Documents";
final String type = "finite";
final int length = 365;
final String action = BoxRetentionPolicy.ACTION_PERMANENTLY_DELETE;
final String status = "active";
final String userID = "11993747";
final String userName = "Sean";
final String userLogin = "sean@box.com";
final Date createdAt = BoxDateFormat.parse("2015-05-01T11:12:54-07:00");
final Date modifiedAt = null;
final JsonObject fakeJSONResponse = JsonObject.readFrom("{\n"
+ " \"type\": \"retention_policy\",\n"
+ " \"id\": \"123456789\",\n"
+ " \"policy_name\": \"Tax Documents\",\n"
+ " \"policy_type\": \"finite\",\n"
+ " \"retention_length\": 365,\n"
+ " \"disposition_action\": \"permanently_delete\",\n"
+ " \"status\": \"active\",\n"
+ " \"created_by\": {\n"
+ " \"type\": \"user\",\n"
+ " \"id\": \"11993747\",\n"
+ " \"name\": \"Sean\",\n"
+ " \"login\": \"sean@box.com\"\n"
+ " },\n"
+ " \"created_at\": \"2015-05-01T11:12:54-07:00\",\n"
+ " \"modified_at\": null \n"
+ "}");
BoxAPIConnection api = new BoxAPIConnection("");
api.setRequestInterceptor(JSONRequestInterceptor.respondWith(fakeJSONResponse));
BoxRetentionPolicy.Info info = BoxRetentionPolicy.createFinitePolicy(api, name, length, action);
Assert.assertEquals(id, info.getID());
Assert.assertEquals(name, info.getPolicyName());
Assert.assertEquals(type, info.getPolicyType());
Assert.assertEquals(length, info.getRetentionLength());
Assert.assertEquals(action, info.getDispositionAction());
Assert.assertEquals(status, info.getStatus());
Assert.assertEquals(userID, info.getCreatedBy().getID());
Assert.assertEquals(userName, info.getCreatedBy().getName());
Assert.assertEquals(userLogin, info.getCreatedBy().getLogin());
Assert.assertEquals(createdAt, info.getCreatedAt());
Assert.assertEquals(modifiedAt, info.getModifiedAt());
}
/**
* Unit test for {@link BoxRetentionPolicy#updateInfo(BoxRetentionPolicy.Info)} )}
*/
@Test
@Category(UnitTest.class)
public void testUpdateInfoSendsCorrectJson() {
final String name = "Non-empty name";
final String action = BoxRetentionPolicy.ACTION_REMOVE_RETENTION;
final String status = BoxRetentionPolicy.STATUS_RETIRED;
BoxAPIConnection api = new BoxAPIConnection("");
api.setRequestInterceptor(new JSONRequestInterceptor() {
@Override
protected BoxAPIResponse onJSONRequest(BoxJSONRequest request, JsonObject json) {
Assert.assertEquals("https://api.box.com/2.0/retention_policies/0", request.getUrl().toString());
Assert.assertEquals(name, json.get("policy_name").asString());
Assert.assertEquals(action, json.get("disposition_action").asString());
Assert.assertEquals(status, json.get("status").asString());
return new BoxJSONResponse() {
@Override
public String getJSON() {
return "{}";
}
};
}
});
BoxRetentionPolicy policy = new BoxRetentionPolicy(api, "0");
BoxRetentionPolicy.Info info = policy.new Info();
info.addPendingChange("policy_name", name);
info.addPendingChange("disposition_action", action);
info.addPendingChange("status", status);
policy.updateInfo(info);
}
/**
* Unit test for {@link BoxRetentionPolicy#updateInfo(BoxRetentionPolicy.Info)} )}
*/
@Test
@Category(UnitTest.class)
public void testUpdateInfoParseAllFieldsCorrectly() throws ParseException {
final String id = "123456789";
final String name = "Tax Documents";
final String type = "finite";
final int length = 365;
final String action = BoxRetentionPolicy.ACTION_REMOVE_RETENTION;
final String status = "active";
final String userID = "11993747";
final String userName = "Sean";
final String userLogin = "sean@box.com";
final Date createdAt = BoxDateFormat.parse("2015-05-01T11:12:54-07:00");
final Date modifiedAt = BoxDateFormat.parse("2015-06-08T11:11:50-07:00");
final JsonObject fakeJSONResponse = JsonObject.readFrom("{ \n"
+ " \"type\": \"retention_policy\", \n"
+ " \"id\": \"123456789\", \n"
+ " \"policy_name\": \"Tax Documents\", \n"
+ " \"policy_type\": \"finite\", \n"
+ " \"retention_length\": 365, \n"
+ " \"disposition_action\": \"remove_retention\", \n"
+ " \"status\": \"active\", \n"
+ " \"created_by\": {\n"
+ " \"type\": \"user\",\n"
+ " \"id\": \"11993747\",\n"
+ " \"name\": \"Sean\",\n"
+ " \"login\": \"sean@box.com\"\n"
+ " },\n"
+ " \"created_at\": \"2015-05-01T11:12:54-07:00\",\n"
+ " \"modified_at\": \"2015-06-08T11:11:50-07:00\" \n"
+ "}");
BoxAPIConnection api = new BoxAPIConnection("");
api.setRequestInterceptor(JSONRequestInterceptor.respondWith(fakeJSONResponse));
BoxRetentionPolicy policy = new BoxRetentionPolicy(api, "123456789");
BoxRetentionPolicy.Info info = policy.new Info();
info.addPendingChange("policy_name", name);
policy.updateInfo(info);
Assert.assertEquals(id, info.getID());
Assert.assertEquals(name, info.getPolicyName());
Assert.assertEquals(type, info.getPolicyType());
Assert.assertEquals(length, info.getRetentionLength());
Assert.assertEquals(action, info.getDispositionAction());
Assert.assertEquals(status, info.getStatus());
Assert.assertEquals(userID, info.getCreatedBy().getID());
Assert.assertEquals(userName, info.getCreatedBy().getName());
Assert.assertEquals(userLogin, info.getCreatedBy().getLogin());
Assert.assertEquals(createdAt, info.getCreatedAt());
Assert.assertEquals(modifiedAt, info.getModifiedAt());
}
/**
* Unit test for {@link BoxRetentionPolicy#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/retention_policies/0?fields=policy_name%2Cstatus",
request.getUrl().toString());
return new BoxJSONResponse() {
@Override
public String getJSON() {
return "{\"id\": \"0\"}";
}
};
}
});
BoxRetentionPolicy policy = new BoxRetentionPolicy(api, "0");
policy.getInfo("policy_name", "status");
}
/**
* Unit test for {@link BoxRetentionPolicy#getInfo(String...)}
*/
@Test
@Category(UnitTest.class)
public void testGetInfoParseAllFieldsCorrectly() throws ParseException {
final String id = "123456789";
final String name = "Tax Documents";
final String type = "finite";
final int length = 365;
final String action = BoxRetentionPolicy.ACTION_REMOVE_RETENTION;
final String status = "active";
final String userID = "11993747";
final String userName = "Sean";
final String userLogin = "sean@box.com";
final Date createdAt = BoxDateFormat.parse("2015-05-01T11:12:54-07:00");
final Date modifiedAt = BoxDateFormat.parse("2015-06-08T11:11:50-07:00");
final JsonObject fakeJSONResponse = JsonObject.readFrom("{\n"
+ " \"type\": \"retention_policy\", \n"
+ " \"id\": \"123456789\", \n"
+ " \"policy_name\": \"Tax Documents\", \n"
+ " \"policy_type\": \"finite\", \n"
+ " \"retention_length\": 365, \n"
+ " \"disposition_action\": \"remove_retention\", \n"
+ " \"status\": \"active\", \n"
+ " \"created_by\": {\n"
+ " \"type\": \"user\",\n"
+ " \"id\": \"11993747\",\n"
+ " \"name\": \"Sean\",\n"
+ " \"login\": \"sean@box.com\"\n"
+ " },\n"
+ " \"created_at\": \"2015-05-01T11:12:54-07:00\",\n"
+ " \"modified_at\": \"2015-06-08T11:11:50-07:00\" \n"
+ "}");
BoxAPIConnection api = new BoxAPIConnection("");
api.setRequestInterceptor(JSONRequestInterceptor.respondWith(fakeJSONResponse));
BoxRetentionPolicy policy = new BoxRetentionPolicy(api, "123456789");
BoxRetentionPolicy.Info info = policy.getInfo();
Assert.assertEquals(id, info.getID());
Assert.assertEquals(name, info.getPolicyName());
Assert.assertEquals(type, info.getPolicyType());
Assert.assertEquals(length, info.getRetentionLength());
Assert.assertEquals(action, info.getDispositionAction());
Assert.assertEquals(status, info.getStatus());
Assert.assertEquals(userID, info.getCreatedBy().getID());
Assert.assertEquals(userName, info.getCreatedBy().getName());
Assert.assertEquals(userLogin, info.getCreatedBy().getLogin());
Assert.assertEquals(createdAt, info.getCreatedAt());
Assert.assertEquals(modifiedAt, info.getModifiedAt());
}
/**
* Unit test for {@link BoxRetentionPolicy#getAll(String, String, String, int, BoxAPIConnection, String...)}
*/
@Test
@Category(UnitTest.class)
public void testGetAllSendsCorrectRequestWithParams() {
BoxAPIConnection api = new BoxAPIConnection("");
api.setRequestInterceptor(new RequestInterceptor() {
@Override
public BoxAPIResponse onRequest(BoxAPIRequest request) {
Assert.assertEquals("https://api.box.com/2.0/retention_policies?"
+ "policy_name=any_name&policy_type=any_type&created_by_user_id=any_user&"
+ "fields=status&limit=100",
request.getUrl().toString());
return new BoxJSONResponse() {
@Override
public String getJSON() {
return "{\"entries\": []}";
}
};
}
});
Iterator<BoxRetentionPolicy.Info> iterator =
BoxRetentionPolicy.getAll("any_name", "any_type", "any_user", 100, api, "status").iterator();
iterator.hasNext();
}
/**
* Unit test for {@link BoxRetentionPolicy#getAll(BoxAPIConnection, String...)}
*/
@Test
@Category(UnitTest.class)
public void testGetAllSendsCorrectRequestWithoutParams() {
BoxAPIConnection api = new BoxAPIConnection("");
api.setRequestInterceptor(new RequestInterceptor() {
@Override
public BoxAPIResponse onRequest(BoxAPIRequest request) {
Assert.assertEquals("https://api.box.com/2.0/retention_policies?limit=100",
request.getUrl().toString());
return new BoxJSONResponse() {
@Override
public String getJSON() {
return "{\"entries\": []}";
}
};
}
});
Iterator<BoxRetentionPolicy.Info> iterator = BoxRetentionPolicy.getAll(api).iterator();
iterator.hasNext();
}
/**
* Unit test for {@link BoxRetentionPolicy#getAll(BoxAPIConnection, String...)}
*/
@Test
@Category(UnitTest.class)
public void testGetAllParseAllFieldsCorrectly() {
final String firstID = "123456789";
final String firstName = "TaxDocuments";
final String secondID = "987654321";
final String secondName = "DutyPapers";
final JsonObject fakeJSONResponse = JsonObject.readFrom("{\n"
+ " \"entries\": [\n"
+ " {\n"
+ " \"type\": \"retention_policy\",\n"
+ " \"id\": \"123456789\",\n"
+ " \"policy_name\": \"TaxDocuments\"\n"
+ " },\n"
+ " {\n"
+ " \"type\": \"retention_policy\",\n"
+ " \"id\": \"987654321\",\n"
+ " \"policy_name\": \"DutyPapers\"\n"
+ " }\n"
+ " ] \n"
+ "}");
BoxAPIConnection api = new BoxAPIConnection("");
api.setRequestInterceptor(JSONRequestInterceptor.respondWith(fakeJSONResponse));
Iterator<BoxRetentionPolicy.Info> iterator = BoxRetentionPolicy.getAll(api).iterator();
BoxRetentionPolicy.Info info = iterator.next();
Assert.assertEquals(firstID, info.getID());
Assert.assertEquals(firstName, info.getPolicyName());
info = iterator.next();
Assert.assertEquals(secondID, info.getID());
Assert.assertEquals(secondName, info.getPolicyName());
Assert.assertEquals(false, iterator.hasNext());
}
/**
* Unit test for {@link BoxRetentionPolicy#getFolderAssignments(String...)}
*/
@Test
@Category(UnitTest.class)
public void testGetFolderAssignmentsSendsCorrectRequest() {
BoxAPIConnection api = new BoxAPIConnection("");
api.setRequestInterceptor(new RequestInterceptor() {
@Override
public BoxAPIResponse onRequest(BoxAPIRequest request) {
Assert.assertEquals(
"https://api.box.com/2.0/retention_policies/0/assignments"
+ "?type=folder&fields=assigned_by&limit=100",
request.getUrl().toString());
return new BoxJSONResponse() {
@Override
public String getJSON() {
return "{\"entries\": []}";
}
};
}
});
BoxRetentionPolicy policy = new BoxRetentionPolicy(api, "0");
Iterator<BoxRetentionPolicyAssignment.Info> iterator = policy.getFolderAssignments("assigned_by").iterator();
iterator.hasNext();
}
/**
* Unit test for {@link BoxRetentionPolicy#getEnterpriseAssignments(String...)}
*/
@Test
@Category(UnitTest.class)
public void testGetEnterpriseAssignmentsSendsCorrectRequest() {
BoxAPIConnection api = new BoxAPIConnection("");
api.setRequestInterceptor(new RequestInterceptor() {
@Override
public BoxAPIResponse onRequest(BoxAPIRequest request) {
Assert.assertEquals(
"https://api.box.com/2.0/retention_policies/0/assignments"
+ "?type=enterprise&fields=assigned_by&limit=100",
request.getUrl().toString());
return new BoxJSONResponse() {
@Override
public String getJSON() {
return "{\"entries\": []}";
}
};
}
});
BoxRetentionPolicy policy = new BoxRetentionPolicy(api, "0");
Iterator<BoxRetentionPolicyAssignment.Info> iterator
= policy.getEnterpriseAssignments("assigned_by").iterator();
iterator.hasNext();
}
/**
* Unit test for {@link BoxRetentionPolicy#getAllAssignments(String...)}
*/
@Test
@Category(UnitTest.class)
public void testGetAllAssignmentsSendsCorrectRequest() {
BoxAPIConnection api = new BoxAPIConnection("");
api.setRequestInterceptor(new RequestInterceptor() {
@Override
public BoxAPIResponse onRequest(BoxAPIRequest request) {
Assert.assertEquals(
"https://api.box.com/2.0/retention_policies/0/assignments"
+ "?fields=assigned_by&limit=100",
request.getUrl().toString());
return new BoxJSONResponse() {
@Override
public String getJSON() {
return "{\"entries\": []}";
}
};
}
});
BoxRetentionPolicy policy = new BoxRetentionPolicy(api, "0");
Iterator<BoxRetentionPolicyAssignment.Info> iterator = policy.getAllAssignments("assigned_by").iterator();
iterator.hasNext();
}
/**
* Unit test for {@link BoxRetentionPolicy#getFolderAssignments(String...)}
*/
@Test
@Category(UnitTest.class)
public void testGetFolderAssignmentsParseAllFieldsCorrectly() {
final String firstID = "12345678";
final String secondID = "23456789";
final JsonObject fakeJSONResponse = JsonObject.readFrom("{\n"
+ " \"entries\": [\n"
+ " {\n"
+ " \"type\": \"retention_policy_assignment\",\n"
+ " \"id\": \"12345678\"\n"
+ " },\n"
+ " {\n"
+ " \"type\": \"retention_policy_assignment\",\n"
+ " \"id\": \"23456789\"\n"
+ " }\n"
+ " ]\n"
+ "}");
BoxAPIConnection api = new BoxAPIConnection("");
api.setRequestInterceptor(JSONRequestInterceptor.respondWith(fakeJSONResponse));
BoxRetentionPolicy policy = new BoxRetentionPolicy(api, "0");
Iterator<BoxRetentionPolicyAssignment.Info> iterator = policy.getFolderAssignments().iterator();
BoxRetentionPolicyAssignment.Info info = iterator.next();
Assert.assertEquals(firstID, info.getID());
info = iterator.next();
Assert.assertEquals(secondID, info.getID());
Assert.assertEquals(false, iterator.hasNext());
}
/**
* Unit test for {@link BoxRetentionPolicy#getEnterpriseAssignments(String...)}
*/
@Test
@Category(UnitTest.class)
public void testGetEnterpriseAssignmentsParseAllFieldsCorrectly() {
final String firstID = "12345678";
final String secondID = "23456789";
final JsonObject fakeJSONResponse = JsonObject.readFrom("{\n"
+ " \"entries\": [\n"
+ " {\n"
+ " \"type\": \"retention_policy_assignment\",\n"
+ " \"id\": \"12345678\"\n"
+ " },\n"
+ " {\n"
+ " \"type\": \"retention_policy_assignment\",\n"
+ " \"id\": \"23456789\"\n"
+ " }\n"
+ " ]\n"
+ "}");
BoxAPIConnection api = new BoxAPIConnection("");
api.setRequestInterceptor(JSONRequestInterceptor.respondWith(fakeJSONResponse));
BoxRetentionPolicy policy = new BoxRetentionPolicy(api, "0");
Iterator<BoxRetentionPolicyAssignment.Info> iterator = policy.getEnterpriseAssignments().iterator();
BoxRetentionPolicyAssignment.Info info = iterator.next();
Assert.assertEquals(firstID, info.getID());
info = iterator.next();
Assert.assertEquals(secondID, info.getID());
Assert.assertEquals(false, iterator.hasNext());
}
}