Merge "Only return an ID on a test account/group creation"

This commit is contained in:
Edwin Kempin
2018-09-10 09:30:35 +00:00
committed by Gerrit Code Review
12 changed files with 166 additions and 214 deletions

View File

@@ -1487,12 +1487,7 @@ public abstract class AbstractDaemonTest {
assertNotifyTo(expected.email, expected.fullName);
}
protected void assertNotifyTo(
com.google.gerrit.acceptance.testsuite.account.TestAccount expected) {
assertNotifyTo(expected.preferredEmail().orElse(null), expected.fullname().orElse(null));
}
private void assertNotifyTo(String expectedEmail, String expectedFullname) {
protected void assertNotifyTo(String expectedEmail, String expectedFullname) {
Address expectedAddress = new Address(expectedFullname, expectedEmail);
assertThat(sender.getMessages()).hasSize(1);
Message m = sender.getMessages().get(0);
@@ -1506,11 +1501,6 @@ public abstract class AbstractDaemonTest {
assertNotifyCc(expected.emailAddress);
}
protected void assertNotifyCc(
com.google.gerrit.acceptance.testsuite.account.TestAccount expected) {
assertNotifyCc(expected.preferredEmail().orElse(null), expected.fullname().orElse(null));
}
protected void assertNotifyCc(String expectedEmail, String expectedFullname) {
Address expectedAddress = new Address(expectedFullname, expectedEmail);
assertNotifyCc(expectedAddress);
@@ -1533,13 +1523,10 @@ public abstract class AbstractDaemonTest {
assertThat(m.headers().get("Cc").isEmpty()).isTrue();
}
protected void assertNotifyBcc(
com.google.gerrit.acceptance.testsuite.account.TestAccount expected) {
protected void assertNotifyBcc(String expectedEmail, String expectedFullName) {
assertThat(sender.getMessages()).hasSize(1);
Message m = sender.getMessages().get(0);
assertThat(m.rcpt())
.containsExactly(
new Address(expected.fullname().orElse(null), expected.preferredEmail().orElse(null)));
assertThat(m.rcpt()).containsExactly(new Address(expectedFullName, expectedEmail));
assertThat(m.headers().get("To").isEmpty()).isTrue();
assertThat(m.headers().get("Cc").isEmpty()).isTrue();
}

View File

@@ -42,7 +42,7 @@ public interface AccountOperations {
* <p>Example:
*
* <pre>
* TestAccount createdAccount = accountOperations
* Account.Id createdAccountId = accountOperations
* .newAccount()
* .username("janedoe")
* .preferredEmail("janedoe@example.com")

View File

@@ -59,12 +59,12 @@ public class AccountOperationsImpl implements AccountOperations {
return TestAccountCreation.builder(this::createAccount);
}
private TestAccount createAccount(TestAccountCreation accountCreation) throws Exception {
private Account.Id createAccount(TestAccountCreation accountCreation) throws Exception {
AccountsUpdate.AccountUpdater accountUpdater =
(account, updateBuilder) ->
fillBuilder(updateBuilder, accountCreation, account.getAccount().getId());
AccountState createdAccount = createAccount(accountUpdater);
return toTestAccount(createdAccount);
return createdAccount.getAccount().getId();
}
private AccountState createAccount(AccountsUpdate.AccountUpdater accountUpdater)
@@ -85,17 +85,6 @@ public class AccountOperationsImpl implements AccountOperations {
accountCreation.active().ifPresent(builder::setActive);
}
private static TestAccount toTestAccount(AccountState accountState) {
Account createdAccount = accountState.getAccount();
return TestAccount.builder()
.accountId(createdAccount.getId())
.preferredEmail(Optional.ofNullable(createdAccount.getPreferredEmail()))
.fullname(Optional.ofNullable(createdAccount.getFullName()))
.username(accountState.getUserName())
.active(accountState.getAccount().isActive())
.build();
}
private static InternalAccountUpdate.Builder setPreferredEmail(
InternalAccountUpdate.Builder builder, Account.Id accountId, String preferredEmail) {
return builder
@@ -133,6 +122,17 @@ public class AccountOperationsImpl implements AccountOperations {
return toTestAccount(account);
}
private TestAccount toTestAccount(AccountState accountState) {
Account account = accountState.getAccount();
return TestAccount.builder()
.accountId(account.getId())
.preferredEmail(Optional.ofNullable(account.getPreferredEmail()))
.fullname(Optional.ofNullable(account.getFullName()))
.username(accountState.getUserName())
.active(accountState.getAccount().isActive())
.build();
}
@Override
public TestAccountUpdate.Builder forUpdate() {
return TestAccountUpdate.builder(this::updateAccount);

View File

@@ -16,6 +16,7 @@ package com.google.gerrit.acceptance.testsuite.account;
import com.google.auto.value.AutoValue;
import com.google.gerrit.acceptance.testsuite.ThrowingFunction;
import com.google.gerrit.reviewdb.client.Account;
import java.util.Optional;
@AutoValue
@@ -32,9 +33,9 @@ public abstract class TestAccountCreation {
public abstract Optional<Boolean> active();
abstract ThrowingFunction<TestAccountCreation, TestAccount> accountCreator();
abstract ThrowingFunction<TestAccountCreation, Account.Id> accountCreator();
public static Builder builder(ThrowingFunction<TestAccountCreation, TestAccount> accountCreator) {
public static Builder builder(ThrowingFunction<TestAccountCreation, Account.Id> accountCreator) {
return new AutoValue_TestAccountCreation.Builder()
.accountCreator(accountCreator)
.httpPassword("http-pass");
@@ -83,11 +84,11 @@ public abstract class TestAccountCreation {
}
abstract Builder accountCreator(
ThrowingFunction<TestAccountCreation, TestAccount> accountCreator);
ThrowingFunction<TestAccountCreation, Account.Id> accountCreator);
abstract TestAccountCreation autoBuild();
public TestAccount create() throws Exception {
public Account.Id create() throws Exception {
TestAccountCreation accountUpdate = autoBuild();
return accountUpdate.accountCreator().apply(accountUpdate);
}

View File

@@ -41,7 +41,7 @@ public interface GroupOperations {
* <p>Example:
*
* <pre>
* TestGroup createdGroup = groupOperations
* AccountGroup.UUID createdGroupUuid = groupOperations
* .newGroup()
* .name("verifiers")
* .description("All verifiers of this server")

View File

@@ -69,13 +69,13 @@ public class GroupOperationsImpl implements GroupOperations {
return TestGroupCreation.builder(this::createNewGroup);
}
private TestGroup createNewGroup(TestGroupCreation groupCreation)
private AccountGroup.UUID createNewGroup(TestGroupCreation groupCreation)
throws ConfigInvalidException, IOException, OrmException {
InternalGroupCreation internalGroupCreation = toInternalGroupCreation(groupCreation);
InternalGroupUpdate internalGroupUpdate = toInternalGroupUpdate(groupCreation);
InternalGroup internalGroup =
groupsUpdate.createGroup(internalGroupCreation, internalGroupUpdate);
return toTestGroup(internalGroup);
return internalGroup.getGroupUUID();
}
private InternalGroupCreation toInternalGroupCreation(TestGroupCreation groupCreation)
@@ -101,20 +101,6 @@ public class GroupOperationsImpl implements GroupOperations {
return builder.build();
}
private static TestGroup toTestGroup(InternalGroup internalGroup) {
return TestGroup.builder()
.groupUuid(internalGroup.getGroupUUID())
.groupId(internalGroup.getId())
.nameKey(internalGroup.getNameKey())
.description(Optional.ofNullable(internalGroup.getDescription()))
.ownerGroupUuid(internalGroup.getOwnerGroupUUID())
.visibleToAll(internalGroup.isVisibleToAll())
.createdOn(internalGroup.getCreatedOn())
.members(internalGroup.getMembers())
.subgroups(internalGroup.getSubgroups())
.build();
}
private class MoreGroupOperationsImpl implements MoreGroupOperations {
private final AccountGroup.UUID groupUuid;
@@ -134,6 +120,20 @@ public class GroupOperationsImpl implements GroupOperations {
return toTestGroup(group.get());
}
private TestGroup toTestGroup(InternalGroup internalGroup) {
return TestGroup.builder()
.groupUuid(internalGroup.getGroupUUID())
.groupId(internalGroup.getId())
.nameKey(internalGroup.getNameKey())
.description(Optional.ofNullable(internalGroup.getDescription()))
.ownerGroupUuid(internalGroup.getOwnerGroupUUID())
.visibleToAll(internalGroup.isVisibleToAll())
.createdOn(internalGroup.getCreatedOn())
.members(internalGroup.getMembers())
.subgroups(internalGroup.getSubgroups())
.build();
}
@Override
public TestGroupUpdate.Builder forUpdate() {
return TestGroupUpdate.builder(this::updateGroup);

View File

@@ -38,9 +38,10 @@ public abstract class TestGroupCreation {
public abstract ImmutableSet<AccountGroup.UUID> subgroups();
abstract ThrowingFunction<TestGroupCreation, TestGroup> groupCreator();
abstract ThrowingFunction<TestGroupCreation, AccountGroup.UUID> groupCreator();
public static Builder builder(ThrowingFunction<TestGroupCreation, TestGroup> groupCreator) {
public static Builder builder(
ThrowingFunction<TestGroupCreation, AccountGroup.UUID> groupCreator) {
return new AutoValue_TestGroupCreation.Builder().groupCreator(groupCreator);
}
@@ -93,16 +94,17 @@ public abstract class TestGroupCreation {
return this;
}
abstract Builder groupCreator(ThrowingFunction<TestGroupCreation, TestGroup> groupCreator);
abstract Builder groupCreator(
ThrowingFunction<TestGroupCreation, AccountGroup.UUID> groupCreator);
abstract TestGroupCreation autoBuild();
/**
* Executes the group creation as specified.
*
* @return the created {@code TestGroup}
* @return the UUID of the created group
*/
public TestGroup create() throws Exception {
public AccountGroup.UUID create() throws Exception {
TestGroupCreation groupCreation = autoBuild();
return groupCreation.groupCreator().apply(groupCreation);
}

View File

@@ -526,9 +526,9 @@ public class AccountIT extends AbstractDaemonTest {
@Test
public void validateAccountActivation() throws Exception {
com.google.gerrit.acceptance.testsuite.account.TestAccount activatableAccount =
Account.Id activatableAccountId =
accountOperations.newAccount().inactive().preferredEmail("foo@activatable.com").create();
com.google.gerrit.acceptance.testsuite.account.TestAccount deactivatableAccount =
Account.Id deactivatableAccountId =
accountOperations.newAccount().preferredEmail("foo@deactivatable.com").create();
RegistrationHandle registrationHandle =
accountActivationValidationListeners.add(
@@ -554,61 +554,56 @@ public class AccountIT extends AbstractDaemonTest {
/* Test account that can be activated, but not deactivated */
// Deactivate account that is already inactive
try {
gApi.accounts().id(activatableAccount.accountId().get()).setActive(false);
gApi.accounts().id(activatableAccountId.get()).setActive(false);
fail("Expected exception");
} catch (ResourceConflictException e) {
assertThat(e.getMessage()).isEqualTo("account not active");
}
assertThat(accountOperations.account(activatableAccount.accountId()).get().active())
.isFalse();
assertThat(accountOperations.account(activatableAccountId).get().active()).isFalse();
// Activate account that can be activated
gApi.accounts().id(activatableAccount.accountId().get()).setActive(true);
assertThat(accountOperations.account(activatableAccount.accountId()).get().active()).isTrue();
gApi.accounts().id(activatableAccountId.get()).setActive(true);
assertThat(accountOperations.account(activatableAccountId).get().active()).isTrue();
// Activate account that is already active
gApi.accounts().id(activatableAccount.accountId().get()).setActive(true);
assertThat(accountOperations.account(activatableAccount.accountId()).get().active()).isTrue();
gApi.accounts().id(activatableAccountId.get()).setActive(true);
assertThat(accountOperations.account(activatableAccountId).get().active()).isTrue();
// Try deactivating account that cannot be deactivated
try {
gApi.accounts().id(activatableAccount.accountId().get()).setActive(false);
gApi.accounts().id(activatableAccountId.get()).setActive(false);
fail("Expected exception");
} catch (ResourceConflictException e) {
assertThat(e.getMessage()).isEqualTo("not allowed to deactive account");
}
assertThat(accountOperations.account(activatableAccount.accountId()).get().active()).isTrue();
assertThat(accountOperations.account(activatableAccountId).get().active()).isTrue();
/* Test account that can be deactivated, but not activated */
// Activate account that is already inactive
gApi.accounts().id(deactivatableAccount.accountId().get()).setActive(true);
assertThat(accountOperations.account(deactivatableAccount.accountId()).get().active())
.isTrue();
gApi.accounts().id(deactivatableAccountId.get()).setActive(true);
assertThat(accountOperations.account(deactivatableAccountId).get().active()).isTrue();
// Deactivate account that can be deactivated
gApi.accounts().id(deactivatableAccount.accountId().get()).setActive(false);
assertThat(accountOperations.account(deactivatableAccount.accountId()).get().active())
.isFalse();
gApi.accounts().id(deactivatableAccountId.get()).setActive(false);
assertThat(accountOperations.account(deactivatableAccountId).get().active()).isFalse();
// Deactivate account that is already inactive
try {
gApi.accounts().id(deactivatableAccount.accountId().get()).setActive(false);
gApi.accounts().id(deactivatableAccountId.get()).setActive(false);
fail("Expected exception");
} catch (ResourceConflictException e) {
assertThat(e.getMessage()).isEqualTo("account not active");
}
assertThat(accountOperations.account(deactivatableAccount.accountId()).get().active())
.isFalse();
assertThat(accountOperations.account(deactivatableAccountId).get().active()).isFalse();
// Try activating account that cannot be activated
try {
gApi.accounts().id(deactivatableAccount.accountId().get()).setActive(true);
gApi.accounts().id(deactivatableAccountId.get()).setActive(true);
fail("Expected exception");
} catch (ResourceConflictException e) {
assertThat(e.getMessage()).isEqualTo("not allowed to active account");
}
assertThat(accountOperations.account(deactivatableAccount.accountId()).get().active())
.isFalse();
assertThat(accountOperations.account(deactivatableAccountId).get().active()).isFalse();
} finally {
registrationHandle.remove();
}

View File

@@ -68,7 +68,6 @@ import com.google.gerrit.acceptance.NoHttpd;
import com.google.gerrit.acceptance.PushOneCommit;
import com.google.gerrit.acceptance.TestProjectInput;
import com.google.gerrit.acceptance.testsuite.account.AccountOperations;
import com.google.gerrit.acceptance.testsuite.account.TestAccount;
import com.google.gerrit.common.FooterConstants;
import com.google.gerrit.common.TimeUtil;
import com.google.gerrit.common.data.LabelFunction;
@@ -1688,7 +1687,7 @@ public class ChangeIT extends AbstractDaemonTest {
// create a group named "ab" with one user: testUser
String email = "abcd@test.com";
String fullname = "abcd";
TestAccount testUser =
Account.Id accountIdOfTestUser =
accountOperations
.newAccount()
.username("abcd")
@@ -1721,7 +1720,7 @@ public class ChangeIT extends AbstractDaemonTest {
Collection<AccountInfo> reviewers = c.reviewers.get(REVIEWER);
assertThat(reviewers).isNotNull();
assertThat(reviewers).hasSize(1);
assertThat(reviewers.iterator().next()._accountId).isEqualTo(testUser.accountId().get());
assertThat(reviewers.iterator().next()._accountId).isEqualTo(accountIdOfTestUser.get());
// Ensure ETag and lastUpdatedOn are updated.
rsrc = parseResource(r);
@@ -1748,7 +1747,7 @@ public class ChangeIT extends AbstractDaemonTest {
String myGroupUserEmail = "lee@test.com";
String myGroupUserFullname = "lee";
TestAccount myGroupUser =
Account.Id accountIdOfGroupUser =
accountOperations
.newAccount()
.username("lee")
@@ -1785,7 +1784,7 @@ public class ChangeIT extends AbstractDaemonTest {
Collection<AccountInfo> reviewers = c.reviewers.get(REVIEWER);
assertThat(reviewers).isNotNull();
assertThat(reviewers).hasSize(1);
assertThat(reviewers.iterator().next()._accountId).isEqualTo(myGroupUser.accountId().get());
assertThat(reviewers.iterator().next()._accountId).isEqualTo(accountIdOfGroupUser.get());
// Ensure ETag and lastUpdatedOn are updated.
rsrc = parseResource(r);
@@ -2215,7 +2214,7 @@ public class ChangeIT extends AbstractDaemonTest {
// notify unrelated account as TO
String email = "user2@example.com";
TestAccount user2 =
Account.Id user2Id =
accountOperations
.newAccount()
.username("user2")
@@ -2229,7 +2228,7 @@ public class ChangeIT extends AbstractDaemonTest {
in.notifyDetails = new HashMap<>();
in.notifyDetails.put(RecipientType.TO, new NotifyInfo(ImmutableList.of(email)));
gApi.changes().id(r.getChangeId()).reviewer(user.getId().toString()).deleteVote(in);
assertNotifyTo(user2);
assertNotifyTo(email, "User2");
// notify unrelated account as CC
setApiUser(user);
@@ -2239,7 +2238,7 @@ public class ChangeIT extends AbstractDaemonTest {
in.notifyDetails = new HashMap<>();
in.notifyDetails.put(RecipientType.CC, new NotifyInfo(ImmutableList.of(email)));
gApi.changes().id(r.getChangeId()).reviewer(user.getId().toString()).deleteVote(in);
assertNotifyCc(user2);
assertNotifyCc(email, "User2");
// notify unrelated account as BCC
setApiUser(user);
@@ -2249,7 +2248,7 @@ public class ChangeIT extends AbstractDaemonTest {
in.notifyDetails = new HashMap<>();
in.notifyDetails.put(RecipientType.BCC, new NotifyInfo(ImmutableList.of(email)));
gApi.changes().id(r.getChangeId()).reviewer(user.getId().toString()).deleteVote(in);
assertNotifyBcc(user2);
assertNotifyBcc(email, "User2");
}
@Test

View File

@@ -183,24 +183,23 @@ public class GroupsIT extends AbstractDaemonTest {
@Test
public void cachedGroupsForMemberAreUpdatedOnMemberAdditionAndRemoval() throws Exception {
String username = name("user");
com.google.gerrit.acceptance.testsuite.account.TestAccount account =
accountOperations.newAccount().username(username).create();
Account.Id accountId = accountOperations.newAccount().username(username).create();
// Fill the cache for the observed account.
groupIncludeCache.getGroupsWithMember(account.accountId());
groupIncludeCache.getGroupsWithMember(accountId);
String groupName = createGroup("users");
AccountGroup.UUID groupUuid = new AccountGroup.UUID(gApi.groups().id(groupName).get().id);
gApi.groups().id(groupName).addMembers(username);
Collection<AccountGroup.UUID> groupsWithMemberAfterAddition =
groupIncludeCache.getGroupsWithMember(account.accountId());
groupIncludeCache.getGroupsWithMember(accountId);
assertThat(groupsWithMemberAfterAddition).contains(groupUuid);
gApi.groups().id(groupName).removeMembers(username);
Collection<AccountGroup.UUID> groupsWithMemberAfterRemoval =
groupIncludeCache.getGroupsWithMember(account.accountId());
groupIncludeCache.getGroupsWithMember(accountId);
assertThat(groupsWithMemberAfterRemoval).doesNotContain(groupUuid);
}
@@ -411,19 +410,17 @@ public class GroupsIT extends AbstractDaemonTest {
@Test
public void cachedGroupsForMemberAreUpdatedOnGroupCreation() throws Exception {
com.google.gerrit.acceptance.testsuite.account.TestAccount account =
accountOperations.newAccount().create();
Account.Id accountId = accountOperations.newAccount().create();
// Fill the cache for the observed account.
groupIncludeCache.getGroupsWithMember(account.accountId());
groupIncludeCache.getGroupsWithMember(accountId);
GroupInput groupInput = new GroupInput();
groupInput.name = name("Users");
groupInput.members = ImmutableList.of(String.valueOf(account.accountId().get()));
groupInput.members = ImmutableList.of(String.valueOf(accountId.get()));
GroupInfo group = gApi.groups().create(groupInput).get();
Collection<AccountGroup.UUID> groups =
groupIncludeCache.getGroupsWithMember(account.accountId());
Collection<AccountGroup.UUID> groups = groupIncludeCache.getGroupsWithMember(accountId);
assertThat(groups).containsExactly(new AccountGroup.UUID(group.id));
}

View File

@@ -21,7 +21,6 @@ import com.google.gerrit.acceptance.AbstractDaemonTest;
import com.google.gerrit.acceptance.RestResponse;
import com.google.gerrit.acceptance.TestAccount;
import com.google.gerrit.acceptance.testsuite.group.GroupOperations;
import com.google.gerrit.acceptance.testsuite.group.TestGroup;
import com.google.gerrit.common.data.Permission;
import com.google.gerrit.extensions.api.config.AccessCheckInfo;
import com.google.gerrit.extensions.api.config.AccessCheckInput;
@@ -54,8 +53,8 @@ public class CheckAccessIT extends AbstractDaemonTest {
normalProject = createProject("normal");
secretProject = createProject("secret");
secretRefProject = createProject("secretRef");
TestGroup privilegedGroup = groupOperations.newGroup().name(name("privilegedGroup")).create();
AccountGroup.UUID privilegedGroupUuid = privilegedGroup.groupUuid();
AccountGroup.UUID privilegedGroupUuid =
groupOperations.newGroup().name(name("privilegedGroup")).create();
privilegedUser = accountCreator.create("privilegedUser", "snowden@nsa.gov", "Ed Snowden");
groupOperations.group(privilegedGroupUuid).forUpdate().addMember(privilegedUser.id).update();

View File

@@ -21,8 +21,6 @@ import com.google.common.collect.ImmutableSet;
import com.google.common.truth.Correspondence;
import com.google.gerrit.acceptance.AbstractDaemonTest;
import com.google.gerrit.acceptance.testsuite.account.AccountOperations;
import com.google.gerrit.acceptance.testsuite.account.TestAccount;
import com.google.gerrit.extensions.api.GerritApi;
import com.google.gerrit.extensions.api.groups.GroupInput;
import com.google.gerrit.extensions.common.AccountInfo;
import com.google.gerrit.extensions.common.GroupInfo;
@@ -42,7 +40,6 @@ public class GroupOperationsImplTest extends AbstractDaemonTest {
@Rule public ExpectedException expectedException = ExpectedException.none();
@Inject private AccountOperations accountOperations;
@Inject private GerritApi gApi;
@Inject private GroupOperationsImpl groupOperations;
@@ -50,17 +47,17 @@ public class GroupOperationsImplTest extends AbstractDaemonTest {
@Test
public void groupCanBeCreatedWithoutSpecifyingAnyParameters() throws Exception {
TestGroup group = groupOperations.newGroup().create();
AccountGroup.UUID groupUuid = groupOperations.newGroup().create();
GroupInfo foundGroup = getGroupFromServer(group.groupUuid());
assertThat(foundGroup.id).isEqualTo(group.groupUuid().get());
GroupInfo foundGroup = getGroupFromServer(groupUuid);
assertThat(foundGroup.id).isEqualTo(groupUuid.get());
assertThat(foundGroup.name).isNotEmpty();
}
@Test
public void twoGroupsWithoutAnyParametersDoNotClash() throws Exception {
AccountGroup.UUID groupUuid1 = groupOperations.newGroup().create().groupUuid();
AccountGroup.UUID groupUuid2 = groupOperations.newGroup().create().groupUuid();
AccountGroup.UUID groupUuid1 = groupOperations.newGroup().create();
AccountGroup.UUID groupUuid2 = groupOperations.newGroup().create();
TestGroup group1 = groupOperations.group(groupUuid1).get();
TestGroup group2 = groupOperations.group(groupUuid2).get();
@@ -70,7 +67,7 @@ public class GroupOperationsImplTest extends AbstractDaemonTest {
@Test
public void groupCreatedByTestApiCanBeRetrievedViaOfficialApi() throws Exception {
AccountGroup.UUID groupUuid =
groupOperations.newGroup().name("unique group created via test API").create().groupUuid();
groupOperations.newGroup().name("unique group created via test API").create();
GroupInfo foundGroup = getGroupFromServer(groupUuid);
assertThat(foundGroup.id).isEqualTo(groupUuid.get());
@@ -80,7 +77,7 @@ public class GroupOperationsImplTest extends AbstractDaemonTest {
@Test
public void specifiedNameIsRespectedForGroupCreation() throws Exception {
AccountGroup.UUID groupUuid =
groupOperations.newGroup().name("XYZ-123-this-name-must-be-unique").create().groupUuid();
groupOperations.newGroup().name("XYZ-123-this-name-must-be-unique").create();
GroupInfo group = getGroupFromServer(groupUuid);
assertThat(group.name).isEqualTo("XYZ-123-this-name-must-be-unique");
@@ -89,7 +86,7 @@ public class GroupOperationsImplTest extends AbstractDaemonTest {
@Test
public void specifiedDescriptionIsRespectedForGroupCreation() throws Exception {
AccountGroup.UUID groupUuid =
groupOperations.newGroup().description("All authenticated users").create().groupUuid();
groupOperations.newGroup().description("All authenticated users").create();
GroupInfo group = getGroupFromServer(groupUuid);
assertThat(group.description).isEqualTo("All authenticated users");
@@ -97,8 +94,7 @@ public class GroupOperationsImplTest extends AbstractDaemonTest {
@Test
public void requestingNoDescriptionIsPossibleForGroupCreation() throws Exception {
AccountGroup.UUID groupUuid =
groupOperations.newGroup().clearDescription().create().groupUuid();
AccountGroup.UUID groupUuid = groupOperations.newGroup().clearDescription().create();
GroupInfo group = getGroupFromServer(groupUuid);
assertThat(group.description).isNull();
@@ -106,22 +102,22 @@ public class GroupOperationsImplTest extends AbstractDaemonTest {
@Test
public void specifiedOwnerIsRespectedForGroupCreation() throws Exception {
TestGroup ownerGroup = groupOperations.newGroup().create();
AccountGroup.UUID ownerGroupUuid = groupOperations.newGroup().create();
TestGroup group =
groupOperations.newGroup().ownerGroupUuid(ownerGroup.ownerGroupUuid()).create();
AccountGroup.UUID groupUuid =
groupOperations.newGroup().ownerGroupUuid(ownerGroupUuid).create();
GroupInfo foundGroup = getGroupFromServer(group.groupUuid());
assertThat(foundGroup.ownerId).isEqualTo(ownerGroup.ownerGroupUuid().get());
GroupInfo foundGroup = getGroupFromServer(groupUuid);
assertThat(foundGroup.ownerId).isEqualTo(ownerGroupUuid.get());
}
@Test
public void specifiedVisibilityIsRespectedForGroupCreation() throws Exception {
TestGroup group1 = groupOperations.newGroup().visibleToAll(true).create();
TestGroup group2 = groupOperations.newGroup().visibleToAll(false).create();
AccountGroup.UUID group1Uuid = groupOperations.newGroup().visibleToAll(true).create();
AccountGroup.UUID group2Uuid = groupOperations.newGroup().visibleToAll(false).create();
GroupInfo foundGroup1 = getGroupFromServer(group1.groupUuid());
GroupInfo foundGroup2 = getGroupFromServer(group2.groupUuid());
GroupInfo foundGroup1 = getGroupFromServer(group1Uuid);
GroupInfo foundGroup2 = getGroupFromServer(group2Uuid);
assertThat(foundGroup1.options.visibleToAll).isTrue();
// False == null
assertThat(foundGroup2.options.visibleToAll).isNull();
@@ -129,97 +125,87 @@ public class GroupOperationsImplTest extends AbstractDaemonTest {
@Test
public void specifiedMembersAreRespectedForGroupCreation() throws Exception {
TestAccount account1 = accountOperations.newAccount().create();
TestAccount account2 = accountOperations.newAccount().create();
TestAccount account3 = accountOperations.newAccount().create();
TestAccount account4 = accountOperations.newAccount().create();
Account.Id account1Id = accountOperations.newAccount().create();
Account.Id account2Id = accountOperations.newAccount().create();
Account.Id account3Id = accountOperations.newAccount().create();
Account.Id account4Id = accountOperations.newAccount().create();
TestGroup group =
AccountGroup.UUID groupUuid =
groupOperations
.newGroup()
.members(account1.accountId(), account2.accountId())
.addMember(account3.accountId())
.addMember(account4.accountId())
.members(account1Id, account2Id)
.addMember(account3Id)
.addMember(account4Id)
.create();
GroupInfo foundGroup = getGroupFromServer(group.groupUuid());
GroupInfo foundGroup = getGroupFromServer(groupUuid);
assertThat(foundGroup.members)
.comparingElementsUsing(getAccountToIdCorrespondence())
.containsExactly(
account1.accountId(), account2.accountId(), account3.accountId(), account4.accountId());
.containsExactly(account1Id, account2Id, account3Id, account4Id);
}
@Test
public void directlyAddingMembersIsPossibleForGroupCreation() throws Exception {
TestAccount account1 = accountOperations.newAccount().create();
TestAccount account2 = accountOperations.newAccount().create();
Account.Id account1Id = accountOperations.newAccount().create();
Account.Id account2Id = accountOperations.newAccount().create();
TestGroup group =
groupOperations
.newGroup()
.addMember(account1.accountId())
.addMember(account2.accountId())
.create();
AccountGroup.UUID groupUuid =
groupOperations.newGroup().addMember(account1Id).addMember(account2Id).create();
GroupInfo foundGroup = getGroupFromServer(group.groupUuid());
GroupInfo foundGroup = getGroupFromServer(groupUuid);
assertThat(foundGroup.members)
.comparingElementsUsing(getAccountToIdCorrespondence())
.containsExactly(account1.accountId(), account2.accountId());
.containsExactly(account1Id, account2Id);
}
@Test
public void requestingNoMembersIsPossibleForGroupCreation() throws Exception {
TestGroup group = groupOperations.newGroup().clearMembers().create();
AccountGroup.UUID groupUuid = groupOperations.newGroup().clearMembers().create();
GroupInfo foundGroup = getGroupFromServer(group.groupUuid());
GroupInfo foundGroup = getGroupFromServer(groupUuid);
assertThat(foundGroup.members).isEmpty();
}
@Test
public void specifiedSubgroupsAreRespectedForGroupCreation() throws Exception {
TestGroup group1 = groupOperations.newGroup().create();
TestGroup group2 = groupOperations.newGroup().create();
TestGroup group3 = groupOperations.newGroup().create();
TestGroup group4 = groupOperations.newGroup().create();
AccountGroup.UUID group1Uuid = groupOperations.newGroup().create();
AccountGroup.UUID group2Uuid = groupOperations.newGroup().create();
AccountGroup.UUID group3Uuid = groupOperations.newGroup().create();
AccountGroup.UUID group4Uuid = groupOperations.newGroup().create();
TestGroup group =
AccountGroup.UUID groupUuid =
groupOperations
.newGroup()
.subgroups(group1.groupUuid(), group2.groupUuid())
.addSubgroup(group3.groupUuid())
.addSubgroup(group4.groupUuid())
.subgroups(group1Uuid, group2Uuid)
.addSubgroup(group3Uuid)
.addSubgroup(group4Uuid)
.create();
GroupInfo foundGroup = getGroupFromServer(group.groupUuid());
GroupInfo foundGroup = getGroupFromServer(groupUuid);
assertThat(foundGroup.includes)
.comparingElementsUsing(getGroupToUuidCorrespondence())
.containsExactly(
group1.groupUuid(), group2.groupUuid(), group3.groupUuid(), group4.groupUuid());
.containsExactly(group1Uuid, group2Uuid, group3Uuid, group4Uuid);
}
@Test
public void directlyAddingSubgroupsIsPossibleForGroupCreation() throws Exception {
TestGroup group1 = groupOperations.newGroup().create();
TestGroup group2 = groupOperations.newGroup().create();
AccountGroup.UUID group1Uuid = groupOperations.newGroup().create();
AccountGroup.UUID group2Uuid = groupOperations.newGroup().create();
TestGroup group =
groupOperations
.newGroup()
.addSubgroup(group1.groupUuid())
.addSubgroup(group2.groupUuid())
.create();
AccountGroup.UUID groupUuid =
groupOperations.newGroup().addSubgroup(group1Uuid).addSubgroup(group2Uuid).create();
GroupInfo foundGroup = getGroupFromServer(group.groupUuid());
GroupInfo foundGroup = getGroupFromServer(groupUuid);
assertThat(foundGroup.includes)
.comparingElementsUsing(getGroupToUuidCorrespondence())
.containsExactly(group1.groupUuid(), group2.groupUuid());
.containsExactly(group1Uuid, group2Uuid);
}
@Test
public void requestingNoSubgroupsIsPossibleForGroupCreation() throws Exception {
TestGroup group = groupOperations.newGroup().clearSubgroups().create();
AccountGroup.UUID groupUuid = groupOperations.newGroup().clearSubgroups().create();
GroupInfo foundGroup = getGroupFromServer(group.groupUuid());
GroupInfo foundGroup = getGroupFromServer(groupUuid);
assertThat(foundGroup.includes).isEmpty();
}
@@ -263,7 +249,7 @@ public class GroupOperationsImplTest extends AbstractDaemonTest {
@Test
public void uuidOfExistingGroupCanBeRetrieved() throws Exception {
AccountGroup.UUID groupUuid = groupOperations.newGroup().create().groupUuid();
AccountGroup.UUID groupUuid = groupOperations.newGroup().create();
AccountGroup.UUID foundGroupUuid = groupOperations.group(groupUuid).get().groupUuid();
@@ -273,7 +259,7 @@ public class GroupOperationsImplTest extends AbstractDaemonTest {
@Test
public void nameOfExistingGroupCanBeRetrieved() throws Exception {
AccountGroup.UUID groupUuid =
groupOperations.newGroup().name("ABC-789-this-name-must-be-unique").create().groupUuid();
groupOperations.newGroup().name("ABC-789-this-name-must-be-unique").create();
String groupName = groupOperations.group(groupUuid).get().name();
@@ -283,7 +269,7 @@ public class GroupOperationsImplTest extends AbstractDaemonTest {
@Test
public void nameKeyOfExistingGroupCanBeRetrieved() throws Exception {
AccountGroup.UUID groupUuid =
groupOperations.newGroup().name("ABC-789-this-name-must-be-unique").create().groupUuid();
groupOperations.newGroup().name("ABC-789-this-name-must-be-unique").create();
AccountGroup.NameKey groupName = groupOperations.group(groupUuid).get().nameKey();
@@ -296,8 +282,7 @@ public class GroupOperationsImplTest extends AbstractDaemonTest {
groupOperations
.newGroup()
.description("This is a very detailed description of this group.")
.create()
.groupUuid();
.create();
Optional<String> description = groupOperations.group(groupUuid).get().description();
@@ -306,8 +291,7 @@ public class GroupOperationsImplTest extends AbstractDaemonTest {
@Test
public void emptyDescriptionOfExistingGroupCanBeRetrieved() throws Exception {
AccountGroup.UUID groupUuid =
groupOperations.newGroup().clearDescription().create().groupUuid();
AccountGroup.UUID groupUuid = groupOperations.newGroup().clearDescription().create();
Optional<String> description = groupOperations.group(groupUuid).get().description();
@@ -318,7 +302,7 @@ public class GroupOperationsImplTest extends AbstractDaemonTest {
public void ownerGroupUuidOfExistingGroupCanBeRetrieved() throws Exception {
AccountGroup.UUID originalOwnerGroupUuid = new AccountGroup.UUID("owner group");
AccountGroup.UUID groupUuid =
groupOperations.newGroup().ownerGroupUuid(originalOwnerGroupUuid).create().groupUuid();
groupOperations.newGroup().ownerGroupUuid(originalOwnerGroupUuid).create();
AccountGroup.UUID ownerGroupUuid = groupOperations.group(groupUuid).get().ownerGroupUuid();
@@ -327,10 +311,8 @@ public class GroupOperationsImplTest extends AbstractDaemonTest {
@Test
public void visibilityOfExistingGroupCanBeRetrieved() throws Exception {
AccountGroup.UUID visibleGroupUuid =
groupOperations.newGroup().visibleToAll(true).create().groupUuid();
AccountGroup.UUID invisibleGroupUuid =
groupOperations.newGroup().visibleToAll(false).create().groupUuid();
AccountGroup.UUID visibleGroupUuid = groupOperations.newGroup().visibleToAll(true).create();
AccountGroup.UUID invisibleGroupUuid = groupOperations.newGroup().visibleToAll(false).create();
TestGroup visibleGroup = groupOperations.group(visibleGroupUuid).get();
TestGroup invisibleGroup = groupOperations.group(invisibleGroupUuid).get();
@@ -355,7 +337,7 @@ public class GroupOperationsImplTest extends AbstractDaemonTest {
Account.Id memberId2 = new Account.Id(2000);
Account.Id memberId3 = new Account.Id(3000);
AccountGroup.UUID groupUuid =
groupOperations.newGroup().members(memberId1, memberId2, memberId3).create().groupUuid();
groupOperations.newGroup().members(memberId1, memberId2, memberId3).create();
ImmutableSet<Account.Id> members = groupOperations.group(groupUuid).get().members();
@@ -364,7 +346,7 @@ public class GroupOperationsImplTest extends AbstractDaemonTest {
@Test
public void emptyMembersOfExistingGroupCanBeRetrieved() throws Exception {
AccountGroup.UUID groupUuid = groupOperations.newGroup().clearMembers().create().groupUuid();
AccountGroup.UUID groupUuid = groupOperations.newGroup().clearMembers().create();
ImmutableSet<Account.Id> members = groupOperations.group(groupUuid).get().members();
@@ -377,11 +359,7 @@ public class GroupOperationsImplTest extends AbstractDaemonTest {
AccountGroup.UUID subgroupUuid2 = new AccountGroup.UUID("subgroup 2");
AccountGroup.UUID subgroupUuid3 = new AccountGroup.UUID("subgroup 3");
AccountGroup.UUID groupUuid =
groupOperations
.newGroup()
.subgroups(subgroupUuid1, subgroupUuid2, subgroupUuid3)
.create()
.groupUuid();
groupOperations.newGroup().subgroups(subgroupUuid1, subgroupUuid2, subgroupUuid3).create();
ImmutableSet<AccountGroup.UUID> subgroups = groupOperations.group(groupUuid).get().subgroups();
@@ -390,7 +368,7 @@ public class GroupOperationsImplTest extends AbstractDaemonTest {
@Test
public void emptySubgroupsOfExistingGroupCanBeRetrieved() throws Exception {
AccountGroup.UUID groupUuid = groupOperations.newGroup().clearSubgroups().create().groupUuid();
AccountGroup.UUID groupUuid = groupOperations.newGroup().clearSubgroups().create();
ImmutableSet<AccountGroup.UUID> subgroups = groupOperations.group(groupUuid).get().subgroups();
@@ -399,8 +377,8 @@ public class GroupOperationsImplTest extends AbstractDaemonTest {
@Test
public void updateWithoutAnyParametersIsANoop() throws Exception {
TestGroup originalGroup = groupOperations.newGroup().create();
AccountGroup.UUID groupUuid = originalGroup.groupUuid();
AccountGroup.UUID groupUuid = groupOperations.newGroup().create();
TestGroup originalGroup = groupOperations.group(groupUuid).get();
groupOperations.group(groupUuid).forUpdate().update();
@@ -411,7 +389,7 @@ public class GroupOperationsImplTest extends AbstractDaemonTest {
@Test
public void updateWritesToInternalGroupSystem() throws Exception {
AccountGroup.UUID groupUuid =
groupOperations.newGroup().description("original description").create().groupUuid();
groupOperations.newGroup().description("original description").create();
groupOperations.group(groupUuid).forUpdate().description("updated description").update();
@@ -421,8 +399,7 @@ public class GroupOperationsImplTest extends AbstractDaemonTest {
@Test
public void nameCanBeUpdated() throws Exception {
AccountGroup.UUID groupUuid =
groupOperations.newGroup().name("original name").create().groupUuid();
AccountGroup.UUID groupUuid = groupOperations.newGroup().name("original name").create();
groupOperations.group(groupUuid).forUpdate().name("updated name").update();
@@ -433,7 +410,7 @@ public class GroupOperationsImplTest extends AbstractDaemonTest {
@Test
public void descriptionCanBeUpdated() throws Exception {
AccountGroup.UUID groupUuid =
groupOperations.newGroup().description("original description").create().groupUuid();
groupOperations.newGroup().description("original description").create();
groupOperations.group(groupUuid).forUpdate().description("updated description").update();
@@ -444,7 +421,7 @@ public class GroupOperationsImplTest extends AbstractDaemonTest {
@Test
public void descriptionCanBeCleared() throws Exception {
AccountGroup.UUID groupUuid =
groupOperations.newGroup().description("original description").create().groupUuid();
groupOperations.newGroup().description("original description").create();
groupOperations.group(groupUuid).forUpdate().clearDescription().update();
@@ -456,7 +433,7 @@ public class GroupOperationsImplTest extends AbstractDaemonTest {
public void ownerGroupUuidCanBeUpdated() throws Exception {
AccountGroup.UUID originalOwnerGroupUuid = new AccountGroup.UUID("original owner");
AccountGroup.UUID groupUuid =
groupOperations.newGroup().ownerGroupUuid(originalOwnerGroupUuid).create().groupUuid();
groupOperations.newGroup().ownerGroupUuid(originalOwnerGroupUuid).create();
AccountGroup.UUID updatedOwnerGroupUuid = new AccountGroup.UUID("updated owner");
groupOperations.group(groupUuid).forUpdate().ownerGroupUuid(updatedOwnerGroupUuid).update();
@@ -468,8 +445,7 @@ public class GroupOperationsImplTest extends AbstractDaemonTest {
@Test
public void visibilityCanBeUpdated() throws Exception {
AccountGroup.UUID groupUuid =
groupOperations.newGroup().visibleToAll(true).create().groupUuid();
AccountGroup.UUID groupUuid = groupOperations.newGroup().visibleToAll(true).create();
groupOperations.group(groupUuid).forUpdate().visibleToAll(false).update();
@@ -479,7 +455,7 @@ public class GroupOperationsImplTest extends AbstractDaemonTest {
@Test
public void membersCanBeAdded() throws Exception {
AccountGroup.UUID groupUuid = groupOperations.newGroup().clearMembers().create().groupUuid();
AccountGroup.UUID groupUuid = groupOperations.newGroup().clearMembers().create();
Account.Id memberId1 = new Account.Id(1000);
Account.Id memberId2 = new Account.Id(2000);
@@ -493,8 +469,7 @@ public class GroupOperationsImplTest extends AbstractDaemonTest {
public void membersCanBeRemoved() throws Exception {
Account.Id memberId1 = new Account.Id(1000);
Account.Id memberId2 = new Account.Id(2000);
AccountGroup.UUID groupUuid =
groupOperations.newGroup().members(memberId1, memberId2).create().groupUuid();
AccountGroup.UUID groupUuid = groupOperations.newGroup().members(memberId1, memberId2).create();
groupOperations.group(groupUuid).forUpdate().removeMember(memberId2).update();
@@ -506,8 +481,7 @@ public class GroupOperationsImplTest extends AbstractDaemonTest {
public void memberAdditionAndRemovalCanBeMixed() throws Exception {
Account.Id memberId1 = new Account.Id(1000);
Account.Id memberId2 = new Account.Id(2000);
AccountGroup.UUID groupUuid =
groupOperations.newGroup().members(memberId1, memberId2).create().groupUuid();
AccountGroup.UUID groupUuid = groupOperations.newGroup().members(memberId1, memberId2).create();
Account.Id memberId3 = new Account.Id(3000);
groupOperations
@@ -525,8 +499,7 @@ public class GroupOperationsImplTest extends AbstractDaemonTest {
public void membersCanBeCleared() throws Exception {
Account.Id memberId1 = new Account.Id(1000);
Account.Id memberId2 = new Account.Id(2000);
AccountGroup.UUID groupUuid =
groupOperations.newGroup().members(memberId1, memberId2).create().groupUuid();
AccountGroup.UUID groupUuid = groupOperations.newGroup().members(memberId1, memberId2).create();
groupOperations.group(groupUuid).forUpdate().clearMembers().update();
@@ -538,8 +511,7 @@ public class GroupOperationsImplTest extends AbstractDaemonTest {
public void furtherMembersCanBeAddedAfterClearingAll() throws Exception {
Account.Id memberId1 = new Account.Id(1000);
Account.Id memberId2 = new Account.Id(2000);
AccountGroup.UUID groupUuid =
groupOperations.newGroup().members(memberId1, memberId2).create().groupUuid();
AccountGroup.UUID groupUuid = groupOperations.newGroup().members(memberId1, memberId2).create();
Account.Id memberId3 = new Account.Id(3000);
groupOperations.group(groupUuid).forUpdate().clearMembers().addMember(memberId3).update();
@@ -550,7 +522,7 @@ public class GroupOperationsImplTest extends AbstractDaemonTest {
@Test
public void subgroupsCanBeAdded() throws Exception {
AccountGroup.UUID groupUuid = groupOperations.newGroup().clearSubgroups().create().groupUuid();
AccountGroup.UUID groupUuid = groupOperations.newGroup().clearSubgroups().create();
AccountGroup.UUID subgroupUuid1 = new AccountGroup.UUID("subgroup 1");
AccountGroup.UUID subgroupUuid2 = new AccountGroup.UUID("subgroup 2");
@@ -570,7 +542,7 @@ public class GroupOperationsImplTest extends AbstractDaemonTest {
AccountGroup.UUID subgroupUuid1 = new AccountGroup.UUID("subgroup 1");
AccountGroup.UUID subgroupUuid2 = new AccountGroup.UUID("subgroup 2");
AccountGroup.UUID groupUuid =
groupOperations.newGroup().subgroups(subgroupUuid1, subgroupUuid2).create().groupUuid();
groupOperations.newGroup().subgroups(subgroupUuid1, subgroupUuid2).create();
groupOperations.group(groupUuid).forUpdate().removeSubgroup(subgroupUuid2).update();
@@ -583,7 +555,7 @@ public class GroupOperationsImplTest extends AbstractDaemonTest {
AccountGroup.UUID subgroupUuid1 = new AccountGroup.UUID("subgroup 1");
AccountGroup.UUID subgroupUuid2 = new AccountGroup.UUID("subgroup 2");
AccountGroup.UUID groupUuid =
groupOperations.newGroup().subgroups(subgroupUuid1, subgroupUuid2).create().groupUuid();
groupOperations.newGroup().subgroups(subgroupUuid1, subgroupUuid2).create();
AccountGroup.UUID subgroupUuid3 = new AccountGroup.UUID("subgroup 3");
groupOperations
@@ -602,7 +574,7 @@ public class GroupOperationsImplTest extends AbstractDaemonTest {
AccountGroup.UUID subgroupUuid1 = new AccountGroup.UUID("subgroup 1");
AccountGroup.UUID subgroupUuid2 = new AccountGroup.UUID("subgroup 2");
AccountGroup.UUID groupUuid =
groupOperations.newGroup().subgroups(subgroupUuid1, subgroupUuid2).create().groupUuid();
groupOperations.newGroup().subgroups(subgroupUuid1, subgroupUuid2).create();
groupOperations.group(groupUuid).forUpdate().clearSubgroups().update();
@@ -615,7 +587,7 @@ public class GroupOperationsImplTest extends AbstractDaemonTest {
AccountGroup.UUID subgroupUuid1 = new AccountGroup.UUID("subgroup 1");
AccountGroup.UUID subgroupUuid2 = new AccountGroup.UUID("subgroup 2");
AccountGroup.UUID groupUuid =
groupOperations.newGroup().subgroups(subgroupUuid1, subgroupUuid2).create().groupUuid();
groupOperations.newGroup().subgroups(subgroupUuid1, subgroupUuid2).create();
AccountGroup.UUID subgroupUuid3 = new AccountGroup.UUID("subgroup 3");
groupOperations