blob: 25b55c79bb736e3a819b492d7e73e549edfe410f [file] [log] [blame]
// Copyright (C) 2018 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.common.data;
import static com.google.common.truth.Truth.assertThat;
import static com.google.gerrit.testing.GerritJUnit.assertThrows;
import com.google.gerrit.entities.AccountGroup;
import com.google.gerrit.entities.AccountGroup.UUID;
import org.junit.Test;
public class GroupReferenceTest {
@Test
public void forGroupDescription() {
String name = "foo";
AccountGroup.UUID uuid = AccountGroup.uuid("uuid-foo");
GroupReference groupReference =
GroupReference.forGroup(
new GroupDescription.Basic() {
@Override
public String getUrl() {
return null;
}
@Override
public String getName() {
return name;
}
@Override
public UUID getGroupUUID() {
return uuid;
}
@Override
public String getEmailAddress() {
return null;
}
});
assertThat(groupReference.getName()).isEqualTo(name);
assertThat(groupReference.getUUID()).isEqualTo(uuid);
}
@Test
public void create() {
AccountGroup.UUID uuid = AccountGroup.uuid("uuid");
String name = "foo";
GroupReference groupReference = new GroupReference(uuid, name);
assertThat(groupReference.getUUID()).isEqualTo(uuid);
assertThat(groupReference.getName()).isEqualTo(name);
}
@Test
public void createWithoutUuid() {
// GroupReferences where the UUID is null are used to represent groups from project.config that
// cannot be resolved.
String name = "foo";
GroupReference groupReference = new GroupReference(name);
assertThat(groupReference.getUUID()).isNull();
assertThat(groupReference.getName()).isEqualTo(name);
}
@Test
public void cannotCreateWithoutName() {
assertThrows(
NullPointerException.class, () -> new GroupReference(AccountGroup.uuid("uuid"), null));
}
@Test
public void isGroupReference() {
assertThat(GroupReference.isGroupReference("foo")).isFalse();
assertThat(GroupReference.isGroupReference("groupfoo")).isFalse();
assertThat(GroupReference.isGroupReference("group foo")).isTrue();
assertThat(GroupReference.isGroupReference("group foo-bar")).isTrue();
assertThat(GroupReference.isGroupReference("group foo bar")).isTrue();
}
@Test
public void extractGroupName() {
assertThat(GroupReference.extractGroupName("foo")).isNull();
assertThat(GroupReference.extractGroupName("groupfoo")).isNull();
assertThat(GroupReference.extractGroupName("group foo")).isEqualTo("foo");
assertThat(GroupReference.extractGroupName("group foo-bar")).isEqualTo("foo-bar");
assertThat(GroupReference.extractGroupName("group foo bar")).isEqualTo("foo bar");
}
@Test
public void getAndSetUuid() {
AccountGroup.UUID uuid = AccountGroup.uuid("uuid-foo");
String name = "foo";
GroupReference groupReference = new GroupReference(uuid, name);
assertThat(groupReference.getUUID()).isEqualTo(uuid);
AccountGroup.UUID uuid2 = AccountGroup.uuid("uuid-bar");
groupReference.setUUID(uuid2);
assertThat(groupReference.getUUID()).isEqualTo(uuid2);
// GroupReferences where the UUID is null are used to represent groups from project.config that
// cannot be resolved.
groupReference.setUUID(null);
assertThat(groupReference.getUUID()).isNull();
}
@Test
public void getAndSetName() {
AccountGroup.UUID uuid = AccountGroup.uuid("uuid-foo");
String name = "foo";
GroupReference groupReference = new GroupReference(uuid, name);
assertThat(groupReference.getName()).isEqualTo(name);
String name2 = "bar";
groupReference.setName(name2);
assertThat(groupReference.getName()).isEqualTo(name2);
assertThrows(NullPointerException.class, () -> groupReference.setName(null));
}
@Test
public void toConfigValue() {
String name = "foo";
GroupReference groupReference = new GroupReference(AccountGroup.uuid("uuid-foo"), name);
assertThat(groupReference.toConfigValue()).isEqualTo("group " + name);
}
@Test
public void testEquals() {
AccountGroup.UUID uuid1 = AccountGroup.uuid("uuid-foo");
AccountGroup.UUID uuid2 = AccountGroup.uuid("uuid-bar");
String name1 = "foo";
String name2 = "bar";
GroupReference groupReference1 = new GroupReference(uuid1, name1);
GroupReference groupReference2 = new GroupReference(uuid1, name2);
GroupReference groupReference3 = new GroupReference(uuid2, name1);
assertThat(groupReference1.equals(groupReference2)).isTrue();
assertThat(groupReference1.equals(groupReference3)).isFalse();
assertThat(groupReference2.equals(groupReference3)).isFalse();
}
@Test
public void testHashcode() {
AccountGroup.UUID uuid1 = AccountGroup.uuid("uuid1");
assertThat(new GroupReference(uuid1, "foo").hashCode())
.isEqualTo(new GroupReference(uuid1, "bar").hashCode());
// Check that the following calls don't fail with an exception.
new GroupReference("bar").hashCode();
}
}