diff --git a/core/src/main/java/google/registry/model/registrar/Registrar.java b/core/src/main/java/google/registry/model/registrar/Registrar.java index a53ee2e8d..16e450050 100644 --- a/core/src/main/java/google/registry/model/registrar/Registrar.java +++ b/core/src/main/java/google/registry/model/registrar/Registrar.java @@ -868,7 +868,9 @@ public class Registrar extends ImmutableObject implements Buildable, Jsonifiable return this; } - public Builder setDriveFolderId(String driveFolderId) { + public Builder setDriveFolderId(@Nullable String driveFolderId) { + checkArgument(driveFolderId == null || !driveFolderId.contains("/"), + "Drive folder ID must not be a full URL"); getInstance().driveFolderId = driveFolderId; return this; } diff --git a/core/src/main/java/google/registry/tools/CreateOrUpdateRegistrarCommand.java b/core/src/main/java/google/registry/tools/CreateOrUpdateRegistrarCommand.java index 0d3534137..44052667e 100644 --- a/core/src/main/java/google/registry/tools/CreateOrUpdateRegistrarCommand.java +++ b/core/src/main/java/google/registry/tools/CreateOrUpdateRegistrarCommand.java @@ -237,7 +237,7 @@ abstract class CreateOrUpdateRegistrarCommand extends MutatingCommand { @Nullable @Parameter( names = "--drive_folder_id", - description = "Id of this registrar's folder in Drive", + description = "Id (not full URL) of this registrar's folder in Drive", converter = OptionalStringParameter.class, validateWith = OptionalStringParameter.class) Optional driveFolderId; diff --git a/core/src/main/resources/google/registry/ui/soy/registrar/RegistrarCreateConsole.soy b/core/src/main/resources/google/registry/ui/soy/registrar/RegistrarCreateConsole.soy index de9de89fc..b86428d14 100644 --- a/core/src/main/resources/google/registry/ui/soy/registrar/RegistrarCreateConsole.soy +++ b/core/src/main/resources/google/registry/ui/soy/registrar/RegistrarCreateConsole.soy @@ -240,12 +240,12 @@ {param required: true /} {/call} {call registry.soy.forms.inputFieldRowWithValue} - {param label: 'DRIVE ID' /} + {param label: 'Drive ID' /} {param name: 'driveId' /} {param value: $driveId /} {param placeholder: 'required' /} {param description kind="text"} - Id of this registrar's folder in Drive. + ID (not full URL) of this registrar's folder in Google Drive. {/param} {param required: true /} {/call} diff --git a/core/src/test/java/google/registry/model/registrar/RegistrarTest.java b/core/src/test/java/google/registry/model/registrar/RegistrarTest.java index 4c617279d..b44a1285c 100644 --- a/core/src/test/java/google/registry/model/registrar/RegistrarTest.java +++ b/core/src/test/java/google/registry/model/registrar/RegistrarTest.java @@ -452,6 +452,14 @@ public class RegistrarTest extends EntityTestCase { () -> registrar.asBuilder().setAllowedTldsUncached(ImmutableSet.of("bad"))); } + @Test + public void testFailure_driveFolderId_asFullUrl() { + IllegalArgumentException thrown = + assertThrows(IllegalArgumentException.class, () -> registrar.asBuilder().setDriveFolderId( + "https://drive.google.com/drive/folders/1j3v7RZkU25DjbTx2-Q93H04zKOBau89M")); + assertThat(thrown).hasMessageThat().isEqualTo("Drive folder ID must not be a full URL"); + } + @Test public void testFailure_nullEmail() { NullPointerException thrown = diff --git a/core/src/test/resources/google/registry/webdriver/goldens/chrome-linux/RegistrarCreateConsoleScreenshotTest_get_admin_fails_badEmail_createResultFailed.png b/core/src/test/resources/google/registry/webdriver/goldens/chrome-linux/RegistrarCreateConsoleScreenshotTest_get_admin_fails_badEmail_createResultFailed.png index b5f0908df..9eedd384b 100644 Binary files a/core/src/test/resources/google/registry/webdriver/goldens/chrome-linux/RegistrarCreateConsoleScreenshotTest_get_admin_fails_badEmail_createResultFailed.png and b/core/src/test/resources/google/registry/webdriver/goldens/chrome-linux/RegistrarCreateConsoleScreenshotTest_get_admin_fails_badEmail_createResultFailed.png differ diff --git a/core/src/test/resources/google/registry/webdriver/goldens/chrome-linux/RegistrarCreateConsoleScreenshotTest_get_admin_succeeds_formEmpty.png b/core/src/test/resources/google/registry/webdriver/goldens/chrome-linux/RegistrarCreateConsoleScreenshotTest_get_admin_succeeds_formEmpty.png index cc41b8701..5d25cde36 100644 Binary files a/core/src/test/resources/google/registry/webdriver/goldens/chrome-linux/RegistrarCreateConsoleScreenshotTest_get_admin_succeeds_formEmpty.png and b/core/src/test/resources/google/registry/webdriver/goldens/chrome-linux/RegistrarCreateConsoleScreenshotTest_get_admin_succeeds_formEmpty.png differ diff --git a/core/src/test/resources/google/registry/webdriver/goldens/chrome-linux/RegistrarCreateConsoleScreenshotTest_get_admin_succeeds_formFilled.png b/core/src/test/resources/google/registry/webdriver/goldens/chrome-linux/RegistrarCreateConsoleScreenshotTest_get_admin_succeeds_formFilled.png index dd0a27c3a..63c94d607 100644 Binary files a/core/src/test/resources/google/registry/webdriver/goldens/chrome-linux/RegistrarCreateConsoleScreenshotTest_get_admin_succeeds_formFilled.png and b/core/src/test/resources/google/registry/webdriver/goldens/chrome-linux/RegistrarCreateConsoleScreenshotTest_get_admin_succeeds_formFilled.png differ