+ * If no name or role filter is specified all members of the site are listed.
+ *
+ * @param nameFilter user name filter
+ * @param roleFilter user role filter
+ * @return ScriptableHashMap
+ * If the user is not already a member of the site then they are added with the role
+ * given. If the user is already a member of the site then their role is updated to the new role.
+ *
+ * Only a site manager can modify memberships and there must be at least one site manager at
+ * all times.
+ *
+ * @param userName user name
+ * @param role site role
+ */
+ public void setMembership(String userName, String role)
+ {
+ this.siteService.setMembership(getShortName(), userName, role);
+ }
+
+ /**
+ * Removes a users membership of the site.
+ *
+ * Only a site manager can remove a user's membership and the last site manager can not be removed.
+ *
+ * @param userName user name
+ */
+ public void removeMembership(String userName)
+ {
+ this.siteService.removeMembership(getShortName(), userName);
+ }
}
diff --git a/source/java/org/alfresco/repo/site/script/test_siteService.js b/source/java/org/alfresco/repo/site/script/test_siteService.js
index 5bc162dee9..9aa5499f2f 100644
--- a/source/java/org/alfresco/repo/site/script/test_siteService.js
+++ b/source/java/org/alfresco/repo/site/script/test_siteService.js
@@ -1,11 +1,11 @@
function checkSite(site, sitePreset, shortName, title, description, isPublic)
{
- test.assertNotNull(site, "Site should not be null");
- test.assertEquals(sitePreset, site.sitePreset, "Site preset incorrect for site " + shortName);
- test.assertEquals(shortName, site.shortName, "Site shortname incorrect");
- test.assertEquals(title, site.title, "Site title incorrect for site " + shortName);
- test.assertEquals(description, site.description, "Site description incorrect for site " + shortName);
- test.assertEquals(isPublic, site.isPublic, "Site ispublic incorrect for site " + shortName);
+ test.assertNotNull(site);
+ test.assertEquals(sitePreset, site.sitePreset);
+ test.assertEquals(shortName, site.shortName);
+ test.assertEquals(title, site.title);
+ test.assertEquals(description, site.description);
+ test.assertEquals(isPublic, site.isPublic);
}
function testCRUD()
@@ -39,9 +39,46 @@ function testCRUD()
function testListSites()
{
- // TODO
+ // Create a couple of sites
+ siteService.createSite("sitePreset", "siteShortName", "siteTitle", "siteDescription", true);
+ siteService.createSite("sitePreset", "siteShortName2", "siteTitle", "siteDescription", true);
+
+ // List all the site
+ var sites = siteService.listSites(null, null);
+
+ // Check the list
+ test.assertNotNull(sites);
+ test.assertEquals(2, sites.length);
+
+ // TODO .. check the filters
+}
+
+function testMembership()
+{
+ var site = siteService.getSite("siteShortName");
+ test.assertNotNull(site);
+
+ var members = site.listMembers(null, null);
+ test.assertNotNull(members);
+ test.assertEquals(1, members.length);
+ test.assertEquals("SiteManager", members["UserOne"]);
+
+ site.setMembership("UserTwo", "SiteCollaborator");
+ members = site.listMembers(null, null);
+ test.assertNotNull(members);
+ test.assertEquals(2, members.length);
+ test.assertEquals("SiteManager", members["UserOne"]);
+ test.assertEquals("SiteCollaborator", members["UserTwo"]);
+
+ site.removeMembership("UserTwo");
+ members = site.listMembers(null, null);
+ test.assertNotNull(members);
+ test.assertEquals(1, members.length);
+ test.assertEquals("SiteManager", members["UserOne"]);
+
}
// Execute test's
testCRUD();
-testListSites();
\ No newline at end of file
+testListSites();
+testMembership();
\ No newline at end of file
diff --git a/source/java/org/alfresco/util/TestWithUserUtils.java b/source/java/org/alfresco/util/TestWithUserUtils.java
index 430914be1f..36f8fb7bbc 100644
--- a/source/java/org/alfresco/util/TestWithUserUtils.java
+++ b/source/java/org/alfresco/util/TestWithUserUtils.java
@@ -40,7 +40,7 @@ import org.alfresco.service.namespace.QName;
*
* @author Roy Wetherall
*/
-public abstract class TestWithUserUtils extends BaseSpringTest
+public abstract class TestWithUserUtils
{
/**
* Create a new user, including the corresponding person node.