diff --git a/java/google/registry/tools/LockOrUnlockDomainCommand.java b/java/google/registry/tools/LockOrUnlockDomainCommand.java index a5a2e3f65..ae03e7360 100644 --- a/java/google/registry/tools/LockOrUnlockDomainCommand.java +++ b/java/google/registry/tools/LockOrUnlockDomainCommand.java @@ -23,8 +23,10 @@ import static google.registry.util.CollectionUtils.findDuplicates; import com.beust.jcommander.Parameter; import com.google.common.base.Joiner; import com.google.common.collect.ImmutableSet; +import google.registry.config.RegistryConfig.Config; import google.registry.model.eppcommon.StatusValue; import java.util.List; +import javax.inject.Inject; /** Shared base class for commands to registry lock or unlock a domain via EPP. */ public abstract class LockOrUnlockDomainCommand extends MutatingEppToolCommand { @@ -35,14 +37,17 @@ public abstract class LockOrUnlockDomainCommand extends MutatingEppToolCommand { @Parameter( names = {"-c", "--client"}, - description = "Client identifier of the registrar to execute the command as", - required = true - ) + description = + "Client ID of the requesting registrar if applicable, otherwise the registry registrar") String clientId; @Parameter(description = "Names of the domains", required = true) private List mainParameters; + @Inject + @Config("registryAdminClientId") + String registryAdminClientId; + protected ImmutableSet getDomains() { return ImmutableSet.copyOf(mainParameters); } @@ -51,6 +56,11 @@ public abstract class LockOrUnlockDomainCommand extends MutatingEppToolCommand { protected void initEppToolCommand() throws Exception { // Superuser status is required to update registry lock statuses. superuser = true; + + // Default clientId to the registry registrar account if otherwise unspecified. + if (clientId == null) { + clientId = registryAdminClientId; + } String duplicates = Joiner.on(", ").join(findDuplicates(mainParameters)); checkArgument(duplicates.isEmpty(), "Duplicate domain arguments found: '%s'", duplicates); initMutatingEppToolCommand(); diff --git a/java/google/registry/tools/RegistryToolComponent.java b/java/google/registry/tools/RegistryToolComponent.java index fd688c6c6..290e1af79 100644 --- a/java/google/registry/tools/RegistryToolComponent.java +++ b/java/google/registry/tools/RegistryToolComponent.java @@ -91,12 +91,14 @@ interface RegistryToolComponent { void inject(GetKeyringSecretCommand command); void inject(GhostrydeCommand command); void inject(ListCursorsCommand command); + void inject(LockDomainCommand command); void inject(LoginCommand command); void inject(LogoutCommand command); void inject(PendingEscrowCommand command); void inject(RenewDomainCommand command); void inject(SendEscrowReportToIcannCommand command); void inject(SetupOteCommand command); + void inject(UnlockDomainCommand command); void inject(UpdateCursorsCommand command); void inject(UpdateDomainCommand command); void inject(UpdateKmsKeyringCommand command); diff --git a/javatests/google/registry/tools/LockDomainCommandTest.java b/javatests/google/registry/tools/LockDomainCommandTest.java index 53c614939..39eeffc37 100644 --- a/javatests/google/registry/tools/LockDomainCommandTest.java +++ b/javatests/google/registry/tools/LockDomainCommandTest.java @@ -18,12 +18,14 @@ import static com.google.common.truth.Truth.assertThat; import static google.registry.model.eppcommon.StatusValue.SERVER_TRANSFER_PROHIBITED; import static google.registry.testing.DatastoreHelper.newDomainResource; import static google.registry.testing.DatastoreHelper.persistActiveDomain; +import static google.registry.testing.DatastoreHelper.persistNewRegistrar; import static google.registry.testing.DatastoreHelper.persistResource; import static google.registry.testing.JUnitBackports.assertThrows; import static google.registry.tools.LockOrUnlockDomainCommand.REGISTRY_LOCK_STATUSES; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; +import google.registry.model.registrar.Registrar.Type; import java.util.ArrayList; import java.util.List; import org.junit.Before; @@ -35,6 +37,8 @@ public class LockDomainCommandTest extends EppToolCommandTestCase