[feature/MNT-24127-EndpointToCalculateFolderSize] Addressing review comments and refactoring files

This commit is contained in:
mohit-singh4
2024-10-09 15:53:41 +05:30
parent 7187b5bc47
commit b8d08f0866
3 changed files with 240 additions and 225 deletions

View File

@@ -731,7 +731,7 @@
"filename": "remote-api/src/test/java/org/alfresco/rest/api/tests/AbstractBaseApiTest.java", "filename": "remote-api/src/test/java/org/alfresco/rest/api/tests/AbstractBaseApiTest.java",
"hashed_secret": "d033e22ae348aeb5660fc2140aec35850c4da997", "hashed_secret": "d033e22ae348aeb5660fc2140aec35850c4da997",
"is_verified": false, "is_verified": false,
"line_number": 121, "line_number": 111,
"is_secret": false "is_secret": false
} }
], ],

View File

@@ -4,82 +4,81 @@
* %% * %%
* Copyright (C) 2005 - 2024 Alfresco Software Limited * Copyright (C) 2005 - 2024 Alfresco Software Limited
* %% * %%
* This file is part of the Alfresco software. * This file is part of the Alfresco software.
* If the software was purchased under a paid Alfresco license, the terms of * If the software was purchased under a paid Alfresco license, the terms of
* the paid license agreement will prevail. Otherwise, the software is * the paid license agreement will prevail. Otherwise, the software is
* provided under the following open source license terms: * provided under the following open source license terms:
* *
* Alfresco is free software: you can redistribute it and/or modify * Alfresco is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by * it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or * the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version. * (at your option) any later version.
* *
* Alfresco is distributed in the hope that it will be useful, * Alfresco is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of * but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details. * GNU Lesser General Public License for more details.
* *
* You should have received a copy of the GNU Lesser General Public License * You should have received a copy of the GNU Lesser General Public License
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>. * along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
* #L% * #L%
*/ */
package org.alfresco; package org.alfresco;
import org.alfresco.repo.web.scripts.TestWebScriptRepoServer;
import org.alfresco.util.testing.category.DBTests;
import org.alfresco.util.testing.category.NonBuildTests;
import org.junit.experimental.categories.Categories; import org.junit.experimental.categories.Categories;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.junit.runners.Suite; import org.junit.runners.Suite;
import org.alfresco.repo.web.scripts.TestWebScriptRepoServer;
import org.alfresco.util.testing.category.DBTests;
import org.alfresco.util.testing.category.NonBuildTests;
@RunWith(Categories.class) @RunWith(Categories.class)
@Categories.ExcludeCategory({DBTests.class, NonBuildTests.class}) @Categories.ExcludeCategory({DBTests.class, NonBuildTests.class})
@Suite.SuiteClasses({ @Suite.SuiteClasses({
// [classpath:alfresco/application-context.xml, classpath:alfresco/web-scripts-application-context-test.xml, // [classpath:alfresco/application-context.xml, classpath:alfresco/web-scripts-application-context-test.xml,
// classpath:alfresco/web-scripts-application-context.xml] // classpath:alfresco/web-scripts-application-context.xml]
org.alfresco.repo.web.scripts.quickshare.QuickShareRestApiTest.class, org.alfresco.repo.web.scripts.quickshare.QuickShareRestApiTest.class,
org.alfresco.repo.web.scripts.admin.AdminWebScriptTest.class, org.alfresco.repo.web.scripts.admin.AdminWebScriptTest.class,
org.alfresco.repo.web.scripts.audit.AuditWebScriptTest.class, org.alfresco.repo.web.scripts.audit.AuditWebScriptTest.class,
org.alfresco.repo.web.scripts.blogs.BlogServiceTest.class, org.alfresco.repo.web.scripts.blogs.BlogServiceTest.class,
org.alfresco.repo.web.scripts.dictionary.DictionaryRestApiTest.class, org.alfresco.repo.web.scripts.dictionary.DictionaryRestApiTest.class,
org.alfresco.repo.web.scripts.discussion.DiscussionRestApiTest.class, org.alfresco.repo.web.scripts.discussion.DiscussionRestApiTest.class,
org.alfresco.repo.web.scripts.activities.feed.control.FeedControlTest.class, org.alfresco.repo.web.scripts.activities.feed.control.FeedControlTest.class,
org.alfresco.repo.web.scripts.forms.FormRestApiGet_Test.class, org.alfresco.repo.web.scripts.forms.FormRestApiGet_Test.class,
org.alfresco.repo.web.scripts.forms.FormRestApiJsonPost_Test.class, org.alfresco.repo.web.scripts.forms.FormRestApiJsonPost_Test.class,
org.alfresco.repo.web.scripts.groups.GroupsTest.class, org.alfresco.repo.web.scripts.groups.GroupsTest.class,
org.alfresco.repo.web.scripts.invitation.InvitationWebScriptTest.class, org.alfresco.repo.web.scripts.invitation.InvitationWebScriptTest.class,
org.alfresco.repo.web.scripts.invite.InviteServiceTest.class, org.alfresco.repo.web.scripts.invite.InviteServiceTest.class, org.alfresco.repo.web.scripts.LoginTest.class,
org.alfresco.repo.web.scripts.LoginTest.class, org.alfresco.repo.web.scripts.search.PersonSearchTest.class,
org.alfresco.repo.web.scripts.search.PersonSearchTest.class, org.alfresco.repo.web.scripts.person.PersonServiceTest.class,
org.alfresco.repo.web.scripts.person.PersonServiceTest.class, org.alfresco.repo.web.scripts.preference.PreferenceServiceTest.class,
org.alfresco.repo.web.scripts.preference.PreferenceServiceTest.class, org.alfresco.repo.web.scripts.rating.RatingRestApiTest.class,
org.alfresco.repo.web.scripts.rating.RatingRestApiTest.class, org.alfresco.repo.web.scripts.replication.ReplicationRestApiTest.class,
org.alfresco.repo.web.scripts.replication.ReplicationRestApiTest.class, org.alfresco.repo.web.scripts.RepositoryContainerTest.class,
org.alfresco.repo.web.scripts.RepositoryContainerTest.class, org.alfresco.repo.web.scripts.rule.RuleServiceTest.class,
org.alfresco.repo.web.scripts.rule.RuleServiceTest.class, org.alfresco.repo.web.scripts.action.RunningActionRestApiTest.class,
org.alfresco.repo.web.scripts.action.RunningActionRestApiTest.class, org.alfresco.repo.web.scripts.site.SiteServiceTest.class,
org.alfresco.repo.web.scripts.site.SiteServiceTest.class, org.alfresco.repo.web.scripts.tagging.TaggingServiceTest.class,
org.alfresco.repo.web.scripts.tagging.TaggingServiceTest.class, org.alfresco.repo.web.scripts.thumbnail.ThumbnailServiceTest.class,
org.alfresco.repo.web.scripts.thumbnail.ThumbnailServiceTest.class, org.alfresco.repo.web.scripts.transfer.TransferWebScriptTest.class,
org.alfresco.repo.web.scripts.transfer.TransferWebScriptTest.class, org.alfresco.repo.web.scripts.workflow.ActivitiWorkflowRestApiTest.class,
org.alfresco.repo.web.scripts.workflow.ActivitiWorkflowRestApiTest.class, org.alfresco.repo.web.scripts.solr.SOLRWebScriptTest.class,
org.alfresco.repo.web.scripts.solr.SOLRWebScriptTest.class, org.alfresco.repo.web.scripts.subscriptions.SubscriptionServiceRestApiTest.class,
org.alfresco.repo.web.scripts.subscriptions.SubscriptionServiceRestApiTest.class, org.alfresco.repo.web.scripts.facet.FacetRestApiTest.class,
org.alfresco.repo.web.scripts.facet.FacetRestApiTest.class, org.alfresco.repo.web.scripts.comment.CommentsApiTest.class,
org.alfresco.repo.web.scripts.comment.CommentsApiTest.class, org.alfresco.repo.web.scripts.content.ContentGetTest.class,
org.alfresco.repo.web.scripts.content.ContentGetTest.class, org.alfresco.repo.web.scripts.XssVulnerabilityTest.class,
org.alfresco.repo.web.scripts.XssVulnerabilityTest.class, org.alfresco.repo.web.scripts.links.LinksRestApiTest.class,
org.alfresco.repo.web.scripts.links.LinksRestApiTest.class, org.alfresco.repo.model.filefolder.RemoteFileFolderLoaderTest.class,
org.alfresco.repo.model.filefolder.RemoteFileFolderLoaderTest.class, org.alfresco.repo.web.scripts.ReadOnlyTransactionInGetRestApiTest.class,
org.alfresco.repo.web.scripts.ReadOnlyTransactionInGetRestApiTest.class, org.alfresco.repo.web.scripts.custommodel.CustomModelImportTest.class,
org.alfresco.repo.web.scripts.custommodel.CustomModelImportTest.class, org.alfresco.repo.web.scripts.site.SurfConfigTest.class,
org.alfresco.repo.web.scripts.site.SurfConfigTest.class, org.alfresco.repo.web.scripts.node.NodeWebScripTest.class,
org.alfresco.repo.web.scripts.node.NodeWebScripTest.class, org.alfresco.rest.api.impl.CommentsImplUnitTest.class,
org.alfresco.rest.api.impl.CommentsImplUnitTest.class, org.alfresco.rest.api.impl.DownloadsImplCheckArchiveStatusUnitTest.class,
org.alfresco.rest.api.impl.DownloadsImplCheckArchiveStatusUnitTest.class, org.alfresco.rest.api.impl.RestApiDirectUrlConfigUnitTest.class,
org.alfresco.rest.api.impl.RestApiDirectUrlConfigUnitTest.class, org.alfresco.rest.api.impl.SizeDetailsImplTest.class})
org.alfresco.rest.api.impl.SizeDetailsImplTest.class
})
public class AppContext04TestSuite public class AppContext04TestSuite
{ {
public AppContext04TestSuite() public AppContext04TestSuite()

View File

@@ -4,48 +4,66 @@
* %% * %%
* Copyright (C) 2005 - 2024 Alfresco Software Limited * Copyright (C) 2005 - 2024 Alfresco Software Limited
* %% * %%
* This file is part of the Alfresco software. * This file is part of the Alfresco software.
* If the software was purchased under a paid Alfresco license, the terms of * If the software was purchased under a paid Alfresco license, the terms of
* the paid license agreement will prevail. Otherwise, the software is * the paid license agreement will prevail. Otherwise, the software is
* provided under the following open source license terms: * provided under the following open source license terms:
* *
* Alfresco is free software: you can redistribute it and/or modify * Alfresco is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by * it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or * the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version. * (at your option) any later version.
* *
* Alfresco is distributed in the hope that it will be useful, * Alfresco is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of * but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details. * GNU Lesser General Public License for more details.
* *
* You should have received a copy of the GNU Lesser General Public License * You should have received a copy of the GNU Lesser General Public License
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>. * along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
* #L% * #L%
*/ */
package org.alfresco.rest.api.tests; package org.alfresco.rest.api.tests;
import org.alfresco.repo.content.directurl.SystemWideDirectUrlConfig;
import org.alfresco.rest.api.impl.directurl.RestApiDirectUrlConfig;
import org.alfresco.rest.api.tests.client.PublicApiHttpClient;
import static org.alfresco.rest.api.tests.util.RestApiUtil.toJsonAsString;
import static org.alfresco.rest.api.tests.util.RestApiUtil.toJsonAsStringNonNull;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull; import static org.junit.Assert.assertNull;
import static org.junit.Assert.fail;
import static org.junit.Assert.assertTrue; import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import static org.alfresco.rest.api.tests.util.RestApiUtil.toJsonAsString;
import static org.alfresco.rest.api.tests.util.RestApiUtil.toJsonAsStringNonNull;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.json.simple.JSONObject;
import org.junit.After;
import org.junit.Before;
import org.junit.experimental.categories.Category;
import org.springframework.util.ResourceUtils;
import org.alfresco.repo.content.directurl.SystemWideDirectUrlConfig;
import org.alfresco.repo.security.authentication.AuthenticationUtil; import org.alfresco.repo.security.authentication.AuthenticationUtil;
import org.alfresco.repo.tenant.TenantService; import org.alfresco.repo.tenant.TenantService;
import org.alfresco.repo.tenant.TenantUtil; import org.alfresco.repo.tenant.TenantUtil;
import org.alfresco.repo.transaction.RetryingTransactionHelper; import org.alfresco.repo.transaction.RetryingTransactionHelper;
import org.alfresco.rest.api.Nodes; import org.alfresco.rest.api.Nodes;
import org.alfresco.rest.api.impl.directurl.RestApiDirectUrlConfig;
import org.alfresco.rest.api.model.Site; import org.alfresco.rest.api.model.Site;
import org.alfresco.rest.api.nodes.NodesEntityResource; import org.alfresco.rest.api.nodes.NodesEntityResource;
import org.alfresco.rest.api.tests.RepoService.TestNetwork; import org.alfresco.rest.api.tests.RepoService.TestNetwork;
import org.alfresco.rest.api.tests.client.HttpResponse; import org.alfresco.rest.api.tests.client.HttpResponse;
import org.alfresco.rest.api.tests.client.PublicApiClient; import org.alfresco.rest.api.tests.client.PublicApiClient;
import org.alfresco.rest.api.tests.client.PublicApiHttpClient;
import org.alfresco.rest.api.tests.client.PublicApiHttpClient.BinaryPayload; import org.alfresco.rest.api.tests.client.PublicApiHttpClient.BinaryPayload;
import org.alfresco.rest.api.tests.client.PublicApiHttpClient.RequestBuilder; import org.alfresco.rest.api.tests.client.PublicApiHttpClient.RequestBuilder;
import org.alfresco.rest.api.tests.client.RequestContext; import org.alfresco.rest.api.tests.client.RequestContext;
@@ -65,26 +83,10 @@ import org.alfresco.service.cmr.security.PersonService;
import org.alfresco.service.cmr.site.SiteVisibility; import org.alfresco.service.cmr.site.SiteVisibility;
import org.alfresco.util.TempFileProvider; import org.alfresco.util.TempFileProvider;
import org.alfresco.util.testing.category.LuceneTests; import org.alfresco.util.testing.category.LuceneTests;
import org.json.simple.JSONObject;
import org.junit.After;
import org.junit.Before;
import org.junit.experimental.categories.Category;
import org.springframework.util.ResourceUtils;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.HashMap;
/** /**
* Generic methods for calling the Api (originally taken and adapted from BaseCustomModelApiTest) * Generic methods for calling the Api (originally taken and adapted from BaseCustomModelApiTest)
* *
* @author Jamal Kaabi-Mofrad * @author Jamal Kaabi-Mofrad
* @author janv * @author janv
* @author gethin * @author gethin
@@ -94,55 +96,40 @@ public abstract class AbstractBaseApiTest extends EnterpriseTestApi
{ {
public static final String LAST_MODIFIED_HEADER = "Last-Modified"; public static final String LAST_MODIFIED_HEADER = "Last-Modified";
public static final String IF_MODIFIED_SINCE_HEADER = "If-Modified-Since"; public static final String IF_MODIFIED_SINCE_HEADER = "If-Modified-Since";
private static final String RESOURCE_PREFIX = "publicapi/upload/";
protected static final String URL_NODES = "nodes"; protected static final String URL_NODES = "nodes";
protected static final String URL_DELETED_NODES = "deleted-nodes"; protected static final String URL_DELETED_NODES = "deleted-nodes";
protected static final String URL_RENDITIONS = "renditions"; protected static final String URL_RENDITIONS = "renditions";
protected static final String URL_VERSIONS = "versions"; protected static final String URL_VERSIONS = "versions";
private static final String URL_CHILDREN = "children";
private static final String URL_CONTENT = "content";
private static final String URL_CALCULATEFOLDERSIZE = "size-details";
protected static final String TYPE_CM_FOLDER = "cm:folder"; protected static final String TYPE_CM_FOLDER = "cm:folder";
protected static final String TYPE_CM_CONTENT = "cm:content"; protected static final String TYPE_CM_CONTENT = "cm:content";
protected static final String TYPE_CM_OBJECT = "cm:cmobject"; protected static final String TYPE_CM_OBJECT = "cm:cmobject";
protected static final String ASPECT_CM_PREFERENCES = "cm:preferences"; protected static final String ASPECT_CM_PREFERENCES = "cm:preferences";
protected static final String ASSOC_TYPE_CM_PREFERENCE_IMAGE = "cm:preferenceImage"; protected static final String ASSOC_TYPE_CM_PREFERENCE_IMAGE = "cm:preferenceImage";
protected static final String ASSOC_TYPE_CM_CONTAINS = "cm:contains"; protected static final String ASSOC_TYPE_CM_CONTAINS = "cm:contains";
// TODO improve admin-related tests, including ability to override default admin un/pw // TODO improve admin-related tests, including ability to override default admin un/pw
protected static final String DEFAULT_ADMIN = "admin"; protected static final String DEFAULT_ADMIN = "admin";
protected static final String DEFAULT_ADMIN_PWD = "admin"; protected static final String DEFAULT_ADMIN_PWD = "admin";
protected static final long PAUSE_TIME = 5000; // millisecond
protected static final int MAX_RETRY = 20;
private static final String RESOURCE_PREFIX = "publicapi/upload/";
private static final String URL_CHILDREN = "children";
private static final String URL_CONTENT = "content";
private static final String URL_CALCULATEFOLDERSIZE = "size-details";
private static final String REQUEST_DIRECT_ACCESS_URL = "request-direct-access-url";
// network1 with user1, user2 and a testsite1 // network1 with user1, user2 and a testsite1
protected static TestNetwork networkOne; protected static TestNetwork networkOne;
protected static String user1; // user1 from network1 protected static String user1; // user1 from network1
protected static String user2; // user2 from network1 protected static String user2; // user2 from network1
// network admin (or default super admin, if not running within a tenant/network) // network admin (or default super admin, if not running within a tenant/network)
protected static String networkAdmin = DEFAULT_ADMIN; protected static String networkAdmin = DEFAULT_ADMIN;
protected static String tSiteId; protected static String tSiteId;
protected static String tDocLibNodeId; protected static String tDocLibNodeId;
protected static List<String> users = new ArrayList<>(); protected static List<String> users = new ArrayList<>();
protected static JacksonUtil jacksonUtil; protected static JacksonUtil jacksonUtil;
protected static MutableAuthenticationService authenticationService; protected static MutableAuthenticationService authenticationService;
protected static PersonService personService; protected static PersonService personService;
protected final String RUNID = System.currentTimeMillis() + "";
protected final String RUNID = System.currentTimeMillis()+"";
private static final String REQUEST_DIRECT_ACCESS_URL = "request-direct-access-url";
@Override @Override
@Before @Before
public void setup() throws Exception public void setup() throws Exception
@@ -154,22 +141,22 @@ public abstract class AbstractBaseApiTest extends EnterpriseTestApi
// note: populateTestData/createTestData will be called (which currently creates 2 tenants, 9 users per tenant, 10 sites per tenant, ...) // note: populateTestData/createTestData will be called (which currently creates 2 tenants, 9 users per tenant, 10 sites per tenant, ...)
networkOne = getTestFixture().getRandomNetwork(); networkOne = getTestFixture().getRandomNetwork();
} }
//userOneN1 = networkN1.createUser(); // userOneN1 = networkN1.createUser();
//userTwoN1 = networkN1.createUser(); // userTwoN1 = networkN1.createUser();
String tenantDomain = networkOne.getId(); String tenantDomain = networkOne.getId();
if (! TenantService.DEFAULT_DOMAIN.equals(tenantDomain)) if (!TenantService.DEFAULT_DOMAIN.equals(tenantDomain))
{ {
networkAdmin = DEFAULT_ADMIN+"@"+tenantDomain; networkAdmin = DEFAULT_ADMIN + "@" + tenantDomain;
} }
// to enable admin access via test calls - eg. via PublicApiClient -> AbstractTestApi -> findUserByUserName // to enable admin access via test calls - eg. via PublicApiClient -> AbstractTestApi -> findUserByUserName
getOrCreateUser(networkAdmin, "admin", networkOne); getOrCreateUser(networkAdmin, "admin", networkOne);
setRequestContext(networkOne.getId(), networkAdmin, DEFAULT_ADMIN_PWD); setRequestContext(networkOne.getId(), networkAdmin, DEFAULT_ADMIN_PWD);
// note: createUser currently relies on repoService // note: createUser currently relies on repoService
user1 = createUser("user1-" + RUNID, "user1Password", networkOne); user1 = createUser("user1-" + RUNID, "user1Password", networkOne);
user2 = createUser("user2-" + RUNID, "user2Password", networkOne); user2 = createUser("user2-" + RUNID, "user2Password", networkOne);
@@ -181,7 +168,7 @@ public abstract class AbstractBaseApiTest extends EnterpriseTestApi
users.add(user2); users.add(user2);
setRequestContext(networkOne.getId(), user1, null); setRequestContext(networkOne.getId(), user1, null);
tSiteId = createSite("TestSite A - " + RUNID, SiteVisibility.PRIVATE).getId(); tSiteId = createSite("TestSite A - " + RUNID, SiteVisibility.PRIVATE).getId();
tDocLibNodeId = getSiteContainerNodeId(tSiteId, "documentLibrary"); tDocLibNodeId = getSiteContainerNodeId(tSiteId, "documentLibrary");
@@ -198,11 +185,10 @@ public abstract class AbstractBaseApiTest extends EnterpriseTestApi
} }
setRequestContext(networkAdmin); setRequestContext(networkAdmin);
for (final String username : users) for (final String username : users)
{ {
transactionHelper.doInTransaction(new RetryingTransactionHelper.RetryingTransactionCallback<Void>() transactionHelper.doInTransaction(new RetryingTransactionHelper.RetryingTransactionCallback<Void>() {
{
@Override @Override
public Void execute() throws Throwable public Void execute() throws Throwable
{ {
@@ -211,7 +197,7 @@ public abstract class AbstractBaseApiTest extends EnterpriseTestApi
} }
}); });
} }
users.clear(); users.clear();
AuthenticationUtil.clearCurrentSecurityContext(); AuthenticationUtil.clearCurrentSecurityContext();
setRequestContext(null); setRequestContext(null);
@@ -234,7 +220,8 @@ public abstract class AbstractBaseApiTest extends EnterpriseTestApi
protected String getRequestArchivedRenditonContentDirectUrl(String nodeId, String renditionID) protected String getRequestArchivedRenditonContentDirectUrl(String nodeId, String renditionID)
{ {
return URL_DELETED_NODES + "/" + nodeId + "/" + URL_RENDITIONS + "/" + renditionID + "/" + REQUEST_DIRECT_ACCESS_URL; return URL_DELETED_NODES + "/" + nodeId + "/" + URL_RENDITIONS + "/" + renditionID + "/"
+ REQUEST_DIRECT_ACCESS_URL;
} }
protected String getRequestRenditionDirectAccessUrl(String nodeId, String renditionID) protected String getRequestRenditionDirectAccessUrl(String nodeId, String renditionID)
@@ -247,7 +234,6 @@ public abstract class AbstractBaseApiTest extends EnterpriseTestApi
return URL_NODES + "/" + nodeId + "/" + URL_VERSIONS + "/" + versionId + "/" + REQUEST_DIRECT_ACCESS_URL; return URL_NODES + "/" + nodeId + "/" + URL_VERSIONS + "/" + versionId + "/" + REQUEST_DIRECT_ACCESS_URL;
} }
/** /**
* The api scope. either public or private * The api scope. either public or private
* *
@@ -263,10 +249,10 @@ public abstract class AbstractBaseApiTest extends EnterpriseTestApi
return response; return response;
} }
protected HttpResponse post(String url, byte[] body, Map<String, String> params, Map<String, String> headers, String apiName, String contentType, int expectedStatus) throws Exception protected HttpResponse post(String url, byte[] body, Map<String, String> params, Map<String, String> headers,
String apiName, String contentType, int expectedStatus) throws Exception
{ {
RequestBuilder requestBuilder = httpClient.new PostRequestBuilder() RequestBuilder requestBuilder = httpClient.new PostRequestBuilder().setBodyAsByteArray(body)
.setBodyAsByteArray(body)
.setContentType(contentType) .setContentType(contentType)
.setRequestContext(publicApiClient.getRequestContext()) .setRequestContext(publicApiClient.getRequestContext())
.setScope(getScope()) .setScope(getScope())
@@ -280,10 +266,10 @@ public abstract class AbstractBaseApiTest extends EnterpriseTestApi
return response; return response;
} }
protected HttpResponse post(String url, String body, Map<String, String> params, Map<String, String> headers, String apiName, int expectedStatus) throws Exception protected HttpResponse post(String url, String body, Map<String, String> params, Map<String, String> headers,
String apiName, int expectedStatus) throws Exception
{ {
RequestBuilder requestBuilder = httpClient.new PostRequestBuilder() RequestBuilder requestBuilder = httpClient.new PostRequestBuilder().setBodyAsString(body)
.setBodyAsString(body)
.setRequestContext(publicApiClient.getRequestContext()) .setRequestContext(publicApiClient.getRequestContext())
.setScope(getScope()) .setScope(getScope())
.setApiName(apiName) .setApiName(apiName)
@@ -308,7 +294,8 @@ public abstract class AbstractBaseApiTest extends EnterpriseTestApi
return response; return response;
} }
protected HttpResponse post(String url, String body, String queryString, String contentType, int expectedStatus) throws Exception protected HttpResponse post(String url, String body, String queryString, String contentType, int expectedStatus)
throws Exception
{ {
if (queryString != null) if (queryString != null)
{ {
@@ -320,7 +307,8 @@ public abstract class AbstractBaseApiTest extends EnterpriseTestApi
return response; return response;
} }
protected HttpResponse post(String url, byte[] body, String queryString, String contentType, int expectedStatus) throws Exception protected HttpResponse post(String url, byte[] body, String queryString, String contentType, int expectedStatus)
throws Exception
{ {
if (queryString != null) if (queryString != null)
{ {
@@ -333,9 +321,12 @@ public abstract class AbstractBaseApiTest extends EnterpriseTestApi
} }
// TODO unused queryString - fix-up usages and then remove // TODO unused queryString - fix-up usages and then remove
protected HttpResponse post(String entityCollectionName, String entityId, String relationCollectionName, byte[] body, String queryString, String contentType, int expectedStatus) throws Exception protected HttpResponse post(String entityCollectionName, String entityId, String relationCollectionName,
byte[] body, String queryString, String contentType, int expectedStatus)
throws Exception
{ {
HttpResponse response = publicApiClient.post(getScope(), entityCollectionName, entityId, relationCollectionName, null, body, contentType); HttpResponse response = publicApiClient.post(getScope(), entityCollectionName, entityId, relationCollectionName, null, body,
contentType);
checkStatus(expectedStatus, response.getStatusCode()); checkStatus(expectedStatus, response.getStatusCode());
return response; return response;
@@ -346,7 +337,8 @@ public abstract class AbstractBaseApiTest extends EnterpriseTestApi
return getAll(url, paging, null, expectedStatus); return getAll(url, paging, null, expectedStatus);
} }
protected HttpResponse getAll(String url, PublicApiClient.Paging paging, Map<String, String> otherParams, int expectedStatus) throws Exception protected HttpResponse getAll(String url, PublicApiClient.Paging paging, Map<String, String> otherParams,
int expectedStatus) throws Exception
{ {
Map<String, String> params = createParams(paging, otherParams); Map<String, String> params = createParams(paging, otherParams);
@@ -356,7 +348,8 @@ public abstract class AbstractBaseApiTest extends EnterpriseTestApi
return response; return response;
} }
protected HttpResponse getAll(Class<?> entityResource, PublicApiClient.Paging paging, Map<String, String> otherParams, int expectedStatus) throws Exception protected HttpResponse getAll(Class<?> entityResource, PublicApiClient.Paging paging,
Map<String, String> otherParams, int expectedStatus) throws Exception
{ {
HttpResponse response = publicApiClient.get(entityResource, null, null, otherParams); HttpResponse response = publicApiClient.get(entityResource, null, null, otherParams);
checkStatus(expectedStatus, response.getStatusCode()); checkStatus(expectedStatus, response.getStatusCode());
@@ -364,16 +357,17 @@ public abstract class AbstractBaseApiTest extends EnterpriseTestApi
return response; return response;
} }
protected HttpResponse getAll(String url, PublicApiClient.Paging paging, Map<String, String> otherParams, Map<String, String> headers, int expectedStatus) throws Exception protected HttpResponse getAll(String url, PublicApiClient.Paging paging, Map<String, String> otherParams,
Map<String, String> headers, int expectedStatus) throws Exception
{ {
return getAll(url, paging, otherParams, headers, null, expectedStatus); return getAll(url, paging, otherParams, headers, null, expectedStatus);
} }
protected HttpResponse getAll(String url, PublicApiClient.Paging paging, Map<String, String> otherParams, Map<String, String> headers, String apiName, int expectedStatus) throws Exception protected HttpResponse getAll(String url, PublicApiClient.Paging paging, Map<String, String> otherParams,
Map<String, String> headers, String apiName, int expectedStatus) throws Exception
{ {
Map<String, String> params = createParams(paging, otherParams); Map<String, String> params = createParams(paging, otherParams);
RequestBuilder requestBuilder = httpClient.new GetRequestBuilder() RequestBuilder requestBuilder = httpClient.new GetRequestBuilder().setRequestContext(publicApiClient.getRequestContext())
.setRequestContext(publicApiClient.getRequestContext())
.setScope(getScope()) .setScope(getScope())
.setApiName(apiName) .setApiName(apiName)
.setEntityCollectionName(url) .setEntityCollectionName(url)
@@ -385,7 +379,7 @@ public abstract class AbstractBaseApiTest extends EnterpriseTestApi
return response; return response;
} }
protected HttpResponse getSingle(String url, String entityId, int expectedStatus) throws Exception protected HttpResponse getSingle(String url, String entityId, int expectedStatus) throws Exception
{ {
return getSingle(url, entityId, null, expectedStatus); return getSingle(url, entityId, null, expectedStatus);
@@ -399,7 +393,8 @@ public abstract class AbstractBaseApiTest extends EnterpriseTestApi
return response; return response;
} }
protected HttpResponse getSingle(String url, String entityId, Map<String, String> params, int expectedStatus) throws Exception protected HttpResponse getSingle(String url, String entityId, Map<String, String> params, int expectedStatus)
throws Exception
{ {
HttpResponse response = publicApiClient.get(getScope(), url, entityId, null, null, params); HttpResponse response = publicApiClient.get(getScope(), url, entityId, null, null, params);
checkStatus(expectedStatus, response.getStatusCode()); checkStatus(expectedStatus, response.getStatusCode());
@@ -407,7 +402,8 @@ public abstract class AbstractBaseApiTest extends EnterpriseTestApi
return response; return response;
} }
protected HttpResponse getSingle(Class<?> entityResource, String entityId, Map<String, String> params, int expectedStatus) throws Exception protected HttpResponse getSingle(Class<?> entityResource, String entityId, Map<String, String> params,
int expectedStatus) throws Exception
{ {
HttpResponse response = publicApiClient.get(entityResource, entityId, null, params); HttpResponse response = publicApiClient.get(entityResource, entityId, null, params);
checkStatus(expectedStatus, response.getStatusCode()); checkStatus(expectedStatus, response.getStatusCode());
@@ -415,15 +411,16 @@ public abstract class AbstractBaseApiTest extends EnterpriseTestApi
return response; return response;
} }
protected HttpResponse getSingle(String url, String entityId, Map<String, String> params, Map<String, String> headers, int expectedStatus) throws Exception protected HttpResponse getSingle(String url, String entityId, Map<String, String> params,
Map<String, String> headers, int expectedStatus) throws Exception
{ {
return getSingle(url, entityId, params, headers, null, expectedStatus); return getSingle(url, entityId, params, headers, null, expectedStatus);
} }
protected HttpResponse getSingle(String url, String entityId, Map<String, String> params, Map<String, String> headers, String apiName, int expectedStatus) throws Exception protected HttpResponse getSingle(String url, String entityId, Map<String, String> params,
Map<String, String> headers, String apiName, int expectedStatus) throws Exception
{ {
RequestBuilder requestBuilder = httpClient.new GetRequestBuilder() RequestBuilder requestBuilder = httpClient.new GetRequestBuilder().setRequestContext(publicApiClient.getRequestContext())
.setRequestContext(publicApiClient.getRequestContext())
.setScope(getScope()) .setScope(getScope())
.setApiName(apiName) .setApiName(apiName)
.setEntityCollectionName(url) .setEntityCollectionName(url)
@@ -438,7 +435,8 @@ public abstract class AbstractBaseApiTest extends EnterpriseTestApi
} }
protected HttpResponse getSingleWithDelayRetry(String url, String entityId, Map<String, String> params, protected HttpResponse getSingleWithDelayRetry(String url, String entityId, Map<String, String> params,
Map<String, String> headers, int repeat, long pauseInMillisecond, int expectedStatus) throws Exception Map<String, String> headers, int repeat, long pauseInMillisecond,
int expectedStatus) throws Exception
{ {
int retryCount = 0; int retryCount = 0;
while (retryCount < repeat) while (retryCount < repeat)
@@ -446,7 +444,7 @@ public abstract class AbstractBaseApiTest extends EnterpriseTestApi
try try
{ {
return getSingle(url, entityId, params, headers, expectedStatus); return getSingle(url, entityId, params, headers, expectedStatus);
} }
catch (AssertionError ex) catch (AssertionError ex)
{ {
retryCount++; retryCount++;
@@ -456,7 +454,8 @@ public abstract class AbstractBaseApiTest extends EnterpriseTestApi
return null; return null;
} }
protected HttpResponse put(String url, String entityId, String body, String queryString, int expectedStatus) throws Exception protected HttpResponse put(String url, String entityId, String body, String queryString, int expectedStatus)
throws Exception
{ {
if (queryString != null) if (queryString != null)
{ {
@@ -468,8 +467,8 @@ public abstract class AbstractBaseApiTest extends EnterpriseTestApi
return response; return response;
} }
protected HttpResponse putBinary(String url, int version, BinaryPayload payload, String queryString, Map<String, String> params, protected HttpResponse putBinary(String url, int version, BinaryPayload payload, String queryString,
int expectedStatus) throws Exception Map<String, String> params, int expectedStatus) throws Exception
{ {
if (queryString != null) if (queryString != null)
{ {
@@ -483,7 +482,7 @@ public abstract class AbstractBaseApiTest extends EnterpriseTestApi
} }
protected HttpResponse putBinary(String url, BinaryPayload payload, String queryString, Map<String, String> params, protected HttpResponse putBinary(String url, BinaryPayload payload, String queryString, Map<String, String> params,
int expectedStatus) throws Exception int expectedStatus) throws Exception
{ {
return putBinary(url, 1, payload, queryString, params, expectedStatus); return putBinary(url, 1, payload, queryString, params, expectedStatus);
} }
@@ -493,18 +492,19 @@ public abstract class AbstractBaseApiTest extends EnterpriseTestApi
return delete(url, entityId, null, expectedStatus); return delete(url, entityId, null, expectedStatus);
} }
protected HttpResponse delete(String url, String entityId, Map<String, String> params, int expectedStatus) throws Exception protected HttpResponse delete(String url, String entityId, Map<String, String> params, int expectedStatus)
throws Exception
{ {
HttpResponse response = publicApiClient.delete(getScope(), 1, url, entityId, null, null, params); HttpResponse response = publicApiClient.delete(getScope(), 1, url, entityId, null, null, params);
checkStatus(expectedStatus, response.getStatusCode()); checkStatus(expectedStatus, response.getStatusCode());
return response; return response;
} }
protected HttpResponse delete(String url, String entityId, Map<String, String> params, Map<String, String> headers, String apiName, int expectedStatus) throws Exception protected HttpResponse delete(String url, String entityId, Map<String, String> params, Map<String, String> headers,
String apiName, int expectedStatus) throws Exception
{ {
RequestBuilder requestBuilder = httpClient.new DeleteRequestBuilder() RequestBuilder requestBuilder = httpClient.new DeleteRequestBuilder().setRequestContext(publicApiClient.getRequestContext())
.setRequestContext(publicApiClient.getRequestContext())
.setScope(getScope()) .setScope(getScope())
.setApiName(apiName) .setApiName(apiName)
.setEntityCollectionName(url) .setEntityCollectionName(url)
@@ -525,7 +525,10 @@ public abstract class AbstractBaseApiTest extends EnterpriseTestApi
protected String createUser(String usernameIn, String password, TestNetwork network) protected String createUser(String usernameIn, String password, TestNetwork network)
{ {
return createUser(new PersonInfo(usernameIn, usernameIn, usernameIn, password, null, null, null, null, null, null, null), network); return createUser(
new PersonInfo(usernameIn, usernameIn, usernameIn, password, null, null, null, null, null, null,
null),
network);
} }
/** /**
@@ -534,17 +537,16 @@ public abstract class AbstractBaseApiTest extends EnterpriseTestApi
protected String createUser(final PersonInfo personInfo, final TestNetwork network) protected String createUser(final PersonInfo personInfo, final TestNetwork network)
{ {
final String tenantDomain = (network != null ? network.getId() : TenantService.DEFAULT_DOMAIN); final String tenantDomain = (network != null ? network.getId() : TenantService.DEFAULT_DOMAIN);
return AuthenticationUtil.runAs(new AuthenticationUtil.RunAsWork<String>() return AuthenticationUtil.runAs(new AuthenticationUtil.RunAsWork<String>() {
{
@Override @Override
public String doWork() throws Exception public String doWork() throws Exception
{ {
return TenantUtil.runAsTenant(new TenantUtil.TenantRunAsWork<String>() return TenantUtil.runAsTenant(new TenantUtil.TenantRunAsWork<String>() {
{
public String doWork() throws Exception public String doWork() throws Exception
{ {
String username = repoService.getPublicApiContext().createUserName(personInfo.getUsername(), tenantDomain); String username = repoService.getPublicApiContext()
.createUserName(personInfo.getUsername(), tenantDomain);
personInfo.setUsername(username); personInfo.setUsername(username);
RepoService.TestPerson person = repoService.createUser(personInfo, username, network); RepoService.TestPerson person = repoService.createUser(personInfo, username, network);
return person.getId(); return person.getId();
@@ -562,17 +564,17 @@ public abstract class AbstractBaseApiTest extends EnterpriseTestApi
{ {
final String tenantDomain = (network != null ? network.getId() : TenantService.DEFAULT_DOMAIN); final String tenantDomain = (network != null ? network.getId() : TenantService.DEFAULT_DOMAIN);
return AuthenticationUtil.runAs(new AuthenticationUtil.RunAsWork<String>() return AuthenticationUtil.runAs(new AuthenticationUtil.RunAsWork<String>() {
{
@Override @Override
public String doWork() throws Exception public String doWork() throws Exception
{ {
return TenantUtil.runAsTenant(new TenantUtil.TenantRunAsWork<String>() return TenantUtil.runAsTenant(new TenantUtil.TenantRunAsWork<String>() {
{
public String doWork() throws Exception public String doWork() throws Exception
{ {
String username = repoService.getPublicApiContext().createUserName(usernameIn, tenantDomain); String username = repoService.getPublicApiContext()
PersonInfo personInfo = new PersonInfo(username, username, username, password, null, null, null, null, null, null, null); .createUserName(usernameIn, tenantDomain);
PersonInfo personInfo = new PersonInfo(username, username, username, password, null, null, null, null, null,
null, null);
RepoService.TestPerson person = repoService.getOrCreateUser(personInfo, username, network); RepoService.TestPerson person = repoService.getOrCreateUser(personInfo, username, network);
return person.getId(); return person.getId();
} }
@@ -588,13 +590,11 @@ public abstract class AbstractBaseApiTest extends EnterpriseTestApi
{ {
final String tenantDomain = (network != null ? network.getId() : TenantService.DEFAULT_DOMAIN); final String tenantDomain = (network != null ? network.getId() : TenantService.DEFAULT_DOMAIN);
return AuthenticationUtil.runAs(new AuthenticationUtil.RunAsWork<String>() return AuthenticationUtil.runAs(new AuthenticationUtil.RunAsWork<String>() {
{
@Override @Override
public String doWork() throws Exception public String doWork() throws Exception
{ {
return TenantUtil.runAsTenant(new TenantUtil.TenantRunAsWork<String>() return TenantUtil.runAsTenant(new TenantUtil.TenantRunAsWork<String>() {
{
public String doWork() throws Exception public String doWork() throws Exception
{ {
repoService.deleteUser(username, network); repoService.deleteUser(username, network);
@@ -604,13 +604,15 @@ public abstract class AbstractBaseApiTest extends EnterpriseTestApi
} }
}, networkAdmin); }, networkAdmin);
} }
protected SiteMember addSiteMember(String siteId, String userId, final SiteRole siteRole) throws Exception protected SiteMember addSiteMember(String siteId, String userId, final SiteRole siteRole) throws Exception
{ {
SiteMember siteMember = new SiteMember(userId, siteRole.name()); SiteMember siteMember = new SiteMember(userId, siteRole.name());
HttpResponse response = publicApiClient.post(getScope(), "sites", siteId, "members", null, siteMember.toJSON().toString()); HttpResponse response = publicApiClient.post(getScope(), "sites", siteId, "members", null, siteMember.toJSON()
.toString());
checkStatus(201, response.getStatusCode()); checkStatus(201, response.getStatusCode());
return SiteMember.parseSiteMember(siteMember.getSiteId(), (JSONObject)response.getJsonResponse().get("entry")); return SiteMember.parseSiteMember(siteMember.getSiteId(), (JSONObject) response.getJsonResponse()
.get("entry"));
} }
protected Site createSite(String siteTitle, SiteVisibility siteVisibility) throws Exception protected Site createSite(String siteTitle, SiteVisibility siteVisibility) throws Exception
@@ -618,7 +620,8 @@ public abstract class AbstractBaseApiTest extends EnterpriseTestApi
return createSite(null, siteTitle, null, siteVisibility, 201); return createSite(null, siteTitle, null, siteVisibility, 201);
} }
protected Site createSite(String siteId, String siteTitle, String siteDescription, SiteVisibility siteVisibility, int expectedStatus) throws Exception protected Site createSite(String siteId, String siteTitle, String siteDescription, SiteVisibility siteVisibility,
int expectedStatus) throws Exception
{ {
Site site = new Site(); Site site = new Site();
site.setId(siteId); site.setId(siteId);
@@ -634,7 +637,7 @@ public abstract class AbstractBaseApiTest extends EnterpriseTestApi
protected HttpResponse deleteSite(String siteId, boolean permanent, int expectedStatus) throws Exception protected HttpResponse deleteSite(String siteId, boolean permanent, int expectedStatus) throws Exception
{ {
Map params = null; Map params = null;
if (permanent == true) if (permanent)
{ {
params = Collections.singletonMap("permanent", "true"); params = Collections.singletonMap("permanent", "true");
} }
@@ -656,14 +659,14 @@ public abstract class AbstractBaseApiTest extends EnterpriseTestApi
protected String getSiteContainerNodeId(String siteId, String containerNameId) throws Exception protected String getSiteContainerNodeId(String siteId, String containerNameId) throws Exception
{ {
Map<String, String> params = Collections.singletonMap(Nodes.PARAM_RELATIVE_PATH, "/Sites/" + siteId + "/" + containerNameId); Map<String, String> params = Collections.singletonMap(Nodes.PARAM_RELATIVE_PATH, "/Sites/" + siteId + "/" + containerNameId);
HttpResponse response = publicApiClient.get(NodesEntityResource.class, Nodes.PATH_ROOT, null, params); HttpResponse response = publicApiClient.get(NodesEntityResource.class, Nodes.PATH_ROOT, null, params);
checkStatus(200, response.getStatusCode()); checkStatus(200, response.getStatusCode());
Node node = RestApiUtil.parseRestApiEntry(response.getJsonResponse(), Node.class); Node node = RestApiUtil.parseRestApiEntry(response.getJsonResponse(), Node.class);
return node.getId(); return node.getId();
} }
protected void checkStatus(int expectedStatus, int actualStatus) protected void checkStatus(int expectedStatus, int actualStatus)
{ {
if (expectedStatus > 0 && expectedStatus != actualStatus) if (expectedStatus > 0 && expectedStatus != actualStatus)
@@ -673,9 +676,8 @@ public abstract class AbstractBaseApiTest extends EnterpriseTestApi
} }
/** /**
* @deprecated
*
* @param runAsUser * @param runAsUser
* @deprecated
*/ */
protected void setRequestContext(String runAsUser) protected void setRequestContext(String runAsUser)
{ {
@@ -703,9 +705,9 @@ public abstract class AbstractBaseApiTest extends EnterpriseTestApi
} }
else if ((runAsUser != null) && runAsUser.equals(DEFAULT_ADMIN)) else if ((runAsUser != null) && runAsUser.equals(DEFAULT_ADMIN))
{ {
runAsUser = runAsUser+"@"+runAsNetwork; runAsUser = runAsUser + "@" + runAsNetwork;
} }
publicApiClient.setRequestContext(new RequestContext(runAsNetwork, runAsUser, password)); publicApiClient.setRequestContext(new RequestContext(runAsNetwork, runAsUser, password));
} }
@@ -737,7 +739,7 @@ public abstract class AbstractBaseApiTest extends EnterpriseTestApi
{ {
return createFolder(parentId, folderName, null); return createFolder(parentId, folderName, null);
} }
protected Folder createFolder(String parentId, String folderName, Map<String, Object> props) throws Exception protected Folder createFolder(String parentId, String folderName, Map<String, Object> props) throws Exception
{ {
return createNode(parentId, folderName, TYPE_CM_FOLDER, props, Folder.class); return createNode(parentId, folderName, TYPE_CM_FOLDER, props, Folder.class);
@@ -751,17 +753,18 @@ public abstract class AbstractBaseApiTest extends EnterpriseTestApi
protected String createUniqueContent(String folderId) throws Exception protected String createUniqueContent(String folderId) throws Exception
{ {
Document documentResp = createTextFile(folderId, "file-" + System.currentTimeMillis(), Document documentResp = createTextFile(folderId, "file-" + System.currentTimeMillis(),
"some text-" + System.currentTimeMillis(), "UTF-8", null); "some text-" + System.currentTimeMillis(), "UTF-8", null);
return documentResp.getId(); return documentResp.getId();
} }
protected Node createNode(String parentId, String nodeName, String nodeType, Map<String, Object> props) throws Exception protected Node createNode(String parentId, String nodeName, String nodeType, Map<String, Object> props)
throws Exception
{ {
return createNode(parentId, nodeName, nodeType, props, Node.class); return createNode(parentId, nodeName, nodeType, props, Node.class);
} }
protected <T> T createNode(String parentId, String nodeName, String nodeType, Map<String, Object> props, Class<T> returnType) protected <T> T createNode(String parentId, String nodeName, String nodeType, Map<String, Object> props,
throws Exception Class<T> returnType) throws Exception
{ {
Node n = new Node(); Node n = new Node();
n.setName(nodeName); n.setName(nodeName);
@@ -773,7 +776,7 @@ public abstract class AbstractBaseApiTest extends EnterpriseTestApi
return RestApiUtil.parseRestApiEntry(response.getJsonResponse(), returnType); return RestApiUtil.parseRestApiEntry(response.getJsonResponse(), returnType);
} }
protected void deleteNode(String nodeId) throws Exception protected void deleteNode(String nodeId) throws Exception
{ {
deleteNode(nodeId, 204); deleteNode(nodeId, 204);
@@ -787,25 +790,27 @@ public abstract class AbstractBaseApiTest extends EnterpriseTestApi
protected void deleteNode(String nodeId, boolean permanent, int expectedStatus) throws Exception protected void deleteNode(String nodeId, boolean permanent, int expectedStatus) throws Exception
{ {
Map params = null; Map params = null;
if (permanent == true) if (permanent)
{ {
params = Collections.singletonMap("permanent", "true"); params = Collections.singletonMap("permanent", "true");
} }
delete(URL_NODES, nodeId, params, expectedStatus); delete(URL_NODES, nodeId, params, expectedStatus);
} }
protected Document createTextFile(String parentId, String fileName, String textContent) throws IOException, Exception protected Document createTextFile(String parentId, String fileName, String textContent) throws Exception
{ {
return createTextFile(parentId, fileName, textContent, "UTF-8", null); return createTextFile(parentId, fileName, textContent, "UTF-8", null);
} }
protected Document createTextFile(String parentId, String fileName, String textContent, String encoding, Map<String, String> props) throws IOException, Exception protected Document createTextFile(String parentId, String fileName, String textContent, String encoding,
Map<String, String> props) throws Exception
{ {
return createTextFile(parentId, fileName, textContent, encoding, props, 201); return createTextFile(parentId, fileName, textContent, encoding, props, 201);
} }
protected Document createTextFile(String parentId, String fileName, String textContent, String encoding, Map<String, String> props, int expectedStatus) throws IOException, Exception protected Document createTextFile(String parentId, String fileName, String textContent, String encoding,
Map<String, String> props, int expectedStatus) throws Exception
{ {
if (props == null) if (props == null)
{ {
@@ -821,9 +826,11 @@ public abstract class AbstractBaseApiTest extends EnterpriseTestApi
.setProperties(props) .setProperties(props)
.build(); .build();
HttpResponse response = post(getNodeChildrenUrl(parentId), reqBody.getBody(), null, reqBody.getContentType(), expectedStatus); HttpResponse response = post(getNodeChildrenUrl(parentId), reqBody.getBody(), null, reqBody.getContentType(),
expectedStatus);
if (response.getJsonResponse().get("error") != null) if (response.getJsonResponse()
.get("error") != null)
{ {
return null; return null;
} }
@@ -835,8 +842,9 @@ public abstract class AbstractBaseApiTest extends EnterpriseTestApi
{ {
return createEmptyTextFile(parentFolderId, docName, null, 201); return createEmptyTextFile(parentFolderId, docName, null, 201);
} }
protected Document createEmptyTextFile(String parentFolderId, String docName, Map<String, String> params, int expectedStatus) throws Exception protected Document createEmptyTextFile(String parentFolderId, String docName, Map<String, String> params,
int expectedStatus) throws Exception
{ {
Document d1 = new Document(); Document d1 = new Document();
d1.setName(docName); d1.setName(docName);
@@ -846,7 +854,8 @@ public abstract class AbstractBaseApiTest extends EnterpriseTestApi
d1.setContent(ci); d1.setContent(ci);
// create empty file // create empty file
HttpResponse response = post(getNodeChildrenUrl(parentFolderId), toJsonAsStringNonNull(d1), params, null, "alfresco", expectedStatus); HttpResponse response = post(getNodeChildrenUrl(parentFolderId), toJsonAsStringNonNull(d1), params, null, "alfresco",
expectedStatus);
if (expectedStatus != 201) if (expectedStatus != 201)
{ {
return null; return null;
@@ -859,7 +868,8 @@ public abstract class AbstractBaseApiTest extends EnterpriseTestApi
return updateTextFile(contentId, textContent, params, 200); return updateTextFile(contentId, textContent, params, 200);
} }
protected Document updateTextFile(String contentId, String textContent, Map<String, String> params, int expectedStatus) throws Exception protected Document updateTextFile(String contentId, String textContent, Map<String, String> params,
int expectedStatus) throws Exception
{ {
ByteArrayInputStream inputStream = new ByteArrayInputStream(textContent.getBytes()); ByteArrayInputStream inputStream = new ByteArrayInputStream(textContent.getBytes());
File txtFile = TempFileProvider.createTempFile(inputStream, getClass().getSimpleName(), ".txt"); File txtFile = TempFileProvider.createTempFile(inputStream, getClass().getSimpleName(), ".txt");
@@ -875,7 +885,8 @@ public abstract class AbstractBaseApiTest extends EnterpriseTestApi
protected File getResourceFile(String fileName) throws FileNotFoundException protected File getResourceFile(String fileName) throws FileNotFoundException
{ {
URL url = NodeApiTest.class.getClassLoader().getResource(RESOURCE_PREFIX + fileName); URL url = NodeApiTest.class.getClassLoader()
.getResource(RESOURCE_PREFIX + fileName);
if (url == null) if (url == null)
{ {
fail("Cannot get the resource: " + fileName); fail("Cannot get the resource: " + fileName);
@@ -908,14 +919,15 @@ public abstract class AbstractBaseApiTest extends EnterpriseTestApi
* @return * @return
* @throws Exception * @throws Exception
*/ */
protected String updateFileVersions(String userId, String contentNodeId, int cnt, protected String updateFileVersions(String userId, String contentNodeId, int cnt, String textContentPrefix,
String textContentPrefix, int verCnt, int verCnt, Boolean majorVersion, String currentVersionLabel) throws Exception
Boolean majorVersion, String currentVersionLabel) throws Exception
{ {
String[] parts = currentVersionLabel.split("\\."); String[] parts = currentVersionLabel.split("\\.");
int majorVer = Integer.valueOf(parts[0]).intValue(); int majorVer = Integer.valueOf(parts[0])
int minorVer = Integer.valueOf(parts[1]).intValue(); .intValue();
int minorVer = Integer.valueOf(parts[1])
.intValue();
Map<String, String> params = new HashMap<>(); Map<String, String> params = new HashMap<>();
params.put(Nodes.PARAM_OVERWRITE, "true"); params.put(Nodes.PARAM_OVERWRITE, "true");
@@ -929,7 +941,6 @@ public abstract class AbstractBaseApiTest extends EnterpriseTestApi
majorVersion = false; majorVersion = false;
} }
if (majorVersion) if (majorVersion)
{ {
minorVer = 0; minorVer = 0;
@@ -962,30 +973,33 @@ public abstract class AbstractBaseApiTest extends EnterpriseTestApi
HttpResponse response = putBinary(getNodeContentUrl(contentNodeId), payload, null, params, 200); HttpResponse response = putBinary(getNodeContentUrl(contentNodeId), payload, null, params, 200);
Node nodeResp = RestApiUtil.parseRestApiEntry(response.getJsonResponse(), Node.class); Node nodeResp = RestApiUtil.parseRestApiEntry(response.getJsonResponse(), Node.class);
assertTrue(nodeResp.getAspectNames().contains("cm:versionable")); assertTrue(nodeResp.getAspectNames()
.contains("cm:versionable"));
assertNotNull(nodeResp.getProperties()); assertNotNull(nodeResp.getProperties());
assertEquals(currentVersionLabel, nodeResp.getProperties().get("cm:versionLabel")); assertEquals(currentVersionLabel, nodeResp.getProperties()
assertEquals((majorVersion ? "MAJOR" : "MINOR"), nodeResp.getProperties().get("cm:versionType")); .get("cm:versionLabel"));
assertEquals((majorVersion ? "MAJOR" : "MINOR"), nodeResp.getProperties()
.get("cm:versionType"));
// double-check - get version node info // double-check - get version node info
response = getSingle(getNodeVersionsUrl(contentNodeId), currentVersionLabel, null, 200); response = getSingle(getNodeVersionsUrl(contentNodeId), currentVersionLabel, null, 200);
nodeResp = RestApiUtil.parseRestApiEntry(response.getJsonResponse(), Node.class); nodeResp = RestApiUtil.parseRestApiEntry(response.getJsonResponse(), Node.class);
assertEquals(currentVersionLabel, nodeResp.getProperties().get("cm:versionLabel")); assertEquals(currentVersionLabel, nodeResp.getProperties()
assertEquals((majorVersion ? "MAJOR" : "MINOR"), nodeResp.getProperties().get("cm:versionType")); .get("cm:versionLabel"));
assertEquals((majorVersion ? "MAJOR" : "MINOR"), nodeResp.getProperties()
.get("cm:versionType"));
} }
return currentVersionLabel; return currentVersionLabel;
} }
protected static final long PAUSE_TIME = 5000; //millisecond
protected static final int MAX_RETRY = 20;
protected Rendition waitAndGetRendition(String sourceNodeId, String versionId, String renditionId) throws Exception protected Rendition waitAndGetRendition(String sourceNodeId, String versionId, String renditionId) throws Exception
{ {
return waitAndGetRendition(sourceNodeId, versionId, renditionId, MAX_RETRY, PAUSE_TIME); return waitAndGetRendition(sourceNodeId, versionId, renditionId, MAX_RETRY, PAUSE_TIME);
} }
protected Rendition waitAndGetRendition(String sourceNodeId, String versionId, String renditionId, int maxRetry, long pauseTime) throws Exception protected Rendition waitAndGetRendition(String sourceNodeId, String versionId, String renditionId, int maxRetry,
long pauseTime) throws Exception
{ {
int retryCount = 0; int retryCount = 0;
while (retryCount < maxRetry) while (retryCount < maxRetry)
@@ -993,7 +1007,7 @@ public abstract class AbstractBaseApiTest extends EnterpriseTestApi
try try
{ {
HttpResponse response; HttpResponse response;
if ((versionId != null) && (! versionId.isEmpty())) if ((versionId != null) && (!versionId.isEmpty()))
{ {
response = getSingle(getNodeVersionRenditionsUrl(sourceNodeId, versionId), renditionId, 200); response = getSingle(getNodeVersionRenditionsUrl(sourceNodeId, versionId), renditionId, 200);
} }
@@ -1012,7 +1026,7 @@ public abstract class AbstractBaseApiTest extends EnterpriseTestApi
// wait for 'PAUSE_TIME' and try again. // wait for 'PAUSE_TIME' and try again.
retryCount++; retryCount++;
System.out.println("waitAndGetRendition: "+retryCount); System.out.println("waitAndGetRendition: " + retryCount);
Thread.sleep(pauseTime); Thread.sleep(pauseTime);
} }
} }
@@ -1025,7 +1039,8 @@ public abstract class AbstractBaseApiTest extends EnterpriseTestApi
return createAndGetRendition(sourceNodeId, null, renditionId); return createAndGetRendition(sourceNodeId, null, renditionId);
} }
protected Rendition createAndGetRendition(String sourceNodeId, String versionId, String renditionId) throws Exception protected Rendition createAndGetRendition(String sourceNodeId, String versionId, String renditionId)
throws Exception
{ {
Rendition renditionRequest = new Rendition(); Rendition renditionRequest = new Rendition();
renditionRequest.setId(renditionId); renditionRequest.setId(renditionId);
@@ -1036,9 +1051,10 @@ public abstract class AbstractBaseApiTest extends EnterpriseTestApi
try try
{ {
HttpResponse response; HttpResponse response;
if ((versionId != null) && (! versionId.isEmpty())) if ((versionId != null) && (!versionId.isEmpty()))
{ {
response = post(getNodeVersionRenditionsUrl(sourceNodeId, versionId), toJsonAsString(renditionRequest), 202); response = post(getNodeVersionRenditionsUrl(sourceNodeId, versionId),
toJsonAsString(renditionRequest), 202);
} }
else else
{ {
@@ -1053,7 +1069,7 @@ public abstract class AbstractBaseApiTest extends EnterpriseTestApi
// wait for 'PAUSE_TIME' and try again. // wait for 'PAUSE_TIME' and try again.
retryCount++; retryCount++;
System.out.println("waitAndGetRendition: "+retryCount); System.out.println("waitAndGetRendition: " + retryCount);
Thread.sleep(PAUSE_TIME); Thread.sleep(PAUSE_TIME);
} }
} }
@@ -1073,7 +1089,8 @@ public abstract class AbstractBaseApiTest extends EnterpriseTestApi
protected String getNodeVersionRenditionIdUrl(String nodeId, String versionId, String renditionID) protected String getNodeVersionRenditionIdUrl(String nodeId, String versionId, String renditionID)
{ {
return URL_NODES + "/" + nodeId + "/" + URL_VERSIONS + "/" + versionId + "/" + URL_RENDITIONS + "/" + renditionID; return URL_NODES + "/" + nodeId + "/" + URL_VERSIONS + "/" + versionId + "/" + URL_RENDITIONS + "/"
+ renditionID;
} }
protected String getNodeVersionsUrl(String nodeId) protected String getNodeVersionsUrl(String nodeId)
@@ -1132,4 +1149,3 @@ public abstract class AbstractBaseApiTest extends EnterpriseTestApi
return URL_NODES + "/" + nodeId + "/" + URL_CALCULATEFOLDERSIZE + "/" + jobId; return URL_NODES + "/" + nodeId + "/" + URL_CALCULATEFOLDERSIZE + "/" + jobId;
} }
} }