diff --git a/core/src/main/java/google/registry/model/OteAccountBuilder.java b/core/src/main/java/google/registry/model/OteAccountBuilder.java
index fe23392b2..6eb1ce77f 100644
--- a/core/src/main/java/google/registry/model/OteAccountBuilder.java
+++ b/core/src/main/java/google/registry/model/OteAccountBuilder.java
@@ -15,7 +15,6 @@
package google.registry.model;
import static com.google.common.base.Preconditions.checkArgument;
-import static com.google.common.base.Preconditions.checkNotNull;
import static com.google.common.base.Preconditions.checkState;
import static com.google.common.collect.ImmutableList.toImmutableList;
import static google.registry.model.tld.Registry.TldState.GENERAL_AVAILABILITY;
@@ -30,7 +29,6 @@ import com.google.common.collect.ImmutableSortedMap;
import com.google.common.collect.Sets;
import com.google.common.collect.Streams;
import google.registry.config.RegistryEnvironment;
-import google.registry.model.common.GaeUserIdConverter;
import google.registry.model.pricing.StaticPremiumListPricingEngine;
import google.registry.model.registrar.Registrar;
import google.registry.model.registrar.RegistrarAddress;
@@ -77,14 +75,14 @@ public final class OteAccountBuilder {
* Validation regex for registrar base client IDs (3-14 lowercase alphanumeric characters).
*
*
The base client ID is appended with numbers to create four different test registrar accounts
- * (e.g. reg-1, reg-3, reg-4, reg-5). Registrar client IDs are of type clIDType in eppcom.xsd
+ * (e.g. reg-1, reg-3, reg-4, reg-5). Registrar client IDs are of type clIDType in eppcom.xsd
* which is limited to 16 characters, hence the limit of 14 here to account for the dash and
* numbers.
*
*
The base client ID is also used to generate the OT&E TLDs, hence the restriction to
* lowercase alphanumeric characters.
*/
- private static final Pattern REGISTRAR_PATTERN = Pattern.compile("^[a-z0-9]{3,14}$");
+ private static final Pattern REGISTRAR_PATTERN = Pattern.compile("^[a-z\\d]{3,14}$");
// Durations are short so that registrars can test with quick transfer (etc.) turnaround.
private static final Duration SHORT_ADD_GRACE_PERIOD = Duration.standardMinutes(60);
@@ -179,17 +177,11 @@ public final class OteAccountBuilder {
*
NOTE: can be called more than once, adding multiple contacts. Each contact will have access
* to all OT&E Registrars.
*
- * @param email the contact email that will have web-console access to all the Registrars. Must be
- * from "our G Suite domain" (we have to be able to get its GaeUserId)
+ * @param email the contact/login email that will have web-console access to all the Registrars.
+ * Must be from "our G Suite domain".
*/
public OteAccountBuilder addContact(String email) {
- String gaeUserId =
- checkNotNull(
- GaeUserIdConverter.convertEmailAddressToGaeUserId(email),
- "Email address %s is not associated with any GAE ID",
- email);
- registrars.forEach(
- registrar -> contactsBuilder.add(createRegistrarContact(email, gaeUserId, registrar)));
+ registrars.forEach(registrar -> contactsBuilder.add(createRegistrarContact(email, registrar)));
return this;
}
@@ -304,7 +296,7 @@ public final class OteAccountBuilder {
TldState initialTldState,
boolean isEarlyAccess,
int roidSuffix) {
- String tldNameAlphaNumerical = tldName.replaceAll("[^a-z0-9]", "");
+ String tldNameAlphaNumerical = tldName.replaceAll("[^a-z\\d]", "");
Optional premiumList = PremiumListDao.getLatestRevision(DEFAULT_PREMIUM_LIST);
checkState(premiumList.isPresent(), "Couldn't find premium list %s.", DEFAULT_PREMIUM_LIST);
Registry.Builder builder =
@@ -348,13 +340,12 @@ public final class OteAccountBuilder {
.build();
}
- private static RegistrarPoc createRegistrarContact(
- String email, String gaeUserId, Registrar registrar) {
+ private static RegistrarPoc createRegistrarContact(String email, Registrar registrar) {
return new RegistrarPoc.Builder()
.setRegistrar(registrar)
.setName(email)
.setEmailAddress(email)
- .setGaeUserId(gaeUserId)
+ .setLoginEmailAddress(email)
.build();
}
diff --git a/core/src/main/java/google/registry/model/registrar/RegistrarPoc.java b/core/src/main/java/google/registry/model/registrar/RegistrarPoc.java
index 9236e61c2..d293a28eb 100644
--- a/core/src/main/java/google/registry/model/registrar/RegistrarPoc.java
+++ b/core/src/main/java/google/registry/model/registrar/RegistrarPoc.java
@@ -57,7 +57,7 @@ import javax.persistence.Table;
* set to true.
*/
@Entity
-@Table(indexes = {@Index(columnList = "gaeUserId", name = "registrarpoc_gae_user_id_idx")})
+@Table(indexes = @Index(columnList = "loginEmailAddress", name = "registrarpoc_login_email_idx"))
@IdClass(RegistrarPocId.class)
public class RegistrarPoc extends ImmutableObject implements Jsonifiable, UnsafeSerializable {
@@ -89,7 +89,7 @@ public class RegistrarPoc extends ImmutableObject implements Jsonifiable, Unsafe
}
Type(String display, boolean required) {
- this.displayName = display;
+ displayName = display;
this.required = required;
}
}
@@ -97,7 +97,12 @@ public class RegistrarPoc extends ImmutableObject implements Jsonifiable, Unsafe
/** The name of the contact. */
String name;
- /** The email address of the contact. */
+ /**
+ * The contact email address of the contact.
+ *
+ * This is different from the login email which is assgined to the regstrar and cannot be
+ * changed.
+ */
@Id String emailAddress;
@Id String registrarId;
@@ -118,13 +123,21 @@ public class RegistrarPoc extends ImmutableObject implements Jsonifiable, Unsafe
Set types;
/**
- * A GAE user ID allowed to act as this registrar contact.
+ * A GAIA email address that was assigned to the registrar for console login purpose.
*
- * This can be derived from a known email address using http://email-to-gae-id.appspot.com.
+ *
We used to store the GAE user ID directly to identify the logged-in user in the registrar
+ * console, and relied on a hacky trick with datastore to get the ID from the email address when
+ * creating a {@link RegistrarPoc}. We switched to using the login email directly as each
+ * registrar is assigned a unique email address that is immutable (to them at least), so it is as
+ * good as an identifier as the ID itself, and it allows us to get rid of the datastore
+ * dependency.
*
- * @see com.google.appengine.api.users.User#getUserId()
+ *
We backfilled all login email addresses for existing {@link RegistrarPoc}s that have a
+ * non-null GAE user ID. The backfill is done by first trying the {@link #emailAddress} field,
+ * then trying {@link #registrarId}+"@known-dasher_domain" and picking the ones that converted to
+ * the existing ID stored in the database.
*/
- String gaeUserId;
+ String loginEmailAddress;
/**
* Whether this contact is publicly visible in WHOIS registrar query results as an Admin contact.
@@ -220,8 +233,8 @@ public class RegistrarPoc extends ImmutableObject implements Jsonifiable, Unsafe
return visibleInDomainWhoisAsAbuse;
}
- public String getGaeUserId() {
- return gaeUserId;
+ public String getLoginEmailAddress() {
+ return loginEmailAddress;
}
public Builder asBuilder() {
@@ -258,8 +271,8 @@ public class RegistrarPoc extends ImmutableObject implements Jsonifiable, Unsafe
* Types: [ADMIN, WHOIS]
* Visible in WHOIS as Admin contact: Yes
* Visible in WHOIS as Technical contact: No
- * GAE-UserID: 1234567890
* Registrar-Console access: Yes
+ * Login Email Address: person@registry.example
* }
*/
public String toStringMultilinePlainText() {
@@ -289,10 +302,10 @@ public class RegistrarPoc extends ImmutableObject implements Jsonifiable, Unsafe
.append('\n');
result
.append("Registrar-Console access: ")
- .append(getGaeUserId() != null ? "Yes" : "No")
+ .append(getLoginEmailAddress() != null ? "Yes" : "No")
.append('\n');
- if (getGaeUserId() != null) {
- result.append("GAE-UserID: ").append(getGaeUserId()).append('\n');
+ if (getLoginEmailAddress() != null) {
+ result.append("Login Email Address: ").append(getLoginEmailAddress()).append('\n');
}
return result.toString();
}
@@ -311,7 +324,7 @@ public class RegistrarPoc extends ImmutableObject implements Jsonifiable, Unsafe
.put("visibleInDomainWhoisAsAbuse", visibleInDomainWhoisAsAbuse)
.put("allowedToSetRegistryLockPassword", allowedToSetRegistryLockPassword)
.put("registryLockAllowed", isRegistryLockAllowed())
- .put("gaeUserId", gaeUserId)
+ .put("loginEmailAddress", loginEmailAddress)
.build();
}
@@ -418,8 +431,8 @@ public class RegistrarPoc extends ImmutableObject implements Jsonifiable, Unsafe
return this;
}
- public Builder setGaeUserId(String gaeUserId) {
- getInstance().gaeUserId = gaeUserId;
+ public Builder setLoginEmailAddress(String loginEmailAddress) {
+ getInstance().loginEmailAddress = loginEmailAddress;
return this;
}
diff --git a/core/src/main/java/google/registry/request/auth/AuthenticatedRegistrarAccessor.java b/core/src/main/java/google/registry/request/auth/AuthenticatedRegistrarAccessor.java
index f293c9260..afbf5b9e9 100644
--- a/core/src/main/java/google/registry/request/auth/AuthenticatedRegistrarAccessor.java
+++ b/core/src/main/java/google/registry/request/auth/AuthenticatedRegistrarAccessor.java
@@ -21,6 +21,7 @@ import static google.registry.persistence.transaction.TransactionManagerFactory.
import com.google.appengine.api.users.User;
import com.google.common.annotations.VisibleForTesting;
+import com.google.common.base.Ascii;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.ImmutableSetMultimap;
import com.google.common.flogger.FluentLogger;
@@ -307,7 +308,7 @@ public class AuthenticatedRegistrarAccessor {
UserAuthInfo userAuthInfo = authResult.userAuthInfo().get();
if (userAuthInfo.appEngineUser().isPresent()) {
User user = userAuthInfo.appEngineUser().get();
- logger.atInfo().log("Checking registrar contacts for user ID %s.", user.getUserId());
+ logger.atInfo().log("Checking registrar contacts for user ID %s.", user.getEmail());
// Find all registrars that have a registrar contact with this user's ID.
jpaTm()
@@ -315,11 +316,11 @@ public class AuthenticatedRegistrarAccessor {
() ->
jpaTm()
.query(
- "SELECT r FROM Registrar r INNER JOIN RegistrarPoc rp ON "
- + "r.registrarId = rp.registrarId WHERE rp.gaeUserId = "
- + ":gaeUserId AND r.state != :state",
+ "SELECT r FROM Registrar r INNER JOIN RegistrarPoc rp ON r.registrarId ="
+ + " rp.registrarId WHERE lower(rp.loginEmailAddress) = :email AND"
+ + " r.state != :state",
Registrar.class)
- .setParameter("gaeUserId", user.getUserId())
+ .setParameter("email", Ascii.toLowerCase(user.getEmail()))
.setParameter("state", State.DISABLED)
.getResultStream()
.forEach(registrar -> builder.put(registrar.getRegistrarId(), Role.OWNER)));
diff --git a/core/src/main/java/google/registry/tools/RegistrarPocCommand.java b/core/src/main/java/google/registry/tools/RegistrarPocCommand.java
index 4e9b4ccc4..68b8d6ca1 100644
--- a/core/src/main/java/google/registry/tools/RegistrarPocCommand.java
+++ b/core/src/main/java/google/registry/tools/RegistrarPocCommand.java
@@ -19,7 +19,6 @@ import static com.google.common.base.Preconditions.checkNotNull;
import static com.google.common.base.Strings.isNullOrEmpty;
import static com.google.common.collect.ImmutableSet.toImmutableSet;
import static google.registry.util.CollectionUtils.nullToEmpty;
-import static google.registry.util.PreconditionsUtils.checkArgumentNotNull;
import static google.registry.util.PreconditionsUtils.checkArgumentPresent;
import static java.nio.charset.StandardCharsets.UTF_8;
@@ -29,7 +28,6 @@ import com.google.common.base.Enums;
import com.google.common.base.Joiner;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
-import google.registry.model.common.GaeUserIdConverter;
import google.registry.model.registrar.Registrar;
import google.registry.model.registrar.RegistrarPoc;
import google.registry.tools.params.OptionalPhoneNumberParameter;
@@ -48,6 +46,7 @@ import java.util.Set;
import javax.annotation.Nullable;
/** Command for CRUD operations on {@link Registrar} contact list fields. */
+@SuppressWarnings("OptionalAssignedToNull")
@Parameters(
separators = " =",
commandDescription = "Create/read/update/delete the various contact lists for a Registrar.")
@@ -78,9 +77,19 @@ final class RegistrarPocCommand extends MutatingCommand {
private List contactTypeNames;
@Nullable
- @Parameter(names = "--email", description = "Contact email address.")
+ @Parameter(
+ names = "--email",
+ description =
+ "Contact email address. Required when creating a contact"
+ + " and will be used as the console login email, if --login_email is not specified.")
String email;
+ @Nullable
+ @Parameter(
+ names = "--login_email",
+ description = "Console login email address. If not specified, --email will be used.")
+ String loginEmail;
+
@Nullable
@Parameter(
names = "--registry_lock_email",
@@ -168,13 +177,13 @@ final class RegistrarPocCommand extends MutatingCommand {
// If the contact_type parameter is not specified, we should not make any changes.
if (contactTypeNames == null) {
contactTypes = null;
- // It appears that when the user specifies "--contact_type=" with no types following, JCommander
- // sets contactTypeNames to a one-element list containing the empty string. This is strange, but
- // we need to handle this by setting the contact types to the empty set. Also do this if
- // contactTypeNames is empty, which is what I would hope JCommander would return in some future,
- // better world.
+ // It appears that when the user specifies "--contact_type=" with no types following,
+ // JCommander sets contactTypeNames to a one-element list containing the empty string. This is
+ // strange, but we need to handle this by setting the contact types to the empty set. Also do
+ // this if contactTypeNames is empty, which is what I would hope JCommander would return in
+ // some future, better world.
} else if (contactTypeNames.isEmpty()
- || ((contactTypeNames.size() == 1) && contactTypeNames.get(0).isEmpty())) {
+ || contactTypeNames.size() == 1 && contactTypeNames.get(0).isEmpty()) {
contactTypes = ImmutableSet.of();
} else {
contactTypes =
@@ -194,7 +203,7 @@ final class RegistrarPocCommand extends MutatingCommand {
break;
case CREATE:
stageEntityChange(null, createContact(registrar));
- if ((visibleInDomainWhoisAsAbuse != null) && visibleInDomainWhoisAsAbuse) {
+ if (visibleInDomainWhoisAsAbuse != null && visibleInDomainWhoisAsAbuse) {
unsetOtherWhoisAbuseFlags(contacts, null);
}
break;
@@ -211,7 +220,7 @@ final class RegistrarPocCommand extends MutatingCommand {
"Cannot clear visible_in_domain_whois_as_abuse flag, as that would leave no domain"
+ " WHOIS abuse contacts; instead, set the flag on another contact");
stageEntityChange(oldContact, newContact);
- if ((visibleInDomainWhoisAsAbuse != null) && visibleInDomainWhoisAsAbuse) {
+ if (visibleInDomainWhoisAsAbuse != null && visibleInDomainWhoisAsAbuse) {
unsetOtherWhoisAbuseFlags(contacts, oldContact.getEmailAddress());
}
break;
@@ -261,9 +270,7 @@ final class RegistrarPocCommand extends MutatingCommand {
builder.setTypes(nullToEmpty(contactTypes));
if (Objects.equals(allowConsoleAccess, Boolean.TRUE)) {
- builder.setGaeUserId(checkArgumentNotNull(
- GaeUserIdConverter.convertEmailAddressToGaeUserId(email),
- String.format("Email address %s is not associated with any GAE ID", email)));
+ builder.setLoginEmailAddress(loginEmail == null ? email : loginEmail);
}
if (visibleInWhoisAsAdmin != null) {
builder.setVisibleInWhoisAsAdmin(visibleInWhoisAsAdmin);
@@ -311,11 +318,9 @@ final class RegistrarPocCommand extends MutatingCommand {
}
if (allowConsoleAccess != null) {
if (allowConsoleAccess.equals(Boolean.TRUE)) {
- builder.setGaeUserId(checkArgumentNotNull(
- GaeUserIdConverter.convertEmailAddressToGaeUserId(email),
- String.format("Email address %s is not associated with any GAE ID", email)));
+ builder.setLoginEmailAddress(loginEmail == null ? email : loginEmail);
} else {
- builder.setGaeUserId(null);
+ builder.setLoginEmailAddress(null);
}
}
if (allowedToSetRegistryLockPassword != null) {
diff --git a/core/src/main/java/google/registry/ui/server/RegistrarFormFields.java b/core/src/main/java/google/registry/ui/server/RegistrarFormFields.java
index 052e8de42..ffd9e4991 100644
--- a/core/src/main/java/google/registry/ui/server/RegistrarFormFields.java
+++ b/core/src/main/java/google/registry/ui/server/RegistrarFormFields.java
@@ -206,8 +206,8 @@ public final class RegistrarFormFields {
public static final FormField CONTACT_FAX_NUMBER_FIELD =
FormFields.PHONE_NUMBER.asBuilderNamed("faxNumber").build();
- public static final FormField CONTACT_GAE_USER_ID_FIELD =
- FormFields.NAME.asBuilderNamed("gaeUserId").build();
+ public static final FormField CONTACT_LOGIN_EMAIL_ADDRESS_FIELD =
+ FormFields.NAME.asBuilderNamed("loginEmailAddress").build();
public static final FormField CONTACT_ALLOWED_TO_SET_REGISTRY_LOCK_PASSWORD =
FormField.named("allowedToSetRegistryLockPassword", Object.class)
@@ -284,11 +284,15 @@ public final class RegistrarFormFields {
public static final FormField, RegistrarAddress> L10N_ADDRESS_FIELD =
FormField.mapNamed("localizedAddress")
- .transform(RegistrarAddress.class, (args) -> toNewAddress(
- args, L10N_STREET_FIELD, L10N_CITY_FIELD, L10N_STATE_FIELD, L10N_ZIP_FIELD))
+ .transform(
+ RegistrarAddress.class,
+ args ->
+ toNewAddress(
+ args, L10N_STREET_FIELD, L10N_CITY_FIELD, L10N_STATE_FIELD, L10N_ZIP_FIELD))
.build();
- private static @Nullable RegistrarAddress toNewAddress(
+ @Nullable
+ private static RegistrarAddress toNewAddress(
@Nullable Map args,
final FormField, List> streetField,
final FormField cityField,
@@ -327,7 +331,8 @@ public final class RegistrarFormFields {
}
}
- private static @Nullable String parseHostname(@Nullable String input) {
+ @Nullable
+ private static String parseHostname(@Nullable String input) {
if (input == null) {
return null;
}
@@ -337,7 +342,8 @@ public final class RegistrarFormFields {
return canonicalizeHostname(input);
}
- public static @Nullable DateTime parseDateTime(@Nullable String input) {
+ @Nullable
+ public static DateTime parseDateTime(@Nullable String input) {
if (input == null) {
return null;
}
@@ -391,7 +397,8 @@ public final class RegistrarFormFields {
builder.setPhoneNumber(CONTACT_PHONE_NUMBER_FIELD.extractUntyped(args).orElse(null));
builder.setFaxNumber(CONTACT_FAX_NUMBER_FIELD.extractUntyped(args).orElse(null));
builder.setTypes(CONTACT_TYPES.extractUntyped(args).orElse(ImmutableSet.of()));
- builder.setGaeUserId(CONTACT_GAE_USER_ID_FIELD.extractUntyped(args).orElse(null));
+ builder.setLoginEmailAddress(
+ CONTACT_LOGIN_EMAIL_ADDRESS_FIELD.extractUntyped(args).orElse(null));
// The parser is inconsistent with whether it retrieves boolean values as strings or booleans.
// As a result, use a potentially-redundant converter that can deal with both.
builder.setAllowedToSetRegistryLockPassword(
diff --git a/core/src/main/java/google/registry/ui/server/registrar/ConsoleRegistrarCreatorAction.java b/core/src/main/java/google/registry/ui/server/registrar/ConsoleRegistrarCreatorAction.java
index 8075f0d7d..6591a0804 100644
--- a/core/src/main/java/google/registry/ui/server/registrar/ConsoleRegistrarCreatorAction.java
+++ b/core/src/main/java/google/registry/ui/server/registrar/ConsoleRegistrarCreatorAction.java
@@ -14,36 +14,40 @@
package google.registry.ui.server.registrar;
-import static com.google.common.base.Preconditions.checkNotNull;
import static com.google.common.base.Preconditions.checkState;
import static com.google.common.collect.ImmutableList.toImmutableList;
import static com.google.common.collect.ImmutableMap.toImmutableMap;
-import static google.registry.model.common.GaeUserIdConverter.convertEmailAddressToGaeUserId;
import static google.registry.persistence.transaction.TransactionManagerFactory.tm;
import static google.registry.ui.server.SoyTemplateUtils.CSS_RENAMING_MAP_SUPPLIER;
import static javax.servlet.http.HttpServletResponse.SC_FORBIDDEN;
import com.google.common.base.Ascii;
import com.google.common.base.Splitter;
-import com.google.common.base.Supplier;
import com.google.common.collect.ImmutableMap;
import com.google.common.flogger.FluentLogger;
import com.google.template.soy.tofu.SoyTofu;
import google.registry.config.RegistryEnvironment;
import google.registry.model.registrar.Registrar;
+import google.registry.model.registrar.Registrar.State;
import google.registry.model.registrar.RegistrarAddress;
import google.registry.model.registrar.RegistrarPoc;
import google.registry.request.Action;
import google.registry.request.Action.Method;
+import google.registry.request.Action.Service;
import google.registry.request.Parameter;
import google.registry.request.auth.Auth;
import google.registry.request.auth.AuthenticatedRegistrarAccessor;
import google.registry.ui.server.SendEmailUtils;
import google.registry.ui.server.SoyTemplateUtils;
+import google.registry.ui.soy.registrar.AnalyticsSoyInfo;
+import google.registry.ui.soy.registrar.ConsoleSoyInfo;
+import google.registry.ui.soy.registrar.ConsoleUtilsSoyInfo;
+import google.registry.ui.soy.registrar.FormsSoyInfo;
import google.registry.ui.soy.registrar.RegistrarCreateConsoleSoyInfo;
import google.registry.util.StringGenerator;
import java.util.HashMap;
import java.util.Optional;
+import java.util.function.Supplier;
import java.util.stream.Stream;
import javax.inject.Inject;
import javax.inject.Named;
@@ -54,12 +58,9 @@ import org.joda.money.CurrencyUnit;
*
* This Action does 2 things: - for GET, just returns the form that asks for the required
* information. - for POST, receives the information and creates the Registrar.
- *
- *
TODO(b/120201577): once we can have 2 different Actions with the same path (different
- * Methods), separate this class to 2 Actions.
*/
@Action(
- service = Action.Service.DEFAULT,
+ service = Service.DEFAULT,
path = ConsoleRegistrarCreatorAction.PATH,
method = {Method.POST, Method.GET},
auth = Auth.AUTH_PUBLIC)
@@ -74,11 +75,11 @@ public final class ConsoleRegistrarCreatorAction extends HtmlAction {
private static final Supplier TOFU_SUPPLIER =
SoyTemplateUtils.createTofuSupplier(
- google.registry.ui.soy.registrar.AnalyticsSoyInfo.getInstance(),
- google.registry.ui.soy.registrar.ConsoleSoyInfo.getInstance(),
- google.registry.ui.soy.registrar.ConsoleUtilsSoyInfo.getInstance(),
- google.registry.ui.soy.registrar.FormsSoyInfo.getInstance(),
- google.registry.ui.soy.registrar.RegistrarCreateConsoleSoyInfo.getInstance());
+ AnalyticsSoyInfo.getInstance(),
+ ConsoleSoyInfo.getInstance(),
+ ConsoleUtilsSoyInfo.getInstance(),
+ FormsSoyInfo.getInstance(),
+ RegistrarCreateConsoleSoyInfo.getInstance());
@Inject AuthenticatedRegistrarAccessor registrarAccessor;
@Inject SendEmailUtils sendEmailUtils;
@@ -136,7 +137,7 @@ public final class ConsoleRegistrarCreatorAction extends HtmlAction {
return PATH;
}
- private void checkPresent(Optional> value, String name) {
+ private static void checkPresent(Optional> value, String name) {
checkState(value.isPresent(), "Missing value for %s", name);
}
@@ -193,11 +194,6 @@ public final class ConsoleRegistrarCreatorAction extends HtmlAction {
optionalZip.ifPresent(zip -> data.put("zip", zip));
data.put("countryCode", countryCode.get());
- String gaeUserId =
- checkNotNull(
- convertEmailAddressToGaeUserId(consoleUserEmail.get()),
- "Email address %s is not associated with any GAE ID",
- consoleUserEmail.get());
String password = optionalPassword.orElse(passwordGenerator.createString(PASSWORD_LENGTH));
String phonePasscode =
optionalPasscode.orElse(passcodeGenerator.createString(PASSCODE_LENGTH));
@@ -213,7 +209,7 @@ public final class ConsoleRegistrarCreatorAction extends HtmlAction {
.setType(Registrar.Type.REAL)
.setPassword(password)
.setPhonePasscode(phonePasscode)
- .setState(Registrar.State.PENDING)
+ .setState(State.PENDING)
.setLocalizedAddress(
new RegistrarAddress.Builder()
.setStreet(
@@ -232,7 +228,7 @@ public final class ConsoleRegistrarCreatorAction extends HtmlAction {
.setRegistrar(registrar)
.setName(consoleUserEmail.get())
.setEmailAddress(consoleUserEmail.get())
- .setGaeUserId(gaeUserId)
+ .setLoginEmailAddress(consoleUserEmail.get())
.build();
tm().transact(
() -> {
@@ -285,7 +281,7 @@ public final class ConsoleRegistrarCreatorAction extends HtmlAction {
.render());
}
- private String toEmailLine(Optional> value, String name) {
+ private static String toEmailLine(Optional> value, String name) {
return String.format(" %s: %s\n", name, value.orElse(null));
}
private void sendExternalUpdates() {
diff --git a/core/src/main/java/google/registry/ui/server/registrar/RegistryLockGetAction.java b/core/src/main/java/google/registry/ui/server/registrar/RegistryLockGetAction.java
index fb440496c..232996858 100644
--- a/core/src/main/java/google/registry/ui/server/registrar/RegistryLockGetAction.java
+++ b/core/src/main/java/google/registry/ui/server/registrar/RegistryLockGetAction.java
@@ -24,6 +24,7 @@ import static javax.servlet.http.HttpServletResponse.SC_INTERNAL_SERVER_ERROR;
import com.google.appengine.api.users.User;
import com.google.common.annotations.VisibleForTesting;
+import com.google.common.base.Ascii;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.google.common.flogger.FluentLogger;
@@ -123,16 +124,21 @@ public final class RegistryLockGetAction implements JsonGetAction {
static Optional getContactMatchingLogin(User user, Registrar registrar) {
ImmutableList matchingContacts =
registrar.getContacts().stream()
- .filter(contact -> contact.getGaeUserId() != null)
- .filter(contact -> Objects.equals(contact.getGaeUserId(), user.getUserId()))
+ .filter(contact -> contact.getLoginEmailAddress() != null)
+ .filter(
+ contact ->
+ Objects.equals(
+ Ascii.toLowerCase(contact.getLoginEmailAddress()),
+ Ascii.toLowerCase(user.getEmail())))
.collect(toImmutableList());
if (matchingContacts.size() > 1) {
ImmutableList matchingEmails =
matchingContacts.stream().map(RegistrarPoc::getEmailAddress).collect(toImmutableList());
throw new IllegalArgumentException(
String.format(
- "User ID %s had multiple matching contacts with email addresses %s",
- user.getUserId(), matchingEmails));
+ "User with login email %s had multiple matching contacts with contact email addresses"
+ + " %s",
+ user.getEmail(), matchingEmails));
}
return matchingContacts.stream().findFirst();
}
@@ -188,7 +194,7 @@ public final class RegistryLockGetAction implements JsonGetAction {
getLockedDomains(registrarId, isAdmin));
}
- private ImmutableList> getLockedDomains(
+ private static ImmutableList> getLockedDomains(
String registrarId, boolean isAdmin) {
return jpaTm()
.transact(
@@ -199,7 +205,7 @@ public final class RegistryLockGetAction implements JsonGetAction {
.collect(toImmutableList()));
}
- private ImmutableMap lockToMap(RegistryLock lock, boolean isAdmin) {
+ private static ImmutableMap lockToMap(RegistryLock lock, boolean isAdmin) {
DateTime now = jpaTm().getTransactionTime();
return new ImmutableMap.Builder()
.put(DOMAIN_NAME_PARAM, lock.getDomainName())
diff --git a/core/src/main/resources/google/registry/ui/soy/registrar/ContactSettings.soy b/core/src/main/resources/google/registry/ui/soy/registrar/ContactSettings.soy
index 2f51ef0f4..34273e483 100644
--- a/core/src/main/resources/google/registry/ui/soy/registrar/ContactSettings.soy
+++ b/core/src/main/resources/google/registry/ui/soy/registrar/ContactSettings.soy
@@ -183,8 +183,8 @@
{/call}
{/if}
- {if isNonnull($item['gaeUserId'])}
-
+ {if isNonnull($item['loginEmailAddress'])}
+
{/if}
{/template}
diff --git a/core/src/test/java/google/registry/batch/RelockDomainActionTest.java b/core/src/test/java/google/registry/batch/RelockDomainActionTest.java
index 3def0e534..ef8c5ee07 100644
--- a/core/src/test/java/google/registry/batch/RelockDomainActionTest.java
+++ b/core/src/test/java/google/registry/batch/RelockDomainActionTest.java
@@ -84,7 +84,7 @@ public class RelockDomainActionTest {
AppEngineExtension.builder()
.withCloudSql()
.withTaskQueue()
- .withUserService(UserInfo.create(POC_ID, "12345"))
+ .withUserService(UserInfo.create(POC_ID))
.build();
private Domain domain;
diff --git a/core/src/test/java/google/registry/export/sheet/SyncRegistrarsSheetTest.java b/core/src/test/java/google/registry/export/sheet/SyncRegistrarsSheetTest.java
index 2c4a95067..f800053d8 100644
--- a/core/src/test/java/google/registry/export/sheet/SyncRegistrarsSheetTest.java
+++ b/core/src/test/java/google/registry/export/sheet/SyncRegistrarsSheetTest.java
@@ -169,7 +169,7 @@ public class SyncRegistrarsSheetTest {
// distinction to make sure we're not relying on it. Sigh.
.setVisibleInWhoisAsAdmin(false)
.setVisibleInWhoisAsTech(true)
- .setGaeUserId("light")
+ .setLoginEmailAddress("john.doe@example.tld")
.build(),
new RegistrarPoc.Builder()
.setRegistrar(registrar)
@@ -217,7 +217,7 @@ public class SyncRegistrarsSheetTest {
+ "Phone number and email visible in domain WHOIS query as "
+ "Registrar Abuse contact info: No\n"
+ "Registrar-Console access: Yes\n"
- + "GAE-UserID: light\n");
+ + "Login Email Address: john.doe@example.tld\n");
assertThat(row)
.containsEntry(
"techContacts",
@@ -262,7 +262,7 @@ public class SyncRegistrarsSheetTest {
+ "Phone number and email visible in domain WHOIS query as "
+ "Registrar Abuse contact info: No\n"
+ "Registrar-Console access: Yes\n"
- + "GAE-UserID: light\n");
+ + "Login Email Address: john.doe@example.tld\n");
assertThat(row).containsEntry("emailAddress", "nowhere@example.org");
assertThat(row).containsEntry(
"address.street", "I get fallen back upon since there's no l10n addr");
diff --git a/core/src/test/java/google/registry/model/OteAccountBuilderTest.java b/core/src/test/java/google/registry/model/OteAccountBuilderTest.java
index 4dc538f79..439726738 100644
--- a/core/src/test/java/google/registry/model/OteAccountBuilderTest.java
+++ b/core/src/test/java/google/registry/model/OteAccountBuilderTest.java
@@ -64,7 +64,7 @@ public final class OteAccountBuilderTest {
persistPremiumList("default_sandbox_list", USD, "sandbox,USD 1000");
}
- private void assertTldExists(String tld, TldState tldState, Money eapFee) {
+ private static void assertTldExists(String tld, TldState tldState, Money eapFee) {
Registry registry = Registry.get(tld);
assertThat(registry).isNotNull();
assertThat(registry.getPremiumListName()).hasValue("default_sandbox_list");
@@ -80,7 +80,7 @@ public final class OteAccountBuilderTest {
.isEqualTo(eapFee.getAmount());
}
- private void assertRegistrarExists(String registrarId, String tld) {
+ private static void assertRegistrarExists(String registrarId, String tld) {
Registrar registrar = Registrar.loadByRegistrarId(registrarId).orElse(null);
assertThat(registrar).isNotNull();
assertThat(registrar.getType()).isEqualTo(Registrar.Type.OTE);
@@ -88,7 +88,7 @@ public final class OteAccountBuilderTest {
assertThat(registrar.getAllowedTlds()).containsExactly(tld);
}
- private void assertContactExists(String registrarId, String email) {
+ private static void assertContactExists(String registrarId, String email) {
Registrar registrar = Registrar.loadByRegistrarId(registrarId).get();
assertThat(registrar.getContacts().stream().map(RegistrarPoc::getEmailAddress)).contains(email);
RegistrarPoc contact =
@@ -97,7 +97,7 @@ public final class OteAccountBuilderTest {
.findAny()
.get();
assertThat(contact.getEmailAddress()).isEqualTo(email);
- assertThat(contact.getGaeUserId()).isNotEmpty();
+ assertThat(contact.getLoginEmailAddress()).isEqualTo(email);
}
@Test
diff --git a/core/src/test/java/google/registry/persistence/transaction/JpaTransactionManagerExtension.java b/core/src/test/java/google/registry/persistence/transaction/JpaTransactionManagerExtension.java
index d199707c5..d1c51c66a 100644
--- a/core/src/test/java/google/registry/persistence/transaction/JpaTransactionManagerExtension.java
+++ b/core/src/test/java/google/registry/persistence/transaction/JpaTransactionManagerExtension.java
@@ -43,7 +43,6 @@ import google.registry.util.Clock;
import java.io.File;
import java.io.IOException;
import java.io.UncheckedIOException;
-import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.sql.Connection;
import java.sql.Driver;
@@ -90,9 +89,6 @@ abstract class JpaTransactionManagerExtension implements BeforeEachCallback, Aft
// is documented in PSQL's official user guide.
private static final String CONNECTION_BACKEND_TYPE = "client backend";
private static final int ACTIVE_CONNECTIONS_CAP = 5;
- public static final String NEW_REGISTRAR_GAE_USER_ID = "666";
- public static final String THE_REGISTRAR_GAE_USER_ID = "31337";
- public static final String MARLA_SINGER_GAE_USER_ID = "12345";
private final Clock clock;
private final Optional initScriptPath;
@@ -171,7 +167,7 @@ abstract class JpaTransactionManagerExtension implements BeforeEachCallback, Aft
File tempSqlFile = File.createTempFile("tempSqlFile", ".sql");
tempSqlFile.deleteOnExit();
exporter.export(extraEntityClasses, tempSqlFile);
- executeSql(new String(Files.readAllBytes(tempSqlFile.toPath()), StandardCharsets.UTF_8));
+ executeSql(Files.readString(tempSqlFile.toPath()));
}
assertReasonableNumDbConnections();
emf = createEntityManagerFactory(getJpaProperties());
@@ -308,7 +304,7 @@ abstract class JpaTransactionManagerExtension implements BeforeEachCallback, Aft
private static String getJdbcUrl() {
// Disable Postgres driver use of java.util.logging to reduce noise at startup time
return "jdbc:postgresql://"
- + database.getContainerIpAddress()
+ + database.getHost()
+ ":"
+ database.getMappedPort(POSTGRESQL_PORT)
+ "/"
@@ -411,7 +407,7 @@ abstract class JpaTransactionManagerExtension implements BeforeEachCallback, Aft
.setEmailAddress("johndoe@theregistrar.com")
.setPhoneNumber("+1.1234567890")
.setTypes(ImmutableSet.of(RegistrarPoc.Type.ADMIN))
- .setGaeUserId(THE_REGISTRAR_GAE_USER_ID)
+ .setLoginEmailAddress("johndoe@theregistrar.com")
.build();
}
@@ -423,7 +419,7 @@ abstract class JpaTransactionManagerExtension implements BeforeEachCallback, Aft
.setRegistryLockEmailAddress("Marla.Singer.RegistryLock@crr.com")
.setPhoneNumber("+1.2128675309")
.setTypes(ImmutableSet.of(RegistrarPoc.Type.TECH))
- .setGaeUserId(MARLA_SINGER_GAE_USER_ID)
+ .setLoginEmailAddress("Marla.Singer@crr.com")
.setAllowedToSetRegistryLockPassword(true)
.setRegistryLockPassword("hi")
.build();
diff --git a/core/src/test/java/google/registry/request/RequestHandlerTest.java b/core/src/test/java/google/registry/request/RequestHandlerTest.java
index cf29e3199..6684adbd0 100644
--- a/core/src/test/java/google/registry/request/RequestHandlerTest.java
+++ b/core/src/test/java/google/registry/request/RequestHandlerTest.java
@@ -55,7 +55,7 @@ public final class RequestHandlerTest {
final AppEngineExtension appEngine =
AppEngineExtension.builder()
.withCloudSql()
- .withUserService(UserInfo.create("test@example.com", "test@example.com"))
+ .withUserService(UserInfo.create("test@example.com"))
.build();
@Action(
diff --git a/core/src/test/java/google/registry/request/auth/AuthenticatedRegistrarAccessorTest.java b/core/src/test/java/google/registry/request/auth/AuthenticatedRegistrarAccessorTest.java
index 813bb3f90..0b0d897e5 100644
--- a/core/src/test/java/google/registry/request/auth/AuthenticatedRegistrarAccessorTest.java
+++ b/core/src/test/java/google/registry/request/auth/AuthenticatedRegistrarAccessorTest.java
@@ -17,7 +17,6 @@ package google.registry.request.auth;
import static com.google.common.truth.Truth.assertThat;
import static google.registry.request.auth.AuthenticatedRegistrarAccessor.Role.ADMIN;
import static google.registry.request.auth.AuthenticatedRegistrarAccessor.Role.OWNER;
-import static google.registry.testing.AppEngineExtension.THE_REGISTRAR_GAE_USER_ID;
import static google.registry.testing.DatabaseHelper.loadRegistrar;
import static google.registry.testing.DatabaseHelper.persistResource;
import static google.registry.testing.LogsSubject.assertAboutLogs;
@@ -94,14 +93,7 @@ class AuthenticatedRegistrarAccessorTest {
private static AuthResult createAuthResult(boolean isAdmin) {
return AuthResult.create(
AuthLevel.USER,
- UserAuthInfo.create(
- new User(
- String.format(
- "%s@gmail.com",
- isAdmin ? "admin" : "user"),
- "gmail.com",
- THE_REGISTRAR_GAE_USER_ID),
- isAdmin));
+ UserAuthInfo.create(new User("johndoe@theregistrar.com", "theregistrar.com"), isAdmin));
}
@BeforeEach
@@ -195,7 +187,8 @@ class AuthenticatedRegistrarAccessorTest {
*/
@Test
void getAllRegistrarIdWithAccess_userInSupportGroup() {
- when(groupsConnection.isMemberOfGroup("user@gmail.com", SUPPORT_GROUP.get())).thenReturn(true);
+ when(groupsConnection.isMemberOfGroup("johndoe@theregistrar.com", SUPPORT_GROUP.get()))
+ .thenReturn(true);
AuthenticatedRegistrarAccessor registrarAccessor =
new AuthenticatedRegistrarAccessor(
USER, ADMIN_REGISTRAR_ID, SUPPORT_GROUP, lazyGroupsConnection);
@@ -233,7 +226,7 @@ class AuthenticatedRegistrarAccessorTest {
new AuthenticatedRegistrarAccessor(
USER, ADMIN_REGISTRAR_ID, SUPPORT_GROUP, lazyGroupsConnection);
- verify(groupsConnection).isMemberOfGroup("user@gmail.com", SUPPORT_GROUP.get());
+ verify(groupsConnection).isMemberOfGroup("johndoe@theregistrar.com", SUPPORT_GROUP.get());
assertThat(registrarAccessor.getAllRegistrarIdsWithRoles())
.containsExactly(REGISTRAR_ID_WITH_CONTACT, OWNER);
verify(lazyGroupsConnection).get();
@@ -245,7 +238,7 @@ class AuthenticatedRegistrarAccessorTest {
expectGetRegistrarFailure(
REAL_REGISTRAR_ID_WITHOUT_CONTACT,
USER,
- "user user@gmail.com doesn't have access to registrar NewRegistrar");
+ "user johndoe@theregistrar.com doesn't have access to registrar NewRegistrar");
verify(lazyGroupsConnection).get();
}
@@ -260,7 +253,7 @@ class AuthenticatedRegistrarAccessorTest {
expectGetRegistrarFailure(
REGISTRAR_ID_WITH_CONTACT,
USER,
- "user user@gmail.com doesn't have access to registrar TheRegistrar");
+ "user johndoe@theregistrar.com doesn't have access to registrar TheRegistrar");
verify(lazyGroupsConnection).get();
}
@@ -270,7 +263,7 @@ class AuthenticatedRegistrarAccessorTest {
expectGetRegistrarFailure(
OTE_REGISTRAR_ID_WITHOUT_CONTACT,
USER,
- "user user@gmail.com doesn't have access to registrar OteRegistrar");
+ "user johndoe@theregistrar.com doesn't have access to registrar OteRegistrar");
verify(lazyGroupsConnection).get();
}
@@ -290,7 +283,19 @@ class AuthenticatedRegistrarAccessorTest {
expectGetRegistrarSuccess(
REGISTRAR_ID_WITH_CONTACT,
USER,
- "user user@gmail.com has [OWNER] access to registrar TheRegistrar");
+ "user johndoe@theregistrar.com has [OWNER] access to registrar TheRegistrar");
+ verify(lazyGroupsConnection).get();
+ }
+
+ /** Succeed loading registrar if user has access to it. Email address is case-insensitive */
+ @Test
+ void testGetRegistrarForUser_inContacts_isNotAdmin_caseInsensitive() throws Exception {
+ expectGetRegistrarSuccess(
+ REGISTRAR_ID_WITH_CONTACT,
+ AuthResult.create(
+ AuthLevel.USER,
+ UserAuthInfo.create(new User("JohnDoe@theregistrar.com", "theregistrar.com"), false)),
+ "user JohnDoe@theregistrar.com has [OWNER] access to registrar TheRegistrar");
verify(lazyGroupsConnection).get();
}
@@ -300,7 +305,7 @@ class AuthenticatedRegistrarAccessorTest {
expectGetRegistrarSuccess(
REGISTRAR_ID_WITH_CONTACT,
GAE_ADMIN,
- "admin admin@gmail.com has [OWNER, ADMIN] access to registrar TheRegistrar");
+ "admin johndoe@theregistrar.com has [OWNER, ADMIN] access to registrar TheRegistrar");
verifyNoInteractions(lazyGroupsConnection);
}
@@ -310,7 +315,7 @@ class AuthenticatedRegistrarAccessorTest {
expectGetRegistrarSuccess(
REAL_REGISTRAR_ID_WITHOUT_CONTACT,
GAE_ADMIN,
- "admin admin@gmail.com has [ADMIN] access to registrar NewRegistrar.");
+ "admin johndoe@theregistrar.com has [ADMIN] access to registrar NewRegistrar.");
verifyNoInteractions(lazyGroupsConnection);
}
@@ -325,7 +330,7 @@ class AuthenticatedRegistrarAccessorTest {
expectGetRegistrarSuccess(
REAL_REGISTRAR_ID_WITHOUT_CONTACT,
GAE_ADMIN,
- "admin admin@gmail.com has [OWNER, ADMIN] access to registrar NewRegistrar.");
+ "admin johndoe@theregistrar.com has [OWNER, ADMIN] access to registrar NewRegistrar.");
verifyNoInteractions(lazyGroupsConnection);
}
@@ -335,7 +340,7 @@ class AuthenticatedRegistrarAccessorTest {
expectGetRegistrarSuccess(
OTE_REGISTRAR_ID_WITHOUT_CONTACT,
GAE_ADMIN,
- "admin admin@gmail.com has [OWNER, ADMIN] access to registrar OteRegistrar.");
+ "admin johndoe@theregistrar.com has [OWNER, ADMIN] access to registrar OteRegistrar.");
verifyNoInteractions(lazyGroupsConnection);
}
diff --git a/core/src/test/java/google/registry/server/RegistryTestServerMain.java b/core/src/test/java/google/registry/server/RegistryTestServerMain.java
index 67f230fb7..6fb2a5828 100644
--- a/core/src/test/java/google/registry/server/RegistryTestServerMain.java
+++ b/core/src/test/java/google/registry/server/RegistryTestServerMain.java
@@ -56,11 +56,6 @@ public final class RegistryTestServerMain {
description = "Login email address for App Engine Local User Service.")
private String loginEmail = "Marla.Singer@crr.com";
- @Parameter(
- names = "--login_user_id",
- description = "GAE User ID for App Engine Local User Service.")
- private String loginUserId = AppEngineExtension.MARLA_SINGER_GAE_USER_ID;
-
@Parameter(
names = "--login_is_admin",
description = "Should logged in user be an admin for App Engine Local User Service.",
@@ -140,9 +135,7 @@ public final class RegistryTestServerMain {
.withTaskQueue()
.withLocalModules()
.withUserService(
- loginIsAdmin
- ? UserInfo.createAdmin(loginEmail, loginUserId)
- : UserInfo.create(loginEmail, loginUserId))
+ loginIsAdmin ? UserInfo.createAdmin(loginEmail) : UserInfo.create(loginEmail))
.build();
appEngine.setUp();
new JpaTestExtensions.Builder().buildIntegrationTestExtension().beforeEach(null);
diff --git a/core/src/test/java/google/registry/testing/AppEngineExtension.java b/core/src/test/java/google/registry/testing/AppEngineExtension.java
index 86211f725..60db470e1 100644
--- a/core/src/test/java/google/registry/testing/AppEngineExtension.java
+++ b/core/src/test/java/google/registry/testing/AppEngineExtension.java
@@ -81,10 +81,6 @@ import org.junit.jupiter.api.io.TempDir;
*/
public final class AppEngineExtension implements BeforeEachCallback, AfterEachCallback {
- public static final String NEW_REGISTRAR_GAE_USER_ID = "666";
- public static final String THE_REGISTRAR_GAE_USER_ID = "31337";
- public static final String MARLA_SINGER_GAE_USER_ID = "12345";
-
/**
* The GAE testing library requires queue.xml to be a file, not a resource in a jar, so we read it
* in here and write it to a temporary file later.
@@ -336,7 +332,7 @@ public final class AppEngineExtension implements BeforeEachCallback, AfterEachCa
.setEmailAddress("johndoe@theregistrar.com")
.setPhoneNumber("+1.1234567890")
.setTypes(ImmutableSet.of(RegistrarPoc.Type.ADMIN))
- .setGaeUserId(THE_REGISTRAR_GAE_USER_ID)
+ .setLoginEmailAddress("johndoe@theregistrar.com")
.build();
}
@@ -348,7 +344,7 @@ public final class AppEngineExtension implements BeforeEachCallback, AfterEachCa
.setRegistryLockEmailAddress("Marla.Singer.RegistryLock@crr.com")
.setPhoneNumber("+1.2128675309")
.setTypes(ImmutableSet.of(RegistrarPoc.Type.TECH))
- .setGaeUserId(MARLA_SINGER_GAE_USER_ID)
+ .setLoginEmailAddress("Marla.Singer@crr.com")
.setAllowedToSetRegistryLockPassword(true)
.setRegistryLockPassword("hi")
.build();
@@ -435,11 +431,6 @@ public final class AppEngineExtension implements BeforeEachCallback, AfterEachCa
// Set top-level properties on LocalServiceTestConfig for user login.
helper
.setEnvIsLoggedIn(userInfo.isLoggedIn())
- // This envAttributes thing is the only way to set userId.
- // see https://code.google.com/p/googleappengine/issues/detail?id=3579
- .setEnvAttributes(
- ImmutableMap.of(
- "com.google.appengine.api.users.UserService.user_id_key", userInfo.gaeUserId()))
.setEnvAuthDomain(userInfo.authDomain())
.setEnvEmail(userInfo.email())
.setEnvIsAdmin(userInfo.isAdmin());
diff --git a/core/src/test/java/google/registry/testing/UserInfo.java b/core/src/test/java/google/registry/testing/UserInfo.java
index b2217dc32..e573db11a 100644
--- a/core/src/test/java/google/registry/testing/UserInfo.java
+++ b/core/src/test/java/google/registry/testing/UserInfo.java
@@ -24,25 +24,24 @@ public abstract class UserInfo {
abstract String email();
abstract String authDomain();
- abstract String gaeUserId();
abstract boolean isAdmin();
abstract boolean isLoggedIn();
/** Creates a new logged-in non-admin user instance. */
- public static UserInfo create(String email, String gaeUserId) {
+ public static UserInfo create(String email) {
String authDomain = email.substring(email.indexOf('@') + 1);
- return new AutoValue_UserInfo(email, authDomain, gaeUserId, false, true);
+ return new AutoValue_UserInfo(email, authDomain, false, true);
}
/** Creates a new logged-in admin user instance. */
- public static UserInfo createAdmin(String email, String gaeUserId) {
+ public static UserInfo createAdmin(String email) {
String authDomain = email.substring(email.indexOf('@') + 1);
- return new AutoValue_UserInfo(email, authDomain, gaeUserId, true, true);
+ return new AutoValue_UserInfo(email, authDomain, true, true);
}
/** Returns a logged-out user instance. */
public static UserInfo loggedOut() {
- return new AutoValue_UserInfo("", "", "", false, false);
+ return new AutoValue_UserInfo("", "", false, false);
}
UserInfo() {}
diff --git a/core/src/test/java/google/registry/tools/DomainLockUtilsTest.java b/core/src/test/java/google/registry/tools/DomainLockUtilsTest.java
index 0e0b2e0a0..c472c50f0 100644
--- a/core/src/test/java/google/registry/tools/DomainLockUtilsTest.java
+++ b/core/src/test/java/google/registry/tools/DomainLockUtilsTest.java
@@ -79,7 +79,7 @@ public final class DomainLockUtilsTest {
.withCloudSql()
.withClock(clock)
.withTaskQueue()
- .withUserService(UserInfo.create(POC_ID, "12345"))
+ .withUserService(UserInfo.create(POC_ID))
.build();
private Domain domain;
diff --git a/core/src/test/java/google/registry/tools/RegistrarPocCommandTest.java b/core/src/test/java/google/registry/tools/RegistrarPocCommandTest.java
index 5405512a1..b27c84b82 100644
--- a/core/src/test/java/google/registry/tools/RegistrarPocCommandTest.java
+++ b/core/src/test/java/google/registry/tools/RegistrarPocCommandTest.java
@@ -132,10 +132,33 @@ class RegistrarPocCommandTest extends CommandTestCase {
"NewRegistrar");
RegistrarPoc registrarPoc =
loadRegistrar("NewRegistrar").getContacts().stream()
- .filter(rc -> rc.getEmailAddress().equals("jane.doe@example.com"))
+ .filter(rc -> "jane.doe@example.com".equals(rc.getEmailAddress()))
.findFirst()
.get();
- assertThat(registrarPoc.getGaeUserId()).matches("-?[0-9]+");
+ assertThat(registrarPoc.getLoginEmailAddress()).isEqualTo("jane.doe@example.com");
+ }
+
+ @Test
+ void testUpdate_enableConsoleAccess_specifyLoginEmail() throws Exception {
+ Registrar registrar = loadRegistrar("NewRegistrar");
+ persistSimpleResource(
+ new RegistrarPoc.Builder()
+ .setRegistrar(registrar)
+ .setName("Jane Doe")
+ .setEmailAddress("jane.doe@example.com")
+ .build());
+ runCommandForced(
+ "--mode=UPDATE",
+ "--email=jane.doe@example.com",
+ "--login_email=jim.doe@example.com",
+ "--allow_console_access=true",
+ "NewRegistrar");
+ RegistrarPoc registrarPoc =
+ loadRegistrar("NewRegistrar").getContacts().stream()
+ .filter(rc -> "jane.doe@example.com".equals(rc.getEmailAddress()))
+ .findFirst()
+ .get();
+ assertThat(registrarPoc.getLoginEmailAddress()).isEqualTo("jim.doe@example.com");
}
@Test
@@ -146,7 +169,6 @@ class RegistrarPocCommandTest extends CommandTestCase {
.setRegistrar(registrar)
.setName("Judith Doe")
.setEmailAddress("judith.doe@example.com")
- .setGaeUserId("11111")
.build());
runCommandForced(
"--mode=UPDATE",
@@ -154,7 +176,7 @@ class RegistrarPocCommandTest extends CommandTestCase {
"--allow_console_access=false",
"NewRegistrar");
RegistrarPoc registrarPoc = loadRegistrar("NewRegistrar").getContacts().asList().get(1);
- assertThat(registrarPoc.getGaeUserId()).isNull();
+ assertThat(registrarPoc.getLoginEmailAddress()).isNull();
}
@Test
@@ -165,14 +187,12 @@ class RegistrarPocCommandTest extends CommandTestCase {
.setRegistrar(registrar)
.setName("John Doe")
.setEmailAddress("john.doe@example.com")
- .setGaeUserId("11111")
.build());
persistSimpleResource(
new RegistrarPoc.Builder()
.setRegistrar(registrar)
.setName("Johnna Doe")
.setEmailAddress("johnna.doe@example.com")
- .setGaeUserId("11112")
.setVisibleInDomainWhoisAsAbuse(true)
.build());
runCommandForced(
@@ -183,7 +203,7 @@ class RegistrarPocCommandTest extends CommandTestCase {
ImmutableList registrarPocs =
loadRegistrar("NewRegistrar").getContacts().asList();
for (RegistrarPoc registrarPoc : registrarPocs) {
- if (registrarPoc.getName().equals("John Doe")) {
+ if ("John Doe".equals(registrarPoc.getName())) {
assertThat(registrarPoc.getVisibleInDomainWhoisAsAbuse()).isTrue();
} else {
assertThat(registrarPoc.getVisibleInDomainWhoisAsAbuse()).isFalse();
@@ -199,7 +219,6 @@ class RegistrarPocCommandTest extends CommandTestCase {
.setRegistrar(registrar)
.setName("John Doe")
.setEmailAddress("john.doe@example.com")
- .setGaeUserId("11111")
.setVisibleInDomainWhoisAsAbuse(true)
.build());
IllegalArgumentException thrown =
@@ -227,7 +246,6 @@ class RegistrarPocCommandTest extends CommandTestCase {
.setRegistrar(registrar)
.setName("John Doe")
.setEmailAddress("john.doe@example.com")
- .setGaeUserId("11111")
.setPhoneNumber("123-456-7890")
.setFaxNumber("123-456-7890")
.setTypes(ImmutableSet.of(ADMIN, ABUSE))
@@ -239,7 +257,6 @@ class RegistrarPocCommandTest extends CommandTestCase {
RegistrarPoc registrarPoc = loadRegistrar("NewRegistrar").getContacts().asList().get(1);
assertThat(registrarPoc.getEmailAddress()).isEqualTo(existingContact.getEmailAddress());
assertThat(registrarPoc.getName()).isEqualTo(existingContact.getName());
- assertThat(registrarPoc.getGaeUserId()).isEqualTo(existingContact.getGaeUserId());
assertThat(registrarPoc.getPhoneNumber()).isEqualTo(existingContact.getPhoneNumber());
assertThat(registrarPoc.getFaxNumber()).isEqualTo(existingContact.getFaxNumber());
assertThat(registrarPoc.getTypes()).isEqualTo(existingContact.getTypes());
@@ -259,7 +276,6 @@ class RegistrarPocCommandTest extends CommandTestCase {
.setRegistrar(registrar)
.setName("John Doe")
.setEmailAddress("john.doe@example.com")
- .setGaeUserId("11111")
.setPhoneNumber("123-456-7890")
.setFaxNumber("123-456-7890")
.setTypes(ImmutableSet.of(ADMIN, ABUSE))
@@ -287,10 +303,7 @@ class RegistrarPocCommandTest extends CommandTestCase {
.setTypes(ImmutableSet.of(ADMIN, ABUSE))
.build());
runCommandForced(
- "--mode=UPDATE",
- "--email=john.doe@example.com",
- "--contact_type=",
- "NewRegistrar");
+ "--mode=UPDATE", "--email=john.doe@example.com", "--contact_type=", "NewRegistrar");
RegistrarPoc registrarPoc = loadRegistrar("NewRegistrar").getContacts().asList().get(1);
assertThat(registrarPoc.getTypes()).isEmpty();
}
@@ -321,16 +334,13 @@ class RegistrarPocCommandTest extends CommandTestCase {
.setVisibleInWhoisAsTech(false)
.setVisibleInDomainWhoisAsAbuse(true)
.build());
- assertThat(registrarPoc.getGaeUserId()).isNull();
+ assertThat(registrarPoc.getLoginEmailAddress()).isNull();
}
@Test
void testDelete() throws Exception {
assertThat(loadRegistrar("NewRegistrar").getContacts()).isNotEmpty();
- runCommandForced(
- "--mode=DELETE",
- "--email=janedoe@theregistrar.com",
- "NewRegistrar");
+ runCommandForced("--mode=DELETE", "--email=janedoe@theregistrar.com", "NewRegistrar");
assertThat(loadRegistrar("NewRegistrar").getContacts()).isEmpty();
}
@@ -358,7 +368,21 @@ class RegistrarPocCommandTest extends CommandTestCase {
"--contact_type=ADMIN,ABUSE",
"NewRegistrar");
RegistrarPoc registrarPoc = loadRegistrar("NewRegistrar").getContacts().asList().get(1);
- assertThat(registrarPoc.getGaeUserId()).matches("-?[0-9]+");
+ assertThat(registrarPoc.getEmailAddress()).isEqualTo("jim.doe@example.com");
+ }
+
+ @Test
+ void testCreate_withConsoleAccessEnabled_specifyLoginEmail() throws Exception {
+ runCommandForced(
+ "--mode=CREATE",
+ "--name=Jim Doe",
+ "--email=jim.doe@example.com",
+ "--login_email=jane.doe@example.com",
+ "--allow_console_access=true",
+ "--contact_type=ADMIN,ABUSE",
+ "NewRegistrar");
+ RegistrarPoc registrarPoc = loadRegistrar("NewRegistrar").getContacts().asList().get(1);
+ assertThat(registrarPoc.getLoginEmailAddress()).isEqualTo("jane.doe@example.com");
}
@Test
diff --git a/core/src/test/java/google/registry/tools/SetupOteCommandTest.java b/core/src/test/java/google/registry/tools/SetupOteCommandTest.java
index 8e609949a..098cf414b 100644
--- a/core/src/test/java/google/registry/tools/SetupOteCommandTest.java
+++ b/core/src/test/java/google/registry/tools/SetupOteCommandTest.java
@@ -114,7 +114,7 @@ class SetupOteCommandTest extends CommandTestCase {
RegistrarPoc registrarPoc = registrarPocs.stream().findAny().get();
assertThat(registrarPoc.getEmailAddress()).isEqualTo(email);
assertThat(registrarPoc.getName()).isEqualTo(email);
- assertThat(registrarPoc.getGaeUserId()).isNotNull();
+ assertThat(registrarPoc.getLoginEmailAddress()).isEqualTo(email);
}
@Test
diff --git a/core/src/test/java/google/registry/ui/server/registrar/ConsoleRegistrarCreatorActionTest.java b/core/src/test/java/google/registry/ui/server/registrar/ConsoleRegistrarCreatorActionTest.java
index d1df2df53..b3b7c32ca 100644
--- a/core/src/test/java/google/registry/ui/server/registrar/ConsoleRegistrarCreatorActionTest.java
+++ b/core/src/test/java/google/registry/ui/server/registrar/ConsoleRegistrarCreatorActionTest.java
@@ -16,7 +16,6 @@ package google.registry.ui.server.registrar;
import static com.google.common.net.HttpHeaders.LOCATION;
import static com.google.common.truth.Truth.assertThat;
-import static google.registry.model.common.GaeUserIdConverter.convertEmailAddressToGaeUserId;
import static google.registry.model.registrar.Registrar.loadByRegistrarId;
import static google.registry.testing.DatabaseHelper.persistPremiumList;
import static javax.servlet.http.HttpServletResponse.SC_MOVED_TEMPORARILY;
@@ -67,7 +66,7 @@ final class ConsoleRegistrarCreatorActionTest {
final AppEngineExtension appEngineExtension = AppEngineExtension.builder().withCloudSql().build();
@RegisterExtension
- @Order(value = Integer.MAX_VALUE)
+ @Order(Integer.MAX_VALUE)
final SystemPropertyExtension systemPropertyExtension = new SystemPropertyExtension();
private final FakeResponse response = new FakeResponse();
@@ -217,10 +216,9 @@ final class ConsoleRegistrarCreatorActionTest {
.containsExactly(
new RegistrarPoc.Builder()
.setRegistrar(registrar)
- .setGaeUserId("-1509175207")
- .setGaeUserId(convertEmailAddressToGaeUserId("myclientid@registry.example"))
.setName("myclientid@registry.example")
.setEmailAddress("myclientid@registry.example")
+ .setLoginEmailAddress("myclientid@registry.example")
.build());
}
diff --git a/core/src/test/java/google/registry/ui/server/registrar/ConsoleUiActionTest.java b/core/src/test/java/google/registry/ui/server/registrar/ConsoleUiActionTest.java
index d618f7505..580221ddd 100644
--- a/core/src/test/java/google/registry/ui/server/registrar/ConsoleUiActionTest.java
+++ b/core/src/test/java/google/registry/ui/server/registrar/ConsoleUiActionTest.java
@@ -52,7 +52,7 @@ class ConsoleUiActionTest {
final AppEngineExtension appEngineExtension =
AppEngineExtension.builder()
.withCloudSql()
- .withUserService(UserInfo.create("marla.singer@example.com", "12345"))
+ .withUserService(UserInfo.create("marla.singer@example.com"))
.build();
private final HttpServletRequest request = mock(HttpServletRequest.class);
diff --git a/core/src/test/java/google/registry/ui/server/registrar/RegistryLockGetActionTest.java b/core/src/test/java/google/registry/ui/server/registrar/RegistryLockGetActionTest.java
index 929cd91a5..87ef36d21 100644
--- a/core/src/test/java/google/registry/ui/server/registrar/RegistryLockGetActionTest.java
+++ b/core/src/test/java/google/registry/ui/server/registrar/RegistryLockGetActionTest.java
@@ -72,7 +72,7 @@ final class RegistryLockGetActionTest {
@BeforeEach
void beforeEach() {
- user = userFromRegistrarPoc(AppEngineExtension.makeRegistrarContact3());
+ user = userFromRegistrarPoc(makeRegistrarContact3());
fakeClock.setTo(DateTime.parse("2000-06-08T22:00:00.0Z"));
authResult = AuthResult.create(AuthLevel.USER, UserAuthInfo.create(user, false));
accessor =
@@ -335,7 +335,7 @@ final class RegistryLockGetActionTest {
// Locks are allowed for admins even when they're not enabled for the registrar
persistResource(makeRegistrar2().asBuilder().setRegistryLockAllowed(false).build());
// disallow the other user
- persistResource(makeRegistrarContact2().asBuilder().setGaeUserId(null).build());
+ persistResource(makeRegistrarContact2().asBuilder().setLoginEmailAddress(null).build());
authResult = AuthResult.create(AuthLevel.USER, UserAuthInfo.create(user, true));
accessor =
AuthenticatedRegistrarAccessor.createForTesting(
@@ -361,9 +361,9 @@ final class RegistryLockGetActionTest {
}
@Test
- void testSuccess_linkedToContactEmail() {
- // Even though the user is some.email@gmail.com the contact is still Marla Singer
- user = new User("some.email@gmail.com", "gmail.com", user.getUserId());
+ void testSuccess_linkedToLoginContactEmail() {
+ // Note that the email address is case-insensitive.
+ user = new User("marla.singer@crr.com", "crr.com", user.getUserId());
authResult = AuthResult.create(AuthLevel.USER, UserAuthInfo.create(user, false));
action =
new RegistryLockGetAction(
@@ -413,6 +413,6 @@ final class RegistryLockGetActionTest {
}
static User userFromRegistrarPoc(RegistrarPoc registrarPoc) {
- return new User(registrarPoc.getEmailAddress(), "gmail.com", registrarPoc.getGaeUserId());
+ return new User(registrarPoc.getLoginEmailAddress(), "gmail.com");
}
}
diff --git a/core/src/test/java/google/registry/ui/server/registrar/RegistryLockPostActionTest.java b/core/src/test/java/google/registry/ui/server/registrar/RegistryLockPostActionTest.java
index ba91f2dec..bac6ebe0e 100644
--- a/core/src/test/java/google/registry/ui/server/registrar/RegistryLockPostActionTest.java
+++ b/core/src/test/java/google/registry/ui/server/registrar/RegistryLockPostActionTest.java
@@ -159,10 +159,8 @@ final class RegistryLockPostActionTest {
}
@Test
- void testSuccess_linkedToContactEmail() throws Exception {
- // Even though the user is some.email@gmail.com the contact is still Marla Singer
- userWithLockPermission =
- new User("some.email@gmail.com", "gmail.com", userWithLockPermission.getUserId());
+ void testSuccess_linkedToLoginEmail() throws Exception {
+ userWithLockPermission = new User("Marla.Singer@crr.com", "crr.com");
action =
createAction(
AuthResult.create(AuthLevel.USER, UserAuthInfo.create(userWithLockPermission, false)));
diff --git a/core/src/test/java/google/registry/ui/server/registrar/RegistryLockVerifyActionTest.java b/core/src/test/java/google/registry/ui/server/registrar/RegistryLockVerifyActionTest.java
index cc42d5f0e..4ab5214ab 100644
--- a/core/src/test/java/google/registry/ui/server/registrar/RegistryLockVerifyActionTest.java
+++ b/core/src/test/java/google/registry/ui/server/registrar/RegistryLockVerifyActionTest.java
@@ -70,7 +70,7 @@ final class RegistryLockVerifyActionTest {
AppEngineExtension.builder()
.withCloudSql()
.withClock(fakeClock)
- .withUserService(UserInfo.create("marla.singer@example.com", "12345"))
+ .withUserService(UserInfo.create("marla.singer@example.com"))
.build();
private final HttpServletRequest request = mock(HttpServletRequest.class);
diff --git a/core/src/test/java/google/registry/webdriver/OteSetupConsoleScreenshotTest.java b/core/src/test/java/google/registry/webdriver/OteSetupConsoleScreenshotTest.java
index 6f03c0ac0..0414eef02 100644
--- a/core/src/test/java/google/registry/webdriver/OteSetupConsoleScreenshotTest.java
+++ b/core/src/test/java/google/registry/webdriver/OteSetupConsoleScreenshotTest.java
@@ -59,16 +59,4 @@ public class OteSetupConsoleScreenshotTest extends WebDriverTestCase {
driver.waitForDisplayedElement(By.tagName("h1"));
driver.diffPage("oteResult");
}
-
- @RetryingTest(3)
- void get_admin_fails_badEmail() throws Throwable {
- server.setIsAdmin(true);
- driver.get(server.getUrl("/registrar-ote-setup"));
- driver.waitForDisplayedElement(By.tagName("h1"));
- driver.findElement(By.id("clientId")).sendKeys("acmereg");
- driver.findElement(By.id("email")).sendKeys("bad email");
- driver.findElement(By.id("submit-button")).click();
- driver.waitForDisplayedElement(By.tagName("h1"));
- driver.diffPage("oteResultFailed");
- }
}
diff --git a/core/src/test/java/google/registry/webdriver/RegistrarConsoleScreenshotTest.java b/core/src/test/java/google/registry/webdriver/RegistrarConsoleScreenshotTest.java
index ea6e9de97..e72aa5e6d 100644
--- a/core/src/test/java/google/registry/webdriver/RegistrarConsoleScreenshotTest.java
+++ b/core/src/test/java/google/registry/webdriver/RegistrarConsoleScreenshotTest.java
@@ -62,7 +62,6 @@ class RegistrarConsoleScreenshotTest extends WebDriverTestCase {
.setFilters(ObjectifyFilter.class, OfyFilter.class)
.setFixtures(BASIC)
.setEmail("Marla.Singer@crr.com") // from AppEngineExtension.makeRegistrarContact3
- .setGaeUserId("12345") // from AppEngineExtension.makeRegistrarContact3
.build();
@RetryingTest(3)
diff --git a/core/src/test/java/google/registry/webdriver/RegistrarConsoleWebTest.java b/core/src/test/java/google/registry/webdriver/RegistrarConsoleWebTest.java
index 63de210c3..4a901bcb3 100644
--- a/core/src/test/java/google/registry/webdriver/RegistrarConsoleWebTest.java
+++ b/core/src/test/java/google/registry/webdriver/RegistrarConsoleWebTest.java
@@ -45,7 +45,7 @@ public class RegistrarConsoleWebTest extends WebDriverTestCase {
route("/registrar-settings", FrontendServlet.class))
.setFilters(ObjectifyFilter.class, OfyFilter.class)
.setFixtures(BASIC)
- .setEmail("Marla.Singer@google.com")
+ .setEmail("Marla.Singer@crr.com")
.build();
/** Checks the identified element has the given text content. */
diff --git a/core/src/test/java/google/registry/webdriver/RegistrarCreateConsoleScreenshotTest.java b/core/src/test/java/google/registry/webdriver/RegistrarCreateConsoleScreenshotTest.java
index 1c59cff01..1641ad0f1 100644
--- a/core/src/test/java/google/registry/webdriver/RegistrarCreateConsoleScreenshotTest.java
+++ b/core/src/test/java/google/registry/webdriver/RegistrarCreateConsoleScreenshotTest.java
@@ -72,28 +72,4 @@ class RegistrarCreateConsoleScreenshotTest extends WebDriverTestCase {
driver.waitForDisplayedElement(By.tagName("h1"));
driver.diffPage("createResult");
}
-
- @RetryingTest(3)
- void get_admin_fails_badEmail() throws Throwable {
- server.setIsAdmin(true);
- driver.get(server.getUrl("/registrar-create"));
- driver.waitForDisplayedElement(By.tagName("h1"));
- driver.findElement(By.id("clientId")).sendKeys("my-name");
- driver.findElement(By.id("name")).sendKeys("registrar name");
- driver
- .findElement(By.id("billingAccount"))
- .sendKeys(""
- + "USD=12345678-abcd-1234-5678-cba987654321\n"
- + "JPY=aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee");
- driver.findElement(By.id("driveId")).sendKeys("drive-id");
- driver.findElement(By.id("ianaId")).sendKeys("15263");
- driver.findElement(By.id("referralEmail")).sendKeys("email@icann.example");
- driver.findElement(By.id("consoleUserEmail")).sendKeys("bad email");
- driver.findElement(By.id("street1")).sendKeys("123 Street st.");
- driver.findElement(By.id("city")).sendKeys("Citysville");
- driver.findElement(By.id("countryCode")).sendKeys("fr");
- driver.findElement(By.id("submit-button")).click();
- driver.waitForDisplayedElement(By.tagName("h1"));
- driver.diffPage("createResultFailed");
- }
}
diff --git a/core/src/test/java/google/registry/webdriver/TestServerExtension.java b/core/src/test/java/google/registry/webdriver/TestServerExtension.java
index 12c97795b..8b8ecbb57 100644
--- a/core/src/test/java/google/registry/webdriver/TestServerExtension.java
+++ b/core/src/test/java/google/registry/webdriver/TestServerExtension.java
@@ -16,10 +16,8 @@ package google.registry.webdriver;
import static com.google.common.base.Preconditions.checkArgument;
import static com.google.common.base.Preconditions.checkNotNull;
-import static google.registry.testing.AppEngineExtension.THE_REGISTRAR_GAE_USER_ID;
import static google.registry.util.NetworkUtils.getExternalAddressOfLocalSystem;
import static google.registry.util.NetworkUtils.pickUnusedPort;
-import static google.registry.util.PreconditionsUtils.checkArgumentNotNull;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
@@ -35,7 +33,6 @@ import java.net.URL;
import java.net.UnknownHostException;
import java.nio.file.Path;
import java.time.Duration;
-import java.util.Optional;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.Callable;
import java.util.concurrent.FutureTask;
@@ -72,8 +69,7 @@ public final class TestServerExtension implements BeforeEachCallback, AfterEachC
ImmutableList routes,
ImmutableList> filters,
ImmutableList fixtures,
- String email,
- Optional gaeUserId) {
+ String email) {
this.runfiles = runfiles;
this.routes = routes;
this.filters = filters;
@@ -86,8 +82,7 @@ public final class TestServerExtension implements BeforeEachCallback, AfterEachC
.withLocalModules()
.withUrlFetch()
.withTaskQueue()
- .withUserService(
- UserInfo.createAdmin(email, gaeUserId.orElse(THE_REGISTRAR_GAE_USER_ID)))
+ .withUserService(UserInfo.createAdmin(email))
.build();
}
@@ -178,7 +173,7 @@ public final class TestServerExtension implements BeforeEachCallback, AfterEachC
private final class Server implements Runnable {
- private ExtensionContext context;
+ private final ExtensionContext context;
Server(ExtensionContext context) {
this.context = context;
@@ -254,7 +249,6 @@ public final class TestServerExtension implements BeforeEachCallback, AfterEachC
ImmutableList> filters;
private ImmutableList fixtures = ImmutableList.of();
private String email;
- private Optional gaeUserId = Optional.empty();
/** Sets the directories containing the static files for {@link TestServer}. */
Builder setRunfiles(ImmutableMap runfiles) {
@@ -292,13 +286,6 @@ public final class TestServerExtension implements BeforeEachCallback, AfterEachC
return this;
}
- /** Optionally, sets the GAE user ID for the logged in user. */
- public Builder setGaeUserId(String gaeUserId) {
- this.gaeUserId =
- Optional.of(checkArgumentNotNull(gaeUserId, "Must specify a non-null GAE user ID"));
- return this;
- }
-
/** Returns a new {@link TestServerExtension} instance. */
public TestServerExtension build() {
return new TestServerExtension(
@@ -306,8 +293,7 @@ public final class TestServerExtension implements BeforeEachCallback, AfterEachC
checkNotNull(this.routes),
checkNotNull(this.filters),
checkNotNull(this.fixtures),
- checkNotNull(this.email),
- this.gaeUserId);
+ checkNotNull(this.email));
}
}
}
diff --git a/core/src/test/resources/google/registry/ui/server/registrar/update_registrar.json b/core/src/test/resources/google/registry/ui/server/registrar/update_registrar.json
index 9ed6abed1..9dabdd213 100644
--- a/core/src/test/resources/google/registry/ui/server/registrar/update_registrar.json
+++ b/core/src/test/resources/google/registry/ui/server/registrar/update_registrar.json
@@ -16,7 +16,7 @@
"name": "Extra Terrestrial",
"visibleInWhoisAsTech": false,
"emailAddress": "etphonehome@example.com",
- "gaeUserId": null,
+ "loginEmailAddress": null,
"types": "ADMIN,BILLING,TECH,WHOIS"
},
{
@@ -27,7 +27,7 @@
"visibleInWhoisAsTech": false,
"emailAddress": "Marla.Singer@crr.com",
"registryLockEmailAddress": "Marla.Singer.RegistryLock@crr.com",
- "gaeUserId": "12345",
+ "loginEmailAddress": "Marla.Singer@crr.com",
"types": "TECH"
}
],
diff --git a/core/src/test/resources/google/registry/ui/server/registrar/update_registrar_duplicate_contacts.json b/core/src/test/resources/google/registry/ui/server/registrar/update_registrar_duplicate_contacts.json
index f245cfa46..79b403e49 100644
--- a/core/src/test/resources/google/registry/ui/server/registrar/update_registrar_duplicate_contacts.json
+++ b/core/src/test/resources/google/registry/ui/server/registrar/update_registrar_duplicate_contacts.json
@@ -16,7 +16,7 @@
"name": "Extra Terrestrial",
"visibleInWhoisAsTech": false,
"emailAddress": "etphonehome@example.com",
- "gaeUserId": null,
+ "loginEmailAddress": null,
"types": "ADMIN,BILLING,TECH,WHOIS"
},
{
@@ -26,7 +26,7 @@
"name": "E.T.",
"visibleInWhoisAsTech": false,
"emailAddress": "etphonehome@example.com",
- "gaeUserId": null,
+ "loginEmailAddress": null,
"types": "MARKETING"
}
],
diff --git a/core/src/test/resources/google/registry/ui/server/registrar/update_registrar_email.txt b/core/src/test/resources/google/registry/ui/server/registrar/update_registrar_email.txt
index 06786d295..f8d4e6468 100644
--- a/core/src/test/resources/google/registry/ui/server/registrar/update_registrar_email.txt
+++ b/core/src/test/resources/google/registry/ui/server/registrar/update_registrar_email.txt
@@ -11,9 +11,9 @@ emailAddress: the.registrar@example.com -> thase@the.registrar
url: http://my.fake.url -> http://my.new.url
contacts:
ADDED:
- {name=Extra Terrestrial, emailAddress=etphonehome@example.com, registrarId=TheRegistrar, registryLockEmailAddress=null, phoneNumber=+1.2345678901, faxNumber=null, types=[ADMIN, BILLING, TECH, WHOIS], gaeUserId=null, visibleInWhoisAsAdmin=true, visibleInWhoisAsTech=false, visibleInDomainWhoisAsAbuse=false, allowedToSetRegistryLockPassword=false}
+ {name=Extra Terrestrial, emailAddress=etphonehome@example.com, registrarId=TheRegistrar, registryLockEmailAddress=null, phoneNumber=+1.2345678901, faxNumber=null, types=[ADMIN, BILLING, TECH, WHOIS], loginEmailAddress=null, visibleInWhoisAsAdmin=true, visibleInWhoisAsTech=false, visibleInDomainWhoisAsAbuse=false, allowedToSetRegistryLockPassword=false}
REMOVED:
- {name=John Doe, emailAddress=johndoe@theregistrar.com, registrarId=TheRegistrar, registryLockEmailAddress=null, phoneNumber=+1.1234567890, faxNumber=null, types=[ADMIN], gaeUserId=31337, visibleInWhoisAsAdmin=false, visibleInWhoisAsTech=false, visibleInDomainWhoisAsAbuse=false, allowedToSetRegistryLockPassword=false}
+ {name=John Doe, emailAddress=johndoe@theregistrar.com, registrarId=TheRegistrar, registryLockEmailAddress=null, phoneNumber=+1.1234567890, faxNumber=null, types=[ADMIN], loginEmailAddress=johndoe@theregistrar.com, visibleInWhoisAsAdmin=false, visibleInWhoisAsTech=false, visibleInDomainWhoisAsAbuse=false, allowedToSetRegistryLockPassword=false}
FINAL CONTENTS:
- {name=Extra Terrestrial, emailAddress=etphonehome@example.com, registrarId=TheRegistrar, registryLockEmailAddress=null, phoneNumber=+1.2345678901, faxNumber=null, types=[ADMIN, BILLING, TECH, WHOIS], gaeUserId=null, visibleInWhoisAsAdmin=true, visibleInWhoisAsTech=false, visibleInDomainWhoisAsAbuse=false, allowedToSetRegistryLockPassword=false},
- {name=Marla Singer, emailAddress=Marla.Singer@crr.com, registrarId=TheRegistrar, registryLockEmailAddress=Marla.Singer.RegistryLock@crr.com, phoneNumber=+1.2128675309, faxNumber=null, types=[TECH], gaeUserId=12345, visibleInWhoisAsAdmin=false, visibleInWhoisAsTech=false, visibleInDomainWhoisAsAbuse=false, allowedToSetRegistryLockPassword=false}
+ {name=Extra Terrestrial, emailAddress=etphonehome@example.com, registrarId=TheRegistrar, registryLockEmailAddress=null, phoneNumber=+1.2345678901, faxNumber=null, types=[ADMIN, BILLING, TECH, WHOIS], loginEmailAddress=null, visibleInWhoisAsAdmin=true, visibleInWhoisAsTech=false, visibleInDomainWhoisAsAbuse=false, allowedToSetRegistryLockPassword=false},
+ {name=Marla Singer, emailAddress=Marla.Singer@crr.com, registrarId=TheRegistrar, registryLockEmailAddress=Marla.Singer.RegistryLock@crr.com, phoneNumber=+1.2128675309, faxNumber=null, types=[TECH], loginEmailAddress=Marla.Singer@crr.com, visibleInWhoisAsAdmin=false, visibleInWhoisAsTech=false, visibleInDomainWhoisAsAbuse=false, allowedToSetRegistryLockPassword=false}
diff --git a/db/src/main/resources/sql/schema/db-schema.sql.generated b/db/src/main/resources/sql/schema/db-schema.sql.generated
index c71557244..6240063f0 100644
--- a/db/src/main/resources/sql/schema/db-schema.sql.generated
+++ b/db/src/main/resources/sql/schema/db-schema.sql.generated
@@ -614,7 +614,7 @@
registrar_id text not null,
allowed_to_set_registry_lock_password boolean not null,
fax_number text,
- gae_user_id text,
+ login_email_address text,
name text,
phone_number text,
registry_lock_email_address text,
@@ -828,7 +828,7 @@ create index IDXaydgox62uno9qx8cjlj5lauye on "PollMessage" (event_time);
create index premiumlist_name_idx on "PremiumList" (name);
create index registrar_name_idx on "Registrar" (registrar_name);
create index registrar_iana_identifier_idx on "Registrar" (iana_identifier);
-create index registrarpoc_gae_user_id_idx on "RegistrarPoc" (gae_user_id);
+create index registrarpoc_login_email_idx on "RegistrarPoc" (login_email_address);
create index idx_registry_lock_verification_code on "RegistryLock" (verification_code);
create index idx_registry_lock_registrar_id on "RegistryLock" (registrar_id);