Merged HEAD (5.2) to 5.2.N (5.2.1)

127531 jkaabimofrad: Merged API-STRIKES-BACK (5.2.0) to HEAD (5.2)
      125513 jvonka: RA-779 / RA-780: Sites API - create site & delete site
      - follow-on improvemnts (generating site id, adding favorite with option to sip)
      - more tests (+ve & -ve)


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/BRANCHES/DEV/5.2.N/root@127641 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Alan Davis
2016-06-03 14:00:09 +00:00
parent 96a9c61e8b
commit 5e3eff4113
6 changed files with 203 additions and 136 deletions

View File

@@ -87,73 +87,6 @@ public class TestSites extends EnterpriseTestApi
{
Sites sitesProxy = publicApiClient.sites();
// make sure that a user can't see PRIVATE sites of which they are not a member by creating one and checking it's not in the results
try
{
publicApiClient.setRequestContext(new RequestContext(network1.getId(), personId));
sitesProxy.getSite(site1.getSiteId());
fail();
}
catch(PublicApiException e)
{
assertEquals(HttpStatus.SC_NOT_FOUND, e.getHttpResponse().getStatusCode());
}
try
{
sitesProxy.create("sites", "site", null, null, null, "Unable to POST to a site");
fail();
}
catch(PublicApiException e)
{
assertEquals(HttpStatus.SC_METHOD_NOT_ALLOWED, e.getHttpResponse().getStatusCode());
}
try
{
sitesProxy.remove("sites", null, null, null, "Unable to DELETE sites");
fail();
}
catch(PublicApiException e)
{
assertEquals(HttpStatus.SC_METHOD_NOT_ALLOWED, e.getHttpResponse().getStatusCode());
}
// -ve - try to delete unknown site
try
{
sitesProxy.remove("sites", "dummy", null, null, "Unable to DELETE site - not found");
fail();
}
catch(PublicApiException e)
{
assertEquals(HttpStatus.SC_NOT_FOUND, e.getHttpResponse().getStatusCode());
}
// invalid site
try
{
publicApiClient.setRequestContext(new RequestContext(network1.getId(), personId));
sitesProxy.getSite(GUID.generate());
fail("");
}
catch(PublicApiException e)
{
assertEquals(HttpStatus.SC_NOT_FOUND, e.getHttpResponse().getStatusCode());
}
// invalid auth
try
{
publicApiClient.setRequestContext(new RequestContext(network1.getId(), GUID.generate(), "password"));
sitesProxy.getSite(site1.getSiteId());
fail("");
}
catch(PublicApiException e)
{
assertEquals(HttpStatus.SC_UNAUTHORIZED, e.getHttpResponse().getStatusCode());
}
// get a site
{
publicApiClient.setRequestContext(new RequestContext(network1.getId(), person1Id));
@@ -188,15 +121,17 @@ public class TestSites extends EnterpriseTestApi
checkList(expectedSites.subList(skipCount, skipCount + paging.getExpectedPaging().getCount()), paging.getExpectedPaging(), resp);
}
// test create and delete site
{
String siteTitle = "my site 123";
String siteTitle = "my site !*#$ 123";
Site site = new SiteImpl("my site 123", SiteVisibility.PRIVATE.toString());
Site site = new SiteImpl(siteTitle, SiteVisibility.PRIVATE.toString());
publicApiClient.setRequestContext(new RequestContext(network1.getId(), personId));
Site ret = sitesProxy.createSite(site);
String siteId = ret.getSiteId();
String siteId = siteTitle.replace(' ', '-');
Site siteExp = new SiteImpl(null, siteId, ret.getGuid(), siteTitle, null, SiteVisibility.PRIVATE.toString(), null, SiteRole.SiteManager);
String expectedSiteId = "my-site-123";
Site siteExp = new SiteImpl(null, expectedSiteId, ret.getGuid(), siteTitle, null, SiteVisibility.PRIVATE.toString(), null, SiteRole.SiteManager);
siteExp.expected(ret);
publicApiClient.setRequestContext(new RequestContext(network1.getId(), personId));
@@ -216,8 +151,64 @@ public class TestSites extends EnterpriseTestApi
assertEquals(HttpStatus.SC_NOT_FOUND, e.getHttpResponse().getStatusCode());
}
}
// Test Case cloud-1478
// -ve tests
{
// invalid auth
publicApiClient.setRequestContext(new RequestContext(network1.getId(), GUID.generate(), "password"));
sitesProxy.getSite(site1.getSiteId(), 401);
publicApiClient.setRequestContext(new RequestContext(network1.getId(), personId));
// -ve - permission test
// make sure that a user can't see PRIVATE sites of which they are not a member by creating one and checking it's not in the results
sitesProxy.getSite(site1.getSiteId(), 404);
// -ve - try to get unknown site
sitesProxy.getSite(GUID.generate(), 404);
Site site = new SiteImpl("my site 123", "invalidsitevisibility");
sitesProxy.createSite(site, 400);
site = new SiteImpl(null, "invalid site id", null, "my site 123", null, SiteVisibility.PRIVATE.toString(), null, null);
sitesProxy.createSite(site, 400);
site = new SiteImpl(null, "invalidsiteid*", null, "my site 123", null, SiteVisibility.PRIVATE.toString(), null, null);
sitesProxy.createSite(site, 400);
// site already exists (409)
String siteTitle = "my site 456";
site = new SiteImpl(siteTitle, SiteVisibility.PRIVATE.toString());
String siteId = sitesProxy.createSite(site, 201).getSiteId();
sitesProxy.createSite(site, 409);
sitesProxy.removeSite(siteId, 204); // cleanup
sitesProxy.removeSite(GUID.generate(), 404);
}
// -ve - cannot call POST method on /sites/siteId
try
{
sitesProxy.create("sites", "site", null, null, null, "Unable to POST to a site");
fail();
}
catch(PublicApiException e)
{
assertEquals(HttpStatus.SC_METHOD_NOT_ALLOWED, e.getHttpResponse().getStatusCode());
}
// -ve - cannot call DELETE method on /sites
try
{
sitesProxy.remove("sites", null, null, null, "Unable to DELETE sites");
fail();
}
catch(PublicApiException e)
{
assertEquals(HttpStatus.SC_METHOD_NOT_ALLOWED, e.getHttpResponse().getStatusCode());
}
// Test Case cloud-1478
// Test Case cloud-1479
// user invited to network and user invited to site
// user invited to network and user not invited to site

