Merged SHA-SIMP-1 (5.1.0) to HEAD (5.1)

105171: SHA-935: Repository Invite Flow Changes
     - Updated remote-api tests


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@110789 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Ray Gauss
2015-08-25 14:00:46 +00:00
parent c8c2441ba3
commit 16f3bba3ba
3 changed files with 87 additions and 30 deletions

View File

@@ -24,6 +24,8 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import org.alfresco.model.ContentModel; import org.alfresco.model.ContentModel;
import org.alfresco.repo.invitation.InvitationServiceImpl;
import org.alfresco.repo.invitation.WorkflowModelNominatedInvitation;
import org.alfresco.repo.security.authentication.AuthenticationComponent; import org.alfresco.repo.security.authentication.AuthenticationComponent;
import org.alfresco.repo.security.authentication.AuthenticationUtil; import org.alfresco.repo.security.authentication.AuthenticationUtil;
import org.alfresco.repo.site.SiteModel; import org.alfresco.repo.site.SiteModel;
@@ -65,6 +67,7 @@ public class InvitationWebScriptTest extends BaseWebScriptTest
private PersonService personService; private PersonService personService;
private NodeService nodeService; private NodeService nodeService;
private TransactionService transactionService; private TransactionService transactionService;
private InvitationServiceImpl invitationServiceImpl;
private String userOne = "InvitationTestOne" + GUID.generate(); private String userOne = "InvitationTestOne" + GUID.generate();
private String userTwo = "InvitationTestTwo" + GUID.generate(); private String userTwo = "InvitationTestTwo" + GUID.generate();
@@ -102,7 +105,8 @@ public class InvitationWebScriptTest extends BaseWebScriptTest
this.personService = (PersonService) getServer().getApplicationContext().getBean("PersonService"); this.personService = (PersonService) getServer().getApplicationContext().getBean("PersonService");
this.nodeService = (NodeService) getServer().getApplicationContext().getBean("NodeService"); this.nodeService = (NodeService) getServer().getApplicationContext().getBean("NodeService");
this.transactionService = (TransactionService) getServer().getApplicationContext().getBean("TransactionService"); this.transactionService = (TransactionService) getServer().getApplicationContext().getBean("TransactionService");
this.invitationServiceImpl = (InvitationServiceImpl) getServer().getApplicationContext().getBean("invitationService");
// turn off email sending to prevent errors during unit testing // turn off email sending to prevent errors during unit testing
// (or sending out email by accident from tests) // (or sending out email by accident from tests)
InviteServiceTest.configureMailExecutorForTestMode(this.getServer()); InviteServiceTest.configureMailExecutorForTestMode(this.getServer());
@@ -189,9 +193,10 @@ public class InvitationWebScriptTest extends BaseWebScriptTest
* Detailed Test of List Invitation Web Script. * Detailed Test of List Invitation Web Script.
* Using URL: /api/invitations * Using URL: /api/invitations
* *
* @param requireAcceptance true if a workflow requiring acceptance is being used
* @throws Exception * @throws Exception
*/ */
public void testInvitationsGet() throws Exception protected void testInvitationsGet(boolean requireAcceptance) throws Exception
{ {
// Create two sites. // Create two sites.
String shortNameSiteA = GUID.generate(); String shortNameSiteA = GUID.generate();
@@ -241,7 +246,10 @@ public class InvitationWebScriptTest extends BaseWebScriptTest
JSONObject moderatedBInv = getInvitation(moderatedIdBUSER_TWO, data); JSONObject moderatedBInv = getInvitation(moderatedIdBUSER_TWO, data);
assertNotNull("Moderated invitation to Site B not present!", moderatedBInv); assertNotNull("Moderated invitation to Site B not present!", moderatedBInv);
JSONObject nominatedInv = getInvitation(nominatedId, data); JSONObject nominatedInv = getInvitation(nominatedId, data);
assertNotNull("Nominated invitation to Site A not present!", nominatedInv); if (requireAcceptance)
{
assertNotNull("Nominated invitation to Site A not present!", nominatedInv);
}
checkJSONInvitations(data); checkJSONInvitations(data);
} }
@@ -284,14 +292,42 @@ public class InvitationWebScriptTest extends BaseWebScriptTest
assertNotNull(top.getString("message")); assertNotNull(top.getString("message"));
} }
} }
/**
* Detailed Test of List Invitation Web Script.
* Using URL: /api/invitations
*
* @throws Exception
*/
public void testInvitationsGet() throws Exception
{
testInvitationsGet(false);
}
/**
* Detailed Test of List Invitation Web Script using legacy workflow which requires user acceptance
* Using URL: /api/invitations
*
* @throws Exception
*/
public void testInvitationsGetRequireNominatedAcceptance() throws Exception
{
this.invitationServiceImpl.setNominatedInvitationWorkflowId(
WorkflowModelNominatedInvitation.WORKFLOW_DEFINITION_NAME_ACTIVITI_INVITE);
testInvitationsGet(true);
// Reset back to default
this.invitationServiceImpl.setNominatedInvitationWorkflowId(
WorkflowModelNominatedInvitation.WORKFLOW_DEFINITION_NAME_ACTIVITI_ADD_DIRECT);
}
/** /**
* Detailed Test of List Invitation Web Script. * Detailed Test of List Invitation Web Script.
* Using URL: /api/sites/{shortname}/invitations * Using URL: /api/sites/{shortname}/invitations
* *
* @param requireAcceptance true if a workflow requiring acceptance is being used
* @throws Exception * @throws Exception
*/ */
public void testSiteInvitationsGet() throws Exception protected void testSiteInvitationsGet(boolean requireAcceptance) throws Exception
{ {
// Create two sites. // Create two sites.
String shortNameSiteA = GUID.generate(); String shortNameSiteA = GUID.generate();
@@ -336,12 +372,15 @@ public class InvitationWebScriptTest extends BaseWebScriptTest
JSONObject top = new JSONObject(response.getContentAsString()); JSONObject top = new JSONObject(response.getContentAsString());
// System.out.println(response.getContentAsString()); // System.out.println(response.getContentAsString());
JSONArray data = top.getJSONArray("data"); JSONArray data = top.getJSONArray("data");
assertEquals("Wrong number of invitations!", 2, data.length()); assertEquals("Wrong number of invitations!", requireAcceptance ? 2 : 1, data.length());
JSONObject moderatedAInv = getInvitation(moderatedIdAUSER_TWO, data); JSONObject moderatedAInv = getInvitation(moderatedIdAUSER_TWO, data);
assertNotNull("Moderated invitation to Site A not present!", moderatedAInv); assertNotNull("Moderated invitation to Site A not present!", moderatedAInv);
JSONObject nominatedInv = getInvitation(nominatedId, data); JSONObject nominatedInv = getInvitation(nominatedId, data);
assertNotNull("Nominated invitation to Site A not present!", nominatedInv); if (requireAcceptance)
{
assertNotNull("Nominated invitation to Site A not present!", nominatedInv);
}
checkJSONInvitations(data); checkJSONInvitations(data);
} }
@@ -376,7 +415,7 @@ public class InvitationWebScriptTest extends BaseWebScriptTest
} }
// search SiteA by type Nominated: One Nominated User2 // search SiteA by type Nominated: One Nominated User2
{ if (requireAcceptance) {
String siteANominatedUrl = URL_SITES + "/" +shortNameSiteA + "/invitations?invitationType=NOMINATED"; String siteANominatedUrl = URL_SITES + "/" +shortNameSiteA + "/invitations?invitationType=NOMINATED";
Response response = sendRequest(new GetRequest(siteANominatedUrl), 200); Response response = sendRequest(new GetRequest(siteANominatedUrl), 200);
JSONObject top = new JSONObject(response.getContentAsString()); JSONObject top = new JSONObject(response.getContentAsString());
@@ -426,6 +465,33 @@ public class InvitationWebScriptTest extends BaseWebScriptTest
assertNotNull(top.getString("message")); assertNotNull(top.getString("message"));
} }
} }
/**
* Detailed Test of List Invitation Web Script.
* Using URL: /api/sites/{shortname}/invitations
*
* @throws Exception
*/
public void testSiteInvitationsGet() throws Exception
{
testSiteInvitationsGet(false);
}
/**
* Detailed Test of List Invitation Web Script using legacy workflow which requires user acceptance.
* Using URL: /api/sites/{shortname}/invitations
*
* @throws Exception
*/
public void testSiteInvitationsGetRequireNominatedAcceptance() throws Exception
{
this.invitationServiceImpl.setNominatedInvitationWorkflowId(
WorkflowModelNominatedInvitation.WORKFLOW_DEFINITION_NAME_ACTIVITI_INVITE);
testSiteInvitationsGet(true);
// Reset back to default
this.invitationServiceImpl.setNominatedInvitationWorkflowId(
WorkflowModelNominatedInvitation.WORKFLOW_DEFINITION_NAME_ACTIVITI_ADD_DIRECT);
}
private void checkJSONInvitations(JSONArray data) throws JSONException private void checkJSONInvitations(JSONArray data) throws JSONException
{ {

View File

@@ -26,6 +26,7 @@ import java.util.Set;
import org.alfresco.model.ContentModel; import org.alfresco.model.ContentModel;
import org.alfresco.repo.action.executer.MailActionExecuter; import org.alfresco.repo.action.executer.MailActionExecuter;
import org.alfresco.repo.content.MimetypeMap; import org.alfresco.repo.content.MimetypeMap;
import org.alfresco.repo.invitation.InvitationServiceImpl;
import org.alfresco.repo.invitation.WorkflowModelNominatedInvitation; import org.alfresco.repo.invitation.WorkflowModelNominatedInvitation;
import org.alfresco.repo.invitation.script.ScriptInvitationService; import org.alfresco.repo.invitation.script.ScriptInvitationService;
import org.alfresco.repo.invitation.site.InviteInfo; import org.alfresco.repo.invitation.site.InviteInfo;
@@ -89,6 +90,7 @@ public class InviteServiceTest extends BaseWebScriptTest
private NamespaceService namespaceService; private NamespaceService namespaceService;
private TransactionService transactionService; private TransactionService transactionService;
private NodeArchiveService nodeArchiveService; private NodeArchiveService nodeArchiveService;
private InvitationServiceImpl invitationServiceImpl;
// stores invitee email addresses, one entry for each "start invite" operation // stores invitee email addresses, one entry for each "start invite" operation
// invoked, so that resources created for each invitee for each test // invoked, so that resources created for each invitee for each test
@@ -143,6 +145,7 @@ public class InviteServiceTest extends BaseWebScriptTest
this.transactionService = (TransactionService) getServer().getApplicationContext() this.transactionService = (TransactionService) getServer().getApplicationContext()
.getBean("TransactionService"); .getBean("TransactionService");
this.nodeArchiveService = (NodeArchiveService)getServer().getApplicationContext().getBean("nodeArchiveService"); this.nodeArchiveService = (NodeArchiveService)getServer().getApplicationContext().getBean("nodeArchiveService");
this.invitationServiceImpl = (InvitationServiceImpl) getServer().getApplicationContext().getBean("invitationService");
ScriptInvitationService scriptInvitationService = (ScriptInvitationService) getServer().getApplicationContext().getBean("invitationServiceScript"); ScriptInvitationService scriptInvitationService = (ScriptInvitationService) getServer().getApplicationContext().getBean("invitationServiceScript");
scriptInvitationService.setSiteService(this.siteService); scriptInvitationService.setSiteService(this.siteService);
Invite invite = (Invite) getServer().getApplicationContext().getBean("webscript.org.alfresco.repository.invite.invite.get"); Invite invite = (Invite) getServer().getApplicationContext().getBean("webscript.org.alfresco.repository.invite.invite.get");
@@ -935,6 +938,10 @@ public class InviteServiceTest extends BaseWebScriptTest
public void testInviteeResourcesNotDeletedUponRejectWhenInvitesPending() throws Exception public void testInviteeResourcesNotDeletedUponRejectWhenInvitesPending() throws Exception
{ {
// Test only applies to legacy invite workflow
this.invitationServiceImpl.setNominatedInvitationWorkflowId(
WorkflowModelNominatedInvitation.WORKFLOW_DEFINITION_NAME_ACTIVITI_INVITE);
// Create invitee person // Create invitee person
final String inviteeEmail = INVITEE_EMAIL_PREFIX + RandomStringUtils.randomAlphanumeric(6) + "@" + INVITEE_EMAIL_DOMAIN; final String inviteeEmail = INVITEE_EMAIL_PREFIX + RandomStringUtils.randomAlphanumeric(6) + "@" + INVITEE_EMAIL_DOMAIN;
AuthenticationUtil.runAs(new RunAsWork<Object>() AuthenticationUtil.runAs(new RunAsWork<Object>()

View File

@@ -867,12 +867,6 @@ public class SiteServiceTest extends BaseWebScriptTest
String acceptURL = "page/accept-invite"; String acceptURL = "page/accept-invite";
String rejectURL = "page/reject-invite"; String rejectURL = "page/reject-invite";
// Create a nominated invitation
String nominatedId = createNominatedInvitation(shortName, inviteeFirstName, inviteeLastName, inviteeEmail, inviteeUserName, roleName, serverPath, acceptURL, rejectURL, 201);
// Get the nominated invitation
sendRequest(new GetRequest(URL_SITES + "/" + shortName + "/invitations/" + nominatedId), 200);
//Create a new moderated invitation //Create a new moderated invitation
String moderatedId = createModeratedInvitation(shortName, inviteComments, userName, roleName); String moderatedId = createModeratedInvitation(shortName, inviteComments, userName, roleName);
@@ -881,13 +875,13 @@ public class SiteServiceTest extends BaseWebScriptTest
// search for the moderated invitation // search for the moderated invitation
sendRequest(new GetRequest(URL_SITES + "/" + shortName + "/invitations?inviteeUserName=" + userName), 200); sendRequest(new GetRequest(URL_SITES + "/" + shortName + "/invitations?inviteeUserName=" + userName), 200);
// Create a nominated invitation
String nominatedId = createNominatedInvitation(shortName, inviteeFirstName, inviteeLastName, inviteeEmail, inviteeUserName, roleName, serverPath, acceptURL, rejectURL, 201);
// Search for all invitations on this site // Search for all invitations on this site
sendRequest(new GetRequest(URL_SITES + "/" + shortName + "/invitations"), 200); sendRequest(new GetRequest(URL_SITES + "/" + shortName + "/invitations"), 200);
// cancel the nominated invitation
sendRequest(new DeleteRequest(URL_SITES + "/" + shortName + "/invitations/" + nominatedId), 200);
// cancel the moderated invitation // cancel the moderated invitation
sendRequest(new DeleteRequest(URL_SITES + "/" + shortName + "/invitations/" + moderatedId), 200); sendRequest(new DeleteRequest(URL_SITES + "/" + shortName + "/invitations/" + moderatedId), 200);
} }
@@ -1076,18 +1070,16 @@ public class SiteServiceTest extends BaseWebScriptTest
} }
/** /**
* search by user - find USER_TWO's two invitations * search by user - find USER_TWO's invitation
*/ */
{ {
Response response = sendRequest(new GetRequest(URL_SITES + "/" + shortName + "/invitations?inviteeUserName=" + USER_TWO), 200); Response response = sendRequest(new GetRequest(URL_SITES + "/" + shortName + "/invitations?inviteeUserName=" + USER_TWO), 200);
JSONObject top = new JSONObject(response.getContentAsString()); JSONObject top = new JSONObject(response.getContentAsString());
//System.out.println(response.getContentAsString()); //System.out.println(response.getContentAsString());
JSONArray data = top.getJSONArray("data"); JSONArray data = top.getJSONArray("data");
assertEquals("user two invitation not found", data.length(), 2); assertEquals("user two invitation not found", 1, data.length());
JSONObject first = data.getJSONObject(0); JSONObject first = data.getJSONObject(0);
assertEquals("first userid is wrong", first.getString("inviteeUserName"), USER_TWO); assertEquals("userid is wrong", first.getString("inviteeUserName"), USER_TWO);
JSONObject second = data.getJSONObject(0);
assertEquals("second userid is wrong", second.getString("inviteeUserName"), USER_TWO);
} }
@@ -1103,14 +1095,6 @@ public class SiteServiceTest extends BaseWebScriptTest
assertEquals("two moderated invitations not found", data.length(), 2); assertEquals("two moderated invitations not found", data.length(), 2);
} }
{
Response response = sendRequest(new GetRequest(URL_SITES + "/" + shortName + "/invitations?invitationType=NOMINATED"), 200);
JSONObject top = new JSONObject(response.getContentAsString());
//System.out.println(response.getContentAsString());
JSONArray data = top.getJSONArray("data");
assertEquals("one nominated invitation not found", data.length(), 1);
}
// negative test - unknown invitationType // negative test - unknown invitationType
{ {
Response response = sendRequest(new GetRequest(URL_SITES + "/" + shortName + "/invitations?invitationType=Crap"), 500); Response response = sendRequest(new GetRequest(URL_SITES + "/" + shortName + "/invitations?invitationType=Crap"), 500);