mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-14 17:58:59 +00:00
128662 jvonka: V1 REST API test improvements - allow tests to be run individually (as well as within a suite) REPO-896 git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/BRANCHES/DEV/5.2.N/root@129183 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
882 lines
32 KiB
Java
882 lines
32 KiB
Java
/*
|
|
* #%L
|
|
* Alfresco Remote API
|
|
* %%
|
|
* Copyright (C) 2005 - 2016 Alfresco Software Limited
|
|
* %%
|
|
* This file is part of the Alfresco software.
|
|
* If the software was purchased under a paid Alfresco license, the terms of
|
|
* the paid license agreement will prevail. Otherwise, the software is
|
|
* provided under the following open source license terms:
|
|
*
|
|
* 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
|
|
* the Free Software Foundation, either version 3 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* Alfresco is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU Lesser General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public License
|
|
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
|
* #L%
|
|
*/
|
|
package org.alfresco.rest.api.tests;
|
|
|
|
import static org.junit.Assert.assertEquals;
|
|
import static org.junit.Assert.assertTrue;
|
|
import static org.junit.Assert.fail;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
|
|
import org.alfresco.repo.security.authentication.AuthenticationUtil;
|
|
import org.alfresco.repo.site.SiteModel;
|
|
import org.alfresco.repo.tenant.TenantService;
|
|
import org.alfresco.repo.tenant.TenantUtil;
|
|
import org.alfresco.repo.tenant.TenantUtil.TenantRunAsWork;
|
|
import org.alfresco.repo.transaction.RetryingTransactionHelper;
|
|
import org.alfresco.rest.api.Activities.ActivityWho;
|
|
import org.alfresco.rest.api.tests.RepoService.SiteInformation;
|
|
import org.alfresco.rest.api.tests.RepoService.TestNetwork;
|
|
import org.alfresco.rest.api.tests.RepoService.TestPerson;
|
|
import org.alfresco.rest.api.tests.RepoService.TestSite;
|
|
import org.alfresco.rest.api.tests.client.PublicApiClient.ListResponse;
|
|
import org.alfresco.rest.api.tests.client.PublicApiClient.Paging;
|
|
import org.alfresco.rest.api.tests.client.PublicApiClient.People;
|
|
import org.alfresco.rest.api.tests.client.PublicApiException;
|
|
import org.alfresco.rest.api.tests.client.RequestContext;
|
|
import org.alfresco.rest.api.tests.client.data.Activity;
|
|
import org.alfresco.rest.api.tests.client.data.SiteRole;
|
|
import org.alfresco.service.cmr.site.SiteService;
|
|
import org.alfresco.service.cmr.site.SiteVisibility;
|
|
import org.alfresco.util.GUID;
|
|
import org.apache.commons.httpclient.HttpStatus;
|
|
import org.json.simple.JSONObject;
|
|
import org.junit.Before;
|
|
import org.junit.Test;
|
|
|
|
public class TestActivities extends EnterpriseTestApi
|
|
{
|
|
private SiteService siteService;
|
|
|
|
private TestNetwork network1;
|
|
private TestNetwork network2;
|
|
private TestNetwork defaultNetwork;
|
|
|
|
private TestPerson person1; // network1
|
|
private TestPerson person2; // network1
|
|
private TestPerson person3; // network2
|
|
private TestPerson person4; // defaultNetwork
|
|
private TestPerson person5; // defaultNetwork
|
|
|
|
private TestSite testSite; // network1
|
|
private TestSite testSite1; // network1
|
|
private TestSite testSite2; // network2
|
|
private TestSite testSite3; // defaultNetwork
|
|
|
|
@Before
|
|
public void setup() throws Exception
|
|
{
|
|
// note: we don't call super.setup() since we create our own test data here !
|
|
|
|
this.network1 = repoService.createNetworkWithAlias("activitiesNetwork1", true);
|
|
this.network2 = repoService.createNetworkWithAlias("activitiesNetwork2", true);
|
|
this.defaultNetwork = repoService.createNetwork(TenantService.DEFAULT_DOMAIN, true);
|
|
siteService = (SiteService) applicationContext.getBean("SiteService");
|
|
|
|
try
|
|
{
|
|
AuthenticationUtil.pushAuthentication();
|
|
AuthenticationUtil.setFullyAuthenticatedUser(AuthenticationUtil.getAdminUserName());
|
|
|
|
network1.create();
|
|
network2.create();
|
|
defaultNetwork.create();
|
|
}
|
|
finally
|
|
{
|
|
AuthenticationUtil.popAuthentication();
|
|
}
|
|
|
|
// Create some users and sites
|
|
final List<TestPerson> people = new ArrayList<TestPerson>(5);
|
|
|
|
TenantUtil.runAsSystemTenant(new TenantRunAsWork<Void>()
|
|
{
|
|
@Override
|
|
public Void doWork() throws Exception
|
|
{
|
|
TestPerson person = network1.createUser();
|
|
people.add(person);
|
|
person = network1.createUser();
|
|
people.add(person);
|
|
|
|
return null;
|
|
}
|
|
}, network1.getId());
|
|
|
|
TenantUtil.runAsSystemTenant(new TenantRunAsWork<Void>()
|
|
{
|
|
@Override
|
|
public Void doWork() throws Exception
|
|
{
|
|
TestPerson person = network2.createUser();
|
|
people.add(person);
|
|
|
|
return null;
|
|
}
|
|
}, network2.getId());
|
|
|
|
TenantUtil.runAsSystemTenant(new TenantRunAsWork<Void>()
|
|
{
|
|
@Override
|
|
public Void doWork() throws Exception
|
|
{
|
|
TestPerson person = defaultNetwork.createUser();
|
|
people.add(person);
|
|
person = defaultNetwork.createUser();
|
|
people.add(person);
|
|
|
|
return null;
|
|
}
|
|
}, defaultNetwork.getId());
|
|
|
|
this.person1 = people.get(0);
|
|
this.person2 = people.get(1);
|
|
this.person3 = people.get(2);
|
|
this.person4 = people.get(3);
|
|
this.person5 = people.get(4);
|
|
|
|
this.testSite = transactionHelper.doInTransaction(new RetryingTransactionHelper.RetryingTransactionCallback<TestSite>()
|
|
{
|
|
@SuppressWarnings("synthetic-access")
|
|
public TestSite execute() throws Throwable
|
|
{
|
|
return TenantUtil.runAsUserTenant(new TenantRunAsWork<TestSite>()
|
|
{
|
|
public TestSite doWork() throws Exception
|
|
{
|
|
SiteInformation siteInfo = new SiteInformation(GUID.generate(), "", "", SiteVisibility.PUBLIC);
|
|
TestSite site = network1.createSite(siteInfo);
|
|
site.inviteToSite(person2.getId(), SiteRole.SiteCollaborator);
|
|
|
|
return site;
|
|
}
|
|
}, person1.getId(), network1.getId());
|
|
}
|
|
}, false, true);
|
|
|
|
this.testSite1 = transactionHelper.doInTransaction(new RetryingTransactionHelper.RetryingTransactionCallback<TestSite>()
|
|
{
|
|
@SuppressWarnings("synthetic-access")
|
|
public TestSite execute() throws Throwable
|
|
{
|
|
return TenantUtil.runAsUserTenant(new TenantRunAsWork<TestSite>()
|
|
{
|
|
public TestSite doWork() throws Exception
|
|
{
|
|
SiteInformation siteInfo = new SiteInformation(GUID.generate(), "", "", SiteVisibility.PUBLIC);
|
|
return network1.createSite(siteInfo);
|
|
}
|
|
}, person1.getId(), network1.getId());
|
|
}
|
|
}, false, true);
|
|
|
|
// create some activities against those sites
|
|
TenantUtil.runAsUserTenant(new TenantRunAsWork<Void>()
|
|
{
|
|
@SuppressWarnings("unchecked")
|
|
@Override
|
|
public Void doWork() throws Exception
|
|
{
|
|
// ensure at least 3 activities
|
|
JSONObject activityData = new JSONObject();
|
|
activityData.put("title", GUID.generate());
|
|
activityData.put("nodeRef", testSite.getContainerNodeRef("documentLibrary").toString());
|
|
repoService.postActivity("org.alfresco.documentlibrary.file-added", testSite.getSiteId(), activityData);
|
|
|
|
activityData = new JSONObject();
|
|
activityData.put("title", GUID.generate());
|
|
activityData.put("nodeRef", testSite.getContainerNodeRef("documentLibrary").toString());
|
|
repoService.postActivity("org.alfresco.documentlibrary.file-added", testSite.getSiteId(), activityData);
|
|
|
|
activityData = new JSONObject();
|
|
activityData.put("title", GUID.generate());
|
|
activityData.put("nodeRef", testSite.getContainerNodeRef("documentLibrary").toString());
|
|
repoService.postActivity("org.alfresco.documentlibrary.file-added", testSite.getSiteId(), activityData);
|
|
|
|
activityData = new JSONObject();
|
|
activityData.put("title", GUID.generate());
|
|
activityData.put("nodeRef", testSite1.getContainerNodeRef("documentLibrary").toString());
|
|
repoService.postActivity("org.alfresco.documentlibrary.file-added", testSite1.getSiteId(), activityData);
|
|
|
|
return null;
|
|
}
|
|
}, person1.getId(), network1.getId());
|
|
|
|
TenantUtil.runAsUserTenant(new TenantRunAsWork<Void>()
|
|
{
|
|
@SuppressWarnings("unchecked")
|
|
@Override
|
|
public Void doWork() throws Exception
|
|
{
|
|
// ensure at least 3 activities
|
|
JSONObject activityData = new JSONObject();
|
|
activityData.put("title", GUID.generate());
|
|
activityData.put("nodeRef", testSite.getContainerNodeRef("documentLibrary").toString());
|
|
repoService.postActivity("org.alfresco.documentlibrary.file-added", testSite.getSiteId(), activityData);
|
|
|
|
activityData = new JSONObject();
|
|
activityData.put("title", GUID.generate());
|
|
activityData.put("nodeRef", testSite.getContainerNodeRef("documentLibrary").toString());
|
|
repoService.postActivity("org.alfresco.documentlibrary.file-added", testSite.getSiteId(), activityData);
|
|
|
|
activityData = new JSONObject();
|
|
activityData.put("title", GUID.generate());
|
|
activityData.put("nodeRef", testSite.getContainerNodeRef("documentLibrary").toString());
|
|
repoService.postActivity("org.alfresco.documentlibrary.file-added", testSite.getSiteId(), activityData);
|
|
|
|
return null;
|
|
}
|
|
}, person2.getId(), network1.getId());
|
|
|
|
// user generates activities in 2 networks
|
|
this.testSite2 = transactionHelper.doInTransaction(new RetryingTransactionHelper.RetryingTransactionCallback<TestSite>()
|
|
{
|
|
@SuppressWarnings("synthetic-access")
|
|
public TestSite execute() throws Throwable
|
|
{
|
|
return TenantUtil.runAsUserTenant(new TenantRunAsWork<TestSite>()
|
|
{
|
|
public TestSite doWork() throws Exception
|
|
{
|
|
SiteInformation siteInfo = new SiteInformation(GUID.generate(), "", "", SiteVisibility.PUBLIC);
|
|
return network2.createSite(siteInfo);
|
|
}
|
|
}, person3.getId(), network2.getId());
|
|
}
|
|
}, false, true);
|
|
|
|
TenantUtil.runAsUserTenant(new TenantRunAsWork<Void>()
|
|
{
|
|
@SuppressWarnings("unchecked")
|
|
@Override
|
|
public Void doWork() throws Exception
|
|
{
|
|
// ensure at least 3 activities
|
|
JSONObject activityData = new JSONObject();
|
|
activityData.put("title", GUID.generate());
|
|
activityData.put("nodeRef", testSite.getContainerNodeRef("documentLibrary").toString());
|
|
repoService.postActivity("org.alfresco.documentlibrary.file-added", testSite.getSiteId(), activityData);
|
|
|
|
activityData = new JSONObject();
|
|
activityData.put("title", GUID.generate());
|
|
activityData.put("nodeRef", testSite.getContainerNodeRef("documentLibrary").toString());
|
|
repoService.postActivity("org.alfresco.documentlibrary.file-added", testSite.getSiteId(), activityData);
|
|
|
|
activityData = new JSONObject();
|
|
activityData.put("title", GUID.generate());
|
|
activityData.put("nodeRef", testSite.getContainerNodeRef("documentLibrary").toString());
|
|
repoService.postActivity("org.alfresco.documentlibrary.file-added", testSite.getSiteId(), activityData);
|
|
|
|
return null;
|
|
}
|
|
}, person3.getId(), network1.getId());
|
|
|
|
TenantUtil.runAsUserTenant(new TenantRunAsWork<Void>()
|
|
{
|
|
@SuppressWarnings("unchecked")
|
|
@Override
|
|
public Void doWork() throws Exception
|
|
{
|
|
// ensure at least 3 activities
|
|
JSONObject activityData = new JSONObject();
|
|
activityData.put("title", GUID.generate());
|
|
activityData.put("nodeRef", testSite2.getContainerNodeRef("documentLibrary").toString());
|
|
repoService.postActivity("org.alfresco.documentlibrary.file-added", testSite2.getSiteId(), activityData);
|
|
|
|
activityData = new JSONObject();
|
|
activityData.put("title", GUID.generate());
|
|
activityData.put("nodeRef", testSite2.getContainerNodeRef("documentLibrary").toString());
|
|
repoService.postActivity("org.alfresco.documentlibrary.file-added", testSite2.getSiteId(), activityData);
|
|
|
|
activityData = new JSONObject();
|
|
activityData.put("title", GUID.generate());
|
|
activityData.put("nodeRef", testSite2.getContainerNodeRef("documentLibrary").toString());
|
|
repoService.postActivity("org.alfresco.documentlibrary.file-added", testSite2.getSiteId(), activityData);
|
|
|
|
return null;
|
|
}
|
|
}, person3.getId(), network2.getId());
|
|
|
|
this.testSite3 = transactionHelper.doInTransaction(new RetryingTransactionHelper.RetryingTransactionCallback<TestSite>()
|
|
{
|
|
@SuppressWarnings("synthetic-access")
|
|
public TestSite execute() throws Throwable
|
|
{
|
|
return TenantUtil.runAsUserTenant(new TenantRunAsWork<TestSite>()
|
|
{
|
|
public TestSite doWork() throws Exception
|
|
{
|
|
SiteInformation siteInfo = new SiteInformation(GUID.generate(), "", "", SiteVisibility.PUBLIC);
|
|
return defaultNetwork.createSite(siteInfo);
|
|
}
|
|
}, person4.getId(), defaultNetwork.getId());
|
|
}
|
|
}, false, true);
|
|
|
|
|
|
TenantUtil.runAsUserTenant(new TenantRunAsWork<Void>()
|
|
{
|
|
@SuppressWarnings("unchecked")
|
|
@Override
|
|
public Void doWork() throws Exception
|
|
{
|
|
siteService.setMembership(testSite3.getSiteId(), person5.getId(), SiteModel.SITE_CONSUMER);
|
|
|
|
return null;
|
|
}
|
|
}, person4.getId(), defaultNetwork.getId());
|
|
|
|
repoService.generateFeed();
|
|
}
|
|
|
|
@Test
|
|
public void testPersonActivities() throws Exception
|
|
{
|
|
People peopleProxy = publicApiClient.people();
|
|
|
|
//Test with default tenant domain. see ALF-20448
|
|
{
|
|
List<Activity> expectedActivities = TenantUtil.runAsUserTenant(new TenantRunAsWork<List<Activity>>()
|
|
{
|
|
@Override
|
|
public List<Activity> doWork() throws Exception
|
|
{
|
|
List<Activity> activities = repoService.getActivities(person5.getId(), null, false, true);
|
|
return activities;
|
|
}
|
|
}, person5.getId(), defaultNetwork.getId());
|
|
|
|
for(Activity activity: expectedActivities)
|
|
{
|
|
if(activity.getSiteId() == null)
|
|
{
|
|
fail("SiteId should present in user-joined activity.");
|
|
}
|
|
}
|
|
|
|
{
|
|
int skipCount = 0;
|
|
int maxItems = expectedActivities.size();
|
|
Paging paging = getPaging(skipCount, maxItems, expectedActivities.size(), null);
|
|
|
|
Map<String, String> params = createParams(paging, null);
|
|
params.put("who", String.valueOf(ActivityWho.me));
|
|
publicApiClient.setRequestContext(new RequestContext(defaultNetwork.getId(), person5.getId()));
|
|
ListResponse<Activity> response = peopleProxy.getActivities(person5.getId(), params);
|
|
checkList(expectedActivities.subList(skipCount, skipCount + paging.getExpectedPaging().getCount()), paging.getExpectedPaging(), response);
|
|
}
|
|
|
|
}
|
|
|
|
// Test Case cloud-2204
|
|
// Test case cloud-1500
|
|
// Test Case cloud-2216
|
|
// paging
|
|
|
|
// Test Case cloud-1500
|
|
{
|
|
List<Activity> expectedActivities = TenantUtil.runAsUserTenant(new TenantRunAsWork<List<Activity>>()
|
|
{
|
|
@Override
|
|
public List<Activity> doWork() throws Exception
|
|
{
|
|
List<Activity> activities = repoService.getActivities(person1.getId(), null, false, true);
|
|
return activities;
|
|
}
|
|
}, person1.getId(), network1.getId());
|
|
|
|
{
|
|
int skipCount = 0;
|
|
int maxItems = 2;
|
|
Paging paging = getPaging(skipCount, maxItems, expectedActivities.size(), null);
|
|
|
|
Map<String, String> params = createParams(paging, null);
|
|
params.put("who", String.valueOf(ActivityWho.me));
|
|
publicApiClient.setRequestContext(new RequestContext(network1.getId(), person1.getId()));
|
|
ListResponse<Activity> response = peopleProxy.getActivities(person1.getId(), params);
|
|
checkList(expectedActivities.subList(skipCount, skipCount + paging.getExpectedPaging().getCount()), paging.getExpectedPaging(), response);
|
|
}
|
|
|
|
{
|
|
int skipCount = 2;
|
|
int maxItems = expectedActivities.size() - 2;
|
|
assertTrue(maxItems > 0);
|
|
Paging paging = getPaging(skipCount, maxItems, expectedActivities.size(), null);
|
|
|
|
Map<String, String> params = createParams(paging, null);
|
|
params.put("who", String.valueOf(ActivityWho.me));
|
|
publicApiClient.setRequestContext(new RequestContext(network1.getId(), person1.getId()));
|
|
ListResponse<Activity> response = peopleProxy.getActivities(person1.getId(), params);
|
|
checkList(expectedActivities.subList(skipCount, skipCount + paging.getExpectedPaging().getCount()), paging.getExpectedPaging(), response);
|
|
}
|
|
|
|
// "-me-" user
|
|
{
|
|
int skipCount = 0;
|
|
int maxItems = 2;
|
|
Paging paging = getPaging(skipCount, maxItems, expectedActivities.size(), null);
|
|
|
|
Map<String, String> params = createParams(paging, null);
|
|
params.put("who", String.valueOf(ActivityWho.me));
|
|
publicApiClient.setRequestContext(new RequestContext(network1.getId(), person1.getId()));
|
|
ListResponse<Activity> response = peopleProxy.getActivities(org.alfresco.rest.api.People.DEFAULT_USER, params);
|
|
checkList(expectedActivities.subList(skipCount, skipCount + paging.getExpectedPaging().getCount()), paging.getExpectedPaging(), response);
|
|
}
|
|
}
|
|
|
|
// unknown user - 404
|
|
try
|
|
{
|
|
List<Activity> expectedActivities = TenantUtil.runAsUserTenant(new TenantRunAsWork<List<Activity>>()
|
|
{
|
|
@Override
|
|
public List<Activity> doWork() throws Exception
|
|
{
|
|
List<Activity> activities = repoService.getActivities(person1.getId(), null, false, true);
|
|
return activities;
|
|
}
|
|
}, person1.getId(), network1.getId());
|
|
|
|
int skipCount = 0;
|
|
int maxItems = 2;
|
|
publicApiClient.setRequestContext(new RequestContext(network1.getId(), person1.getId()));
|
|
Paging paging = getPaging(skipCount, maxItems, expectedActivities.size(), null);
|
|
peopleProxy.getActivities(GUID.generate(), createParams(paging, null));
|
|
fail();
|
|
}
|
|
catch(PublicApiException e)
|
|
{
|
|
assertEquals(HttpStatus.SC_NOT_FOUND, e.getHttpResponse().getStatusCode());
|
|
}
|
|
|
|
// unknown site - 404
|
|
try
|
|
{
|
|
List<Activity> expectedActivities = TenantUtil.runAsUserTenant(new TenantRunAsWork<List<Activity>>()
|
|
{
|
|
@Override
|
|
public List<Activity> doWork() throws Exception
|
|
{
|
|
List<Activity> activities = repoService.getActivities(person1.getId(), null, false, true);
|
|
return activities;
|
|
}
|
|
}, person1.getId(), network1.getId());
|
|
|
|
int skipCount = 0;
|
|
int maxItems = 2;
|
|
Paging paging = getPaging(skipCount, maxItems, expectedActivities.size(), null);
|
|
Map<String, String> params = createParams(paging, null);
|
|
params.put("siteId", GUID.generate());
|
|
publicApiClient.setRequestContext(new RequestContext(network1.getId(), person1.getId()));
|
|
peopleProxy.getActivities(GUID.generate(), params);
|
|
fail();
|
|
}
|
|
catch(PublicApiException e)
|
|
{
|
|
assertEquals(HttpStatus.SC_NOT_FOUND, e.getHttpResponse().getStatusCode());
|
|
}
|
|
|
|
// user from another network - 404
|
|
try
|
|
{
|
|
List<Activity> expectedActivities = TenantUtil.runAsUserTenant(new TenantRunAsWork<List<Activity>>()
|
|
{
|
|
@Override
|
|
public List<Activity> doWork() throws Exception
|
|
{
|
|
List<Activity> activities = repoService.getActivities(person1.getId(), null, false, true);
|
|
return activities;
|
|
}
|
|
}, person1.getId(), network1.getId());
|
|
|
|
int skipCount = 0;
|
|
int maxItems = 2;
|
|
Paging paging = getPaging(skipCount, maxItems, expectedActivities.size(), null);
|
|
publicApiClient.setRequestContext(new RequestContext(network1.getId(), person3.getId()));
|
|
peopleProxy.getActivities(person1.getId(), createParams(paging, null));
|
|
fail();
|
|
}
|
|
catch(PublicApiException e)
|
|
{
|
|
assertEquals(HttpStatus.SC_UNAUTHORIZED, e.getHttpResponse().getStatusCode());
|
|
}
|
|
|
|
// another user from the same network - 403
|
|
try
|
|
{
|
|
List<Activity> expectedActivities = TenantUtil.runAsUserTenant(new TenantRunAsWork<List<Activity>>()
|
|
{
|
|
@Override
|
|
public List<Activity> doWork() throws Exception
|
|
{
|
|
List<Activity> activities = repoService.getActivities(person1.getId(), null, false, true);
|
|
return activities;
|
|
}
|
|
}, person1.getId(), network1.getId());
|
|
|
|
int skipCount = 0;
|
|
int maxItems = 2;
|
|
Paging paging = getPaging(skipCount, maxItems, expectedActivities.size(), null);
|
|
publicApiClient.setRequestContext(new RequestContext(network1.getId(), person2.getId()));
|
|
peopleProxy.getActivities(person1.getId(), createParams(paging, null));
|
|
fail();
|
|
}
|
|
catch(PublicApiException e)
|
|
{
|
|
assertEquals(HttpStatus.SC_FORBIDDEN, e.getHttpResponse().getStatusCode());
|
|
}
|
|
|
|
try
|
|
{
|
|
List<Activity> activities = TenantUtil.runAsUserTenant(new TenantRunAsWork<List<Activity>>()
|
|
{
|
|
@Override
|
|
public List<Activity> doWork() throws Exception
|
|
{
|
|
List<Activity> activities = repoService.getActivities(person1.getId(), null, false, true);
|
|
return activities;
|
|
}
|
|
}, person1.getId(), network1.getId());
|
|
assertTrue(activities.size() > 0);
|
|
Activity activity = activities.get(0);
|
|
|
|
publicApiClient.setRequestContext(new RequestContext(network1.getId(), person1.getId()));
|
|
peopleProxy.remove("people", person1.getId(), "activities", String.valueOf(activity.getId()), "Unable to DELETE a person activity");
|
|
fail("");
|
|
}
|
|
catch(PublicApiException e)
|
|
{
|
|
assertEquals(HttpStatus.SC_METHOD_NOT_ALLOWED, e.getHttpResponse().getStatusCode());
|
|
}
|
|
|
|
// Test Case cloud-1500
|
|
// other user activities
|
|
{
|
|
List<Activity> expectedActivities = TenantUtil.runAsUserTenant(new TenantRunAsWork<List<Activity>>()
|
|
{
|
|
@Override
|
|
public List<Activity> doWork() throws Exception
|
|
{
|
|
List<Activity> expectedActivities = repoService.getActivities(person1.getId(), null, true, false);
|
|
return expectedActivities;
|
|
}
|
|
}, person1.getId(), network1.getId());
|
|
|
|
int skipCount = 0;
|
|
int maxItems = 2;
|
|
Paging paging = getPaging(skipCount, maxItems, expectedActivities.size(), null);
|
|
|
|
Map<String, String> params = createParams(paging, null);
|
|
params.put("who", String.valueOf(ActivityWho.others));
|
|
publicApiClient.setRequestContext(new RequestContext(network1.getId(), person1.getId()));
|
|
ListResponse<Activity> response = peopleProxy.getActivities(person1.getId(), params);
|
|
checkList(expectedActivities.subList(skipCount, skipCount + paging.getExpectedPaging().getCount()), paging.getExpectedPaging(), response);
|
|
}
|
|
|
|
// all activities with siteId exclusion
|
|
{
|
|
List<Activity> expectedActivities = TenantUtil.runAsUserTenant(new TenantRunAsWork<List<Activity>>()
|
|
{
|
|
@Override
|
|
public List<Activity> doWork() throws Exception
|
|
{
|
|
List<Activity> expectedActivities = repoService.getActivities(person1.getId(), testSite.getSiteId(), false, false);
|
|
return expectedActivities;
|
|
}
|
|
}, person1.getId(), network1.getId());
|
|
|
|
int skipCount = 0;
|
|
int maxItems = 2;
|
|
Paging paging = getPaging(skipCount, maxItems, expectedActivities.size(), null);
|
|
|
|
Map<String, String> params = createParams(paging, null);
|
|
params.put("siteId", testSite.getSiteId());
|
|
publicApiClient.setRequestContext(new RequestContext(network1.getId(), person1.getId()));
|
|
ListResponse<Activity> response = peopleProxy.getActivities(person1.getId(), params);
|
|
checkList(expectedActivities.subList(skipCount, skipCount + paging.getExpectedPaging().getCount()), paging.getExpectedPaging(), response);
|
|
}
|
|
|
|
// all activities with siteId exclusion, unknown site id
|
|
try
|
|
{
|
|
int skipCount = 0;
|
|
int maxItems = 2;
|
|
Paging paging = getPaging(skipCount, maxItems);
|
|
|
|
Map<String, String> params = createParams(paging, null);
|
|
params.put("siteId", GUID.generate());
|
|
publicApiClient.setRequestContext(new RequestContext(network1.getId(), person1.getId()));
|
|
peopleProxy.getActivities(person1.getId(), params);
|
|
fail();
|
|
}
|
|
catch(PublicApiException e)
|
|
{
|
|
assertEquals(HttpStatus.SC_NOT_FOUND, e.getHttpResponse().getStatusCode());
|
|
}
|
|
|
|
// unknown person id
|
|
try
|
|
{
|
|
int skipCount = 0;
|
|
int maxItems = 2;
|
|
Paging paging = getPaging(skipCount, maxItems);
|
|
|
|
Map<String, String> params = createParams(paging, null);
|
|
publicApiClient.setRequestContext(new RequestContext(network1.getId(), person1.getId()));
|
|
peopleProxy.getActivities(GUID.generate(), params);
|
|
fail();
|
|
}
|
|
catch(PublicApiException e)
|
|
{
|
|
assertEquals(HttpStatus.SC_NOT_FOUND, e.getHttpResponse().getStatusCode());
|
|
}
|
|
|
|
// invalid who parameter
|
|
try
|
|
{
|
|
int skipCount = 0;
|
|
int maxItems = 2;
|
|
Paging paging = getPaging(skipCount, maxItems);
|
|
|
|
Map<String, String> params = createParams(paging, null);
|
|
params.put("who", GUID.generate());
|
|
publicApiClient.setRequestContext(new RequestContext(network1.getId(), person1.getId()));
|
|
peopleProxy.getActivities(person1.getId(), params);
|
|
fail();
|
|
}
|
|
catch(PublicApiException e)
|
|
{
|
|
assertEquals(HttpStatus.SC_BAD_REQUEST, e.getHttpResponse().getStatusCode());
|
|
}
|
|
|
|
// Test Case cloud-1970
|
|
// Not allowed methods
|
|
// try
|
|
// {
|
|
// publicApiClient.setRequestContext(new RequestContext(network1.getId(), person1.getId()));
|
|
// peopleProxy.create("people", person1.getId(), "activities", null, null, "Unable to POST to person activities");
|
|
// fail("");
|
|
// }
|
|
// catch(PublicApiException e)
|
|
// {
|
|
// assertEquals(HttpStatus.SC_METHOD_NOT_ALLOWED, e.getHttpResponse().getStatusCode());
|
|
// }
|
|
//
|
|
// try
|
|
// {
|
|
// publicApiClient.setRequestContext(new RequestContext(network1.getId(), person1.getId()));
|
|
// peopleProxy.update("people", person1.getId(), "activities", null, null, "Unable to PUT person activities");
|
|
// fail("");
|
|
// }
|
|
// catch(PublicApiException e)
|
|
// {
|
|
// assertEquals(HttpStatus.SC_METHOD_NOT_ALLOWED, e.getHttpResponse().getStatusCode());
|
|
// }
|
|
//
|
|
// try
|
|
// {
|
|
// publicApiClient.setRequestContext(new RequestContext(network1.getId(), person1.getId()));
|
|
// peopleProxy.remove("people", person1.getId(), "activities", null, "Unable to DELETE person activities");
|
|
// fail("");
|
|
// }
|
|
// catch(PublicApiException e)
|
|
// {
|
|
// assertEquals(HttpStatus.SC_METHOD_NOT_ALLOWED, e.getHttpResponse().getStatusCode());
|
|
// }
|
|
//
|
|
// try
|
|
// {
|
|
// List<Activity> activities = TenantUtil.runAsUserTenant(new TenantRunAsWork<List<Activity>>()
|
|
// {
|
|
// @Override
|
|
// public List<Activity> doWork() throws Exception
|
|
// {
|
|
// List<Activity> activities = repoService.getActivities(person1.getId(), null, false, true);
|
|
// return activities;
|
|
// }
|
|
// }, person1.getId(), network1.getId());
|
|
// assertTrue(activities.size() > 0);
|
|
// Activity activity = activities.get(0);
|
|
//
|
|
// publicApiClient.setRequestContext(new RequestContext(network1.getId(), person1.getId()));
|
|
// peopleProxy.create("people", person1.getId(), "activities", String.valueOf(activity.getId()), null, "Unable to POST to a person activity");
|
|
// fail("");
|
|
// }
|
|
// catch(PublicApiException e)
|
|
// {
|
|
// assertEquals(HttpStatus.SC_METHOD_NOT_ALLOWED, e.getHttpResponse().getStatusCode());
|
|
// }
|
|
//
|
|
// try
|
|
// {
|
|
// List<Activity> activities = TenantUtil.runAsUserTenant(new TenantRunAsWork<List<Activity>>()
|
|
// {
|
|
// @Override
|
|
// public List<Activity> doWork() throws Exception
|
|
// {
|
|
// List<Activity> activities = repoService.getActivities(person1.getId(), null, false, true);
|
|
// return activities;
|
|
// }
|
|
// }, person1.getId(), network1.getId());
|
|
// assertTrue(activities.size() > 0);
|
|
// Activity activity = activities.get(0);
|
|
//
|
|
// publicApiClient.setRequestContext(new RequestContext(network1.getId(), person1.getId()));
|
|
// peopleProxy.update("people", person1.getId(), "activities", String.valueOf(activity.getId()), null, "Unable to PUT a person activity");
|
|
// fail("");
|
|
// }
|
|
// catch(PublicApiException e)
|
|
// {
|
|
// assertEquals(HttpStatus.SC_METHOD_NOT_ALLOWED, e.getHttpResponse().getStatusCode());
|
|
// }
|
|
|
|
// Test Case cloud-1970
|
|
// not allowed methods
|
|
{
|
|
List<Activity> activities = TenantUtil.runAsUserTenant(new TenantRunAsWork<List<Activity>>()
|
|
{
|
|
@Override
|
|
public List<Activity> doWork() throws Exception
|
|
{
|
|
List<Activity> activities = repoService.getActivities(person1.getId(), null, false, false);
|
|
return activities;
|
|
}
|
|
}, person1.getId(), network1.getId());
|
|
assertTrue(activities.size() > 0);
|
|
Activity activity = activities.get(0);
|
|
|
|
try
|
|
{
|
|
publicApiClient.setRequestContext(new RequestContext(network1.getId(), person1.getId()));
|
|
peopleProxy.create("people", person1.getId(), "activities", null, null, "Unable to POST to activities");
|
|
fail();
|
|
}
|
|
catch(PublicApiException e)
|
|
{
|
|
assertEquals(HttpStatus.SC_METHOD_NOT_ALLOWED, e.getHttpResponse().getStatusCode());
|
|
}
|
|
|
|
try
|
|
{
|
|
publicApiClient.setRequestContext(new RequestContext(network1.getId(), person1.getId()));
|
|
peopleProxy.create("people", person1.getId(), "activities", String.valueOf(activity.getId()), null, "Unable to POST to an activity");
|
|
fail();
|
|
}
|
|
catch(PublicApiException e)
|
|
{
|
|
assertEquals(HttpStatus.SC_METHOD_NOT_ALLOWED, e.getHttpResponse().getStatusCode());
|
|
}
|
|
|
|
try
|
|
{
|
|
publicApiClient.setRequestContext(new RequestContext(network1.getId(), person1.getId()));
|
|
peopleProxy.update("people", person1.getId(), "activities", null, null, "Unable to PUT activities");
|
|
fail();
|
|
}
|
|
catch(PublicApiException e)
|
|
{
|
|
assertEquals(HttpStatus.SC_METHOD_NOT_ALLOWED, e.getHttpResponse().getStatusCode());
|
|
}
|
|
|
|
try
|
|
{
|
|
publicApiClient.setRequestContext(new RequestContext(network1.getId(), person1.getId()));
|
|
peopleProxy.update("people", person1.getId(), "activities", String.valueOf(activity.getId()), null, "Unable to PUT an activity");
|
|
fail();
|
|
}
|
|
catch(PublicApiException e)
|
|
{
|
|
assertEquals(HttpStatus.SC_METHOD_NOT_ALLOWED, e.getHttpResponse().getStatusCode());
|
|
}
|
|
|
|
try
|
|
{
|
|
publicApiClient.setRequestContext(new RequestContext(network1.getId(), person1.getId()));
|
|
peopleProxy.remove("people", person1.getId(), "activities", null, "Unable to DELETE activities");
|
|
fail();
|
|
}
|
|
catch(PublicApiException e)
|
|
{
|
|
assertEquals(HttpStatus.SC_METHOD_NOT_ALLOWED, e.getHttpResponse().getStatusCode());
|
|
}
|
|
|
|
try
|
|
{
|
|
publicApiClient.setRequestContext(new RequestContext(network1.getId(), person1.getId()));
|
|
peopleProxy.remove("people", person1.getId(), "activities", String.valueOf(activity.getId()), "Unable to DELETE an activity");
|
|
fail();
|
|
}
|
|
catch(PublicApiException e)
|
|
{
|
|
assertEquals(HttpStatus.SC_METHOD_NOT_ALLOWED, e.getHttpResponse().getStatusCode());
|
|
}
|
|
}
|
|
}
|
|
|
|
/*
|
|
* Test that empty roles are not returned
|
|
*/
|
|
@Test
|
|
public void testPUBLICAPI23() throws Exception
|
|
{
|
|
// Add and then remove personId as a member of the public site
|
|
TenantUtil.runAsUserTenant(new TenantRunAsWork<Void>()
|
|
{
|
|
@Override
|
|
public Void doWork() throws Exception
|
|
{
|
|
testSite.updateMember(person2.getId(), SiteRole.SiteConsumer);
|
|
testSite.removeMember(person2.getId());
|
|
|
|
return null;
|
|
}
|
|
}, person1.getId(), network1.getId());
|
|
|
|
// make sure activities have been generated
|
|
repoService.generateFeed();
|
|
|
|
// check that (empty) role is not in the response
|
|
|
|
People peopleProxy = publicApiClient.people();
|
|
|
|
{
|
|
publicApiClient.setRequestContext(new RequestContext(network1.getId(), person2.getId()));
|
|
|
|
int skipCount = 0;
|
|
int maxItems = 10;
|
|
Paging paging = getPaging(skipCount, maxItems);
|
|
ListResponse<Activity> activities = peopleProxy.getActivities(person2.getId(), createParams(paging, null));
|
|
for(Activity activity : activities.getList())
|
|
{
|
|
String activityType = activity.getActivityType();
|
|
if(activityType.equals("org.alfresco.site.user-left"))
|
|
{
|
|
String role = (String)activity.getSummary().get("role");
|
|
String feedPersonId = activity.getFeedPersonId();
|
|
if(feedPersonId.equals(person2.getId()))
|
|
{
|
|
assertTrue(role == null);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|