View File

@@ -63,7 +63,6 @@ import org.alfresco.rest.api.tests.client.data.SiteImpl;
import org.alfresco.rest.api.tests.client.data.SiteMember;
import org.alfresco.rest.api.tests.client.data.SiteMembershipRequest;
import org.alfresco.rest.api.tests.client.data.Tag;
import org.alfresco.service.cmr.site.SiteVisibility;
import org.apache.chemistry.opencmis.client.api.CmisObject;
import org.apache.chemistry.opencmis.client.api.Document;
import org.apache.chemistry.opencmis.client.api.FileableCmisObject;
@@ -676,23 +675,19 @@ public class PublicApiClient
throw new PublicApiException(e);
}
}
public HttpResponse getSingle(String entityCollectionName, String entityId, String relationCollectionName, String relationId, String errorMessage) throws PublicApiException
public HttpResponse getSingle(String entityCollectionName, String entityId, String relationCollectionName, String relationId, String errorMessage) throws PublicApiException
{
return getSingle(entityCollectionName, entityId, relationCollectionName, relationId, errorMessage, HttpServletResponse.SC_OK);
}
public HttpResponse getSingle(String entityCollectionName, String entityId, String relationCollectionName, String relationId, String errorMessage, int expectedStatus) throws PublicApiException
{
try
{
HttpResponse response = get("public", entityCollectionName, entityId, relationCollectionName, relationId, null);
if (HttpServletResponse.SC_OK != response.getStatusCode())
{
String msg = errorMessage + ": \n" +
" Response: " + response;
throw new PublicApiException(msg, response);
}
else
{
return response;
}
checkStatus(errorMessage, expectedStatus, response);
return response;
}
catch(IOException e)
{
@@ -727,46 +722,38 @@ public class PublicApiClient
throw new PublicApiException(e);
}
}
public HttpResponse create(String entityCollectionName, String entityId, String relationCollectionName, String relationId, String body, String errorMessage) throws PublicApiException
{
return create(entityCollectionName, entityId, relationCollectionName, relationId, body, errorMessage, HttpServletResponse.SC_CREATED);
}
public HttpResponse create(String entityCollectionName, String entityId, String relationCollectionName, String relationId, String body, String errorMessage) throws PublicApiException
public HttpResponse create(String entityCollectionName, String entityId, String relationCollectionName, String relationId, String body, String errorMessage, int expectedStatus) throws PublicApiException
{
try
{
HttpResponse response = post("public", entityCollectionName, entityId, relationCollectionName, relationId, body);
if (HttpServletResponse.SC_CREATED != response.getStatusCode())
{
String msg = errorMessage + ": \n" +
" Response: " + response;
throw new PublicApiException(msg, response);
}
else
{
return response;
}
checkStatus(errorMessage, expectedStatus, response);
return response;
}
catch(IOException e)
catch (IOException e)
{
throw new PublicApiException(e);
}
}
public HttpResponse remove(String entityCollectionName, String entityId, String relationCollectionName, String relationId, String errorMessage) throws PublicApiException
{
return remove(entityCollectionName, entityId, relationCollectionName, relationId, errorMessage, HttpServletResponse.SC_GONE);
}
public HttpResponse remove(String entityCollectionName, String entityId, String relationCollectionName, String relationId, String errorMessage) throws PublicApiException
public HttpResponse remove(String entityCollectionName, String entityId, String relationCollectionName, String relationId, String errorMessage, int expectedStatus) throws PublicApiException
{
try
{
HttpResponse response = delete("public", entityCollectionName, entityId, relationCollectionName, relationId);
if (HttpServletResponse.SC_NO_CONTENT != response.getStatusCode())
{
String msg = errorMessage + ": \n" +
" Response: " + response;
throw new PublicApiException(msg, response);
}
else
{
return response;
}
checkStatus(errorMessage, expectedStatus, response);
return response;
}
catch(IOException e)
{
@@ -783,6 +770,17 @@ public class PublicApiClient
assertNotNull(source);
return source;
}
public void checkStatus(String errorMessage, int expectedStatus, HttpResponse response) throws PublicApiException
{
int actualStatus = response.getStatusCode();
if ((expectedStatus > 0) && (expectedStatus != actualStatus))
{
String msg = "Status code " + actualStatus + " returned, but expected " + expectedStatus + ": \n"+
errorMessage + ": \n" + " Response: " + response;
throw new PublicApiException(msg, response);
}
}
}
public static class ListResponse<T>
@@ -815,22 +813,44 @@ public class PublicApiClient
HttpResponse response = getAll("sites", null, null, null, params, "Failed to get sites");
return SiteImpl.parseSites(response.getJsonResponse());
}
public Site getSite(String siteId) throws PublicApiException
{
return getSite(siteId, 200);
}
public Site getSite(String siteId) throws PublicApiException
public Site getSite(String siteId, int expectedStatus) throws PublicApiException
{
HttpResponse response = getSingle("sites", siteId, null, null, "Failed to get site " + siteId);
return SiteImpl.parseSite((JSONObject)response.getJsonResponse().get("entry"));
HttpResponse response = getSingle("sites", siteId, null, null, "Failed to get site " + siteId, expectedStatus);
if ((response != null) && (response.getJsonResponse() != null))
{
return SiteImpl.parseSite((JSONObject)response.getJsonResponse().get("entry"));
}
else
{
return null;
}
}
public Site createSite(Site site) throws PublicApiException
public Site createSite(Site site) throws PublicApiException
{
return createSite(site, 201);
}
public Site createSite(Site site, int expectedStatus) throws PublicApiException
{
HttpResponse response = create("sites", null, null, null, site.toJSON().toString(), "Failed to create site");
return SiteImpl.parseSite((JSONObject)response.getJsonResponse().get("entry"));
HttpResponse response = create("sites", null, null, null, site.toJSON().toString(), "Failed to create site "+site.getTitle(), expectedStatus);
return SiteImpl.parseSite((JSONObject)response.getJsonResponse().get("entry"));
}
public void removeSite(String siteId) throws PublicApiException
{
remove("sites", siteId, null, null, "Failed to remove site");
removeSite(siteId, 204);
}
public void removeSite(String siteId, int expectedStatus) throws PublicApiException
{
remove("sites", siteId, null, null, "Failed to remove site", expectedStatus);
}
public ListResponse<SiteContainer> getSiteContainers(String siteId, Map<String, String> params) throws PublicApiException

View File

@@ -218,6 +218,11 @@ public class SiteImpl implements Serializable, Site, Comparable<SiteImpl>, Expec
public static Site parseSite(JSONObject jsonObject)
{
if (jsonObject == null)
{
return null;
}
String id = (String)jsonObject.get("id");
String guid = (String)jsonObject.get("guid");
String title = (String)jsonObject.get("title");