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

130871 jvonka: REPO-1027: V1 REST API - fix error handling (add site member)
   - fix error code (should be 400 not 500) & add -ve api tests
   - ACE-5458


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@132196 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Alan Davis
2016-11-03 13:28:23 +00:00
parent 5e3d908af7
commit 6a5f88763f
5 changed files with 92 additions and 66 deletions

View File

@@ -39,6 +39,7 @@ import org.alfresco.rest.api.Sites;
import org.alfresco.rest.api.model.Company; import org.alfresco.rest.api.model.Company;
import org.alfresco.rest.api.model.Person; import org.alfresco.rest.api.model.Person;
import org.alfresco.rest.framework.core.exceptions.EntityNotFoundException; import org.alfresco.rest.framework.core.exceptions.EntityNotFoundException;
import org.alfresco.rest.framework.core.exceptions.InvalidArgumentException;
import org.alfresco.service.cmr.repository.AssociationRef; import org.alfresco.service.cmr.repository.AssociationRef;
import org.alfresco.service.cmr.repository.ContentData; import org.alfresco.service.cmr.repository.ContentData;
import org.alfresco.service.cmr.repository.ContentReader; import org.alfresco.service.cmr.repository.ContentReader;
@@ -124,6 +125,11 @@ public class PeopleImpl implements People
public String validatePerson(String personId, boolean validateIsCurrentUser) public String validatePerson(String personId, boolean validateIsCurrentUser)
{ {
if(personId == null)
{
throw new InvalidArgumentException("personId is null.");
}
if(personId.equalsIgnoreCase(DEFAULT_USER)) if(personId.equalsIgnoreCase(DEFAULT_USER))
{ {
personId = AuthenticationUtil.getFullyAuthenticatedUser(); personId = AuthenticationUtil.getFullyAuthenticatedUser();

View File

@@ -537,7 +537,7 @@ public abstract class AbstractBaseApiTest extends EnterpriseTestApi
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.postJSON().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"));
} }

View File

@@ -61,6 +61,7 @@ import org.junit.Test;
public class TestSiteMembers extends EnterpriseTestApi public class TestSiteMembers extends EnterpriseTestApi
{ {
// TODO set create member for a user who is a member of the site (not the creator) // TODO set create member for a user who is a member of the site (not the creator)
// TODO split into more manageable test methods
@Test @Test
public void testSiteMembers() throws Exception public void testSiteMembers() throws Exception
{ {
@@ -383,6 +384,30 @@ public class TestSiteMembers extends EnterpriseTestApi
assertEquals(e.getMessage(), HttpStatus.SC_NOT_FOUND, e.getHttpResponse().getStatusCode()); assertEquals(e.getMessage(), HttpStatus.SC_NOT_FOUND, e.getHttpResponse().getStatusCode());
} }
// missing person id
try
{
publicApiClient.setRequestContext(new RequestContext(network1.getId(), person2.getId()));
sitesProxy.createSiteMember(site.getSiteId(), new SiteMember(null, SiteRole.SiteContributor.toString()));
fail("");
}
catch(PublicApiException e)
{
assertEquals(HttpStatus.SC_BAD_REQUEST, e.getHttpResponse().getStatusCode());
}
// missing role
try
{
publicApiClient.setRequestContext(new RequestContext(network1.getId(), person2.getId()));
sitesProxy.createSiteMember(site.getSiteId(), new SiteMember(person1.getId(), null));
fail("");
}
catch(PublicApiException e)
{
assertEquals(HttpStatus.SC_BAD_REQUEST, e.getHttpResponse().getStatusCode());
}
// check site membership in GET // check site membership in GET
List<SiteMember> expectedSiteMembers = site.getMembers(); List<SiteMember> expectedSiteMembers = site.getMembers();

View File

@@ -913,7 +913,7 @@ public class PublicApiClient
public SiteMember createSiteMember(String siteId, SiteMember siteMember) throws PublicApiException public SiteMember createSiteMember(String siteId, SiteMember siteMember) throws PublicApiException
{ {
HttpResponse response = create("sites", siteId, "members", null, siteMember.postJSON().toString(), "Failed to create site member"); HttpResponse response = create("sites", siteId, "members", null, siteMember.toJSON().toString(), "Failed to create site member");
SiteMember retSiteMember = SiteMember.parseSiteMember(siteMember.getSiteId(), (JSONObject)response.getJsonResponse().get("entry")); SiteMember retSiteMember = SiteMember.parseSiteMember(siteMember.getSiteId(), (JSONObject)response.getJsonResponse().get("entry"));
return retSiteMember; return retSiteMember;
} }

View File

@@ -165,7 +165,12 @@ public class SiteMember implements Serializable, ExpectedComparison, Comparable<
public JSONObject toJSON() public JSONObject toJSON()
{ {
JSONObject entry = new JSONObject(); JSONObject entry = new JSONObject();
if (getMemberId() != null)
{
entry.put("id", getMemberId()); entry.put("id", getMemberId());
}
if (getRole() != null) if (getRole() != null)
{ {
entry.put("role", getRole()); entry.put("role", getRole());
@@ -174,16 +179,6 @@ public class SiteMember implements Serializable, ExpectedComparison, Comparable<
return entry; return entry;
} }
@SuppressWarnings("unchecked")
public JSONObject postJSON()
{
JSONObject entry = new JSONObject();
entry.put("id", getMemberId());
entry.put("role", getRole());
return entry;
}
@Override @Override
public int hashCode() { public int hashCode() {
final int prime = 31; final int prime = 31;