TestAccountCreation: Support specifying secondary emails

Signed-off-by: Edwin Kempin <ekempin@google.com>
Change-Id: I67c8bee7110ed6512615f78c5ba17c234a066c25
This commit is contained in:
Edwin Kempin
2020-06-23 09:32:21 +02:00
parent ca9ae25d14
commit dbe7168687
2 changed files with 27 additions and 2 deletions

View File

@@ -83,6 +83,11 @@ public class AccountOperationsImpl implements AccountOperations {
accountCreation.username().ifPresent(u -> setUsername(builder, accountId, u, httpPassword));
accountCreation.status().ifPresent(builder::setStatus);
accountCreation.active().ifPresent(builder::setActive);
accountCreation
.secondaryEmails()
.forEach(
secondaryEmail ->
builder.addExternalId(ExternalId.createEmail(accountId, secondaryEmail)));
}
private static InternalAccountUpdate.Builder setPreferredEmail(

View File

@@ -14,7 +14,10 @@
package com.google.gerrit.acceptance.testsuite.account;
import static com.google.common.base.Preconditions.checkState;
import com.google.auto.value.AutoValue;
import com.google.common.collect.ImmutableSet;
import com.google.gerrit.acceptance.testsuite.ThrowingFunction;
import com.google.gerrit.entities.Account;
import java.util.Optional;
@@ -33,6 +36,8 @@ public abstract class TestAccountCreation {
public abstract Optional<Boolean> active();
public abstract ImmutableSet<String> secondaryEmails();
abstract ThrowingFunction<TestAccountCreation, Account.Id> accountCreator();
public static Builder builder(ThrowingFunction<TestAccountCreation, Account.Id> accountCreator) {
@@ -83,14 +88,29 @@ public abstract class TestAccountCreation {
return active(false);
}
public abstract Builder secondaryEmails(ImmutableSet<String> secondaryEmails);
abstract ImmutableSet.Builder<String> secondaryEmailsBuilder();
public Builder addSecondaryEmail(String secondaryEmail) {
secondaryEmailsBuilder().add(secondaryEmail);
return this;
}
abstract Builder accountCreator(
ThrowingFunction<TestAccountCreation, Account.Id> accountCreator);
abstract TestAccountCreation autoBuild();
public Account.Id create() {
TestAccountCreation accountUpdate = autoBuild();
return accountUpdate.accountCreator().applyAndThrowSilently(accountUpdate);
TestAccountCreation accountCreation = autoBuild();
if (accountCreation.preferredEmail().isPresent()) {
checkState(
!accountCreation.secondaryEmails().contains(accountCreation.preferredEmail().get()),
"preferred email %s cannot be secondary email at the same time",
accountCreation.preferredEmail().get());
}
return accountCreation.accountCreator().applyAndThrowSilently(accountCreation);
}
}
}