diff --git a/src/org/labkey/test/tests/GroupTest.java b/src/org/labkey/test/tests/GroupTest.java index 1918bd90bb..6c12c867bf 100644 --- a/src/org/labkey/test/tests/GroupTest.java +++ b/src/org/labkey/test/tests/GroupTest.java @@ -19,6 +19,10 @@ import org.junit.BeforeClass; import org.junit.Test; import org.junit.experimental.categories.Category; +import org.labkey.remoteapi.CommandException; +import org.labkey.remoteapi.query.Filter; +import org.labkey.remoteapi.query.SelectRowsCommand; +import org.labkey.remoteapi.query.SelectRowsResponse; import org.labkey.test.BaseWebDriverTest; import org.labkey.test.Locator; import org.labkey.test.TestTimeoutException; @@ -32,6 +36,7 @@ import org.labkey.test.util.PortalHelper; import org.labkey.test.util.WikiHelper; +import java.io.IOException; import java.util.Arrays; import java.util.HashSet; import java.util.List; @@ -48,6 +53,7 @@ public class GroupTest extends BaseWebDriverTest protected static final String COMPOUND_GROUP = "group2"; protected static final String BAD_GROUP = "group3"; protected static final String CHILD_GROUP = "group4"; + protected static final String EMPTY_GROUP = "emptyGroupToDelete"; protected static final String[] TEST_USERS_FOR_GROUP = {"user1_grouptest@" + SIMPLE_GROUP + ".group.test", "user2_grouptest@" + SIMPLE_GROUP + ".group.test", "user3_grouptest@" + COMPOUND_GROUP + ".group.test"}; protected static final String[] TEST_DISPLAY_NAMES_FOR_GROUP = {"user1 grouptest", "user2 grouptest", "user3 grouptest"}; protected static final String SITE_USER_IN_GROUP = "useringroup"; @@ -79,6 +85,7 @@ protected void doCleanup(boolean afterTest) throws TestTimeoutException permissionsHelper.deleteGroup(CHILD_GROUP); permissionsHelper.deleteGroup(SITE_USER_GROUP); permissionsHelper.deleteGroup(API_SITE_GROUP); + permissionsHelper.deleteGroup(EMPTY_GROUP); _userHelper.deleteUsers(false, TEST_USERS_FOR_GROUP); _userHelper.deleteUsers(false, SITE_USER_EMAILS); _containerHelper.deleteProject(getProjectName(), afterTest); @@ -93,7 +100,7 @@ public static void setup() } @Test - public void testSteps() + public void testSteps() throws IOException, CommandException { for (String user : TEST_USERS_FOR_GROUP) { @@ -110,6 +117,7 @@ public void testSteps() _permissionsHelper.createGlobalPermissionsGroup(SIMPLE_GROUP, TEST_USERS_FOR_GROUP[0], TEST_USERS_FOR_GROUP[1]); _permissionsHelper.createGlobalPermissionsGroup(COMPOUND_GROUP, SIMPLE_GROUP, TEST_USERS_FOR_GROUP[2]); + _permissionsHelper.createGlobalPermissionsGroup(EMPTY_GROUP); verifyExportFunction(); @@ -135,6 +143,13 @@ public void testSteps() waitForText("Author"); _securityHelper.setSiteGroupPermissions("All Site Users", "Author"); + // Ensure that deleting from the group's page works too. Issue 52614 + _permissionsHelper.deleteGlobalGroupFromDetailsPage(EMPTY_GROUP); + SelectRowsCommand selectRowsCommand = new SelectRowsCommand("core", "Groups"); + selectRowsCommand.setFilters(List.of(new Filter("Name", EMPTY_GROUP))); + SelectRowsResponse response = selectRowsCommand.execute(createDefaultConnection(), "/"); + assertEquals(EMPTY_GROUP + " should have been deleted", 0, response.getRows().size()); + permissionsReportTest(); goToProjectHome(); diff --git a/src/org/labkey/test/util/UIPermissionsHelper.java b/src/org/labkey/test/util/UIPermissionsHelper.java index 6b385c3119..f70fc77507 100644 --- a/src/org/labkey/test/util/UIPermissionsHelper.java +++ b/src/org/labkey/test/util/UIPermissionsHelper.java @@ -73,6 +73,17 @@ public void startCreateGlobalPermissionsGroup(@LoggedParam String groupName, boo _driver._extHelper.waitForExtDialog(groupName + " Information"); } + @LogMethod + public void deleteGlobalGroupFromDetailsPage(@LoggedParam String groupName) + { + goToSiteGroupScreen(groupName); + Locator.XPathLocator deleteButton = Locator.lkButton("Delete Empty Group"); + _driver.waitForElement(deleteButton); + _driver.click(deleteButton); + _driver.assertAlert("Permanently delete group /" + groupName + "?"); + _driver.waitForElement(Ext4Helper.Locators.ext4Button("Save and Finish")); + } + @LogMethod public Integer createGlobalPermissionsGroup(@LoggedParam String groupName, boolean failIfAlreadyExists, @LoggedParam String... users) { @@ -227,6 +238,12 @@ private void _selectPermission(String userOrGroupName, String group, String perm @Override public void addUserToSiteGroup(String userName, String groupName) + { + goToSiteGroupScreen(groupName); + addUserToGroupFromGroupScreen(userName); + } + + private void goToSiteGroupScreen(String groupName) { _driver.ensureAdminMode(); switch (groupName) @@ -244,7 +261,6 @@ public void addUserToSiteGroup(String userName, String groupName) _driver.click(groupLoc); _driver.clickAndWait(Locator.linkContainingText("manage group")); } - addUserToGroupFromGroupScreen(userName); } @Override