diff --git a/source/java/org/alfresco/rest/api/model/QuickShareLinkEmailRequest.java b/source/java/org/alfresco/rest/api/model/QuickShareLinkEmailRequest.java
index 8780a8aeb1..f34387277c 100644
--- a/source/java/org/alfresco/rest/api/model/QuickShareLinkEmailRequest.java
+++ b/source/java/org/alfresco/rest/api/model/QuickShareLinkEmailRequest.java
@@ -26,7 +26,7 @@ import java.util.List;
*
* @author Jamal Kaabi-Mofrad
*/
-public class QuickShareLinkEmailRequest extends Target
+public class QuickShareLinkEmailRequest
{
private String client;
private String message;
diff --git a/source/test-java/org/alfresco/rest/api/tests/SharedLinkApiTest.java b/source/test-java/org/alfresco/rest/api/tests/SharedLinkApiTest.java
index 8b9e594ba1..a2bf8775d6 100644
--- a/source/test-java/org/alfresco/rest/api/tests/SharedLinkApiTest.java
+++ b/source/test-java/org/alfresco/rest/api/tests/SharedLinkApiTest.java
@@ -31,6 +31,7 @@ import org.alfresco.rest.api.tests.client.HttpResponse;
import org.alfresco.rest.api.tests.client.PublicApiClient.Paging;
import org.alfresco.rest.api.tests.client.data.Document;
import org.alfresco.rest.api.tests.client.data.Node;
+import org.alfresco.rest.api.tests.client.data.QuickShareLinkEmailRequest;
import org.alfresco.rest.api.tests.client.data.Rendition;
import org.alfresco.rest.api.tests.util.MultiPartBuilder;
import org.alfresco.rest.api.tests.util.RestApiUtil;
@@ -48,6 +49,7 @@ import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
+import java.util.Locale;
import java.util.Map;
import static org.alfresco.rest.api.tests.util.RestApiUtil.toJsonAsStringNonNull;
@@ -564,9 +566,92 @@ public class SharedLinkApiTest extends AbstractBaseApiTest
}
}
+ /**
+ * Tests emailing shared links.
+ *
POST:
+ * {@literal :/alfresco/api//public/alfresco/versions/1/shared-links//email}
+ */
+ @Test
+ public void testEmailSharedLink() throws Exception
+ {
+ // Create plain text document
+ String myFolderNodeId = getMyNodeId(user1);
+ String contentText = "The quick brown fox jumps over the lazy dog.";
+ String fileName = "file-" + RUNID + ".txt";
+ Document doc = createTextFile(user1, myFolderNodeId, fileName, contentText);
+ String docId = doc.getId();
+
+ // Create shared link to document
+ Map body = Collections.singletonMap("nodeId", docId);
+ HttpResponse response = post(URL_SHARED_LINKS, user1, toJsonAsStringNonNull(body), 201);
+ QuickShareLink resp = RestApiUtil.parseRestApiEntry(response.getJsonResponse(), QuickShareLink.class);
+ String sharedId = resp.getId();
+ assertNotNull(sharedId);
+ assertEquals(fileName, resp.getName());
+
+ // Email request with minimal properties
+ QuickShareLinkEmailRequest request = new QuickShareLinkEmailRequest();
+ request.setClient("sfs");
+ List recipients = new ArrayList<>(2);
+ recipients.add(user2 + "@acme.test");
+ recipients.add(user2 + "@ping.test");
+ request.setRecipientEmails(recipients);
+ post(getEmailSharedLinkUrl(sharedId), user1, RestApiUtil.toJsonAsString(request), 202);
+
+ // Email request with all the properties
+ request = new QuickShareLinkEmailRequest();
+ request.setClient("sfs");
+ request.setMessage("My custom message!");
+ request.setLocale(Locale.UK.toString());
+ recipients = Collections.singletonList(user2 + "@acme.test");
+ request.setRecipientEmails(recipients);
+ post(getEmailSharedLinkUrl(sharedId), user1, RestApiUtil.toJsonAsString(request), 202);
+
+ // -ve tests
+ // sharedId path parameter does not exist
+ post(getEmailSharedLinkUrl(sharedId + System.currentTimeMillis()), user1, RestApiUtil.toJsonAsString(request), 404);
+
+ // Unregistered client
+ request = new QuickShareLinkEmailRequest();
+ request.setClient("VeryCoolClient" + System.currentTimeMillis());
+ List user2Email = Collections.singletonList(user2 + "@acme.test");
+ request.setRecipientEmails(user2Email);
+ post(getEmailSharedLinkUrl(sharedId), user1, RestApiUtil.toJsonAsString(request), 400);
+
+ // client is mandatory
+ request.setClient(null);
+ post(getEmailSharedLinkUrl(sharedId), user1, RestApiUtil.toJsonAsString(request), 400);
+
+ // recipientEmails is mandatory
+ request.setClient("sfs");
+ request.setRecipientEmails(null);
+ post(getEmailSharedLinkUrl(sharedId), user1, RestApiUtil.toJsonAsString(request), 400);
+
+ // TODO if and when these tests are optionally runnable via remote env then we could skip this part of the test
+ // (else need to verify test mechanism for enterprise admin via jmx ... etc)
+ QuickShareLinksImpl quickShareLinks = applicationContext.getBean("quickShareLinks", QuickShareLinksImpl.class);
+ try
+ {
+ quickShareLinks.setEnabled(false);
+ request = new QuickShareLinkEmailRequest();
+ request.setClient("sfs");
+ request.setRecipientEmails(user2Email);
+ post(getEmailSharedLinkUrl(sharedId), user1, RestApiUtil.toJsonAsString(request), 501);
+ }
+ finally
+ {
+ quickShareLinks.setEnabled(true);
+ }
+ }
+
@Override
public String getScope()
{
return "public";
}
+
+ private String getEmailSharedLinkUrl(String sharedId)
+ {
+ return URL_SHARED_LINKS + '/' + sharedId + "/email";
+ }
}
diff --git a/source/test-java/org/alfresco/rest/api/tests/client/data/QuickShareLinkEmailRequest.java b/source/test-java/org/alfresco/rest/api/tests/client/data/QuickShareLinkEmailRequest.java
new file mode 100644
index 0000000000..3a880d48ec
--- /dev/null
+++ b/source/test-java/org/alfresco/rest/api/tests/client/data/QuickShareLinkEmailRequest.java
@@ -0,0 +1,88 @@
+/*
+ * Copyright (C) 2005-2016 Alfresco Software Limited.
+ *
+ * This file is part of Alfresco
+ *
+ * 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 .
+ */
+
+package org.alfresco.rest.api.tests.client.data;
+
+import java.util.List;
+
+/**
+ * Representation of an email request for the quick share link
+ *
+ * @author Jamal Kaabi-Mofrad
+ */
+public class QuickShareLinkEmailRequest
+{
+ private String client;
+ private String message;
+ private String locale;
+ private List recipientEmails;
+
+ public String getClient()
+ {
+ return client;
+ }
+
+ public QuickShareLinkEmailRequest setClient(String client)
+ {
+ this.client = client;
+ return this;
+ }
+
+ public String getMessage()
+ {
+ return message;
+ }
+
+ public void setMessage(String message)
+ {
+ this.message = message;
+ }
+
+ public String getLocale()
+ {
+ return locale;
+ }
+
+ public void setLocale(String locale)
+ {
+ this.locale = locale;
+ }
+
+ public List getRecipientEmails()
+ {
+ return recipientEmails;
+ }
+
+ public void setRecipientEmails(List recipientEmails)
+ {
+ this.recipientEmails = recipientEmails;
+ }
+
+ @Override
+ public String toString()
+ {
+ final StringBuilder sb = new StringBuilder(250);
+ sb.append("QuickShareLinkEmailRequest [client=").append(client)
+ .append(", message=").append(message)
+ .append(", locale=").append(locale)
+ .append(", recipientEmails=").append(recipientEmails)
+ .append(']');
+ return sb.toString();
+ }
+}