You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by or...@apache.org on 2021/06/08 23:51:01 UTC
[qpid-broker-j] 01/03: QPID-8525:[Broker-J]Fixed child deletion
issue in group providers
This is an automated email from the ASF dual-hosted git repository.
orudyy pushed a commit to branch 8.0.x
in repository https://gitbox.apache.org/repos/asf/qpid-broker-j.git
commit 870e05b04b1db3347e439ac8c0c677c01de497be
Author: Dedeepya T <de...@yahoo.co.in>
AuthorDate: Tue Jun 8 10:53:18 2021 +0530
QPID-8525:[Broker-J]Fixed child deletion issue in group providers
This closes #88
(cherry picked from commit db639ff523b2cf28f8a64b2d06e54b5534182111)
---
.../model/adapter/FileBasedGroupProviderImpl.java | 14 +-
.../server/security/group/FileGroupDatabase.java | 57 ++++++--
.../adapter/FileBasedGroupProviderImplTest.java | 156 ++++++++++++++++++---
.../FileGroupDatabaseCaseInsensitiveTest.java | 29 +++-
.../security/group/FileGroupDatabaseTest.java | 13 +-
5 files changed, 213 insertions(+), 56 deletions(-)
diff --git a/broker-core/src/main/java/org/apache/qpid/server/model/adapter/FileBasedGroupProviderImpl.java b/broker-core/src/main/java/org/apache/qpid/server/model/adapter/FileBasedGroupProviderImpl.java
index 7760f7b..8e108ec 100644
--- a/broker-core/src/main/java/org/apache/qpid/server/model/adapter/FileBasedGroupProviderImpl.java
+++ b/broker-core/src/main/java/org/apache/qpid/server/model/adapter/FileBasedGroupProviderImpl.java
@@ -203,19 +203,19 @@ public class FileBasedGroupProviderImpl
if (getState() != State.ACTIVE)
{
- throw new IllegalConfigurationException(String.format("Group provider '%s' is not activated. Cannot create a group.", getName()));
+ throw new IllegalConfigurationException(String.format(
+ "Group provider '%s' is not activated. Cannot create a group.",
+ getName()));
}
-
_groupDatabase.createGroup(groupName);
- Map<String,Object> attrMap = new HashMap<String, Object>();
+ Map<String, Object> attrMap = new HashMap<String, Object>();
UUID id = UUID.randomUUID();
attrMap.put(ConfiguredObject.ID, id);
attrMap.put(ConfiguredObject.NAME, groupName);
GroupAdapter groupAdapter = new GroupAdapter(attrMap);
groupAdapter.create();
return Futures.immediateFuture((C) groupAdapter);
-
}
else
{
@@ -359,16 +359,14 @@ public class FileBasedGroupProviderImpl
if (childClass == GroupMember.class)
{
String memberName = (String) attributes.get(GroupMember.NAME);
-
_groupDatabase.addUserToGroup(memberName, getName());
UUID id = UUID.randomUUID();
- Map<String,Object> attrMap = new HashMap<String, Object>();
- attrMap.put(GroupMember.ID,id);
+ Map<String, Object> attrMap = new HashMap<String, Object>();
+ attrMap.put(GroupMember.ID, id);
attrMap.put(GroupMember.NAME, memberName);
GroupMemberAdapter groupMemberAdapter = new GroupMemberAdapter(attrMap);
groupMemberAdapter.create();
return Futures.immediateFuture((C) groupMemberAdapter);
-
}
else
{
diff --git a/broker-core/src/main/java/org/apache/qpid/server/security/group/FileGroupDatabase.java b/broker-core/src/main/java/org/apache/qpid/server/security/group/FileGroupDatabase.java
index 8f08ccb..8d908e6 100644
--- a/broker-core/src/main/java/org/apache/qpid/server/security/group/FileGroupDatabase.java
+++ b/broker-core/src/main/java/org/apache/qpid/server/security/group/FileGroupDatabase.java
@@ -36,6 +36,7 @@ import com.google.common.base.Joiner;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.apache.qpid.server.configuration.IllegalConfigurationException;
import org.apache.qpid.server.model.adapter.FileBasedGroupProvider;
import org.apache.qpid.server.util.BaseAction;
import org.apache.qpid.server.util.FileHelper;
@@ -104,8 +105,10 @@ public class FileGroupDatabase implements GroupDatabase
@Override
public synchronized void addUserToGroup(String user, String group)
{
- Set<String> users = _groupToUserMap.get(keySearch(_groupToUserMap.keySet(), group));
- if (users == null)
+ final String groupKey = keySearch(_groupToUserMap.keySet(), group);
+ Set<String> groupUsers = _groupToUserMap.get(groupKey);
+ final String userKey = keySearch(_userToGroupMap.keySet(), user);
+ if (groupUsers == null)
{
throw new IllegalArgumentException("Group "
+ group
@@ -113,16 +116,30 @@ public class FileGroupDatabase implements GroupDatabase
+ user
+ " to it");
}
+ else if (groupUsers.contains(userKey))
+ {
+ throw new IllegalConfigurationException(String.format("Group member with name '%s' already exists", user));
+ }
- users.add(keySearch(users, user));
-
- Set<String> groups = _userToGroupMap.get(keySearch(_userToGroupMap.keySet(), user));
+ final String groupUserKey = keySearch(groupUsers, user);
+ if (!userKey.equals(groupUserKey))
+ {
+ throw new IllegalConfigurationException(String.format(
+ "Inconsistent data: user key '%s' is not equal to a group key '%s'",
+ userKey,
+ groupKey));
+ }
+ else
+ {
+ groupUsers.add(groupUserKey);
+ }
+ Set<String> groups = _userToGroupMap.get(userKey);
if (groups == null)
{
groups = new ConcurrentSkipListSet<String>();
_userToGroupMap.put(user, groups);
}
- groups.add(keySearch(_groupToUserMap.keySet(), group));
+ groups.add(groupKey);
update();
}
@@ -174,10 +191,32 @@ public class FileGroupDatabase implements GroupDatabase
@Override
public synchronized void createGroup(String group)
{
- Set<String> users = new ConcurrentSkipListSet<String>();
- _groupToUserMap.put(group, users);
+ if (!exists(group, _groupToUserMap.keySet()))
+ {
+ Set<String> users = new ConcurrentSkipListSet<String>();
+ _groupToUserMap.put(group, users);
+ update();
+ }
+ else
+ {
+ throw new IllegalConfigurationException(String.format("Group with name '%s' already exists", group));
+ }
+ }
- update();
+ private boolean exists(final String searchString, final Set<String> set)
+ {
+ if (!_groupProvider.isCaseSensitive())
+ {
+ for (String key : set)
+ {
+ if (key.equalsIgnoreCase(searchString))
+ {
+ return true;
+ }
+ }
+ return false;
+ }
+ return set.contains(searchString);
}
@Override
diff --git a/broker-core/src/test/java/org/apache/qpid/server/model/adapter/FileBasedGroupProviderImplTest.java b/broker-core/src/test/java/org/apache/qpid/server/model/adapter/FileBasedGroupProviderImplTest.java
index 8a5c32e..410c913 100644
--- a/broker-core/src/test/java/org/apache/qpid/server/model/adapter/FileBasedGroupProviderImplTest.java
+++ b/broker-core/src/test/java/org/apache/qpid/server/model/adapter/FileBasedGroupProviderImplTest.java
@@ -29,6 +29,7 @@ import static org.hamcrest.Matchers.equalTo;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.Assert.assertThrows;
import static org.junit.Assert.fail;
import static org.mockito.Mockito.when;
@@ -45,6 +46,7 @@ import java.util.stream.Collectors;
import com.google.common.collect.Sets;
import org.junit.After;
+import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
@@ -55,6 +57,7 @@ import org.apache.qpid.server.model.ConfiguredObjectFactory;
import org.apache.qpid.server.model.Group;
import org.apache.qpid.server.model.GroupMember;
import org.apache.qpid.server.model.GroupProvider;
+import org.apache.qpid.server.security.group.FileGroupDatabase;
import org.apache.qpid.test.utils.TestFileUtils;
import org.apache.qpid.test.utils.UnitTestBase;
@@ -90,7 +93,7 @@ public class FileBasedGroupProviderImplTest extends UnitTestBase
@Test
public void testValidationOnCreateWithInvalidPath()
{
- Map<String,Object> attributes = new HashMap<>();
+ Map<String, Object> attributes = new HashMap<>();
_groupFile = TestFileUtils.createTempFile(this, "groups");
String groupsFile = _groupFile.getAbsolutePath() + File.separator + "groups";
@@ -103,12 +106,12 @@ public class FileBasedGroupProviderImplTest extends UnitTestBase
{
_objectFactory.create(GroupProvider.class, attributes, _broker);
fail("Exception is expected on validation of groups provider with invalid path");
- } catch (IllegalConfigurationException e)
+ }
+ catch (IllegalConfigurationException e)
{
assertEquals("Unexpected exception message:" + e.getMessage(),
- String.format("Cannot create groups file at '%s'", groupsFile),
- e.getMessage());
-
+ String.format("Cannot create groups file at '%s'", groupsFile),
+ e.getMessage());
}
}
@@ -130,8 +133,8 @@ public class FileBasedGroupProviderImplTest extends UnitTestBase
catch (IllegalConfigurationException e)
{
assertEquals("Unexpected exception message:" + e.getMessage(),
- String.format("Cannot load groups from '%s'", groupsFile),
- e.getMessage());
+ String.format("Cannot load groups from '%s'", groupsFile),
+ e.getMessage());
}
}
@@ -186,15 +189,15 @@ public class FileBasedGroupProviderImplTest extends UnitTestBase
@SuppressWarnings("unchecked")
GroupProvider<?> provider = _objectFactory.create(GroupProvider.class, providerAttrs, _broker);
assertThat(provider, is(instanceOf(FileBasedGroupProvider.class)));
- assertThat(((FileBasedGroupProvider)provider).isCaseSensitive(), is(true));
+ assertThat(((FileBasedGroupProvider) provider).isCaseSensitive(), is(true));
Set<Principal> adminGroups = provider.getGroupPrincipalsForUser(() -> "Root");
assertThat("No group should be found when caseSensitive=true",
adminGroups.stream().map(Principal::getName).collect(Collectors.toSet()),
- is(empty()));
+ is(empty()));
provider.setAttributes(Collections.singletonMap("caseSensitive", false));
- assertThat(((FileBasedGroupProvider)provider).isCaseSensitive(), is(false));
+ assertThat(((FileBasedGroupProvider) provider).isCaseSensitive(), is(false));
Set<Principal> adminGroups2 = provider.getGroupPrincipalsForUser(() -> "Root");
assertThat("root has unexpected group membership",
adminGroups2.stream().map(Principal::getName).collect(Collectors.toSet()),
@@ -230,7 +233,7 @@ public class FileBasedGroupProviderImplTest extends UnitTestBase
public void testRemoveGroupAndMember() throws Exception
{
Map<String, Set<String>> input = new HashMap<>();
- input.put("supers", Sets.newHashSet( "root"));
+ input.put("supers", Sets.newHashSet("root"));
input.put("operators", Sets.newHashSet("operator", "root"));
_groupFile = createTemporaryGroupFile(input);
@@ -270,8 +273,8 @@ public class FileBasedGroupProviderImplTest extends UnitTestBase
providerAttrs.put(FileBasedGroupProvider.NAME, getTestName());
{
- @SuppressWarnings("unchecked")
- final GroupProvider<?> provider = _objectFactory.create(GroupProvider.class, providerAttrs, _broker);
+ @SuppressWarnings("unchecked") final GroupProvider<?> provider =
+ _objectFactory.create(GroupProvider.class, providerAttrs, _broker);
assertThat(provider.getChildren(Group.class).size(), is(equalTo(0)));
final Map<String, Object> groupAttrs = Collections.singletonMap(Group.NAME, "group");
@@ -284,8 +287,8 @@ public class FileBasedGroupProviderImplTest extends UnitTestBase
}
{
- @SuppressWarnings("unchecked")
- final GroupProvider<?> provider = _objectFactory.create(GroupProvider.class, providerAttrs, _broker);
+ @SuppressWarnings("unchecked") final GroupProvider<?> provider =
+ _objectFactory.create(GroupProvider.class, providerAttrs, _broker);
assertThat(provider.getChildren(Group.class).size(), is(equalTo(1)));
final Group group = provider.getChildByName(Group.class, "group");
@@ -297,8 +300,8 @@ public class FileBasedGroupProviderImplTest extends UnitTestBase
}
{
- @SuppressWarnings("unchecked")
- final GroupProvider<?> provider = _objectFactory.create(GroupProvider.class, providerAttrs, _broker);
+ @SuppressWarnings("unchecked") final GroupProvider<?> provider =
+ _objectFactory.create(GroupProvider.class, providerAttrs, _broker);
final Group group = provider.getChildByName(Group.class, "group");
assertThat(group.getChildren(GroupMember.class).size(), is(equalTo(0)));
@@ -307,8 +310,8 @@ public class FileBasedGroupProviderImplTest extends UnitTestBase
}
{
- @SuppressWarnings("unchecked")
- final GroupProvider<?> provider = _objectFactory.create(GroupProvider.class, providerAttrs, _broker);
+ @SuppressWarnings("unchecked") final GroupProvider<?> provider =
+ _objectFactory.create(GroupProvider.class, providerAttrs, _broker);
assertThat(provider.getChildren(Group.class).size(), is(equalTo(0)));
provider.close();
}
@@ -325,8 +328,8 @@ public class FileBasedGroupProviderImplTest extends UnitTestBase
providerAttrs.put(FileBasedGroupProvider.PATH, groupsFile);
providerAttrs.put(FileBasedGroupProvider.NAME, getTestName());
- @SuppressWarnings("unchecked")
- final GroupProvider<?> provider = _objectFactory.create(GroupProvider.class, providerAttrs, _broker);
+ @SuppressWarnings("unchecked") final GroupProvider<?> provider =
+ _objectFactory.create(GroupProvider.class, providerAttrs, _broker);
provider.delete();
assertThat(_groupFile.exists(), is(equalTo(false)));
@@ -364,6 +367,115 @@ public class FileBasedGroupProviderImplTest extends UnitTestBase
}
}
+ @Test
+ public void testCreateDuplicateGroup() throws Exception
+ {
+ _groupFile = createTemporaryGroupFile(Collections.emptyMap());
+
+ Map<String, Object> providerAttrs = new HashMap<>();
+ String groupsFile = _groupFile.getAbsolutePath();
+ providerAttrs.put(FileBasedGroupProvider.TYPE, GROUP_FILE_PROVIDER_TYPE);
+ providerAttrs.put(FileBasedGroupProvider.PATH, groupsFile);
+ providerAttrs.put(FileBasedGroupProvider.NAME, getTestName());
+
+ @SuppressWarnings("unchecked")
+ GroupProvider<?> provider = _objectFactory.create(GroupProvider.class, providerAttrs, _broker);
+
+ assertThat(provider.getChildren(Group.class).size(), is(equalTo(0)));
+
+ final Map<String, Object> groupAttrs = Collections.singletonMap(Group.NAME, "supers");
+ Group superGroup = provider.createChild(Group.class, groupAttrs);
+ assertThat(superGroup.getName(), is(equalTo("supers")));
+
+ assertThrows("Group member with name root1 already exists", IllegalConfigurationException.class, ()->provider.createChild(Group.class, groupAttrs));
+ }
+
+ @Test
+ public void testCreateDuplicateMember() throws Exception
+ {
+ _groupFile = createTemporaryGroupFile(Collections.emptyMap());
+
+ Map<String, Object> providerAttrs = new HashMap<>();
+ String groupsFile = _groupFile.getAbsolutePath();
+ providerAttrs.put(FileBasedGroupProvider.TYPE, GROUP_FILE_PROVIDER_TYPE);
+ providerAttrs.put(FileBasedGroupProvider.PATH, groupsFile);
+ providerAttrs.put(FileBasedGroupProvider.NAME, getTestName());
+
+ @SuppressWarnings("unchecked")
+ GroupProvider<?> provider = _objectFactory.create(GroupProvider.class, providerAttrs, _broker);
+
+ assertThat(provider.getChildren(Group.class).size(), is(equalTo(0)));
+
+ final Map<String, Object> groupAttrs = Collections.singletonMap(Group.NAME, "supers");
+ Group superGroup = provider.createChild(Group.class, groupAttrs);
+ assertThat(superGroup.getName(), is(equalTo("supers")));
+
+ final Map<String, Object> memberAttrs1 = Collections.singletonMap(GroupMember.NAME, "root1");
+ GroupMember rootMember = (GroupMember) superGroup.createChild(GroupMember.class, memberAttrs1);
+ assertThat(rootMember.getName(), is(equalTo("root1")));
+
+ assertThrows("Group member with name root1 already exists", IllegalConfigurationException.class, ()->superGroup.createChild(GroupMember.class, memberAttrs1));
+ assertThat(superGroup.getChildren(GroupMember.class).size(), is(equalTo(1)));
+ }
+
+ @Test
+ public void testCreateGroups() throws Exception
+ {
+ _groupFile = createTemporaryGroupFile(Collections.emptyMap());
+
+ Map<String, Object> providerAttrs = new HashMap<>();
+ String groupsFile = _groupFile.getAbsolutePath();
+ providerAttrs.put(FileBasedGroupProvider.TYPE, GROUP_FILE_PROVIDER_TYPE);
+ providerAttrs.put(FileBasedGroupProvider.PATH, groupsFile);
+ providerAttrs.put(FileBasedGroupProvider.NAME, getTestName());
+
+ @SuppressWarnings("unchecked")
+ GroupProvider<?> provider = _objectFactory.create(GroupProvider.class, providerAttrs, _broker);
+
+ assertThat(provider.getChildren(Group.class).size(), is(equalTo(0)));
+
+ final Map<String, Object> groupAttrs = Collections.singletonMap(Group.NAME, "supers");
+ Group superGroup = provider.createChild(Group.class, groupAttrs);
+ assertThat(superGroup.getName(), is(equalTo("supers")));
+
+ final Map<String, Object> groupAttrs2 = Collections.singletonMap(Group.NAME, "Supers");
+ Group superGroup2 = provider.createChild(Group.class, groupAttrs2);
+ assertThat(superGroup2.getName(), is(equalTo("Supers")));
+
+ assertThat(provider.getChildren(Group.class).size(), is(equalTo(2)));
+ }
+
+ @Test(expected = IllegalConfigurationException.class)
+ public void testCreateMembers() throws Exception
+ {
+ _groupFile = createTemporaryGroupFile(Collections.emptyMap());
+
+ Map<String, Object> providerAttrs = new HashMap<>();
+ String groupsFile = _groupFile.getAbsolutePath();
+ providerAttrs.put(FileBasedGroupProvider.TYPE, GROUP_FILE_PROVIDER_TYPE);
+ providerAttrs.put(FileBasedGroupProvider.PATH, groupsFile);
+ providerAttrs.put(FileBasedGroupProvider.NAME, getTestName());
+
+ @SuppressWarnings("unchecked")
+ GroupProvider<?> provider = _objectFactory.create(GroupProvider.class, providerAttrs, _broker);
+
+ assertThat(provider.getChildren(Group.class).size(), is(equalTo(0)));
+
+ final Map<String, Object> groupAttrs = Collections.singletonMap(Group.NAME, "supers");
+ Group superGroup = provider.createChild(Group.class, groupAttrs);
+ assertThat(superGroup.getName(), is(equalTo("supers")));
+
+ final Map<String, Object> memberAttrs1 = Collections.singletonMap(GroupMember.NAME, "root1");
+ GroupMember rootMember = (GroupMember) superGroup.createChild(GroupMember.class, memberAttrs1);
+ assertThat(rootMember.getName(), is(equalTo("root1")));
+
+ superGroup.createChild(GroupMember.class, memberAttrs1);
+ assertThrows("Group member with name root1 already exists",
+ IllegalConfigurationException.class,
+ () -> superGroup.createChild(GroupMember.class, memberAttrs1));
+ assertThat(superGroup.getChildren(GroupMember.class).size(), is(equalTo(1)));
+ }
+
private File createTemporaryGroupFile(Map<String, Set<String>> groups) throws Exception
{
File groupFile = File.createTempFile("group", "grp");
@@ -378,7 +490,7 @@ public class FileBasedGroupProviderImplTest extends UnitTestBase
.stream()
.collect(Collectors.joining(","))));
props.putAll(m);
- try(final FileOutputStream out = new FileOutputStream(groupFile))
+ try (final FileOutputStream out = new FileOutputStream(groupFile))
{
props.store(out, "test group file");
}
diff --git a/broker-core/src/test/java/org/apache/qpid/server/security/group/FileGroupDatabaseCaseInsensitiveTest.java b/broker-core/src/test/java/org/apache/qpid/server/security/group/FileGroupDatabaseCaseInsensitiveTest.java
index 2f0a923..2288977 100644
--- a/broker-core/src/test/java/org/apache/qpid/server/security/group/FileGroupDatabaseCaseInsensitiveTest.java
+++ b/broker-core/src/test/java/org/apache/qpid/server/security/group/FileGroupDatabaseCaseInsensitiveTest.java
@@ -21,6 +21,7 @@ package org.apache.qpid.server.security.group;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertThrows;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import static org.mockito.Mockito.mock;
@@ -34,6 +35,8 @@ import org.junit.After;
import org.junit.Before;
import org.junit.Test;
+import org.apache.qpid.server.configuration.IllegalConfigurationException;
+import org.apache.qpid.server.model.Group;
import org.apache.qpid.server.model.adapter.FileBasedGroupProvider;
import org.apache.qpid.test.utils.UnitTestBase;
@@ -168,20 +171,15 @@ public class FileGroupDatabaseCaseInsensitiveTest extends UnitTestBase
assertTrue(groups.contains(MY_GROUP1));
}
- @Test
+ @Test(expected = IllegalConfigurationException.class)
public void testGetGroupPrincipalsForUserWhenUserAddedToGroupTheyAreAlreadyInCaseInsensitive() throws Exception
{
_util.writeAndSetGroupFile("myGroup.users", USER1);
_fileGroupDatabase.addUserToGroup(USER1, MY_GROUP);
Set<String> groups = _fileGroupDatabase.getGroupsForUser(USER1.toUpperCase());
+ assertThrows("Group with name supers already exists", IllegalConfigurationException.class, ()->_fileGroupDatabase.addUserToGroup(USER1, MY_GROUP));
- assertEquals(1, groups.size());
- assertTrue(groups.contains(MY_GROUP));
-
- Set<String> users = _fileGroupDatabase.getUsersInGroup(MY_GROUP.toUpperCase());
- assertEquals(1, users.size());
- assertTrue(users.contains(USER1));
}
@Test
@@ -361,6 +359,23 @@ public class FileGroupDatabaseCaseInsensitiveTest extends UnitTestBase
}
@Test
+ public void testDuplicateCreateGroupPersistedToFileCaseInsensitive() throws Exception
+ {
+ _util.writeAndSetGroupFile();
+
+ Set<String> groups = _fileGroupDatabase.getAllGroups();
+ assertTrue(groups.isEmpty());
+
+ _fileGroupDatabase.createGroup(MY_GROUP);
+
+ groups = _fileGroupDatabase.getAllGroups();
+ assertEquals(1, groups.size());
+ assertTrue(groups.contains(MY_GROUP));
+
+ assertThrows("Group with name myGroup already exists", IllegalConfigurationException.class, ()->_fileGroupDatabase.createGroup(MY_GROUP));
+ }
+
+ @Test
public void testRemoveGroupPersistedToFileCaseInsensitive() throws Exception
{
_util.writeAndSetGroupFile("myGroup1.users", "user1,user2", "myGroup2.users", "user1,user2");
diff --git a/broker-core/src/test/java/org/apache/qpid/server/security/group/FileGroupDatabaseTest.java b/broker-core/src/test/java/org/apache/qpid/server/security/group/FileGroupDatabaseTest.java
index 0ccbe3c..4a6d269 100644
--- a/broker-core/src/test/java/org/apache/qpid/server/security/group/FileGroupDatabaseTest.java
+++ b/broker-core/src/test/java/org/apache/qpid/server/security/group/FileGroupDatabaseTest.java
@@ -21,6 +21,7 @@ package org.apache.qpid.server.security.group;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertThrows;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import static org.mockito.Mockito.mock;
@@ -34,6 +35,7 @@ import org.junit.After;
import org.junit.Before;
import org.junit.Test;
+import org.apache.qpid.server.configuration.IllegalConfigurationException;
import org.apache.qpid.server.model.adapter.FileBasedGroupProvider;
import org.apache.qpid.test.utils.UnitTestBase;
@@ -215,21 +217,12 @@ public class FileGroupDatabaseTest extends UnitTestBase
assertTrue(_fileGroupDatabase.getGroupsForUser(USER1.toUpperCase()).isEmpty());
}
- @Test
+ @Test(expected = IllegalConfigurationException.class)
public void testGetGroupPrincipalsForUserWhenUserAddedToGroupTheyAreAlreadyIn() throws Exception
{
_util.writeAndSetGroupFile("myGroup.users", USER1);
_fileGroupDatabase.addUserToGroup(USER1, MY_GROUP);
- Set<String> groups = _fileGroupDatabase.getGroupsForUser(USER1);
-
- assertEquals(1, groups.size());
- assertTrue(groups.contains(MY_GROUP));
-
- Set<String> users = _fileGroupDatabase.getUsersInGroup(MY_GROUP);
- assertEquals(1, users.size());
- assertTrue(users.contains(USER1));
- assertTrue(_fileGroupDatabase.getGroupsForUser(MY_GROUP.toUpperCase()).isEmpty());
}
@Test
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org