summaryrefslogtreecommitdiffstats
path: root/javatests/com/google/gerrit/server/account/UniversalGroupBackendTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'javatests/com/google/gerrit/server/account/UniversalGroupBackendTest.java')
-rw-r--r--javatests/com/google/gerrit/server/account/UniversalGroupBackendTest.java144
1 files changed, 144 insertions, 0 deletions
diff --git a/javatests/com/google/gerrit/server/account/UniversalGroupBackendTest.java b/javatests/com/google/gerrit/server/account/UniversalGroupBackendTest.java
new file mode 100644
index 0000000000..f69bafa7a2
--- /dev/null
+++ b/javatests/com/google/gerrit/server/account/UniversalGroupBackendTest.java
@@ -0,0 +1,144 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.server.account;
+
+import static com.google.gerrit.server.group.SystemGroupBackend.ANONYMOUS_USERS;
+import static com.google.gerrit.server.group.SystemGroupBackend.PROJECT_OWNERS;
+import static com.google.gerrit.server.group.SystemGroupBackend.REGISTERED_USERS;
+import static org.easymock.EasyMock.anyObject;
+import static org.easymock.EasyMock.createMock;
+import static org.easymock.EasyMock.createNiceMock;
+import static org.easymock.EasyMock.eq;
+import static org.easymock.EasyMock.expect;
+import static org.easymock.EasyMock.getCurrentArguments;
+import static org.easymock.EasyMock.not;
+import static org.easymock.EasyMock.replay;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+import com.google.gerrit.extensions.registration.DynamicSet;
+import com.google.gerrit.reviewdb.client.AccountGroup;
+import com.google.gerrit.reviewdb.client.AccountGroup.UUID;
+import com.google.gerrit.server.IdentifiedUser;
+import com.google.gerrit.server.group.SystemGroupBackend;
+import com.google.gerrit.server.plugincontext.PluginContext.PluginMetrics;
+import com.google.gerrit.server.plugincontext.PluginSetContext;
+import com.google.gerrit.testing.GerritBaseTests;
+import java.util.Set;
+import org.easymock.IAnswer;
+import org.eclipse.jgit.lib.Config;
+import org.junit.Before;
+import org.junit.Test;
+
+public class UniversalGroupBackendTest extends GerritBaseTests {
+ private static final AccountGroup.UUID OTHER_UUID = new AccountGroup.UUID("other");
+
+ private UniversalGroupBackend backend;
+ private IdentifiedUser user;
+
+ private DynamicSet<GroupBackend> backends;
+
+ @Before
+ public void setup() {
+ user = createNiceMock(IdentifiedUser.class);
+ replay(user);
+ backends = new DynamicSet<>();
+ backends.add("gerrit", new SystemGroupBackend(new Config()));
+ backend =
+ new UniversalGroupBackend(
+ new PluginSetContext<>(backends, PluginMetrics.DISABLED_INSTANCE));
+ }
+
+ @Test
+ public void handles() {
+ assertTrue(backend.handles(ANONYMOUS_USERS));
+ assertTrue(backend.handles(PROJECT_OWNERS));
+ assertFalse(backend.handles(OTHER_UUID));
+ }
+
+ @Test
+ public void get() {
+ assertEquals("Registered Users", backend.get(REGISTERED_USERS).getName());
+ assertEquals("Project Owners", backend.get(PROJECT_OWNERS).getName());
+ assertNull(backend.get(OTHER_UUID));
+ }
+
+ @Test
+ public void suggest() {
+ assertTrue(backend.suggest("X", null).isEmpty());
+ assertEquals(1, backend.suggest("project", null).size());
+ assertEquals(1, backend.suggest("reg", null).size());
+ }
+
+ @Test
+ public void sytemGroupMemberships() {
+ GroupMembership checker = backend.membershipsOf(user);
+ assertTrue(checker.contains(REGISTERED_USERS));
+ assertFalse(checker.contains(OTHER_UUID));
+ assertFalse(checker.contains(PROJECT_OWNERS));
+ }
+
+ @Test
+ public void knownGroups() {
+ GroupMembership checker = backend.membershipsOf(user);
+ Set<UUID> knownGroups = checker.getKnownGroups();
+ assertEquals(2, knownGroups.size());
+ assertTrue(knownGroups.contains(REGISTERED_USERS));
+ assertTrue(knownGroups.contains(ANONYMOUS_USERS));
+ }
+
+ @Test
+ public void otherMemberships() {
+ final AccountGroup.UUID handled = new AccountGroup.UUID("handled");
+ final AccountGroup.UUID notHandled = new AccountGroup.UUID("not handled");
+ final IdentifiedUser member = createNiceMock(IdentifiedUser.class);
+ final IdentifiedUser notMember = createNiceMock(IdentifiedUser.class);
+
+ GroupBackend backend = createMock(GroupBackend.class);
+ expect(backend.handles(handled)).andStubReturn(true);
+ expect(backend.handles(not(eq(handled)))).andStubReturn(false);
+ expect(backend.membershipsOf(anyObject(IdentifiedUser.class)))
+ .andStubAnswer(
+ new IAnswer<GroupMembership>() {
+ @Override
+ public GroupMembership answer() throws Throwable {
+ Object[] args = getCurrentArguments();
+ GroupMembership membership = createMock(GroupMembership.class);
+ expect(membership.contains(eq(handled))).andStubReturn(args[0] == member);
+ expect(membership.contains(not(eq(notHandled)))).andStubReturn(false);
+ replay(membership);
+ return membership;
+ }
+ });
+ replay(member, notMember, backend);
+
+ backends = new DynamicSet<>();
+ backends.add("gerrit", backend);
+ backend =
+ new UniversalGroupBackend(
+ new PluginSetContext<>(backends, PluginMetrics.DISABLED_INSTANCE));
+
+ GroupMembership checker = backend.membershipsOf(member);
+ assertFalse(checker.contains(REGISTERED_USERS));
+ assertFalse(checker.contains(OTHER_UUID));
+ assertTrue(checker.contains(handled));
+ assertFalse(checker.contains(notHandled));
+ checker = backend.membershipsOf(notMember);
+ assertFalse(checker.contains(handled));
+ assertFalse(checker.contains(notHandled));
+ }
+}