From 16f3bba3baa36b0dc7d22503d7133dd7c2130986 Mon Sep 17 00:00:00 2001 From: Ray Gauss Date: Tue, 25 Aug 2015 14:00:46 +0000 Subject: [PATCH] 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 --- .../invitation/InvitationWebScriptTest.java | 80 +++++++++++++++++-- .../web/scripts/invite/InviteServiceTest.java | 7 ++ .../web/scripts/site/SiteServiceTest.java | 30 ++----- 3 files changed, 87 insertions(+), 30 deletions(-) diff --git a/source/test-java/org/alfresco/repo/web/scripts/invitation/InvitationWebScriptTest.java b/source/test-java/org/alfresco/repo/web/scripts/invitation/InvitationWebScriptTest.java index f2f04a2044..ab67e9f80f 100644 --- a/source/test-java/org/alfresco/repo/web/scripts/invitation/InvitationWebScriptTest.java +++ b/source/test-java/org/alfresco/repo/web/scripts/invitation/InvitationWebScriptTest.java @@ -24,6 +24,8 @@ import java.util.List; import java.util.Map; 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.AuthenticationUtil; import org.alfresco.repo.site.SiteModel; @@ -65,6 +67,7 @@ public class InvitationWebScriptTest extends BaseWebScriptTest private PersonService personService; private NodeService nodeService; private TransactionService transactionService; + private InvitationServiceImpl invitationServiceImpl; private String userOne = "InvitationTestOne" + 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.nodeService = (NodeService) getServer().getApplicationContext().getBean("NodeService"); this.transactionService = (TransactionService) getServer().getApplicationContext().getBean("TransactionService"); - + this.invitationServiceImpl = (InvitationServiceImpl) getServer().getApplicationContext().getBean("invitationService"); + // turn off email sending to prevent errors during unit testing // (or sending out email by accident from tests) InviteServiceTest.configureMailExecutorForTestMode(this.getServer()); @@ -189,9 +193,10 @@ public class InvitationWebScriptTest extends BaseWebScriptTest * Detailed Test of List Invitation Web Script. * Using URL: /api/invitations * + * @param requireAcceptance true if a workflow requiring acceptance is being used * @throws Exception */ - public void testInvitationsGet() throws Exception + protected void testInvitationsGet(boolean requireAcceptance) throws Exception { // Create two sites. String shortNameSiteA = GUID.generate(); @@ -241,7 +246,10 @@ public class InvitationWebScriptTest extends BaseWebScriptTest JSONObject moderatedBInv = getInvitation(moderatedIdBUSER_TWO, data); assertNotNull("Moderated invitation to Site B not present!", moderatedBInv); 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); } @@ -284,14 +292,42 @@ public class InvitationWebScriptTest extends BaseWebScriptTest 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. * Using URL: /api/sites/{shortname}/invitations * + * @param requireAcceptance true if a workflow requiring acceptance is being used * @throws Exception */ - public void testSiteInvitationsGet() throws Exception + protected void testSiteInvitationsGet(boolean requireAcceptance) throws Exception { // Create two sites. String shortNameSiteA = GUID.generate(); @@ -336,12 +372,15 @@ public class InvitationWebScriptTest extends BaseWebScriptTest JSONObject top = new JSONObject(response.getContentAsString()); // System.out.println(response.getContentAsString()); 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); assertNotNull("Moderated invitation to Site A not present!", moderatedAInv); 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); } @@ -376,7 +415,7 @@ public class InvitationWebScriptTest extends BaseWebScriptTest } // search SiteA by type Nominated: One Nominated User2 - { + if (requireAcceptance) { String siteANominatedUrl = URL_SITES + "/" +shortNameSiteA + "/invitations?invitationType=NOMINATED"; Response response = sendRequest(new GetRequest(siteANominatedUrl), 200); JSONObject top = new JSONObject(response.getContentAsString()); @@ -426,6 +465,33 @@ public class InvitationWebScriptTest extends BaseWebScriptTest 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 { diff --git a/source/test-java/org/alfresco/repo/web/scripts/invite/InviteServiceTest.java b/source/test-java/org/alfresco/repo/web/scripts/invite/InviteServiceTest.java index cf43977e96..22e31417c1 100644 --- a/source/test-java/org/alfresco/repo/web/scripts/invite/InviteServiceTest.java +++ b/source/test-java/org/alfresco/repo/web/scripts/invite/InviteServiceTest.java @@ -26,6 +26,7 @@ import java.util.Set; import org.alfresco.model.ContentModel; import org.alfresco.repo.action.executer.MailActionExecuter; import org.alfresco.repo.content.MimetypeMap; +import org.alfresco.repo.invitation.InvitationServiceImpl; import org.alfresco.repo.invitation.WorkflowModelNominatedInvitation; import org.alfresco.repo.invitation.script.ScriptInvitationService; import org.alfresco.repo.invitation.site.InviteInfo; @@ -89,6 +90,7 @@ public class InviteServiceTest extends BaseWebScriptTest private NamespaceService namespaceService; private TransactionService transactionService; private NodeArchiveService nodeArchiveService; + private InvitationServiceImpl invitationServiceImpl; // stores invitee email addresses, one entry for each "start invite" operation // 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() .getBean("TransactionService"); this.nodeArchiveService = (NodeArchiveService)getServer().getApplicationContext().getBean("nodeArchiveService"); + this.invitationServiceImpl = (InvitationServiceImpl) getServer().getApplicationContext().getBean("invitationService"); ScriptInvitationService scriptInvitationService = (ScriptInvitationService) getServer().getApplicationContext().getBean("invitationServiceScript"); scriptInvitationService.setSiteService(this.siteService); 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 { + // Test only applies to legacy invite workflow + this.invitationServiceImpl.setNominatedInvitationWorkflowId( + WorkflowModelNominatedInvitation.WORKFLOW_DEFINITION_NAME_ACTIVITI_INVITE); + // Create invitee person final String inviteeEmail = INVITEE_EMAIL_PREFIX + RandomStringUtils.randomAlphanumeric(6) + "@" + INVITEE_EMAIL_DOMAIN; AuthenticationUtil.runAs(new RunAsWork() diff --git a/source/test-java/org/alfresco/repo/web/scripts/site/SiteServiceTest.java b/source/test-java/org/alfresco/repo/web/scripts/site/SiteServiceTest.java index 87d76970b9..3df1f59fc4 100644 --- a/source/test-java/org/alfresco/repo/web/scripts/site/SiteServiceTest.java +++ b/source/test-java/org/alfresco/repo/web/scripts/site/SiteServiceTest.java @@ -867,12 +867,6 @@ public class SiteServiceTest extends BaseWebScriptTest String acceptURL = "page/accept-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 String moderatedId = createModeratedInvitation(shortName, inviteComments, userName, roleName); @@ -881,13 +875,13 @@ public class SiteServiceTest extends BaseWebScriptTest // search for the moderated invitation 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 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 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); JSONObject top = new JSONObject(response.getContentAsString()); //System.out.println(response.getContentAsString()); 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); - assertEquals("first userid is wrong", first.getString("inviteeUserName"), USER_TWO); - JSONObject second = data.getJSONObject(0); - assertEquals("second userid is wrong", second.getString("inviteeUserName"), USER_TWO); + assertEquals("userid is wrong", first.getString("inviteeUserName"), USER_TWO); } @@ -1103,14 +1095,6 @@ public class SiteServiceTest extends BaseWebScriptTest 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 { Response response = sendRequest(new GetRequest(URL_SITES + "/" + shortName + "/invitations?invitationType=Crap"), 500);