diff --git a/docs/flows.md b/docs/flows.md index 1b6e1d6a3..d69a5caa1 100644 --- a/docs/flows.md +++ b/docs/flows.md @@ -225,227 +225,6 @@ An EPP flow that updates a contact. * Cannot add and remove the same value. * Declining contact disclosure is disallowed by server policy. -## DomainAllocateFlow - -### Description - -An EPP flow that allocates a new domain resource from a domain application. - -Note that this flow is only run by superusers. - - -### Errors - -* 2004 - * New registration period exceeds maximum number of years. -* 2201 - * Only a superuser can allocate domains. -* 2302 - * Resource with this id already exists. -* 2303 - * Domain application with specific ROID does not exist. -* 2304 - * Domain application already has a final status. - * Registrant is not whitelisted for this TLD. - * Nameservers are not whitelisted for this domain. - * Nameservers are not whitelisted for this TLD. - * Nameservers not specified for domain with nameserver-restricted - reservation. - * Nameservers not specified for domain on TLD with nameserver whitelist. - -## DomainApplicationCreateFlow - -### Description - -An EPP flow that creates a new application for a domain resource. - - -### Errors - -* 2002 - * A notice cannot be specified when using a signed mark. - * Sunrise applications are disallowed during landrush. - * Command is not allowed in the current registry phase. -* 2003 - * Landrush applications are disallowed during sunrise. - * Fees must be explicitly acknowledged when performing any operations on a - premium name. - * The provided mark does not match the desired domain label. -* 2004 - * The acceptance time specified in the claim notice is more than 48 hours - in the past. - * New registration period exceeds maximum number of years. - * The expiration time specified in the claim notice has elapsed. - * The fees passed in the transform command do not match the fees that will - be charged. - * Domain label is not allowed by IDN table. - * The checksum in the specified TCNID does not validate. - * Domain name is under tld which doesn't exist. -* 2005 - * Domain name must have exactly one part above the TLD. - * Domain name must not equal an existing multi-part TLD. - * The requested fee is expressed in a scale that is invalid for the given - currency. - * The specified TCNID is invalid. - * Signed mark data is improperly encoded. - * Error while parsing encoded signed mark data. -* 2102 - * The 'maxSigLife' setting is not supported. - * The 'grace-period', 'applied' and 'refundable' fields are disallowed by - server policy. -* 2103 - * Specified extension is not implemented. -* 2201 - * Registrar is not authorized to access this TLD. - * Registrar must be active in order to perform this operation. -* 2302 - * Resource with this id already exists. - * This name has already been claimed by a sunrise applicant. -* 2303 - * Resource linked to this domain does not exist. -* 2304 - * The claims period for this TLD has ended. - * Requested domain is reserved. - * Requested domain requires a claims notice. - * Nameservers are not whitelisted for this domain. - * Nameservers are not whitelisted for this TLD. - * Nameservers not specified for domain with nameserver-restricted - reservation. - * Nameservers not specified for domain on TLD with nameserver whitelist. - * The requested domain name is on the premium price list, and this - registrar has blocked premium registrations. - * Registrant is not whitelisted for this TLD. - * Requested domain does not require a claims notice. -* 2306 - * Domain names can only contain a-z, 0-9, '.' and '-'. - * Periods for domain registrations must be specified in years. - * Encoded signed marks must use base64 encoding. - * The requested fees cannot be provided in the requested currency. - * Non-IDN domain names cannot contain hyphens in the third or fourth - position. - * Domain labels cannot be longer than 63 characters. - * More than one contact for a given role is not allowed. - * No part of a domain name can be empty. - * Domain name starts with xn-- but is not a valid IDN. - * The specified trademark validator is not supported. - * Declared launch extension phase does not match the current registry - phase. - * Domain labels cannot begin with a dash. - * Missing type attribute for contact. - * The provided mark is not yet valid. - * The provided mark has expired. - * Signed marks must be encoded. - * Certificate used in signed mark signature has expired. - * Certificate parsing error, or possibly a bad provider or algorithm. - * Certificate used in signed mark signature has expired. - * Certificate used in signed mark signature was revoked by ICANN. - * Invalid signature on a signed mark. - * Signed mark data is revoked. - * Invalid signature on a signed mark. - * Too many DS records set on a domain. - * Too many nameservers set on this domain. - * Only one signed mark is allowed per application. - * Domain labels cannot end with a dash. - * Only encoded signed marks are supported. - -## DomainApplicationDeleteFlow - -### Description - -An EPP flow that deletes a domain application. - - -### Errors - -* 2002 - * Command is not allowed in the current registry phase. -* 2103 - * Specified extension is not implemented. -* 2201 - * The specified resource belongs to another client. - * Registrar is not authorized to access this TLD. -* 2303 - * Resource with this id does not exist. -* 2304 - * A sunrise application cannot be deleted during landrush. -* 2306 - * Application referenced does not match specified domain name. - * Declared launch extension phase does not match the current registry - phase. - -## DomainApplicationInfoFlow - -### Description - -An EPP flow that returns information about a domain application. - -Only the registrar that owns the application can see its info. The flow can -optionally include delegated hosts in its response. - - -### Errors - -* 2003 - * Application id is required. -* 2201 - * The specified resource belongs to another client. -* 2303 - * Resource with this id does not exist. -* 2306 - * Application referenced does not match specified domain name. - * Declared launch extension phase does not match phase of the application. - -## DomainApplicationUpdateFlow - -### Description - -An EPP flow that updates a domain application. - -Updates can change contacts, nameservers and delegation signer data of an -application. Updates cannot change the domain name that is being applied for. - - -### Errors - -* 2003 - * At least one of 'add' or 'rem' is required on a secDNS update. - * Admin contact is required. - * Technical contact is required. -* 2004 - * The specified status value cannot be set by clients. - * The fees passed in the transform command do not match the fees that will - be charged. -* 2102 - * Changing 'maxSigLife' is not supported. - * The 'urgent' attribute is not supported. -* 2103 - * Specified extension is not implemented. -* 2201 - * The specified resource belongs to another client. - * Registrar is not authorized to access this TLD. -* 2303 - * Resource with this id does not exist. - * Resource linked to this domain does not exist. -* 2304 - * This resource has clientUpdateProhibited on it, and the update does not - clear that status. - * Resource status prohibits this operation. - * Nameservers are not whitelisted for this TLD. - * Nameservers not specified for domain on TLD with nameserver whitelist. - * Nameservers are not whitelisted for this domain. - * Nameservers not specified for domain with nameserver-restricted - reservation. - * Registrant is not whitelisted for this TLD. - * Application status prohibits this domain update. -* 2306 - * Cannot add and remove the same value. - * Application referenced does not match specified domain name. - * More than one contact for a given role is not allowed. - * Missing type attribute for contact. - * The secDNS:all element must have value 'true' if present. - * Too many DS records set on a domain. - * Too many nameservers set on this domain. - ## DomainCheckFlow ### Description @@ -498,7 +277,6 @@ An EPP flow that checks whether domain labels are trademarked. * 2002 * Command is not allowed in the current registry phase. - * Claims checks are not allowed during sunrise. * Claims checks are not allowed with allocation tokens. * 2004 * Domain name is under tld which doesn't exist. @@ -564,7 +342,6 @@ An EPP flow that creates a new domain resource. * 2303 * Resource linked to this domain does not exist. * 2304 - * There is an open application for this domain. * The claims period for this TLD has ended. * Requested domain does not have nameserver-restricted reservation for a TLD that requires such a reservation to create domains. @@ -945,12 +722,6 @@ applied by the superuser. As such, adding or removing these statuses incurs a billing event. There will be only one charge per update, even if several such statuses are updated at once. -If a domain was created during the sunrise or landrush phases of a TLD, is still -within the sunrushAddGracePeriod and has not yet been delegated in DNS, then it -will not yet have been billed for. Any update that causes the name to be -delegated (such * as adding nameservers or removing a hold status) will cause -the domain to convert to a normal create and be billed for accordingly. - ### Errors diff --git a/gradle/core/build.gradle b/gradle/core/build.gradle index 61a13daff..70472fd70 100644 --- a/gradle/core/build.gradle +++ b/gradle/core/build.gradle @@ -15,9 +15,6 @@ def outcastTestPatterns = [ "google/registry/batch/RefreshDnsOnHostRenameActionTest.*", "google/registry/flows/CheckApiActionTest.*", "google/registry/flows/EppLifecycleHostTest.*", - "google/registry/flows/domain/DomainAllocateFlowTest.*", - "google/registry/flows/domain/DomainApplicationCreateFlowTest.*", - "google/registry/flows/domain/DomainApplicationUpdateFlowTest.*", "google/registry/flows/domain/DomainCreateFlowTest.*", "google/registry/flows/domain/DomainUpdateFlowTest.*", "google/registry/tools/CreateDomainCommandTest.*", diff --git a/java/google/registry/batch/DeleteContactsAndHostsAction.java b/java/google/registry/batch/DeleteContactsAndHostsAction.java index c19455cb7..e62245f9d 100644 --- a/java/google/registry/batch/DeleteContactsAndHostsAction.java +++ b/java/google/registry/batch/DeleteContactsAndHostsAction.java @@ -106,13 +106,9 @@ import org.joda.time.Duration; /** * A mapreduce that processes batch asynchronous deletions of contact and host resources by mapping - * over all domains and domain applications and checking for any references to the contacts/hosts in - * pending deletion. + * over all domains and checking for any references to the contacts/hosts in pending deletion. */ -@Action( - path = "/_dr/task/deleteContactsAndHosts", - auth = Auth.AUTH_INTERNAL_ONLY -) +@Action(path = "/_dr/task/deleteContactsAndHosts", auth = Auth.AUTH_INTERNAL_ONLY) public class DeleteContactsAndHostsAction implements Runnable { static final String KIND_CONTACT = getKind(ContactResource.class); diff --git a/java/google/registry/batch/DeleteProberDataAction.java b/java/google/registry/batch/DeleteProberDataAction.java index 7d537a919..5bfcbf38c 100644 --- a/java/google/registry/batch/DeleteProberDataAction.java +++ b/java/google/registry/batch/DeleteProberDataAction.java @@ -41,7 +41,6 @@ import google.registry.dns.DnsQueue; import google.registry.mapreduce.MapreduceRunner; import google.registry.mapreduce.inputs.EppResourceInputs; import google.registry.model.EppResourceUtils; -import google.registry.model.domain.DomainApplication; import google.registry.model.domain.DomainBase; import google.registry.model.domain.DomainResource; import google.registry.model.index.EppResourceIndex; @@ -167,23 +166,17 @@ public class DeleteProberDataAction implements Runnable { } private void deleteDomain(final Key domainKey) { - final DomainBase domainBase = ofy().load().key(domainKey).now(); + final DomainResource domain = (DomainResource) ofy().load().key(domainKey).now(); DateTime now = DateTime.now(UTC); - if (domainBase == null) { + if (domain == null) { // Depending on how stale Datastore indexes are, we can get keys to resources that are // already deleted (e.g. by a recent previous invocation of this mapreduce). So ignore them. getContext().incrementCounter("already deleted"); return; } - if (domainBase instanceof DomainApplication) { - // Cover the case where we somehow have a domain application with a prober ROID suffix. - getContext().incrementCounter("skipped, domain application"); - return; - } - DomainResource domain = (DomainResource) domainBase; String domainName = domain.getFullyQualifiedDomainName(); if (domainName.equals("nic." + domain.getTld())) { getContext().incrementCounter("skipped, NIC domain"); diff --git a/java/google/registry/env/common/tools/WEB-INF/web.xml b/java/google/registry/env/common/tools/WEB-INF/web.xml index 0bd9341d1..eb7dde515 100644 --- a/java/google/registry/env/common/tools/WEB-INF/web.xml +++ b/java/google/registry/env/common/tools/WEB-INF/web.xml @@ -72,12 +72,6 @@ /_dr/task/resaveAllHistoryEntries - - - tools-servlet - /_dr/task/killAllDomainApplications - - tools-servlet diff --git a/java/google/registry/flows/EppException.java b/java/google/registry/flows/EppException.java index f00403819..76c9aea2b 100644 --- a/java/google/registry/flows/EppException.java +++ b/java/google/registry/flows/EppException.java @@ -250,12 +250,4 @@ public abstract class EppException extends Exception { super("Specified protocol version is not implemented"); } } - - /** Command failed. */ - @EppResultCode(Code.COMMAND_FAILED) - public static class CommandFailedException extends EppException { - public CommandFailedException() { - super("Command failed"); - } - } } diff --git a/java/google/registry/flows/FlowComponent.java b/java/google/registry/flows/FlowComponent.java index 70fd902cc..5b3428116 100644 --- a/java/google/registry/flows/FlowComponent.java +++ b/java/google/registry/flows/FlowComponent.java @@ -30,11 +30,6 @@ import google.registry.flows.contact.ContactTransferRejectFlow; import google.registry.flows.contact.ContactTransferRequestFlow; import google.registry.flows.contact.ContactUpdateFlow; import google.registry.flows.custom.CustomLogicModule; -import google.registry.flows.domain.DomainAllocateFlow; -import google.registry.flows.domain.DomainApplicationCreateFlow; -import google.registry.flows.domain.DomainApplicationDeleteFlow; -import google.registry.flows.domain.DomainApplicationInfoFlow; -import google.registry.flows.domain.DomainApplicationUpdateFlow; import google.registry.flows.domain.DomainCheckFlow; import google.registry.flows.domain.DomainClaimsCheckFlow; import google.registry.flows.domain.DomainCreateFlow; @@ -86,11 +81,6 @@ public interface FlowComponent { ContactTransferRejectFlow contactTransferRejectFlow(); ContactTransferRequestFlow contactTransferRequestFlow(); ContactUpdateFlow contactUpdateFlow(); - DomainAllocateFlow domainAllocateFlow(); - DomainApplicationCreateFlow domainApplicationCreateFlow(); - DomainApplicationDeleteFlow domainApplicationDeleteFlow(); - DomainApplicationInfoFlow domainApplicationInfoFlow(); - DomainApplicationUpdateFlow domainApplicationUpdateFlow(); DomainCheckFlow domainCheckFlow(); DomainClaimsCheckFlow domainClaimsCheckFlow(); DomainCreateFlow domainCreateFlow(); @@ -140,11 +130,6 @@ public interface FlowComponent { : clazz.equals(ContactTransferRejectFlow.class) ? flows.contactTransferRejectFlow() : clazz.equals(ContactTransferRequestFlow.class) ? flows.contactTransferRequestFlow() : clazz.equals(ContactUpdateFlow.class) ? flows.contactUpdateFlow() - : clazz.equals(DomainAllocateFlow.class) ? flows.domainAllocateFlow() - : clazz.equals(DomainApplicationCreateFlow.class) ? flows.domainApplicationCreateFlow() - : clazz.equals(DomainApplicationDeleteFlow.class) ? flows.domainApplicationDeleteFlow() - : clazz.equals(DomainApplicationInfoFlow.class) ? flows.domainApplicationInfoFlow() - : clazz.equals(DomainApplicationUpdateFlow.class) ? flows.domainApplicationUpdateFlow() : clazz.equals(DomainCheckFlow.class) ? flows.domainCheckFlow() : clazz.equals(DomainClaimsCheckFlow.class) ? flows.domainClaimsCheckFlow() : clazz.equals(DomainCreateFlow.class) ? flows.domainCreateFlow() diff --git a/java/google/registry/flows/FlowModule.java b/java/google/registry/flows/FlowModule.java index 057524e85..0659a756f 100644 --- a/java/google/registry/flows/FlowModule.java +++ b/java/google/registry/flows/FlowModule.java @@ -15,13 +15,11 @@ package google.registry.flows; import static com.google.common.base.Preconditions.checkState; -import static com.google.common.base.Strings.nullToEmpty; import com.google.common.base.Strings; import dagger.Module; import dagger.Provides; import google.registry.flows.picker.FlowPicker; -import google.registry.model.domain.launch.ApplicationIdTargetExtension; import google.registry.model.domain.metadata.MetadataExtension; import google.registry.model.eppcommon.AuthInfo; import google.registry.model.eppcommon.Trid; @@ -205,19 +203,6 @@ public class FlowModule { return ((SingleResourceCommand) resourceCommand).getTargetId(); } - @Provides - @FlowScope - @ApplicationId - static String provideApplicationId(EppInput eppInput) { - // Treat a missing application id as empty so we can always inject a non-null value. - Optional extension = - eppInput.getSingleExtension(ApplicationIdTargetExtension.class); - checkState( - extension.isPresent(), - "ApplicationIdTargetExtension must be used to provide the application ID"); - return nullToEmpty(extension.get().getApplicationId()); - } - @Provides @FlowScope @PollMessageId @@ -294,11 +279,6 @@ public class FlowModule { @Documented public @interface TargetId {} - /** Dagger qualifier for the application id for domain application flows. */ - @Qualifier - @Documented - public @interface ApplicationId {} - /** Dagger qualifier for the message id for poll flows. */ @Qualifier @Documented diff --git a/java/google/registry/flows/custom/CustomLogicFactory.java b/java/google/registry/flows/custom/CustomLogicFactory.java index f234ddceb..8bae8b0d1 100644 --- a/java/google/registry/flows/custom/CustomLogicFactory.java +++ b/java/google/registry/flows/custom/CustomLogicFactory.java @@ -32,11 +32,6 @@ import google.registry.model.eppinput.EppInput; */ public class CustomLogicFactory { - public DomainApplicationCreateFlowCustomLogic forDomainApplicationCreateFlow( - EppInput eppInput, SessionMetadata sessionMetadata, FlowMetadata flowMetadata) { - return new DomainApplicationCreateFlowCustomLogic(eppInput, sessionMetadata, flowMetadata); - } - public DomainCreateFlowCustomLogic forDomainCreateFlow( EppInput eppInput, SessionMetadata sessionMetadata, FlowMetadata flowMetadata) { return new DomainCreateFlowCustomLogic(eppInput, sessionMetadata, flowMetadata); diff --git a/java/google/registry/flows/custom/CustomLogicModule.java b/java/google/registry/flows/custom/CustomLogicModule.java index 00335fd8c..001ab8c8e 100644 --- a/java/google/registry/flows/custom/CustomLogicModule.java +++ b/java/google/registry/flows/custom/CustomLogicModule.java @@ -24,15 +24,6 @@ import google.registry.model.eppinput.EppInput; @Module public class CustomLogicModule { - @Provides - static DomainApplicationCreateFlowCustomLogic provideDomainApplicationCreateFlowCustomLogic( - CustomLogicFactory factory, - EppInput eppInput, - SessionMetadata sessionMetadata, - FlowMetadata flowMetadata) { - return factory.forDomainApplicationCreateFlow(eppInput, sessionMetadata, flowMetadata); - } - @Provides static DomainCreateFlowCustomLogic provideDomainCreateFlowCustomLogic( CustomLogicFactory factory, diff --git a/java/google/registry/flows/custom/DomainApplicationCreateFlowCustomLogic.java b/java/google/registry/flows/custom/DomainApplicationCreateFlowCustomLogic.java deleted file mode 100644 index 96c33154f..000000000 --- a/java/google/registry/flows/custom/DomainApplicationCreateFlowCustomLogic.java +++ /dev/null @@ -1,221 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.flows.custom; - -import com.google.auto.value.AutoValue; -import com.google.common.collect.ImmutableList; -import com.google.common.net.InternetDomainName; -import google.registry.flows.EppException; -import google.registry.flows.FlowMetadata; -import google.registry.flows.SessionMetadata; -import google.registry.flows.domain.DomainApplicationCreateFlow; -import google.registry.model.ImmutableObject; -import google.registry.model.domain.DomainApplication; -import google.registry.model.eppinput.EppInput; -import google.registry.model.eppoutput.EppResponse.ResponseData; -import google.registry.model.eppoutput.EppResponse.ResponseExtension; -import google.registry.model.reporting.HistoryEntry; - -/** - * A no-op base class for {@link DomainApplicationCreateFlow} custom logic. - * - *

Extend this class and override the hook(s) to perform custom logic. - */ -public class DomainApplicationCreateFlowCustomLogic extends BaseFlowCustomLogic { - - protected DomainApplicationCreateFlowCustomLogic( - EppInput eppInput, SessionMetadata sessionMetadata, FlowMetadata flowMetadata) { - super(eppInput, sessionMetadata, flowMetadata); - } - - /** A hook that runs before any validation. This is useful to e.g. add allowable extensions. */ - @SuppressWarnings("unused") - public void beforeValidation() throws EppException { - // Do nothing. - } - - /** A hook that runs at the end of the validation step to perform additional validation. */ - @SuppressWarnings("unused") - public void afterValidation(AfterValidationParameters parameters) throws EppException { - // Do nothing. - } - - /** - * A hook that runs before new entities are persisted, allowing them to be changed. - * - *

It returns the actual entity changes that should be persisted to Datastore. It is important - * to be careful when changing the flow behavior for existing entities, because the core logic - * across many different flows expects the existence of these entities and many of the fields on - * them. - */ - @SuppressWarnings("unused") - public EntityChanges beforeSave(BeforeSaveParameters parameters) throws EppException { - return parameters.entityChanges(); - } - - /** - * A hook that runs before the response is returned. - * - *

This takes the {@link ResponseData} and {@link ResponseExtension}s as input and returns - * them, potentially with modifications. - */ - @SuppressWarnings("unused") - public BeforeResponseReturnData beforeResponse(BeforeResponseParameters parameters) - throws EppException { - return BeforeResponseReturnData.newBuilder() - .setResData(parameters.resData()) - .setResponseExtensions(parameters.responseExtensions()) - .build(); - } - - /** A class to encapsulate parameters for a call to {@link #afterValidation}. */ - @AutoValue - public abstract static class AfterValidationParameters extends ImmutableObject { - - /** The parsed domain name of the domain that is being applied for. */ - public abstract InternetDomainName domainName(); - - /** - * The number of years that the application is requesting registration for. - * - *

On standard TLDs, this is usually 1. - */ - public abstract int years(); - - public static Builder newBuilder() { - return new AutoValue_DomainApplicationCreateFlowCustomLogic_AfterValidationParameters - .Builder(); - } - - /** Builder for {@link AfterValidationParameters}. */ - @AutoValue.Builder - public abstract static class Builder { - - public abstract Builder setDomainName(InternetDomainName domainName); - - public abstract Builder setYears(int years); - - public abstract AfterValidationParameters build(); - } - } - - /** A class to encapsulate parameters for a call to {@link #beforeSave}. */ - @AutoValue - public abstract static class BeforeSaveParameters extends ImmutableObject { - - /** - * The new {@link DomainApplication} entity that is going to be persisted at the end of the - * transaction. - */ - public abstract DomainApplication newApplication(); - - /** - * The new {@link HistoryEntry} entity for the application's creation that is going to be - * persisted at the end of the transaction. - */ - public abstract HistoryEntry historyEntry(); - - /** - * The collection of {@link EntityChanges} (including new entities and those to delete) that - * will be persisted at the end of the transaction. - * - *

Note that the new application and history entry are also included as saves in this - * collection, and are separated out above solely for convenience, as they are most likely to - * need to be changed. Removing them from the collection will cause them not to be saved, which - * is most likely not what you intended. - */ - public abstract EntityChanges entityChanges(); - - /** - * The number of years that the application is requesting registration for. - * - *

On standard TLDs, this is usually 1. - */ - public abstract int years(); - - public static Builder newBuilder() { - return new AutoValue_DomainApplicationCreateFlowCustomLogic_BeforeSaveParameters.Builder(); - } - - /** Builder for {@link BeforeSaveParameters}. */ - @AutoValue.Builder - public abstract static class Builder { - - public abstract Builder setNewApplication(DomainApplication newApplication); - - public abstract Builder setHistoryEntry(HistoryEntry historyEntry); - - public abstract Builder setEntityChanges(EntityChanges entityChanges); - - public abstract Builder setYears(int years); - - public abstract BeforeSaveParameters build(); - } - } - - /** A class to encapsulate parameters for a call to {@link #beforeResponse}. */ - @AutoValue - public abstract static class BeforeResponseParameters extends ImmutableObject { - - public abstract ResponseData resData(); - - public abstract ImmutableList responseExtensions(); - - public static BeforeResponseParameters.Builder newBuilder() { - return new AutoValue_DomainApplicationCreateFlowCustomLogic_BeforeResponseParameters - .Builder(); - } - - /** Builder for {@link DomainApplicationCreateFlowCustomLogic.BeforeResponseParameters}. */ - @AutoValue.Builder - public abstract static class Builder { - - public abstract BeforeResponseParameters.Builder setResData(ResponseData resData); - - public abstract BeforeResponseParameters.Builder setResponseExtensions( - ImmutableList responseExtensions); - - public abstract BeforeResponseParameters build(); - } - } - - /** - * A class to encapsulate parameters for the return values from a call to {@link #beforeResponse}. - */ - @AutoValue - public abstract static class BeforeResponseReturnData extends ImmutableObject { - - public abstract ResponseData resData(); - - public abstract ImmutableList responseExtensions(); - - public static BeforeResponseReturnData.Builder newBuilder() { - return new AutoValue_DomainApplicationCreateFlowCustomLogic_BeforeResponseReturnData - .Builder(); - } - - /** Builder for {@link DomainApplicationCreateFlowCustomLogic.BeforeResponseReturnData}. */ - @AutoValue.Builder - public abstract static class Builder { - - public abstract BeforeResponseReturnData.Builder setResData(ResponseData resData); - - public abstract BeforeResponseReturnData.Builder setResponseExtensions( - ImmutableList responseExtensions); - - public abstract BeforeResponseReturnData build(); - } - } -} diff --git a/java/google/registry/flows/custom/DomainPricingCustomLogic.java b/java/google/registry/flows/custom/DomainPricingCustomLogic.java index 44285bfd1..31f221f44 100644 --- a/java/google/registry/flows/custom/DomainPricingCustomLogic.java +++ b/java/google/registry/flows/custom/DomainPricingCustomLogic.java @@ -22,7 +22,6 @@ import google.registry.flows.SessionMetadata; import google.registry.flows.domain.DomainPricingLogic; import google.registry.flows.domain.FeesAndCredits; import google.registry.model.ImmutableObject; -import google.registry.model.domain.DomainApplication; import google.registry.model.eppinput.EppInput; import google.registry.model.registry.Registry; import org.joda.time.DateTime; @@ -39,13 +38,6 @@ public class DomainPricingCustomLogic extends BaseFlowCustomLogic { super(eppInput, sessionMetadata, flowMetadata); } - /** A hook that customizes the application update price. */ - @SuppressWarnings("unused") - public FeesAndCredits customizeApplicationUpdatePrice( - ApplicationUpdatePriceParameters priceParameters) throws EppException { - return priceParameters.feesAndCredits(); - } - /** A hook that customizes the create price. */ @SuppressWarnings("unused") public FeesAndCredits customizeCreatePrice(CreatePriceParameters priceParameters) @@ -81,38 +73,6 @@ public class DomainPricingCustomLogic extends BaseFlowCustomLogic { return priceParameters.feesAndCredits(); } - /** A class to encapsulate parameters for a call to {@link #customizeApplicationUpdatePrice} . */ - @AutoValue - public abstract static class ApplicationUpdatePriceParameters extends ImmutableObject { - - public abstract FeesAndCredits feesAndCredits(); - - public abstract Registry registry(); - - public abstract DomainApplication domainApplication(); - - public abstract DateTime asOfDate(); - - public static Builder newBuilder() { - return new AutoValue_DomainPricingCustomLogic_ApplicationUpdatePriceParameters.Builder(); - } - - /** Builder for {@link ApplicationUpdatePriceParameters}. */ - @AutoValue.Builder - public abstract static class Builder { - - public abstract Builder setFeesAndCredits(FeesAndCredits feesAndCredits); - - public abstract Builder setRegistry(Registry registry); - - public abstract Builder setDomainApplication(DomainApplication domainApplication); - - public abstract Builder setAsOfDate(DateTime asOfDate); - - public abstract ApplicationUpdatePriceParameters build(); - } - } - /** A class to encapsulate parameters for a call to {@link #customizeCreatePrice} . */ @AutoValue public abstract static class CreatePriceParameters extends ImmutableObject { diff --git a/java/google/registry/flows/domain/DomainAllocateFlow.java b/java/google/registry/flows/domain/DomainAllocateFlow.java deleted file mode 100644 index bac773ea2..000000000 --- a/java/google/registry/flows/domain/DomainAllocateFlow.java +++ /dev/null @@ -1,424 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.flows.domain; - -import static com.google.common.collect.MoreCollectors.onlyElement; -import static google.registry.flows.FlowUtils.validateClientIsLoggedIn; -import static google.registry.flows.ResourceFlowUtils.verifyResourceDoesNotExist; -import static google.registry.flows.domain.DomainFlowUtils.COLLISION_MESSAGE; -import static google.registry.flows.domain.DomainFlowUtils.cloneAndLinkReferences; -import static google.registry.flows.domain.DomainFlowUtils.createFeeCreateResponse; -import static google.registry.flows.domain.DomainFlowUtils.getReservationTypes; -import static google.registry.flows.domain.DomainFlowUtils.validateCreateCommandContactsAndNameservers; -import static google.registry.flows.domain.DomainFlowUtils.validateDomainName; -import static google.registry.flows.domain.DomainFlowUtils.validateDomainNameWithIdnTables; -import static google.registry.flows.domain.DomainFlowUtils.validateRegistrationPeriod; -import static google.registry.flows.domain.DomainFlowUtils.validateSecDnsExtension; -import static google.registry.flows.domain.DomainFlowUtils.verifyUnitIsYears; -import static google.registry.model.EppResourceUtils.createDomainRepoId; -import static google.registry.model.EppResourceUtils.loadDomainApplication; -import static google.registry.model.ofy.ObjectifyService.ofy; -import static google.registry.pricing.PricingEngineProxy.getDomainCreateCost; -import static google.registry.util.CollectionUtils.isNullOrEmpty; -import static google.registry.util.DateTimeUtils.END_OF_TIME; -import static google.registry.util.DateTimeUtils.leapSafeAddYears; - -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableSet; -import com.google.common.collect.Streams; -import com.google.common.net.InternetDomainName; -import com.googlecode.objectify.Key; -import dagger.Lazy; -import google.registry.dns.DnsQueue; -import google.registry.flows.EppException; -import google.registry.flows.EppException.AuthorizationErrorException; -import google.registry.flows.EppException.ObjectDoesNotExistException; -import google.registry.flows.EppException.StatusProhibitsOperationException; -import google.registry.flows.ExtensionManager; -import google.registry.flows.FlowModule.ClientId; -import google.registry.flows.FlowModule.Superuser; -import google.registry.flows.FlowModule.TargetId; -import google.registry.flows.TransactionalFlow; -import google.registry.flows.annotations.ReportingSpec; -import google.registry.flows.domain.DomainFlowUtils.NameserversNotSpecifiedForNameserverRestrictedDomainException; -import google.registry.flows.domain.DomainFlowUtils.NameserversNotSpecifiedForTldWithNameserverWhitelistException; -import google.registry.model.ImmutableObject; -import google.registry.model.billing.BillingEvent; -import google.registry.model.billing.BillingEvent.Flag; -import google.registry.model.billing.BillingEvent.Reason; -import google.registry.model.domain.DomainApplication; -import google.registry.model.domain.DomainCommand.Create; -import google.registry.model.domain.DomainResource; -import google.registry.model.domain.GracePeriod; -import google.registry.model.domain.Period; -import google.registry.model.domain.allocate.AllocateCreateExtension; -import google.registry.model.domain.fee.FeeCreateCommandExtension; -import google.registry.model.domain.fee.FeeTransformResponseExtension; -import google.registry.model.domain.launch.ApplicationStatus; -import google.registry.model.domain.launch.LaunchInfoResponseExtension; -import google.registry.model.domain.metadata.MetadataExtension; -import google.registry.model.domain.rgp.GracePeriodStatus; -import google.registry.model.domain.secdns.SecDnsCreateExtension; -import google.registry.model.eppcommon.AuthInfo; -import google.registry.model.eppcommon.StatusValue; -import google.registry.model.eppinput.EppInput; -import google.registry.model.eppinput.ResourceCommand; -import google.registry.model.eppoutput.CreateData.DomainCreateData; -import google.registry.model.eppoutput.EppResponse; -import google.registry.model.index.EppResourceIndex; -import google.registry.model.index.ForeignKeyIndex; -import google.registry.model.ofy.ObjectifyService; -import google.registry.model.poll.PendingActionNotificationResponse.DomainPendingActionNotificationResponse; -import google.registry.model.poll.PollMessage; -import google.registry.model.registry.Registry; -import google.registry.model.registry.label.ReservationType; -import google.registry.model.reporting.DomainTransactionRecord; -import google.registry.model.reporting.DomainTransactionRecord.TransactionReportField; -import google.registry.model.reporting.HistoryEntry; -import google.registry.model.reporting.IcannReportingTypes.ActivityReportField; -import google.registry.tmch.LordnTaskUtils; -import java.util.Optional; -import java.util.Set; -import javax.inject.Inject; -import org.joda.time.DateTime; -import org.joda.time.Duration; - -/** - * An EPP flow that allocates a new domain resource from a domain application. - * - *

Note that this flow is only run by superusers. - * - * @error {@link google.registry.flows.exceptions.ResourceAlreadyExistsException} - * @error {@link DomainAllocateFlow.HasFinalStatusException} - * @error {@link DomainAllocateFlow.MissingApplicationException} - * @error {@link DomainAllocateFlow.OnlySuperuserCanAllocateException} - * @error {@link DomainFlowUtils.ExceedsMaxRegistrationYearsException} - * @error {@link DomainFlowUtils.RegistrantNotAllowedException} - * @error {@link DomainFlowUtils.NameserversNotAllowedForDomainException} - * @error {@link DomainFlowUtils.NameserversNotAllowedForTldException} - * @error {@link NameserversNotSpecifiedForNameserverRestrictedDomainException} - * @error {@link NameserversNotSpecifiedForTldWithNameserverWhitelistException} - */ -@ReportingSpec(ActivityReportField.DOMAIN_CREATE) // Allocates are special domain creates. -public class DomainAllocateFlow implements TransactionalFlow { - - @Inject ExtensionManager extensionManager; - @Inject AuthInfo authInfo; - @Inject ResourceCommand resourceCommand; - @Inject @ClientId String clientId; - @Inject @TargetId String targetId; - @Inject @Superuser boolean isSuperuser; - @Inject HistoryEntry.Builder historyBuilder; - @Inject EppInput eppInput; - @Inject Lazy dnsQueue; - @Inject EppResponse.Builder responseBuilder; - @Inject DomainPricingLogic pricingLogic; - @Inject DomainAllocateFlow() {} - - @Override - public final EppResponse run() throws EppException { - extensionManager.register( - FeeCreateCommandExtension.class, - SecDnsCreateExtension.class, - MetadataExtension.class, - AllocateCreateExtension.class); - extensionManager.validate(); - validateClientIsLoggedIn(clientId); - verifyIsSuperuser(); - DateTime now = ofy().getTransactionTime(); - Create command = cloneAndLinkReferences((Create) resourceCommand, now); - verifyResourceDoesNotExist(DomainResource.class, targetId, now); - InternetDomainName domainName = validateDomainName(command.getFullyQualifiedDomainName()); - Registry registry = Registry.get(domainName.parent().toString()); - Period period = command.getPeriod(); - verifyUnitIsYears(period); - int years = period.getValue(); - validateRegistrationPeriod(years); - validateCreateCommandContactsAndNameservers(command, registry, domainName); - Optional secDnsCreate = - validateSecDnsExtension(eppInput.getSingleExtension(SecDnsCreateExtension.class)); - boolean isSunrushAddGracePeriod = isNullOrEmpty(command.getNameservers()); - AllocateCreateExtension allocateCreate = - eppInput.getSingleExtension(AllocateCreateExtension.class).get(); - DomainApplication application = - loadAndValidateApplication(allocateCreate.getApplicationRoid(), now); - String repoId = createDomainRepoId(ObjectifyService.allocateId(), registry.getTldStr()); - ImmutableSet.Builder entitiesToSave = new ImmutableSet.Builder<>(); - HistoryEntry historyEntry = buildHistoryEntry( - repoId, registry.getTldStr(), now, period, registry.getAddGracePeriodLength()); - entitiesToSave.add(historyEntry); - ImmutableSet billsAndPolls = createBillingEventsAndPollMessages( - domainName, application, historyEntry, isSunrushAddGracePeriod, registry, now, years); - entitiesToSave.addAll(billsAndPolls); - DateTime registrationExpirationTime = leapSafeAddYears(now, years); - DomainResource newDomain = - new DomainResource.Builder() - .setCreationClientId(clientId) - .setPersistedCurrentSponsorClientId(clientId) - .setRepoId(repoId) - .setIdnTableName(validateDomainNameWithIdnTables(domainName)) - .setRegistrationExpirationTime(registrationExpirationTime) - .setAutorenewBillingEvent( - Key.create(getOnly(billsAndPolls, BillingEvent.Recurring.class))) - .setAutorenewPollMessage( - Key.create(getOnly(billsAndPolls, PollMessage.Autorenew.class))) - .setApplicationTime(allocateCreate.getApplicationTime()) - .setApplication(Key.create(application)) - .setSmdId(allocateCreate.getSmdId()) - .setLaunchNotice(allocateCreate.getNotice()) - .setDsData( - secDnsCreate.isPresent() ? secDnsCreate.get().getDsData() : application.getDsData()) - .addGracePeriod( - createGracePeriod( - isSunrushAddGracePeriod, getOnly(billsAndPolls, BillingEvent.OneTime.class))) - // Names on the collision list will not be delegated. Set server hold. - .setStatusValues( - getReservationTypes(domainName).contains(ReservationType.NAME_COLLISION) - ? ImmutableSet.of(StatusValue.SERVER_HOLD) - : ImmutableSet.of()) - .setRegistrant(command.getRegistrant()) - .setAuthInfo(command.getAuthInfo()) - .setFullyQualifiedDomainName(targetId) - .setNameservers(command.getNameservers()) - .setContacts(command.getContacts()) - .build(); - entitiesToSave.add( - newDomain, - buildApplicationHistory(application, now), - updateApplication(application), - ForeignKeyIndex.create(newDomain, newDomain.getDeletionTime()), - EppResourceIndex.create(Key.create(newDomain))); - ofy().save().entities(entitiesToSave.build()); - enqueueTasks(allocateCreate, newDomain); - return responseBuilder - .setResData(DomainCreateData.create(targetId, now, registrationExpirationTime)) - .setExtensions(createResponseExtensions(now, registry, years)) - .build(); - } - - private T getOnly( - Iterable objects, Class clazz) { - return Streams.stream(objects) - .filter(clazz::isInstance) - .map(clazz::cast) - .collect(onlyElement()); - } - - private void verifyIsSuperuser() throws OnlySuperuserCanAllocateException { - if (!isSuperuser) { - throw new OnlySuperuserCanAllocateException(); - } - } - - private DomainApplication loadAndValidateApplication( - String applicationRoid, DateTime now) throws EppException { - DomainApplication application = - loadDomainApplication(applicationRoid, now) - .orElseThrow(() -> new MissingApplicationException(applicationRoid)); - if (application.getApplicationStatus().isFinalStatus()) { - throw new HasFinalStatusException(); - } - return application; - } - - private HistoryEntry buildHistoryEntry( - String repoId, String tld, DateTime now, Period period, Duration addGracePeriod) { - return historyBuilder - .setType(HistoryEntry.Type.DOMAIN_ALLOCATE) - .setPeriod(period) - .setModificationTime(now) - .setParent(Key.create(DomainResource.class, repoId)) - .setDomainTransactionRecords( - ImmutableSet.of( - DomainTransactionRecord.create( - tld, - now.plus(addGracePeriod), - TransactionReportField.netAddsFieldFromYears(period.getValue()), - 1))) - .build(); - } - - private ImmutableSet createBillingEventsAndPollMessages( - InternetDomainName domainName, - DomainApplication application, - HistoryEntry historyEntry, - boolean isSunrushAddGracePeriod, - Registry registry, - DateTime now, - int years) { - DateTime registrationExpirationTime = leapSafeAddYears(now, years); - BillingEvent.OneTime oneTimeBillingEvent = createOneTimeBillingEvent( - application, historyEntry, isSunrushAddGracePeriod, registry, now, years); - PollMessage.OneTime oneTimePollMessage = - createOneTimePollMessage(application, historyEntry, getReservationTypes(domainName), now); - // Create a new autorenew billing event and poll message starting at the expiration time. - BillingEvent.Recurring autorenewBillingEvent = - createAutorenewBillingEvent(historyEntry, registrationExpirationTime); - PollMessage.Autorenew autorenewPollMessage = - createAutorenewPollMessage(historyEntry, registrationExpirationTime); - return ImmutableSet.of( - oneTimePollMessage, - oneTimeBillingEvent, - autorenewBillingEvent, - autorenewPollMessage); - } - - private BillingEvent.OneTime createOneTimeBillingEvent( - DomainApplication application, - HistoryEntry historyEntry, - boolean isSunrushAddGracePeriod, - Registry registry, - DateTime now, - int years) { - return new BillingEvent.OneTime.Builder() - .setReason(Reason.CREATE) - .setFlags(ImmutableSet.of( - Flag.ALLOCATION, - application.getEncodedSignedMarks().isEmpty() ? Flag.LANDRUSH : Flag.SUNRISE)) - .setTargetId(targetId) - .setClientId(clientId) - // Note that the cost is calculated as of now, i.e. the event time, not the billing time, - // which may be some additional days into the future. - .setCost(getDomainCreateCost(targetId, now, years)) - .setPeriodYears(years) - .setEventTime(now) - // If there are no nameservers on the domain, then they get the benefit of the sunrush - // add grace period, which is longer than the standard add grace period. - .setBillingTime(now.plus(isSunrushAddGracePeriod - ? registry.getSunrushAddGracePeriodLength() - : registry.getAddGracePeriodLength())) - .setParent(historyEntry) - .build(); - } - - private BillingEvent.Recurring createAutorenewBillingEvent( - HistoryEntry historyEntry, DateTime registrationExpirationTime) { - return new BillingEvent.Recurring.Builder() - .setReason(Reason.RENEW) - .setFlags(ImmutableSet.of(Flag.AUTO_RENEW)) - .setTargetId(targetId) - .setClientId(clientId) - .setEventTime(registrationExpirationTime) - .setRecurrenceEndTime(END_OF_TIME) - .setParent(historyEntry) - .build(); - } - - private PollMessage.Autorenew createAutorenewPollMessage( - HistoryEntry historyEntry, DateTime registrationExpirationTime) { - return new PollMessage.Autorenew.Builder() - .setTargetId(targetId) - .setClientId(clientId) - .setEventTime(registrationExpirationTime) - .setMsg("Domain was auto-renewed.") - .setParent(historyEntry) - .build(); - } - - private static GracePeriod createGracePeriod(boolean isSunrushAddGracePeriod, - BillingEvent.OneTime oneTimeBillingEvent) { - return GracePeriod.forBillingEvent( - isSunrushAddGracePeriod ? GracePeriodStatus.SUNRUSH_ADD : GracePeriodStatus.ADD, - oneTimeBillingEvent); - } - - /** Create a history entry (with no xml or trid) to record that we updated the application. */ - private static HistoryEntry buildApplicationHistory(DomainApplication application, DateTime now) { - return new HistoryEntry.Builder() - .setType(HistoryEntry.Type.DOMAIN_APPLICATION_STATUS_UPDATE) - .setParent(application) - .setModificationTime(now) - .setClientId(application.getCurrentSponsorClientId()) - .setBySuperuser(true) - .build(); - } - - /** Update the application itself. */ - private DomainApplication updateApplication(DomainApplication application) { - return application.asBuilder() - .setApplicationStatus(ApplicationStatus.ALLOCATED) - .removeStatusValue(StatusValue.PENDING_CREATE) - .build(); - } - - /** Create a poll message informing the registrar that the application status was updated. */ - private PollMessage.OneTime createOneTimePollMessage( - DomainApplication application, - HistoryEntry historyEntry, - Set reservationTypes, - DateTime now) { - return new PollMessage.OneTime.Builder() - .setClientId(historyEntry.getClientId()) - .setEventTime(now) - .setMsg( - reservationTypes.contains(ReservationType.NAME_COLLISION) - ? COLLISION_MESSAGE // Remind the registrar of the name collision policy. - : "Domain was allocated") - .setResponseData( - ImmutableList.of( - DomainPendingActionNotificationResponse.create( - targetId, true, application.getCreationTrid(), now))) - .setResponseExtensions( - ImmutableList.of( - new LaunchInfoResponseExtension.Builder() - .setApplicationId(application.getForeignKey()) - .setPhase(application.getPhase()) - .setApplicationStatus(ApplicationStatus.ALLOCATED) - .build())) - .setParent(historyEntry) - .build(); - } - - private void enqueueTasks(AllocateCreateExtension allocateCreate, DomainResource newDomain) { - if (newDomain.shouldPublishToDns()) { - dnsQueue.get().addDomainRefreshTask(newDomain.getFullyQualifiedDomainName()); - } - if (allocateCreate.getSmdId() != null || allocateCreate.getNotice() != null) { - LordnTaskUtils.enqueueDomainResourceTask(newDomain); - } - } - - private ImmutableList createResponseExtensions( - DateTime now, Registry registry, int years) throws EppException { - FeesAndCredits feesAndCredits = - pricingLogic.getCreatePrice(registry, targetId, now, years, false); - Optional feeCreate = - eppInput.getSingleExtension(FeeCreateCommandExtension.class); - return feeCreate.isPresent() - ? ImmutableList.of(createFeeCreateResponse(feeCreate.get(), feesAndCredits)) - : ImmutableList.of(); - } - - /** Domain application with specific ROID does not exist. */ - static class MissingApplicationException extends ObjectDoesNotExistException { - public MissingApplicationException(String applicationRoid) { - super(DomainApplication.class, applicationRoid); - } - } - - /** Domain application already has a final status. */ - static class HasFinalStatusException extends StatusProhibitsOperationException { - public HasFinalStatusException() { - super("Domain application already has a final status"); - } - } - - /** Only a superuser can allocate domains. */ - static class OnlySuperuserCanAllocateException extends AuthorizationErrorException { - public OnlySuperuserCanAllocateException() { - super("Only a superuser can allocate domains"); - } - } -} diff --git a/java/google/registry/flows/domain/DomainApplicationCreateFlow.java b/java/google/registry/flows/domain/DomainApplicationCreateFlow.java deleted file mode 100644 index 770099915..000000000 --- a/java/google/registry/flows/domain/DomainApplicationCreateFlow.java +++ /dev/null @@ -1,420 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.flows.domain; - -import static com.google.common.collect.ImmutableList.toImmutableList; -import static com.google.common.collect.Iterables.getOnlyElement; -import static google.registry.flows.FlowUtils.persistEntityChanges; -import static google.registry.flows.FlowUtils.validateClientIsLoggedIn; -import static google.registry.flows.ResourceFlowUtils.verifyResourceDoesNotExist; -import static google.registry.flows.domain.DomainFlowUtils.checkAllowedAccessToTld; -import static google.registry.flows.domain.DomainFlowUtils.cloneAndLinkReferences; -import static google.registry.flows.domain.DomainFlowUtils.createFeeCreateResponse; -import static google.registry.flows.domain.DomainFlowUtils.isAnchorTenant; -import static google.registry.flows.domain.DomainFlowUtils.validateCreateCommandContactsAndNameservers; -import static google.registry.flows.domain.DomainFlowUtils.validateDomainName; -import static google.registry.flows.domain.DomainFlowUtils.validateDomainNameWithIdnTables; -import static google.registry.flows.domain.DomainFlowUtils.validateFeeChallenge; -import static google.registry.flows.domain.DomainFlowUtils.validateLaunchCreateNotice; -import static google.registry.flows.domain.DomainFlowUtils.validateRegistrationPeriod; -import static google.registry.flows.domain.DomainFlowUtils.validateSecDnsExtension; -import static google.registry.flows.domain.DomainFlowUtils.verifyClaimsNoticeIfAndOnlyIfNeeded; -import static google.registry.flows.domain.DomainFlowUtils.verifyClaimsPeriodNotEnded; -import static google.registry.flows.domain.DomainFlowUtils.verifyLaunchPhaseMatchesRegistryPhase; -import static google.registry.flows.domain.DomainFlowUtils.verifyNoCodeMarks; -import static google.registry.flows.domain.DomainFlowUtils.verifyNotReserved; -import static google.registry.flows.domain.DomainFlowUtils.verifyPremiumNameIsNotBlocked; -import static google.registry.flows.domain.DomainFlowUtils.verifyRegistrarIsActive; -import static google.registry.flows.domain.DomainFlowUtils.verifyRegistryStateAllowsApplicationFlows; -import static google.registry.flows.domain.DomainFlowUtils.verifyUnitIsYears; -import static google.registry.model.EppResourceUtils.createDomainRepoId; -import static google.registry.model.index.DomainApplicationIndex.loadActiveApplicationsByDomainName; -import static google.registry.model.ofy.ObjectifyService.ofy; - -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableSet; -import com.google.common.net.InternetDomainName; -import com.googlecode.objectify.Key; -import google.registry.flows.EppException; -import google.registry.flows.EppException.CommandUseErrorException; -import google.registry.flows.EppException.ObjectAlreadyExistsException; -import google.registry.flows.EppException.RequiredParameterMissingException; -import google.registry.flows.ExtensionManager; -import google.registry.flows.FlowModule.ClientId; -import google.registry.flows.FlowModule.Superuser; -import google.registry.flows.FlowModule.TargetId; -import google.registry.flows.TransactionalFlow; -import google.registry.flows.annotations.ReportingSpec; -import google.registry.flows.custom.DomainApplicationCreateFlowCustomLogic; -import google.registry.flows.custom.DomainApplicationCreateFlowCustomLogic.AfterValidationParameters; -import google.registry.flows.custom.DomainApplicationCreateFlowCustomLogic.BeforeResponseParameters; -import google.registry.flows.custom.DomainApplicationCreateFlowCustomLogic.BeforeResponseReturnData; -import google.registry.flows.custom.EntityChanges; -import google.registry.flows.domain.DomainFlowUtils.NameserversNotSpecifiedForNameserverRestrictedDomainException; -import google.registry.flows.domain.DomainFlowUtils.NameserversNotSpecifiedForTldWithNameserverWhitelistException; -import google.registry.model.ImmutableObject; -import google.registry.model.domain.DomainApplication; -import google.registry.model.domain.DomainCommand.Create; -import google.registry.model.domain.DomainResource; -import google.registry.model.domain.Period; -import google.registry.model.domain.fee.FeeCreateCommandExtension; -import google.registry.model.domain.fee.FeeTransformCommandExtension; -import google.registry.model.domain.launch.ApplicationStatus; -import google.registry.model.domain.launch.LaunchCreateExtension; -import google.registry.model.domain.launch.LaunchCreateResponseExtension; -import google.registry.model.domain.launch.LaunchPhase; -import google.registry.model.domain.metadata.MetadataExtension; -import google.registry.model.domain.secdns.SecDnsCreateExtension; -import google.registry.model.eppcommon.AuthInfo; -import google.registry.model.eppcommon.StatusValue; -import google.registry.model.eppcommon.Trid; -import google.registry.model.eppinput.EppInput; -import google.registry.model.eppinput.ResourceCommand; -import google.registry.model.eppoutput.CreateData.DomainCreateData; -import google.registry.model.eppoutput.EppResponse; -import google.registry.model.eppoutput.EppResponse.ResponseExtension; -import google.registry.model.index.DomainApplicationIndex; -import google.registry.model.index.EppResourceIndex; -import google.registry.model.ofy.ObjectifyService; -import google.registry.model.registry.Registry; -import google.registry.model.registry.Registry.TldState; -import google.registry.model.reporting.HistoryEntry; -import google.registry.model.reporting.IcannReportingTypes.ActivityReportField; -import google.registry.model.smd.EncodedSignedMark; -import java.util.Optional; -import javax.inject.Inject; -import org.joda.time.DateTime; - -/** - * An EPP flow that creates a new application for a domain resource. - * - * @error {@link google.registry.flows.exceptions.ResourceAlreadyExistsException} - * @error {@link google.registry.flows.EppException.UnimplementedExtensionException} - * @error {@link DomainApplicationCreateFlow.LandrushApplicationDisallowedDuringSunriseException} - * @error {@link DomainApplicationCreateFlow.NoticeCannotBeUsedWithSignedMarkException} - * @error {@link DomainApplicationCreateFlow.SunriseApplicationDisallowedDuringLandrushException} - * @error {@link - * DomainApplicationCreateFlow.UncontestedSunriseApplicationBlockedInLandrushException} - * @error {@link DomainFlowUtils.AcceptedTooLongAgoException} - * @error {@link DomainFlowUtils.BadCommandForRegistryPhaseException} - * @error {@link DomainFlowUtils.BadDomainNameCharacterException} - * @error {@link DomainFlowUtils.BadDomainNamePartsCountException} - * @error {@link DomainFlowUtils.DomainNameExistsAsTldException} - * @error {@link DomainFlowUtils.BadPeriodUnitException} - * @error {@link DomainFlowTmchUtils.Base64RequiredForEncodedSignedMarksException} - * @error {@link DomainFlowUtils.ClaimsPeriodEndedException} - * @error {@link DomainFlowUtils.CurrencyUnitMismatchException} - * @error {@link DomainFlowUtils.CurrencyValueScaleException} - * @error {@link DomainFlowUtils.DashesInThirdAndFourthException} - * @error {@link DomainFlowUtils.DomainLabelTooLongException} - * @error {@link DomainFlowUtils.DomainReservedException} - * @error {@link DomainFlowUtils.DuplicateContactForRoleException} - * @error {@link DomainFlowUtils.EmptyDomainNamePartException} - * @error {@link DomainFlowUtils.ExceedsMaxRegistrationYearsException} - * @error {@link DomainFlowUtils.ExpiredClaimException} - * @error {@link DomainFlowUtils.FeesMismatchException} - * @error {@link DomainFlowUtils.FeesRequiredForPremiumNameException} - * @error {@link DomainFlowUtils.InvalidIdnDomainLabelException} - * @error {@link DomainFlowUtils.InvalidPunycodeException} - * @error {@link DomainFlowUtils.InvalidTcnIdChecksumException} - * @error {@link DomainFlowUtils.InvalidTrademarkValidatorException} - * @error {@link DomainFlowUtils.LaunchPhaseMismatchException} - * @error {@link DomainFlowUtils.LeadingDashException} - * @error {@link DomainFlowUtils.LinkedResourcesDoNotExistException} - * @error {@link DomainFlowUtils.MalformedTcnIdException} - * @error {@link DomainFlowUtils.MaxSigLifeNotSupportedException} - * @error {@link DomainFlowUtils.MissingClaimsNoticeException} - * @error {@link DomainFlowUtils.MissingContactTypeException} - * @error {@link DomainFlowUtils.NameserversNotAllowedForDomainException} - * @error {@link DomainFlowUtils.NameserversNotAllowedForTldException} - * @error {@link NameserversNotSpecifiedForNameserverRestrictedDomainException} - * @error {@link NameserversNotSpecifiedForTldWithNameserverWhitelistException} - * @error {@link DomainFlowTmchUtils.NoMarksFoundMatchingDomainException} - * @error {@link DomainFlowTmchUtils.FoundMarkNotYetValidException} - * @error {@link DomainFlowTmchUtils.FoundMarkExpiredException} - * @error {@link DomainFlowUtils.NotAuthorizedForTldException} - * @error {@link DomainFlowUtils.PremiumNameBlockedException} - * @error {@link DomainFlowUtils.RegistrantNotAllowedException} - * @error {@link DomainFlowUtils.RegistrarMustBeActiveForThisOperationException} - * @error {@link DomainFlowTmchUtils.SignedMarksMustBeEncodedException} - * @error {@link DomainFlowTmchUtils.SignedMarkCertificateExpiredException} - * @error {@link DomainFlowTmchUtils.SignedMarkCertificateInvalidException} - * @error {@link DomainFlowTmchUtils.SignedMarkCertificateNotYetValidException} - * @error {@link DomainFlowTmchUtils.SignedMarkCertificateRevokedException} - * @error {@link DomainFlowTmchUtils.SignedMarkCertificateSignatureException} - * @error {@link DomainFlowTmchUtils.SignedMarkEncodingErrorException} - * @error {@link DomainFlowTmchUtils.SignedMarkParsingErrorException} - * @error {@link DomainFlowTmchUtils.SignedMarkRevokedErrorException} - * @error {@link DomainFlowTmchUtils.SignedMarkSignatureException} - * @error {@link DomainFlowUtils.TldDoesNotExistException} - * @error {@link DomainFlowUtils.TooManyDsRecordsException} - * @error {@link DomainFlowUtils.TooManyNameserversException} - * @error {@link DomainFlowTmchUtils.TooManySignedMarksException} - * @error {@link DomainFlowUtils.TrailingDashException} - * @error {@link DomainFlowUtils.UnexpectedClaimsNoticeException} - * @error {@link DomainFlowUtils.UnsupportedFeeAttributeException} - * @error {@link DomainFlowUtils.UnsupportedMarkTypeException} - */ -@ReportingSpec(ActivityReportField.DOMAIN_CREATE) // Applications are technically domains in EPP. -public final class DomainApplicationCreateFlow implements TransactionalFlow { - - @Inject ExtensionManager extensionManager; - @Inject EppInput eppInput; - @Inject AuthInfo authInfo; - @Inject ResourceCommand resourceCommand; - @Inject @ClientId String clientId; - @Inject @TargetId String targetId; - @Inject @Superuser boolean isSuperuser; - @Inject HistoryEntry.Builder historyBuilder; - @Inject Trid trid; - @Inject EppResponse.Builder responseBuilder; - @Inject DomainApplicationCreateFlowCustomLogic flowCustomLogic; - @Inject DomainFlowTmchUtils tmchUtils; - @Inject DomainPricingLogic pricingLogic; - @Inject DomainApplicationCreateFlow() {} - - @Override - public final EppResponse run() throws EppException { - extensionManager.register( - FeeCreateCommandExtension.class, - SecDnsCreateExtension.class, - MetadataExtension.class, - LaunchCreateExtension.class); - flowCustomLogic.beforeValidation(); - extensionManager.validate(); - validateClientIsLoggedIn(clientId); - verifyRegistrarIsActive(clientId); - DateTime now = ofy().getTransactionTime(); - Create command = cloneAndLinkReferences((Create) resourceCommand, now); - // Fail if the domain is already registered (e.g. this is a landrush application but the domain - // was awarded at the end of sunrise). However, multiple domain applications can be created for - // the same domain name, so don't try to load an existing application. - verifyResourceDoesNotExist(DomainResource.class, targetId, now); - // Validate that this is actually a legal domain name on a TLD that the registrar has access to. - InternetDomainName domainName = validateDomainName(targetId); - String idnTableName = validateDomainNameWithIdnTables(domainName); - String tld = domainName.parent().toString(); - if (!isSuperuser) { - // Access to the TLD should be checked before the subsequent checks as it is a greater concern - checkAllowedAccessToTld(clientId, tld); - } - Registry registry = Registry.get(tld); - boolean isAnchorTenant = - isAnchorTenant(domainName, Optional.empty(), authInfo.getPw().getValue(), Optional.empty()); - FeesAndCredits feesAndCredits = - pricingLogic.getCreatePrice( - registry, targetId, now, command.getPeriod().getValue(), isAnchorTenant); - verifyUnitIsYears(command.getPeriod()); - int years = command.getPeriod().getValue(); - validateRegistrationPeriod(years); - validateCreateCommandContactsAndNameservers(command, registry, domainName); - LaunchCreateExtension launchCreate = - eppInput.getSingleExtension(LaunchCreateExtension.class).get(); - validateLaunchCreateExtension(launchCreate, registry, domainName, now); - // Superusers can create reserved domains, force creations on domains that require a claims - // notice without specifying a claims key, and override blocks on registering premium domains. - if (!isSuperuser) { - verifyPremiumNameIsNotBlocked(targetId, now, clientId); - prohibitLandrushIfExactlyOneSunrise(registry, now); - if (!isAnchorTenant) { - boolean isSunriseApplication = !launchCreate.getSignedMarks().isEmpty(); - verifyNotReserved(domainName, isSunriseApplication); - } - } - Optional feeCreate = - eppInput.getSingleExtension(FeeCreateCommandExtension.class); - validateFeeChallenge(targetId, tld, clientId, now, feeCreate, feesAndCredits); - Optional secDnsCreate = - validateSecDnsExtension(eppInput.getSingleExtension(SecDnsCreateExtension.class)); - flowCustomLogic.afterValidation( - AfterValidationParameters.newBuilder() - .setDomainName(domainName) - .setYears(years) - .build()); - DomainApplication newApplication = - new DomainApplication.Builder() - .setCreationTrid(trid) - .setCreationClientId(clientId) - .setPersistedCurrentSponsorClientId(clientId) - .setRepoId(createDomainRepoId(ObjectifyService.allocateId(), tld)) - .setLaunchNotice(launchCreate == null ? null : launchCreate.getNotice()) - .setIdnTableName(idnTableName) - .setPhase(launchCreate.getPhase()) - .setPeriod(command.getPeriod()) - .setApplicationStatus(ApplicationStatus.VALIDATED) - .addStatusValue(StatusValue.PENDING_CREATE) - .setDsData(secDnsCreate.isPresent() ? secDnsCreate.get().getDsData() : null) - .setRegistrant(command.getRegistrant()) - .setAuthInfo(command.getAuthInfo()) - .setFullyQualifiedDomainName(targetId) - .setNameservers(command.getNameservers()) - .setContacts(command.getContacts()) - .setEncodedSignedMarks( - launchCreate - .getSignedMarks() - .stream() - .map(abstractSignedMark -> (EncodedSignedMark) abstractSignedMark) - .collect(toImmutableList())) - .build(); - HistoryEntry historyEntry = - buildHistoryEntry(newApplication.getRepoId(), command.getPeriod(), now); - ImmutableSet.Builder entitiesToSave = new ImmutableSet.Builder<>(); - entitiesToSave.add( - newApplication, - historyEntry, - DomainApplicationIndex.createUpdatedInstance(newApplication), - EppResourceIndex.create(Key.create(newApplication))); - - EntityChanges entityChanges = - flowCustomLogic.beforeSave( - DomainApplicationCreateFlowCustomLogic.BeforeSaveParameters.newBuilder() - .setNewApplication(newApplication) - .setHistoryEntry(historyEntry) - .setEntityChanges( - EntityChanges.newBuilder().setSaves(entitiesToSave.build()).build()) - .setYears(years) - .build()); - persistEntityChanges(entityChanges); - BeforeResponseReturnData responseData = - flowCustomLogic.beforeResponse( - BeforeResponseParameters.newBuilder() - .setResData(DomainCreateData.create(targetId, now, null)) - .setResponseExtensions( - createResponseExtensions( - newApplication.getForeignKey(), - launchCreate.getPhase(), - feeCreate, - feesAndCredits)) - .build()); - return responseBuilder - .setResData(responseData.resData()) - .setExtensions(responseData.responseExtensions()) - .build(); - } - - private void validateLaunchCreateExtension( - LaunchCreateExtension launchCreate, - Registry registry, - InternetDomainName domainName, - DateTime now) throws EppException { - verifyNoCodeMarks(launchCreate); - boolean hasClaimsNotice = launchCreate.getNotice() != null; - if (hasClaimsNotice) { - verifyClaimsPeriodNotEnded(registry, now); - } - boolean isSunriseApplication = !launchCreate.getSignedMarks().isEmpty(); - if (!isSuperuser) { // Superusers can ignore the phase. - verifyRegistryStateAllowsApplicationFlows(registry, now); - verifyLaunchPhaseMatchesRegistryPhase(registry, launchCreate, now); - } - if (now.isBefore(registry.getClaimsPeriodEnd())) { - verifyClaimsNoticeIfAndOnlyIfNeeded(domainName, isSunriseApplication, hasClaimsNotice); - } - TldState tldState = registry.getTldState(now); - if (launchCreate.getSignedMarks().isEmpty()) { - // During sunrise, a signed mark is required since only trademark holders are allowed to - // create an application. However, we found no marks (ie, this was a landrush application). - if (tldState == TldState.SUNRISE) { - throw new LandrushApplicationDisallowedDuringSunriseException(); - } - } else { - if (hasClaimsNotice) { // Can't use a claims notice id with a signed mark. - throw new NoticeCannotBeUsedWithSignedMarkException(); - } - if (tldState == TldState.LANDRUSH) { - throw new SunriseApplicationDisallowedDuringLandrushException(); - } - } - String domainLabel = domainName.parts().get(0); - validateLaunchCreateNotice(launchCreate.getNotice(), domainLabel, isSuperuser, now); - // If a signed mark was provided, then it must match the desired domain label. - if (!launchCreate.getSignedMarks().isEmpty()) { - tmchUtils.verifySignedMarks(launchCreate.getSignedMarks(), domainLabel, now); - } - } - - /** - * Prohibit creating a landrush application in LANDRUSH (but not in SUNRUSH) if there is exactly - * one sunrise application for the same name. - */ - private void prohibitLandrushIfExactlyOneSunrise(Registry registry, DateTime now) - throws UncontestedSunriseApplicationBlockedInLandrushException { - if (registry.getTldState(now) == TldState.LANDRUSH) { - ImmutableSet applications = - loadActiveApplicationsByDomainName(targetId, now); - if (applications.size() == 1 - && getOnlyElement(applications).getPhase().equals(LaunchPhase.SUNRISE)) { - throw new UncontestedSunriseApplicationBlockedInLandrushException(); - } - } - } - - private HistoryEntry buildHistoryEntry(String repoId, Period period, DateTime now) { - return historyBuilder - .setType(HistoryEntry.Type.DOMAIN_APPLICATION_CREATE) - .setPeriod(period) - .setModificationTime(now) - .setParent(Key.create(DomainApplication.class, repoId)) - .build(); - } - - private static ImmutableList createResponseExtensions( - String applicationId, - LaunchPhase launchPhase, - Optional feeCreate, - FeesAndCredits feesAndCredits) { - ImmutableList.Builder responseExtensionsBuilder = - new ImmutableList.Builder<>(); - responseExtensionsBuilder.add(new LaunchCreateResponseExtension.Builder() - .setPhase(launchPhase) - .setApplicationId(applicationId) - .build()); - if (feeCreate.isPresent()) { - responseExtensionsBuilder.add(createFeeCreateResponse(feeCreate.get(), feesAndCredits)); - } - return responseExtensionsBuilder.build(); - } - - /** Landrush applications are disallowed during sunrise. */ - static class LandrushApplicationDisallowedDuringSunriseException - extends RequiredParameterMissingException { - public LandrushApplicationDisallowedDuringSunriseException() { - super("Landrush applications are disallowed during sunrise"); - } - } - - /** A notice cannot be specified when using a signed mark. */ - static class NoticeCannotBeUsedWithSignedMarkException extends CommandUseErrorException { - public NoticeCannotBeUsedWithSignedMarkException() { - super("A notice cannot be specified when using a signed mark"); - } - } - - /** Sunrise applications are disallowed during landrush. */ - static class SunriseApplicationDisallowedDuringLandrushException - extends CommandUseErrorException { - public SunriseApplicationDisallowedDuringLandrushException() { - super("Sunrise applications are disallowed during landrush"); - } - } - - /** This name has already been claimed by a sunrise applicant. */ - static class UncontestedSunriseApplicationBlockedInLandrushException - extends ObjectAlreadyExistsException { - public UncontestedSunriseApplicationBlockedInLandrushException() { - super("This name has already been claimed by a sunrise applicant"); - } - } -} diff --git a/java/google/registry/flows/domain/DomainApplicationDeleteFlow.java b/java/google/registry/flows/domain/DomainApplicationDeleteFlow.java deleted file mode 100644 index 7aed87c46..000000000 --- a/java/google/registry/flows/domain/DomainApplicationDeleteFlow.java +++ /dev/null @@ -1,125 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.flows.domain; - -import static google.registry.flows.FlowUtils.validateClientIsLoggedIn; -import static google.registry.flows.ResourceFlowUtils.verifyExistence; -import static google.registry.flows.ResourceFlowUtils.verifyOptionalAuthInfo; -import static google.registry.flows.ResourceFlowUtils.verifyResourceOwnership; -import static google.registry.flows.domain.DomainFlowUtils.checkAllowedAccessToTld; -import static google.registry.flows.domain.DomainFlowUtils.verifyApplicationDomainMatchesTargetId; -import static google.registry.flows.domain.DomainFlowUtils.verifyLaunchPhaseMatchesRegistryPhase; -import static google.registry.flows.domain.DomainFlowUtils.verifyRegistryStateAllowsApplicationFlows; -import static google.registry.model.EppResourceUtils.loadDomainApplication; -import static google.registry.model.ResourceTransferUtils.updateForeignKeyIndexDeletionTime; -import static google.registry.model.ofy.ObjectifyService.ofy; - -import com.googlecode.objectify.Key; -import google.registry.flows.EppException; -import google.registry.flows.EppException.StatusProhibitsOperationException; -import google.registry.flows.ExtensionManager; -import google.registry.flows.FlowModule.ApplicationId; -import google.registry.flows.FlowModule.ClientId; -import google.registry.flows.FlowModule.Superuser; -import google.registry.flows.FlowModule.TargetId; -import google.registry.flows.TransactionalFlow; -import google.registry.flows.annotations.ReportingSpec; -import google.registry.model.domain.DomainApplication; -import google.registry.model.domain.launch.LaunchDeleteExtension; -import google.registry.model.domain.launch.LaunchPhase; -import google.registry.model.domain.metadata.MetadataExtension; -import google.registry.model.eppcommon.AuthInfo; -import google.registry.model.eppinput.EppInput; -import google.registry.model.eppoutput.EppResponse; -import google.registry.model.registry.Registry; -import google.registry.model.registry.Registry.TldState; -import google.registry.model.reporting.HistoryEntry; -import google.registry.model.reporting.IcannReportingTypes.ActivityReportField; -import java.util.Optional; -import javax.inject.Inject; -import org.joda.time.DateTime; - -/** - * An EPP flow that deletes a domain application. - * - * @error {@link google.registry.flows.EppException.UnimplementedExtensionException} - * @error {@link google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException} - * @error {@link google.registry.flows.ResourceFlowUtils.ResourceNotOwnedException} - * @error {@link DomainApplicationDeleteFlow.SunriseApplicationCannotBeDeletedInLandrushException} - * @error {@link DomainFlowUtils.ApplicationDomainNameMismatchException} - * @error {@link DomainFlowUtils.BadCommandForRegistryPhaseException} - * @error {@link DomainFlowUtils.LaunchPhaseMismatchException} - * @error {@link DomainFlowUtils.NotAuthorizedForTldException} - */ -@ReportingSpec(ActivityReportField.DOMAIN_DELETE) // Applications are technically domains in EPP. -public final class DomainApplicationDeleteFlow implements TransactionalFlow { - - @Inject ExtensionManager extensionManager; - @Inject EppInput eppInput; - @Inject Optional authInfo; - @Inject @ClientId String clientId; - @Inject @TargetId String targetId; - @Inject @ApplicationId String applicationId; - @Inject @Superuser boolean isSuperuser; - @Inject HistoryEntry.Builder historyBuilder; - @Inject EppResponse.Builder responseBuilder; - @Inject DomainApplicationDeleteFlow() {} - - @Override - public final EppResponse run() throws EppException { - extensionManager.register(MetadataExtension.class, LaunchDeleteExtension.class); - extensionManager.validate(); - validateClientIsLoggedIn(clientId); - DateTime now = ofy().getTransactionTime(); - DomainApplication existingApplication = verifyExistence( - DomainApplication.class, applicationId, loadDomainApplication(applicationId, now)); - verifyApplicationDomainMatchesTargetId(existingApplication, targetId); - verifyOptionalAuthInfo(authInfo, existingApplication); - String tld = existingApplication.getTld(); - if (!isSuperuser) { - checkAllowedAccessToTld(clientId, tld); - Registry registry = Registry.get(tld); - verifyRegistryStateAllowsApplicationFlows(registry, now); - verifyLaunchPhaseMatchesRegistryPhase( - registry, eppInput.getSingleExtension(LaunchDeleteExtension.class).get(), now); - verifyResourceOwnership(clientId, existingApplication); - // Don't allow deleting a sunrise application during landrush. - if (existingApplication.getPhase().equals(LaunchPhase.SUNRISE) - && registry.getTldState(now).equals(TldState.LANDRUSH)) { - throw new SunriseApplicationCannotBeDeletedInLandrushException(); - } - } - DomainApplication newApplication = existingApplication.asBuilder() - .setDeletionTime(now) - .setStatusValues(null) - .build(); - HistoryEntry historyEntry = historyBuilder - .setType(HistoryEntry.Type.DOMAIN_APPLICATION_DELETE) - .setModificationTime(now) - .setParent(Key.create(existingApplication)) - .build(); - updateForeignKeyIndexDeletionTime(newApplication); - ofy().save().entities(newApplication, historyEntry); - return responseBuilder.build(); - } - - /** A sunrise application cannot be deleted during landrush. */ - static class SunriseApplicationCannotBeDeletedInLandrushException - extends StatusProhibitsOperationException { - public SunriseApplicationCannotBeDeletedInLandrushException() { - super("A sunrise application cannot be deleted during landrush"); - } - } -} diff --git a/java/google/registry/flows/domain/DomainApplicationInfoFlow.java b/java/google/registry/flows/domain/DomainApplicationInfoFlow.java deleted file mode 100644 index 4a89ecb7a..000000000 --- a/java/google/registry/flows/domain/DomainApplicationInfoFlow.java +++ /dev/null @@ -1,167 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.flows.domain; - -import static com.google.common.collect.Sets.union; -import static google.registry.flows.FlowUtils.unmarshalEpp; -import static google.registry.flows.FlowUtils.validateClientIsLoggedIn; -import static google.registry.flows.ResourceFlowUtils.verifyExistence; -import static google.registry.flows.ResourceFlowUtils.verifyOptionalAuthInfo; -import static google.registry.flows.ResourceFlowUtils.verifyResourceOwnership; -import static google.registry.flows.domain.DomainFlowUtils.addSecDnsExtensionIfPresent; -import static google.registry.flows.domain.DomainFlowUtils.loadForeignKeyedDesignatedContacts; -import static google.registry.flows.domain.DomainFlowUtils.verifyApplicationDomainMatchesTargetId; -import static google.registry.model.EppResourceUtils.loadDomainApplication; -import static google.registry.model.ofy.ObjectifyService.ofy; - -import com.google.common.collect.ImmutableList; -import google.registry.flows.EppException; -import google.registry.flows.EppException.ParameterValuePolicyErrorException; -import google.registry.flows.EppException.RequiredParameterMissingException; -import google.registry.flows.ExtensionManager; -import google.registry.flows.Flow; -import google.registry.flows.FlowModule.ApplicationId; -import google.registry.flows.FlowModule.ClientId; -import google.registry.flows.FlowModule.TargetId; -import google.registry.flows.annotations.ReportingSpec; -import google.registry.model.domain.DomainApplication; -import google.registry.model.domain.DomainCommand.Info; -import google.registry.model.domain.DomainInfoData; -import google.registry.model.domain.launch.LaunchInfoExtension; -import google.registry.model.domain.launch.LaunchInfoResponseExtension; -import google.registry.model.eppcommon.AuthInfo; -import google.registry.model.eppinput.EppInput; -import google.registry.model.eppinput.ResourceCommand; -import google.registry.model.eppoutput.EppResponse; -import google.registry.model.eppoutput.EppResponse.ResponseExtension; -import google.registry.model.mark.Mark; -import google.registry.model.reporting.IcannReportingTypes.ActivityReportField; -import google.registry.model.smd.EncodedSignedMark; -import google.registry.model.smd.SignedMark; -import google.registry.util.Clock; -import java.util.Optional; -import javax.inject.Inject; - -/** - * An EPP flow that returns information about a domain application. - * - *

Only the registrar that owns the application can see its info. The flow can optionally include - * delegated hosts in its response. - * - * @error {@link google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException} - * @error {@link google.registry.flows.ResourceFlowUtils.ResourceNotOwnedException} - * @error {@link DomainFlowUtils.ApplicationDomainNameMismatchException} - * @error {@link DomainApplicationInfoFlow.ApplicationLaunchPhaseMismatchException} - * @error {@link MissingApplicationIdException} - */ -@ReportingSpec(ActivityReportField.DOMAIN_INFO) // Applications are technically domains in EPP. -public final class DomainApplicationInfoFlow implements Flow { - - @Inject ResourceCommand resourceCommand; - @Inject ExtensionManager extensionManager; - @Inject EppInput eppInput; - @Inject Optional authInfo; - @Inject @ClientId String clientId; - @Inject @TargetId String targetId; - @Inject @ApplicationId String applicationId; - @Inject Clock clock; - @Inject EppResponse.Builder responseBuilder; - @Inject DomainApplicationInfoFlow() {} - - @Override - public final EppResponse run() throws EppException { - extensionManager.register(LaunchInfoExtension.class); - extensionManager.validate(); - validateClientIsLoggedIn(clientId); - if (applicationId.isEmpty()) { - throw new MissingApplicationIdException(); - } - DomainApplication application = - verifyExistence( - DomainApplication.class, - applicationId, - loadDomainApplication(applicationId, clock.nowUtc())); - verifyApplicationDomainMatchesTargetId(application, targetId); - verifyOptionalAuthInfo(authInfo, application); - LaunchInfoExtension launchInfo = eppInput.getSingleExtension(LaunchInfoExtension.class).get(); - if (!application.getPhase().equals(launchInfo.getPhase())) { - throw new ApplicationLaunchPhaseMismatchException(); - } - // We don't support authInfo for applications, so if it's another registrar always fail. - verifyResourceOwnership(clientId, application); - boolean showDelegatedHosts = ((Info) resourceCommand).getHostsRequest().requestDelegated(); - // Prefetch all referenced resources. Calling values() blocks until loading is done. - ofy().load() - .values(union(application.getNameservers(), application.getReferencedContacts())).values(); - return responseBuilder - .setResData(DomainInfoData.newBuilder() - .setFullyQualifiedDomainName(application.getFullyQualifiedDomainName()) - .setRepoId(application.getRepoId()) - .setStatusValues(application.getStatusValues()) - .setRegistrant( - ofy().load().key(application.getRegistrant()).now().getContactId()) - .setContacts(loadForeignKeyedDesignatedContacts(application.getContacts())) - .setNameservers(showDelegatedHosts - ? application.loadNameserverFullyQualifiedHostNames() - : null) - .setCurrentSponsorClientId(application.getCurrentSponsorClientId()) - .setCreationClientId(application.getCreationClientId()) - .setCreationTime(application.getCreationTime()) - .setLastEppUpdateClientId(application.getLastEppUpdateClientId()) - .setLastEppUpdateTime(application.getLastEppUpdateTime()) - .setAuthInfo(application.getAuthInfo()) - .build()) - .setExtensions(getDomainResponseExtensions(application, launchInfo)) - .build(); - } - - ImmutableList getDomainResponseExtensions( - DomainApplication application, LaunchInfoExtension launchInfo) { - ImmutableList.Builder marksBuilder = new ImmutableList.Builder<>(); - if (Boolean.TRUE.equals(launchInfo.getIncludeMark())) { // Default to false. - for (EncodedSignedMark encodedMark : application.getEncodedSignedMarks()) { - try { - marksBuilder.add(unmarshalEpp(SignedMark.class, encodedMark.getBytes()).getMark()); - } catch (EppException e) { - // This is a serious error; don't let the benign EppException propagate. - throw new IllegalStateException("Could not decode a stored encoded signed mark", e); - } - } - } - ImmutableList.Builder extensions = new ImmutableList.Builder<>(); - extensions.add(new LaunchInfoResponseExtension.Builder() - .setPhase(application.getPhase()) - .setApplicationId(application.getForeignKey()) - .setApplicationStatus(application.getApplicationStatus()) - .setMarks(marksBuilder.build()) - .build()); - addSecDnsExtensionIfPresent(extensions, application.getDsData()); - return extensions.build(); - } - - /** Application id is required. */ - static class MissingApplicationIdException extends RequiredParameterMissingException { - public MissingApplicationIdException() { - super("Application id is required"); - } - } - - /** Declared launch extension phase does not match phase of the application. */ - static class ApplicationLaunchPhaseMismatchException extends ParameterValuePolicyErrorException { - public ApplicationLaunchPhaseMismatchException() { - super("Declared launch extension phase does not match the phase of the application"); - } - } -} diff --git a/java/google/registry/flows/domain/DomainApplicationUpdateFlow.java b/java/google/registry/flows/domain/DomainApplicationUpdateFlow.java deleted file mode 100644 index 5a0a1d933..000000000 --- a/java/google/registry/flows/domain/DomainApplicationUpdateFlow.java +++ /dev/null @@ -1,263 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.flows.domain; - -import static com.google.common.base.CaseFormat.LOWER_CAMEL; -import static com.google.common.base.CaseFormat.UPPER_UNDERSCORE; -import static com.google.common.base.MoreObjects.firstNonNull; -import static com.google.common.collect.Sets.union; -import static google.registry.flows.FlowUtils.validateClientIsLoggedIn; -import static google.registry.flows.ResourceFlowUtils.checkSameValuesNotAddedAndRemoved; -import static google.registry.flows.ResourceFlowUtils.verifyAllStatusesAreClientSettable; -import static google.registry.flows.ResourceFlowUtils.verifyExistence; -import static google.registry.flows.ResourceFlowUtils.verifyNoDisallowedStatuses; -import static google.registry.flows.ResourceFlowUtils.verifyOptionalAuthInfo; -import static google.registry.flows.ResourceFlowUtils.verifyResourceOwnership; -import static google.registry.flows.domain.DomainFlowUtils.checkAllowedAccessToTld; -import static google.registry.flows.domain.DomainFlowUtils.cloneAndLinkReferences; -import static google.registry.flows.domain.DomainFlowUtils.updateDsData; -import static google.registry.flows.domain.DomainFlowUtils.validateContactsHaveTypes; -import static google.registry.flows.domain.DomainFlowUtils.validateDsData; -import static google.registry.flows.domain.DomainFlowUtils.validateFeesAckedIfPresent; -import static google.registry.flows.domain.DomainFlowUtils.validateNameserversAllowedOnDomain; -import static google.registry.flows.domain.DomainFlowUtils.validateNameserversAllowedOnTld; -import static google.registry.flows.domain.DomainFlowUtils.validateNameserversCountForTld; -import static google.registry.flows.domain.DomainFlowUtils.validateNoDuplicateContacts; -import static google.registry.flows.domain.DomainFlowUtils.validateRegistrantAllowedOnTld; -import static google.registry.flows.domain.DomainFlowUtils.validateRequiredContactsPresent; -import static google.registry.flows.domain.DomainFlowUtils.verifyApplicationDomainMatchesTargetId; -import static google.registry.flows.domain.DomainFlowUtils.verifyClientUpdateNotProhibited; -import static google.registry.flows.domain.DomainFlowUtils.verifyNotInPendingDelete; -import static google.registry.model.EppResourceUtils.loadDomainApplication; -import static google.registry.model.ofy.ObjectifyService.ofy; -import static google.registry.util.CollectionUtils.nullToEmpty; - -import com.google.common.collect.ImmutableSet; -import com.google.common.collect.Sets; -import com.google.common.net.InternetDomainName; -import com.googlecode.objectify.Key; -import google.registry.flows.EppException; -import google.registry.flows.EppException.StatusProhibitsOperationException; -import google.registry.flows.ExtensionManager; -import google.registry.flows.FlowModule.ApplicationId; -import google.registry.flows.FlowModule.ClientId; -import google.registry.flows.FlowModule.Superuser; -import google.registry.flows.FlowModule.TargetId; -import google.registry.flows.TransactionalFlow; -import google.registry.flows.annotations.ReportingSpec; -import google.registry.model.ImmutableObject; -import google.registry.model.domain.DomainApplication; -import google.registry.model.domain.DomainCommand.Update; -import google.registry.model.domain.DomainCommand.Update.AddRemove; -import google.registry.model.domain.DomainCommand.Update.Change; -import google.registry.model.domain.fee.FeeUpdateCommandExtension; -import google.registry.model.domain.launch.ApplicationStatus; -import google.registry.model.domain.launch.LaunchUpdateExtension; -import google.registry.model.domain.metadata.MetadataExtension; -import google.registry.model.domain.secdns.SecDnsUpdateExtension; -import google.registry.model.eppcommon.AuthInfo; -import google.registry.model.eppcommon.StatusValue; -import google.registry.model.eppinput.EppInput; -import google.registry.model.eppinput.ResourceCommand; -import google.registry.model.eppoutput.EppResponse; -import google.registry.model.registry.Registry; -import google.registry.model.reporting.HistoryEntry; -import google.registry.model.reporting.IcannReportingTypes.ActivityReportField; -import java.util.Optional; -import javax.inject.Inject; -import org.joda.time.DateTime; - -/** - * An EPP flow that updates a domain application. - * - *

Updates can change contacts, nameservers and delegation signer data of an application. Updates - * cannot change the domain name that is being applied for. - * - * @error {@link google.registry.flows.EppException.UnimplementedExtensionException} - * @error {@link google.registry.flows.ResourceFlowUtils.AddRemoveSameValueException} - * @error {@link google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException} - * @error {@link google.registry.flows.ResourceFlowUtils.ResourceNotOwnedException} - * @error {@link google.registry.flows.ResourceFlowUtils.StatusNotClientSettableException} - * @error {@link google.registry.flows.exceptions.ResourceHasClientUpdateProhibitedException} - * @error {@link google.registry.flows.exceptions.ResourceStatusProhibitsOperationException} - * @error {@link DomainFlowUtils.ApplicationDomainNameMismatchException} - * @error {@link DomainFlowUtils.DuplicateContactForRoleException} - * @error {@link DomainFlowUtils.EmptySecDnsUpdateException} - * @error {@link DomainFlowUtils.FeesMismatchException} - * @error {@link DomainFlowUtils.LinkedResourcesDoNotExistException} - * @error {@link DomainFlowUtils.MaxSigLifeChangeNotSupportedException} - * @error {@link DomainFlowUtils.MissingAdminContactException} - * @error {@link DomainFlowUtils.MissingContactTypeException} - * @error {@link DomainFlowUtils.MissingTechnicalContactException} - * @error {@link DomainFlowUtils.NameserversNotAllowedForTldException} - * @error {@link DomainFlowUtils.NameserversNotSpecifiedForTldWithNameserverWhitelistException} - * @error {@link DomainFlowUtils.NameserversNotAllowedForDomainException} - * @error {@link DomainFlowUtils.NameserversNotSpecifiedForNameserverRestrictedDomainException} - * @error {@link DomainFlowUtils.NotAuthorizedForTldException} - * @error {@link DomainFlowUtils.RegistrantNotAllowedException} - * @error {@link DomainFlowUtils.SecDnsAllUsageException} - * @error {@link DomainFlowUtils.TooManyDsRecordsException} - * @error {@link DomainFlowUtils.TooManyNameserversException} - * @error {@link DomainFlowUtils.UrgentAttributeNotSupportedException} - * @error {@link DomainApplicationUpdateFlow.ApplicationStatusProhibitsUpdateException} - */ -@ReportingSpec(ActivityReportField.DOMAIN_UPDATE) // Applications are technically domains in EPP. -public class DomainApplicationUpdateFlow implements TransactionalFlow { - - /** - * Note that CLIENT_UPDATE_PROHIBITED is intentionally not in this list. This is because it - * requires special checking, since you must be able to clear the status off the object with an - * update. - */ - private static final ImmutableSet UPDATE_DISALLOWED_STATUSES = - Sets.immutableEnumSet( - StatusValue.PENDING_DELETE, - StatusValue.SERVER_UPDATE_PROHIBITED); - - private static final ImmutableSet UPDATE_DISALLOWED_APPLICATION_STATUSES = - Sets.immutableEnumSet( - ApplicationStatus.INVALID, - ApplicationStatus.REJECTED, - ApplicationStatus.ALLOCATED); - - @Inject ResourceCommand resourceCommand; - @Inject ExtensionManager extensionManager; - @Inject EppInput eppInput; - @Inject Optional authInfo; - @Inject @ClientId String clientId; - @Inject @TargetId String targetId; - @Inject @ApplicationId String applicationId; - @Inject @Superuser boolean isSuperuser; - @Inject HistoryEntry.Builder historyBuilder; - @Inject EppResponse.Builder responseBuilder; - @Inject DomainPricingLogic pricingLogic; - @Inject DomainApplicationUpdateFlow() {} - - @Override - public final EppResponse run() throws EppException { - extensionManager.register( - FeeUpdateCommandExtension.class, - LaunchUpdateExtension.class, - MetadataExtension.class, - SecDnsUpdateExtension.class); - extensionManager.validate(); - validateClientIsLoggedIn(clientId); - DateTime now = ofy().getTransactionTime(); - Update command = cloneAndLinkReferences((Update) resourceCommand, now); - DomainApplication existingApplication = verifyExistence( - DomainApplication.class, applicationId, loadDomainApplication(applicationId, now)); - verifyApplicationDomainMatchesTargetId(existingApplication, targetId); - verifyNoDisallowedStatuses(existingApplication, UPDATE_DISALLOWED_STATUSES); - verifyOptionalAuthInfo(authInfo, existingApplication); - verifyUpdateAllowed(existingApplication, command, now); - HistoryEntry historyEntry = buildHistoryEntry(existingApplication, now); - DomainApplication newApplication = updateApplication(existingApplication, command, now); - validateNewApplication(newApplication); - ofy().save().entities(newApplication, historyEntry); - return responseBuilder.build(); - } - - protected final void verifyUpdateAllowed( - DomainApplication existingApplication, Update command, DateTime now) throws EppException { - AddRemove add = command.getInnerAdd(); - AddRemove remove = command.getInnerRemove(); - String tld = existingApplication.getTld(); - if (!isSuperuser) { - verifyResourceOwnership(clientId, existingApplication); - verifyClientUpdateNotProhibited(command, existingApplication); - verifyAllStatusesAreClientSettable(union(add.getStatusValues(), remove.getStatusValues())); - checkAllowedAccessToTld(clientId, tld); - } - if (UPDATE_DISALLOWED_APPLICATION_STATUSES - .contains(existingApplication.getApplicationStatus())) { - throw new ApplicationStatusProhibitsUpdateException( - existingApplication.getApplicationStatus()); - } - Registry registry = Registry.get(tld); - FeesAndCredits feesAndCredits = - pricingLogic.getApplicationUpdatePrice(registry, existingApplication, now); - Optional feeUpdate = - eppInput.getSingleExtension(FeeUpdateCommandExtension.class); - validateFeesAckedIfPresent(feeUpdate, feesAndCredits); - verifyNotInPendingDelete( - add.getContacts(), - command.getInnerChange().getRegistrant(), - add.getNameservers()); - validateContactsHaveTypes(add.getContacts()); - validateContactsHaveTypes(remove.getContacts()); - validateRegistrantAllowedOnTld(tld, command.getInnerChange().getRegistrantContactId()); - validateNameserversAllowedOnTld( - tld, add.getNameserverFullyQualifiedHostNames()); - InternetDomainName domainName = - InternetDomainName.from(existingApplication.getFullyQualifiedDomainName()); - validateNameserversAllowedOnDomain( - domainName, nullToEmpty(add.getNameserverFullyQualifiedHostNames())); - } - - private HistoryEntry buildHistoryEntry(DomainApplication existingApplication, DateTime now) { - return historyBuilder - .setType(HistoryEntry.Type.DOMAIN_APPLICATION_UPDATE) - .setModificationTime(now) - .setParent(Key.create(existingApplication)) - .build(); - } - - private DomainApplication updateApplication( - DomainApplication application, Update command, DateTime now) throws EppException { - AddRemove add = command.getInnerAdd(); - AddRemove remove = command.getInnerRemove(); - checkSameValuesNotAddedAndRemoved(add.getNameservers(), remove.getNameservers()); - checkSameValuesNotAddedAndRemoved(add.getContacts(), remove.getContacts()); - checkSameValuesNotAddedAndRemoved(add.getStatusValues(), remove.getStatusValues()); - Change change = command.getInnerChange(); - Optional secDnsUpdate = - eppInput.getSingleExtension(SecDnsUpdateExtension.class); - return application.asBuilder() - // Handle the secDNS extension. - .setDsData(secDnsUpdate.isPresent() - ? updateDsData(application.getDsData(), secDnsUpdate.get()) - : application.getDsData()) - .setLastEppUpdateTime(now) - .setLastEppUpdateClientId(clientId) - .addStatusValues(add.getStatusValues()) - .removeStatusValues(remove.getStatusValues()) - .addNameservers(add.getNameservers()) - .removeNameservers(remove.getNameservers()) - .addContacts(add.getContacts()) - .removeContacts(remove.getContacts()) - .setRegistrant(firstNonNull(change.getRegistrant(), application.getRegistrant())) - .setAuthInfo(firstNonNull(change.getAuthInfo(), application.getAuthInfo())) - .build(); - } - - private void validateNewApplication(DomainApplication newApplication) throws EppException { - validateNoDuplicateContacts(newApplication.getContacts()); - validateRequiredContactsPresent(newApplication.getRegistrant(), newApplication.getContacts()); - validateDsData(newApplication.getDsData()); - validateNameserversCountForTld( - newApplication.getTld(), - InternetDomainName.from(newApplication.getFullyQualifiedDomainName()), - newApplication.getNameservers().size()); - } - - /** Application status prohibits this domain update. */ - static class ApplicationStatusProhibitsUpdateException extends StatusProhibitsOperationException { - public ApplicationStatusProhibitsUpdateException(ApplicationStatus status) { - super(String.format( - "Applications in state %s can not be updated", - UPPER_UNDERSCORE.to(LOWER_CAMEL, status.name()))); - } - } -} diff --git a/java/google/registry/flows/domain/DomainCheckFlow.java b/java/google/registry/flows/domain/DomainCheckFlow.java index fbb197245..2735c4249 100644 --- a/java/google/registry/flows/domain/DomainCheckFlow.java +++ b/java/google/registry/flows/domain/DomainCheckFlow.java @@ -24,13 +24,11 @@ import static google.registry.flows.domain.DomainFlowUtils.validateDomainName; import static google.registry.flows.domain.DomainFlowUtils.validateDomainNameWithIdnTables; import static google.registry.flows.domain.DomainFlowUtils.verifyNotInPredelegation; import static google.registry.model.EppResourceUtils.checkResourcesExist; -import static google.registry.model.index.DomainApplicationIndex.loadActiveApplicationsByDomainName; import static google.registry.model.registry.label.ReservationType.getTypeOfHighestSeverity; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; -import com.google.common.collect.Sets; import com.google.common.net.InternetDomainName; import google.registry.config.RegistryConfig.Config; import google.registry.flows.EppException; @@ -58,7 +56,6 @@ import google.registry.model.eppoutput.CheckData.DomainCheckData; import google.registry.model.eppoutput.EppResponse; import google.registry.model.eppoutput.EppResponse.ResponseExtension; import google.registry.model.registry.Registry; -import google.registry.model.registry.Registry.TldState; import google.registry.model.registry.label.ReservationType; import google.registry.model.reporting.IcannReportingTypes.ActivityReportField; import google.registry.util.Clock; @@ -99,14 +96,6 @@ import org.joda.time.DateTime; @ReportingSpec(ActivityReportField.DOMAIN_CHECK) public final class DomainCheckFlow implements Flow { - /** - * The TLD states during which we want to report a domain with pending applications as - * unavailable. - */ - private static final ImmutableSet PENDING_ALLOCATION_TLD_STATES = - Sets.immutableEnumSet( - TldState.GENERAL_AVAILABILITY, TldState.START_DATE_SUNRISE, TldState.QUIET_PERIOD); - @Inject ResourceCommand resourceCommand; @Inject ExtensionManager extensionManager; @Inject EppInput eppInput; @@ -166,7 +155,7 @@ public final class DomainCheckFlow implements Flow { ImmutableList.Builder checks = new ImmutableList.Builder<>(); for (String targetId : targetIds) { Optional message = - getMessageForCheck(domainNames.get(targetId), existingIds, tokenCheckResults, now); + getMessageForCheck(domainNames.get(targetId), existingIds, tokenCheckResults); checks.add(DomainCheck.create(!message.isPresent(), targetId, message.orElse(null))); } BeforeResponseReturnData responseData = @@ -185,18 +174,10 @@ public final class DomainCheckFlow implements Flow { private Optional getMessageForCheck( InternetDomainName domainName, Set existingIds, - ImmutableMap tokenCheckResults, - DateTime now) { + ImmutableMap tokenCheckResults) { if (existingIds.contains(domainName.toString())) { return Optional.of("In use"); } - Registry registry = Registry.get(domainName.parent().toString()); - if (PENDING_ALLOCATION_TLD_STATES.contains(registry.getTldState(now)) - && loadActiveApplicationsByDomainName(domainName.toString(), now) - .stream() - .anyMatch(input -> !input.getApplicationStatus().isFinalStatus())) { - return Optional.of("Pending allocation"); - } ImmutableSet reservationTypes = getReservationTypes(domainName); if (!reservationTypes.isEmpty()) { return Optional.of(getTypeOfHighestSeverity(reservationTypes).getMessageForCheck()); diff --git a/java/google/registry/flows/domain/DomainClaimsCheckFlow.java b/java/google/registry/flows/domain/DomainClaimsCheckFlow.java index 3c5848f13..8ac4a408d 100644 --- a/java/google/registry/flows/domain/DomainClaimsCheckFlow.java +++ b/java/google/registry/flows/domain/DomainClaimsCheckFlow.java @@ -44,7 +44,6 @@ import google.registry.model.eppinput.EppInput; import google.registry.model.eppinput.ResourceCommand; import google.registry.model.eppoutput.EppResponse; import google.registry.model.registry.Registry; -import google.registry.model.registry.Registry.TldState; import google.registry.model.reporting.IcannReportingTypes.ActivityReportField; import google.registry.model.tmch.ClaimsListShard; import google.registry.util.Clock; @@ -63,7 +62,6 @@ import org.joda.time.DateTime; * @error {@link DomainFlowUtils.ClaimsPeriodEndedException} * @error {@link DomainFlowUtils.NotAuthorizedForTldException} * @error {@link DomainFlowUtils.TldDoesNotExistException} - * @error {@link DomainClaimsCheckNotAllowedInSunrise} * @error {@link DomainClaimsCheckNotAllowedWithAllocationTokens} */ @ReportingSpec(ActivityReportField.DOMAIN_CHECK) // Claims check is a special domain check. @@ -104,9 +102,6 @@ public final class DomainClaimsCheckFlow implements Flow { Registry registry = Registry.get(tld); DateTime now = clock.nowUtc(); verifyNotInPredelegation(registry, now); - if (registry.getTldState(now) == TldState.SUNRISE) { - throw new DomainClaimsCheckNotAllowedInSunrise(); - } verifyClaimsPeriodNotEnded(registry, now); } } @@ -120,13 +115,6 @@ public final class DomainClaimsCheckFlow implements Flow { .build(); } - /** Claims checks are not allowed during sunrise. */ - static class DomainClaimsCheckNotAllowedInSunrise extends CommandUseErrorException { - public DomainClaimsCheckNotAllowedInSunrise() { - super("Claims checks are not allowed during sunrise"); - } - } - /** Claims checks are not allowed with allocation tokens. */ static class DomainClaimsCheckNotAllowedWithAllocationTokens extends CommandUseErrorException { public DomainClaimsCheckNotAllowedWithAllocationTokens() { diff --git a/java/google/registry/flows/domain/DomainCreateFlow.java b/java/google/registry/flows/domain/DomainCreateFlow.java index 3a566e81a..061a51323 100644 --- a/java/google/registry/flows/domain/DomainCreateFlow.java +++ b/java/google/registry/flows/domain/DomainCreateFlow.java @@ -45,26 +45,21 @@ import static google.registry.model.EppResourceUtils.createDomainRepoId; import static google.registry.model.eppcommon.StatusValue.SERVER_HOLD; import static google.registry.model.eppcommon.StatusValue.SERVER_TRANSFER_PROHIBITED; import static google.registry.model.eppcommon.StatusValue.SERVER_UPDATE_PROHIBITED; -import static google.registry.model.index.DomainApplicationIndex.loadActiveApplicationsByDomainName; import static google.registry.model.ofy.ObjectifyService.ofy; import static google.registry.model.registry.Registry.TldState.GENERAL_AVAILABILITY; import static google.registry.model.registry.Registry.TldState.START_DATE_SUNRISE; -import static google.registry.model.registry.Registry.TldState.SUNRISE; -import static google.registry.model.registry.Registry.TldState.SUNRUSH; import static google.registry.model.registry.label.ReservationType.NAME_COLLISION; import static google.registry.util.DateTimeUtils.END_OF_TIME; import static google.registry.util.DateTimeUtils.leapSafeAddYears; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; -import com.google.common.collect.Sets; import com.google.common.net.InternetDomainName; import com.googlecode.objectify.Key; import google.registry.dns.DnsQueue; import google.registry.flows.EppException; import google.registry.flows.EppException.CommandUseErrorException; import google.registry.flows.EppException.ParameterValuePolicyErrorException; -import google.registry.flows.EppException.StatusProhibitsOperationException; import google.registry.flows.ExtensionManager; import google.registry.flows.FlowModule.ClientId; import google.registry.flows.FlowModule.Superuser; @@ -81,7 +76,6 @@ import google.registry.model.billing.BillingEvent; import google.registry.model.billing.BillingEvent.Flag; import google.registry.model.billing.BillingEvent.Reason; import google.registry.model.billing.BillingEvent.Recurring; -import google.registry.model.domain.DomainApplication; import google.registry.model.domain.DomainCommand; import google.registry.model.domain.DomainCommand.Create; import google.registry.model.domain.DomainResource; @@ -130,7 +124,6 @@ import org.joda.time.Duration; * @error {@link google.registry.flows.EppException.UnimplementedExtensionException} * @error {@link google.registry.flows.ExtensionManager.UndeclaredServiceExtensionException} * @error {@link DomainCreateFlow.AnchorTenantCreatePeriodException} - * @error {@link DomainCreateFlow.DomainHasOpenApplicationsException} * @error {@link DomainCreateFlow.MustHaveSignedMarksInCurrentPhaseException} * @error {@link DomainCreateFlow.NoGeneralRegistrationsInCurrentPhaseException} * @error {@link DomainCreateFlow.SignedMarksOnlyDuringSunriseException} @@ -191,19 +184,6 @@ import org.joda.time.Duration; @ReportingSpec(ActivityReportField.DOMAIN_CREATE) public class DomainCreateFlow implements TransactionalFlow { - /** - * States when the TLD is in sunrise. - * - *

Note that a TLD in SUNRUSH means sunrise is in effect, but not necessarily that the "create" - * command is a "sunrise create". It might be a landrush create. We must make sure there's a - * signed mark to know if the create is "sunrise" or "landrush" for verification purposes. - * - *

Note also that SUNRISE (start-date sunrise) and LANDRUSH can't "naturally" succeed in this - * flow. They can only succeed if sent as a superuser or anchor tenant. - */ - private static final ImmutableSet SUNRISE_STATES = - Sets.immutableEnumSet(SUNRISE, SUNRUSH, START_DATE_SUNRISE); - /** Anchor tenant creates should always be for 2 years, since they get 2 years free. */ private static final int ANCHOR_TENANT_CREATE_VALID_YEARS = 2; @@ -260,7 +240,7 @@ public class DomainCreateFlow implements TransactionalFlow { verifyNoCodeMarks(launchCreate.get()); validateLaunchCreateNotice(launchCreate.get().getNotice(), domainLabel, isSuperuser, now); } - boolean isSunriseCreate = hasSignedMarks && SUNRISE_STATES.contains(tldState); + boolean isSunriseCreate = hasSignedMarks && tldState == START_DATE_SUNRISE; Optional allocationToken = verifyAllocationTokenIfPresent(command, registry, clientId, now); boolean isAnchorTenant = @@ -275,6 +255,7 @@ public class DomainCreateFlow implements TransactionalFlow { // registering premium domains. if (!isSuperuser) { checkAllowedAccessToTld(clientId, registry.getTldStr()); + verifyIsGaOrIsSpecialCase(tldState, isAnchorTenant, hasSignedMarks); if (launchCreate.isPresent()) { verifyLaunchPhaseMatchesRegistryPhase(registry, launchCreate.get(), now); } @@ -288,8 +269,6 @@ public class DomainCreateFlow implements TransactionalFlow { verifyClaimsNoticeIfAndOnlyIfNeeded(domainName, hasSignedMarks, hasClaimsNotice); } verifyPremiumNameIsNotBlocked(targetId, now, clientId); - verifyNoOpenApplications(now); - verifyIsGaOrIsSpecialCase(tldState, isAnchorTenant, hasSignedMarks); verifySignedMarkOnlyInSunrise(hasSignedMarks, tldState); } String signedMarkId = null; @@ -418,7 +397,7 @@ public class DomainCreateFlow implements TransactionalFlow { */ static void verifySignedMarkOnlyInSunrise(boolean hasSignedMarks, TldState tldState) throws EppException { - if (hasSignedMarks && !SUNRISE_STATES.contains(tldState)) { + if (hasSignedMarks && tldState != START_DATE_SUNRISE) { throw new SignedMarksOnlyDuringSunriseException(); } } @@ -434,15 +413,6 @@ public class DomainCreateFlow implements TransactionalFlow { } } - /** Prohibit creating a domain if there is an open application for the same name. */ - private void verifyNoOpenApplications(DateTime now) throws DomainHasOpenApplicationsException { - for (DomainApplication application : loadActiveApplicationsByDomainName(targetId, now)) { - if (!application.getApplicationStatus().isFinalStatus()) { - throw new DomainHasOpenApplicationsException(); - } - } - } - /** * Prohibit registrations unless QLP, General Availability or Start Date Sunrise. * @@ -465,7 +435,7 @@ public class DomainCreateFlow implements TransactionalFlow { return; } - // During START_DATE_SUNRISE, only allow registration with a signed marks. + // During START_DATE_SUNRISE, only allow registration with signed marks. if (START_DATE_SUNRISE.equals(tldState)) { if (!hasSignedMarks) { throw new MustHaveSignedMarksInCurrentPhaseException(); @@ -626,13 +596,6 @@ public class DomainCreateFlow implements TransactionalFlow { } } - /** There is an open application for this domain. */ - static class DomainHasOpenApplicationsException extends StatusProhibitsOperationException { - public DomainHasOpenApplicationsException() { - super("There is an open application for this domain"); - } - } - /** The current registry phase does not allow for general registrations. */ static class NoGeneralRegistrationsInCurrentPhaseException extends CommandUseErrorException { public NoGeneralRegistrationsInCurrentPhaseException() { diff --git a/java/google/registry/flows/domain/DomainFlowUtils.java b/java/google/registry/flows/domain/DomainFlowUtils.java index 8223441ed..ed9e16f6e 100644 --- a/java/google/registry/flows/domain/DomainFlowUtils.java +++ b/java/google/registry/flows/domain/DomainFlowUtils.java @@ -26,6 +26,8 @@ import static google.registry.model.domain.DomainResource.MAX_REGISTRATION_YEARS import static google.registry.model.ofy.ObjectifyService.ofy; import static google.registry.model.registry.Registries.findTldForName; import static google.registry.model.registry.Registries.getTlds; +import static google.registry.model.registry.Registry.TldState.GENERAL_AVAILABILITY; +import static google.registry.model.registry.Registry.TldState.START_DATE_SUNRISE; import static google.registry.model.registry.label.ReservationType.FULLY_BLOCKED; import static google.registry.model.registry.label.ReservationType.NAMESERVER_RESTRICTED; import static google.registry.model.registry.label.ReservationType.RESERVED_FOR_ANCHOR_TENANT; @@ -69,7 +71,6 @@ import google.registry.model.billing.BillingEvent.Recurring; import google.registry.model.contact.ContactResource; import google.registry.model.domain.DesignatedContact; import google.registry.model.domain.DesignatedContact.Type; -import google.registry.model.domain.DomainApplication; import google.registry.model.domain.DomainBase; import google.registry.model.domain.DomainCommand.Create; import google.registry.model.domain.DomainCommand.CreateOrUpdate; @@ -132,14 +133,11 @@ import org.joda.time.Duration; public class DomainFlowUtils { /** Map from launch phases to the allowed tld states. */ - private static final ImmutableMultimap LAUNCH_PHASE_TO_TLD_STATES = - new ImmutableMultimap.Builder() - .put(LaunchPhase.SUNRISE, TldState.SUNRISE) - .put(LaunchPhase.SUNRUSH, TldState.SUNRUSH) - .put(LaunchPhase.LANDRUSH, TldState.LANDRUSH) - .put(LaunchPhase.CLAIMS, TldState.GENERAL_AVAILABILITY) - .put(LaunchPhase.SUNRISE, TldState.START_DATE_SUNRISE) - .put(LaunchPhase.OPEN, TldState.GENERAL_AVAILABILITY) + private static final ImmutableMap LAUNCH_PHASE_TO_TLD_STATES = + new ImmutableMap.Builder() + .put(LaunchPhase.CLAIMS, GENERAL_AVAILABILITY) + .put(LaunchPhase.SUNRISE, START_DATE_SUNRISE) + .put(LaunchPhase.OPEN, GENERAL_AVAILABILITY) .build(); /** Reservation types that are only allowed in sunrise by policy. */ @@ -154,14 +152,6 @@ public class DomainFlowUtils { + "delegated. Please visit https://www.icann.org/namecollision for more information on " + "name collision."; - /** Non-sunrise tld states. */ - private static final ImmutableSet DISALLOWED_TLD_STATES_FOR_APPLICATION_FLOWS = - Sets.immutableEnumSet( - TldState.PREDELEGATION, - TldState.QUIET_PERIOD, - TldState.START_DATE_SUNRISE, - TldState.GENERAL_AVAILABILITY); - /** Strict validator for ascii lowercase letters, digits, and "-", allowing "." as a separator */ private static final CharMatcher ALLOWED_CHARS = CharMatcher.inRange('a', 'z').or(CharMatcher.inRange('0', '9').or(CharMatcher.anyOf("-."))); @@ -474,21 +464,14 @@ public class DomainFlowUtils { /** Verifies that a launch extension's specified phase matches the specified registry's phase. */ static void verifyLaunchPhaseMatchesRegistryPhase( Registry registry, LaunchExtension launchExtension, DateTime now) throws EppException { - if (!LAUNCH_PHASE_TO_TLD_STATES.containsEntry( - launchExtension.getPhase(), registry.getTldState(now))) { + if (!LAUNCH_PHASE_TO_TLD_STATES.containsKey(launchExtension.getPhase()) + || LAUNCH_PHASE_TO_TLD_STATES.get(launchExtension.getPhase()) + != registry.getTldState(now)) { // No launch operations are allowed during the quiet period or predelegation. throw new LaunchPhaseMismatchException(); } } - /** Verifies that an application's domain name matches the target id (from a command). */ - static void verifyApplicationDomainMatchesTargetId(DomainApplication application, String targetId) - throws EppException { - if (!application.getFullyQualifiedDomainName().equals(targetId)) { - throw new ApplicationDomainNameMismatchException(); - } - } - /** * Verifies that a domain name is allowed to be delegated to the given client id. The only case * where it would not be allowed is if domain name is premium, and premium names are blocked by @@ -601,7 +584,7 @@ public class DomainFlowUtils { String domainNameString = domain.toString(); Registry registry = Registry.get(domain.parent().toString()); int years = verifyUnitIsYears(feeRequest.getPeriod()).getValue(); - boolean isSunrise = registry.getTldState(now).equals(TldState.SUNRISE); + boolean isSunrise = (registry.getTldState(now) == START_DATE_SUNRISE); if (feeRequest.getPhase() != null || feeRequest.getSubphase() != null) { throw new FeeChecksDontSupportPhasesException(); @@ -822,9 +805,8 @@ public class DomainFlowUtils { } /** - * Check whether a new registration period (via a create, allocate, or application create) does - * not extend beyond a maximum number of years (e.g. {@link - * DomainResource#MAX_REGISTRATION_YEARS}). + * Check that a new registration period (via a create) does not extend beyond a maximum number of + * years (e.g. {@link DomainResource#MAX_REGISTRATION_YEARS}). * * @throws ExceedsMaxRegistrationYearsException if the new registration period is too long */ @@ -879,7 +861,7 @@ public class DomainFlowUtils { return ImmutableSet.copyOf(union(difference(oldDsData, toRemove), toAdd)); } - /** If a domain or application has "clientUpdateProhibited" set, updates must clear it or fail. */ + /** If a domain "clientUpdateProhibited" set, updates must clear it or fail. */ static void verifyClientUpdateNotProhibited(Update command, DomainBase existingResource) throws ResourceHasClientUpdateProhibitedException { if (existingResource.getStatusValues().contains(StatusValue.CLIENT_UPDATE_PROHIBITED) @@ -905,14 +887,6 @@ public class DomainFlowUtils { } } - /** Check that the registry phase is not incompatible with launch extension flows. */ - static void verifyRegistryStateAllowsApplicationFlows(Registry registry, DateTime now) - throws BadCommandForRegistryPhaseException { - if (DISALLOWED_TLD_STATES_FOR_APPLICATION_FLOWS.contains(registry.getTldState(now))) { - throw new BadCommandForRegistryPhaseException(); - } - } - /** Check that the registry phase is not predelegation, during which some flows are forbidden. */ public static void verifyNotInPredelegation(Registry registry, DateTime now) throws BadCommandForRegistryPhaseException { @@ -921,7 +895,7 @@ public class DomainFlowUtils { } } - /** Validate the contacts and nameservers specified in a domain or application create command. */ + /** Validate the contacts and nameservers specified in a domain create command. */ static void validateCreateCommandContactsAndNameservers( Create command, Registry registry, InternetDomainName domainName) throws EppException { verifyNotInPendingDelete( @@ -993,7 +967,7 @@ public class DomainFlowUtils { /** * Check that if there's a claims notice it's on the claims list, and that if there's not one it's - * not on the claims list and is a sunrise application. + * not on the claims list. */ static void verifyClaimsNoticeIfAndOnlyIfNeeded( InternetDomainName domainName, boolean hasSignedMarks, boolean hasClaimsNotice) @@ -1016,7 +990,7 @@ public class DomainFlowUtils { } } - /** Create a response extension listing the fees on a domain or application create. */ + /** Create a response extension listing the fees on a domain create. */ static FeeTransformResponseExtension createFeeCreateResponse( FeeTransformCommandExtension feeCreate, FeesAndCredits feesAndCredits) { return feeCreate @@ -1185,13 +1159,6 @@ public class DomainFlowUtils { } } - /** Application referenced does not match specified domain name. */ - static class ApplicationDomainNameMismatchException extends ParameterValuePolicyErrorException { - public ApplicationDomainNameMismatchException() { - super("Application referenced does not match specified domain name"); - } - } - /** Too many DS records set on a domain. */ static class TooManyDsRecordsException extends ParameterValuePolicyErrorException { public TooManyDsRecordsException(String message) { diff --git a/java/google/registry/flows/domain/DomainPricingLogic.java b/java/google/registry/flows/domain/DomainPricingLogic.java index 22e900756..3fd6928c7 100644 --- a/java/google/registry/flows/domain/DomainPricingLogic.java +++ b/java/google/registry/flows/domain/DomainPricingLogic.java @@ -22,13 +22,11 @@ import com.google.common.net.InternetDomainName; import google.registry.flows.EppException; import google.registry.flows.FlowScope; import google.registry.flows.custom.DomainPricingCustomLogic; -import google.registry.flows.custom.DomainPricingCustomLogic.ApplicationUpdatePriceParameters; import google.registry.flows.custom.DomainPricingCustomLogic.CreatePriceParameters; import google.registry.flows.custom.DomainPricingCustomLogic.RenewPriceParameters; import google.registry.flows.custom.DomainPricingCustomLogic.RestorePriceParameters; import google.registry.flows.custom.DomainPricingCustomLogic.TransferPriceParameters; import google.registry.flows.custom.DomainPricingCustomLogic.UpdatePriceParameters; -import google.registry.model.domain.DomainApplication; import google.registry.model.domain.fee.BaseFee; import google.registry.model.domain.fee.BaseFee.FeeType; import google.registry.model.domain.fee.Fee; @@ -162,25 +160,6 @@ public final class DomainPricingLogic { .build()); } - /** Returns a new domain application update price for the pricer. */ - @SuppressWarnings("unused") - public FeesAndCredits getApplicationUpdatePrice( - Registry registry, DomainApplication application, DateTime date) throws EppException { - BaseFee feeOrCredit = - Fee.create(Money.zero(registry.getCurrency()).getAmount(), FeeType.UPDATE); - return customLogic.customizeApplicationUpdatePrice( - ApplicationUpdatePriceParameters.newBuilder() - .setFeesAndCredits( - new FeesAndCredits.Builder() - .setCurrency(registry.getCurrency()) - .setFeesAndCredits(feeOrCredit) - .build()) - .setRegistry(registry) - .setDomainApplication(application) - .setAsOfDate(date) - .build()); - } - /** Returns the fee class for a given domain and date. */ public Optional getFeeClass(String domainName, DateTime date) { return getDomainFeeClass(domainName, date); diff --git a/java/google/registry/flows/domain/DomainUpdateFlow.java b/java/google/registry/flows/domain/DomainUpdateFlow.java index 39270021e..5aa32a6de 100644 --- a/java/google/registry/flows/domain/DomainUpdateFlow.java +++ b/java/google/registry/flows/domain/DomainUpdateFlow.java @@ -42,7 +42,6 @@ import static google.registry.flows.domain.DomainFlowUtils.verifyClientUpdateNot import static google.registry.flows.domain.DomainFlowUtils.verifyNotInPendingDelete; import static google.registry.model.ofy.ObjectifyService.ofy; import static google.registry.util.CollectionUtils.nullToEmpty; -import static google.registry.util.DateTimeUtils.earliestOf; import com.google.common.collect.ImmutableSet; import com.google.common.net.InternetDomainName; @@ -67,10 +66,8 @@ import google.registry.model.domain.DomainCommand.Update; import google.registry.model.domain.DomainCommand.Update.AddRemove; import google.registry.model.domain.DomainCommand.Update.Change; import google.registry.model.domain.DomainResource; -import google.registry.model.domain.GracePeriod; import google.registry.model.domain.fee.FeeUpdateCommandExtension; import google.registry.model.domain.metadata.MetadataExtension; -import google.registry.model.domain.rgp.GracePeriodStatus; import google.registry.model.domain.secdns.SecDnsUpdateExtension; import google.registry.model.eppcommon.AuthInfo; import google.registry.model.eppcommon.StatusValue; @@ -94,12 +91,6 @@ import org.joda.time.DateTime; * superuser. As such, adding or removing these statuses incurs a billing event. There will be only * one charge per update, even if several such statuses are updated at once. * - *

If a domain was created during the sunrise or landrush phases of a TLD, is still within the - * sunrushAddGracePeriod and has not yet been delegated in DNS, then it will not yet have been - * billed for. Any update that causes the name to be delegated (such * as adding nameservers or - * removing a hold status) will cause the domain to convert to a normal create and be billed for - * accordingly. - * * @error {@link google.registry.flows.EppException.UnimplementedExtensionException} * @error {@link google.registry.flows.ResourceFlowUtils.AddRemoveSameValueException} * @error {@link google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException} @@ -177,16 +168,6 @@ public final class DomainUpdateFlow implements TransactionalFlow { AfterValidationParameters.newBuilder().setExistingDomain(existingDomain).build()); HistoryEntry historyEntry = buildHistoryEntry(existingDomain, now); DomainResource newDomain = performUpdate(command, existingDomain, now); - // If the new domain is in the sunrush add grace period and is now publishable to DNS because we - // have added nameserver or removed holds, we have to convert it to a standard add grace period. - if (newDomain.shouldPublishToDns()) { - for (GracePeriod gracePeriod : newDomain.getGracePeriods()) { - if (gracePeriod.isSunrushAddGracePeriod()) { - newDomain = convertSunrushAddToAdd(newDomain, gracePeriod, historyEntry, now); - break; // There can only be one sunrush add grace period. - } - } - } validateNewState(newDomain); dnsQueue.addDomainRefreshTask(targetId); ImmutableSet.Builder entitiesToSave = new ImmutableSet.Builder<>(); @@ -289,50 +270,6 @@ public final class DomainUpdateFlow implements TransactionalFlow { return domainBuilder.build(); } - private DomainResource convertSunrushAddToAdd( - DomainResource newDomain, GracePeriod gracePeriod, HistoryEntry historyEntry, DateTime now) { - // Cancel the billing event for the sunrush add and replace it with a new billing event. - BillingEvent.Cancellation billingEventCancellation = - BillingEvent.Cancellation.forGracePeriod(gracePeriod, historyEntry, targetId); - BillingEvent.OneTime billingEvent = - createBillingEventForSunrushConversion(newDomain, historyEntry, gracePeriod, now); - ofy().save().entities(billingEvent, billingEventCancellation); - // Modify the grace periods on the domain. - return newDomain.asBuilder() - .removeGracePeriod(gracePeriod) - .addGracePeriod(GracePeriod.forBillingEvent(GracePeriodStatus.ADD, billingEvent)) - .build(); - } - - private BillingEvent.OneTime createBillingEventForSunrushConversion( - DomainResource existingDomain, - HistoryEntry historyEntry, - GracePeriod sunrushAddGracePeriod, - DateTime now) { - // Compute the expiration time of the add grace period. We will not allow it to be after the - // sunrush add grace period expiration time (i.e. you can't get extra add grace period by - // setting a nameserver). - DateTime addGracePeriodExpirationTime = earliestOf( - now.plus(Registry.get(existingDomain.getTld()).getAddGracePeriodLength()), - sunrushAddGracePeriod.getExpirationTime()); - // Create a new billing event for the add grace period. Note that we do this even if it would - // occur at the same time as the sunrush add grace period, as the event time will differ - // between them. - BillingEvent.OneTime originalAddEvent = - ofy().load().key(sunrushAddGracePeriod.getOneTimeBillingEvent()).now(); - return new BillingEvent.OneTime.Builder() - .setReason(Reason.CREATE) - .setTargetId(targetId) - .setFlags(originalAddEvent.getFlags()) - .setClientId(sunrushAddGracePeriod.getClientId()) - .setCost(originalAddEvent.getCost()) - .setPeriodYears(originalAddEvent.getPeriodYears()) - .setEventTime(now) - .setBillingTime(addGracePeriodExpirationTime) - .setParent(historyEntry) - .build(); - } - private void validateRegistrantIsntBeingRemoved(Change change) throws EppException { if (change.getRegistrantContactId() != null && change.getRegistrantContactId().isEmpty()) { throw new MissingRegistrantException(); diff --git a/java/google/registry/flows/picker/FlowPicker.java b/java/google/registry/flows/picker/FlowPicker.java index c973537d8..87057a234 100644 --- a/java/google/registry/flows/picker/FlowPicker.java +++ b/java/google/registry/flows/picker/FlowPicker.java @@ -14,11 +14,8 @@ package google.registry.flows.picker; -import static google.registry.model.domain.launch.LaunchCreateExtension.CreateType.APPLICATION; - import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; -import com.google.common.collect.ImmutableSet; import com.google.common.collect.ImmutableTable; import com.google.common.collect.Table; import google.registry.flows.EppException; @@ -35,11 +32,6 @@ import google.registry.flows.contact.ContactTransferQueryFlow; import google.registry.flows.contact.ContactTransferRejectFlow; import google.registry.flows.contact.ContactTransferRequestFlow; import google.registry.flows.contact.ContactUpdateFlow; -import google.registry.flows.domain.DomainAllocateFlow; -import google.registry.flows.domain.DomainApplicationCreateFlow; -import google.registry.flows.domain.DomainApplicationDeleteFlow; -import google.registry.flows.domain.DomainApplicationInfoFlow; -import google.registry.flows.domain.DomainApplicationUpdateFlow; import google.registry.flows.domain.DomainCheckFlow; import google.registry.flows.domain.DomainClaimsCheckFlow; import google.registry.flows.domain.DomainCreateFlow; @@ -65,11 +57,8 @@ import google.registry.flows.session.LoginFlow; import google.registry.flows.session.LogoutFlow; import google.registry.model.contact.ContactCommand; import google.registry.model.domain.DomainCommand; -import google.registry.model.domain.allocate.AllocateCreateExtension; -import google.registry.model.domain.launch.ApplicationIdTargetExtension; import google.registry.model.domain.launch.LaunchCheckExtension; import google.registry.model.domain.launch.LaunchCheckExtension.CheckType; -import google.registry.model.domain.launch.LaunchCreateExtension; import google.registry.model.domain.launch.LaunchPhase; import google.registry.model.domain.rgp.RestoreCommand.RestoreOp; import google.registry.model.domain.rgp.RgpUpdateExtension; @@ -229,74 +218,6 @@ public class FlowPicker { return resourceCommand == null ? null : resourceCrudFlows.get(resourceCommand.getClass()); }}; - /** The domain allocate flow has a specific extension. */ - private static final FlowProvider ALLOCATE_FLOW_PROVIDER = - new FlowProvider() { - @Override - Class get( - EppInput eppInput, InnerCommand innerCommand, ResourceCommand resourceCommand) { - return (resourceCommand instanceof DomainCommand.Create - && eppInput.getSingleExtension(AllocateCreateExtension.class).isPresent()) - ? DomainAllocateFlow.class - : null; - } - }; - - private static final ImmutableSet LAUNCH_PHASES_DEFAULTING_TO_APPLICATION = - ImmutableSet.of(LaunchPhase.SUNRUSH, LaunchPhase.LANDRUSH); - - /** - * Application CRUD flows have an extension and are keyed on the type of their {@link - * ResourceCommand}. - */ - private static final FlowProvider APPLICATION_CRUD_FLOW_PROVIDER = - new FlowProvider() { - - private final Map, Class> - applicationFlows = - ImmutableMap.of( - DomainCommand.Create.class, DomainApplicationCreateFlow.class, - DomainCommand.Delete.class, DomainApplicationDeleteFlow.class, - DomainCommand.Info.class, DomainApplicationInfoFlow.class, - DomainCommand.Update.class, DomainApplicationUpdateFlow.class); - - @Override - Class get( - EppInput eppInput, InnerCommand innerCommand, ResourceCommand resourceCommand) { - if (eppInput.getSingleExtension(ApplicationIdTargetExtension.class).isPresent()) { - return applicationFlows.get(resourceCommand.getClass()); - } - Optional createExtension = - eppInput.getSingleExtension(LaunchCreateExtension.class); - // Return a flow if the type is APPLICATION. If the type is REGISTRATION, return null. - if (createExtension.isPresent()) { - LaunchPhase launchPhase = createExtension.get().getPhase(); - // has an optional type argument, that can take either "application" or - // "registration". - // https://tools.ietf.org/html/rfc8334#section-3.3.1 - // We get that type via createExtension.get().getCreateType() - // If it isn't given, the function returns null. - // In that case, we need to decide based on the TLD. For now we can't do that - so we - // TEMPORARILY decide as follows: - // landrush and sunrush phases will default to APPLICATION, because there's no possible - // registration for it. - // sunrise defaults to REGISTRATION because we're currenly launching start-date sunrise - // that uses direct registration. - // - // TODO(b/76095570): if createExtension.get().getCreateType() isn't explicitly given, - // we need to set it according to the TldState (which means we need to know the TLD and - // load the Registry - which will probably result in a big refactoring since we can use - // TldState information to pick the flow) - if (APPLICATION.equals(createExtension.get().getCreateType()) - || (createExtension.get().getCreateType() == null - && LAUNCH_PHASES_DEFAULTING_TO_APPLICATION.contains(launchPhase))) { - return applicationFlows.get(resourceCommand.getClass()); - } - } - return null; - } - }; - /** Transfer flows have an {@link InnerCommand} of type {@link Transfer}. */ private static final FlowProvider TRANSFER_FLOW_PROVIDER = new FlowProvider() { private final Table, TransferOp, Class> transferFlows = ImmutableTable @@ -327,8 +248,6 @@ public class FlowPicker { SESSION_FLOW_PROVIDER, POLL_FLOW_PROVIDER, DOMAIN_RESTORE_FLOW_PROVIDER, - ALLOCATE_FLOW_PROVIDER, - APPLICATION_CRUD_FLOW_PROVIDER, DOMAIN_CHECK_FLOW_PROVIDER, RESOURCE_CRUD_FLOW_PROVIDER, TRANSFER_FLOW_PROVIDER); diff --git a/java/google/registry/flows/poll/PollRequestFlow.java b/java/google/registry/flows/poll/PollRequestFlow.java index 970395d29..a5dc53250 100644 --- a/java/google/registry/flows/poll/PollRequestFlow.java +++ b/java/google/registry/flows/poll/PollRequestFlow.java @@ -76,7 +76,6 @@ public class PollRequestFlow implements Flow { .setMessageId(makePollMessageExternalId(pollMessage)) .build()) .setMultipleResData(pollMessage.getResponseData()) - .setExtensions(pollMessage.getResponseExtensions()) .build(); } diff --git a/java/google/registry/mapreduce/inputs/EppResourceBaseReader.java b/java/google/registry/mapreduce/inputs/EppResourceBaseReader.java index 4027b1956..ab4a7e35a 100644 --- a/java/google/registry/mapreduce/inputs/EppResourceBaseReader.java +++ b/java/google/registry/mapreduce/inputs/EppResourceBaseReader.java @@ -40,8 +40,7 @@ abstract class EppResourceBaseReader extends RetryingInputReaderThis can be empty, or any of {"ContactResource", "HostResource", "DomainBase"}. It will - * never contain "EppResource", "DomainResource" or "DomainApplication" since these aren't - * actual kinds in Datastore. + * never contain "EppResource" or "DomainResource" since these aren't actual kinds in Datastore. */ private final ImmutableSet filterKinds; diff --git a/java/google/registry/model/EntityClasses.java b/java/google/registry/model/EntityClasses.java index 158433866..e617fc856 100644 --- a/java/google/registry/model/EntityClasses.java +++ b/java/google/registry/model/EntityClasses.java @@ -20,12 +20,10 @@ import google.registry.model.common.Cursor; import google.registry.model.common.EntityGroupRoot; import google.registry.model.common.GaeUserIdConverter; import google.registry.model.contact.ContactResource; -import google.registry.model.domain.DomainApplication; import google.registry.model.domain.DomainBase; import google.registry.model.domain.DomainResource; import google.registry.model.domain.token.AllocationToken; import google.registry.model.host.HostResource; -import google.registry.model.index.DomainApplicationIndex; import google.registry.model.index.EppResourceIndex; import google.registry.model.index.EppResourceIndexBucket; import google.registry.model.index.ForeignKeyIndex; @@ -74,8 +72,6 @@ public final class EntityClasses { CommitLogMutation.class, ContactResource.class, Cursor.class, - DomainApplication.class, - DomainApplicationIndex.class, DomainBase.class, DomainResource.class, EntityGroupRoot.class, diff --git a/java/google/registry/model/EppResource.java b/java/google/registry/model/EppResource.java index e83ce96e9..5ead51429 100644 --- a/java/google/registry/model/EppResource.java +++ b/java/google/registry/model/EppResource.java @@ -51,7 +51,7 @@ import java.util.Set; import java.util.concurrent.ExecutionException; import org.joda.time.DateTime; -/** An EPP entity object (i.e. a domain, application, contact, or host). */ +/** An EPP entity object (i.e. a domain, contact, or host). */ public abstract class EppResource extends BackupGroupRoot implements Buildable { /** diff --git a/java/google/registry/model/EppResourceUtils.java b/java/google/registry/model/EppResourceUtils.java index 3de360c28..ea3be47c8 100644 --- a/java/google/registry/model/EppResourceUtils.java +++ b/java/google/registry/model/EppResourceUtils.java @@ -33,7 +33,6 @@ import google.registry.model.EppResource.BuilderWithTransferData; import google.registry.model.EppResource.ForeignKeyedEppResource; import google.registry.model.EppResource.ResourceWithTransferData; import google.registry.model.contact.ContactResource; -import google.registry.model.domain.DomainApplication; import google.registry.model.domain.DomainBase; import google.registry.model.eppcommon.StatusValue; import google.registry.model.index.ForeignKeyIndex; @@ -158,22 +157,6 @@ public final class EppResourceUtils { resource, latestOf(now, resource.getUpdateAutoTimestamp().getTimestamp()))); } - /** - * Returns the domain application with the given application id if it exists, or absent if it does - * not or is soft-deleted as of the given time. - */ - public static Optional loadDomainApplication( - String applicationId, DateTime now) { - DomainApplication application = - ofy().load().key(Key.create(DomainApplication.class, applicationId)).now(); - if (application == null || isAtOrAfter(now, application.getDeletionTime())) { - return Optional.empty(); - } - // Applications don't have any speculative changes that become effective later, so no need to - // clone forward in time. - return Optional.of(application); - } - /** * Checks multiple {@link EppResource} objects from Datastore by unique ids. * diff --git a/java/google/registry/model/OteAccountBuilder.java b/java/google/registry/model/OteAccountBuilder.java index 52997c497..51bb077b8 100644 --- a/java/google/registry/model/OteAccountBuilder.java +++ b/java/google/registry/model/OteAccountBuilder.java @@ -100,7 +100,6 @@ public final class OteAccountBuilder { private final ImmutableMap clientIdToTld; private final Registry sunriseTld; - private final Registry landrushTld; private final Registry gaTld; private final Registry eapTld; private final ImmutableList.Builder contactsBuilder = @@ -117,8 +116,6 @@ public final class OteAccountBuilder { sunriseTld = createTld( baseClientId + "-sunrise", TldState.START_DATE_SUNRISE, null, null, null, false, 0); - landrushTld = - createTld(baseClientId + "-landrush", TldState.LANDRUSH, null, null, null, false, 1); gaTld = createTld( baseClientId + "-ga", @@ -260,7 +257,7 @@ public final class OteAccountBuilder { private void saveAllEntities() { ofy().assertInTransaction(); - ImmutableList registries = ImmutableList.of(sunriseTld, landrushTld, gaTld, eapTld); + ImmutableList registries = ImmutableList.of(sunriseTld, gaTld, eapTld); ImmutableList contacts = contactsBuilder.build(); if (!replaceExisting) { @@ -368,7 +365,7 @@ public final class OteAccountBuilder { baseClientId); return new ImmutableMap.Builder() .put(baseClientId + "-1", baseClientId + "-sunrise") - .put(baseClientId + "-2", baseClientId + "-landrush") + // The -2 registrar no longer exists because landrush no longer exists. .put(baseClientId + "-3", baseClientId + "-ga") .put(baseClientId + "-4", baseClientId + "-ga") .put(baseClientId + "-5", baseClientId + "-eap") diff --git a/java/google/registry/model/OteStats.java b/java/google/registry/model/OteStats.java index 55301624b..2822412a1 100644 --- a/java/google/registry/model/OteStats.java +++ b/java/google/registry/model/OteStats.java @@ -102,12 +102,6 @@ public class OteStats { CONTACT_TRANSFER_REJECTS(0, equalTo(Type.CONTACT_TRANSFER_REJECT)), CONTACT_TRANSFER_REQUESTS(0, equalTo(Type.CONTACT_TRANSFER_REQUEST)), CONTACT_UPDATES(0, equalTo(Type.CONTACT_UPDATE)), - DOMAIN_APPLICATION_CREATES(0, equalTo(Type.DOMAIN_APPLICATION_CREATE)), - DOMAIN_APPLICATION_CREATES_LANDRUSH( - 0, equalTo(Type.DOMAIN_APPLICATION_CREATE), IS_SUNRISE.negate()), - DOMAIN_APPLICATION_CREATES_SUNRISE(0, equalTo(Type.DOMAIN_APPLICATION_CREATE), IS_SUNRISE), - DOMAIN_APPLICATION_DELETES(0, equalTo(Type.DOMAIN_APPLICATION_DELETE)), - DOMAIN_APPLICATION_UPDATES(0, equalTo(Type.DOMAIN_APPLICATION_UPDATE)), DOMAIN_AUTORENEWS(0, equalTo(Type.DOMAIN_AUTORENEW)), DOMAIN_CREATES(0, equalTo(Type.DOMAIN_CREATE)), DOMAIN_CREATES_ASCII(1, equalTo(Type.DOMAIN_CREATE), IS_IDN.negate()), diff --git a/java/google/registry/model/billing/BillingEvent.java b/java/google/registry/model/billing/BillingEvent.java index 934eefd95..1440977dc 100644 --- a/java/google/registry/model/billing/BillingEvent.java +++ b/java/google/registry/model/billing/BillingEvent.java @@ -70,6 +70,9 @@ public abstract class BillingEvent extends ImmutableObject ALLOCATION, ANCHOR_TENANT, AUTO_RENEW, + /** + * Landrush billing events are historical only and are no longer created. + */ LANDRUSH, /** * This flag is used on create {@link OneTime} billing events for domains that were reserved. diff --git a/java/google/registry/model/domain/DomainApplication.java b/java/google/registry/model/domain/DomainApplication.java deleted file mode 100644 index 9acf7f5df..000000000 --- a/java/google/registry/model/domain/DomainApplication.java +++ /dev/null @@ -1,151 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.model.domain; - -import static google.registry.util.CollectionUtils.nullToEmptyImmutableCopy; - -import com.google.common.collect.ImmutableList; -import com.googlecode.objectify.annotation.EntitySubclass; -import google.registry.model.annotations.ExternalMessagingName; -import google.registry.model.domain.launch.ApplicationStatus; -import google.registry.model.domain.launch.LaunchPhase; -import google.registry.model.eppcommon.Trid; -import google.registry.model.smd.EncodedSignedMark; -import java.util.List; -import org.joda.money.Money; -import org.joda.time.DateTime; - -/** An application to create a domain. */ -@EntitySubclass(index = true) -@ExternalMessagingName("application") -public class DomainApplication extends DomainBase { - - /** - * The transaction id of the EPP command that created this application. This is saved off so that - * we can generate the poll message communicating the application result once it is rejected or - * allocated. - * - *

This field may be null for applications that were created before the field was added. - */ - Trid creationTrid; - - /** - * The phase which this application is registered for. We store this only so we can return it back - * to the user on info commands. - */ - LaunchPhase phase; - - /** The requested registration period. */ - Period period; - - /** The current status of this application. */ - ApplicationStatus applicationStatus; - - /** The encoded signed marks which were asserted when this application was created. */ - List encodedSignedMarks; - - /** The amount paid at auction for the right to register the domain. Used only for reporting. */ - Money auctionPrice; - - @Override - public String getFullyQualifiedDomainName() { - return fullyQualifiedDomainName; - } - - public Trid getCreationTrid() { - return creationTrid; - } - - public LaunchPhase getPhase() { - return phase; - } - - public Period getPeriod() { - return period; - } - - public ApplicationStatus getApplicationStatus() { - return applicationStatus; - } - - public ImmutableList getEncodedSignedMarks() { - return nullToEmptyImmutableCopy(encodedSignedMarks); - } - - public Money getAuctionPrice() { - return auctionPrice; - } - - /** - * The application id is the repoId. - */ - @Override - public String getForeignKey() { - return getRepoId(); - } - - /** This is a no-op and should never be called on an application explicitly. */ - @Deprecated - @Override - public DomainApplication cloneProjectedAtTime(DateTime now) { - // Applications have no grace periods and can't be transferred, so there is nothing to project. - return this; - } - - @Override - public Builder asBuilder() { - return new Builder(clone(this)); - } - - /** A builder for constructing {@link DomainApplication}, since it is immutable. */ - public static class Builder extends DomainBase.Builder { - - public Builder() {} - - private Builder(DomainApplication instance) { - super(instance); - } - - public Builder setCreationTrid(Trid creationTrid) { - getInstance().creationTrid = creationTrid; - return this; - } - - public Builder setPhase(LaunchPhase phase) { - getInstance().phase = phase; - return this; - } - - public Builder setPeriod(Period period) { - getInstance().period = period; - return this; - } - - public Builder setApplicationStatus(ApplicationStatus applicationStatus) { - getInstance().applicationStatus = applicationStatus; - return this; - } - - public Builder setEncodedSignedMarks(ImmutableList encodedSignedMarks) { - getInstance().encodedSignedMarks = encodedSignedMarks; - return this; - } - - public Builder setAuctionPrice(Money auctionPrice) { - getInstance().auctionPrice = auctionPrice; - return this; - } - } -} diff --git a/java/google/registry/model/domain/DomainBase.java b/java/google/registry/model/domain/DomainBase.java index 110cc2a92..e144ea90a 100644 --- a/java/google/registry/model/domain/DomainBase.java +++ b/java/google/registry/model/domain/DomainBase.java @@ -50,7 +50,8 @@ import java.util.Objects; import java.util.Set; import java.util.function.Predicate; -/** Shared base class for {@link DomainResource} and {@link DomainApplication}. */ +/** Base class for {@link DomainResource}. */ +// TODO(b/121028829): Squash DomainResource into this. @ReportedOn @Entity public abstract class DomainBase extends EppResource { diff --git a/java/google/registry/model/domain/DomainResource.java b/java/google/registry/model/domain/DomainResource.java index 510d75a76..054ff70e9 100644 --- a/java/google/registry/model/domain/DomainResource.java +++ b/java/google/registry/model/domain/DomainResource.java @@ -106,26 +106,13 @@ public class DomainResource extends DomainBase Set gracePeriods; /** - * The id of the signed mark that was used to create the sunrise application for this domain. - * Will only be populated for domains allocated from a sunrise application. + * The id of the signed mark that was used to create this domain in sunrise. + * + *

Will only be populated for domains created in sunrise. */ @IgnoreSave(IfNull.class) String smdId; - /** - * The time that the application used to allocate this domain was created. Will only be populated - * for domains allocated from an application. - */ - @IgnoreSave(IfNull.class) - DateTime applicationTime; - - /** - * A key to the application used to allocate this domain. Will only be populated for domains - * allocated from an application. - */ - @IgnoreSave(IfNull.class) - Key application; - /** Data about any pending or past transfers on this domain. */ TransferData transferData; @@ -164,14 +151,6 @@ public class DomainResource extends DomainBase return smdId; } - public DateTime getApplicationTime() { - return applicationTime; - } - - public Key getApplication() { - return application; - } - @Override public final TransferData getTransferData() { return Optional.ofNullable(transferData).orElse(TransferData.EMPTY); @@ -426,16 +405,6 @@ public class DomainResource extends DomainBase return this; } - public Builder setApplicationTime(DateTime applicationTime) { - getInstance().applicationTime = applicationTime; - return this; - } - - public Builder setApplication(Key application) { - getInstance().application = application; - return this; - } - public Builder setGracePeriods(ImmutableSet gracePeriods) { getInstance().gracePeriods = gracePeriods; return this; diff --git a/java/google/registry/model/domain/GracePeriod.java b/java/google/registry/model/domain/GracePeriod.java index 0e85435e8..03d5102bd 100644 --- a/java/google/registry/model/domain/GracePeriod.java +++ b/java/google/registry/model/domain/GracePeriod.java @@ -59,12 +59,7 @@ public class GracePeriod extends ImmutableObject { Key billingEventRecurring = null; public GracePeriodStatus getType() { - // NB: We implicitly convert SUNRUSH_ADD to ADD, since they should be functionally equivalent. - return type == GracePeriodStatus.SUNRUSH_ADD ? GracePeriodStatus.ADD : type; - } - - public boolean isSunrushAddGracePeriod() { - return type == GracePeriodStatus.SUNRUSH_ADD; + return type; } public DateTime getExpirationTime() { diff --git a/java/google/registry/model/domain/allocate/AllocateCreateExtension.java b/java/google/registry/model/domain/allocate/AllocateCreateExtension.java deleted file mode 100644 index be0af12e2..000000000 --- a/java/google/registry/model/domain/allocate/AllocateCreateExtension.java +++ /dev/null @@ -1,83 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.model.domain.allocate; - -import google.registry.model.ImmutableObject; -import google.registry.model.domain.launch.LaunchNotice; -import google.registry.model.eppinput.EppInput.CommandExtension; -import javax.xml.bind.annotation.XmlRootElement; -import org.joda.time.DateTime; - -/** - * An XML data object that represents an allocate extension that will be present on EPP commands to - * allocate a domain from an application. - * - *

This object holds XML data which JAXB will unmarshal from an EPP domain create command - * extension. The XML will have the following enclosing structure: - * - *

 {@code
- *   
- *     
- *       
- *         
- *       
- *       
- *         
- *           
- *         
- *       
- *     
- *   
- * } 
- * - * @see CommandExtension - */ -@XmlRootElement(name = "create") -public class AllocateCreateExtension extends ImmutableObject implements CommandExtension { - - /** Holds the ROID of the application that was used to allocate this domain. */ - String applicationRoid; - - /** The time that the application was created. */ - DateTime applicationTime; - - /** - * Signed mark identifier for this create. Only present when allocating a domain from a sunrise - * application. - */ - String smdId; - - /** - * The claims notice for this create. Only present when allocating a domain from a landrush - * application that matches a pre-registered mark in the TMCH. - */ - LaunchNotice notice; - - public String getApplicationRoid() { - return applicationRoid; - } - - public DateTime getApplicationTime() { - return applicationTime; - } - - public String getSmdId() { - return smdId; - } - - public LaunchNotice getNotice() { - return notice; - } -} diff --git a/java/google/registry/model/domain/allocate/package-info.java b/java/google/registry/model/domain/allocate/package-info.java deleted file mode 100644 index ba6aa8848..000000000 --- a/java/google/registry/model/domain/allocate/package-info.java +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -@XmlSchema( - namespace = "urn:google:params:xml:ns:allocate-1.0", - xmlns = @XmlNs(prefix = "allocate", namespaceURI = "urn:google:params:xml:ns:allocate-1.0"), - elementFormDefault = XmlNsForm.QUALIFIED) -@XmlAccessorType(XmlAccessType.FIELD) -@XmlJavaTypeAdapter(UtcDateTimeAdapter.class) -package google.registry.model.domain.allocate; - -import google.registry.xml.UtcDateTimeAdapter; -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlNs; -import javax.xml.bind.annotation.XmlNsForm; -import javax.xml.bind.annotation.XmlSchema; -import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; - diff --git a/java/google/registry/model/domain/launch/ApplicationIdTargetExtension.java b/java/google/registry/model/domain/launch/ApplicationIdTargetExtension.java deleted file mode 100644 index 6708c153e..000000000 --- a/java/google/registry/model/domain/launch/ApplicationIdTargetExtension.java +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.model.domain.launch; - -import google.registry.model.eppinput.EppInput.CommandExtension; - -/** Marker interface for EPP extensions which override the EPP notion of id with their own. */ -public interface ApplicationIdTargetExtension extends CommandExtension { - /** Get the application id to use as the resource id for commands using this extension. */ - String getApplicationId(); -} diff --git a/java/google/registry/model/domain/launch/ApplicationStatus.java b/java/google/registry/model/domain/launch/ApplicationStatus.java deleted file mode 100644 index 5a96948bd..000000000 --- a/java/google/registry/model/domain/launch/ApplicationStatus.java +++ /dev/null @@ -1,58 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.model.domain.launch; - -import static com.google.common.base.CaseFormat.LOWER_CAMEL; -import static com.google.common.base.CaseFormat.UPPER_UNDERSCORE; - -import google.registry.model.translators.EnumToAttributeAdapter; -import google.registry.model.translators.EnumToAttributeAdapter.EppEnum; -import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; - -/** - * Represents the EPP application status. - * - *

These values are never read from a command and only used in responses, so, we don't need to - * model anything we don't output. We don't model the CUSTOM status because we don't use it. This - * allows us to also avoid modeling the "name" attribute which is only used with CUSTOM. We don't - * model the "lang" attribute because we only support English and that's the default. - * - *

Given all of this, we can use {@link EnumToAttributeAdapter} to make this code very simple. - * - * @see - * Launch Phase Mapping for EPP - Status Values - */ -@XmlJavaTypeAdapter(EnumToAttributeAdapter.class) -public enum ApplicationStatus implements EppEnum { - ALLOCATED, - INVALID, - PENDING_ALLOCATION, - PENDING_VALIDATION, - REJECTED, - VALIDATED; - - @Override - public String getXmlName() { - return UPPER_UNDERSCORE.to(LOWER_CAMEL, name()); - } - - /** - * Returns true if this status is a final status - that is, it should not transition to any other - * application status after this one. - */ - public boolean isFinalStatus() { - return ALLOCATED.equals(this) || REJECTED.equals(this); - } -} diff --git a/java/google/registry/model/domain/launch/LaunchCreateExtension.java b/java/google/registry/model/domain/launch/LaunchCreateExtension.java index 38debd1ef..a834bcffb 100644 --- a/java/google/registry/model/domain/launch/LaunchCreateExtension.java +++ b/java/google/registry/model/domain/launch/LaunchCreateExtension.java @@ -60,6 +60,9 @@ public class LaunchCreateExtension extends LaunchExtension implements CommandExt /** * A Launch Application refers to a registration made during a launch phase when the server * accepts multiple applications for the same domain name. + * + *

This is no longer used, but is retained so incoming commands with this value error out + * with a descriptive message rather than failing XML marshalling. */ @XmlEnumValue("application") APPLICATION, diff --git a/java/google/registry/model/domain/launch/LaunchCreateResponseExtension.java b/java/google/registry/model/domain/launch/LaunchCreateResponseExtension.java deleted file mode 100644 index c7a5c6ead..000000000 --- a/java/google/registry/model/domain/launch/LaunchCreateResponseExtension.java +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.model.domain.launch; - -import google.registry.model.eppoutput.EppResponse.ResponseExtension; -import javax.xml.bind.annotation.XmlRootElement; -import javax.xml.bind.annotation.XmlType; - -/** - * An XML data object that represents a launch extension that may be present on the response to EPP - * domain application create commands. - */ -@XmlRootElement(name = "creData") -@XmlType(propOrder = {"phase", "applicationId"}) -public class LaunchCreateResponseExtension extends LaunchExtension implements ResponseExtension { - /** Builder for {@link LaunchCreateResponseExtension}. */ - public static class Builder - extends LaunchExtension.Builder {} -} diff --git a/java/google/registry/model/domain/launch/LaunchDeleteExtension.java b/java/google/registry/model/domain/launch/LaunchDeleteExtension.java index 6f01efafb..6e64663c2 100644 --- a/java/google/registry/model/domain/launch/LaunchDeleteExtension.java +++ b/java/google/registry/model/domain/launch/LaunchDeleteExtension.java @@ -21,5 +21,4 @@ import javax.xml.bind.annotation.XmlRootElement; * commands. */ @XmlRootElement(name = "delete") -public class LaunchDeleteExtension - extends LaunchExtension implements ApplicationIdTargetExtension {} +public class LaunchDeleteExtension extends LaunchExtension {} diff --git a/java/google/registry/model/domain/launch/LaunchExtension.java b/java/google/registry/model/domain/launch/LaunchExtension.java index 031c7a66e..4b62c427a 100644 --- a/java/google/registry/model/domain/launch/LaunchExtension.java +++ b/java/google/registry/model/domain/launch/LaunchExtension.java @@ -16,7 +16,6 @@ package google.registry.model.domain.launch; import google.registry.model.Buildable.GenericBuilder; import google.registry.model.ImmutableObject; -import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlTransient; /** @@ -29,29 +28,17 @@ public abstract class LaunchExtension extends ImmutableObject { /** The launch phase that this domain application was created in. */ LaunchPhase phase; - /** Application ID of the domain application. */ - @XmlElement(name = "applicationID") - String applicationId; - public LaunchPhase getPhase() { return phase; } - public String getApplicationId() { - return applicationId; - } - /** A builder for constructing {@link LaunchExtension}. */ public static class Builder> extends GenericBuilder { + public B setPhase(LaunchPhase phase) { getInstance().phase = phase; return thisCastToDerived(); } - - public B setApplicationId(String applicationId) { - getInstance().applicationId = applicationId; - return thisCastToDerived(); - } } } diff --git a/java/google/registry/model/domain/launch/LaunchInfoExtension.java b/java/google/registry/model/domain/launch/LaunchInfoExtension.java index f4fa8d4ca..3076a122a 100644 --- a/java/google/registry/model/domain/launch/LaunchInfoExtension.java +++ b/java/google/registry/model/domain/launch/LaunchInfoExtension.java @@ -22,8 +22,7 @@ import javax.xml.bind.annotation.XmlRootElement; * commands. */ @XmlRootElement(name = "info") -public class LaunchInfoExtension - extends LaunchExtension implements ApplicationIdTargetExtension { +public class LaunchInfoExtension extends LaunchExtension { /** Whether or not to include mark information in the response. */ @XmlAttribute diff --git a/java/google/registry/model/domain/launch/LaunchInfoResponseExtension.java b/java/google/registry/model/domain/launch/LaunchInfoResponseExtension.java deleted file mode 100644 index 1b505593d..000000000 --- a/java/google/registry/model/domain/launch/LaunchInfoResponseExtension.java +++ /dev/null @@ -1,56 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.model.domain.launch; - -import com.google.common.collect.ImmutableList; -import com.googlecode.objectify.annotation.Embed; -import google.registry.model.eppoutput.EppResponse.ResponseExtension; -import google.registry.model.mark.Mark; -import java.util.List; -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlRootElement; -import javax.xml.bind.annotation.XmlType; - -/** - * An XML data object that represents a launch extension that may be present on the response to EPP - * domain application info commands. - */ -@Embed -@XmlRootElement(name = "infData") -@XmlType(propOrder = { "phase", "applicationId", "applicationStatus", "marks"}) -public class LaunchInfoResponseExtension extends LaunchExtension implements ResponseExtension { - - /** The current status of this application. */ - @XmlElement(name = "status") - ApplicationStatus applicationStatus; - - /** The marks associated with this application. */ - @XmlElement(name = "mark", namespace = "urn:ietf:params:xml:ns:mark-1.0") - List marks; - - /** Builder for {@link LaunchInfoResponseExtension}. */ - public static class Builder - extends LaunchExtension.Builder { - public Builder setApplicationStatus(ApplicationStatus applicationStatus) { - getInstance().applicationStatus = applicationStatus; - return this; - } - - public Builder setMarks(ImmutableList marks) { - getInstance().marks = marks; - return this; - } - } -} diff --git a/java/google/registry/model/domain/launch/LaunchPhase.java b/java/google/registry/model/domain/launch/LaunchPhase.java index ba0accdae..c00b3e6ee 100644 --- a/java/google/registry/model/domain/launch/LaunchPhase.java +++ b/java/google/registry/model/domain/launch/LaunchPhase.java @@ -14,15 +14,10 @@ package google.registry.model.domain.launch; -import static com.google.common.base.CaseFormat.LOWER_CAMEL; -import static com.google.common.base.CaseFormat.UPPER_UNDERSCORE; -import static google.registry.util.TypeUtils.getTypesafeEnumMapping; import static java.util.Objects.hash; -import com.google.common.collect.ImmutableMap; import com.googlecode.objectify.annotation.Embed; import google.registry.model.ImmutableObject; -import java.util.Map.Entry; import java.util.Objects; import javax.xml.bind.annotation.XmlAttribute; import javax.xml.bind.annotation.XmlValue; @@ -48,9 +43,9 @@ import javax.xml.bind.annotation.XmlValue; * we will return an error if it's the wrong phase (or if the marks are invalid) even though we * didn't require them. * - *

This is OK (?) because the Anchor Tenants field is set internally and manually.. The person - * who sets it is the one that needs to make sure the domain isn't a trademark and that the fields - * are correct. + *

This is OK (?) because the Anchor Tenants field is set internally and manually. The person who + * sets it is the one that needs to make sure the domain isn't a trademark and that the fields are + * correct. */ @Embed public class LaunchPhase extends ImmutableObject { @@ -58,61 +53,33 @@ public class LaunchPhase extends ImmutableObject { /** * The phase during which trademark holders can submit registrations or applications with * trademark information that can be validated by the server. - * - * This phase works for both start-date and end-data sunrise. - * - * TODO(b/74006379): maybe make this work for sunrush phase? */ - public static final LaunchPhase SUNRISE = create("sunrise", null); - - /** - * A post-Sunrise phase when non-trademark holders are allowed to register domain names with steps - * taken to address a large volume of initial registrations. - */ - public static final LaunchPhase LANDRUSH = create("landrush", null); - - /** A combined sunrise/landrush phase. */ - public static final LaunchPhase SUNRUSH = create("sunrise", "landrush"); + public static final LaunchPhase SUNRISE = create("sunrise"); /** * The Trademark Claims phase, as defined in the TMCH Functional Specification, in which a Claims * Notice must be displayed to a prospective registrant of a domain name that matches trademarks. */ - public static final LaunchPhase CLAIMS = create("claims", null); + public static final LaunchPhase CLAIMS = create("claims"); /** A post-launch phase that is also referred to as "steady state". */ - public static final LaunchPhase OPEN = create("open", null); - - /** A custom server launch phase that is defined using the "name" attribute. */ - public static final LaunchPhase CUSTOM = create("custom", null); - - private static final ImmutableMap LAUNCH_PHASES = initEnumMapping(); - - /** - * Returns a map of the static final fields to their values, case-converted. - */ - private static ImmutableMap initEnumMapping() { - ImmutableMap.Builder builder = new ImmutableMap.Builder<>(); - for (Entry entry : getTypesafeEnumMapping(LaunchPhase.class).entrySet()) { - builder.put(UPPER_UNDERSCORE.to(LOWER_CAMEL, entry.getKey()), entry.getValue()); - } - return builder.build(); - } + public static final LaunchPhase OPEN = create("open"); /** Private create function for the typesafe enum pattern. */ - public static LaunchPhase create(String phase, String subphase) { + public static LaunchPhase create(String phase) { LaunchPhase instance = new LaunchPhase(); instance.phase = phase; - instance.subphase = subphase; return instance; } - @XmlValue - String phase; + @XmlValue String phase; /** * Holds the name of a custom phase if the main phase is "custom", or a sub-phase for all other * values. + * + *

This is currently unused, but is retained so that incoming XMLs that include a subphase can + * have it be reflected back. */ @XmlAttribute(name = "name") String subphase; @@ -121,14 +88,6 @@ public class LaunchPhase extends ImmutableObject { return phase; } - public String getSubphase() { - return subphase; - } - - public static LaunchPhase fromValue(String value) { - return LAUNCH_PHASES.get(value); - } - /** A special equals implementation that only considers the string value. */ @Override public boolean equals(Object other) { diff --git a/java/google/registry/model/domain/launch/LaunchUpdateExtension.java b/java/google/registry/model/domain/launch/LaunchUpdateExtension.java index 56bdaad6b..42956b467 100644 --- a/java/google/registry/model/domain/launch/LaunchUpdateExtension.java +++ b/java/google/registry/model/domain/launch/LaunchUpdateExtension.java @@ -21,5 +21,4 @@ import javax.xml.bind.annotation.XmlRootElement; * commands. */ @XmlRootElement(name = "update") -public class LaunchUpdateExtension - extends LaunchExtension implements ApplicationIdTargetExtension {} +public class LaunchUpdateExtension extends LaunchExtension {} diff --git a/java/google/registry/model/domain/rgp/GracePeriodStatus.java b/java/google/registry/model/domain/rgp/GracePeriodStatus.java index 91aae76ba..62f836e37 100644 --- a/java/google/registry/model/domain/rgp/GracePeriodStatus.java +++ b/java/google/registry/model/domain/rgp/GracePeriodStatus.java @@ -14,8 +14,6 @@ package google.registry.model.domain.rgp; -import static com.google.common.base.Predicates.equalTo; -import static com.google.common.base.Predicates.not; import static com.google.common.collect.ImmutableMap.toImmutableMap; import com.google.common.collect.ImmutableMap; @@ -77,18 +75,6 @@ public enum GracePeriodStatus implements EppEnum { */ PENDING_RESTORE("pendingRestore"), - /** - * This grace period is provided after the allocation of a domain name that was applied for during - * sunrise or landrush. If the domain name is deleted by the registrar during this period, the - * registry provides a credit to the registrar for the cost of the registration. This grace period - * is cancelled when any nameservers are set on the domain, at which point it converts to a - * standard add grace period. - * - *

Note that this status shows up as "addPeriod" in XML, which is the same as the add grace - * period. This is done deliberately so as not to break the standard EPP schema. - */ - SUNRUSH_ADD("addPeriod"), - /** * This grace period is provided after the successful transfer of domain name registration * sponsorship from one registrar to another registrar. If the domain name is deleted by the new @@ -100,7 +86,6 @@ public enum GracePeriodStatus implements EppEnum { /** Provide a quick lookup of GracePeriodStatus from XML name. */ private static final ImmutableMap XML_NAME_TO_GRACE_PERIOD_STATUS = Stream.of(GracePeriodStatus.values()) - .filter(not(equalTo(SUNRUSH_ADD))) .collect( toImmutableMap( (GracePeriodStatus gracePeriodStatus) -> gracePeriodStatus.xmlName, diff --git a/java/google/registry/model/eppcommon/ProtocolDefinition.java b/java/google/registry/model/eppcommon/ProtocolDefinition.java index e59e985f6..eb2ddf2b7 100644 --- a/java/google/registry/model/eppcommon/ProtocolDefinition.java +++ b/java/google/registry/model/eppcommon/ProtocolDefinition.java @@ -19,7 +19,6 @@ import static com.google.common.collect.Maps.uniqueIndex; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; -import google.registry.model.domain.allocate.AllocateCreateExtension; import google.registry.model.domain.fee06.FeeCheckCommandExtensionV06; import google.registry.model.domain.fee06.FeeCheckResponseExtensionV06; import google.registry.model.domain.fee11.FeeCheckCommandExtensionV11; @@ -55,7 +54,6 @@ public class ProtocolDefinition { FEE_0_6(FeeCheckCommandExtensionV06.class, FeeCheckResponseExtensionV06.class, true), FEE_0_11(FeeCheckCommandExtensionV11.class, FeeCheckResponseExtensionV11.class, true), FEE_0_12(FeeCheckCommandExtensionV12.class, FeeCheckResponseExtensionV12.class, true), - ALLOCATE_1_0(AllocateCreateExtension.class, null, false), METADATA_1_0(MetadataExtension.class, null, false); private final Class commandExtensionClass; diff --git a/java/google/registry/model/eppcommon/StatusValue.java b/java/google/registry/model/eppcommon/StatusValue.java index 2eb28208c..6f0677aa8 100644 --- a/java/google/registry/model/eppcommon/StatusValue.java +++ b/java/google/registry/model/eppcommon/StatusValue.java @@ -21,7 +21,6 @@ import static com.google.common.base.Strings.nullToEmpty; import com.google.common.collect.ImmutableSet; import google.registry.model.EppResource; import google.registry.model.contact.ContactResource; -import google.registry.model.domain.DomainApplication; import google.registry.model.domain.DomainResource; import google.registry.model.host.HostResource; import google.registry.model.translators.EnumToAttributeAdapter.EppEnum; @@ -77,9 +76,9 @@ public enum StatusValue implements EppEnum { /** * A status for a resource undergoing asynchronous creation. * - *

We only use this for unallocated applications. + *

This status is here for completeness, but it is not used by our system. */ - PENDING_CREATE(AllowedOn.APPLICATIONS), + PENDING_CREATE(AllowedOn.NONE), /** * A status for a resource indicating that deletion has been requested but has not yet happened. @@ -92,18 +91,16 @@ public enum StatusValue implements EppEnum { * Otherwise, domains go through an extended deletion process, consisting of a 30-day redemption * grace period followed by a 5-day "pending delete" period before they are actually 100% deleted. * These domains have the PENDING_DELETE status throughout that 35-day window. - * - *

Applications are deleted synchronously and never have this status. */ - PENDING_DELETE(AllowedOn.ALL_BUT_APPLICATIONS), + PENDING_DELETE(AllowedOn.ALL), /** * A status for a resource with an unresolved transfer request. * - *

Applications can't be transferred. Hosts transfer indirectly via superordinate domain. + *

Hosts transfer indirectly via superordinate domain. */ // TODO(b/34844887): Remove PENDING_TRANSFER from all host resources and forbid it here. - PENDING_TRANSFER(AllowedOn.ALL_BUT_APPLICATIONS), + PENDING_TRANSFER(AllowedOn.ALL), /** * A status for a resource undergoing an asynchronous update. @@ -130,11 +127,9 @@ public enum StatusValue implements EppEnum { /** Enum to help clearly list which resource types a status value is allowed to be present on. */ private enum AllowedOn { - ALL(ContactResource.class, DomainApplication.class, DomainResource.class, HostResource.class), + ALL(ContactResource.class, DomainResource.class, HostResource.class), NONE, - DOMAINS(DomainResource.class), - APPLICATIONS(DomainApplication.class), - ALL_BUT_APPLICATIONS(ContactResource.class, DomainResource.class, HostResource.class); + DOMAINS(DomainResource.class); private final ImmutableSet> classes; diff --git a/java/google/registry/model/eppinput/EppInput.java b/java/google/registry/model/eppinput/EppInput.java index 5d127462d..8f46d0854 100644 --- a/java/google/registry/model/eppinput/EppInput.java +++ b/java/google/registry/model/eppinput/EppInput.java @@ -23,7 +23,6 @@ import com.google.common.collect.ImmutableSet; import google.registry.model.ImmutableObject; import google.registry.model.contact.ContactCommand; import google.registry.model.domain.DomainCommand; -import google.registry.model.domain.allocate.AllocateCreateExtension; import google.registry.model.domain.fee06.FeeCheckCommandExtensionV06; import google.registry.model.domain.fee06.FeeCreateCommandExtensionV06; import google.registry.model.domain.fee06.FeeInfoCommandExtensionV06; @@ -328,8 +327,6 @@ public class EppInput extends ImmutableObject { /** Zero or more command extensions. */ @XmlElementRefs({ - // allocate create extension - @XmlElementRef(type = AllocateCreateExtension.class), // allocation token extension @XmlElementRef(type = AllocationTokenExtension.class), // fee extension version 0.6 diff --git a/java/google/registry/model/eppoutput/EppResponse.java b/java/google/registry/model/eppoutput/EppResponse.java index 9a0d4cc00..c0c37d328 100644 --- a/java/google/registry/model/eppoutput/EppResponse.java +++ b/java/google/registry/model/eppoutput/EppResponse.java @@ -43,8 +43,6 @@ import google.registry.model.domain.fee12.FeeRenewResponseExtensionV12; import google.registry.model.domain.fee12.FeeTransferResponseExtensionV12; import google.registry.model.domain.fee12.FeeUpdateResponseExtensionV12; import google.registry.model.domain.launch.LaunchCheckResponseExtension; -import google.registry.model.domain.launch.LaunchCreateResponseExtension; -import google.registry.model.domain.launch.LaunchInfoResponseExtension; import google.registry.model.domain.rgp.RgpInfoExtension; import google.registry.model.domain.secdns.SecDnsInfoExtension; import google.registry.model.eppcommon.Trid; @@ -139,8 +137,6 @@ public class EppResponse extends ImmutableObject implements ResponseOrGreeting { @XmlElementRef(type = FeeTransferResponseExtensionV12.class), @XmlElementRef(type = FeeUpdateResponseExtensionV12.class), @XmlElementRef(type = LaunchCheckResponseExtension.class), - @XmlElementRef(type = LaunchCreateResponseExtension.class), - @XmlElementRef(type = LaunchInfoResponseExtension.class), @XmlElementRef(type = RgpInfoExtension.class), @XmlElementRef(type = SecDnsInfoExtension.class) }) @XmlElementWrapper(name = "extension") diff --git a/java/google/registry/model/index/DomainApplicationIndex.java b/java/google/registry/model/index/DomainApplicationIndex.java deleted file mode 100644 index 7440df66f..000000000 --- a/java/google/registry/model/index/DomainApplicationIndex.java +++ /dev/null @@ -1,137 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.model.index; - -import static com.google.common.base.Preconditions.checkArgument; -import static com.google.common.base.Strings.isNullOrEmpty; -import static google.registry.model.ofy.ObjectifyService.ofy; -import static google.registry.util.CollectionUtils.isNullOrEmpty; - -import com.google.common.collect.ImmutableSet; -import com.googlecode.objectify.Key; -import com.googlecode.objectify.annotation.Entity; -import com.googlecode.objectify.annotation.Id; -import google.registry.model.BackupGroupRoot; -import google.registry.model.annotations.ReportedOn; -import google.registry.model.domain.DomainApplication; -import google.registry.util.CollectionUtils; -import java.util.Set; -import javax.annotation.Nullable; -import org.joda.time.DateTime; - -/** - * Entity for tracking all domain applications with a given fully qualified domain name. - * - *

Since this resource is always kept up to date as additional domain applications are created, - * it is never necessary to query them explicitly from Datastore. - */ -@ReportedOn -@Entity -public class DomainApplicationIndex extends BackupGroupRoot { - - @Id - String fullyQualifiedDomainName; - - /** - * A set of all domain applications with this fully qualified domain name. Never null or empty. - * - *

Although this stores {@link Key}s it is named "references" for historical reasons. - */ - Set> references; - - /** Returns a cloned list of all keys on this index. */ - public ImmutableSet> getKeys() { - return ImmutableSet.copyOf(references); - } - - public String getFullyQualifiedDomainName() { - return fullyQualifiedDomainName; - } - - /** - * Creates a DomainApplicationIndex with the specified list of keys. - * - *

Only use this method for data migrations. You probably want {@link #createUpdatedInstance}. - */ - public static DomainApplicationIndex createWithSpecifiedKeys( - String fullyQualifiedDomainName, ImmutableSet> keys) { - checkArgument(!isNullOrEmpty(fullyQualifiedDomainName), - "fullyQualifiedDomainName must not be null or empty."); - checkArgument(!isNullOrEmpty(keys), "Keys must not be null or empty."); - DomainApplicationIndex instance = new DomainApplicationIndex(); - instance.fullyQualifiedDomainName = fullyQualifiedDomainName; - instance.references = keys; - return instance; - } - - public static Key createKey(DomainApplication application) { - return Key.create(DomainApplicationIndex.class, application.getFullyQualifiedDomainName()); - } - - /** - * Returns the set of all active DomainApplications for the given fully qualified domain name. - * - *

Note that loading the individual applications referenced by the keys are explicitly - * non-transactional. This is to avoid potentially over-enlisting multiple entity groups within a - * transaction. - * - *

Consequently within a transaction this method will not return any applications that are not - * yet committed to datastore, even if called on an updated DomainApplicationIndex instance - * storing keys to those applications. - */ - public static ImmutableSet loadActiveApplicationsByDomainName( - String fullyQualifiedDomainName, final DateTime now) { - final DomainApplicationIndex index = load(fullyQualifiedDomainName); - if (index == null) { - return ImmutableSet.of(); - } - // Perform eventually consistent query, to avoid overenlisting cross entity groups - return ofy().doTransactionless(() -> { - ImmutableSet.Builder apps = new ImmutableSet.Builder<>(); - for (DomainApplication app : ofy().load().keys(index.getKeys()).values()) { - if (app.getDeletionTime().isAfter(now)) { - apps.add(app); - } - } - return apps.build(); - }); - } - - /** - * Returns the DomainApplicationIndex for the given fully qualified domain name. - * - *

Note that this can return null if there are no domain applications for this fully qualified - * domain name. - */ - @Nullable - public static DomainApplicationIndex load(String fullyQualifiedDomainName) { - return ofy().load().type(DomainApplicationIndex.class).id(fullyQualifiedDomainName).now(); - } - - /** - * Saves a new DomainApplicationIndex for this resource or updates the existing one. - * - *

This is the preferred method for creating an instance of DomainApplicationIndex because this - * performs the correct merging logic to add the given domain application to an existing index if - * there is one. - */ - public static DomainApplicationIndex createUpdatedInstance(DomainApplication application) { - DomainApplicationIndex existing = load(application.getFullyQualifiedDomainName()); - ImmutableSet> newKeys = CollectionUtils.union( - (existing == null ? ImmutableSet.of() : existing.getKeys()), - Key.create(application)); - return createWithSpecifiedKeys(application.getFullyQualifiedDomainName(), newKeys); - } -} diff --git a/java/google/registry/model/poll/PollMessage.java b/java/google/registry/model/poll/PollMessage.java index e06de046a..77fad3eb2 100644 --- a/java/google/registry/model/poll/PollMessage.java +++ b/java/google/registry/model/poll/PollMessage.java @@ -32,9 +32,7 @@ import google.registry.model.EppResource; import google.registry.model.ImmutableObject; import google.registry.model.annotations.ExternalMessagingName; import google.registry.model.domain.DomainRenewData; -import google.registry.model.domain.launch.LaunchInfoResponseExtension; import google.registry.model.eppoutput.EppResponse.ResponseData; -import google.registry.model.eppoutput.EppResponse.ResponseExtension; import google.registry.model.poll.PendingActionNotificationResponse.ContactPendingActionNotificationResponse; import google.registry.model.poll.PendingActionNotificationResponse.DomainPendingActionNotificationResponse; import google.registry.model.poll.PendingActionNotificationResponse.HostPendingActionNotificationResponse; @@ -57,15 +55,14 @@ import org.joda.time.DateTime; * *

Poll messages are parented off of the {@link HistoryEntry} that resulted in their creation. * This means that poll messages are contained in the Datastore entity group of the parent {@link - * EppResource} (which can be a domain, application, contact, or host). It is thus possible to - * perform a strongly consistent query to find all poll messages associated with a given EPP - * resource. + * EppResource} (which can be a domain, contact, or host). It is thus possible to perform a strongly + * consistent query to find all poll messages associated with a given EPP resource. * *

Poll messages are identified externally by registrars using the format defined in {@link * PollMessageExternalKeyConverter}. * - * @see - * RFC5730 - EPP - <poll> Command + * @see RFC5730 - EPP - <poll> + * Command */ @Entity @ExternalMessagingName("message") @@ -113,8 +110,6 @@ public abstract class PollMessage extends ImmutableObject public abstract ImmutableList getResponseData(); - public abstract ImmutableList getResponseExtensions(); - /** Override Buildable.asBuilder() to give this method stronger typing. */ @Override public abstract Builder asBuilder(); @@ -193,15 +188,6 @@ public abstract class PollMessage extends ImmutableObject List domainTransferResponses; List hostPendingActionNotificationResponses; - // Extensions. Objectify cannot persist a base class type, so we must have a separate field - // to hold every possible derived type of ResponseExtensions that we might store. - // - // Note that we cannot store a list of LaunchInfoResponseExtension objects since it contains a - // list of embedded Mark objects, and embedded lists of lists are not allowed. This shouldn't - // matter since there's no scenario where multiple launch info response extensions are ever - // returned. - LaunchInfoResponseExtension launchInfoResponseExtension; - @Override public Builder asBuilder() { return new Builder(clone(this)); @@ -218,17 +204,11 @@ public abstract class PollMessage extends ImmutableObject .build(); } - @Override - public ImmutableList getResponseExtensions() { - return (launchInfoResponseExtension == null) - ? ImmutableList.of() - : ImmutableList.of(launchInfoResponseExtension); - } - /** A builder for {@link OneTime} since it is immutable. */ public static class Builder extends PollMessage.Builder { - public Builder() {} + public Builder() { + } private Builder(OneTime instance) { super(instance); @@ -272,18 +252,6 @@ public abstract class PollMessage extends ImmutableObject .collect(toImmutableList())); return this; } - - public Builder setResponseExtensions( - ImmutableList responseExtensions) { - getInstance().launchInfoResponseExtension = - responseExtensions - .stream() - .filter(LaunchInfoResponseExtension.class::isInstance) - .map(LaunchInfoResponseExtension.class::cast) - .findFirst() - .orElse(null); - return this; - } } } @@ -320,11 +288,6 @@ public abstract class PollMessage extends ImmutableObject DomainRenewData.create(getTargetId(), getEventTime().plusYears(1))); } - @Override - public ImmutableList getResponseExtensions() { - return ImmutableList.of(); - } - @Override public Builder asBuilder() { return new Builder(clone(this)); diff --git a/java/google/registry/model/pricing/StaticPremiumListPricingEngine.java b/java/google/registry/model/pricing/StaticPremiumListPricingEngine.java index e0fcdded2..ca93c8a0b 100644 --- a/java/google/registry/model/pricing/StaticPremiumListPricingEngine.java +++ b/java/google/registry/model/pricing/StaticPremiumListPricingEngine.java @@ -16,7 +16,7 @@ package google.registry.model.pricing; import static com.google.common.base.Preconditions.checkNotNull; import static com.google.common.base.Strings.emptyToNull; -import static google.registry.model.registry.Registry.TldState.SUNRISE; +import static google.registry.model.registry.Registry.TldState.START_DATE_SUNRISE; import static google.registry.model.registry.label.PremiumListUtils.getPremiumPrice; import static google.registry.model.registry.label.ReservationType.NAME_COLLISION; import static google.registry.model.registry.label.ReservedList.getReservationTypes; @@ -45,7 +45,7 @@ public final class StaticPremiumListPricingEngine implements PremiumPricingEngin Registry registry = Registry.get(checkNotNull(tld, "tld")); Optional premiumPrice = getPremiumPrice(label, registry); boolean isNameCollisionInSunrise = - registry.getTldState(priceTime).equals(SUNRISE) + registry.getTldState(priceTime).equals(START_DATE_SUNRISE) && getReservationTypes(label, tld).contains(NAME_COLLISION); String feeClass = emptyToNull(Joiner.on('-').skipNulls().join( premiumPrice.isPresent() ? "premium" : null, diff --git a/java/google/registry/model/registry/Registry.java b/java/google/registry/model/registry/Registry.java index 235157cc7..45ea5914d 100644 --- a/java/google/registry/model/registry/Registry.java +++ b/java/google/registry/model/registry/Registry.java @@ -97,7 +97,6 @@ public class Registry extends ImmutableObject implements Buildable { public static final boolean DEFAULT_ESCROW_ENABLED = false; public static final boolean DEFAULT_DNS_PAUSED = false; public static final Duration DEFAULT_ADD_GRACE_PERIOD = Duration.standardDays(5); - public static final Duration DEFAULT_SUNRUSH_ADD_GRACE_PERIOD = Duration.standardDays(5); public static final Duration DEFAULT_AUTO_RENEW_GRACE_PERIOD = Duration.standardDays(45); public static final Duration DEFAULT_REDEMPTION_GRACE_PERIOD = Duration.standardDays(30); public static final Duration DEFAULT_RENEW_GRACE_PERIOD = Duration.standardDays(5); @@ -126,28 +125,10 @@ public class Registry extends ImmutableObject implements Buildable { * sequence of states (ignoring {@link #PDT} which is a pseudo-state). */ public enum TldState { + /** The state of not yet being delegated to this registry in the root zone by IANA. */ PREDELEGATION, - /** - * The state in which only trademark holders can submit applications for domains. Doing so - * requires a claims notice to be submitted with the application. - */ - SUNRISE, - - /** - * The state representing the overlap of {@link #SUNRISE} with a "landrush" state in which - * anyone can submit an application for a domain name. Sunrise applications may continue during - * landrush, so we model the overlap as a distinct state named "sunrush". - */ - SUNRUSH, - - /** - * The state in which anyone can submit an application for a domain name. Sunrise applications - * are not allowed during this phase. - */ - LANDRUSH, - /** * The state in which only trademark holders can submit a "create" request. It is identical to * {@link #GENERAL_AVAILABILITY} in all other respects. @@ -155,9 +136,9 @@ public class Registry extends ImmutableObject implements Buildable { START_DATE_SUNRISE, /** - * A state in which no domain operations are permitted. Generally used after sunrise or landrush - * to allocate uncontended applications and send contended applications to auction. This state - * is special in that it has no ordering constraints and can appear after any phase. + * A state in which no domain operations are permitted. Generally used between sunrise and + * general availability. This state is special in that it has no ordering constraints and can + * appear after any phase. */ QUIET_PERIOD, @@ -373,9 +354,6 @@ public class Registry extends ImmutableObject implements Buildable { /** The length of the anchor tenant add grace period for this TLD. */ Duration anchorTenantAddGracePeriodLength = DEFAULT_ANCHOR_TENANT_ADD_GRACE_PERIOD; - /** The length of the add grace period during sunrush for this TLD. */ - Duration sunrushAddGracePeriodLength = DEFAULT_SUNRUSH_ADD_GRACE_PERIOD; - /** The length of the auto renew grace period for this TLD. */ Duration autoRenewGracePeriodLength = DEFAULT_AUTO_RENEW_GRACE_PERIOD; @@ -499,10 +477,6 @@ public class Registry extends ImmutableObject implements Buildable { return addGracePeriodLength; } - public Duration getSunrushAddGracePeriodLength() { - return sunrushAddGracePeriodLength; - } - public Duration getAutoRenewGracePeriodLength() { return autoRenewGracePeriodLength; } @@ -720,14 +694,6 @@ public class Registry extends ImmutableObject implements Buildable { return this; } - public Builder setSunrushAddGracePeriodLength(Duration sunrushAddGracePeriodLength) { - checkArgument( - sunrushAddGracePeriodLength.isLongerThan(Duration.ZERO), - "sunrushAddGracePeriodLength must be non-zero"); - getInstance().sunrushAddGracePeriodLength = sunrushAddGracePeriodLength; - return this; - } - /** Warning! Changing this will affect the billing time of autorenew events in the past. */ public Builder setAutoRenewGracePeriodLength(Duration autoRenewGracePeriodLength) { checkArgument( diff --git a/java/google/registry/model/reporting/HistoryEntry.java b/java/google/registry/model/reporting/HistoryEntry.java index ea67690fc..c2a0860e1 100644 --- a/java/google/registry/model/reporting/HistoryEntry.java +++ b/java/google/registry/model/reporting/HistoryEntry.java @@ -50,11 +50,15 @@ public class HistoryEntry extends ImmutableObject implements Buildable { CONTACT_TRANSFER_REJECT, CONTACT_TRANSFER_REQUEST, CONTACT_UPDATE, + /** + * Used for history entries that were allocated as a result of a domain application. + * + *

Domain applications (and thus allocating from an application) no longer exist, but we have + * existing domains in the system that were created via allocation and thus have history entries + * of this type under them, so this is retained for legacy purposes. + */ + @Deprecated DOMAIN_ALLOCATE, - DOMAIN_APPLICATION_CREATE, - DOMAIN_APPLICATION_DELETE, - DOMAIN_APPLICATION_UPDATE, - DOMAIN_APPLICATION_STATUS_UPDATE, /** * Used for domain registration autorenews explicitly logged by * {@link google.registry.batch.ExpandRecurringBillingEventsAction}. diff --git a/java/google/registry/module/tools/ToolsRequestComponent.java b/java/google/registry/module/tools/ToolsRequestComponent.java index e8e6879c5..633a38709 100644 --- a/java/google/registry/module/tools/ToolsRequestComponent.java +++ b/java/google/registry/module/tools/ToolsRequestComponent.java @@ -34,7 +34,6 @@ import google.registry.tools.server.CreatePremiumListAction; import google.registry.tools.server.DeleteEntityAction; import google.registry.tools.server.GenerateZoneFilesAction; import google.registry.tools.server.KillAllCommitLogsAction; -import google.registry.tools.server.KillAllDomainApplicationsAction; import google.registry.tools.server.KillAllEppResourcesAction; import google.registry.tools.server.ListDomainsAction; import google.registry.tools.server.ListHostsAction; @@ -70,7 +69,6 @@ interface ToolsRequestComponent { FlowComponent.Builder flowComponentBuilder(); GenerateZoneFilesAction generateZoneFilesAction(); KillAllCommitLogsAction killAllCommitLogsAction(); - KillAllDomainApplicationsAction killAllDomainApplicationsAction(); KillAllEppResourcesAction killAllEppResourcesAction(); ListDomainsAction listDomainsAction(); ListHostsAction listHostsAction(); diff --git a/java/google/registry/rdap/RdapJsonFormatter.java b/java/google/registry/rdap/RdapJsonFormatter.java index 0c2c1fd05..d64dfaf5b 100644 --- a/java/google/registry/rdap/RdapJsonFormatter.java +++ b/java/google/registry/rdap/RdapJsonFormatter.java @@ -252,8 +252,6 @@ public class RdapJsonFormatter { .put(HistoryEntry.Type.CONTACT_CREATE, RdapEventAction.REGISTRATION) .put(HistoryEntry.Type.CONTACT_DELETE, RdapEventAction.DELETION) .put(HistoryEntry.Type.CONTACT_TRANSFER_APPROVE, RdapEventAction.TRANSFER) - .put(HistoryEntry.Type.DOMAIN_APPLICATION_CREATE, RdapEventAction.REGISTRATION) - .put(HistoryEntry.Type.DOMAIN_APPLICATION_DELETE, RdapEventAction.DELETION) .put(HistoryEntry.Type.DOMAIN_AUTORENEW, RdapEventAction.REREGISTRATION) .put(HistoryEntry.Type.DOMAIN_CREATE, RdapEventAction.REGISTRATION) .put(HistoryEntry.Type.DOMAIN_DELETE, RdapEventAction.DELETION) diff --git a/java/google/registry/tmch/LordnTaskUtils.java b/java/google/registry/tmch/LordnTaskUtils.java index f1b0b3453..63c475ac9 100644 --- a/java/google/registry/tmch/LordnTaskUtils.java +++ b/java/google/registry/tmch/LordnTaskUtils.java @@ -29,6 +29,10 @@ import org.joda.time.DateTime; /** * Helper methods for creating tasks containing CSV line data in the lordn-sunrise and lordn-claims * queues based on DomainResource changes. + * + *

Note that, per the + * TMCH RFC, while the application-datetime data is optional (which we never send because there + * start-date sunrise has no applications), its presence in the header is still required. */ public final class LordnTaskUtils { @@ -62,31 +66,25 @@ public final class LordnTaskUtils { /** Returns the corresponding CSV LORDN line for a sunrise domain. */ public static String getCsvLineForSunriseDomain(DomainResource domain, DateTime transactionTime) { - // Only skip nulls in the outer join because only application time is allowed to be null. - Joiner joiner = Joiner.on(','); - return joiner.skipNulls().join( - joiner.join( + return Joiner.on(',') + .join( domain.getRepoId(), domain.getFullyQualifiedDomainName(), domain.getSmdId(), getIanaIdentifier(domain.getCreationClientId()), - transactionTime), // Used as creation time. - domain.getApplicationTime()); // This may be null for start-date sunrise or QLP domains. + transactionTime); // Used as creation time. } /** Returns the corresponding CSV LORDN line for a claims domain. */ public static String getCsvLineForClaimsDomain(DomainResource domain, DateTime transactionTime) { - // Only skip nulls in the outer join because only application time is allowed to be null. - Joiner joiner = Joiner.on(','); - return joiner.skipNulls().join( - joiner.join( + return Joiner.on(',') + .join( domain.getRepoId(), domain.getFullyQualifiedDomainName(), domain.getLaunchNotice().getNoticeId().getTcnId(), getIanaIdentifier(domain.getCreationClientId()), transactionTime, // Used as creation time. - domain.getLaunchNotice().getAcceptedTime()), - domain.getApplicationTime()); // This is usually null except for landrush domains. + domain.getLaunchNotice().getAcceptedTime()); } /** Retrieves the IANA identifier for a registrar based on the client id. */ diff --git a/java/google/registry/tools/AllocateDomainCommand.java b/java/google/registry/tools/AllocateDomainCommand.java deleted file mode 100644 index c39997d0f..000000000 --- a/java/google/registry/tools/AllocateDomainCommand.java +++ /dev/null @@ -1,190 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.tools; - -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.base.Strings.emptyToNull; -import static com.google.common.collect.ImmutableList.toImmutableList; -import static com.google.common.collect.Iterables.transform; -import static com.google.common.io.BaseEncoding.base16; -import static google.registry.model.eppcommon.EppXmlTransformer.unmarshal; -import static google.registry.model.ofy.ObjectifyService.ofy; -import static google.registry.tools.CommandUtilities.addHeader; -import static java.util.stream.Collectors.joining; - -import com.beust.jcommander.Parameter; -import com.beust.jcommander.Parameters; -import com.google.common.base.Ascii; -import com.google.common.base.Splitter; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableMap; -import com.google.template.soy.data.SoyMapData; -import com.googlecode.objectify.Key; -import google.registry.model.domain.DesignatedContact; -import google.registry.model.domain.DomainApplication; -import google.registry.model.domain.DomainCommand; -import google.registry.model.domain.Period; -import google.registry.model.domain.launch.ApplicationStatus; -import google.registry.model.domain.launch.LaunchNotice; -import google.registry.model.eppinput.EppInput; -import google.registry.model.eppinput.EppInput.ResourceCommandWrapper; -import google.registry.model.reporting.HistoryEntry; -import google.registry.model.smd.SignedMark; -import google.registry.tools.soy.DomainAllocateSoyInfo; -import google.registry.xml.XmlException; -import java.util.ArrayList; -import java.util.List; -import java.util.Objects; - -/** Command to allocated a domain from a domain application. */ -@Parameters(separators = " =", commandDescription = "Allocate a domain application") -final class AllocateDomainCommand extends MutatingEppToolCommand { - - @Parameter( - names = "--ids", - description = "Comma-delimited list of application IDs to update.", - required = true) - String ids; - - private final List> applicationKeys = new ArrayList<>(); - - @Override - protected String postExecute() { - return ofy() - .transactNewReadOnly( - () -> { - String failureMessage = - ofy() - .load() - .keys(applicationKeys) - .values() - .stream() - .map( - application -> - application.getApplicationStatus() - == ApplicationStatus.ALLOCATED - ? null - : application.getFullyQualifiedDomainName()) - .filter(Objects::nonNull) - .collect(joining("\n")); - return failureMessage.isEmpty() - ? "ALL SUCCEEDED" - : addHeader("FAILURES", failureMessage); - }); - } - - /** Extract the registration period from the XML used to create the domain application. */ - private static Period extractPeriodFromXml(byte[] xmlBytes) throws XmlException { - EppInput eppInput = unmarshal(EppInput.class, xmlBytes); - return ((DomainCommand.Create) - ((ResourceCommandWrapper) eppInput.getCommandWrapper().getCommand()) - .getResourceCommand()).getPeriod(); - } - - @Override - protected void initMutatingEppToolCommand() { - checkArgument(superuser, "This command MUST be run as --superuser."); - setSoyTemplate(DomainAllocateSoyInfo.getInstance(), DomainAllocateSoyInfo.CREATE); - ofy().transactNewReadOnly(this::initAllocateDomainCommand); - } - - private void initAllocateDomainCommand() { - Iterable> keys = - transform( - Splitter.on(',').split(ids), - applicationId -> Key.create(DomainApplication.class, applicationId)); - for (DomainApplication application : ofy().load().keys(keys).values()) { - // If the application is already allocated print a warning but do not fail. - if (application.getApplicationStatus() == ApplicationStatus.ALLOCATED) { - System.err.printf("Application %s has already been allocated\n", application.getRepoId()); - continue; - } - // Ensure domain doesn't already have a final status which it shouldn't be updated - // from. - checkState( - !application.getApplicationStatus().isFinalStatus(), - "Application has final status %s", - application.getApplicationStatus()); - try { - HistoryEntry history = - checkNotNull( - ofy() - .load() - .type(HistoryEntry.class) - .ancestor(checkNotNull(application)) - .order("modificationTime") - .first() - .now(), - "Could not find any history entries for domain application %s", - application.getRepoId()); - String clientTransactionId = - emptyToNull(history.getTrid().getClientTransactionId().orElse(null)); - Period period = checkNotNull(extractPeriodFromXml(history.getXmlBytes())); - checkArgument(period.getUnit() == Period.Unit.YEARS); - ImmutableMap.Builder contactsMapBuilder = new ImmutableMap.Builder<>(); - for (DesignatedContact contact : application.getContacts()) { - contactsMapBuilder.put( - Ascii.toLowerCase(contact.getType().toString()), - ofy().load().key(contact.getContactKey()).now().getForeignKey()); - } - LaunchNotice launchNotice = application.getLaunchNotice(); - String smdId = - application.getEncodedSignedMarks().isEmpty() - ? null - : unmarshal(SignedMark.class, application.getEncodedSignedMarks().get(0).getBytes()) - .getId(); - ImmutableMap launchNoticeMap = - (launchNotice == null) - ? null - : ImmutableMap.of( - "noticeId", launchNotice.getNoticeId().getTcnId(), - "expirationTime", launchNotice.getExpirationTime().toString(), - "acceptedTime", launchNotice.getAcceptedTime().toString()); - ImmutableList> dsRecords = - application - .getDsData() - .stream() - .map( - dsData -> - ImmutableMap.of( - "keyTag", dsData.getKeyTag(), - "algorithm", dsData.getAlgorithm(), - "digestType", dsData.getDigestType(), - "digest", base16().encode(dsData.getDigest()))) - .collect(toImmutableList()); - addSoyRecord( - application.getCurrentSponsorClientId(), - new SoyMapData( - "name", application.getFullyQualifiedDomainName(), - "period", period.getValue(), - "nameservers", application.loadNameserverFullyQualifiedHostNames(), - "registrant", ofy().load().key(application.getRegistrant()).now().getForeignKey(), - "contacts", contactsMapBuilder.build(), - "authInfo", application.getAuthInfo().getPw().getValue(), - "smdId", smdId, - "applicationRoid", application.getRepoId(), - "applicationTime", application.getCreationTime().toString(), - "launchNotice", launchNoticeMap, - "dsRecords", dsRecords, - "clTrid", clientTransactionId)); - applicationKeys.add(Key.create(application)); - } catch (XmlException e) { - throw new RuntimeException(e); - } - } - } -} diff --git a/java/google/registry/tools/CommandUtilities.java b/java/google/registry/tools/CommandUtilities.java index 409c46565..7ba9823fe 100644 --- a/java/google/registry/tools/CommandUtilities.java +++ b/java/google/registry/tools/CommandUtilities.java @@ -18,11 +18,9 @@ import static com.google.common.base.Preconditions.checkState; import com.google.common.base.Ascii; import com.google.common.base.Strings; -import com.google.common.collect.ImmutableMap; import com.googlecode.objectify.Key; import google.registry.model.EppResource; import google.registry.model.contact.ContactResource; -import google.registry.model.domain.DomainApplication; import google.registry.model.domain.DomainResource; import google.registry.model.host.HostResource; import google.registry.model.index.ForeignKeyIndex; @@ -33,21 +31,18 @@ class CommandUtilities { /** A useful parameter enum for commands that operate on {@link EppResource} objects. */ public enum ResourceType { - CONTACT, - HOST, - DOMAIN, - APPLICATION; + CONTACT(ContactResource.class), + HOST(HostResource.class), + DOMAIN(DomainResource.class); + + private Class clazz; + + ResourceType(Class clazz) { + this.clazz = clazz; + } public Key getKey(String uniqueId, DateTime now) { - return this == APPLICATION - ? Key.create(DomainApplication.class, uniqueId) - : ForeignKeyIndex.loadAndGetKey( - ImmutableMap.of( - CONTACT, ContactResource.class, - HOST, HostResource.class, - DOMAIN, DomainResource.class).get(this), - uniqueId, - now); + return ForeignKeyIndex.loadAndGetKey(clazz, uniqueId, now); } } diff --git a/java/google/registry/tools/CreateOrUpdateTldCommand.java b/java/google/registry/tools/CreateOrUpdateTldCommand.java index 3ef03b998..449743439 100644 --- a/java/google/registry/tools/CreateOrUpdateTldCommand.java +++ b/java/google/registry/tools/CreateOrUpdateTldCommand.java @@ -74,12 +74,6 @@ abstract class CreateOrUpdateTldCommand extends MutatingCommand { description = "Length of the add grace period (in ISO 8601 duration format)") Duration addGracePeriod; - @Nullable - @Parameter( - names = "--sunrush_add_grace_period", - description = "Length of the add grace period during sunrush (in ISO 8601 duration format)") - Duration sunrushAddGracePeriod; - @Nullable @Parameter( names = "--redemption_grace_period", @@ -331,7 +325,6 @@ abstract class CreateOrUpdateTldCommand extends MutatingCommand { } Optional.ofNullable(addGracePeriod).ifPresent(builder::setAddGracePeriodLength); - Optional.ofNullable(sunrushAddGracePeriod).ifPresent(builder::setSunrushAddGracePeriodLength); Optional.ofNullable(redemptionGracePeriod).ifPresent(builder::setRedemptionGracePeriodLength); Optional.ofNullable(pendingDeleteLength).ifPresent(builder::setPendingDeleteLength); Optional.ofNullable(automaticTransferLength).ifPresent(builder::setAutomaticTransferLength); diff --git a/java/google/registry/tools/DomainApplicationInfoCommand.java b/java/google/registry/tools/DomainApplicationInfoCommand.java deleted file mode 100644 index b6d71ab17..000000000 --- a/java/google/registry/tools/DomainApplicationInfoCommand.java +++ /dev/null @@ -1,68 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.tools; - -import static google.registry.util.PreconditionsUtils.checkArgumentNotNull; - -import com.beust.jcommander.Parameter; -import com.beust.jcommander.Parameters; -import com.google.common.base.Ascii; -import com.google.template.soy.data.SoyMapData; -import google.registry.model.domain.launch.LaunchPhase; -import google.registry.tools.soy.DomainApplicationInfoSoyInfo; - -/** A command to execute a domain application info EPP command. */ -@Parameters(separators = " =", commandDescription = "Get domain application EPP info") -final class DomainApplicationInfoCommand extends NonMutatingEppToolCommand { - - @Parameter( - names = {"-c", "--client"}, - description = "Client identifier of the registrar to execute the command as", - required = true) - String clientId; - - @Parameter( - names = {"--id"}, - description = "ID of the application.", - required = true) - private String id; - - @Parameter( - names = {"-n", "--domain_name"}, - description = "Domain name to query.", - required = true) - private String domainName; - - @Parameter( - names = {"--phase"}, - description = "Phase of the application to query.", - required = true) - private String phase; - - @Override - void initEppToolCommand() { - LaunchPhase launchPhase = checkArgumentNotNull( - LaunchPhase.fromValue(Ascii.toLowerCase(phase)), "Illegal launch phase."); - - setSoyTemplate( - DomainApplicationInfoSoyInfo.getInstance(), - DomainApplicationInfoSoyInfo.DOMAINAPPLICATIONINFO); - addSoyRecord(clientId, new SoyMapData( - "domainName", domainName, - "id", id, - "phase", launchPhase.getPhase(), - "subphase", launchPhase.getSubphase())); - } -} diff --git a/java/google/registry/tools/GenerateApplicationsReportCommand.java b/java/google/registry/tools/GenerateApplicationsReportCommand.java deleted file mode 100644 index afe831b36..000000000 --- a/java/google/registry/tools/GenerateApplicationsReportCommand.java +++ /dev/null @@ -1,176 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.tools; - -import static com.google.common.base.Strings.isNullOrEmpty; -import static google.registry.model.eppcommon.EppXmlTransformer.unmarshal; -import static google.registry.model.ofy.ObjectifyService.ofy; -import static google.registry.model.registry.Registries.assertTldExists; -import static google.registry.util.DateTimeUtils.isBeforeOrAt; -import static google.registry.util.DomainNameUtils.ACE_PREFIX; -import static java.nio.charset.StandardCharsets.UTF_8; -import static java.util.Collections.emptyList; - -import com.beust.jcommander.Parameter; -import com.beust.jcommander.Parameters; -import com.google.common.base.Joiner; -import com.google.common.net.InternetDomainName; -import com.googlecode.objectify.cmd.LoadType; -import com.googlecode.objectify.cmd.Query; -import google.registry.model.domain.DomainApplication; -import google.registry.model.smd.EncodedSignedMark; -import google.registry.model.smd.SignedMark; -import google.registry.model.smd.SignedMarkRevocationList; -import google.registry.model.tmch.ClaimsListShard; -import google.registry.tmch.TmchXmlSignature; -import google.registry.tools.params.PathParameter; -import google.registry.util.Clock; -import google.registry.util.Idn; -import google.registry.xml.XmlException; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.util.ArrayList; -import java.util.List; -import java.util.Optional; -import javax.annotation.CheckReturnValue; -import javax.inject.Inject; -import org.joda.time.DateTime; - -/** Command to generate a report of all domain applications. */ -@Parameters(separators = " =", commandDescription = "Generate report of all domain applications.") -final class GenerateApplicationsReportCommand implements CommandWithRemoteApi { - - @Parameter( - names = {"-t", "--tld"}, - description = "TLD which contains the applications.") - private String tld; - - @Parameter( - names = "--ids", - description = "Comma-delimited list of application IDs to include. " - + "If not provided, all active application will be included.") - private List ids = emptyList(); - - @Parameter( - names = {"-o", "--output"}, - description = "Output file.", - validateWith = PathParameter.OutputFile.class) - private Path output = Paths.get("/dev/stdout"); - - @Inject Clock clock; - @Inject TmchXmlSignature tmchXmlSignature; - - @Override - public void run() throws Exception { - if (tld != null) { - assertTldExists(tld); - } - DateTime now = clock.nowUtc(); - List result = new ArrayList<>(); - if (!ids.isEmpty()) { - for (Long applicationId : ids) { - DomainApplication domainApplication = ofy().load() - .type(DomainApplication.class) - .id(applicationId) - .now(); - if (domainApplication == null) { - System.err.printf("Application ID %d not found\n", applicationId); - continue; - } - validate(domainApplication, now).ifPresent(result::add); - } - } else { - LoadType loader = ofy().load().type(DomainApplication.class); - Query domainApplications = - (tld == null) ? loader : loader.filter("tld", tld); - for (DomainApplication domainApplication : domainApplications) { - validate(domainApplication, now).ifPresent(result::add); - } - } - Files.write(output, result, UTF_8); - } - - /** Processes a domain application and adds report lines to {@code result}. */ - Optional validate(DomainApplication domainApplication, DateTime now) { - // Validate the label. - List nameParts = - InternetDomainName.from(domainApplication.getFullyQualifiedDomainName()).parts(); - String label = nameParts.get(0); - - // Ignore deleted applications. - if (isBeforeOrAt(domainApplication.getDeletionTime(), now)) { - return Optional.empty(); - } - - // Defensive invalid punycode check. - if (label.startsWith(ACE_PREFIX) && label.equals(Idn.toUnicode(label))) { - return Optional.of(makeLine(domainApplication, "Invalid punycode")); - } - - // Validate the SMD. - for (EncodedSignedMark encodedSignedMark : domainApplication.getEncodedSignedMarks()) { - byte[] signedMarkData; - try { - signedMarkData = encodedSignedMark.getBytes(); - } catch (IllegalStateException e) { - return Optional.of(makeLine(domainApplication, "Incorrectly encoded SMD data")); - } - - SignedMark signedMark; - try { - signedMark = unmarshal(SignedMark.class, signedMarkData); - } catch (XmlException e) { - return Optional.of(makeLine(domainApplication, "Unparseable SMD")); - } - - if (SignedMarkRevocationList.get().isSmdRevoked(signedMark.getId(), - domainApplication.getCreationTime())) { - return Optional.of(makeLine(domainApplication, "SMD revoked")); - } - - try { - tmchXmlSignature.verify(signedMarkData); - } catch (Exception e) { - return Optional.of( - makeLine(domainApplication, String.format("Invalid SMD (%s)", e.getMessage()))); - } - } - - // If this is a landrush application and has no claims notice, check to see if it should have - // one. - if (domainApplication.getEncodedSignedMarks().isEmpty() - && (domainApplication.getLaunchNotice() == null - || domainApplication.getLaunchNotice().getNoticeId() == null - || isNullOrEmpty(domainApplication.getLaunchNotice().getNoticeId().getTcnId())) - && ClaimsListShard.get().getClaimKey(label).isPresent()) { - return Optional.of(makeLine(domainApplication, "Missing claims notice")); - } - - return Optional.of(makeLine(domainApplication, "Valid")); - } - - @CheckReturnValue - private String makeLine(DomainApplication domainApplication, String validityMessage) { - return Joiner.on(',').join( - domainApplication.getRepoId(), - domainApplication.getFullyQualifiedDomainName(), - domainApplication.getEncodedSignedMarks().isEmpty() ? "landrush" : "sunrise", - domainApplication.getApplicationStatus(), - domainApplication.getCurrentSponsorClientId(), - ofy().load().key(domainApplication.getRegistrant()).now().getEmailAddress(), - validityMessage); - } -} diff --git a/java/google/registry/tools/GenerateAuctionDataCommand.java b/java/google/registry/tools/GenerateAuctionDataCommand.java deleted file mode 100644 index c2ab2026b..000000000 --- a/java/google/registry/tools/GenerateAuctionDataCommand.java +++ /dev/null @@ -1,259 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.tools; - -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.base.Strings.nullToEmpty; -import static google.registry.model.domain.launch.ApplicationStatus.REJECTED; -import static google.registry.model.domain.launch.ApplicationStatus.VALIDATED; -import static google.registry.model.ofy.ObjectifyService.ofy; -import static google.registry.model.registry.Registries.assertTldExists; -import static google.registry.util.DateTimeUtils.isAtOrAfter; -import static java.nio.charset.StandardCharsets.UTF_8; -import static java.util.Comparator.comparing; -import static java.util.stream.Collectors.joining; -import static org.joda.time.DateTimeZone.UTC; - -import com.beust.jcommander.Parameter; -import com.beust.jcommander.Parameters; -import com.google.common.base.Joiner; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.Iterables; -import com.google.common.collect.Multimap; -import com.google.common.collect.Ordering; -import com.google.common.collect.TreeMultimap; -import google.registry.model.contact.ContactAddress; -import google.registry.model.contact.ContactPhoneNumber; -import google.registry.model.contact.ContactResource; -import google.registry.model.contact.PostalInfo; -import google.registry.model.domain.DomainApplication; -import google.registry.model.domain.launch.ApplicationStatus; -import google.registry.model.eppcommon.Address; -import google.registry.model.eppcommon.PhoneNumber; -import google.registry.model.registrar.Registrar; -import google.registry.model.registrar.RegistrarAddress; -import google.registry.model.registrar.RegistrarContact; -import google.registry.tools.params.PathParameter; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; -import java.util.Set; -import java.util.TreeSet; -import org.joda.time.DateTime; -import org.joda.time.format.DateTimeFormat; -import org.joda.time.format.DateTimeFormatter; - -/** Command to generate the auction data for a TLD. */ -@Parameters(separators = " =", commandDescription = "Generate auction data") -final class GenerateAuctionDataCommand implements CommandWithRemoteApi { - - @Parameter( - description = "TLD(s) to generate auction data for", - required = true) - private List mainParameters; - - @Parameter( - names = {"-o", "--output"}, - description = "Output file.", - validateWith = PathParameter.OutputFile.class) - private Path output = Paths.get("/dev/stdout"); - - @Parameter( - names = "--skip_validated_check", - description = "Skip the check that all contended applications are already validated.") - private boolean skipValidatedCheck; - - /** This is the date format expected in the output file. */ - final DateTimeFormatter formatter = DateTimeFormat.forPattern("YYYY-MM-dd HH:mm:ss"); - - @Override - public void run() throws Exception { - checkArgument(mainParameters.size() == 1, - "Expected a single parameter with the TLD name. Actual: %s", - Joiner.on(' ').join(mainParameters)); - String tld = mainParameters.get(0); - assertTldExists(tld); - - List result = new ArrayList<>(); - Set registrars = new TreeSet<>(); - - for (Map.Entry> entry : - getDomainApplicationMap(tld).asMap().entrySet()) { - String domainName = entry.getKey(); - List domainApplications = filterApplications(entry.getValue()); - - // Skip the domain if there are no contentions. This can happen if there is only a single - // sunrise applicant, or if there are no sunrise applicants and just a single landrush - // application. - if (domainApplications.size() < 2) { - continue; - } - - Set emailAddresses = new HashSet<>(); - for (DomainApplication domainApplication : domainApplications) { - checkState(skipValidatedCheck || domainApplication.getApplicationStatus() == VALIDATED, "" - + "Can't process contending applications for %s because some applications " - + "are not yet validated.", domainName); - - ContactResource registrant = - ofy().load().key(checkNotNull(domainApplication.getRegistrant())).now(); - result.add(emitApplication(domainApplication, registrant)); - - // Ensure the registrant's email address is unique across the contending applications. - if (!emailAddresses.add(registrant.getEmailAddress())) { - System.err.printf( - "Warning: Multiple applications found with email address %s for domain %s\n", - registrant.getEmailAddress(), - domainName); - } - - // Add registrar for this application our set of registrars that we must output at the end. - registrars.add(domainApplication.getCurrentSponsorClientId()); - } - } - - // Output records for the registrars of any applications we emitted above. - for (String clientId : registrars) { - Optional registrar = Registrar.loadByClientId(clientId); - checkState(registrar.isPresent(), "Registrar %s does not exist", clientId); - result.add(emitRegistrar(registrar.get())); - } - - Files.write(output, result, UTF_8); - } - - /** Return a map of all fully-qualified domain names mapped to the applications for that name. */ - private static Multimap getDomainApplicationMap(final String tld) { - DateTime now = DateTime.now(UTC); - Multimap domainApplicationMap = - TreeMultimap.create(Ordering.natural(), comparing(DomainApplication::getForeignKey)); - Iterable domainApplications = - ofy().load().type(DomainApplication.class).filter("tld", tld); - for (DomainApplication domainApplication : domainApplications) { - // Ignore deleted and rejected applications. They aren't under consideration. - ApplicationStatus applicationStatus = domainApplication.getApplicationStatus(); - DateTime deletionTime = domainApplication.getDeletionTime(); - if (applicationStatus == REJECTED || isAtOrAfter(now, deletionTime)) { - continue; - } - boolean result = domainApplicationMap.put( - domainApplication.getFullyQualifiedDomainName(), domainApplication); - checkState(result, "Domain application not added to map: %s", domainApplication); - } - return domainApplicationMap; - } - - /** - * Filter applications by their priority. If there are any sunrise applications, then those will - * be returned; otherwise just the landrush applications will be returned. - */ - private static List filterApplications( - Iterable domainApplications) { - // Sort the applications into sunrise and landrush applications. - List sunriseApplications = new ArrayList<>(); - List landrushApplications = new ArrayList<>(); - for (DomainApplication domainApplication : domainApplications) { - if (!domainApplication.getEncodedSignedMarks().isEmpty()) { - sunriseApplications.add(domainApplication); - } else { - landrushApplications.add(domainApplication); - } - } - - return !sunriseApplications.isEmpty() ? sunriseApplications : landrushApplications; - } - - /** Return a record line for the given application. */ - private String emitApplication(DomainApplication domainApplication, ContactResource registrant) { - Optional postalInfo = - Optional.ofNullable( - Optional.ofNullable(registrant.getInternationalizedPostalInfo()) - .orElse(registrant.getLocalizedPostalInfo())); - Optional address = - Optional.ofNullable(postalInfo.map(PostalInfo::getAddress).orElse(null)); - List street = address.map(Address::getStreet).orElseGet(ImmutableList::of); - Optional phoneNumber = Optional.ofNullable(registrant.getVoiceNumber()); - - // Each line containing an auction participant has the following format: - // - // Domain|Application ID|Application timestamp|Last update date|Registrar Name| - // Registrant Name|Registrant Company|Registrant Address 1|Registrant Address 2| - // Registrant City|Registrant Province|Registrant Postal Code|Registrant Country| - // Registrant Email|Registrant Telephone|Reserve|Application Type - return Joiner.on('|') - .join( - ImmutableList.of( - domainApplication.getFullyQualifiedDomainName(), - domainApplication.getForeignKey(), - formatter.print(domainApplication.getCreationTime()), - domainApplication.getLastEppUpdateTime() != null - ? formatter.print(domainApplication.getLastEppUpdateTime()) - : "", - domainApplication.getCurrentSponsorClientId(), - nullToEmpty(postalInfo.map(PostalInfo::getName).orElse("")), - nullToEmpty(postalInfo.map(PostalInfo::getOrg).orElse("")), - Iterables.getFirst(street, ""), - street.stream().skip(1).filter(Objects::nonNull).collect(joining(" ")), - nullToEmpty(address.map(Address::getCity).orElse("")), - nullToEmpty(address.map(Address::getState).orElse("")), - nullToEmpty(address.map(Address::getZip).orElse("")), - nullToEmpty(address.map(Address::getCountryCode).orElse("")), - nullToEmpty(registrant.getEmailAddress()), - nullToEmpty(phoneNumber.map(PhoneNumber::toPhoneString).orElse("")), - "", - domainApplication.getEncodedSignedMarks().isEmpty() ? "Landrush" : "Sunrise")); - } - - /** Return a record line for the given registrar. */ - private static String emitRegistrar(Registrar registrar) { - // TODO(b/19016140): Determine if this set-up is required. - Optional contact = - Optional.ofNullable(Iterables.getFirst(registrar.getContacts(), null)); - Optional address = - Optional.ofNullable( - Optional.ofNullable(registrar.getLocalizedAddress()) - .orElse(registrar.getInternationalizedAddress())); - List street = address.map(Address::getStreet).orElseGet(ImmutableList::of); - - // Each line containing the registrar of an auction participant has the following format: - // - // Registrar Name|Registrar Contact Name|Registrar Full Company|Registrar Address 1| - // Registrar Address 2|Registrar City|Registrar Province|Registrar Postal Code| - // Registrar Country|Registrar Email|Registrar Telephone - return Joiner.on('|').join(ImmutableList.of( - registrar.getClientId(), - contact.map(RegistrarContact::getName).orElse("N/A"), - nullToEmpty(registrar.getRegistrarName()), - Iterables.getFirst(street, ""), - Iterables.get(street, 1, ""), - address.map(registrarAddress -> nullToEmpty(registrarAddress.getCity())).orElse(""), - address.map(registrarAddress1 -> - nullToEmpty(registrarAddress1.getState())).orElse(""), - address.map(registrarAddress2 -> nullToEmpty(registrarAddress2.getZip())).orElse(""), - address.map(registrarAddress3 -> - nullToEmpty(registrarAddress3.getCountryCode())).orElse(""), - nullToEmpty(registrar.getEmailAddress()), - nullToEmpty(registrar.getPhoneNumber()))); - } -} diff --git a/java/google/registry/tools/GetApplicationCommand.java b/java/google/registry/tools/GetApplicationCommand.java deleted file mode 100644 index e639d2d66..000000000 --- a/java/google/registry/tools/GetApplicationCommand.java +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.tools; - -import static google.registry.model.EppResourceUtils.loadDomainApplication; - -import com.beust.jcommander.Parameter; -import com.beust.jcommander.Parameters; -import java.util.List; - -/** Command to show a domain application. */ -@Parameters(separators = " =", commandDescription = "Show domain application resource(s)") -final class GetApplicationCommand extends GetEppResourceCommand { - - @Parameter( - description = "Domain application id(s)", - required = true) - private List mainParameters; - - @Override - public void runAndPrint() { - mainParameters.forEach( - appId -> printResource("Application", appId, loadDomainApplication(appId, readTimestamp))); - } -} diff --git a/java/google/registry/tools/GetApplicationIdsCommand.java b/java/google/registry/tools/GetApplicationIdsCommand.java deleted file mode 100644 index e1520af4b..000000000 --- a/java/google/registry/tools/GetApplicationIdsCommand.java +++ /dev/null @@ -1,67 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.tools; - -import static google.registry.model.index.DomainApplicationIndex.loadActiveApplicationsByDomainName; -import static google.registry.model.registry.Registries.assertTldExists; -import static google.registry.model.registry.Registries.findTldForNameOrThrow; -import static org.joda.time.DateTimeZone.UTC; - -import com.beust.jcommander.Parameter; -import com.beust.jcommander.Parameters; -import com.google.common.collect.ImmutableList; -import com.google.common.net.InternetDomainName; -import google.registry.model.domain.DomainApplication; -import java.util.List; -import org.joda.time.DateTime; - -/** Command to generate a list of all applications for a given domain name(s). */ -@Parameters(separators = " =", - commandDescription = "Generate list of application IDs and sponsors for given domain name(s)") -final class GetApplicationIdsCommand implements CommandWithRemoteApi { - - @Parameter( - description = "Fully qualified domain name(s)", - required = true) - private List mainParameters; - - @Override - public void run() { - for (String domainName : mainParameters) { - InternetDomainName tld = findTldForNameOrThrow(InternetDomainName.from(domainName)); - assertTldExists(tld.toString()); - System.out.printf("%s:%n", domainName); - - // Sample output: - // example.tld: - // 1 (NewRegistrar) - // 2 (OtherRegistrar) - // example2.tld: - // No applications exist for 'example2.tld'. - ImmutableList applications = ImmutableList.copyOf( - loadActiveApplicationsByDomainName(domainName, DateTime.now(UTC))); - if (applications.isEmpty()) { - System.out.printf(" No applications exist for \'%s\'.%n", domainName); - } else { - for (DomainApplication application : applications) { - System.out.printf( - " %s (%s)%n", - application.getForeignKey(), - application.getCurrentSponsorClientId()); - } - } - } - } -} diff --git a/java/google/registry/tools/GetAppliedLabelsCommand.java b/java/google/registry/tools/GetAppliedLabelsCommand.java deleted file mode 100644 index 58ac66086..000000000 --- a/java/google/registry/tools/GetAppliedLabelsCommand.java +++ /dev/null @@ -1,92 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.tools; - -import static google.registry.model.domain.launch.ApplicationStatus.REJECTED; -import static google.registry.model.ofy.ObjectifyService.ofy; -import static google.registry.model.registry.Registries.assertTldExists; -import static google.registry.util.DateTimeUtils.isAtOrAfter; -import static java.nio.charset.StandardCharsets.UTF_8; - -import com.beust.jcommander.Parameter; -import com.beust.jcommander.Parameters; -import com.beust.jcommander.internal.Sets; -import com.google.common.base.Ascii; -import google.registry.model.domain.DomainApplication; -import google.registry.model.domain.launch.ApplicationStatus; -import google.registry.tools.params.PathParameter; -import google.registry.util.Idn; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.util.ArrayList; -import java.util.List; -import java.util.Set; -import org.joda.time.DateTime; - -/** Command to generate a list of all slds in a tld that have open applications. */ -@Parameters(separators = " =", commandDescription = "Generate applied-for domains list") -final class GetAppliedLabelsCommand implements CommandWithRemoteApi { - - @Parameter( - names = {"-t", "--tld"}, - description = "TLD to generate list for.", - required = true) - private String tld; - - @Parameter( - names = {"-o", "--output"}, - description = "Output file.", - validateWith = PathParameter.OutputFile.class) - private Path output = Paths.get("/dev/stdout"); - - @Override - public void run() throws Exception { - List lines = new ArrayList<>(); - for (String label : getDomainApplicationMap(assertTldExists(tld))) { - label = label.substring(0, label.lastIndexOf('.')); - try { - lines.add(Idn.toUnicode(Ascii.toLowerCase(label))); - } catch (IllegalArgumentException e) { - // An invalid punycode label that we need to reject later. - lines.add(label + " (invalid)"); - } - } - Files.write(output, lines, UTF_8); - } - - /** Return a set of all fully-qualified domain names with open applications. */ - private static Set getDomainApplicationMap(final String tld) { - return ofy() - .transact( - () -> { - Set labels = Sets.newHashSet(); - List domainApplications; - domainApplications = - ofy().load().type(DomainApplication.class).filter("tld", tld).list(); - for (DomainApplication domainApplication : domainApplications) { - // Ignore deleted and rejected applications. They aren't under consideration. - ApplicationStatus applicationStatus = domainApplication.getApplicationStatus(); - DateTime deletionTime = domainApplication.getDeletionTime(); - if (applicationStatus == REJECTED - || isAtOrAfter(ofy().getTransactionTime(), deletionTime)) { - continue; - } - labels.add(domainApplication.getFullyQualifiedDomainName()); - } - return labels; - }); - } -} diff --git a/java/google/registry/tools/GetHistoryEntriesCommand.java b/java/google/registry/tools/GetHistoryEntriesCommand.java index 9c0fac1f3..0642e6c9d 100644 --- a/java/google/registry/tools/GetHistoryEntriesCommand.java +++ b/java/google/registry/tools/GetHistoryEntriesCommand.java @@ -52,7 +52,7 @@ final class GetHistoryEntriesCommand implements CommandWithRemoteApi { @Parameter( names = "--id", - description = "Foreign key of the resource, or application ID of the domain application.") + description = "Foreign key of the resource.") private String uniqueId; @Override diff --git a/java/google/registry/tools/GtechTool.java b/java/google/registry/tools/GtechTool.java index 487e76169..90f0cce9a 100644 --- a/java/google/registry/tools/GtechTool.java +++ b/java/google/registry/tools/GtechTool.java @@ -39,13 +39,7 @@ public final class GtechTool { "create_registrar_groups", "create_sandbox_tld", "delete_domain", - "domain_application_info", - "generate_applications_report", - "generate_auction_data", "generate_dns_report", - "get_application", - "get_application_ids", - "get_applied_labels", "get_claims_list", "get_contact", "get_domain", diff --git a/java/google/registry/tools/RegistryTool.java b/java/google/registry/tools/RegistryTool.java index f2e42c8d0..342e3f439 100644 --- a/java/google/registry/tools/RegistryTool.java +++ b/java/google/registry/tools/RegistryTool.java @@ -29,7 +29,6 @@ public final class RegistryTool { */ public static final ImmutableMap> COMMAND_MAP = new ImmutableMap.Builder>() - .put("allocate_domain", AllocateDomainCommand.class) .put("canonicalize_labels", CanonicalizeLabelsCommand.class) .put("check_domain", CheckDomainCommand.class) .put("check_domain_claims", CheckDomainClaimsCommand.class) @@ -56,19 +55,13 @@ public final class RegistryTool { .put("delete_tld", DeleteTldCommand.class) .put("deploy_invoicing_pipeline", DeployInvoicingPipelineCommand.class) .put("deploy_spec11_pipeline", DeploySpec11PipelineCommand.class) - .put("domain_application_info", DomainApplicationInfoCommand.class) .put("encrypt_escrow_deposit", EncryptEscrowDepositCommand.class) .put("execute_epp", ExecuteEppCommand.class) .put("generate_allocation_tokens", GenerateAllocationTokensCommand.class) - .put("generate_applications_report", GenerateApplicationsReportCommand.class) - .put("generate_auction_data", GenerateAuctionDataCommand.class) .put("generate_dns_report", GenerateDnsReportCommand.class) .put("generate_escrow_deposit", GenerateEscrowDepositCommand.class) .put("generate_lordn", GenerateLordnCommand.class) .put("generate_zone_files", GenerateZoneFilesCommand.class) - .put("get_application", GetApplicationCommand.class) - .put("get_application_ids", GetApplicationIdsCommand.class) - .put("get_applied_labels", GetAppliedLabelsCommand.class) .put("get_claims_list", GetClaimsListCommand.class) .put("get_contact", GetContactCommand.class) .put("get_domain", GetDomainCommand.class) @@ -111,8 +104,6 @@ public final class RegistryTool { .put("uniform_rapid_suspension", UniformRapidSuspensionCommand.class) .put("unlock_domain", UnlockDomainCommand.class) .put("unrenew_domain", UnrenewDomainCommand.class) - .put("update_application_status", UpdateApplicationStatusCommand.class) - .put("update_claims_notice", UpdateClaimsNoticeCommand.class) .put("update_cursors", UpdateCursorsCommand.class) .put("update_domain", UpdateDomainCommand.class) .put("update_kms_keyring", UpdateKmsKeyringCommand.class) @@ -121,7 +112,6 @@ public final class RegistryTool { .put("update_reserved_list", UpdateReservedListCommand.class) .put("update_sandbox_tld", UpdateSandboxTldCommand.class) .put("update_server_locks", UpdateServerLocksCommand.class) - .put("update_smd", UpdateSmdCommand.class) .put("update_tld", UpdateTldCommand.class) .put("upload_claims_list", UploadClaimsListCommand.class) .put("validate_escrow_deposit", ValidateEscrowDepositCommand.class) diff --git a/java/google/registry/tools/RegistryToolComponent.java b/java/google/registry/tools/RegistryToolComponent.java index a5a1e24f0..cb233c0cf 100644 --- a/java/google/registry/tools/RegistryToolComponent.java +++ b/java/google/registry/tools/RegistryToolComponent.java @@ -90,7 +90,6 @@ interface RegistryToolComponent { void inject(DeploySpec11PipelineCommand command); void inject(EncryptEscrowDepositCommand command); void inject(GenerateAllocationTokensCommand command); - void inject(GenerateApplicationsReportCommand command); void inject(GenerateDnsReportCommand command); void inject(GenerateEscrowDepositCommand command); void inject(GetKeyringSecretCommand command); diff --git a/java/google/registry/tools/ResaveEppResourceCommand.java b/java/google/registry/tools/ResaveEppResourceCommand.java index cee4f5ecb..758666832 100644 --- a/java/google/registry/tools/ResaveEppResourceCommand.java +++ b/java/google/registry/tools/ResaveEppResourceCommand.java @@ -43,7 +43,7 @@ public final class ResaveEppResourceCommand extends MutatingCommand { @Parameter( names = "--id", - description = "Foreign key of the resource, or application ID of the domain application.") + description = "Foreign key of the resource.") protected String uniqueId; @Override diff --git a/java/google/registry/tools/UpdateApplicationStatusCommand.java b/java/google/registry/tools/UpdateApplicationStatusCommand.java deleted file mode 100644 index d143b50f9..000000000 --- a/java/google/registry/tools/UpdateApplicationStatusCommand.java +++ /dev/null @@ -1,176 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.tools; - -import static com.google.common.base.Preconditions.checkNotNull; -import static com.google.common.base.Preconditions.checkState; -import static google.registry.model.EppResourceUtils.loadDomainApplication; -import static google.registry.model.domain.launch.ApplicationStatus.ALLOCATED; -import static google.registry.model.ofy.ObjectifyService.ofy; -import static google.registry.util.PreconditionsUtils.checkArgumentPresent; - -import com.beust.jcommander.Parameter; -import com.beust.jcommander.Parameters; -import com.google.common.collect.ImmutableList; -import google.registry.model.domain.DomainApplication; -import google.registry.model.domain.launch.ApplicationStatus; -import google.registry.model.domain.launch.LaunchInfoResponseExtension; -import google.registry.model.eppcommon.StatusValue; -import google.registry.model.eppcommon.Trid; -import google.registry.model.poll.PendingActionNotificationResponse.DomainPendingActionNotificationResponse; -import google.registry.model.poll.PollMessage; -import google.registry.model.registrar.Registrar; -import google.registry.model.reporting.HistoryEntry; -import java.util.List; -import org.joda.time.DateTime; - -/** Command to manually update the status of a domain application. */ -@Parameters(separators = " =", commandDescription = "Manually update domain application status.") -final class UpdateApplicationStatusCommand extends MutatingCommand { - - @Parameter( - names = "--ids", - description = "Comma-delimited list of application IDs to update the status.", - required = true) - private List ids; - - @Parameter( - names = "--msg", - description = "Message shown to registrars in the poll message.", - required = true) - private String message; - - @Parameter( - names = "--status", - description = "The new application status.", - required = true) - private ApplicationStatus newStatus; - - @Parameter( - names = "--history_client_id", - description = "Client id that made this change. Only recorded in the history entry.") - private String clientId = "CharlestonRoad"; - - @Override - protected void init() { - checkArgumentPresent( - Registrar.loadByClientId(clientId), "Registrar with client ID %s not found", clientId); - for (final String applicationId : ids) { - ofy().transact(() -> updateApplicationStatus(applicationId)); - } - } - - /** - * Stages changes to update the status of an application and also enqueue a poll message for the - * status change, which may contain a PendingActionNotificationResponse if this is a final status. - * - *

This method must be called from within a transaction. - */ - private void updateApplicationStatus(String applicationId) { - ofy().assertInTransaction(); - DateTime now = ofy().getTransactionTime(); - - DomainApplication domainApplication = - loadDomainApplication(applicationId, now) - .orElseThrow( - () -> - new IllegalArgumentException( - "Domain application does not exist or is deleted")); - - // It's not an error if the application already has the intended status. We want the method - // to be idempotent. - if (domainApplication.getApplicationStatus() == newStatus) { - System.err.printf("Domain application %s already has status %s\n", applicationId, newStatus); - return; - } - - // Ensure domain does not already have a final status which it should not be updated from. - checkState( - !domainApplication.getApplicationStatus().isFinalStatus(), - "Domain application has final status %s", - domainApplication.getApplicationStatus()); - - // Update its status. - DomainApplication.Builder applicationBuilder = domainApplication.asBuilder() - .setApplicationStatus(newStatus) - .setLastEppUpdateTime(now) - // Use the current sponsor instead of the history client ID because the latter might be an - // internal client ID that we don't want to expose. - .setLastEppUpdateClientId(domainApplication.getCurrentSponsorClientId()); - - // Create a history entry (with no XML or Trid) to record that we are updating the status on - // this application. - HistoryEntry newHistoryEntry = new HistoryEntry.Builder() - .setType(HistoryEntry.Type.DOMAIN_APPLICATION_STATUS_UPDATE) - .setParent(domainApplication) - .setModificationTime(now) - .setClientId(clientId) - .setBySuperuser(true) - .build(); - - // Create a poll message informing the registrar that the application status was updated. - PollMessage.OneTime.Builder pollMessageBuilder = new PollMessage.OneTime.Builder() - .setClientId(domainApplication.getCurrentSponsorClientId()) - .setEventTime(ofy().getTransactionTime()) - .setMsg(message) - .setParent(newHistoryEntry) - .setResponseExtensions(ImmutableList.of( - new LaunchInfoResponseExtension.Builder() - .setApplicationId(domainApplication.getForeignKey()) - .setPhase(domainApplication.getPhase()) - .setApplicationStatus(newStatus) - .build())); - - // If this is a final status (i.e. an end state), then we should remove pending create from the - // application and include a pending action notification in the poll message. Conversely, if - // this is not a final status, we should add pending create (which will already be there unless - // we're resurrecting an application). - if (newStatus.isFinalStatus()) { - applicationBuilder.removeStatusValue(StatusValue.PENDING_CREATE); - - pollMessageBuilder.setResponseData(ImmutableList.of( - DomainPendingActionNotificationResponse.create( - domainApplication.getFullyQualifiedDomainName(), - ALLOCATED.equals(newStatus), // Whether the operation succeeded - getCreationTrid(domainApplication), - now))); - } else { - applicationBuilder.addStatusValue(StatusValue.PENDING_CREATE); - } - - // Stage changes for all entities that need to be saved to Datastore. - stageEntityChange(domainApplication, applicationBuilder.build()); - stageEntityChange(null, pollMessageBuilder.build()); - stageEntityChange(null, newHistoryEntry); - } - - /** Retrieve the transaction id of the operation which created this application. */ - static Trid getCreationTrid(DomainApplication domainApplication) { - Trid creationTrid = domainApplication.getCreationTrid(); - if (creationTrid == null) { - // If the creation TRID is not present on the application (this can happen for older - // applications written before this field was added), then we must read the earliest history - // entry for the application to retrieve it. - return checkNotNull(checkNotNull(ofy() - .load() - .type(HistoryEntry.class) - .ancestor(domainApplication) - .order("modificationTime") - .first() - .now()).getTrid()); - } - return creationTrid; - } -} diff --git a/java/google/registry/tools/UpdateClaimsNoticeCommand.java b/java/google/registry/tools/UpdateClaimsNoticeCommand.java deleted file mode 100644 index 41764e9f6..000000000 --- a/java/google/registry/tools/UpdateClaimsNoticeCommand.java +++ /dev/null @@ -1,119 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.tools; - -import static com.google.common.base.Preconditions.checkArgument; -import static google.registry.model.EppResourceUtils.loadDomainApplication; -import static google.registry.model.ofy.ObjectifyService.ofy; - -import com.beust.jcommander.Parameter; -import com.beust.jcommander.Parameters; -import com.google.common.net.InternetDomainName; -import google.registry.model.domain.DomainApplication; -import google.registry.model.domain.launch.LaunchNotice; -import google.registry.model.domain.launch.LaunchNotice.InvalidChecksumException; -import google.registry.model.reporting.HistoryEntry; -import org.joda.time.DateTime; - -/** Command to update the claims notice on a domain application. */ -@Parameters(separators = " =", commandDescription = "Update the claims notice on an application.") -final class UpdateClaimsNoticeCommand implements CommandWithRemoteApi { - - @Parameter( - names = "--id", - description = "Application ID to update.", - required = true) - private String id; - - @Parameter( - names = "--tcn_id", - description = "Trademark claims notice ID.", - required = true) - private String tcnId; - - @Parameter( - names = "--validator_id", - description = "Trademark claims validator.") - private String validatorId = "tmch"; - - @Parameter( - names = "--expiration_time", - description = "Expiration time of claims notice.", - required = true) - private String expirationTime; - - @Parameter( - names = "--accepted_time", - description = "Accepted time of claims notice.", - required = true) - private String acceptedTime; - - @Override - public void run() { - final LaunchNotice launchNotice = LaunchNotice.create( - tcnId, validatorId, DateTime.parse(expirationTime), DateTime.parse(acceptedTime)); - - ofy() - .transact( - () -> { - try { - updateClaimsNotice(id, launchNotice); - } catch (InvalidChecksumException e) { - throw new RuntimeException(e); - } - }); - } - - private void updateClaimsNotice(String applicationId, LaunchNotice launchNotice) - throws InvalidChecksumException { - ofy().assertInTransaction(); - DateTime now = ofy().getTransactionTime(); - - // Load the domain application. - DomainApplication domainApplication = - loadDomainApplication(applicationId, now) - .orElseThrow( - () -> - new IllegalArgumentException( - "Domain application does not exist or is deleted")); - - // Make sure this isn't a sunrise application. - checkArgument(domainApplication.getEncodedSignedMarks().isEmpty(), - "Can't update claims notice on sunrise applications."); - - // Validate the new launch notice checksum. - String domainLabel = - InternetDomainName.from(domainApplication.getFullyQualifiedDomainName()).parts().get(0); - launchNotice.validate(domainLabel); - - DomainApplication updatedApplication = domainApplication.asBuilder() - .setLaunchNotice(launchNotice) - .setLastEppUpdateTime(now) - .setLastEppUpdateClientId(domainApplication.getCurrentSponsorClientId()) - .build(); - - // Create a history entry (with no XML or Trid) to record that we are updating the application. - HistoryEntry newHistoryEntry = new HistoryEntry.Builder() - .setType(HistoryEntry.Type.DOMAIN_APPLICATION_UPDATE) - .setParent(domainApplication) - .setModificationTime(now) - .setClientId(domainApplication.getCurrentSponsorClientId()) - .setBySuperuser(true) - .build(); - - // Save entities to Datastore. - ofy().save().entities(updatedApplication, newHistoryEntry); - } -} diff --git a/java/google/registry/tools/UpdateSmdCommand.java b/java/google/registry/tools/UpdateSmdCommand.java deleted file mode 100644 index ba1c417fa..000000000 --- a/java/google/registry/tools/UpdateSmdCommand.java +++ /dev/null @@ -1,124 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.tools; - -import static com.google.common.base.Preconditions.checkArgument; -import static google.registry.model.EppResourceUtils.loadDomainApplication; -import static google.registry.model.ofy.ObjectifyService.ofy; -import static google.registry.tmch.TmchData.readEncodedSignedMark; -import static java.nio.charset.StandardCharsets.US_ASCII; - -import com.beust.jcommander.Parameter; -import com.beust.jcommander.Parameters; -import com.google.common.collect.ImmutableList; -import com.google.common.net.InternetDomainName; -import google.registry.flows.EppException; -import google.registry.flows.domain.DomainFlowTmchUtils; -import google.registry.model.domain.DomainApplication; -import google.registry.model.reporting.HistoryEntry; -import google.registry.model.smd.EncodedSignedMark; -import google.registry.model.smd.SignedMark; -import google.registry.tools.params.PathParameter; -import java.nio.file.Files; -import java.nio.file.Path; -import javax.inject.Inject; -import org.joda.time.DateTime; - -/** Command to update the SMD on a domain application. */ -@Parameters(separators = " =", commandDescription = "Update the SMD on an application.") -final class UpdateSmdCommand implements CommandWithRemoteApi { - - @Inject DomainFlowTmchUtils tmchUtils; - @Inject UpdateSmdCommand() {} - - @Parameter( - names = "--id", - description = "Application ID to update.", - required = true) - private String id; - - @Parameter( - names = "--smd", - description = "File containing the updated encoded SMD.", - validateWith = PathParameter.InputFile.class, - required = true) - private Path smdFile; - - @Parameter( - names = "--reason", - description = "Special reason for the SMD update to record in the history entry.") - private String reason; - - @Override - public void run() throws Exception { - final EncodedSignedMark encodedSignedMark = - readEncodedSignedMark(new String(Files.readAllBytes(smdFile), US_ASCII)); - - ofy() - .transact( - () -> { - try { - updateSmd(id, encodedSignedMark, reason); - } catch (EppException e) { - throw new RuntimeException(e); - } - }); - } - - private void updateSmd( - String applicationId, EncodedSignedMark encodedSignedMark, String reason) - throws EppException { - ofy().assertInTransaction(); - DateTime now = ofy().getTransactionTime(); - - // Load the domain application. - DomainApplication domainApplication = - loadDomainApplication(applicationId, now) - .orElseThrow( - () -> - new IllegalArgumentException( - "Domain application does not exist or is deleted")); - - // Make sure this is a sunrise application. - checkArgument( - !domainApplication.getEncodedSignedMarks().isEmpty(), - "Can't update SMD on a landrush application."); - - // Verify the new SMD. - String domainLabel = - InternetDomainName.from(domainApplication.getFullyQualifiedDomainName()).parts().get(0); - SignedMark signedMark = tmchUtils.verifyEncodedSignedMark(encodedSignedMark, now); - tmchUtils.verifySignedMarkValidForDomainLabel(signedMark, domainLabel); - - DomainApplication updatedApplication = domainApplication.asBuilder() - .setEncodedSignedMarks(ImmutableList.of(encodedSignedMark)) - .setLastEppUpdateTime(now) - .setLastEppUpdateClientId(domainApplication.getCurrentSponsorClientId()) - .build(); - - // Create a history entry (with no XML or Trid) to record that we are updating the application. - HistoryEntry newHistoryEntry = new HistoryEntry.Builder() - .setType(HistoryEntry.Type.DOMAIN_APPLICATION_UPDATE) - .setParent(domainApplication) - .setModificationTime(now) - .setClientId(domainApplication.getCurrentSponsorClientId()) - .setBySuperuser(true) - .setReason("UpdateSmdCommand" + (reason != null ? ": " + reason : "")) - .build(); - - // Save entities to Datastore. - ofy().save().entities(updatedApplication, newHistoryEntry); - } -} diff --git a/java/google/registry/tools/server/KillAllDomainApplicationsAction.java b/java/google/registry/tools/server/KillAllDomainApplicationsAction.java deleted file mode 100644 index f704c4ddc..000000000 --- a/java/google/registry/tools/server/KillAllDomainApplicationsAction.java +++ /dev/null @@ -1,116 +0,0 @@ -// Copyright 2019 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.tools.server; - -import static google.registry.mapreduce.inputs.EppResourceInputs.createEntityInput; -import static google.registry.model.ofy.ObjectifyService.ofy; -import static google.registry.request.Action.Method.POST; -import static google.registry.util.PipelineUtils.createJobPath; - -import com.google.appengine.tools.mapreduce.Mapper; -import com.google.common.collect.ImmutableList; -import com.google.common.flogger.FluentLogger; -import com.googlecode.objectify.Key; -import google.registry.mapreduce.MapreduceRunner; -import google.registry.model.domain.DomainApplication; -import google.registry.model.index.DomainApplicationIndex; -import google.registry.model.index.EppResourceIndex; -import google.registry.model.reporting.HistoryEntry; -import google.registry.request.Action; -import google.registry.request.Response; -import google.registry.request.auth.Auth; -import javax.inject.Inject; - -/** - * Deletes all {@link DomainApplication} entities in Datastore. - * - *

This also deletes the corresponding {@link DomainApplicationIndex}, {@link EppResourceIndex}, - * and descendent {@link HistoryEntry}s. - */ -@Action(path = "/_dr/task/killAllDomainApplications", method = POST, auth = Auth.AUTH_INTERNAL_ONLY) -public class KillAllDomainApplicationsAction implements Runnable { - - private static final FluentLogger logger = FluentLogger.forEnclosingClass(); - - @Inject MapreduceRunner mrRunner; - @Inject Response response; - - @Inject - KillAllDomainApplicationsAction() {} - - @Override - public void run() { - response.sendJavaScriptRedirect( - createJobPath( - mrRunner - .setJobName("Delete all domain applications and associated entities") - .setModuleName("tools") - .runMapOnly( - new KillAllDomainApplicationsMapper(), - ImmutableList.of(createEntityInput(DomainApplication.class))))); - } - - static class KillAllDomainApplicationsMapper extends Mapper { - - private static final long serialVersionUID = 2862967335000340688L; - - @Override - public void map(final DomainApplication application) { - ofy() - .transact( - () -> { - if (ofy().load().entity(application).now() == null) { - getContext().incrementCounter("applications already deleted"); - return; - } - - Key applicationKey = Key.create(application); - DomainApplicationIndex dai = - ofy().load().key(DomainApplicationIndex.createKey(application)).now(); - EppResourceIndex eri = - ofy().load().entity(EppResourceIndex.create(applicationKey)).now(); - - // This case is common and happens when the same domain name was applied for - // multiple times (i.e. there are multiple domain applications sharing a name). The - // first one that the mapreduce happens to process will delete the DAI and then - // subsequent ones will see the entity as already deleted, which is safe and - // expected. - if (dai == null) { - logger.atWarning().log( - "Missing domain application index for application %s.", applicationKey); - getContext().incrementCounter("missing domain application indexes"); - } else { - ofy().delete().entity(dai); - } - - // This case shouldn't be possible except in extremely rare circumstances, as this - // mapreduce itself is relying on EPP resource indexes to load the domain - // applications to delete. - if (eri == null) { - logger.atSevere().log( - "Missing EPP resource index for application %s.", applicationKey); - getContext().incrementCounter("missing EPP resource indexes"); - } else { - ofy().delete().entity(eri); - } - - // Delete the application, its descendents, and the indexes. - ofy().delete().keys(ofy().load().ancestor(application).keys()); - logger.atInfo().log("Deleted domain application %s.", applicationKey); - getContext().incrementCounter("applications deleted"); - }); - } - } -} diff --git a/java/google/registry/tools/server/KillAllEppResourcesAction.java b/java/google/registry/tools/server/KillAllEppResourcesAction.java index 480f05970..2879e7708 100644 --- a/java/google/registry/tools/server/KillAllEppResourcesAction.java +++ b/java/google/registry/tools/server/KillAllEppResourcesAction.java @@ -26,8 +26,6 @@ import google.registry.config.RegistryEnvironment; import google.registry.mapreduce.MapreduceRunner; import google.registry.mapreduce.inputs.EppResourceInputs; import google.registry.model.EppResource; -import google.registry.model.domain.DomainApplication; -import google.registry.model.index.DomainApplicationIndex; import google.registry.model.index.EppResourceIndex; import google.registry.model.index.ForeignKeyIndex; import google.registry.request.Action; @@ -75,12 +73,11 @@ public class KillAllEppResourcesAction implements Runnable { /** * Delete an {@link EppResourceIndex}, its referent, all descendants of each referent, and the - * {@link ForeignKeyIndex} or {@link DomainApplicationIndex} of the referent, as appropriate. + * {@link ForeignKeyIndex} of the referent, as appropriate. * *

This will delete: *

    *
  • All {@link ForeignKeyIndex} types - *
  • {@link DomainApplicationIndex} *
  • {@link EppResourceIndex} *
  • All {@link EppResource} types *
  • {@code HistoryEntry} @@ -98,9 +95,7 @@ public class KillAllEppResourcesAction implements Runnable { } EppResource resource = ofy().load().key(eri.getKey()).now(); // TODO(b/28247733): What about FKI's for renamed hosts? - Key indexKey = resource instanceof DomainApplication - ? DomainApplicationIndex.createKey((DomainApplication) resource) - : ForeignKeyIndex.createKey(resource); + Key indexKey = ForeignKeyIndex.createKey(resource); emitAndIncrementCounter(indexKey, indexKey); } diff --git a/java/google/registry/tools/soy/DomainAllocate.soy b/java/google/registry/tools/soy/DomainAllocate.soy deleted file mode 100644 index 75487f10f..000000000 --- a/java/google/registry/tools/soy/DomainAllocate.soy +++ /dev/null @@ -1,89 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -{namespace domain.registry.tools} - -/** - * Domain allocate request. - */ -{template .create stricthtml="false"} -{@param name: string} -{@param period: int} -{@param registrant: string} -{@param contacts: legacy_object_map} -{@param authInfo: string} -{@param applicationRoid: string} -{@param applicationTime: string} -{@param? clTrid: string} -{@param? nameservers: list} -{@param? smdId: string} -{@param? launchNotice: legacy_object_map} -{@param? dsRecords: list>} - - - - - - {$name} - {$period} - {if isNonnull($nameservers) and length($nameservers) > 0} - - {for $nameserver in $nameservers} - {$nameserver} - {/for} - - {/if} - {$registrant} - {for $type in keys($contacts)} - {$contacts[$type]} - {/for} - - {$authInfo} - - - - - - {$applicationRoid} - {$applicationTime} - {if isNonnull($smdId)} - {$smdId} - {/if} - {if isNonnull($launchNotice)} - - {$launchNotice['noticeId']} - {$launchNotice['expirationTime']} - {$launchNotice['acceptedTime']} - - {/if} - - {if isNonnull($dsRecords) and length($dsRecords) > 0} - - {for $dsRecord in $dsRecords} - - {$dsRecord['keyTag']} - {$dsRecord['algorithm']} - {$dsRecord['digestType']} - {$dsRecord['digest']} - - {/for} - - {/if} - - {if isNonnull($clTrid)} - {$clTrid} - {/if} - - -{/template} diff --git a/java/google/registry/tools/soy/DomainApplicationInfo.soy b/java/google/registry/tools/soy/DomainApplicationInfo.soy deleted file mode 100644 index 4e82f28e7..000000000 --- a/java/google/registry/tools/soy/DomainApplicationInfo.soy +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -{namespace domain.registry.tools} -/** - * Domain application info request - */ -{template .domainapplicationinfo stricthtml="false"} -{@param domainName: string} -{@param id: string} -{@param phase: string} -{@param? subphase: string} - - - - - - {$domainName} - - - - - {$phase} - {$id} - - - RegistryTool - - -{/template} diff --git a/java/google/registry/ui/js/registrar/domain.js b/java/google/registry/ui/js/registrar/domain.js index e9290899a..4dc5156c8 100644 --- a/java/google/registry/ui/js/registrar/domain.js +++ b/java/google/registry/ui/js/registrar/domain.js @@ -43,24 +43,15 @@ goog.inherits(registry.registrar.Domain, registry.registrar.XmlResourceComponent); -/** - * @define {boolean} Launch phase flag. If not SUNRUSH then GA. - */ -goog.define('registry.registrar.Domain.SUNRUSH', false); - - /** @override */ registry.registrar.Domain.prototype.newModel = function() { var newModel = {item: {'domain:period': ''}}; - if (registry.registrar.Domain.SUNRUSH) { - newModel.allowSmd = true; - } return newModel; }; /** - * Prepare a fetch query for the domain by its domain application id. + * Prepare a fetch query for the domain by its id. * @param {!Object} params should have a name field with a * possibly extended domain name id of the form "example.tld:1234" * where the 1234 is the domain application id assigned by the @@ -68,24 +59,8 @@ registry.registrar.Domain.prototype.newModel = function() { * @override */ registry.registrar.Domain.prototype.prepareFetch = function(params) { - var xml; - if (registry.registrar.Domain.SUNRUSH) { - var idParts = params.id.split(':'); - if (idParts.length != 2) { - registry.util.butter( - 'Domain queries during sunrush have the form: ' + - '"example.tld:1234", where 1234 is the application ID.'); - throw Error('Invalid domain name for SUNRUSH, lacking application ID'); - } - params.name = idParts[0]; - params.applicationID = idParts[1]; - xml = registry.soy.registrar.domainepp.infoSunrush( - /** @type {{applicationID: ?, clTrid: ?, name: ?}} */(params)); - } else { - xml = registry.soy.registrar.domainepp.info( - /** @type {{clTrid: ?, id: ?}} */ (params)); - } - return xml.toString(); + return registry.soy.registrar.domainepp.info( + /** @type {{clTrid: ?, id: ?}} */ (params)).toString(); }; @@ -97,11 +72,6 @@ registry.registrar.Domain.prototype.processItem = function() { if (extension && extension['launch:infData']) { var extendedInfData = extension['launch:infData']; - var applicationID = extendedInfData['launch:applicationID']; - if (applicationID) { - this.model.item['launch:applicationID'] = applicationID; - } - var mark = extendedInfData['mark:mark']; if (mark) { this.model.item['mark:mark'] = {'keyValue': goog.json.serialize(mark)}; @@ -165,14 +135,8 @@ registry.registrar.Domain.prototype.prepareCreate = function(params) { if (form['smd:encodedSignedMark'] == '') { delete form['smd:encodedSignedMark']; } - var xml; - if (registry.registrar.Domain.SUNRUSH) { - xml = registry.soy.registrar.domainepp.createSunrush( - /** @type {{clTrid:?, item: ?}} */(params)); - } else { - xml = registry.soy.registrar.domainepp.create( - /** @type {{clTrid: ?, item: ?}} */(params)); - } + var xml = registry.soy.registrar.domainepp.create( + /** @type {{clTrid: ?, item: ?}} */(params)); return xml.toString(); }; @@ -192,19 +156,12 @@ registry.registrar.Domain.prototype.prepareUpdate = this.addRem(form['domain:ns']['domain:hostObj'], 'Hosts', params); } - var xml; - if (registry.registrar.Domain.SUNRUSH) { - xml = registry.soy.registrar.domainepp.updateSunrush( - /** @type {{clTrid: ?, item: ?}} */(params)); - nextId += ':' + form['launch:applicationID']; - } else { - if (form['domain:ns'] && form['domain:ns']['domain:hostObj']) { - this.addRem(form['domain:ns']['domain:hostObj'], 'Hosts', params); - } - this.addRem(form['domain:contact'], 'Contacts', params); - xml = registry.soy.registrar.domainepp.update( - /** @type {{clTrid: ?, item: ?}} */(params)); + if (form['domain:ns'] && form['domain:ns']['domain:hostObj']) { + this.addRem(form['domain:ns']['domain:hostObj'], 'Hosts', params); } + this.addRem(form['domain:contact'], 'Contacts', params); + var xml = registry.soy.registrar.domainepp.update( + /** @type {{clTrid: ?, item: ?}} */(params)); return xml.toString(); }; diff --git a/java/google/registry/ui/soy/registrar/Domain.soy b/java/google/registry/ui/soy/registrar/Domain.soy index deefa72e5..7415d603a 100644 --- a/java/google/registry/ui/soy/registrar/Domain.soy +++ b/java/google/registry/ui/soy/registrar/Domain.soy @@ -31,7 +31,6 @@ {template .item} {@param item: ?} {@param? readonly: ?} /** passed through to field rendering. */ - {@param? allowSmd: ?} /** optional flag to allow sunrush smd applications. */ {let $isEdit: isNonnull($item['domain:name']) /}

    @@ -125,16 +124,6 @@ {/if} - {if isNonnull($item['launch:applicationID'])} - -

    Sunrise domain application

    - - {call registry.soy.forms.inputFieldRowWithValue data="all"} - {param label: 'Application ID' /} - {param name: 'launch:applicationID' /} - {param value: $item['launch:applicationID'] /} - {/call} - {/if} {if isNonnull($item['mark:mark'])} Mark Data @@ -143,13 +132,6 @@ {$item['mark:mark']['keyValue']} - {else} - {if $allowSmd} - {call registry.soy.forms.textareaFieldRow data="all"} - {param label: 'Encoded Signed Mark (base64 encoded, no header or footer)' /} - {param name: 'smd:encodedSignedMark' /} - {/call} - {/if} {/if} {if $isEdit} @@ -183,7 +165,7 @@ /* XXX: Should change support for admin/tech. */ /** - * Update domain. Includes sunrush applicationId if present. + * Update domain. */ {template .update} {@param? item: ?} @@ -210,11 +192,6 @@ - {if isNonnull($item['launch:applicationID'])} - - {/if}
    {/template} diff --git a/java/google/registry/ui/soy/registrar/DomainEpp.soy b/java/google/registry/ui/soy/registrar/DomainEpp.soy index 6fc2a0152..8981d4fad 100644 --- a/java/google/registry/ui/soy/registrar/DomainEpp.soy +++ b/java/google/registry/ui/soy/registrar/DomainEpp.soy @@ -15,7 +15,7 @@ {namespace registry.soy.registrar.domainepp} -/* General Availability. Sunrush down below. */ +/* General Availability. */ /** * Domain create request. */ @@ -138,106 +138,3 @@ {/if} {/template} - - -/* Sunrush. */ -/** - * Domain create request for sunrush. - */ -{template .createSunrush stricthtml="false"} - {@param item: ?} - {@param clTrid: ?} - - - - - {$item['domain:name']} - {$item['domain:period']} - {if isNonnull($item['domain:ns']['domain:hostObj'][0])} - - {$item['domain:ns']['domain:hostObj'][0]} - {if isNonnull($item['domain:ns']['domain:hostObj'][1])} - {$item['domain:ns']['domain:hostObj'][1]} - {/if} - - {/if} - {$item['domain:registrant']} - {$item['domain:contact'][0]} - {$item['domain:contact'][1]} - - {$item['domain:pw']} - - - - - - sunrise - {if isNonnull($item['smd:encodedSignedMark'])} - {$item['smd:encodedSignedMark']} - {/if} - - - {$clTrid} - - -{/template} - - -/** - * Domain info request during sunrush. - */ -{template .infoSunrush stricthtml="false"} - {@param name: ?} - {@param applicationID: ?} - {@param clTrid: ?} - - - - - {$name} - - - - - sunrise - {$applicationID} - - - {$clTrid} - - -{/template} - - -/** - * Domain update request. - */ -{template .updateSunrush stricthtml="false"} - {@param item: ?} - {@param clTrid: ?} - - - - - {$item['domain:name']} - - {$item['domain:registrant']} - - {$item['domain:authInfo']['domain:pw']} - - - - - - - sunrise - {$item['launch:applicationID']} - - - {$clTrid} - - -{/template} diff --git a/javatests/google/registry/batch/RefreshDnsOnHostRenameActionTest.java b/javatests/google/registry/batch/RefreshDnsOnHostRenameActionTest.java index e8dbd9e84..5458aa5d2 100644 --- a/javatests/google/registry/batch/RefreshDnsOnHostRenameActionTest.java +++ b/javatests/google/registry/batch/RefreshDnsOnHostRenameActionTest.java @@ -23,7 +23,6 @@ import static google.registry.batch.AsyncTaskEnqueuer.QUEUE_ASYNC_HOST_RENAME; import static google.registry.batch.AsyncTaskMetrics.OperationType.DNS_REFRESH; import static google.registry.model.ofy.ObjectifyService.ofy; import static google.registry.testing.DatastoreHelper.createTld; -import static google.registry.testing.DatastoreHelper.newDomainApplication; import static google.registry.testing.DatastoreHelper.newDomainResource; import static google.registry.testing.DatastoreHelper.newHostResource; import static google.registry.testing.DatastoreHelper.persistActiveHost; @@ -45,7 +44,6 @@ import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyNoMoreInteractions; import static org.mockito.Mockito.when; -import com.google.common.collect.ImmutableSet; import com.googlecode.objectify.Key; import google.registry.batch.AsyncTaskMetrics.OperationResult; import google.registry.batch.RefreshDnsOnHostRenameAction.RefreshDnsOnHostRenameReducer; @@ -137,11 +135,6 @@ public class RefreshDnsOnHostRenameActionTest @Test public void testSuccess_dnsUpdateEnqueued() throws Exception { HostResource host = persistActiveHost("ns1.example.tld"); - persistResource( - newDomainApplication("notadomain.tld") - .asBuilder() - .setNameservers(ImmutableSet.of(Key.create(host))) - .build()); persistResource(newDomainResource("example.tld", host)); persistResource(newDomainResource("otherexample.tld", host)); persistResource(newDomainResource("untouched.tld", persistActiveHost("ns2.example.tld"))); diff --git a/javatests/google/registry/export/ExportDomainListsActionTest.java b/javatests/google/registry/export/ExportDomainListsActionTest.java index ab4bb49a3..4bd09e3aa 100644 --- a/javatests/google/registry/export/ExportDomainListsActionTest.java +++ b/javatests/google/registry/export/ExportDomainListsActionTest.java @@ -20,7 +20,6 @@ import static google.registry.export.ExportDomainListsAction.ExportDomainListsRe import static google.registry.export.ExportDomainListsAction.ExportDomainListsReducer.REGISTERED_DOMAINS_FILENAME; import static google.registry.testing.DatastoreHelper.createTld; import static google.registry.testing.DatastoreHelper.persistActiveDomain; -import static google.registry.testing.DatastoreHelper.persistActiveDomainApplication; import static google.registry.testing.DatastoreHelper.persistDeletedDomain; import static google.registry.testing.DatastoreHelper.persistResource; import static google.registry.testing.GcsTestingUtils.readGcsFile; @@ -152,17 +151,4 @@ public class ExportDomainListsActionTest extends MapreduceTestCase(Ordering.natural()) + .put(START_OF_TIME, PREDELEGATION) + .put(sunriseDate, START_DATE_SUNRISE) + .put(sunriseDate.plusMonths(2), GENERAL_AVAILABILITY) + .build()); assertThatLoginSucceeds("NewRegistrar", "foo-BAR2"); @@ -393,7 +395,8 @@ public class EppLifecycleDomainTest extends EppTestCase { .hasResponse( "response_error.xml", ImmutableMap.of( - "CODE", "2002", "MSG", "Command is not allowed in the current registry phase")); + "CODE", "2002", + "MSG", "The current registry phase does not allow for general registrations")); assertThatCommand("domain_info_testvalidate.xml") .atTime(sunriseDate.plusDays(1)) @@ -412,8 +415,8 @@ public class EppLifecycleDomainTest extends EppTestCase { createTld( "example", ImmutableSortedMap.of( - START_OF_TIME, TldState.PREDELEGATION, - gaDate, TldState.GENERAL_AVAILABILITY)); + START_OF_TIME, PREDELEGATION, + gaDate, GENERAL_AVAILABILITY)); assertThatCommand("login_valid_fee_extension.xml").hasResponse("generic_success_response.xml"); @@ -882,9 +885,9 @@ public class EppLifecycleDomainTest extends EppTestCase { createTld( "example", ImmutableSortedMap.of( - START_OF_TIME, TldState.PREDELEGATION, - sunriseDate, TldState.START_DATE_SUNRISE, - gaDate, TldState.GENERAL_AVAILABILITY)); + START_OF_TIME, PREDELEGATION, + sunriseDate, START_DATE_SUNRISE, + gaDate, GENERAL_AVAILABILITY)); assertThatLogin("NewRegistrar", "foo-BAR2") .atTime(sunriseDate.minusDays(3)) @@ -898,13 +901,11 @@ public class EppLifecycleDomainTest extends EppTestCase { .hasResponse( "response_error.xml", ImmutableMap.of( - "CODE", "2306", - "MSG", - "Declared launch extension phase does not match the current registry phase")); + "CODE", "2002", + "MSG", "The current registry phase does not allow for general registrations")); assertThatCommand( - "domain_create_no_hosts_or_dsdata.xml", - ImmutableMap.of("DOMAIN", "general.example")) + "domain_create_no_hosts_or_dsdata.xml", ImmutableMap.of("DOMAIN", "general.example")) .atTime(sunriseDate.minusDays(1)) .hasResponse( "response_error.xml", @@ -912,7 +913,17 @@ public class EppLifecycleDomainTest extends EppTestCase { "CODE", "2002", "MSG", "The current registry phase does not allow for general registrations")); - // During start-date sunrise, create with mark will succeed but without will fail. + // During sunrise, verify that the launch phase must be set to sunrise. + assertThatCommand("domain_create_start_date_sunrise_encoded_mark_wrong_phase.xml") + .atTime(sunriseDate) + .hasResponse( + "response_error.xml", + ImmutableMap.of( + "CODE", "2306", + "MSG", + "Declared launch extension phase does not match the current registry phase")); + + // During sunrise, create with mark will succeed but without will fail. // We also test we can delete without a mark. assertThatCommand("domain_create_start_date_sunrise_encoded_mark.xml") .atTime(sunriseDate.plusDays(1)) @@ -961,12 +972,7 @@ public class EppLifecycleDomainTest extends EppTestCase { assertThatLogoutSucceeds(); } - /** - * Test that missing type= argument on launch create works in start-date sunrise. - * - *

    TODO(b/76095570):have the same exact test on end-date sunrise - using the same .xml file - - * that checks that an application was created. - */ + /** Test that missing type= argument on launch create works in start-date sunrise. */ @Test public void testDomainCreation_startDateSunrise_noType() throws Exception { // The signed mark is valid between 2013 and 2017 @@ -975,9 +981,9 @@ public class EppLifecycleDomainTest extends EppTestCase { createTld( "example", ImmutableSortedMap.of( - START_OF_TIME, TldState.PREDELEGATION, - sunriseDate, TldState.START_DATE_SUNRISE, - gaDate, TldState.GENERAL_AVAILABILITY)); + START_OF_TIME, PREDELEGATION, + sunriseDate, START_DATE_SUNRISE, + gaDate, GENERAL_AVAILABILITY)); assertThatLogin("NewRegistrar", "foo-BAR2") .atTime(sunriseDate.minusDays(3)) diff --git a/javatests/google/registry/flows/FlowTestCase.java b/javatests/google/registry/flows/FlowTestCase.java index 7ca158b4f..7913ee53b 100644 --- a/javatests/google/registry/flows/FlowTestCase.java +++ b/javatests/google/registry/flows/FlowTestCase.java @@ -39,7 +39,6 @@ import google.registry.flows.EppTestComponent.FakesAndMocksModule; import google.registry.flows.picker.FlowPicker; import google.registry.model.billing.BillingEvent; import google.registry.model.domain.GracePeriod; -import google.registry.model.domain.rgp.GracePeriodStatus; import google.registry.model.eppcommon.ProtocolDefinition; import google.registry.model.eppinput.EppInput; import google.registry.model.eppoutput.EppOutput; @@ -211,9 +210,7 @@ public abstract class FlowTestCase extends ShardableTestCase { ((Function) gracePeriod -> GracePeriod.create( - gracePeriod.isSunrushAddGracePeriod() - ? GracePeriodStatus.SUNRUSH_ADD - : gracePeriod.getType(), + gracePeriod.getType(), gracePeriod.getExpirationTime(), gracePeriod.getClientId(), null)) diff --git a/javatests/google/registry/flows/ResourceFlowTestCase.java b/javatests/google/registry/flows/ResourceFlowTestCase.java index dc5fda55f..4a99cec7f 100644 --- a/javatests/google/registry/flows/ResourceFlowTestCase.java +++ b/javatests/google/registry/flows/ResourceFlowTestCase.java @@ -17,7 +17,6 @@ package google.registry.flows; import static com.google.common.collect.ImmutableList.toImmutableList; import static com.google.common.truth.Truth.assertThat; import static google.registry.model.EppResourceUtils.loadByForeignKey; -import static google.registry.model.EppResourceUtils.loadDomainApplication; import static google.registry.model.ofy.ObjectifyService.ofy; import static google.registry.model.tmch.ClaimsListShardTest.createTestClaimsListShard; import static google.registry.testing.EppExceptionSubject.assertAboutEppExceptions; @@ -33,8 +32,6 @@ import com.google.common.testing.TestLogHandler; import com.googlecode.objectify.Key; import google.registry.flows.FlowUtils.NotLoggedInException; import google.registry.model.EppResource; -import google.registry.model.domain.DomainApplication; -import google.registry.model.domain.launch.ApplicationIdTargetExtension; import google.registry.model.eppcommon.Trid; import google.registry.model.eppinput.EppInput.ResourceCommandWrapper; import google.registry.model.eppinput.ResourceCommand; @@ -44,7 +41,6 @@ import google.registry.model.tmch.ClaimsListShard.ClaimsListRevision; import google.registry.model.tmch.ClaimsListShard.ClaimsListSingleton; import google.registry.testing.TaskQueueHelper.TaskMatcher; import google.registry.util.TypeUtils.TypeInstantiator; -import java.util.Optional; import java.util.logging.Level; import javax.annotation.Nullable; import org.joda.time.DateTime; @@ -85,11 +81,6 @@ public abstract class ResourceFlowTestCase T reloadResourceAndCloneAtTime(T resource, DateTime now) { // Force the session to be cleared. ofy().clearSessionCache(); @@ -104,17 +95,8 @@ public abstract class ResourceFlowTestCase extension = - eppLoader.getEpp().getSingleExtension(ApplicationIdTargetExtension.class); - return extension.isPresent() - ? extension.get().getApplicationId() - : getResourceCommand().getTargetId(); + return getResourceCommand().getTargetId(); } protected Class getResourceClass() { diff --git a/javatests/google/registry/flows/custom/TestDomainPricingCustomLogic.java b/javatests/google/registry/flows/custom/TestDomainPricingCustomLogic.java index 9529f45d2..386e46b25 100644 --- a/javatests/google/registry/flows/custom/TestDomainPricingCustomLogic.java +++ b/javatests/google/registry/flows/custom/TestDomainPricingCustomLogic.java @@ -36,18 +36,6 @@ public class TestDomainPricingCustomLogic extends DomainPricingCustomLogic { super(eppInput, sessionMetadata, flowMetadata); } - @Override - public FeesAndCredits customizeApplicationUpdatePrice( - ApplicationUpdatePriceParameters priceParameters) { - return (priceParameters - .domainApplication() - .getFullyQualifiedDomainName() - .startsWith("non-free-update")) - ? addCustomFee( - priceParameters.feesAndCredits(), Fee.create(ONE_HUNDRED_BUCKS, FeeType.UPDATE)) - : priceParameters.feesAndCredits(); - } - @Override public FeesAndCredits customizeRenewPrice(RenewPriceParameters priceParameters) { return (priceParameters.domainName().toString().startsWith("costly-renew")) diff --git a/javatests/google/registry/flows/domain/DomainAllocateFlowTest.java b/javatests/google/registry/flows/domain/DomainAllocateFlowTest.java deleted file mode 100644 index 408252b43..000000000 --- a/javatests/google/registry/flows/domain/DomainAllocateFlowTest.java +++ /dev/null @@ -1,715 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.flows.domain; - -import static com.google.common.io.BaseEncoding.base16; -import static com.google.common.truth.Truth.assertThat; -import static google.registry.model.EppResourceUtils.loadDomainApplication; -import static google.registry.model.ofy.ObjectifyService.ofy; -import static google.registry.testing.DatastoreHelper.assertBillingEvents; -import static google.registry.testing.DatastoreHelper.createTld; -import static google.registry.testing.DatastoreHelper.getOnlyHistoryEntryOfType; -import static google.registry.testing.DatastoreHelper.newDomainApplication; -import static google.registry.testing.DatastoreHelper.persistActiveContact; -import static google.registry.testing.DatastoreHelper.persistActiveDomain; -import static google.registry.testing.DatastoreHelper.persistActiveHost; -import static google.registry.testing.DatastoreHelper.persistDeletedDomain; -import static google.registry.testing.DatastoreHelper.persistReservedList; -import static google.registry.testing.DatastoreHelper.persistResource; -import static google.registry.testing.DomainApplicationSubject.assertAboutApplications; -import static google.registry.testing.DomainResourceSubject.assertAboutDomains; -import static google.registry.testing.EppExceptionSubject.assertAboutEppExceptions; -import static google.registry.testing.JUnitBackports.assertThrows; -import static google.registry.testing.TaskQueueHelper.assertDnsTasksEnqueued; -import static google.registry.testing.TaskQueueHelper.assertNoDnsTasksEnqueued; -import static google.registry.testing.TaskQueueHelper.assertNoTasksEnqueued; -import static google.registry.testing.TaskQueueHelper.assertTasksEnqueued; -import static google.registry.util.DateTimeUtils.END_OF_TIME; -import static org.joda.money.CurrencyUnit.USD; - -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableMap; -import com.google.common.collect.ImmutableSet; -import com.googlecode.objectify.Key; -import google.registry.flows.EppException; -import google.registry.flows.ResourceFlowTestCase; -import google.registry.flows.domain.DomainAllocateFlow.HasFinalStatusException; -import google.registry.flows.domain.DomainAllocateFlow.MissingApplicationException; -import google.registry.flows.domain.DomainAllocateFlow.OnlySuperuserCanAllocateException; -import google.registry.flows.domain.DomainFlowUtils.ExceedsMaxRegistrationYearsException; -import google.registry.flows.domain.DomainFlowUtils.NameserversNotAllowedForDomainException; -import google.registry.flows.domain.DomainFlowUtils.NameserversNotAllowedForTldException; -import google.registry.flows.domain.DomainFlowUtils.NameserversNotSpecifiedForNameserverRestrictedDomainException; -import google.registry.flows.domain.DomainFlowUtils.NameserversNotSpecifiedForTldWithNameserverWhitelistException; -import google.registry.flows.domain.DomainFlowUtils.RegistrantNotAllowedException; -import google.registry.flows.exceptions.ResourceAlreadyExistsException; -import google.registry.model.billing.BillingEvent; -import google.registry.model.billing.BillingEvent.Flag; -import google.registry.model.billing.BillingEvent.Reason; -import google.registry.model.domain.DomainApplication; -import google.registry.model.domain.DomainResource; -import google.registry.model.domain.GracePeriod; -import google.registry.model.domain.launch.ApplicationStatus; -import google.registry.model.domain.launch.LaunchInfoResponseExtension; -import google.registry.model.domain.launch.LaunchNotice; -import google.registry.model.domain.launch.LaunchPhase; -import google.registry.model.domain.rgp.GracePeriodStatus; -import google.registry.model.domain.secdns.DelegationSignerData; -import google.registry.model.eppcommon.StatusValue; -import google.registry.model.eppcommon.Trid; -import google.registry.model.ofy.ObjectifyService; -import google.registry.model.poll.PendingActionNotificationResponse.DomainPendingActionNotificationResponse; -import google.registry.model.poll.PollMessage; -import google.registry.model.registry.Registry; -import google.registry.model.registry.Registry.TldState; -import google.registry.model.reporting.DomainTransactionRecord; -import google.registry.model.reporting.DomainTransactionRecord.TransactionReportField; -import google.registry.model.reporting.HistoryEntry; -import google.registry.model.smd.EncodedSignedMark; -import google.registry.testing.TaskQueueHelper.TaskMatcher; -import org.joda.money.Money; -import org.joda.time.DateTime; -import org.joda.time.Duration; -import org.junit.Before; -import org.junit.Test; - -/** Unit tests for {@link DomainAllocateFlow}. */ -public class DomainAllocateFlowTest - extends ResourceFlowTestCase { - - // These constants come from "domain_allocate.xml" and its variants. - private static final DateTime APPLICATION_TIME = DateTime.parse("2010-08-16T10:00:00.0Z"); - private static final String SMD_ID = "1-1"; - - private static final String CLIENT_ID = "TheRegistrar"; - private static final Trid TRID = Trid.create("ABC-123", "server-trid"); - - /** The applicationId, expressed as a base 10 String. */ - private String applicationId = "2-TLD"; - private DomainApplication application; - private HistoryEntry historyEntry; - - @Before - public void initAllocateTest() { - setEppInput( - "domain_allocate.xml", - ImmutableMap.of("APPLICATIONID", "2-TLD", "DOMAIN", "example-one.tld")); - clock.setTo(APPLICATION_TIME); - } - - private void setupDomainApplication(String tld, TldState tldState) throws Exception { - createTld(tld, tldState); - persistResource(Registry.get(tld).asBuilder() - .setReservedLists( - persistReservedList( - tld + "-reserved", - "reserved-label,FULLY_BLOCKED", - "collision-label,NAME_COLLISION")) - .setAddGracePeriodLength(Duration.standardMinutes(9)) - .build()); - String domainName = getUniqueIdFromCommand(); - application = persistResource(newDomainApplication(domainName).asBuilder() - .setCreationTrid(TRID) - .setEncodedSignedMarks(ImmutableList.of(EncodedSignedMark.create("base64", "abcdef"))) - .setCreationTrid(TRID) - .build()); - for (int i = 1; i <= 14; ++i) { - persistActiveHost(String.format("ns%d.example.net", i)); - } - persistActiveContact("jd1234"); - persistActiveContact("sh8013"); - clock.setTo(DateTime.parse("2010-09-16T10:00:00.0Z")); - } - - private void doSuccessfulTest(int nameservers) throws Exception { - assertTransactionalFlow(true); - runFlowAssertResponse( - CommitMode.LIVE, - UserPrivileges.SUPERUSER, - loadFile("domain_allocate_response.xml")); - // Check that the domain was created and persisted with a history entry. - DomainResource domain = reloadResourceByForeignKey(); - assertAboutDomains().that(domain) - .hasOnlyOneHistoryEntryWhich() - .hasType(HistoryEntry.Type.DOMAIN_ALLOCATE); - historyEntry = getOnlyHistoryEntryOfType(domain, HistoryEntry.Type.DOMAIN_ALLOCATE); - - // The domain gets the sunrush add grace period if no nameservers were set during allocation. - boolean sunrushAddGracePeriod = (nameservers == 0); - - // The application should be marked as allocated, with a new history entry. - DomainApplication application = loadDomainApplication(applicationId, clock.nowUtc()).get(); - assertAboutApplications().that(application) - .hasApplicationStatus(ApplicationStatus.ALLOCATED).and() - .hasHistoryEntryAtIndex(0) - .which().hasType(HistoryEntry.Type.DOMAIN_APPLICATION_STATUS_UPDATE); - - String domainName = getUniqueIdFromCommand(); - // There should be a poll message for the allocated application (and one for generic autorenew). - assertPollMessages( - new PollMessage.OneTime.Builder() - .setClientId(CLIENT_ID) - .setEventTime(clock.nowUtc()) - .setMsg("Domain was allocated") - .setResponseData(ImmutableList.of(DomainPendingActionNotificationResponse.create( - domainName, true, TRID, clock.nowUtc()))) - .setResponseExtensions(ImmutableList.of(new LaunchInfoResponseExtension.Builder() - .setApplicationId(applicationId) - .setPhase(LaunchPhase.SUNRISE) // This comes from newDomainApplication() - .setApplicationStatus(ApplicationStatus.ALLOCATED) - .build())) - .setParent(historyEntry) - .build(), - new PollMessage.Autorenew.Builder() - .setTargetId(domainName) - .setClientId(CLIENT_ID) - .setEventTime(clock.nowUtc().plusYears(2)) - .setMsg("Domain was auto-renewed.") - .setParent(historyEntry) - .build()); - - // There should be a bill for the create and a recurring autorenew event. - BillingEvent.OneTime createBillingEvent = new BillingEvent.OneTime.Builder() - .setReason(Reason.CREATE) - .setFlags(ImmutableSet.of(Flag.ALLOCATION, Flag.SUNRISE)) - .setTargetId(domainName) - .setClientId(CLIENT_ID) - .setCost(Money.of(USD, 26)) - .setPeriodYears(2) - .setEventTime(clock.nowUtc()) - .setBillingTime(clock.nowUtc().plus(sunrushAddGracePeriod - ? Registry.get("tld").getSunrushAddGracePeriodLength() - : Registry.get("tld").getAddGracePeriodLength())) - .setParent(historyEntry) - .build(); - assertBillingEvents( - createBillingEvent, - new BillingEvent.Recurring.Builder() - .setReason(Reason.RENEW) - .setFlags(ImmutableSet.of(Flag.AUTO_RENEW)) - .setTargetId(domainName) - .setClientId(CLIENT_ID) - .setEventTime(domain.getRegistrationExpirationTime()) - .setRecurrenceEndTime(END_OF_TIME) - .setParent(historyEntry) - .build()); - assertGracePeriods( - domain.getGracePeriods(), - ImmutableMap.of( - GracePeriod.create( - sunrushAddGracePeriod ? GracePeriodStatus.SUNRUSH_ADD : GracePeriodStatus.ADD, - clock.nowUtc().plus(sunrushAddGracePeriod - ? Registry.get("tld").getSunrushAddGracePeriodLength() - : Registry.get("tld").getAddGracePeriodLength()), - CLIENT_ID, - null), - createBillingEvent)); - assertThat(ofy().load().key(domain.getAutorenewBillingEvent()).now().getEventTime()) - .isEqualTo(domain.getRegistrationExpirationTime()); - - assertThat(domain.getApplicationTime()).isEqualTo(APPLICATION_TIME); - assertThat(domain.getApplication()).isEqualTo(Key.create(application)); - if (nameservers == 0) { - assertNoDnsTasksEnqueued(); - } else { - assertDnsTasksEnqueued(domainName); - } - } - - @Test - public void testSuccess() throws Exception { - setupDomainApplication("tld", TldState.QUIET_PERIOD); - doSuccessfulTest(2); - } - - @Test - public void testSuccess_nameserverAndRegistrantWhitelisted() throws Exception { - setupDomainApplication("tld", TldState.QUIET_PERIOD); - persistResource( - Registry.get("tld") - .asBuilder() - .setAllowedRegistrantContactIds(ImmutableSet.of("jd1234")) - .setAllowedFullyQualifiedHostNames( - ImmutableSet.of("ns1.example.net", "ns2.example.net")) - .build()); - doSuccessfulTest(2); - } - - @Test - public void testFailure_nameserverNotWhitelisted() throws Exception { - setupDomainApplication("tld", TldState.QUIET_PERIOD); - persistResource( - Registry.get("tld") - .asBuilder() - .setAllowedRegistrantContactIds(ImmutableSet.of("jd1234")) - .setAllowedFullyQualifiedHostNames(ImmutableSet.of("ns2.example.net")) - .build()); - NameserversNotAllowedForTldException thrown = - assertThrows(NameserversNotAllowedForTldException.class, this::runFlowAsSuperuser); - assertThat(thrown).hasMessageThat().contains("ns1.example.net"); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_registrantNotWhitelisted() throws Exception { - setupDomainApplication("tld", TldState.QUIET_PERIOD); - persistResource( - Registry.get("tld") - .asBuilder() - .setAllowedRegistrantContactIds(ImmutableSet.of("someone")) - .setAllowedFullyQualifiedHostNames( - ImmutableSet.of("ns1.example.net", "ns2.example.net")) - .build()); - RegistrantNotAllowedException thrown = - assertThrows(RegistrantNotAllowedException.class, this::runFlowAsSuperuser); - assertThat(thrown).hasMessageThat().contains("jd1234"); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_emptyNameserverFailsWhitelist() throws Exception { - setupDomainApplication("tld", TldState.QUIET_PERIOD); - setEppInput("domain_allocate_no_nameservers.xml"); - persistResource( - Registry.get("tld") - .asBuilder() - .setAllowedRegistrantContactIds(ImmutableSet.of("jd1234")) - .setAllowedFullyQualifiedHostNames(ImmutableSet.of("ns1.example.net, ns2.example.net")) - .build()); - EppException thrown = - assertThrows( - NameserversNotSpecifiedForTldWithNameserverWhitelistException.class, - this::runFlowAsSuperuser); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testSuccess_domainNameserverRestricted_allNameserversAllowed() throws Exception { - setupDomainApplication("tld", TldState.QUIET_PERIOD); - persistResource( - Registry.get("tld") - .asBuilder() - .setReservedLists( - persistReservedList( - "reserved", - "example-one,NAMESERVER_RESTRICTED," - + "ns1.example.net:ns2.example.net:ns3.example.net")) - .build()); - doSuccessfulTest(2); - } - - @Test - public void testFailure_domainNameserverRestricted_someNameserversDisallowed() throws Exception { - setupDomainApplication("tld", TldState.QUIET_PERIOD); - persistResource( - Registry.get("tld") - .asBuilder() - .setReservedLists( - persistReservedList( - "reserved", - "example-one,NAMESERVER_RESTRICTED," + "ns2.example.net:ns3.example.net")) - .build()); - NameserversNotAllowedForDomainException thrown = - assertThrows(NameserversNotAllowedForDomainException.class, this::runFlowAsSuperuser); - assertThat(thrown).hasMessageThat().contains("ns1.example.net"); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_domainNameserverRestricted_noNameservers() throws Exception { - setupDomainApplication("tld", TldState.QUIET_PERIOD); - setEppInput("domain_allocate_no_nameservers.xml"); - persistResource( - Registry.get("tld") - .asBuilder() - .setReservedLists( - persistReservedList( - "reserved", - "example-one,NAMESERVER_RESTRICTED," + "ns2.example.net:ns3.example.net")) - .build()); - EppException thrown = - assertThrows( - NameserversNotSpecifiedForNameserverRestrictedDomainException.class, - this::runFlowAsSuperuser); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testSuccess_tldAndDomainNameserversWhitelistBothSatistfied() throws Exception { - setupDomainApplication("tld", TldState.QUIET_PERIOD); - persistResource( - Registry.get("tld") - .asBuilder() - .setDomainCreateRestricted(true) - .setReservedLists( - persistReservedList( - "reserved", - "example-one,NAMESERVER_RESTRICTED," - + "ns1.example.net:ns2.example.net:ns3.example.net")) - .setAllowedFullyQualifiedHostNames( - ImmutableSet.of("ns1.example.net", "ns2.example.net", "ns4.example.net")) - .build()); - doSuccessfulTest(2); - } - - @Test - public void testFailure_domainNameserversDisallowed_tldNameserversAllowed() throws Exception { - setupDomainApplication("tld", TldState.QUIET_PERIOD); - persistResource( - Registry.get("tld") - .asBuilder() - .setReservedLists( - persistReservedList( - "reserved", - "example-one,NAMESERVER_RESTRICTED," - + "ns2.example.net:ns3.example.net:ns4.example.net")) - .setAllowedFullyQualifiedHostNames( - ImmutableSet.of("ns1.example.net", "ns2.example.net", "ns3.example.net")) - .build()); - NameserversNotAllowedForDomainException thrown = - assertThrows(NameserversNotAllowedForDomainException.class, this::runFlowAsSuperuser); - assertThat(thrown).hasMessageThat().contains("ns1.example.net"); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_domainNameserversAllowed_tldNameserversDisallowed() throws Exception { - setupDomainApplication("tld", TldState.QUIET_PERIOD); - persistResource( - Registry.get("tld") - .asBuilder() - .setReservedLists( - persistReservedList( - "reserved", - "example-one,NAMESERVER_RESTRICTED," - + "ns2.example.net:ns3.example.net:ns1.example.net")) - .setAllowedFullyQualifiedHostNames( - ImmutableSet.of("ns4.example.net", "ns2.example.net", "ns3.example.net")) - .build()); - NameserversNotAllowedForTldException thrown = - assertThrows(NameserversNotAllowedForTldException.class, this::runFlowAsSuperuser); - assertThat(thrown).hasMessageThat().contains("ns1.example.net"); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testSuccess_sunrushAddGracePeriod() throws Exception { - setupDomainApplication("tld", TldState.QUIET_PERIOD); - setEppInput("domain_allocate_no_nameservers.xml"); - doSuccessfulTest(0); - } - - @Test - public void testSuccess_nonDefaultAddGracePeriod() throws Exception { - setupDomainApplication("tld", TldState.QUIET_PERIOD); - persistResource( - Registry.get("tld") - .asBuilder() - .setAddGracePeriodLength(Duration.standardMinutes(6)) - .build()); - doSuccessfulTest(2); - } - - @Test - public void testSuccess_nonDefaultSunrushAddGracePeriod() throws Exception { - setupDomainApplication("tld", TldState.QUIET_PERIOD); - persistResource( - Registry.get("tld") - .asBuilder() - .setSunrushAddGracePeriodLength(Duration.standardMinutes(9)) - .build()); - doSuccessfulTest(2); - } - - @Test - public void testSuccess_existedButWasDeleted() throws Exception { - setupDomainApplication("tld", TldState.QUIET_PERIOD); - persistDeletedDomain(getUniqueIdFromCommand(), clock.nowUtc().minusDays(1)); - clock.advanceOneMilli(); - doSuccessfulTest(2); - } - - @Test - public void testSuccess_maxNumberOfNameservers() throws Exception { - setupDomainApplication("tld", TldState.QUIET_PERIOD); - setEppInput("domain_allocate_13_nameservers.xml"); - doSuccessfulTest(13); - } - - @Test - public void testSuccess_secDns() throws Exception { - setupDomainApplication("tld", TldState.QUIET_PERIOD); - setEppInput("domain_allocate_dsdata.xml"); - doSuccessfulTest(2); - assertAboutDomains() - .that(reloadResourceByForeignKey()) - .hasExactlyDsData( - DelegationSignerData.create(12345, 3, 1, base16().decode("49FD46E6C4B45C55D4AC"))); - } - - @Test - public void testSuccess_secDnsMaxRecords() throws Exception { - setupDomainApplication("tld", TldState.QUIET_PERIOD); - setEppInput("domain_allocate_dsdata_8_records.xml"); - doSuccessfulTest(2); - assertThat(getOnlyGlobalResource(DomainResource.class)).isNotNull(); - assertThat(reloadResourceByForeignKey().getDsData()).hasSize(8); - } - - @Test - public void testSuccess_idn() throws Exception { - setupDomainApplication("tld", TldState.QUIET_PERIOD); - setEppInput("domain_allocate_idn.xml"); - clock.advanceOneMilli(); - runFlowAsSuperuser(); - assertThat(getOnlyGlobalResource(DomainResource.class)).isNotNull(); - assertDnsTasksEnqueued("xn--abc-873b2e7eb1k8a4lpjvv.tld"); - } - - private void doSuccessfulClaimsNoticeTest() throws Exception { - setEppInput("domain_allocate_claims_notice.xml"); - runFlowAsSuperuser(); - assertAboutDomains() - .that(getOnlyGlobalResource(DomainResource.class)) - .hasLaunchNotice( - LaunchNotice.create( - "370d0b7c9223372036854775807", - "tmch", - DateTime.parse("2011-08-16T09:00:00.0Z"), - DateTime.parse("2010-07-16T09:00:00.0Z"))); - } - - @Test - public void testSuccess_claimsNotice() throws Exception { - setupDomainApplication("tld", TldState.QUIET_PERIOD); - doSuccessfulClaimsNoticeTest(); - String expectedCsv = - String.format( - "%s,example-one.tld,370d0b7c9223372036854775807,1," - + "2010-09-16T10:00:00.000Z,2010-07-16T09:00:00.000Z,2010-08-16T10:00:00.000Z", - reloadResourceByForeignKey().getRepoId()); - assertTasksEnqueued("lordn-claims", new TaskMatcher().payload(expectedCsv).tag("tld")); - } - - @Test - public void testSuccess_expiredClaim() throws Exception { - setupDomainApplication("tld", TldState.QUIET_PERIOD); - clock.setTo(DateTime.parse("2011-08-17T09:00:00.0Z")); - doSuccessfulClaimsNoticeTest(); - String expectedCsv = - String.format( - "%s,example-one.tld,370d0b7c9223372036854775807,1," - + "2011-08-17T09:00:00.000Z,2010-07-16T09:00:00.000Z,2010-08-16T10:00:00.000Z", - reloadResourceByForeignKey().getRepoId()); - assertTasksEnqueued("lordn-claims", new TaskMatcher().payload(expectedCsv).tag("tld")); - } - - @Test - public void testSuccess_smdId() throws Exception { - setupDomainApplication("tld", TldState.QUIET_PERIOD); - setEppInput("domain_allocate_smd_id.xml"); - doSuccessfulTest(2); - DomainResource domain = getOnlyGlobalResource(DomainResource.class); - assertThat(domain.getSmdId()).isEqualTo(SMD_ID); - String expectedCsv = - String.format( - "%s,example-one.tld,1-1,1,2010-09-16T10:00:00.000Z,2010-08-16T10:00:00.000Z", - domain.getRepoId()); - assertTasksEnqueued("lordn-sunrise", new TaskMatcher().payload(expectedCsv).tag("tld")); - } - - @Test - public void testSuccess_collision() throws Exception { - setupDomainApplication("tld", TldState.QUIET_PERIOD); - setEppInput("domain_allocate_collision.xml"); - assertNoDnsTasksEnqueued(); - runFlowAsSuperuser(); - assertAboutDomains() - .that(getOnlyGlobalResource(DomainResource.class)) - .hasStatusValue(StatusValue.SERVER_HOLD); - assertNoDnsTasksEnqueued(); - } - - @Test - public void testSuccess_reserved() throws Exception { - setupDomainApplication("tld", TldState.QUIET_PERIOD); - setEppInput("domain_allocate_reserved.xml"); - runFlowAsSuperuser(); - assertThat(getOnlyGlobalResource(DomainResource.class)).isNotNull(); - } - - @Test - public void testSuccess_premiumName() throws Exception { - setEppInput("domain_allocate_premium.xml"); - setupDomainApplication("example", TldState.QUIET_PERIOD); - persistResource(Registry.get("example").asBuilder().setPremiumPriceAckRequired(true).build()); - clock.advanceOneMilli(); - runFlowAsSuperuser(); - } - - @Test - public void testSuccess_hexApplicationId() throws Exception { - setEppInput( - "domain_allocate.xml", - ImmutableMap.of("APPLICATIONID", "A-TLD", "DOMAIN", "example-one.tld")); - applicationId = "A-TLD"; - // Grab the next 8 ids so that when the application is created it gets dec 10, or hex A. - // (one additional ID goes to the reserved list created before the application). - for (int i = 1; i <= 8; i++) { - ObjectifyService.allocateId(); - } - setupDomainApplication("tld", TldState.QUIET_PERIOD); - doSuccessfulTest(2); - } - - @Test - public void testFailure_expiredAcceptance() throws Exception { - setupDomainApplication("tld", TldState.QUIET_PERIOD); - doSuccessfulClaimsNoticeTest(); - assertNoTasksEnqueued("lordn-sunrise"); - } - - @Test - public void testSuccess_missingClaimsNotice() throws Exception { - setupDomainApplication("tld", TldState.QUIET_PERIOD); - persistClaimsList( - ImmutableMap.of("example-one", "2013041500/2/6/9/rJ1NrDO92vDsAzf7EQzgjX4R0000000001")); - doSuccessfulTest(2); - } - - @Test - public void testFailure_alreadyExists() throws Exception { - setupDomainApplication("tld", TldState.QUIET_PERIOD); - persistActiveDomain(getUniqueIdFromCommand()); - EppException thrown = - assertThrows(ResourceAlreadyExistsException.class, this::runFlowAsSuperuser); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testSuccess_predelegation() throws Exception { - setupDomainApplication("tld", TldState.QUIET_PERIOD); - createTld("tld", TldState.PREDELEGATION); - doSuccessfulTest(2); - } - - @Test - public void testSuccess_sunrise() throws Exception { - setupDomainApplication("tld", TldState.QUIET_PERIOD); - createTld("tld", TldState.SUNRISE); - doSuccessfulTest(2); - } - - @Test - public void testSuccess_sunrush() throws Exception { - setupDomainApplication("tld", TldState.QUIET_PERIOD); - createTld("tld", TldState.SUNRUSH); - doSuccessfulTest(2); - } - - @Test - public void testSuccess_quietPeriod() throws Exception { - setupDomainApplication("tld", TldState.QUIET_PERIOD); - createTld("tld", TldState.QUIET_PERIOD); - doSuccessfulTest(2); - } - - @Test - public void testFailure_applicationDeleted() throws Exception { - setupDomainApplication("tld", TldState.QUIET_PERIOD); - persistResource(application.asBuilder().setDeletionTime(clock.nowUtc()).build()); - EppException thrown = assertThrows(MissingApplicationException.class, this::runFlowAsSuperuser); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_applicationRejected() throws Exception { - setupDomainApplication("tld", TldState.QUIET_PERIOD); - persistResource( - application.asBuilder().setApplicationStatus(ApplicationStatus.REJECTED).build()); - EppException thrown = assertThrows(HasFinalStatusException.class, this::runFlowAsSuperuser); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_applicationAllocated() throws Exception { - setupDomainApplication("tld", TldState.QUIET_PERIOD); - persistResource( - application.asBuilder().setApplicationStatus(ApplicationStatus.ALLOCATED).build()); - EppException thrown = assertThrows(HasFinalStatusException.class, this::runFlowAsSuperuser); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_applicationDoesNotExist() throws Exception { - setupDomainApplication("tld", TldState.QUIET_PERIOD); - setEppInput("domain_allocate_bad_application_roid.xml"); - EppException thrown = assertThrows(MissingApplicationException.class, this::runFlowAsSuperuser); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_onlySuperuserCanAllocate() throws Exception { - setupDomainApplication("tld", TldState.GENERAL_AVAILABILITY); - clock.advanceOneMilli(); - setEppInput("domain_allocate_no_nameservers.xml"); - assertTransactionalFlow(true); - EppException thrown = - assertThrows( - OnlySuperuserCanAllocateException.class, - () -> runFlow(CommitMode.LIVE, UserPrivileges.NORMAL)); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_max10Years() throws Exception { - setupDomainApplication("tld", TldState.QUIET_PERIOD); - setEppInput("domain_allocate_11_years.xml"); - EppException thrown = - assertThrows(ExceedsMaxRegistrationYearsException.class, this::runFlowAsSuperuser); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testIcannActivityReportField_getsLogged() throws Exception { - setupDomainApplication("tld", TldState.QUIET_PERIOD); - runFlow(CommitMode.LIVE, UserPrivileges.SUPERUSER); - assertIcannReportingActivityFieldLogged("srs-dom-create"); - assertTldsFieldLogged("tld"); - // Ensure we log the client ID for srs-dom-create so we can also use it for attempted-adds. - assertClientIdFieldLogged("TheRegistrar"); - } - - @Test - public void testIcannTransactionRecord_getsStored() throws Exception { - setupDomainApplication("tld", TldState.QUIET_PERIOD); - persistResource( - Registry.get("tld") - .asBuilder() - .setRenewGracePeriodLength(Duration.standardMinutes(9)) - .build()); - runFlow(CommitMode.LIVE, UserPrivileges.SUPERUSER); - DomainResource domain = reloadResourceByForeignKey(); - HistoryEntry historyEntry = - getOnlyHistoryEntryOfType(domain, HistoryEntry.Type.DOMAIN_ALLOCATE); - assertThat(historyEntry.getDomainTransactionRecords()) - .containsExactly( - DomainTransactionRecord.create( - "tld", - historyEntry.getModificationTime().plusMinutes(9), - TransactionReportField.netAddsFieldFromYears(2), - 1)); - } -} diff --git a/javatests/google/registry/flows/domain/DomainApplicationCreateFlowTest.java b/javatests/google/registry/flows/domain/DomainApplicationCreateFlowTest.java deleted file mode 100644 index ebeed3c7f..000000000 --- a/javatests/google/registry/flows/domain/DomainApplicationCreateFlowTest.java +++ /dev/null @@ -1,1771 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.flows.domain; - -import static com.google.common.collect.Iterables.getLast; -import static com.google.common.io.BaseEncoding.base16; -import static com.google.common.truth.Truth.assertThat; -import static google.registry.model.index.DomainApplicationIndex.loadActiveApplicationsByDomainName; -import static google.registry.model.ofy.ObjectifyService.ofy; -import static google.registry.testing.DatastoreHelper.assertNoBillingEvents; -import static google.registry.testing.DatastoreHelper.createTld; -import static google.registry.testing.DatastoreHelper.createTlds; -import static google.registry.testing.DatastoreHelper.deleteTld; -import static google.registry.testing.DatastoreHelper.loadRegistrar; -import static google.registry.testing.DatastoreHelper.newDomainApplication; -import static google.registry.testing.DatastoreHelper.persistActiveContact; -import static google.registry.testing.DatastoreHelper.persistActiveDomain; -import static google.registry.testing.DatastoreHelper.persistActiveHost; -import static google.registry.testing.DatastoreHelper.persistReservedList; -import static google.registry.testing.DatastoreHelper.persistResource; -import static google.registry.testing.DomainApplicationSubject.assertAboutApplications; -import static google.registry.testing.EppExceptionSubject.assertAboutEppExceptions; -import static google.registry.testing.JUnitBackports.assertThrows; -import static google.registry.util.DateTimeUtils.START_OF_TIME; -import static java.util.Comparator.comparing; -import static org.joda.money.CurrencyUnit.EUR; -import static org.joda.money.CurrencyUnit.USD; - -import com.google.common.base.Strings; -import com.google.common.collect.ImmutableMap; -import com.google.common.collect.ImmutableSet; -import com.google.common.collect.ImmutableSortedMap; -import google.registry.flows.EppException; -import google.registry.flows.EppException.UnimplementedExtensionException; -import google.registry.flows.ResourceFlowTestCase; -import google.registry.flows.domain.DomainApplicationCreateFlow.LandrushApplicationDisallowedDuringSunriseException; -import google.registry.flows.domain.DomainApplicationCreateFlow.NoticeCannotBeUsedWithSignedMarkException; -import google.registry.flows.domain.DomainApplicationCreateFlow.SunriseApplicationDisallowedDuringLandrushException; -import google.registry.flows.domain.DomainApplicationCreateFlow.UncontestedSunriseApplicationBlockedInLandrushException; -import google.registry.flows.domain.DomainFlowTmchUtils.Base64RequiredForEncodedSignedMarksException; -import google.registry.flows.domain.DomainFlowTmchUtils.FoundMarkExpiredException; -import google.registry.flows.domain.DomainFlowTmchUtils.FoundMarkNotYetValidException; -import google.registry.flows.domain.DomainFlowTmchUtils.NoMarksFoundMatchingDomainException; -import google.registry.flows.domain.DomainFlowTmchUtils.SignedMarkCertificateExpiredException; -import google.registry.flows.domain.DomainFlowTmchUtils.SignedMarkCertificateInvalidException; -import google.registry.flows.domain.DomainFlowTmchUtils.SignedMarkCertificateNotYetValidException; -import google.registry.flows.domain.DomainFlowTmchUtils.SignedMarkCertificateRevokedException; -import google.registry.flows.domain.DomainFlowTmchUtils.SignedMarkCertificateSignatureException; -import google.registry.flows.domain.DomainFlowTmchUtils.SignedMarkEncodingErrorException; -import google.registry.flows.domain.DomainFlowTmchUtils.SignedMarkParsingErrorException; -import google.registry.flows.domain.DomainFlowTmchUtils.SignedMarkRevokedErrorException; -import google.registry.flows.domain.DomainFlowTmchUtils.SignedMarkSignatureException; -import google.registry.flows.domain.DomainFlowTmchUtils.SignedMarksMustBeEncodedException; -import google.registry.flows.domain.DomainFlowTmchUtils.TooManySignedMarksException; -import google.registry.flows.domain.DomainFlowUtils.AcceptedTooLongAgoException; -import google.registry.flows.domain.DomainFlowUtils.BadCommandForRegistryPhaseException; -import google.registry.flows.domain.DomainFlowUtils.BadDomainNameCharacterException; -import google.registry.flows.domain.DomainFlowUtils.BadDomainNamePartsCountException; -import google.registry.flows.domain.DomainFlowUtils.BadPeriodUnitException; -import google.registry.flows.domain.DomainFlowUtils.ClaimsPeriodEndedException; -import google.registry.flows.domain.DomainFlowUtils.CurrencyUnitMismatchException; -import google.registry.flows.domain.DomainFlowUtils.CurrencyValueScaleException; -import google.registry.flows.domain.DomainFlowUtils.DashesInThirdAndFourthException; -import google.registry.flows.domain.DomainFlowUtils.DomainLabelTooLongException; -import google.registry.flows.domain.DomainFlowUtils.DomainNameExistsAsTldException; -import google.registry.flows.domain.DomainFlowUtils.DomainReservedException; -import google.registry.flows.domain.DomainFlowUtils.DuplicateContactForRoleException; -import google.registry.flows.domain.DomainFlowUtils.EmptyDomainNamePartException; -import google.registry.flows.domain.DomainFlowUtils.ExceedsMaxRegistrationYearsException; -import google.registry.flows.domain.DomainFlowUtils.ExpiredClaimException; -import google.registry.flows.domain.DomainFlowUtils.FeesMismatchException; -import google.registry.flows.domain.DomainFlowUtils.FeesRequiredForPremiumNameException; -import google.registry.flows.domain.DomainFlowUtils.InvalidIdnDomainLabelException; -import google.registry.flows.domain.DomainFlowUtils.InvalidPunycodeException; -import google.registry.flows.domain.DomainFlowUtils.InvalidTcnIdChecksumException; -import google.registry.flows.domain.DomainFlowUtils.InvalidTrademarkValidatorException; -import google.registry.flows.domain.DomainFlowUtils.LaunchPhaseMismatchException; -import google.registry.flows.domain.DomainFlowUtils.LeadingDashException; -import google.registry.flows.domain.DomainFlowUtils.LinkedResourcesDoNotExistException; -import google.registry.flows.domain.DomainFlowUtils.MalformedTcnIdException; -import google.registry.flows.domain.DomainFlowUtils.MaxSigLifeNotSupportedException; -import google.registry.flows.domain.DomainFlowUtils.MissingClaimsNoticeException; -import google.registry.flows.domain.DomainFlowUtils.MissingContactTypeException; -import google.registry.flows.domain.DomainFlowUtils.NameserversNotAllowedForDomainException; -import google.registry.flows.domain.DomainFlowUtils.NameserversNotAllowedForTldException; -import google.registry.flows.domain.DomainFlowUtils.NameserversNotSpecifiedForNameserverRestrictedDomainException; -import google.registry.flows.domain.DomainFlowUtils.NameserversNotSpecifiedForTldWithNameserverWhitelistException; -import google.registry.flows.domain.DomainFlowUtils.NotAuthorizedForTldException; -import google.registry.flows.domain.DomainFlowUtils.PremiumNameBlockedException; -import google.registry.flows.domain.DomainFlowUtils.RegistrantNotAllowedException; -import google.registry.flows.domain.DomainFlowUtils.RegistrarMustBeActiveForThisOperationException; -import google.registry.flows.domain.DomainFlowUtils.TldDoesNotExistException; -import google.registry.flows.domain.DomainFlowUtils.TooManyDsRecordsException; -import google.registry.flows.domain.DomainFlowUtils.TooManyNameserversException; -import google.registry.flows.domain.DomainFlowUtils.TrailingDashException; -import google.registry.flows.domain.DomainFlowUtils.UnexpectedClaimsNoticeException; -import google.registry.flows.domain.DomainFlowUtils.UnsupportedFeeAttributeException; -import google.registry.flows.domain.DomainFlowUtils.UnsupportedMarkTypeException; -import google.registry.flows.exceptions.ResourceAlreadyExistsException; -import google.registry.model.domain.DomainApplication; -import google.registry.model.domain.launch.ApplicationStatus; -import google.registry.model.domain.launch.LaunchNotice; -import google.registry.model.domain.launch.LaunchPhase; -import google.registry.model.domain.secdns.DelegationSignerData; -import google.registry.model.registrar.Registrar; -import google.registry.model.registrar.Registrar.State; -import google.registry.model.registry.Registry; -import google.registry.model.registry.Registry.TldState; -import google.registry.model.registry.label.ReservedList; -import google.registry.model.reporting.HistoryEntry; -import google.registry.model.smd.SignedMarkRevocationList; -import google.registry.tmch.TmchXmlSignature; -import java.security.GeneralSecurityException; -import java.util.List; -import org.joda.money.CurrencyUnit; -import org.joda.money.Money; -import org.joda.time.DateTime; -import org.junit.Before; -import org.junit.Test; - -/** Unit tests for {@link DomainApplicationCreateFlow}. */ -public class DomainApplicationCreateFlowTest - extends ResourceFlowTestCase { - - private static final String CLAIMS_KEY = "2013041500/2/6/9/rJ1NrDO92vDsAzf7EQzgjX4R0000000001"; - - /** This is the id of the SMD stored in "domain_create_sunrise_encoded_signed_mark.xml". */ - public static final String SMD_ID = "0000001761376042759136-65535"; - - private ReservedList createReservedList() { - return persistReservedList( - "tld-reserved", "testandvalidate,FULLY_BLOCKED", "test---validate,ALLOWED_IN_SUNRISE"); - } - - @Before - public void setUp() { - clock.setTo(DateTime.parse("2014-09-09T09:09:09Z")); - setEppInput("domain_create_sunrise_encoded_signed_mark.xml"); - createTld("tld", TldState.SUNRISE); - persistResource(Registry.get("tld").asBuilder().setReservedLists(createReservedList()).build()); - } - - /** Create host and contact entries for testing. */ - private void persistContactsAndHosts() { - for (int i = 1; i <= 14; ++i) { - persistActiveHost(String.format("ns%d.example.net", i)); - } - persistActiveContact("jd1234"); - persistActiveContact("sh8013"); - clock.advanceOneMilli(); - } - - private void doSuccessfulTest(String responseXmlFile, boolean sunriseApplication) - throws Exception { - doSuccessfulTest(responseXmlFile, sunriseApplication, 1, null, null); - } - - private void doSuccessfulTest(String responseXmlFile, boolean sunriseApplication, int years) - throws Exception { - doSuccessfulTest(responseXmlFile, sunriseApplication, years, null, null); - } - - private void doSuccessfulTest( - String responseXmlFile, - boolean sunriseApplication, - String feeExtensionVersion, - String feeExtensionNamespace) - throws Exception { - doSuccessfulTest( - responseXmlFile, sunriseApplication, 1, feeExtensionVersion, feeExtensionNamespace); - } - - private void doSuccessfulTest( - String responseXmlFile, - boolean sunriseApplication, - int years, - String feeExtensionVersion, - String feeExtensionNamespace) - throws Exception { - assertTransactionalFlow(true); - runFlowAssertResponse( - (feeExtensionVersion == null) - ? loadFile(responseXmlFile) - : loadFile( - responseXmlFile, - ImmutableMap.of( - "FEE_VERSION", feeExtensionVersion, "FEE_NS", feeExtensionNamespace)), - "epp.response.extension.creData.applicationID", - "epp.response.resData.creData.crDate"); - // Check that the domain application was created and persisted with a history entry. - // We want the one with the newest creation time, but lacking an index we need this code. - List applications = ofy().load().type(DomainApplication.class).list(); - applications.sort(comparing(DomainApplication::getCreationTime)); - assertAboutApplications() - .that(getLast(applications)) - .hasFullyQualifiedDomainName(getUniqueIdFromCommand()) - .and() - .hasNumEncodedSignedMarks(sunriseApplication ? 1 : 0) - .and() - .hasPeriodYears(years) - .and() - .hasOnlyOneHistoryEntryWhich() - .hasType(HistoryEntry.Type.DOMAIN_APPLICATION_CREATE) - .and() - .hasPeriodYears(years); - assertNoBillingEvents(); - assertThat(loadActiveApplicationsByDomainName(getUniqueIdFromCommand(), clock.nowUtc())) - .containsExactlyElementsIn(applications); - assertEppResourceIndexEntityFor(getLast(applications)); - } - - private void runSuperuserFlow(String filename) throws Exception { - runFlowAssertResponse( - CommitMode.LIVE, - UserPrivileges.SUPERUSER, - loadFile(filename), - "epp.response.extension.creData.applicationID", - "epp.response.resData.creData.crDate", - "epp.response.extension.creData.phase"); - } - - @Test - public void testDryRun_sunrushApplication() throws Exception { - createTld("tld", TldState.SUNRUSH); - setEppInput("domain_create_sunrush_encoded_signed_mark.xml"); - persistContactsAndHosts(); - clock.advanceOneMilli(); - dryRunFlowAssertResponse( - loadFile("domain_create_sunrush_encoded_signed_mark_response.xml"), - "epp.response.extension.creData.applicationID", - "epp.response.resData.creData.crDate"); - } - - @Test - public void testFailure_signedMarkCorrupt() { - createTld("tld", TldState.SUNRUSH); - setEppInput("domain_create_sunrush_encoded_signed_mark_corrupt.xml"); - persistContactsAndHosts(); - clock.advanceOneMilli(); - EppException thrown = assertThrows(SignedMarkParsingErrorException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_signedMarkCertificateRevoked() { - createTld("tld", TldState.SUNRUSH); - setEppInput("domain_create_sunrush_encoded_signed_mark_revoked_cert.xml"); - persistContactsAndHosts(); - clock.advanceOneMilli(); - EppException thrown = assertThrows(SignedMarkCertificateRevokedException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_signedMarkCertificateExpired() { - createTld("tld", TldState.SUNRUSH); - setEppInput("domain_create_sunrush_encoded_signed_mark.xml"); - persistContactsAndHosts(); - clock.advanceOneMilli(); - clock.setTo(DateTime.parse("2022-01-01")); - clock.setTo(DateTime.parse("2022-01-01")); - EppException thrown = assertThrows(SignedMarkCertificateExpiredException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_signedMarkCertificateNotYetValid() { - createTld("tld", TldState.SUNRUSH); - setEppInput("domain_create_sunrush_encoded_signed_mark.xml"); - persistContactsAndHosts(); - clock.advanceOneMilli(); - clock.setTo(DateTime.parse("2012-07-22T00:01:00Z")); - EppException thrown = - assertThrows(SignedMarkCertificateNotYetValidException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_signedMarkCertificateCorrupt() { - useTmchProdCert(); - createTld("tld", TldState.SUNRUSH); - setEppInput("domain_create_sunrush_encoded_signed_mark_certificate_corrupt.xml"); - persistContactsAndHosts(); - clock.advanceOneMilli(); - // It's hard to make the real verification code throw a GeneralSecurityException. Instead, - // replace the TmchXmlSignature with a stub that throws it for us. - this.testTmchXmlSignature = - new TmchXmlSignature(null) { - @Override - public void verify(byte[] smdXml) throws GeneralSecurityException { - throw new GeneralSecurityException(); - } - }; - EppException thrown = assertThrows(SignedMarkCertificateInvalidException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_signedMarkCertificateSignature() { - useTmchProdCert(); - createTld("tld", TldState.SUNRUSH); - setEppInput("domain_create_sunrush_encoded_signed_mark.xml"); - persistContactsAndHosts(); - clock.advanceOneMilli(); - EppException thrown = - assertThrows(SignedMarkCertificateSignatureException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_signedMarkSignature() { - createTld("tld", TldState.SUNRUSH); - setEppInput("domain_create_sunrush_encoded_signed_mark_signature_corrupt.xml"); - persistContactsAndHosts(); - clock.advanceOneMilli(); - EppException thrown = assertThrows(SignedMarkSignatureException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testDryRun_landrushApplicationInSunrush() throws Exception { - createTld("tld", TldState.SUNRUSH); - setEppInput("domain_create_sunrush.xml"); - persistContactsAndHosts(); - clock.advanceOneMilli(); - dryRunFlowAssertResponse( - loadFile("domain_create_sunrush_response.xml"), - "epp.response.extension.creData.applicationID", - "epp.response.resData.creData.crDate"); - } - - @Test - public void testDryRun_landrushWithClaims() throws Exception { - createTld("tld", TldState.SUNRUSH); - clock.setTo(DateTime.parse("2009-08-16T09:00:00.0Z")); - setEppInput("domain_create_sunrush_claim_notice.xml"); - persistClaimsList(ImmutableMap.of("example-one", CLAIMS_KEY)); - persistContactsAndHosts(); - clock.advanceOneMilli(); - dryRunFlowAssertResponse( - loadFile("domain_create_sunrush_response_claims.xml"), - "epp.response.extension.creData.applicationID", - "epp.response.resData.creData.crDate"); - } - - @Test - public void testSuccess_sunrushApplication() throws Exception { - createTld("tld", TldState.SUNRUSH); - setEppInput("domain_create_sunrush_encoded_signed_mark.xml"); - persistContactsAndHosts(); - clock.advanceOneMilli(); - doSuccessfulTest("domain_create_sunrush_encoded_signed_mark_response.xml", true); - assertAboutApplications() - .that(getOnlyGlobalResource(DomainApplication.class)) - .hasApplicationStatus(ApplicationStatus.VALIDATED); - } - - @Test - public void testSuccess_sunrushApplicationReservedAllowedInSunrise() throws Exception { - createTld("tld", TldState.SUNRUSH); - setEppInput("domain_create_sunrush_allowedinsunrise.xml"); - persistContactsAndHosts(); - clock.advanceOneMilli(); - doSuccessfulTest("domain_create_sunrush_allowedinsunrise_response.xml", true); - assertAboutApplications() - .that(getOnlyGlobalResource(DomainApplication.class)) - .hasApplicationStatus(ApplicationStatus.VALIDATED); - } - - @Test - public void testSuccess_smdTrumpsClaimsList() throws Exception { - persistClaimsList(ImmutableMap.of("test-validate", CLAIMS_KEY)); - createTld("tld", TldState.SUNRUSH); - setEppInput("domain_create_sunrush_encoded_signed_mark.xml"); - persistContactsAndHosts(); - clock.advanceOneMilli(); - doSuccessfulTest("domain_create_sunrush_encoded_signed_mark_response.xml", true); - assertAboutApplications() - .that(getOnlyGlobalResource(DomainApplication.class)) - .hasApplicationStatus(ApplicationStatus.VALIDATED); - } - - @Test - public void testSuccess_landrushApplicationInSunrush() throws Exception { - createTld("tld", TldState.SUNRUSH); - setEppInput("domain_create_sunrush.xml"); - persistContactsAndHosts(); - clock.advanceOneMilli(); - doSuccessfulTest("domain_create_sunrush_response.xml", false); - } - - @Test - public void testFailure_landrushApplicationReservedAllowedInSunrise() { - createTld("tld", TldState.SUNRUSH); - persistResource( - Registry.get("tld") - .asBuilder() - .setReservedLists(ImmutableSet.of(createReservedList())) - .build()); - setEppInput("domain_create_landrush_allowedinsunrise.xml"); - persistContactsAndHosts(); - clock.advanceOneMilli(); - EppException thrown = assertThrows(DomainReservedException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_landrushApplicationPremiumBlocked() { - createTld("example", TldState.SUNRUSH); - setEppInput("domain_create_landrush_premium.xml"); - persistContactsAndHosts(); - clock.advanceOneMilli(); - // Modify the Registrar to block premium names. - persistResource(loadRegistrar("TheRegistrar").asBuilder().setBlockPremiumNames(true).build()); - EppException thrown = assertThrows(PremiumNameBlockedException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_landrushFeeNotProvidedOnPremiumName_whenRegistryRequiresFeeAcking() { - createTld("example", TldState.SUNRUSH); - setEppInput("domain_create_landrush_premium.xml"); - persistContactsAndHosts(); - clock.advanceOneMilli(); - EppException thrown = assertThrows(FeesRequiredForPremiumNameException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_landrushFeeNotProvidedOnPremiumName_whenRegistrarRequiresFeeAcking() { - createTld("example", TldState.SUNRUSH); - persistResource(Registry.get("example").asBuilder().setPremiumPriceAckRequired(false).build()); - persistResource( - loadRegistrar("TheRegistrar").asBuilder().setPremiumPriceAckRequired(true).build()); - setEppInput("domain_create_landrush_premium.xml"); - persistContactsAndHosts(); - clock.advanceOneMilli(); - EppException thrown = assertThrows(FeesRequiredForPremiumNameException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testSuccess_landrushWithClaimsInSunrush() throws Exception { - createTld("tld", TldState.SUNRUSH); - clock.setTo(DateTime.parse("2009-08-16T09:00:00.0Z")); - setEppInput("domain_create_sunrush_claim_notice.xml"); - persistClaimsList(ImmutableMap.of("example-one", CLAIMS_KEY)); - persistContactsAndHosts(); - clock.advanceOneMilli(); - doSuccessfulTest("domain_create_sunrush_response_claims.xml", false); - assertAboutApplications() - .that(getOnlyGlobalResource(DomainApplication.class)) - .hasLaunchNotice( - LaunchNotice.create( - "370d0b7c9223372036854775807", - "tmch", - DateTime.parse("2010-08-16T09:00:00.0Z"), - DateTime.parse("2009-08-16T09:00:00.0Z"))) - .and() - .hasApplicationStatus(ApplicationStatus.VALIDATED); - } - - @Test - public void testSuccess_landrushWithoutClaimsInSunrush_forClaimsListName_afterClaimsPeriodEnd() - throws Exception { - createTld("tld", TldState.SUNRUSH); - persistClaimsList(ImmutableMap.of("test-validate", CLAIMS_KEY)); - setEppInput("domain_create_sunrush.xml"); - persistContactsAndHosts(); - persistResource(Registry.get("tld").asBuilder().setClaimsPeriodEnd(clock.nowUtc()).build()); - clock.advanceOneMilli(); - doSuccessfulTest("domain_create_sunrush_response.xml", false); - assertAboutApplications() - .that(getOnlyGlobalResource(DomainApplication.class)) - .hasLaunchNotice(null) - .and() - .hasApplicationStatus(ApplicationStatus.VALIDATED); - } - - @Test - public void testSuccess_landrushApplication() throws Exception { - createTld("tld", TldState.LANDRUSH); - setEppInput("domain_create_landrush.xml"); - persistContactsAndHosts(); - clock.advanceOneMilli(); - doSuccessfulTest("domain_create_landrush_response.xml", false); - } - - @Test - public void testSuccess_landrushApplicationWithFee_v06() throws Exception { - createTld("tld", TldState.LANDRUSH); - setEppInput("domain_create_landrush_fee.xml", ImmutableMap.of("FEE_VERSION", "0.6")); - persistContactsAndHosts(); - clock.advanceOneMilli(); - doSuccessfulTest("domain_create_landrush_fee_response.xml", false, "0.6", "fee"); - } - - @Test - public void testSuccess_landrushApplicationWithFee_v11() throws Exception { - createTld("tld", TldState.LANDRUSH); - setEppInput("domain_create_landrush_fee.xml", ImmutableMap.of("FEE_VERSION", "0.11")); - persistContactsAndHosts(); - clock.advanceOneMilli(); - doSuccessfulTest("domain_create_landrush_fee_response.xml", false, "0.11", "fee11"); - } - - @Test - public void testSuccess_landrushApplicationWithFee_v12() throws Exception { - createTld("tld", TldState.LANDRUSH); - setEppInput("domain_create_landrush_fee.xml", ImmutableMap.of("FEE_VERSION", "0.12")); - persistContactsAndHosts(); - clock.advanceOneMilli(); - doSuccessfulTest("domain_create_landrush_fee_response.xml", false, "0.12", "fee12"); - } - - @Test - public void testSuccess_landrushApplicationWithFee_withDefaultAttributes_v06() throws Exception { - createTld("tld", TldState.LANDRUSH); - setEppInput("domain_create_landrush_fee_defaults.xml", ImmutableMap.of("FEE_VERSION", "0.6")); - persistContactsAndHosts(); - clock.advanceOneMilli(); - doSuccessfulTest("domain_create_landrush_fee_response.xml", false, "0.6", "fee"); - } - - @Test - public void testSuccess_landrushApplicationWithFee_withDefaultAttributes_v11() throws Exception { - createTld("tld", TldState.LANDRUSH); - setEppInput("domain_create_landrush_fee_defaults.xml", ImmutableMap.of("FEE_VERSION", "0.11")); - persistContactsAndHosts(); - clock.advanceOneMilli(); - doSuccessfulTest("domain_create_landrush_fee_response.xml", false, "0.11", "fee11"); - } - - @Test - public void testSuccess_landrushApplicationWithFee_withDefaultAttributes_v12() throws Exception { - createTld("tld", TldState.LANDRUSH); - setEppInput("domain_create_landrush_fee_defaults.xml", ImmutableMap.of("FEE_VERSION", "0.12")); - persistContactsAndHosts(); - clock.advanceOneMilli(); - doSuccessfulTest("domain_create_landrush_fee_response.xml", false, "0.12", "fee12"); - } - - @Test - public void testFailure_landrushApplicationWithRefundableFee_v06() { - createTld("tld", TldState.LANDRUSH); - persistContactsAndHosts(); - clock.advanceOneMilli(); - setEppInput("domain_create_landrush_fee_refundable.xml", ImmutableMap.of("FEE_VERSION", "0.6")); - EppException thrown = assertThrows(UnsupportedFeeAttributeException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_landrushApplicationWithRefundableFee_v11() { - createTld("tld", TldState.LANDRUSH); - persistContactsAndHosts(); - clock.advanceOneMilli(); - setEppInput( - "domain_create_landrush_fee_refundable.xml", ImmutableMap.of("FEE_VERSION", "0.11")); - EppException thrown = assertThrows(UnsupportedFeeAttributeException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_landrushApplicationWithRefundableFee_v12() { - createTld("tld", TldState.LANDRUSH); - persistContactsAndHosts(); - clock.advanceOneMilli(); - setEppInput( - "domain_create_landrush_fee_refundable.xml", ImmutableMap.of("FEE_VERSION", "0.12")); - EppException thrown = assertThrows(UnsupportedFeeAttributeException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_landrushApplicationWithGracePeriodFee_v06() { - createTld("tld", TldState.LANDRUSH); - persistContactsAndHosts(); - clock.advanceOneMilli(); - setEppInput( - "domain_create_landrush_fee_grace_period.xml", ImmutableMap.of("FEE_VERSION", "0.6")); - EppException thrown = assertThrows(UnsupportedFeeAttributeException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_landrushApplicationWithGracePeriodFee_v11() { - createTld("tld", TldState.LANDRUSH); - persistContactsAndHosts(); - clock.advanceOneMilli(); - setEppInput( - "domain_create_landrush_fee_grace_period.xml", ImmutableMap.of("FEE_VERSION", "0.11")); - EppException thrown = assertThrows(UnsupportedFeeAttributeException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_landrushApplicationWithGracePeriodFee_v12() { - createTld("tld", TldState.LANDRUSH); - persistContactsAndHosts(); - clock.advanceOneMilli(); - setEppInput( - "domain_create_landrush_fee_grace_period.xml", ImmutableMap.of("FEE_VERSION", "0.12")); - EppException thrown = assertThrows(UnsupportedFeeAttributeException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_landrushApplicationWithAppliedFee_v06() { - createTld("tld", TldState.LANDRUSH); - persistContactsAndHosts(); - clock.advanceOneMilli(); - setEppInput("domain_create_landrush_fee_applied.xml", ImmutableMap.of("FEE_VERSION", "0.6")); - EppException thrown = assertThrows(UnsupportedFeeAttributeException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_landrushApplicationWithAppliedFee_v11() { - createTld("tld", TldState.LANDRUSH); - persistContactsAndHosts(); - clock.advanceOneMilli(); - setEppInput("domain_create_landrush_fee_applied.xml", ImmutableMap.of("FEE_VERSION", "0.11")); - EppException thrown = assertThrows(UnsupportedFeeAttributeException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_landrushApplicationWithAppliedFee_v12() { - createTld("tld", TldState.LANDRUSH); - persistContactsAndHosts(); - clock.advanceOneMilli(); - setEppInput("domain_create_landrush_fee_applied.xml", ImmutableMap.of("FEE_VERSION", "0.12")); - EppException thrown = assertThrows(UnsupportedFeeAttributeException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testSuccess_landrushWithClaims() throws Exception { - createTld("tld", TldState.LANDRUSH); - clock.setTo(DateTime.parse("2009-08-16T09:00:00.0Z")); - setEppInput("domain_create_landrush_claim_notice.xml"); - persistClaimsList(ImmutableMap.of("example-one", CLAIMS_KEY)); - persistContactsAndHosts(); - clock.advanceOneMilli(); - doSuccessfulTest("domain_create_landrush_response_claims.xml", false); - assertAboutApplications() - .that(getOnlyGlobalResource(DomainApplication.class)) - .hasLaunchNotice( - LaunchNotice.create( - "370d0b7c9223372036854775807", - "tmch", - DateTime.parse("2010-08-16T09:00:00.0Z"), - DateTime.parse("2009-08-16T09:00:00.0Z"))) - .and() - .hasApplicationStatus(ApplicationStatus.VALIDATED); - } - - @Test - public void testSuccess_landrushWithoutClaims_forClaimsListName_afterClaimsPeriodEnd() - throws Exception { - createTld("tld", TldState.LANDRUSH); - persistClaimsList(ImmutableMap.of("test-validate", CLAIMS_KEY)); - setEppInput("domain_create_landrush.xml"); - persistContactsAndHosts(); - persistResource(Registry.get("tld").asBuilder().setClaimsPeriodEnd(clock.nowUtc()).build()); - clock.advanceOneMilli(); - doSuccessfulTest("domain_create_landrush_response.xml", false); - assertAboutApplications() - .that(getOnlyGlobalResource(DomainApplication.class)) - .hasLaunchNotice(null) - .and() - .hasApplicationStatus(ApplicationStatus.VALIDATED); - } - - @Test - public void testSuccess_maxNumberOfNameservers() throws Exception { - createTld("tld", TldState.SUNRUSH); - setEppInput("domain_create_sunrush_13_nameservers.xml"); - persistContactsAndHosts(); - clock.advanceOneMilli(); - doSuccessfulTest("domain_create_sunrush_response.xml", false); - } - - @Test - public void testSuccess_encodedSignedMarkWithWhitespace() throws Exception { - setEppInput("domain_create_sunrise_encoded_signed_mark_with_whitespace.xml"); - persistContactsAndHosts(); - clock.advanceOneMilli(); - doSuccessfulTest("domain_create_sunrise_encoded_signed_mark_response.xml", true); - } - - @Test - public void testSuccess_atMarkCreationTime() throws Exception { - persistContactsAndHosts(); - clock.advanceOneMilli(); - doSuccessfulTest("domain_create_sunrise_encoded_signed_mark_response.xml", true); - } - - @Test - public void testSuccess_smdRevokedInFuture() throws Exception { - SignedMarkRevocationList.create( - clock.nowUtc(), ImmutableMap.of(SMD_ID, clock.nowUtc().plusDays(1))) - .save(); - persistContactsAndHosts(); - clock.advanceOneMilli(); - doSuccessfulTest("domain_create_sunrise_encoded_signed_mark_response.xml", true); - } - - @Test - public void testSuccess_justBeforeMarkExpirationTime() throws Exception { - persistContactsAndHosts(); - clock.advanceOneMilli(); - clock.setTo(DateTime.parse("2017-07-23T22:00:00.000Z").minusSeconds(1)); - doSuccessfulTest("domain_create_sunrise_encoded_signed_mark_response.xml", true); - } - - @Test - public void testSuccess_secDns() throws Exception { - setEppInput("domain_create_sunrise_signed_mark_with_secdns.xml"); - persistContactsAndHosts(); - clock.advanceOneMilli(); - doSuccessfulTest("domain_create_sunrise_encoded_signed_mark_response.xml", true); - assertAboutApplications() - .that(getOnlyGlobalResource(DomainApplication.class)) - .hasExactlyDsData( - DelegationSignerData.create(12345, 3, 1, base16().decode("49FD46E6C4B45C55D4AC"))); - } - - @Test - public void testSuccess_secDnsMaxRecords() throws Exception { - setEppInput("domain_create_sunrise_signed_mark_with_secdns_8_records.xml"); - persistContactsAndHosts(); - clock.advanceOneMilli(); - doSuccessfulTest("domain_create_sunrise_encoded_signed_mark_response.xml", true); - assertAboutApplications().that(getOnlyGlobalResource(DomainApplication.class)).hasNumDsData(8); - } - - @Test - public void testFailure_missingMarks() { - setEppInput("domain_create_sunrise_without_marks.xml"); - persistContactsAndHosts(); - clock.advanceOneMilli(); - EppException thrown = - assertThrows(LandrushApplicationDisallowedDuringSunriseException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_suspendedRegistrarCantCreateDomainApplication() { - setEppInput("domain_create_sunrise_encoded_signed_mark.xml"); - persistContactsAndHosts(); - clock.advanceOneMilli(); - persistResource( - Registrar.loadByClientId("TheRegistrar") - .get() - .asBuilder() - .setState(State.SUSPENDED) - .build()); - clock.advanceOneMilli(); - EppException thrown = - assertThrows(RegistrarMustBeActiveForThisOperationException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_pendingRegistrarCantCreateDomainApplication() { - setEppInput("domain_create_sunrise_encoded_signed_mark.xml"); - persistContactsAndHosts(); - clock.advanceOneMilli(); - persistResource( - Registrar.loadByClientId("TheRegistrar") - .get() - .asBuilder() - .setState(State.PENDING) - .build()); - clock.advanceOneMilli(); - EppException thrown = - assertThrows(RegistrarMustBeActiveForThisOperationException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_sunriseApplicationInLandrush() { - createTld("tld", TldState.LANDRUSH); - setEppInput("domain_create_landrush_signed_mark.xml"); - persistContactsAndHosts(); - clock.advanceOneMilli(); - EppException thrown = - assertThrows(SunriseApplicationDisallowedDuringLandrushException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_smdRevoked() { - SignedMarkRevocationList.create(clock.nowUtc(), ImmutableMap.of(SMD_ID, clock.nowUtc())).save(); - persistContactsAndHosts(); - clock.advanceOneMilli(); - EppException thrown = assertThrows(SignedMarkRevokedErrorException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_tooManyNameservers() { - createTld("tld", TldState.SUNRUSH); - setEppInput("domain_create_sunrush_14_nameservers.xml"); - persistContactsAndHosts(); - clock.advanceOneMilli(); - EppException thrown = assertThrows(TooManyNameserversException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_secDnsMaxSigLife() { - setEppInput("domain_create_sunrise_with_secdns_maxsiglife.xml"); - persistContactsAndHosts(); - clock.advanceOneMilli(); - EppException thrown = assertThrows(MaxSigLifeNotSupportedException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_secDnsTooManyDsRecords() { - setEppInput("domain_create_sunrise_signed_mark_with_secdns_9_records.xml"); - persistContactsAndHosts(); - clock.advanceOneMilli(); - EppException thrown = assertThrows(TooManyDsRecordsException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_wrongExtension() { - setEppInput("domain_create_sunrise_wrong_extension.xml"); - persistContactsAndHosts(); - clock.advanceOneMilli(); - EppException thrown = assertThrows(UnimplementedExtensionException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_reserved() { - setEppInput("domain_create_sunrise_signed_mark_reserved.xml"); - persistContactsAndHosts(); - clock.advanceOneMilli(); - EppException thrown = assertThrows(DomainReservedException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testSuccess_superuserReserved() throws Exception { - setEppInput("domain_create_sunrise_signed_mark_reserved.xml"); - createTld("tld", TldState.SUNRISE); - persistContactsAndHosts(); - clock.advanceOneMilli(); - runSuperuserFlow("domain_create_sunrise_signed_mark_reserved_response.xml"); - } - - @Test - public void testSuccess_premiumNotBlocked() throws Exception { - createTld("example", TldState.SUNRUSH); - persistResource(Registry.get("example").asBuilder().setPremiumPriceAckRequired(false).build()); - setEppInput("domain_create_landrush_premium.xml"); - persistContactsAndHosts(); - clock.advanceOneMilli(); - runFlowAssertResponse( - loadFile("domain_create_landrush_premium_response.xml"), - "epp.response.extension.creData.applicationID", - "epp.response.resData.creData.crDate", - "epp.response.extension.creData.phase"); - } - - @Test - public void testSuccess_superuserPremiumNameBlock() throws Exception { - createTld("example", TldState.SUNRUSH); - persistResource(Registry.get("example").asBuilder().setPremiumPriceAckRequired(false).build()); - setEppInput("domain_create_landrush_premium.xml"); - persistContactsAndHosts(); - clock.advanceOneMilli(); - // Modify the Registrar to block premium names. - persistResource(loadRegistrar("TheRegistrar").asBuilder().setBlockPremiumNames(true).build()); - runSuperuserFlow("domain_create_landrush_premium_response.xml"); - } - - private DomainApplication persistSunriseApplication() throws Exception { - return persistResource( - newDomainApplication(getUniqueIdFromCommand()) - .asBuilder() - .setPhase(LaunchPhase.SUNRISE) - .build()); - } - - @Test - public void testFailure_landrushWithOneSunriseApplication() throws Exception { - createTld("tld", TldState.LANDRUSH); - setEppInput("domain_create_landrush.xml"); - persistSunriseApplication(); - persistContactsAndHosts(); - clock.advanceOneMilli(); - EppException thrown = - assertThrows(UncontestedSunriseApplicationBlockedInLandrushException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testSuccess_superuserLandrushWithOneSunriseApplication() throws Exception { - createTld("tld", TldState.LANDRUSH); - setEppInput("domain_create_landrush.xml"); - persistSunriseApplication(); - persistContactsAndHosts(); - clock.advanceOneMilli(); - runSuperuserFlow("domain_create_landrush_response.xml"); - } - - @Test - public void testSuccess_landrushWithTwoSunriseApplications() throws Exception { - createTld("tld", TldState.LANDRUSH); - setEppInput("domain_create_landrush.xml"); - persistSunriseApplication(); - persistSunriseApplication(); - persistContactsAndHosts(); - clock.advanceOneMilli(); - doSuccessfulTest("domain_create_landrush_response.xml", false); - } - - @Test - public void testSuccess_landrushWithPeriodSpecified() throws Exception { - createTld("tld", TldState.LANDRUSH); - setEppInput("domain_create_landrush_two_years.xml"); - persistContactsAndHosts(); - clock.advanceOneMilli(); - doSuccessfulTest("domain_create_landrush_response.xml", false, 2); - } - - @Test - public void testFailure_landrushWithPeriodInMonths() { - createTld("tld", TldState.LANDRUSH); - setEppInput("domain_create_landrush_months.xml"); - persistContactsAndHosts(); - clock.advanceOneMilli(); - EppException thrown = assertThrows(BadPeriodUnitException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_missingHost() { - persistActiveHost("ns1.example.net"); - persistActiveContact("jd1234"); - persistActiveContact("sh8013"); - LinkedResourcesDoNotExistException thrown = - assertThrows(LinkedResourcesDoNotExistException.class, this::runFlow); - assertThat(thrown).hasMessageThat().contains("(ns2.example.net)"); - } - - @Test - public void testFailure_missingContact() { - persistActiveHost("ns1.example.net"); - persistActiveHost("ns2.example.net"); - persistActiveContact("jd1234"); - LinkedResourcesDoNotExistException thrown = - assertThrows(LinkedResourcesDoNotExistException.class, this::runFlow); - assertThat(thrown).hasMessageThat().contains("(sh8013)"); - } - - @Test - public void testFailure_wrongTld() { - deleteTld("tld"); - createTld("foo", TldState.SUNRISE); - persistContactsAndHosts(); - clock.advanceOneMilli(); - EppException thrown = assertThrows(TldDoesNotExistException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_predelegation() { - createTld("tld", TldState.PREDELEGATION); - persistContactsAndHosts(); - clock.advanceOneMilli(); - EppException thrown = assertThrows(BadCommandForRegistryPhaseException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_notAuthorizedForTld() { - persistResource( - loadRegistrar("TheRegistrar").asBuilder().setAllowedTlds(ImmutableSet.of()).build()); - persistContactsAndHosts(); - EppException thrown = assertThrows(NotAuthorizedForTldException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_sunrush() { - createTld("tld", TldState.SUNRUSH); - persistContactsAndHosts(); - clock.advanceOneMilli(); - EppException thrown = assertThrows(LaunchPhaseMismatchException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_quietPeriod() { - createTld("tld", TldState.QUIET_PERIOD); - persistContactsAndHosts(); - clock.advanceOneMilli(); - EppException thrown = assertThrows(BadCommandForRegistryPhaseException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_generalAvailability() { - createTld("tld", TldState.GENERAL_AVAILABILITY); - persistContactsAndHosts(); - clock.advanceOneMilli(); - EppException thrown = assertThrows(BadCommandForRegistryPhaseException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_startDateSunrise() { - createTld("tld", TldState.START_DATE_SUNRISE); - persistContactsAndHosts(); - clock.advanceOneMilli(); - EppException thrown = assertThrows(BadCommandForRegistryPhaseException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_wrongDeclaredPhase() { - setEppInput("domain_create_landrush_signed_mark.xml"); - persistContactsAndHosts(); - clock.advanceOneMilli(); - EppException thrown = assertThrows(LaunchPhaseMismatchException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testSuccess_superuserPredelegation() throws Exception { - createTld("tld", TldState.PREDELEGATION); - persistContactsAndHosts(); - clock.advanceOneMilli(); - runSuperuserFlow("domain_create_sunrush_response.xml"); - } - - @Test - public void testSuccess_superuserNotAuthorizedForTld() throws Exception { - persistResource( - loadRegistrar("TheRegistrar").asBuilder().setAllowedTlds(ImmutableSet.of()).build()); - persistContactsAndHosts(); - clock.advanceOneMilli(); - runSuperuserFlow("domain_create_sunrise_encoded_signed_mark_response.xml"); - } - - @Test - public void testSuccess_superuserSunrush() throws Exception { - createTld("tld", TldState.SUNRUSH); - persistContactsAndHosts(); - clock.advanceOneMilli(); - runSuperuserFlow("domain_create_sunrush_response.xml"); - } - - @Test - public void testSuccess_superuserQuietPeriod() throws Exception { - createTld("tld", TldState.QUIET_PERIOD); - persistContactsAndHosts(); - clock.advanceOneMilli(); - runSuperuserFlow("domain_create_sunrush_response.xml"); - } - - @Test - public void testSuccess_superuserGeneralAvailability() throws Exception { - createTld("tld", TldState.GENERAL_AVAILABILITY); - persistContactsAndHosts(); - clock.advanceOneMilli(); - runSuperuserFlow("domain_create_sunrush_response.xml"); - } - - @Test - public void testSuccess_superuserStartDateSunrise() throws Exception { - createTld("tld", TldState.START_DATE_SUNRISE); - persistContactsAndHosts(); - clock.advanceOneMilli(); - runSuperuserFlow("domain_create_sunrush_response.xml"); - } - - @Test - public void testSuccess_superuserWrongDeclaredPhase() throws Exception { - setEppInput("domain_create_landrush_signed_mark.xml"); - persistContactsAndHosts(); - clock.advanceOneMilli(); - runSuperuserFlow("domain_create_sunrush_response.xml"); - } - - @Test - public void testFailure_duplicateContact() { - setEppInput("domain_create_sunrise_duplicate_contact.xml"); - persistContactsAndHosts(); - clock.advanceOneMilli(); - EppException thrown = assertThrows(DuplicateContactForRoleException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_missingContactType() { - setEppInput("domain_create_sunrise_missing_contact_type.xml"); - persistContactsAndHosts(); - clock.advanceOneMilli(); - // We need to test for missing type, but not for invalid - the schema enforces that for us. - EppException thrown = assertThrows(MissingContactTypeException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_noMatchingMarks() { - setEppInput("domain_create_sunrise_no_matching_marks.xml"); - persistContactsAndHosts(); - clock.advanceOneMilli(); - EppException thrown = assertThrows(NoMarksFoundMatchingDomainException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_beforeMarkCreationTime() { - // If we move now back in time a bit, the mark will not have gone into effect yet. - clock.setTo(DateTime.parse("2013-08-09T10:05:59Z").minusSeconds(1)); - persistContactsAndHosts(); - clock.advanceOneMilli(); - EppException thrown = assertThrows(FoundMarkNotYetValidException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_atMarkExpirationTime() { - // Move time forward to the mark expiration time. - clock.setTo(DateTime.parse("2017-07-23T22:00:00.000Z")); - persistContactsAndHosts(); - clock.advanceOneMilli(); - EppException thrown = assertThrows(FoundMarkExpiredException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_hexEncoding() { - setEppInput("domain_create_sunrise_hex_encoding.xml"); - persistContactsAndHosts(); - clock.advanceOneMilli(); - EppException thrown = - assertThrows(Base64RequiredForEncodedSignedMarksException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_badEncoding() { - setEppInput("domain_create_sunrise_bad_encoding.xml"); - persistContactsAndHosts(); - clock.advanceOneMilli(); - EppException thrown = assertThrows(SignedMarkEncodingErrorException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_badEncodedXml() { - setEppInput("domain_create_sunrise_bad_encoded_xml.xml"); - persistContactsAndHosts(); - clock.advanceOneMilli(); - EppException thrown = assertThrows(SignedMarkParsingErrorException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_badIdn() { - createTld("xn--q9jyb4c", TldState.SUNRUSH); - setEppInput("domain_create_sunrush_bad_idn_minna.xml"); - persistContactsAndHosts(); - clock.advanceOneMilli(); - EppException thrown = assertThrows(InvalidIdnDomainLabelException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_badValidatorId() { - createTld("tld", TldState.SUNRUSH); - setEppInput("domain_create_sunrush_bad_validator_id.xml"); - persistClaimsList(ImmutableMap.of("exampleone", CLAIMS_KEY)); - persistContactsAndHosts(); - clock.advanceOneMilli(); - EppException thrown = assertThrows(InvalidTrademarkValidatorException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_signedMark() { - setEppInput("domain_create_sunrise_signed_mark.xml"); - persistContactsAndHosts(); - clock.advanceOneMilli(); - EppException thrown = assertThrows(SignedMarksMustBeEncodedException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_codeMark() { - setEppInput("domain_create_sunrise_code_with_mark.xml"); - persistContactsAndHosts(); - clock.advanceOneMilli(); - EppException thrown = assertThrows(UnsupportedMarkTypeException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_emptyEncodedMarkData() { - setEppInput("domain_create_sunrise_empty_encoded_signed_mark.xml"); - persistContactsAndHosts(); - clock.advanceOneMilli(); - EppException thrown = assertThrows(SignedMarkParsingErrorException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_signedMarkAndNotice() { - setEppInput("domain_create_sunrise_signed_mark_and_notice.xml"); - persistClaimsList(ImmutableMap.of("exampleone", CLAIMS_KEY)); - persistContactsAndHosts(); - clock.advanceOneMilli(); - EppException thrown = - assertThrows(NoticeCannotBeUsedWithSignedMarkException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_twoSignedMarks() { - setEppInput("domain_create_sunrise_two_signed_marks.xml"); - persistContactsAndHosts(); - clock.advanceOneMilli(); - EppException thrown = assertThrows(TooManySignedMarksException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_missingClaimsNotice() { - createTld("tld", TldState.SUNRUSH); - persistClaimsList(ImmutableMap.of("test-validate", CLAIMS_KEY)); - setEppInput("domain_create_sunrush.xml"); - persistContactsAndHosts(); - clock.advanceOneMilli(); - EppException thrown = assertThrows(MissingClaimsNoticeException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_claimsNoticeProvided_nameNotOnClaimsList() { - createTld("tld", TldState.LANDRUSH); - setEppInput("domain_create_landrush_claim_notice.xml"); - persistContactsAndHosts(); - clock.advanceOneMilli(); - EppException thrown = assertThrows(UnexpectedClaimsNoticeException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_claimsNoticeProvided_claimsPeriodEnded() { - createTld("tld", TldState.LANDRUSH); - setEppInput("domain_create_landrush_claim_notice.xml"); - persistClaimsList(ImmutableMap.of("example-one", CLAIMS_KEY)); - persistContactsAndHosts(); - persistResource(Registry.get("tld").asBuilder().setClaimsPeriodEnd(clock.nowUtc()).build()); - EppException thrown = assertThrows(ClaimsPeriodEndedException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_expiredClaim() { - createTld("tld", TldState.SUNRUSH); - clock.setTo(DateTime.parse("2010-08-17T09:00:00.0Z")); - setEppInput("domain_create_sunrush_claim_notice.xml"); - persistClaimsList(ImmutableMap.of("example-one", CLAIMS_KEY)); - persistContactsAndHosts(); - clock.advanceOneMilli(); - EppException thrown = assertThrows(ExpiredClaimException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_expiredAcceptance() { - createTld("tld", TldState.SUNRUSH); - clock.setTo(DateTime.parse("2009-09-16T09:00:00.0Z")); - setEppInput("domain_create_sunrush_claim_notice.xml"); - persistClaimsList(ImmutableMap.of("example-one", CLAIMS_KEY)); - persistContactsAndHosts(); - clock.advanceOneMilli(); - EppException thrown = assertThrows(AcceptedTooLongAgoException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_malformedTcnIdWrongLength() { - createTld("tld", TldState.SUNRUSH); - persistClaimsList(ImmutableMap.of("example-one", CLAIMS_KEY)); - clock.setTo(DateTime.parse("2009-08-16T09:00:00.0Z")); - setEppInput("domain_create_sunrush_malformed_claim_notice1.xml"); - persistContactsAndHosts(); - clock.advanceOneMilli(); - EppException thrown = assertThrows(MalformedTcnIdException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_malformedTcnIdBadChar() { - createTld("tld", TldState.SUNRUSH); - persistClaimsList(ImmutableMap.of("example-one", CLAIMS_KEY)); - clock.setTo(DateTime.parse("2009-08-16T09:00:00.0Z")); - setEppInput("domain_create_sunrush_malformed_claim_notice2.xml"); - persistContactsAndHosts(); - clock.advanceOneMilli(); - EppException thrown = assertThrows(MalformedTcnIdException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_badTcnIdChecksum() { - createTld("tld", TldState.SUNRUSH); - clock.setTo(DateTime.parse("2009-08-16T09:00:00.0Z")); - setEppInput("domain_create_sunrush_bad_checksum_claim_notice.xml"); - persistClaimsList(ImmutableMap.of("example-one", CLAIMS_KEY)); - persistContactsAndHosts(); - clock.advanceOneMilli(); - EppException thrown = assertThrows(InvalidTcnIdChecksumException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_wrongFeeLandrushApplication_v06() { - createTld("tld", TldState.LANDRUSH); - setEppInput("domain_create_landrush_fee.xml", ImmutableMap.of("FEE_VERSION", "0.6")); - persistResource( - Registry.get("tld").asBuilder().setCreateBillingCost(Money.of(USD, 20)).build()); - persistContactsAndHosts(); - clock.advanceOneMilli(); - EppException thrown = assertThrows(FeesMismatchException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_wrongFeeLandrushApplication_v11() { - createTld("tld", TldState.LANDRUSH); - setEppInput("domain_create_landrush_fee.xml", ImmutableMap.of("FEE_VERSION", "0.11")); - persistResource( - Registry.get("tld").asBuilder().setCreateBillingCost(Money.of(USD, 20)).build()); - persistContactsAndHosts(); - clock.advanceOneMilli(); - EppException thrown = assertThrows(FeesMismatchException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_wrongFeeLandrushApplication_v12() { - createTld("tld", TldState.LANDRUSH); - setEppInput("domain_create_landrush_fee.xml", ImmutableMap.of("FEE_VERSION", "0.12")); - persistResource( - Registry.get("tld").asBuilder().setCreateBillingCost(Money.of(USD, 20)).build()); - persistContactsAndHosts(); - clock.advanceOneMilli(); - EppException thrown = assertThrows(FeesMismatchException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_wrongCurrency_v06() { - createTld("tld", TldState.LANDRUSH); - setEppInput("domain_create_landrush_fee.xml", ImmutableMap.of("FEE_VERSION", "0.6")); - persistResource( - Registry.get("tld") - .asBuilder() - .setCurrency(CurrencyUnit.EUR) - .setCreateBillingCost(Money.of(EUR, 13)) - .setRestoreBillingCost(Money.of(EUR, 11)) - .setRenewBillingCostTransitions(ImmutableSortedMap.of(START_OF_TIME, Money.of(EUR, 7))) - .setEapFeeSchedule(ImmutableSortedMap.of(START_OF_TIME, Money.zero(EUR))) - .setServerStatusChangeBillingCost(Money.of(EUR, 19)) - .build()); - persistContactsAndHosts(); - clock.advanceOneMilli(); - EppException thrown = assertThrows(CurrencyUnitMismatchException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_wrongCurrency_v11() { - createTld("tld", TldState.LANDRUSH); - setEppInput("domain_create_landrush_fee.xml", ImmutableMap.of("FEE_VERSION", "0.11")); - persistResource( - Registry.get("tld") - .asBuilder() - .setCurrency(CurrencyUnit.EUR) - .setCreateBillingCost(Money.of(EUR, 13)) - .setRestoreBillingCost(Money.of(EUR, 11)) - .setRenewBillingCostTransitions(ImmutableSortedMap.of(START_OF_TIME, Money.of(EUR, 7))) - .setEapFeeSchedule(ImmutableSortedMap.of(START_OF_TIME, Money.zero(EUR))) - .setServerStatusChangeBillingCost(Money.of(EUR, 19)) - .build()); - persistContactsAndHosts(); - clock.advanceOneMilli(); - EppException thrown = assertThrows(CurrencyUnitMismatchException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_wrongCurrency_v12() { - createTld("tld", TldState.LANDRUSH); - setEppInput("domain_create_landrush_fee.xml", ImmutableMap.of("FEE_VERSION", "0.12")); - persistResource( - Registry.get("tld") - .asBuilder() - .setCurrency(CurrencyUnit.EUR) - .setCreateBillingCost(Money.of(EUR, 13)) - .setRestoreBillingCost(Money.of(EUR, 11)) - .setRenewBillingCostTransitions(ImmutableSortedMap.of(START_OF_TIME, Money.of(EUR, 7))) - .setEapFeeSchedule(ImmutableSortedMap.of(START_OF_TIME, Money.zero(EUR))) - .setServerStatusChangeBillingCost(Money.of(EUR, 19)) - .build()); - persistContactsAndHosts(); - clock.advanceOneMilli(); - EppException thrown = assertThrows(CurrencyUnitMismatchException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_feeGivenInWrongScale_v06() { - createTld("tld", TldState.LANDRUSH); - setEppInput("domain_create_landrush_fee_bad_scale.xml", ImmutableMap.of("FEE_VERSION", "0.6")); - persistContactsAndHosts(); - clock.advanceOneMilli(); - EppException thrown = assertThrows(CurrencyValueScaleException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_feeGivenInWrongScale_v11() { - createTld("tld", TldState.LANDRUSH); - setEppInput("domain_create_landrush_fee_bad_scale.xml", ImmutableMap.of("FEE_VERSION", "0.11")); - persistContactsAndHosts(); - clock.advanceOneMilli(); - EppException thrown = assertThrows(CurrencyValueScaleException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_feeGivenInWrongScale_v12() { - createTld("tld", TldState.LANDRUSH); - setEppInput("domain_create_landrush_fee_bad_scale.xml", ImmutableMap.of("FEE_VERSION", "0.12")); - persistContactsAndHosts(); - clock.advanceOneMilli(); - EppException thrown = assertThrows(CurrencyValueScaleException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_alreadyExists() throws Exception { - persistContactsAndHosts(); - clock.advanceOneMilli(); - persistActiveDomain(getUniqueIdFromCommand()); - ResourceAlreadyExistsException thrown = - assertThrows(ResourceAlreadyExistsException.class, this::runFlow); - assertAboutEppExceptions() - .that(thrown) - .marshalsToXml() - .and() - .hasMessage( - String.format("Object with given ID (%s) already exists", getUniqueIdFromCommand())); - } - - @Test - public void testFailure_registrantNotWhitelisted() { - persistActiveContact("someone"); - persistContactsAndHosts(); - persistResource( - Registry.get("tld") - .asBuilder() - .setAllowedRegistrantContactIds(ImmutableSet.of("someone")) - .build()); - RegistrantNotAllowedException thrown = - assertThrows(RegistrantNotAllowedException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml().and().hasMessageThatContains("jd1234"); - } - - @Test - public void testFailure_nameserverNotWhitelisted() { - persistContactsAndHosts(); - persistResource( - Registry.get("tld") - .asBuilder() - .setAllowedFullyQualifiedHostNames(ImmutableSet.of("ns2.example.net")) - .build()); - NameserversNotAllowedForTldException thrown = - assertThrows(NameserversNotAllowedForTldException.class, this::runFlow); - assertAboutEppExceptions() - .that(thrown) - .marshalsToXml() - .and() - .hasMessageThatContains("ns1.example.net"); - } - - @Test - public void testSuccess_nameserverAndRegistrantWhitelisted() throws Exception { - persistResource( - Registry.get("tld") - .asBuilder() - .setAllowedRegistrantContactIds(ImmutableSet.of("jd1234")) - .setAllowedFullyQualifiedHostNames( - ImmutableSet.of("ns1.example.net", "ns2.example.net")) - .build()); - persistContactsAndHosts(); - clock.advanceOneMilli(); - doSuccessfulTest("domain_create_sunrise_encoded_signed_mark_response.xml", true); - assertAboutApplications() - .that(getOnlyGlobalResource(DomainApplication.class)) - .hasApplicationStatus(ApplicationStatus.VALIDATED); - } - - @Test - public void testFailure_emptyNameserverFailsWhitelist() { - setEppInput("domain_create_sunrise_encoded_signed_mark_no_hosts.xml"); - persistResource( - Registry.get("tld") - .asBuilder() - .setAllowedRegistrantContactIds(ImmutableSet.of("jd1234")) - .setAllowedFullyQualifiedHostNames(ImmutableSet.of("somethingelse.example.net")) - .build()); - persistContactsAndHosts(); - clock.advanceOneMilli(); - EppException thrown = - assertThrows( - NameserversNotSpecifiedForTldWithNameserverWhitelistException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testSuccess_domainNameserverRestricted_allNameserversAllowed() throws Exception { - persistResource( - Registry.get("tld") - .asBuilder() - .setReservedLists( - persistReservedList( - "reserved", - "test-validate,NAMESERVER_RESTRICTED," - + "ns1.example.net:ns2.example.net:ns3.example.net")) - .build()); - persistContactsAndHosts(); - clock.advanceOneMilli(); - doSuccessfulTest("domain_create_sunrise_encoded_signed_mark_response.xml", true); - assertAboutApplications() - .that(getOnlyGlobalResource(DomainApplication.class)) - .hasApplicationStatus(ApplicationStatus.VALIDATED); - } - - @Test - public void testFailure_domainNameserverRestricted_someNameserversDisallowed() { - persistResource( - Registry.get("tld") - .asBuilder() - .setReservedLists( - persistReservedList( - "reserved", - "test-validate,NAMESERVER_RESTRICTED,ns2.example.net:ns3.example.net")) - .build()); - persistContactsAndHosts(); - clock.advanceOneMilli(); - NameserversNotAllowedForDomainException thrown = - assertThrows(NameserversNotAllowedForDomainException.class, this::runFlow); - assertThat(thrown).hasMessageThat().contains("ns1.example.net"); - } - - @Test - public void testFailure_domainNameserverRestricted_noNameserversAllowed() { - setEppInput("domain_create_sunrise_encoded_signed_mark_no_hosts.xml"); - persistResource( - Registry.get("tld") - .asBuilder() - .setReservedLists( - persistReservedList( - "reserved", - "test-validate,NAMESERVER_RESTRICTED,ns2.example.net:ns3.example.net")) - .build()); - persistContactsAndHosts(); - clock.advanceOneMilli(); - EppException thrown = - assertThrows( - NameserversNotSpecifiedForNameserverRestrictedDomainException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testSuccess_tldAndDomainNameserversWhitelistBothSatistfied() throws Exception { - persistResource( - Registry.get("tld") - .asBuilder() - .setDomainCreateRestricted(true) - .setReservedLists( - persistReservedList( - "reserved", - "test-validate,NAMESERVER_RESTRICTED," - + "ns1.example.net:ns2.example.net:ns3.example.net")) - .setAllowedFullyQualifiedHostNames( - ImmutableSet.of("ns1.example.net", "ns2.example.net", "ns4.examplet.net")) - .build()); - persistContactsAndHosts(); - clock.advanceOneMilli(); - doSuccessfulTest("domain_create_sunrise_encoded_signed_mark_response.xml", true); - assertAboutApplications() - .that(getOnlyGlobalResource(DomainApplication.class)) - .hasApplicationStatus(ApplicationStatus.VALIDATED); - } - - @Test - public void testFailure_domainNameserversDisallowed_tldNameserversAllowed() { - persistResource( - Registry.get("tld") - .asBuilder() - .setReservedLists( - persistReservedList( - "reserved", - "test-validate,NAMESERVER_RESTRICTED," - + "ns2.example.net:ns3.example.net:ns4.example.net")) - .setAllowedFullyQualifiedHostNames( - ImmutableSet.of("ns1.example.net", "ns2.example.net", "ns3.examplet.net")) - .build()); - persistContactsAndHosts(); - clock.advanceOneMilli(); - NameserversNotAllowedForDomainException thrown = - assertThrows(NameserversNotAllowedForDomainException.class, this::runFlow); - assertThat(thrown).hasMessageThat().contains("ns1.example.net"); - } - - @Test - public void testFailure_domainNameserversAllowed_tldNameserversDisallowed() { - persistResource( - Registry.get("tld") - .asBuilder() - .setReservedLists( - persistReservedList( - "reserved", - "test-validate,NAMESERVER_RESTRICTED," - + "ns1.example.net:ns2.example.net:ns3.example.net")) - .setAllowedFullyQualifiedHostNames( - ImmutableSet.of("ns2.example.net", "ns3.example.net", "ns4.examplet.net")) - .build()); - persistContactsAndHosts(); - clock.advanceOneMilli(); - NameserversNotAllowedForTldException thrown = - assertThrows(NameserversNotAllowedForTldException.class, this::runFlow); - assertThat(thrown).hasMessageThat().contains("ns1.example.net"); - } - - @Test - public void testFailure_max10Years() { - createTld("tld", TldState.LANDRUSH); - setEppInput("domain_create_landrush_11_years.xml"); - persistContactsAndHosts(); - clock.advanceOneMilli(); - EppException thrown = assertThrows(ExceedsMaxRegistrationYearsException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - private void doFailingDomainNameTest(String domainName, Class exception) { - setEppInput("domain_create_sunrise_signed_mark_uppercase.xml"); - eppLoader.replaceAll("TEST-VALIDATE.tld", domainName); - persistContactsAndHosts(); - EppException thrown = assertThrows(exception, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_uppercase() { - doFailingDomainNameTest("Example.tld", BadDomainNameCharacterException.class); - } - - @Test - public void testFailure_badCharacter() { - doFailingDomainNameTest("test_example.tld", BadDomainNameCharacterException.class); - } - - @Test - public void testFailure_leadingDash() { - doFailingDomainNameTest("-example.tld", LeadingDashException.class); - } - - @Test - public void testFailure_trailingDash() { - doFailingDomainNameTest("example-.tld", TrailingDashException.class); - } - - @Test - public void testFailure_tooLong() { - doFailingDomainNameTest(Strings.repeat("a", 64) + ".tld", DomainLabelTooLongException.class); - } - - @Test - public void testFailure_leadingDot() { - doFailingDomainNameTest(".example.tld", EmptyDomainNamePartException.class); - } - - @Test - public void testFailure_leadingDotTld() { - doFailingDomainNameTest("foo..tld", EmptyDomainNamePartException.class); - } - - @Test - public void testFailure_tooManyParts() { - doFailingDomainNameTest("foo.example.tld", BadDomainNamePartsCountException.class); - } - - @Test - public void testFailure_tooFewParts() { - doFailingDomainNameTest("tld", BadDomainNamePartsCountException.class); - } - - @Test - public void testFailure_domainNameExistsAsTld_lowercase() { - createTlds("foo.tld", "tld"); - doFailingDomainNameTest("foo.tld", DomainNameExistsAsTldException.class); - } - - @Test - public void testFailure_domainNameExistsAsTld_uppercase() { - createTlds("foo.tld", "tld"); - doFailingDomainNameTest("FOO.TLD", BadDomainNameCharacterException.class); - } - - @Test - public void testFailure_invalidPunycode() { - doFailingDomainNameTest("xn--abcdefg.tld", InvalidPunycodeException.class); - } - - @Test - public void testFailure_dashesInThirdAndFourthPosition() { - doFailingDomainNameTest("ab--cdefg.tld", DashesInThirdAndFourthException.class); - } - - @Test - public void testFailure_tldDoesNotExist() { - doFailingDomainNameTest("foo.nosuchtld", TldDoesNotExistException.class); - } - - @Test - public void testFailure_invalidIdnCodePoints() { - // ❤☀☆☂☻♞☯.tld - doFailingDomainNameTest("xn--k3hel9n7bxlu1e.tld", InvalidIdnDomainLabelException.class); - } - - @Test - public void testIcannActivityReportField_getsLogged() throws Exception { - persistContactsAndHosts(); - clock.advanceOneMilli(); - runFlow(); - assertIcannReportingActivityFieldLogged("srs-dom-create"); - assertTldsFieldLogged("tld"); - // Ensure we log the client ID for srs-dom-create so we can also use it for attempted-adds. - assertClientIdFieldLogged("TheRegistrar"); - } -} diff --git a/javatests/google/registry/flows/domain/DomainApplicationDeleteFlowTest.java b/javatests/google/registry/flows/domain/DomainApplicationDeleteFlowTest.java deleted file mode 100644 index e3df1d02e..000000000 --- a/javatests/google/registry/flows/domain/DomainApplicationDeleteFlowTest.java +++ /dev/null @@ -1,345 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.flows.domain; - -import static com.google.common.truth.Truth.assertThat; -import static com.google.common.truth.Truth8.assertThat; -import static google.registry.model.EppResourceUtils.isLinked; -import static google.registry.model.EppResourceUtils.loadByForeignKey; -import static google.registry.model.EppResourceUtils.loadDomainApplication; -import static google.registry.model.index.ForeignKeyIndex.loadAndGetKey; -import static google.registry.testing.DatastoreHelper.assertNoBillingEvents; -import static google.registry.testing.DatastoreHelper.createTld; -import static google.registry.testing.DatastoreHelper.loadRegistrar; -import static google.registry.testing.DatastoreHelper.newDomainApplication; -import static google.registry.testing.DatastoreHelper.newHostResource; -import static google.registry.testing.DatastoreHelper.persistActiveContact; -import static google.registry.testing.DatastoreHelper.persistActiveDomainApplication; -import static google.registry.testing.DatastoreHelper.persistResource; -import static google.registry.testing.EppExceptionSubject.assertAboutEppExceptions; -import static google.registry.testing.JUnitBackports.assertThrows; - -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableMap; -import com.google.common.collect.ImmutableSet; -import com.googlecode.objectify.Key; -import google.registry.flows.EppException; -import google.registry.flows.EppException.UnimplementedExtensionException; -import google.registry.flows.ResourceFlowTestCase; -import google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException; -import google.registry.flows.ResourceFlowUtils.ResourceNotOwnedException; -import google.registry.flows.domain.DomainApplicationDeleteFlow.SunriseApplicationCannotBeDeletedInLandrushException; -import google.registry.flows.domain.DomainFlowUtils.ApplicationDomainNameMismatchException; -import google.registry.flows.domain.DomainFlowUtils.BadCommandForRegistryPhaseException; -import google.registry.flows.domain.DomainFlowUtils.LaunchPhaseMismatchException; -import google.registry.flows.domain.DomainFlowUtils.NotAuthorizedForTldException; -import google.registry.model.EppResource; -import google.registry.model.contact.ContactResource; -import google.registry.model.domain.DomainApplication; -import google.registry.model.domain.launch.LaunchPhase; -import google.registry.model.eppcommon.StatusValue; -import google.registry.model.host.HostResource; -import google.registry.model.registry.Registry.TldState; -import org.junit.Before; -import org.junit.Test; - -/** Unit tests for {@link DomainApplicationDeleteFlow}. */ -public class DomainApplicationDeleteFlowTest - extends ResourceFlowTestCase { - - public DomainApplicationDeleteFlowTest() { - setEppInput("domain_delete_application.xml"); - } - - @Before - public void setUp() { - createTld("tld", TldState.SUNRUSH); - createTld("extra", TldState.LANDRUSH); - } - - public void doSuccessfulTest() throws Exception { - assertTransactionalFlow(true); - clock.advanceOneMilli(); - runFlowAssertResponse(loadFile("generic_success_response.xml")); - // Check that the domain is fully deleted. - assertThat(loadDomainApplication(getUniqueIdFromCommand(), clock.nowUtc())).isEmpty(); - assertNoBillingEvents(); - } - - @Test - public void testDryRun() throws Exception { - persistResource(newDomainApplication("example.tld").asBuilder().setRepoId("1-TLD").build()); - dryRunFlowAssertResponse(loadFile("generic_success_response.xml")); - } - - @Test - public void testSuccess_contactsAndHostUnlinked() throws Exception { - // Persist a linked contact and host - persistActiveContact("sh8013"); - persistResource(newHostResource("ns1.example.net")); - // Create the DomainApplication to test. - persistResource( - newDomainApplication("example.tld") - .asBuilder() - .setRepoId("1-TLD") - .setRegistrant( - Key.create(loadByForeignKey(ContactResource.class, "sh8013", clock.nowUtc()).get())) - .setNameservers( - Key.create( - loadByForeignKey(HostResource.class, "ns1.example.net", clock.nowUtc()).get())) - .build()); - doSuccessfulTest(); - for (Key key : - ImmutableList.of( - loadAndGetKey(ContactResource.class, "sh8013", clock.nowUtc()), - loadAndGetKey(HostResource.class, "ns1.example.net", clock.nowUtc()))) { - assertThat(isLinked(key, clock.nowUtc())).isFalse(); - } - } - - @Test - public void testSuccess_clientDeleteProhibited() throws Exception { - persistResource( - newDomainApplication("example.tld") - .asBuilder() - .setRepoId("1-TLD") - .addStatusValue(StatusValue.CLIENT_DELETE_PROHIBITED) - .build()); - doSuccessfulTest(); - } - - @Test - public void testSuccess_serverDeleteProhibited() throws Exception { - persistResource( - newDomainApplication("example.tld") - .asBuilder() - .setRepoId("1-TLD") - .addStatusValue(StatusValue.SERVER_DELETE_PROHIBITED) - .build()); - doSuccessfulTest(); - } - - @Test - public void testFailure_neverExisted() throws Exception { - ResourceDoesNotExistException thrown = - assertThrows(ResourceDoesNotExistException.class, this::runFlow); - assertThat(thrown).hasMessageThat().contains(String.format("(%s)", getUniqueIdFromCommand())); - } - - @Test - public void testFailure_existedButWasDeleted() throws Exception { - persistResource( - newDomainApplication("example.tld") - .asBuilder() - .setRepoId("1-TLD") - .setDeletionTime(clock.nowUtc().minusSeconds(1)) - .build()); - ResourceDoesNotExistException thrown = - assertThrows(ResourceDoesNotExistException.class, this::runFlow); - assertThat(thrown).hasMessageThat().contains(String.format("(%s)", getUniqueIdFromCommand())); - } - - @Test - public void testFailure_unauthorizedClient() { - sessionMetadata.setClientId("NewRegistrar"); - persistResource(newDomainApplication("example.tld").asBuilder().setRepoId("1-TLD").build()); - EppException thrown = assertThrows(ResourceNotOwnedException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testSuccess_superuserUnauthorizedClient() throws Exception { - sessionMetadata.setClientId("NewRegistrar"); - persistResource(newDomainApplication("example.tld").asBuilder().setRepoId("1-TLD").build()); - clock.advanceOneMilli(); - runFlowAssertResponse( - CommitMode.LIVE, UserPrivileges.SUPERUSER, loadFile("generic_success_response.xml")); - } - - @Test - public void testFailure_notAuthorizedForTld() { - persistResource(newDomainApplication("example.tld").asBuilder().setRepoId("1-TLD").build()); - persistResource( - loadRegistrar("TheRegistrar").asBuilder().setAllowedTlds(ImmutableSet.of()).build()); - EppException thrown = assertThrows(NotAuthorizedForTldException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testSuccess_superuserNotAuthorizedForTld() throws Exception { - persistResource(newDomainApplication("example.tld").asBuilder().setRepoId("1-TLD").build()); - persistResource( - loadRegistrar("TheRegistrar").asBuilder().setAllowedTlds(ImmutableSet.of()).build()); - clock.advanceOneMilli(); - runFlowAssertResponse( - CommitMode.LIVE, UserPrivileges.SUPERUSER, loadFile("generic_success_response.xml")); - } - - @Test - public void testFailure_sunriseDuringLandrush() { - createTld("tld", TldState.LANDRUSH); - setEppInput("domain_delete_application_landrush.xml", ImmutableMap.of("DOMAIN", "example.tld")); - persistResource( - newDomainApplication("example.tld") - .asBuilder() - .setRepoId("1-TLD") - .setPhase(LaunchPhase.SUNRISE) - .build()); - EppException thrown = - assertThrows(SunriseApplicationCannotBeDeletedInLandrushException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testSuccess_superuserSunriseDuringLandrush() throws Exception { - createTld("tld", TldState.LANDRUSH); - setEppInput("domain_delete_application_landrush.xml", ImmutableMap.of("DOMAIN", "example.tld")); - persistResource( - newDomainApplication("example.tld") - .asBuilder() - .setRepoId("1-TLD") - .setPhase(LaunchPhase.SUNRISE) - .build()); - clock.advanceOneMilli(); - runFlowAssertResponse( - CommitMode.LIVE, UserPrivileges.SUPERUSER, loadFile("generic_success_response.xml")); - } - - @Test - public void testSuccess_sunrushDuringLandrush() throws Exception { - createTld("tld", TldState.LANDRUSH); - setEppInput("domain_delete_application_landrush.xml", ImmutableMap.of("DOMAIN", "example.tld")); - persistResource( - newDomainApplication("example.tld") - .asBuilder() - .setRepoId("1-TLD") - .setPhase(LaunchPhase.SUNRUSH) - .build()); - doSuccessfulTest(); - } - - @Test - public void testSuccess_sunriseDuringSunrush() throws Exception { - createTld("tld", TldState.SUNRUSH); - setEppInput("domain_delete_application_sunrush.xml"); - persistResource( - newDomainApplication("example.tld") - .asBuilder() - .setRepoId("1-TLD") - .setPhase(LaunchPhase.SUNRISE) - .build()); - doSuccessfulTest(); - } - - @Test - public void testFailure_mismatchedPhase() { - setEppInput("domain_delete_application_landrush.xml", ImmutableMap.of("DOMAIN", "example.tld")); - persistResource(newDomainApplication("example.tld").asBuilder().setRepoId("1-TLD").build()); - EppException thrown = assertThrows(LaunchPhaseMismatchException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_wrongExtension() { - setEppInput("domain_delete_application_wrong_extension.xml"); - persistActiveDomainApplication("example.tld"); - EppException thrown = assertThrows(UnimplementedExtensionException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_predelegation() { - createTld("tld", TldState.PREDELEGATION); - persistResource(newDomainApplication("example.tld").asBuilder().setRepoId("1-TLD").build()); - EppException thrown = assertThrows(BadCommandForRegistryPhaseException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_quietPeriod() { - createTld("tld", TldState.QUIET_PERIOD); - persistResource(newDomainApplication("example.tld").asBuilder().setRepoId("1-TLD").build()); - EppException thrown = assertThrows(BadCommandForRegistryPhaseException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_generalAvailability() { - createTld("tld", TldState.GENERAL_AVAILABILITY); - persistResource(newDomainApplication("example.tld").asBuilder().setRepoId("1-TLD").build()); - EppException thrown = assertThrows(BadCommandForRegistryPhaseException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_startDateSunrise() { - createTld("tld", TldState.START_DATE_SUNRISE); - persistResource(newDomainApplication("example.tld").asBuilder().setRepoId("1-TLD").build()); - EppException thrown = assertThrows(BadCommandForRegistryPhaseException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testSuccess_superuserQuietPeriod() throws Exception { - createTld("tld", TldState.QUIET_PERIOD); - persistResource(newDomainApplication("example.tld").asBuilder().setRepoId("1-TLD").build()); - clock.advanceOneMilli(); - runFlowAssertResponse( - CommitMode.LIVE, UserPrivileges.SUPERUSER, loadFile("generic_success_response.xml")); - } - - @Test - public void testSuccess_superuserPredelegation() throws Exception { - createTld("tld", TldState.PREDELEGATION); - persistResource(newDomainApplication("example.tld").asBuilder().setRepoId("1-TLD").build()); - clock.advanceOneMilli(); - runFlowAssertResponse( - CommitMode.LIVE, UserPrivileges.SUPERUSER, loadFile("generic_success_response.xml")); - } - - @Test - public void testSuccess_superuserGeneralAvailability() throws Exception { - createTld("tld", TldState.GENERAL_AVAILABILITY); - persistResource(newDomainApplication("example.tld").asBuilder().setRepoId("1-TLD").build()); - clock.advanceOneMilli(); - runFlowAssertResponse( - CommitMode.LIVE, UserPrivileges.SUPERUSER, loadFile("generic_success_response.xml")); - } - - @Test - public void testSuccess_superuserStartDateSunrise() throws Exception { - createTld("tld", TldState.START_DATE_SUNRISE); - persistResource(newDomainApplication("example.tld").asBuilder().setRepoId("1-TLD").build()); - clock.advanceOneMilli(); - runFlowAssertResponse( - CommitMode.LIVE, UserPrivileges.SUPERUSER, loadFile("generic_success_response.xml")); - } - - @Test - public void testFailure_applicationIdForDifferentDomain() { - persistResource(newDomainApplication("invalid.tld").asBuilder().setRepoId("1-TLD").build()); - EppException thrown = assertThrows(ApplicationDomainNameMismatchException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testIcannActivityReportField_getsLogged() throws Exception { - persistResource(newDomainApplication("example.tld").asBuilder().setRepoId("1-TLD").build()); - clock.advanceOneMilli(); - runFlow(); - assertIcannReportingActivityFieldLogged("srs-dom-delete"); - assertTldsFieldLogged("tld"); - } -} diff --git a/javatests/google/registry/flows/domain/DomainApplicationInfoFlowTest.java b/javatests/google/registry/flows/domain/DomainApplicationInfoFlowTest.java deleted file mode 100644 index 744cf0fc5..000000000 --- a/javatests/google/registry/flows/domain/DomainApplicationInfoFlowTest.java +++ /dev/null @@ -1,380 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.flows.domain; - -import static com.google.common.io.BaseEncoding.base16; -import static com.google.common.truth.Truth.assertThat; -import static google.registry.model.ofy.ObjectifyService.ofy; -import static google.registry.testing.DatastoreHelper.assertNoBillingEvents; -import static google.registry.testing.DatastoreHelper.createTld; -import static google.registry.testing.DatastoreHelper.persistActiveContact; -import static google.registry.testing.DatastoreHelper.persistActiveHost; -import static google.registry.testing.DatastoreHelper.persistResource; -import static google.registry.testing.EppExceptionSubject.assertAboutEppExceptions; -import static google.registry.testing.JUnitBackports.assertThrows; - -import com.google.common.base.Predicates; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableMap; -import com.google.common.collect.ImmutableSet; -import com.googlecode.objectify.Key; -import google.registry.flows.EppException; -import google.registry.flows.ResourceFlowTestCase; -import google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException; -import google.registry.flows.ResourceFlowUtils.ResourceNotOwnedException; -import google.registry.flows.domain.DomainApplicationInfoFlow.ApplicationLaunchPhaseMismatchException; -import google.registry.flows.domain.DomainApplicationInfoFlow.MissingApplicationIdException; -import google.registry.flows.domain.DomainFlowUtils.ApplicationDomainNameMismatchException; -import google.registry.model.contact.ContactResource; -import google.registry.model.domain.DesignatedContact; -import google.registry.model.domain.DesignatedContact.Type; -import google.registry.model.domain.DomainApplication; -import google.registry.model.domain.DomainAuthInfo; -import google.registry.model.domain.launch.ApplicationStatus; -import google.registry.model.domain.launch.LaunchCreateExtension; -import google.registry.model.domain.launch.LaunchPhase; -import google.registry.model.domain.secdns.DelegationSignerData; -import google.registry.model.eppcommon.AuthInfo.PasswordAuth; -import google.registry.model.eppcommon.StatusValue; -import google.registry.model.host.HostResource; -import google.registry.model.ofy.RequestCapturingAsyncDatastoreService; -import google.registry.model.registry.Registry.TldState; -import google.registry.model.smd.EncodedSignedMark; -import google.registry.testing.AppEngineRule; -import google.registry.testing.EppLoader; -import org.joda.time.DateTime; -import org.junit.Before; -import org.junit.Test; - -/** Unit tests for {@link DomainApplicationInfoFlow}. */ -public class DomainApplicationInfoFlowTest - extends ResourceFlowTestCase { - - private ContactResource registrant; - private ContactResource contact; - private HostResource host1; - private HostResource host2; - private DomainApplication application; - - private enum MarksState { - MARKS_EXIST, - NO_MARKS_EXIST - } - - private enum HostsState { - HOSTS_EXIST, - NO_HOSTS_EXIST - } - - @Before - public void resetClientId() { - setEppInput("domain_info_sunrise.xml"); - sessionMetadata.setClientId("NewRegistrar"); - createTld("tld", TldState.SUNRUSH); - } - - private void persistTestEntities(HostsState hostsState, MarksState marksState) throws Exception { - registrant = persistActiveContact("jd1234"); - contact = persistActiveContact("sh8013"); - host1 = persistActiveHost("ns1.example.net"); - host2 = persistActiveHost("ns1.example.tld"); - application = - persistResource( - new DomainApplication.Builder() - .setRepoId("123-TLD") - .setFullyQualifiedDomainName("example.tld") - .setPhase(LaunchPhase.SUNRUSH) - .setPersistedCurrentSponsorClientId("NewRegistrar") - .setCreationClientId("TheRegistrar") - .setLastEppUpdateClientId("NewRegistrar") - .setCreationTimeForTest(DateTime.parse("1999-04-03T22:00:00.0Z")) - .setLastEppUpdateTime(DateTime.parse("1999-12-03T09:00:00.0Z")) - .setRegistrant(Key.create(registrant)) - .setContacts( - ImmutableSet.of( - DesignatedContact.create(Type.ADMIN, Key.create(contact)), - DesignatedContact.create(Type.TECH, Key.create(contact)))) - .setNameservers( - hostsState.equals(HostsState.HOSTS_EXIST) - ? ImmutableSet.of(Key.create(host1), Key.create(host2)) - : null) - .setAuthInfo(DomainAuthInfo.create(PasswordAuth.create("2fooBAR"))) - .addStatusValue(StatusValue.PENDING_CREATE) - .setApplicationStatus(ApplicationStatus.PENDING_VALIDATION) - .setEncodedSignedMarks( - marksState.equals(MarksState.MARKS_EXIST) - // If we need to include an encoded signed mark, pull it out of the create - // xml. - ? ImmutableList.of( - (EncodedSignedMark) - new EppLoader(this, "domain_create_sunrise_encoded_signed_mark.xml") - .getEpp() - .getSingleExtension(LaunchCreateExtension.class) - .get() - .getSignedMarks() - .get(0)) - : null) - .build()); - } - - private void doSuccessfulTest(String expectedXmlFilename, HostsState hostsState) - throws Exception { - assertTransactionalFlow(false); - String expected = loadFile(expectedXmlFilename, ImmutableMap.of("ROID", "123-TLD")); - if (hostsState.equals(HostsState.NO_HOSTS_EXIST)) { - expected = expected.replaceAll("\"ok\"", "\"inactive\""); - } - runFlowAssertResponse(expected); - assertNoHistory(); - assertNoBillingEvents(); - } - - private void doSuccessfulTest(String expectedXmlFilename) throws Exception { - persistTestEntities(HostsState.HOSTS_EXIST, MarksState.NO_MARKS_EXIST); - doSuccessfulTest(expectedXmlFilename, HostsState.HOSTS_EXIST); - } - - private void doSuccessfulTestNoNameservers(String expectedXmlFilename) throws Exception { - persistTestEntities(HostsState.NO_HOSTS_EXIST, MarksState.NO_MARKS_EXIST); - doSuccessfulTest(expectedXmlFilename, HostsState.NO_HOSTS_EXIST); - } - - @Test - public void testSuccess_quietPeriod() throws Exception { - createTld("tld", TldState.QUIET_PERIOD); - doSuccessfulTest("domain_info_sunrise_response.xml"); - } - - @Test - public void testSuccess_generalAvailability() throws Exception { - createTld("tld", TldState.GENERAL_AVAILABILITY); - doSuccessfulTest("domain_info_sunrise_response.xml"); - } - - @Test - public void testSuccess_requestedDefaultHosts_nameserversExist() throws Exception { - // Default is "all", which means nameservers since there can't be subordinates. - doSuccessfulTest("domain_info_sunrise_response.xml"); - } - - @Test - public void testSuccess_requestedDefaultHosts_noNameserversExist() throws Exception { - // Default is "all", which means nameservers since there can't be subordinates. - doSuccessfulTestNoNameservers("domain_info_sunrise_response_no_nameservers.xml"); - } - - @Test - public void testSuccess_requestedAllHosts_nameserversExist() throws Exception { - // "All" means nameservers since there can't be subordinates (same as "delegated"). - setEppInput("domain_info_sunrise_all_hosts.xml"); - doSuccessfulTest("domain_info_sunrise_response.xml"); - } - - @Test - public void testSuccess_requestedAllHosts_noNameserversExist() throws Exception { - // "All" means nameservers since there can't be subordinates (same as "delegated"). - setEppInput("domain_info_sunrise_all_hosts.xml"); - doSuccessfulTestNoNameservers("domain_info_sunrise_response_no_nameservers.xml"); - } - - @Test - public void testSuccess_requestedDelegatedHosts_nameserversExist() throws Exception { - // "Delegated" means nameservers since there can't be subordinates (same as "all"). - setEppInput("domain_info_sunrise_delegated_hosts.xml"); - doSuccessfulTest("domain_info_sunrise_response.xml"); - } - - @Test - public void testSuccess_requestedDelegatedHosts_noNameserversExist() throws Exception { - // "Delegated" means nameservers since there can't be subordinates (same as "all"). - setEppInput("domain_info_sunrise_delegated_hosts.xml"); - doSuccessfulTestNoNameservers("domain_info_sunrise_response_no_nameservers.xml"); - } - - @Test - public void testSuccess_requestedNoneHosts_nameserversExist() throws Exception { - setEppInput("domain_info_sunrise_none_hosts.xml"); - doSuccessfulTestNoNameservers("domain_info_sunrise_response_no_nameservers.xml"); - } - - @Test - public void testSuccess_requestedNoneHosts_noNameserversExist() throws Exception { - setEppInput("domain_info_sunrise_none_hosts.xml"); - doSuccessfulTestNoNameservers("domain_info_sunrise_response_no_nameservers.xml"); - } - - @Test - public void testSuccess_requestedDefaultMarks_noMarksExist() throws Exception { - persistTestEntities(HostsState.HOSTS_EXIST, MarksState.NO_MARKS_EXIST); - doSuccessfulTest("domain_info_sunrise_response.xml", HostsState.HOSTS_EXIST); - } - - @Test - public void testSuccess_requestedDefaultMarks_marksExist() throws Exception { - persistTestEntities(HostsState.HOSTS_EXIST, MarksState.MARKS_EXIST); - doSuccessfulTest("domain_info_sunrise_response.xml", HostsState.HOSTS_EXIST); - } - - @Test - public void testSuccess_requestedNoMarks_marksExist() throws Exception { - setEppInput("domain_info_sunrise_no_marks.xml"); - persistTestEntities(HostsState.HOSTS_EXIST, MarksState.MARKS_EXIST); - doSuccessfulTest("domain_info_sunrise_response.xml", HostsState.HOSTS_EXIST); - } - - @Test - public void testSuccess_requestedNoMarks_noMarksExist() throws Exception { - setEppInput("domain_info_sunrise_no_marks.xml"); - persistTestEntities(HostsState.HOSTS_EXIST, MarksState.NO_MARKS_EXIST); - doSuccessfulTest("domain_info_sunrise_response.xml", HostsState.HOSTS_EXIST); - } - - @Test - public void testSuccess_requestedIncludeMarks_marksExist() throws Exception { - setEppInput("domain_info_sunrise_include_marks.xml"); - persistTestEntities(HostsState.HOSTS_EXIST, MarksState.MARKS_EXIST); - doSuccessfulTest("domain_info_sunrise_response_with_mark.xml", HostsState.HOSTS_EXIST); - } - - @Test - public void testSuccess_requestedIncludeMarks_noMarksExist() throws Exception { - setEppInput("domain_info_sunrise_include_marks.xml"); - persistTestEntities(HostsState.HOSTS_EXIST, MarksState.NO_MARKS_EXIST); - doSuccessfulTest("domain_info_sunrise_response.xml", HostsState.HOSTS_EXIST); - } - - @Test - public void testSuccess_secDns() throws Exception { - persistTestEntities(HostsState.NO_HOSTS_EXIST, MarksState.NO_MARKS_EXIST); - // Add the dsData to the saved resource and change the nameservers to match the sample xml. - persistResource( - application - .asBuilder() - .setDsData( - ImmutableSet.of( - DelegationSignerData.create( - 12345, 3, 1, base16().decode("49FD46E6C4B45C55D4AC")))) - .setNameservers(ImmutableSet.of(Key.create(host1), Key.create(host2))) - .build()); - doSuccessfulTest("domain_info_sunrise_response_dsdata.xml", HostsState.NO_HOSTS_EXIST); - } - - @Test - public void testSuccess_allocated() throws Exception { - persistTestEntities(HostsState.HOSTS_EXIST, MarksState.NO_MARKS_EXIST); - // Update the application status of the saved resource. - persistResource( - application - .asBuilder() - .removeStatusValue(StatusValue.PENDING_CREATE) - .setApplicationStatus(ApplicationStatus.ALLOCATED) - .build()); - doSuccessfulTest("domain_info_sunrise_allocated.xml", HostsState.HOSTS_EXIST); - } - - @Test - public void testFailure_neverExisted() throws Exception { - ResourceDoesNotExistException thrown = - assertThrows(ResourceDoesNotExistException.class, this::runFlow); - assertThat(thrown).hasMessageThat().contains(String.format("(%s)", getUniqueIdFromCommand())); - } - - @Test - public void testFailure_existedButWasDeleted() throws Exception { - persistResource( - new DomainApplication.Builder() - .setRepoId("123-COM") - .setFullyQualifiedDomainName("timber.com") - .setDeletionTime(clock.nowUtc().minusDays(1)) - .setRegistrant(Key.create(persistActiveContact("jd1234"))) - .build()); - ResourceDoesNotExistException thrown = - assertThrows(ResourceDoesNotExistException.class, this::runFlow); - assertThat(thrown).hasMessageThat().contains(String.format("(%s)", getUniqueIdFromCommand())); - } - - @Test - public void testFailure_unauthorized() throws Exception { - persistResource(AppEngineRule.makeRegistrar1().asBuilder().setClientId("ClientZ").build()); - sessionMetadata.setClientId("ClientZ"); - persistTestEntities(HostsState.NO_HOSTS_EXIST, MarksState.NO_MARKS_EXIST); - EppException thrown = assertThrows(ResourceNotOwnedException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_applicationIdForDifferentDomain() { - persistResource( - new DomainApplication.Builder() - .setRepoId("123-TLD") - .setFullyQualifiedDomainName("invalid.tld") - .setRegistrant(Key.create(persistActiveContact("jd1234"))) - .setPhase(LaunchPhase.SUNRUSH) - .build()); - EppException thrown = assertThrows(ApplicationDomainNameMismatchException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_noApplicationId() throws Exception { - setEppInput("domain_info_sunrise_no_application_id.xml"); - persistTestEntities(HostsState.NO_HOSTS_EXIST, MarksState.NO_MARKS_EXIST); - EppException thrown = assertThrows(MissingApplicationIdException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_mismatchedLaunchPhase() throws Exception { - persistTestEntities(HostsState.NO_HOSTS_EXIST, MarksState.NO_MARKS_EXIST); - application = persistResource(application.asBuilder().setPhase(LaunchPhase.SUNRISE).build()); - EppException thrown = - assertThrows(ApplicationLaunchPhaseMismatchException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - /** Test that we load contacts and hosts as a batch rather than individually. */ - @Test - public void testBatchLoadingOfReferences() throws Exception { - persistTestEntities(HostsState.HOSTS_EXIST, MarksState.NO_MARKS_EXIST); - // Clear out the session cache so that we count actual Datastore calls. - ofy().clearSessionCache(); - int numPreviousReads = RequestCapturingAsyncDatastoreService.getReads().size(); - doSuccessfulTest("domain_info_sunrise_response.xml", HostsState.HOSTS_EXIST); - // Get all of the keys loaded in the flow, with each distinct load() call as a list of keys. - long numReadsWithContactsOrHosts = - RequestCapturingAsyncDatastoreService.getReads() - .stream() - .skip(numPreviousReads) - .filter( - keys -> - keys.stream() - .map(com.google.appengine.api.datastore.Key::getKind) - .anyMatch( - Predicates.in( - ImmutableSet.of( - Key.getKind(ContactResource.class), - Key.getKind(HostResource.class))))) - .count(); - assertThat(numReadsWithContactsOrHosts).isEqualTo(1); - } - - @Test - public void testIcannActivityReportField_getsLogged() throws Exception { - persistTestEntities(HostsState.HOSTS_EXIST, MarksState.NO_MARKS_EXIST); - runFlow(); - assertIcannReportingActivityFieldLogged("srs-dom-info"); - assertTldsFieldLogged("tld"); - } -} diff --git a/javatests/google/registry/flows/domain/DomainApplicationUpdateFlowTest.java b/javatests/google/registry/flows/domain/DomainApplicationUpdateFlowTest.java deleted file mode 100644 index 755f673b4..000000000 --- a/javatests/google/registry/flows/domain/DomainApplicationUpdateFlowTest.java +++ /dev/null @@ -1,932 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.flows.domain; - -import static com.google.common.collect.Sets.union; -import static com.google.common.io.BaseEncoding.base16; -import static com.google.common.truth.Truth.assertThat; -import static google.registry.model.EppResourceUtils.loadByForeignKey; -import static google.registry.testing.DatastoreHelper.assertNoBillingEvents; -import static google.registry.testing.DatastoreHelper.createTld; -import static google.registry.testing.DatastoreHelper.generateNewDomainRoid; -import static google.registry.testing.DatastoreHelper.loadRegistrar; -import static google.registry.testing.DatastoreHelper.newDomainApplication; -import static google.registry.testing.DatastoreHelper.persistActiveContact; -import static google.registry.testing.DatastoreHelper.persistActiveHost; -import static google.registry.testing.DatastoreHelper.persistReservedList; -import static google.registry.testing.DatastoreHelper.persistResource; -import static google.registry.testing.DomainApplicationSubject.assertAboutApplications; -import static google.registry.testing.EppExceptionSubject.assertAboutEppExceptions; -import static google.registry.testing.JUnitBackports.assertThrows; -import static google.registry.util.DateTimeUtils.START_OF_TIME; - -import com.google.common.collect.ImmutableMap; -import com.google.common.collect.ImmutableSet; -import com.googlecode.objectify.Key; -import google.registry.flows.EppException; -import google.registry.flows.EppException.UnimplementedExtensionException; -import google.registry.flows.ResourceFlowTestCase; -import google.registry.flows.ResourceFlowUtils.AddRemoveSameValueException; -import google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException; -import google.registry.flows.ResourceFlowUtils.ResourceNotOwnedException; -import google.registry.flows.ResourceFlowUtils.StatusNotClientSettableException; -import google.registry.flows.domain.DomainApplicationUpdateFlow.ApplicationStatusProhibitsUpdateException; -import google.registry.flows.domain.DomainFlowUtils.ApplicationDomainNameMismatchException; -import google.registry.flows.domain.DomainFlowUtils.DuplicateContactForRoleException; -import google.registry.flows.domain.DomainFlowUtils.EmptySecDnsUpdateException; -import google.registry.flows.domain.DomainFlowUtils.FeesMismatchException; -import google.registry.flows.domain.DomainFlowUtils.LinkedResourcesDoNotExistException; -import google.registry.flows.domain.DomainFlowUtils.MaxSigLifeChangeNotSupportedException; -import google.registry.flows.domain.DomainFlowUtils.MissingAdminContactException; -import google.registry.flows.domain.DomainFlowUtils.MissingContactTypeException; -import google.registry.flows.domain.DomainFlowUtils.MissingTechnicalContactException; -import google.registry.flows.domain.DomainFlowUtils.NameserversNotAllowedForDomainException; -import google.registry.flows.domain.DomainFlowUtils.NameserversNotAllowedForTldException; -import google.registry.flows.domain.DomainFlowUtils.NameserversNotSpecifiedForNameserverRestrictedDomainException; -import google.registry.flows.domain.DomainFlowUtils.NameserversNotSpecifiedForTldWithNameserverWhitelistException; -import google.registry.flows.domain.DomainFlowUtils.NotAuthorizedForTldException; -import google.registry.flows.domain.DomainFlowUtils.RegistrantNotAllowedException; -import google.registry.flows.domain.DomainFlowUtils.SecDnsAllUsageException; -import google.registry.flows.domain.DomainFlowUtils.TooManyDsRecordsException; -import google.registry.flows.domain.DomainFlowUtils.TooManyNameserversException; -import google.registry.flows.domain.DomainFlowUtils.UrgentAttributeNotSupportedException; -import google.registry.flows.exceptions.ResourceHasClientUpdateProhibitedException; -import google.registry.flows.exceptions.ResourceStatusProhibitsOperationException; -import google.registry.model.contact.ContactResource; -import google.registry.model.domain.DesignatedContact; -import google.registry.model.domain.DesignatedContact.Type; -import google.registry.model.domain.DomainApplication; -import google.registry.model.domain.DomainApplication.Builder; -import google.registry.model.domain.launch.ApplicationStatus; -import google.registry.model.domain.secdns.DelegationSignerData; -import google.registry.model.eppcommon.StatusValue; -import google.registry.model.host.HostResource; -import google.registry.model.registry.Registry; -import google.registry.model.registry.Registry.TldState; -import google.registry.model.reporting.HistoryEntry; -import org.junit.Before; -import org.junit.Test; - -/** Unit tests for {@link DomainApplicationUpdateFlow}. */ -public class DomainApplicationUpdateFlowTest - extends ResourceFlowTestCase { - - private static final DelegationSignerData SOME_DSDATA = - DelegationSignerData.create(1, 2, 3, new byte[] {0, 1, 2}); - - ContactResource sh8013Contact; - ContactResource mak21Contact; - ContactResource unusedContact; - - public DomainApplicationUpdateFlowTest() { - // Note that "domain_update_sunrise.xml" tests adding and removing the same contact type. - setEppInput("domain_update_sunrise.xml"); - } - - @Before - public void setUp() { - createTld("tld", TldState.SUNRUSH); - } - - private void persistReferencedEntities() { - // Grab the 1 id for use with the DomainApplication. - generateNewDomainRoid("tld"); - for (int i = 1; i <= 14; ++i) { - persistActiveHost(String.format("ns%d.example.tld", i)); - } - sh8013Contact = persistActiveContact("sh8013"); - mak21Contact = persistActiveContact("mak21"); - unusedContact = persistActiveContact("unused"); - } - - private DomainApplication persistApplication() { - HostResource host = - loadByForeignKey(HostResource.class, "ns1.example.tld", clock.nowUtc()).get(); - return persistResource( - newApplicationBuilder() - .setContacts( - ImmutableSet.of( - DesignatedContact.create(Type.TECH, Key.create(sh8013Contact)), - DesignatedContact.create(Type.ADMIN, Key.create(unusedContact)))) - .setNameservers(ImmutableSet.of(Key.create(host))) - .build()); - } - - private Builder newApplicationBuilder() { - return newDomainApplication("example.tld").asBuilder().setRepoId("1-TLD"); - } - - private DomainApplication persistNewApplication() { - return persistResource(newApplicationBuilder().build()); - } - - private void doSuccessfulTest() throws Exception { - assertTransactionalFlow(true); - clock.advanceOneMilli(); - runFlowAssertResponse(loadFile("generic_success_response.xml")); - // Check that the application was updated. These values came from the xml. - DomainApplication application = reloadDomainApplication(); - assertAboutApplications() - .that(application) - .hasStatusValue(StatusValue.CLIENT_HOLD) - .and() - .hasOnlyOneHistoryEntryWhich() - .hasType(HistoryEntry.Type.DOMAIN_APPLICATION_UPDATE); - assertThat(application.getAuthInfo().getPw().getValue()).isEqualTo("2BARfoo"); - // Check that the hosts and contacts have correct linked status - assertNoBillingEvents(); - } - - @Test - public void testDryRun() throws Exception { - persistReferencedEntities(); - persistApplication(); - dryRunFlowAssertResponse(loadFile("generic_success_response.xml")); - } - - @Test - public void testSuccess() throws Exception { - persistReferencedEntities(); - persistApplication(); - doSuccessfulTest(); - } - - @Test - public void testSuccess_maxNumberOfNameservers() throws Exception { - persistReferencedEntities(); - persistApplication(); - modifyApplicationToHave13Nameservers(); - doSuccessfulTest(); - } - - @Test - public void testSuccess_removeContact() throws Exception { - setEppInput("domain_update_sunrise_remove_contact.xml"); - persistReferencedEntities(); - persistApplication(); - doSuccessfulTest(); - } - - @Test - public void testSuccess_registrantMovedToTechContact() throws Exception { - setEppInput("domain_update_sunrise_registrant_to_tech.xml"); - persistReferencedEntities(); - ContactResource sh8013 = - loadByForeignKey(ContactResource.class, "sh8013", clock.nowUtc()).get(); - persistResource(newApplicationBuilder().setRegistrant(Key.create(sh8013)).build()); - clock.advanceOneMilli(); - runFlowAssertResponse(loadFile("generic_success_response.xml")); - } - - @Test - public void testSuccess_multipleReferencesToSameContactRemoved() throws Exception { - setEppInput("domain_update_sunrise_remove_multiple_contacts.xml"); - persistReferencedEntities(); - ContactResource sh8013 = - loadByForeignKey(ContactResource.class, "sh8013", clock.nowUtc()).get(); - Key sh8013Key = Key.create(sh8013); - persistResource( - newApplicationBuilder() - .setRegistrant(sh8013Key) - .setContacts( - ImmutableSet.of( - DesignatedContact.create(Type.ADMIN, sh8013Key), - DesignatedContact.create(Type.BILLING, sh8013Key), - DesignatedContact.create(Type.TECH, sh8013Key))) - .build()); - clock.advanceOneMilli(); - runFlowAssertResponse(loadFile("generic_success_response.xml")); - } - - @Test - public void testSuccess_removeClientUpdateProhibited() throws Exception { - persistReferencedEntities(); - persistResource( - persistApplication() - .asBuilder() - .setStatusValues(ImmutableSet.of(StatusValue.CLIENT_UPDATE_PROHIBITED)) - .build()); - clock.advanceOneMilli(); - runFlow(); - assertAboutApplications() - .that(reloadDomainApplication()) - .doesNotHaveStatusValue(StatusValue.CLIENT_UPDATE_PROHIBITED); - } - - private void doSecDnsSuccessfulTest( - String xmlFilename, - ImmutableSet originalDsData, - ImmutableSet expectedDsData) - throws Exception { - setEppInput(xmlFilename); - persistResource(newApplicationBuilder().setDsData(originalDsData).build()); - assertTransactionalFlow(true); - clock.advanceOneMilli(); - runFlowAssertResponse(loadFile("generic_success_response.xml")); - assertAboutApplications() - .that(reloadDomainApplication()) - .hasExactlyDsData(expectedDsData) - .and() - .hasOnlyOneHistoryEntryWhich() - .hasType(HistoryEntry.Type.DOMAIN_APPLICATION_UPDATE); - } - - @Test - public void testSuccess_secDnsAdd() throws Exception { - doSecDnsSuccessfulTest( - "domain_update_sunrise_dsdata_add.xml", - null, - ImmutableSet.of( - DelegationSignerData.create(12346, 3, 1, base16().decode("38EC35D5B3A34B44C39B")))); - } - - @Test - public void testSuccess_secDnsAddPreservesExisting() throws Exception { - doSecDnsSuccessfulTest( - "domain_update_sunrise_dsdata_add.xml", - ImmutableSet.of(SOME_DSDATA), - ImmutableSet.of( - SOME_DSDATA, - DelegationSignerData.create(12346, 3, 1, base16().decode("38EC35D5B3A34B44C39B")))); - } - - @Test - public void testSuccess_secDnsAddToMaxRecords() throws Exception { - ImmutableSet.Builder builder = new ImmutableSet.Builder<>(); - for (int i = 0; i < 7; ++i) { - builder.add(DelegationSignerData.create(i, 2, 3, new byte[] {0, 1, 2})); - } - ImmutableSet commonDsData = builder.build(); - - doSecDnsSuccessfulTest( - "domain_update_sunrise_dsdata_add.xml", - commonDsData, - ImmutableSet.copyOf( - union( - commonDsData, - ImmutableSet.of( - DelegationSignerData.create( - 12346, 3, 1, base16().decode("38EC35D5B3A34B44C39B")))))); - } - - @Test - public void testSuccess_secDnsRemove() throws Exception { - doSecDnsSuccessfulTest( - "domain_update_sunrise_dsdata_rem.xml", - ImmutableSet.of( - SOME_DSDATA, - DelegationSignerData.create(12346, 3, 1, base16().decode("38EC35D5B3A34B44C39B"))), - ImmutableSet.of(SOME_DSDATA)); - } - - @Test - public void testSuccess_secDnsRemoveAll() throws Exception { - // As an aside, this test also validates that it's ok to set the 'urgent' attribute to false. - doSecDnsSuccessfulTest( - "domain_update_sunrise_dsdata_rem_all.xml", - ImmutableSet.of( - SOME_DSDATA, - DelegationSignerData.create(12346, 3, 1, base16().decode("38EC35D5B3A34B44C39B"))), - ImmutableSet.of()); - } - - @Test - public void testSuccess_secDnsAddRemove() throws Exception { - doSecDnsSuccessfulTest( - "domain_update_sunrise_dsdata_add_rem.xml", - ImmutableSet.of( - SOME_DSDATA, - DelegationSignerData.create(12345, 3, 1, base16().decode("38EC35D5B3A34B33C99B"))), - ImmutableSet.of( - SOME_DSDATA, - DelegationSignerData.create(12346, 3, 1, base16().decode("38EC35D5B3A34B44C39B")))); - } - - @Test - public void testSuccess_secDnsAddRemoveToMaxRecords() throws Exception { - ImmutableSet.Builder builder = new ImmutableSet.Builder<>(); - for (int i = 0; i < 7; ++i) { - builder.add(DelegationSignerData.create(i, 2, 3, new byte[] {0, 1, 2})); - } - ImmutableSet commonDsData = builder.build(); - - doSecDnsSuccessfulTest( - "domain_update_sunrise_dsdata_add_rem.xml", - ImmutableSet.copyOf( - union( - commonDsData, - ImmutableSet.of( - DelegationSignerData.create( - 12345, 3, 1, base16().decode("38EC35D5B3A34B33C99B"))))), - ImmutableSet.copyOf( - union( - commonDsData, - ImmutableSet.of( - DelegationSignerData.create( - 12346, 3, 1, base16().decode("38EC35D5B3A34B44C39B")))))); - } - - @Test - public void testSuccess_secDnsAddRemoveSame() throws Exception { - // Adding and removing the same dsData is a no-op because removes are processed first. - doSecDnsSuccessfulTest( - "domain_update_sunrise_dsdata_add_rem_same.xml", - ImmutableSet.of( - SOME_DSDATA, - DelegationSignerData.create(12345, 3, 1, base16().decode("38EC35D5B3A34B33C99B"))), - ImmutableSet.of( - SOME_DSDATA, - DelegationSignerData.create(12345, 3, 1, base16().decode("38EC35D5B3A34B33C99B")))); - } - - @Test - public void testSuccess_secDnsRemoveAlreadyNotThere() throws Exception { - // Removing a dsData that isn't there is a no-op. - doSecDnsSuccessfulTest( - "domain_update_sunrise_dsdata_rem.xml", - ImmutableSet.of(SOME_DSDATA), - ImmutableSet.of(SOME_DSDATA)); - } - - private void doSecDnsFailingTest( - Class expectedException, String xmlFilename) { - setEppInput(xmlFilename); - persistReferencedEntities(); - persistNewApplication(); - EppException thrown = assertThrows(expectedException, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_secDnsAllCannotBeFalse() { - doSecDnsFailingTest( - SecDnsAllUsageException.class, "domain_update_sunrise_dsdata_rem_all_false.xml"); - } - - @Test - public void testFailure_secDnsEmptyNotAllowed() { - doSecDnsFailingTest(EmptySecDnsUpdateException.class, "domain_update_sunrise_dsdata_empty.xml"); - } - - @Test - public void testFailure_secDnsUrgentNotSupported() { - doSecDnsFailingTest( - UrgentAttributeNotSupportedException.class, "domain_update_sunrise_dsdata_urgent.xml"); - } - - @Test - public void testFailure_secDnsChangeNotSupported() { - doSecDnsFailingTest( - MaxSigLifeChangeNotSupportedException.class, "domain_update_sunrise_maxsiglife.xml"); - } - - @Test - public void testFailure_secDnsTooManyDsRecords() { - ImmutableSet.Builder builder = new ImmutableSet.Builder<>(); - for (int i = 0; i < 8; ++i) { - builder.add(DelegationSignerData.create(i, 2, 3, new byte[] {0, 1, 2})); - } - - setEppInput("domain_update_sunrise_dsdata_add.xml"); - persistResource(newApplicationBuilder().setDsData(builder.build()).build()); - EppException thrown = assertThrows(TooManyDsRecordsException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - private void modifyApplicationToHave13Nameservers() throws Exception { - ImmutableSet.Builder> nameservers = new ImmutableSet.Builder<>(); - for (int i = 1; i < 15; i++) { - if (i != 2) { // Skip 2 since that's the one that the tests will add. - nameservers.add( - Key.create( - loadByForeignKey( - HostResource.class, String.format("ns%d.example.tld", i), clock.nowUtc()) - .get())); - } - } - persistResource( - reloadDomainApplication().asBuilder().setNameservers(nameservers.build()).build()); - } - - @Test - public void testFailure_tooManyNameservers() throws Exception { - persistReferencedEntities(); - persistApplication(); - // Modify application to have 13 nameservers. We will then remove one and add one in the test. - modifyApplicationToHave13Nameservers(); - setEppInput("domain_update_sunrise_add_nameserver.xml"); - EppException thrown = assertThrows(TooManyNameserversException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_wrongExtension() { - setEppInput("domain_update_sunrise_wrong_extension.xml"); - EppException thrown = assertThrows(UnimplementedExtensionException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_applicationDomainNameMismatch() { - persistReferencedEntities(); - persistResource(newApplicationBuilder().setFullyQualifiedDomainName("something.tld").build()); - EppException thrown = assertThrows(ApplicationDomainNameMismatchException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_neverExisted() throws Exception { - persistReferencedEntities(); - ResourceDoesNotExistException thrown = - assertThrows(ResourceDoesNotExistException.class, this::runFlow); - assertThat(thrown).hasMessageThat().contains(String.format("(%s)", getUniqueIdFromCommand())); - } - - @Test - public void testFailure_existedButWasDeleted() throws Exception { - persistReferencedEntities(); - persistResource(newApplicationBuilder().setDeletionTime(START_OF_TIME).build()); - ResourceDoesNotExistException thrown = - assertThrows(ResourceDoesNotExistException.class, this::runFlow); - assertThat(thrown).hasMessageThat().contains(String.format("(%s)", getUniqueIdFromCommand())); - } - - @Test - public void testFailure_clientUpdateProhibited() { - setEppInput("domain_update_sunrise_authinfo.xml"); - persistReferencedEntities(); - persistResource( - newApplicationBuilder() - .setStatusValues(ImmutableSet.of(StatusValue.CLIENT_UPDATE_PROHIBITED)) - .build()); - EppException thrown = - assertThrows(ResourceHasClientUpdateProhibitedException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_serverUpdateProhibited() { - persistReferencedEntities(); - persistResource( - newApplicationBuilder() - .setStatusValues(ImmutableSet.of(StatusValue.SERVER_UPDATE_PROHIBITED)) - .build()); - ResourceStatusProhibitsOperationException thrown = - assertThrows(ResourceStatusProhibitsOperationException.class, this::runFlow); - assertThat(thrown).hasMessageThat().contains("serverUpdateProhibited"); - } - - private void doIllegalApplicationStatusTest(ApplicationStatus status) { - persistReferencedEntities(); - persistResource(newApplicationBuilder().setApplicationStatus(status).build()); - EppException thrown = - assertThrows(ApplicationStatusProhibitsUpdateException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_allocatedApplicationStatus() { - doIllegalApplicationStatusTest(ApplicationStatus.ALLOCATED); - } - - @Test - public void testFailure_invalidApplicationStatus() { - doIllegalApplicationStatusTest(ApplicationStatus.INVALID); - } - - @Test - public void testFailure_rejectedApplicationStatus() { - doIllegalApplicationStatusTest(ApplicationStatus.REJECTED); - } - - @Test - public void testFailure_missingHost() { - persistActiveHost("ns1.example.tld"); - persistActiveContact("sh8013"); - persistActiveContact("mak21"); - persistNewApplication(); - LinkedResourcesDoNotExistException thrown = - assertThrows(LinkedResourcesDoNotExistException.class, this::runFlow); - assertThat(thrown).hasMessageThat().contains("(ns2.example.tld)"); - } - - @Test - public void testFailure_missingContact() { - persistActiveHost("ns1.example.tld"); - persistActiveHost("ns2.example.tld"); - persistActiveContact("mak21"); - persistNewApplication(); - LinkedResourcesDoNotExistException thrown = - assertThrows(LinkedResourcesDoNotExistException.class, this::runFlow); - assertThat(thrown).hasMessageThat().contains("(sh8013)"); - } - - @Test - public void testFailure_addingDuplicateContact() throws Exception { - persistReferencedEntities(); - persistActiveContact("foo"); - persistNewApplication(); - // Add a tech contact to the persisted entity, which should cause the flow to fail when it tries - // to add "mak21" as a second tech contact. - persistResource( - reloadDomainApplication() - .asBuilder() - .setContacts( - ImmutableSet.of( - DesignatedContact.create( - Type.TECH, - Key.create( - loadByForeignKey(ContactResource.class, "foo", clock.nowUtc()).get())))) - .build()); - EppException thrown = assertThrows(DuplicateContactForRoleException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_clientProhibitedStatusValue() { - setEppInput("domain_update_sunrise_prohibited_status.xml"); - persistReferencedEntities(); - persistNewApplication(); - EppException thrown = assertThrows(StatusNotClientSettableException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testSuccess_superuserProhibitedStatusValue() throws Exception { - setEppInput("domain_update_sunrise_prohibited_status.xml"); - persistReferencedEntities(); - persistNewApplication(); - clock.advanceOneMilli(); - runFlowAssertResponse( - CommitMode.LIVE, UserPrivileges.SUPERUSER, loadFile("generic_success_response.xml")); - } - - @Test - public void testFailure_duplicateContactInCommand() { - setEppInput("domain_update_sunrise_duplicate_contact.xml"); - persistReferencedEntities(); - persistNewApplication(); - EppException thrown = assertThrows(DuplicateContactForRoleException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_missingContactType() { - setEppInput("domain_update_sunrise_missing_contact_type.xml"); - persistReferencedEntities(); - persistNewApplication(); - // We need to test for missing type, but not for invalid - the schema enforces that for us. - EppException thrown = assertThrows(MissingContactTypeException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_unauthorizedClient() { - sessionMetadata.setClientId("NewRegistrar"); - persistReferencedEntities(); - persistApplication(); - EppException thrown = assertThrows(ResourceNotOwnedException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testSuccess_superuserUnauthorizedClient() throws Exception { - sessionMetadata.setClientId("NewRegistrar"); - persistReferencedEntities(); - persistApplication(); - clock.advanceOneMilli(); - runFlowAssertResponse( - CommitMode.LIVE, UserPrivileges.SUPERUSER, loadFile("generic_success_response.xml")); - } - - @Test - public void testFailure_notAuthorizedForTld() { - persistResource( - loadRegistrar("TheRegistrar").asBuilder().setAllowedTlds(ImmutableSet.of()).build()); - persistReferencedEntities(); - persistApplication(); - EppException thrown = assertThrows(NotAuthorizedForTldException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testSuccess_superuserNotAuthorizedForTld() throws Exception { - persistResource( - loadRegistrar("TheRegistrar").asBuilder().setAllowedTlds(ImmutableSet.of()).build()); - persistReferencedEntities(); - persistApplication(); - clock.advanceOneMilli(); - runFlowAssertResponse( - CommitMode.LIVE, UserPrivileges.SUPERUSER, loadFile("generic_success_response.xml")); - } - - @Test - public void testFailure_sameNameserverAddedAndRemoved() { - setEppInput("domain_update_sunrise_add_remove_same_host.xml"); - persistReferencedEntities(); - persistResource( - newApplicationBuilder() - .setNameservers( - ImmutableSet.of( - Key.create( - loadByForeignKey(HostResource.class, "ns1.example.tld", clock.nowUtc()) - .get()))) - .build()); - EppException thrown = assertThrows(AddRemoveSameValueException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_sameContactAddedAndRemoved() { - setEppInput("domain_update_sunrise_add_remove_same_contact.xml"); - persistReferencedEntities(); - persistResource( - newApplicationBuilder() - .setContacts( - ImmutableSet.of( - DesignatedContact.create( - Type.TECH, - Key.create( - loadByForeignKey(ContactResource.class, "sh8013", clock.nowUtc()) - .get())))) - .build()); - EppException thrown = assertThrows(AddRemoveSameValueException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_removeAdmin() { - setEppInput("domain_update_sunrise_remove_admin.xml"); - persistReferencedEntities(); - persistResource( - newApplicationBuilder() - .setContacts( - ImmutableSet.of( - DesignatedContact.create(Type.ADMIN, Key.create(sh8013Contact)), - DesignatedContact.create(Type.TECH, Key.create(sh8013Contact)))) - .build()); - EppException thrown = assertThrows(MissingAdminContactException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_removeTech() { - setEppInput("domain_update_sunrise_remove_tech.xml"); - persistReferencedEntities(); - persistResource( - newApplicationBuilder() - .setContacts( - ImmutableSet.of( - DesignatedContact.create(Type.ADMIN, Key.create(sh8013Contact)), - DesignatedContact.create(Type.TECH, Key.create(sh8013Contact)))) - .build()); - EppException thrown = assertThrows(MissingTechnicalContactException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_newRegistrantNotWhitelisted() { - persistReferencedEntities(); - persistApplication(); - persistResource( - Registry.get("tld") - .asBuilder() - .setAllowedRegistrantContactIds(ImmutableSet.of("contact1234")) - .build()); - clock.advanceOneMilli(); - EppException thrown = assertThrows(RegistrantNotAllowedException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testFailure_newNameserverNotWhitelisted() { - persistReferencedEntities(); - persistApplication(); - persistResource( - Registry.get("tld") - .asBuilder() - .setAllowedFullyQualifiedHostNames(ImmutableSet.of("ns1.example.foo")) - .build()); - clock.advanceOneMilli(); - EppException thrown = assertThrows(NameserversNotAllowedForTldException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testSuccess_nameserverAndRegistrantWhitelisted() throws Exception { - persistResource( - Registry.get("tld") - .asBuilder() - .setAllowedRegistrantContactIds(ImmutableSet.of("sh8013")) - .setAllowedFullyQualifiedHostNames(ImmutableSet.of("ns2.example.tld")) - .build()); - persistReferencedEntities(); - persistApplication(); - doSuccessfulTest(); - } - - @Test - public void testFailure_tldWithNameserverWhitelist_removeLastNameserver() { - setEppInput("domain_update_sunrise_remove_nameserver.xml"); - persistReferencedEntities(); - persistApplication(); - persistResource( - Registry.get("tld") - .asBuilder() - .setAllowedFullyQualifiedHostNames( - ImmutableSet.of("ns1.example.tld", "ns2.example.tld")) - .build()); - clock.advanceOneMilli(); - EppException thrown = - assertThrows( - NameserversNotSpecifiedForTldWithNameserverWhitelistException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testSuccess_tldWithNameserverWhitelist_removeNameserver() throws Exception { - setEppInput("domain_update_sunrise_remove_nameserver.xml"); - persistReferencedEntities(); - persistApplication(); - persistResource( - reloadDomainApplication() - .asBuilder() - .addNameserver( - Key.create( - loadByForeignKey(HostResource.class, "ns2.example.tld", clock.nowUtc()).get())) - .build()); - persistResource( - Registry.get("tld") - .asBuilder() - .setAllowedFullyQualifiedHostNames( - ImmutableSet.of("ns1.example.tld", "ns2.example.tld")) - .build()); - clock.advanceOneMilli(); - doSuccessfulTest(); - } - - @Test - public void testSuccess_domainNameserverRestricted_addedNameserverAllowed() throws Exception { - persistReferencedEntities(); - persistApplication(); - persistResource( - Registry.get("tld") - .asBuilder() - .setReservedLists( - persistReservedList( - "reserved", "example,NAMESERVER_RESTRICTED,ns1.example.tld:ns2.example.tld")) - .build()); - clock.advanceOneMilli(); - doSuccessfulTest(); - } - - @Test - public void testFailure_domainNameserverRestricted_addedNameserverDisallowed() { - persistReferencedEntities(); - persistApplication(); - persistResource( - Registry.get("tld") - .asBuilder() - .setReservedLists( - persistReservedList( - "reserved", "example,NAMESERVER_RESTRICTED,ns1.example.tld:ns3.example.tld")) - .build()); - clock.advanceOneMilli(); - NameserversNotAllowedForDomainException thrown = - assertThrows(NameserversNotAllowedForDomainException.class, this::runFlow); - assertThat(thrown).hasMessageThat().contains("ns2.example.tld"); - } - - @Test - public void testFailure_domainNameserverRestricted_removeLastNameserver() { - setEppInput("domain_update_sunrise_remove_nameserver.xml"); - persistReferencedEntities(); - persistApplication(); - persistResource( - Registry.get("tld") - .asBuilder() - .setReservedLists( - persistReservedList( - "reserved", "example,NAMESERVER_RESTRICTED,ns1.example.tld:ns2.example.tld")) - .build()); - clock.advanceOneMilli(); - EppException thrown = - assertThrows( - NameserversNotSpecifiedForNameserverRestrictedDomainException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testSuccess_domainNameserverRestricted_removeNameservers() throws Exception { - setEppInput("domain_update_sunrise_remove_nameserver.xml"); - persistReferencedEntities(); - persistApplication(); - persistResource( - reloadDomainApplication() - .asBuilder() - .addNameserver( - Key.create( - loadByForeignKey(HostResource.class, "ns2.example.tld", clock.nowUtc()).get())) - .build()); - persistResource( - Registry.get("tld") - .asBuilder() - .setReservedLists( - persistReservedList( - "reserved", "example,NAMESERVER_RESTRICTED,ns1.example.tld:ns2.example.tld")) - .build()); - clock.advanceOneMilli(); - doSuccessfulTest(); - } - - @Test - public void testSuccess_addedNameserversAllowedInTldAndDomainNameserversWhitelists() - throws Exception { - persistReferencedEntities(); - persistApplication(); - persistResource( - Registry.get("tld") - .asBuilder() - .setAllowedFullyQualifiedHostNames( - ImmutableSet.of("ns1.example.tld", "ns2.example.tld")) - .setReservedLists( - persistReservedList( - "reserved", "example,NAMESERVER_RESTRICTED,ns1.example.tld:ns2.example.tld")) - .build()); - clock.advanceOneMilli(); - doSuccessfulTest(); - } - - @Test - public void testFailure_addedNameserversAllowedInTld_disallowedInDomainNameserversWhitelists() { - persistReferencedEntities(); - persistApplication(); - persistResource( - Registry.get("tld") - .asBuilder() - .setAllowedFullyQualifiedHostNames( - ImmutableSet.of("ns1.example.tld", "ns2.example.tld")) - .setReservedLists( - persistReservedList( - "reserved", "example,NAMESERVER_RESTRICTED,ns1.example.tld:ns3.example.tld")) - .build()); - clock.advanceOneMilli(); - NameserversNotAllowedForDomainException thrown = - assertThrows(NameserversNotAllowedForDomainException.class, this::runFlow); - assertThat(thrown).hasMessageThat().contains("ns2.example.tld"); - } - - @Test - public void testFailure_addedNameserversDisallowedInTld_AllowedInDomainNameserversWhitelists() { - persistReferencedEntities(); - persistApplication(); - persistResource( - Registry.get("tld") - .asBuilder() - .setAllowedFullyQualifiedHostNames( - ImmutableSet.of("ns1.example.tld", "ns3.example.tld")) - .setReservedLists( - persistReservedList( - "reserved", "example,NAMESERVER_RESTRICTED,ns1.example.tld:ns2.example.tld")) - .build()); - clock.advanceOneMilli(); - NameserversNotAllowedForTldException thrown = - assertThrows(NameserversNotAllowedForTldException.class, this::runFlow); - assertThat(thrown).hasMessageThat().contains("ns2.example.tld"); - } - - @Test - public void testFailure_customPricingLogic_feeMismatch() { - persistReferencedEntities(); - persistResource( - newDomainApplication("non-free-update.tld").asBuilder().setRepoId("1-ROID").build()); - setEppInput( - "domain_update_sunrise_fee.xml", - ImmutableMap.of("DOMAIN", "non-free-update.tld", "AMOUNT", "12.00")); - clock.advanceOneMilli(); - EppException thrown = assertThrows(FeesMismatchException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - - @Test - public void testIcannActivityReportField_getsLogged() throws Exception { - persistReferencedEntities(); - persistApplication(); - clock.advanceOneMilli(); - runFlow(); - assertIcannReportingActivityFieldLogged("srs-dom-update"); - assertTldsFieldLogged("tld"); - } -} diff --git a/javatests/google/registry/flows/domain/DomainCheckFlowTest.java b/javatests/google/registry/flows/domain/DomainCheckFlowTest.java index 1246c373e..5248a5a23 100644 --- a/javatests/google/registry/flows/domain/DomainCheckFlowTest.java +++ b/javatests/google/registry/flows/domain/DomainCheckFlowTest.java @@ -15,10 +15,10 @@ package google.registry.flows.domain; import static google.registry.model.eppoutput.CheckData.DomainCheck.create; +import static google.registry.model.registry.Registry.TldState.START_DATE_SUNRISE; import static google.registry.testing.DatastoreHelper.createTld; import static google.registry.testing.DatastoreHelper.createTlds; import static google.registry.testing.DatastoreHelper.loadRegistrar; -import static google.registry.testing.DatastoreHelper.newDomainApplication; import static google.registry.testing.DatastoreHelper.persistActiveDomain; import static google.registry.testing.DatastoreHelper.persistDeletedDomain; import static google.registry.testing.DatastoreHelper.persistPremiumList; @@ -59,8 +59,6 @@ import google.registry.flows.domain.DomainFlowUtils.TransfersAreAlwaysForOneYear import google.registry.flows.domain.DomainFlowUtils.UnknownFeeCommandException; import google.registry.flows.exceptions.TooManyResourceChecksException; import google.registry.model.domain.DomainResource; -import google.registry.model.domain.launch.ApplicationStatus; -import google.registry.model.domain.launch.LaunchPhase; import google.registry.model.domain.token.AllocationToken; import google.registry.model.registry.Registry; import google.registry.model.registry.Registry.TldState; @@ -261,84 +259,6 @@ public class DomainCheckFlowTest runFlow(); } - @Test - public void testSuccess_pendingSunriseApplicationInGeneralAvailability() throws Exception { - createTld("tld", TldState.GENERAL_AVAILABILITY); - persistResource(newDomainApplication("example2.tld").asBuilder().build()); - doCheckTest( - create(true, "example1.tld", null), - create(false, "example2.tld", "Pending allocation"), - create(true, "example3.tld", null)); - } - - @Test - public void testSuccess_pendingLandrushApplicationInGeneralAvailability() throws Exception { - createTld("tld", TldState.GENERAL_AVAILABILITY); - persistResource( - newDomainApplication("example2.tld").asBuilder().setPhase(LaunchPhase.LANDRUSH).build()); - doCheckTest( - create(true, "example1.tld", null), - create(false, "example2.tld", "Pending allocation"), - create(true, "example3.tld", null)); - } - - @Test - public void testSuccess_pendingSunriseApplicationInQuietPeriod() throws Exception { - createTld("tld", TldState.QUIET_PERIOD); - persistResource(newDomainApplication("example2.tld").asBuilder().build()); - doCheckTest( - create(true, "example1.tld", null), - create(false, "example2.tld", "Pending allocation"), - create(true, "example3.tld", null)); - } - - @Test - public void testSuccess_pendingLandrushApplicationInQuietPeriod() throws Exception { - createTld("tld", TldState.QUIET_PERIOD); - persistResource( - newDomainApplication("example2.tld").asBuilder().setPhase(LaunchPhase.LANDRUSH).build()); - doCheckTest( - create(true, "example1.tld", null), - create(false, "example2.tld", "Pending allocation"), - create(true, "example3.tld", null)); - } - - @Test - public void testSuccess_pendingSunriseApplicationInSunrise() throws Exception { - createTld("tld", TldState.SUNRISE); - persistResource(newDomainApplication("example2.tld").asBuilder().build()); - doCheckTest( - create(true, "example1.tld", null), - create(true, "example2.tld", null), - create(true, "example3.tld", null)); - } - - @Test - public void testSuccess_pendingLandrushApplicationInLandrush() throws Exception { - createTld("tld", TldState.LANDRUSH); - persistResource( - newDomainApplication("example2.tld").asBuilder().setPhase(LaunchPhase.LANDRUSH).build()); - doCheckTest( - create(true, "example1.tld", null), - create(true, "example2.tld", null), - create(true, "example3.tld", null)); - } - - @Test - public void testSuccess_rejectedApplication() throws Exception { - createTld("tld", TldState.LANDRUSH); - persistResource( - newDomainApplication("example2.tld") - .asBuilder() - .setPhase(LaunchPhase.LANDRUSH) - .setApplicationStatus(ApplicationStatus.REJECTED) - .build()); - doCheckTest( - create(true, "example1.tld", null), - create(true, "example2.tld", null), - create(true, "example3.tld", null)); - } - @Test public void testFailure_tooManyIds() { setEppInput("domain_check_51.xml"); @@ -693,7 +613,7 @@ public class DomainCheckFlowTest @Test public void testFeeExtension_feesNotOmittedOnReservedNamesInSunrise_v06() throws Exception { - createTld("tld", TldState.SUNRISE); + createTld("tld", START_DATE_SUNRISE); persistResource( Registry.get("tld") .asBuilder() @@ -707,7 +627,7 @@ public class DomainCheckFlowTest @Test public void testFeeExtension_feesNotOmittedOnReservedNamesInSunrise_v11_create() throws Exception { - createTld("tld", TldState.SUNRISE); + createTld("tld", START_DATE_SUNRISE); persistResource( Registry.get("tld") .asBuilder() @@ -720,7 +640,7 @@ public class DomainCheckFlowTest @Test public void testFeeExtension_feesNotOmittedOnReservedNamesInSunrise_v11_renew() throws Exception { - createTld("tld", TldState.SUNRISE); + createTld("tld", START_DATE_SUNRISE); persistResource( Registry.get("tld") .asBuilder() @@ -734,7 +654,7 @@ public class DomainCheckFlowTest @Test public void testFeeExtension_feesNotOmittedOnReservedNamesInSunrise_v11_transfer() throws Exception { - createTld("tld", TldState.SUNRISE); + createTld("tld", START_DATE_SUNRISE); persistResource( Registry.get("tld") .asBuilder() @@ -748,7 +668,7 @@ public class DomainCheckFlowTest @Test public void testFeeExtension_feesNotOmittedOnReservedNamesInSunrise_v11_restore() throws Exception { - createTld("tld", TldState.SUNRISE); + createTld("tld", START_DATE_SUNRISE); persistResource( Registry.get("tld") .asBuilder() @@ -761,7 +681,7 @@ public class DomainCheckFlowTest @Test public void testFeeExtension_feesNotOmittedOnReservedNamesInSunrise_v12() throws Exception { - createTld("tld", TldState.SUNRISE); + createTld("tld", START_DATE_SUNRISE); persistResource( Registry.get("tld") .asBuilder() diff --git a/javatests/google/registry/flows/domain/DomainClaimsCheckFlowTest.java b/javatests/google/registry/flows/domain/DomainClaimsCheckFlowTest.java index 5d5bfe7f1..3650ebfa9 100644 --- a/javatests/google/registry/flows/domain/DomainClaimsCheckFlowTest.java +++ b/javatests/google/registry/flows/domain/DomainClaimsCheckFlowTest.java @@ -26,7 +26,6 @@ import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; import google.registry.flows.EppException; import google.registry.flows.ResourceFlowTestCase; -import google.registry.flows.domain.DomainClaimsCheckFlow.DomainClaimsCheckNotAllowedInSunrise; import google.registry.flows.domain.DomainClaimsCheckFlow.DomainClaimsCheckNotAllowedWithAllocationTokens; import google.registry.flows.domain.DomainFlowUtils.BadCommandForRegistryPhaseException; import google.registry.flows.domain.DomainFlowUtils.ClaimsPeriodEndedException; @@ -64,12 +63,6 @@ public class DomainClaimsCheckFlowTest doSuccessfulTest("domain_check_claims_response_none.xml"); } - @Test - public void testSuccess_sunrush() throws Exception { - createTld("tld", TldState.SUNRUSH); - doSuccessfulTest("domain_check_claims_response_none.xml"); - } - @Test public void testSuccess_quietPeriod() throws Exception { createTld("tld", TldState.QUIET_PERIOD); @@ -143,17 +136,9 @@ public class DomainClaimsCheckFlowTest assertAboutEppExceptions().that(thrown).marshalsToXml(); } - @Test - public void testFailure_sunrise() { - createTld("tld", TldState.SUNRISE); - setEppInput("domain_check_claims.xml"); - EppException thrown = assertThrows(DomainClaimsCheckNotAllowedInSunrise.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - @Test public void testFailure_allocationToken() { - createTld("tld", TldState.SUNRISE); + createTld("tld"); setEppInput("domain_check_claims_allocationtoken.xml"); EppException thrown = assertThrows(DomainClaimsCheckNotAllowedWithAllocationTokens.class, this::runFlow); diff --git a/javatests/google/registry/flows/domain/DomainCreateFlowTest.java b/javatests/google/registry/flows/domain/DomainCreateFlowTest.java index 3837cc7ee..2d8cc97cf 100644 --- a/javatests/google/registry/flows/domain/DomainCreateFlowTest.java +++ b/javatests/google/registry/flows/domain/DomainCreateFlowTest.java @@ -36,11 +36,9 @@ import static google.registry.testing.DatastoreHelper.deleteTld; import static google.registry.testing.DatastoreHelper.getHistoryEntries; import static google.registry.testing.DatastoreHelper.loadRegistrar; import static google.registry.testing.DatastoreHelper.newContactResource; -import static google.registry.testing.DatastoreHelper.newDomainApplication; import static google.registry.testing.DatastoreHelper.newHostResource; import static google.registry.testing.DatastoreHelper.persistActiveContact; import static google.registry.testing.DatastoreHelper.persistActiveDomain; -import static google.registry.testing.DatastoreHelper.persistActiveDomainApplication; import static google.registry.testing.DatastoreHelper.persistActiveHost; import static google.registry.testing.DatastoreHelper.persistDeletedDomain; import static google.registry.testing.DatastoreHelper.persistReservedList; @@ -72,7 +70,6 @@ import google.registry.flows.EppRequestSource; import google.registry.flows.ExtensionManager.UndeclaredServiceExtensionException; import google.registry.flows.ResourceFlowTestCase; import google.registry.flows.domain.DomainCreateFlow.AnchorTenantCreatePeriodException; -import google.registry.flows.domain.DomainCreateFlow.DomainHasOpenApplicationsException; import google.registry.flows.domain.DomainCreateFlow.MustHaveSignedMarksInCurrentPhaseException; import google.registry.flows.domain.DomainCreateFlow.NoGeneralRegistrationsInCurrentPhaseException; import google.registry.flows.domain.DomainCreateFlow.SignedMarksOnlyDuringSunriseException; @@ -138,7 +135,6 @@ import google.registry.model.billing.BillingEvent.Flag; import google.registry.model.billing.BillingEvent.Reason; import google.registry.model.domain.DomainResource; import google.registry.model.domain.GracePeriod; -import google.registry.model.domain.launch.ApplicationStatus; import google.registry.model.domain.launch.LaunchNotice; import google.registry.model.domain.rgp.GracePeriodStatus; import google.registry.model.domain.secdns.DelegationSignerData; @@ -1179,35 +1175,6 @@ public class DomainCreateFlowTest extends ResourceFlowTestCaseMakes sure that a sunrise registration without signed mark during end-date sunrise fails - * with the "wrong phase" error rather than the "missing signed mark" error. - */ - @Test - public void testFailure_registrationDuringEndDateSunrise_wrongPhase() { - createTld("tld", TldState.SUNRISE); - setEppInput("domain_create_registration_sunrise.xml"); - persistContactsAndHosts(); - EppException thrown = - assertThrows(NoGeneralRegistrationsInCurrentPhaseException.class, this::runFlow); - assertAboutEppExceptions().that(thrown).marshalsToXml(); - } - @Test public void testFailure_expiredClaim() { clock.setTo(DateTime.parse("2010-08-17T09:00:00.0Z")); @@ -1716,64 +1632,6 @@ public class DomainCreateFlowTest extends ResourceFlowTestCaseTODO(b/76095570):have the same exact test on end-date sunrise - using the same .xml file - - * that checks that an application was created. */ @Test public void testSuccess_startDateSunriseRegistration_withEncodedSignedMark_noType() @@ -1842,20 +1697,6 @@ public class DomainCreateFlowTest extends ResourceFlowTestCase> nameservers = new ImmutableSet.Builder<>(); for (int i = 1; i < 15; i++) { diff --git a/javatests/google/registry/flows/domain/testdata/domain_allocate.xml b/javatests/google/registry/flows/domain/testdata/domain_allocate.xml deleted file mode 100644 index e9cd898fb..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_allocate.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - %DOMAIN% - 2 - - ns1.example.net - ns2.example.net - - jd1234 - sh8013 - sh8013 - - 2fooBAR - - - - - - %APPLICATIONID% - 2010-08-16T10:00:00.0Z - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_allocate_11_years.xml b/javatests/google/registry/flows/domain/testdata/domain_allocate_11_years.xml deleted file mode 100644 index bd03747d8..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_allocate_11_years.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - example-one.tld - 11 - jd1234 - sh8013 - sh8013 - - 2fooBAR - - - - - - 2-TLD - 2010-08-16T10:00:00.0Z - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_allocate_13_nameservers.xml b/javatests/google/registry/flows/domain/testdata/domain_allocate_13_nameservers.xml deleted file mode 100644 index 9059411b3..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_allocate_13_nameservers.xml +++ /dev/null @@ -1,39 +0,0 @@ - - - - - example-one.tld - 2 - - ns1.example.net - ns2.example.net - ns3.example.net - ns4.example.net - ns5.example.net - ns6.example.net - ns7.example.net - ns8.example.net - ns9.example.net - ns10.example.net - ns11.example.net - ns12.example.net - ns13.example.net - - jd1234 - sh8013 - sh8013 - - 2fooBAR - - - - - - 2-TLD - 2010-08-16T10:00:00.0Z - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_allocate_bad_application_roid.xml b/javatests/google/registry/flows/domain/testdata/domain_allocate_bad_application_roid.xml deleted file mode 100644 index 2ba43744e..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_allocate_bad_application_roid.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - example-one.tld - 2 - - ns1.example.net - ns2.example.net - - jd1234 - sh8013 - sh8013 - - 2fooBAR - - - - - - 8-TLD - 2010-08-16T10:00:00.0Z - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_allocate_claims_notice.xml b/javatests/google/registry/flows/domain/testdata/domain_allocate_claims_notice.xml deleted file mode 100644 index 0a423a7f8..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_allocate_claims_notice.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - - - example-one.tld - 2 - - ns1.example.net - ns2.example.net - - jd1234 - sh8013 - sh8013 - - 2fooBAR - - - - - - 2-TLD - 2010-08-16T10:00:00.0Z - - 370d0b7c9223372036854775807 - 2011-08-16T09:00:00.0Z - 2010-07-16T09:00:00.0Z - - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_allocate_collision.xml b/javatests/google/registry/flows/domain/testdata/domain_allocate_collision.xml deleted file mode 100644 index 166a56318..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_allocate_collision.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - collision-label.tld - 2 - - ns1.example.net - ns2.example.net - - jd1234 - sh8013 - sh8013 - - 2fooBAR - - - - - - 2-TLD - 2010-08-16T10:00:00.0Z - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_allocate_dsdata.xml b/javatests/google/registry/flows/domain/testdata/domain_allocate_dsdata.xml deleted file mode 100644 index 611f04507..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_allocate_dsdata.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - example-one.tld - 2 - - ns1.example.net - ns2.example.net - - jd1234 - sh8013 - sh8013 - - 2fooBAR - - - - - - 2-TLD - 2010-08-16T10:00:00.0Z - - - - 12345 - 3 - 1 - 49FD46E6C4B45C55D4AC - - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_allocate_dsdata_8_records.xml b/javatests/google/registry/flows/domain/testdata/domain_allocate_dsdata_8_records.xml deleted file mode 100644 index a4f9e9ef6..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_allocate_dsdata_8_records.xml +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - example-one.tld - 2 - - ns1.example.net - ns2.example.net - - jd1234 - sh8013 - sh8013 - - 2fooBAR - - - - - - 2-TLD - 2010-08-16T10:00:00.0Z - - - - 12345 - 3 - 1 - 49FD46E6C4B45C55D4AC - - - 12346 - 3 - 1 - 49FD46E6C4B45C55D4AC - - - 12347 - 3 - 1 - 49FD46E6C4B45C55D4AC - - - 12348 - 3 - 1 - 49FD46E6C4B45C55D4AC - - - 12349 - 3 - 1 - 49FD46E6C4B45C55D4AC - - - 12350 - 3 - 1 - 49FD46E6C4B45C55D4AC - - - 12351 - 3 - 1 - 49FD46E6C4B45C55D4AC - - - 12352 - 3 - 1 - 49FD46E6C4B45C55D4AC - - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_allocate_idn.xml b/javatests/google/registry/flows/domain/testdata/domain_allocate_idn.xml deleted file mode 100644 index f24653af7..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_allocate_idn.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - xn--abc-873b2e7eb1k8a4lpjvv.tld - 2 - - ns1.example.net - ns2.example.net - - jd1234 - sh8013 - sh8013 - - 2fooBAR - - - - - - 2-TLD - 2010-08-16T10:00:00.0Z - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_allocate_no_nameservers.xml b/javatests/google/registry/flows/domain/testdata/domain_allocate_no_nameservers.xml deleted file mode 100644 index c547dc9b9..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_allocate_no_nameservers.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - example-one.tld - 2 - jd1234 - sh8013 - sh8013 - - 2fooBAR - - - - - - 2-TLD - 2010-08-16T10:00:00.0Z - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_allocate_premium.xml b/javatests/google/registry/flows/domain/testdata/domain_allocate_premium.xml deleted file mode 100644 index 63f3798e9..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_allocate_premium.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - rich.example - 2 - - ns1.example.net - ns2.example.net - - jd1234 - sh8013 - sh8013 - - 2fooBAR - - - - - - 2-EXAMPLE - 2010-08-16T10:00:00.0Z - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_allocate_reserved.xml b/javatests/google/registry/flows/domain/testdata/domain_allocate_reserved.xml deleted file mode 100644 index db302cb07..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_allocate_reserved.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - reserved-label.tld - 2 - - ns1.example.net - ns2.example.net - - jd1234 - sh8013 - sh8013 - - 2fooBAR - - - - - - 2-TLD - 2010-08-16T10:00:00.0Z - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_allocate_response.xml b/javatests/google/registry/flows/domain/testdata/domain_allocate_response.xml deleted file mode 100644 index bc97af7c0..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_allocate_response.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - Command completed successfully - - - - example-one.tld - 2010-09-16T10:00:00.0Z - 2012-09-16T10:00:00.0Z - - - - ABC-12345 - server-trid - - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_allocate_smd_id.xml b/javatests/google/registry/flows/domain/testdata/domain_allocate_smd_id.xml deleted file mode 100644 index 978585fd2..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_allocate_smd_id.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - example-one.tld - 2 - - ns1.example.net - ns2.example.net - - jd1234 - sh8013 - sh8013 - - 2fooBAR - - - - - - 2-TLD - 2010-08-16T10:00:00.0Z - 1-1 - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_create_landrush.xml b/javatests/google/registry/flows/domain/testdata/domain_create_landrush.xml deleted file mode 100644 index e89c8df2c..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_create_landrush.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - test-validate.tld - - ns1.example.net - ns2.example.net - - jd1234 - sh8013 - sh8013 - - - - - - - - landrush - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_create_landrush_11_years.xml b/javatests/google/registry/flows/domain/testdata/domain_create_landrush_11_years.xml deleted file mode 100644 index 9154a5ca1..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_create_landrush_11_years.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - test-validate.tld - 11 - - ns1.example.net - ns2.example.net - - jd1234 - sh8013 - sh8013 - - 2fooBAR - - - - - - landrush - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_create_landrush_allowedinsunrise.xml b/javatests/google/registry/flows/domain/testdata/domain_create_landrush_allowedinsunrise.xml deleted file mode 100644 index 54ca2b722..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_create_landrush_allowedinsunrise.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - test---validate.tld - - ns1.example.net - ns2.example.net - - jd1234 - sh8013 - sh8013 - - 2fooBAR - - - - - - sunrise - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_create_landrush_claim_notice.xml b/javatests/google/registry/flows/domain/testdata/domain_create_landrush_claim_notice.xml deleted file mode 100644 index baa01cf90..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_create_landrush_claim_notice.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - example-one.tld - - ns1.example.net - ns2.example.net - - jd1234 - sh8013 - sh8013 - - 2fooBAR - - - - - - landrush - - 370d0b7c9223372036854775807 - 2010-08-16T09:00:00.0Z - 2009-08-16T09:00:00.0Z - - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_create_landrush_fee.xml b/javatests/google/registry/flows/domain/testdata/domain_create_landrush_fee.xml deleted file mode 100644 index a71d1349a..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_create_landrush_fee.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - test-validate.tld - - ns1.example.net - ns2.example.net - - jd1234 - sh8013 - sh8013 - - 2fooBAR - - - - - - landrush - - - USD - 13.00 - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_create_landrush_fee_applied.xml b/javatests/google/registry/flows/domain/testdata/domain_create_landrush_fee_applied.xml deleted file mode 100644 index 3b03a06df..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_create_landrush_fee_applied.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - test-validate.tld - - ns1.example.net - ns2.example.net - - jd1234 - sh8013 - sh8013 - - 2fooBAR - - - - - - landrush - - - USD - 13.00 - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_create_landrush_fee_bad_scale.xml b/javatests/google/registry/flows/domain/testdata/domain_create_landrush_fee_bad_scale.xml deleted file mode 100644 index 334eaf86a..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_create_landrush_fee_bad_scale.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - test-validate.tld - - ns1.example.net - ns2.example.net - - jd1234 - sh8013 - sh8013 - - 2fooBAR - - - - - - landrush - - - USD - 13.000 - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_create_landrush_fee_defaults.xml b/javatests/google/registry/flows/domain/testdata/domain_create_landrush_fee_defaults.xml deleted file mode 100644 index a10084ef1..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_create_landrush_fee_defaults.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - test-validate.tld - - ns1.example.net - ns2.example.net - - jd1234 - sh8013 - sh8013 - - 2fooBAR - - - - - - landrush - - - USD - 13.00 - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_create_landrush_fee_grace_period.xml b/javatests/google/registry/flows/domain/testdata/domain_create_landrush_fee_grace_period.xml deleted file mode 100644 index 9e557f97f..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_create_landrush_fee_grace_period.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - test-validate.tld - - ns1.example.net - ns2.example.net - - jd1234 - sh8013 - sh8013 - - 2fooBAR - - - - - - landrush - - - USD - 13.00 - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_create_landrush_fee_refundable.xml b/javatests/google/registry/flows/domain/testdata/domain_create_landrush_fee_refundable.xml deleted file mode 100644 index e250f3874..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_create_landrush_fee_refundable.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - test-validate.tld - - ns1.example.net - ns2.example.net - - jd1234 - sh8013 - sh8013 - - 2fooBAR - - - - - - landrush - - - USD - 13.00 - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_create_landrush_fee_response.xml b/javatests/google/registry/flows/domain/testdata/domain_create_landrush_fee_response.xml deleted file mode 100644 index a20b73bc1..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_create_landrush_fee_response.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - Command completed successfully - - - - test-validate.tld - 2013-08-09T12:05:59Z - - - - - landrush - 1-TLD - - <%FEE_NS%:creData xmlns:%FEE_NS%="urn:ietf:params:xml:ns:fee-%FEE_VERSION%"> - <%FEE_NS%:currency>USD - <%FEE_NS%:fee description="create">13.00 - - - - ABC-12345 - server-trid - - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_create_landrush_months.xml b/javatests/google/registry/flows/domain/testdata/domain_create_landrush_months.xml deleted file mode 100644 index a4926fcea..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_create_landrush_months.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - test-validate.tld - 2 - - ns1.example.net - ns2.example.net - - jd1234 - sh8013 - sh8013 - - 2fooBAR - - - - - - landrush - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_create_landrush_premium.xml b/javatests/google/registry/flows/domain/testdata/domain_create_landrush_premium.xml deleted file mode 100644 index 70e6e507e..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_create_landrush_premium.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - rich.example - - ns1.example.net - ns2.example.net - - jd1234 - sh8013 - sh8013 - - 2fooBAR - - - - - - sunrise - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_create_landrush_premium_response.xml b/javatests/google/registry/flows/domain/testdata/domain_create_landrush_premium_response.xml deleted file mode 100644 index ce4d10b65..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_create_landrush_premium_response.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - Command completed successfully - - - - rich.example - 2013-08-09T12:05:59Z - - - - - sunrise - 1-EXAMPLE - - - - ABC-12345 - server-trid - - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_create_landrush_response.xml b/javatests/google/registry/flows/domain/testdata/domain_create_landrush_response.xml deleted file mode 100644 index 0cfa60e2f..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_create_landrush_response.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - Command completed successfully - - - - test-validate.tld - 2013-08-09T12:05:59Z - - - - - landrush - 1-TLD - - - - ABC-12345 - server-trid - - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_create_landrush_response_claims.xml b/javatests/google/registry/flows/domain/testdata/domain_create_landrush_response_claims.xml deleted file mode 100644 index 5ff9a3ac7..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_create_landrush_response_claims.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - Command completed successfully - - - - example-one.tld - 2013-08-09T12:05:59Z - - - - - landrush - 1-TLD - - - - ABC-12345 - server-trid - - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_create_landrush_signed_mark.xml b/javatests/google/registry/flows/domain/testdata/domain_create_landrush_signed_mark.xml deleted file mode 100644 index d6609e40f..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_create_landrush_signed_mark.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - test-validate.tld - - ns1.example.net - ns2.example.net - - jd1234 - sh8013 - sh8013 - - 2fooBAR - - - - - - landrush - -PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHNtZDpzaWduZWRNYXJrIHhtbG5zOnNtZD0idXJuOmlldGY6cGFyYW1zOnhtbDpuczpzaWduZWRNYXJrLTEuMCIgaWQ9Il8zOGFjNTg2ZC05OTg5LTQ4MTctYjcwOC1kOGU4MzQ0NzZkOTUiPgogIDxzbWQ6aWQ+MDAwMDAwMTc2MTM3NjA0Mjc1OTEzNi02NTUzNTwvc21kOmlkPgogIDxzbWQ6aXNzdWVySW5mbyBpc3N1ZXJJRD0iNjU1MzUiPgogICAgPHNtZDpvcmc+SUNBTk4gVE1DSCBURVNUSU5HIFRNVjwvc21kOm9yZz4KICAgIDxzbWQ6ZW1haWw+bm90YXZhaWxhYmxlQGV4YW1wbGUuY29tPC9zbWQ6ZW1haWw+CiAgICA8c21kOnVybD5odHRwOi8vd3d3LmV4YW1wbGUuY29tPC9zbWQ6dXJsPgogICAgPHNtZDp2b2ljZT4rMzIuMDAwMDAwPC9zbWQ6dm9pY2U+CiAgPC9zbWQ6aXNzdWVySW5mbz4KICA8c21kOm5vdEJlZm9yZT4yMDEzLTA4LTA5VDEwOjA1OjU5LjEzNlo8L3NtZDpub3RCZWZvcmU+CiAgPHNtZDpub3RBZnRlcj4yMDE3LTA3LTIzVDIyOjAwOjAwLjAwMFo8L3NtZDpub3RBZnRlcj4KICA8bWFyazptYXJrIHhtbG5zOm1hcms9InVybjppZXRmOnBhcmFtczp4bWw6bnM6bWFyay0xLjAiPgogICAgPG1hcms6Y291cnQ+CiAgICAgIDxtYXJrOmlkPjAwMDUyMDEzNzM0NjkxNjkxMzczNDY5MTY5LTY1NTM1PC9tYXJrOmlkPgogICAgICA8bWFyazptYXJrTmFtZT5UZXN0ICZhbXA7IFZhbGlkYXRlPC9tYXJrOm1hcmtOYW1lPgogICAgICA8bWFyazpob2xkZXIgZW50aXRsZW1lbnQ9Im93bmVyIj4KICAgICAgICA8bWFyazpvcmc+QWcgY29ycG9yYXRpb248L21hcms6b3JnPgogICAgICAgIDxtYXJrOmFkZHI+CiAgICAgICAgICA8bWFyazpzdHJlZXQ+MTMwNSBCcmlnaHQgQXZlbnVlPC9tYXJrOnN0cmVldD4KICAgICAgICAgIDxtYXJrOmNpdHk+QXJjYWRpYTwvbWFyazpjaXR5PgogICAgICAgICAgPG1hcms6c3A+Q0E8L21hcms6c3A+CiAgICAgICAgICA8bWFyazpwYz45MDAyODwvbWFyazpwYz4KICAgICAgICAgIDxtYXJrOmNjPlVTPC9tYXJrOmNjPgogICAgICAgIDwvbWFyazphZGRyPgogICAgICA8L21hcms6aG9sZGVyPgogICAgICA8bWFyazpjb250YWN0IHR5cGU9ImFnZW50Ij4KICAgICAgICA8bWFyazpuYW1lPlRvbnkgSG9sbGFuZDwvbWFyazpuYW1lPgogICAgICAgIDxtYXJrOm9yZz5BZyBjb3Jwb3JhdGlvbjwvbWFyazpvcmc+CiAgICAgICAgPG1hcms6YWRkcj4KICAgICAgICAgIDxtYXJrOnN0cmVldD4xMzA1IEJyaWdodCBBdmVudWU8L21hcms6c3RyZWV0PgogICAgICAgICAgPG1hcms6Y2l0eT5BcmNhZGlhPC9tYXJrOmNpdHk+CiAgICAgICAgICA8bWFyazpzcD5DQTwvbWFyazpzcD4KICAgICAgICAgIDxtYXJrOnBjPjkwMDI4PC9tYXJrOnBjPgogICAgICAgICAgPG1hcms6Y2M+VVM8L21hcms6Y2M+CiAgICAgICAgPC9tYXJrOmFkZHI+CiAgICAgICAgPG1hcms6dm9pY2U+KzEuMjAyNTU2MjMwMjwvbWFyazp2b2ljZT4KICAgICAgICA8bWFyazpmYXg+KzEuMjAyNTU2MjMwMTwvbWFyazpmYXg+CiAgICAgICAgPG1hcms6ZW1haWw+aW5mb0BhZ2NvcnBvcmF0aW9uLmNvbTwvbWFyazplbWFpbD4KICAgICAgPC9tYXJrOmNvbnRhY3Q+CiAgICAgIDxtYXJrOmxhYmVsPnRlc3RhbmR2YWxpZGF0ZTwvbWFyazpsYWJlbD4KICAgICAgPG1hcms6bGFiZWw+dGVzdC0tLXZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0YW5kLXZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LXZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LWFuZHZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LS12YWxpZGF0ZTwvbWFyazpsYWJlbD4KICAgICAgPG1hcms6bGFiZWw+dGVzdHZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LWFuZC12YWxpZGF0ZTwvbWFyazpsYWJlbD4KICAgICAgPG1hcms6Z29vZHNBbmRTZXJ2aWNlcz5NdXNpY2FsIGluc3RydW1lbnRzPC9tYXJrOmdvb2RzQW5kU2VydmljZXM+CiAgICAgIDxtYXJrOnJlZk51bT4xMjM0PC9tYXJrOnJlZk51bT4KICAgICAgPG1hcms6cHJvRGF0ZT4yMDEyLTEyLTMxVDIzOjAwOjAwLjAwMFo8L21hcms6cHJvRGF0ZT4KICAgICAgPG1hcms6Y2M+VVM8L21hcms6Y2M+CiAgICAgIDxtYXJrOmNvdXJ0TmFtZT5Ib3ZlPC9tYXJrOmNvdXJ0TmFtZT4KICAgIDwvbWFyazpjb3VydD4KICA8L21hcms6bWFyaz4KPGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgSWQ9Il9mZDBmMTM0Ni03MTM4LTRiMGMtODRkNy0yZTdlYmY2YTExNmMiPjxkczpTaWduZWRJbmZvPjxkczpDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PGRzOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI3JzYS1zaGEyNTYiLz48ZHM6UmVmZXJlbmNlIFVSST0iI18zOGFjNTg2ZC05OTg5LTQ4MTctYjcwOC1kOGU4MzQ0NzZkOTUiPjxkczpUcmFuc2Zvcm1zPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZW52ZWxvcGVkLXNpZ25hdHVyZSIvPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz48L2RzOlRyYW5zZm9ybXM+PGRzOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI3NoYTI1NiIvPjxkczpEaWdlc3RWYWx1ZT55WDRLTWgrUDJ2OVUxNnh0eTl2ZGU5S0JTZmZFTjRHbTVVa2tLblI5cDdZPTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PGRzOlJlZmVyZW5jZSBVUkk9IiNfYjg5MjI1NWItMWJjOC00MTdiLWE0NGYtZWE5OGJjMzQ5OWE0Ij48ZHM6VHJhbnNmb3Jtcz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PC9kczpUcmFuc2Zvcm1zPjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNzaGEyNTYiLz48ZHM6RGlnZXN0VmFsdWU+dDNuNkFBTHdiaUhNbGRyZkpEQjNYQ3FkSlFzOEhjeU5pK1lXT3ZoV1krdz08L2RzOkRpZ2VzdFZhbHVlPjwvZHM6UmVmZXJlbmNlPjwvZHM6U2lnbmVkSW5mbz48ZHM6U2lnbmF0dXJlVmFsdWUgSWQ9Il82OWQzMDRlNC04NzlmLTRmNzEtYmMxMi02ZjJhZDlmOTM5OGYiPmJSVFIzTzUxM0dnTkExS2pxb0g0VXE3cUlhN2NJaTljaXZmZmFyVmE0VVQyVEUzdzEzc2xsUDFXbkdYYjcyYUw0dXhkbDFUaTZZbFoKVnVjSC92ZU5zUnlWZFZwSFF0eEJNTDFLU0tZbXc3ZjdPNnVsYWtrYnFrTkdYVmFZdEVsa1dBZnZFSDBsNURkNkFZT0k2UGN5SzBCWgo2VEl3cWZhQ1luVk5DdTFpdDIzMm9EREtiWU9RNk02YnhmU3BvVFYvaTVVdEVyak0vZWFFanp4MXFxZzlFZmxOcm1obmRtZW42Q2JYCjVrNmZ4Y1o0V2NtWkM4V0Ruc0t0VWVjaGtmbko4L0Jwc2ppM1Foekg4YzFiL0RqTmR5UFFyOGlndXBqR2dlU0JmMHhRRUtoK3pRT2oKYTNvMEhRWjZ1UlUvejdWN2RoNU9qUEhmV2lLc0pqRjVwc2ppRlE9PTwvZHM6U2lnbmF0dXJlVmFsdWU+PGRzOktleUluZm8gSWQ9Il9iODkyMjU1Yi0xYmM4LTQxN2ItYTQ0Zi1lYTk4YmMzNDk5YTQiPjxkczpYNTA5RGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSUZMekNDQkJlZ0F3SUJBZ0lnTHJBYmV2b2FlNTJ5M2Y2QzJ0QjBTbjNwN1hKbTBUMDJGb2d4S0NmTmhYb3dEUVlKS29aSWh2Y04KQVFFTEJRQXdmREVMTUFrR0ExVUVCaE1DVlZNeFBEQTZCZ05WQkFvVE0wbHVkR1Z5Ym1WMElFTnZjbkJ2Y21GMGFXOXVJR1p2Y2lCQgpjM05wWjI1bFpDQk9ZVzFsY3lCaGJtUWdUblZ0WW1WeWN6RXZNQzBHQTFVRUF4TW1TVU5CVGs0Z1ZISmhaR1Z0WVhKcklFTnNaV0Z5CmFXNW5hRzkxYzJVZ1VHbHNiM1FnUTBFd0hoY05NVE13TmpJMk1EQXdNREF3V2hjTk1UZ3dOakkxTWpNMU9UVTVXakNCanpFTE1Ba0cKQTFVRUJoTUNRa1V4SURBZUJnTlZCQWdURjBKeWRYTnpaV3h6TFVOaGNHbDBZV3dnVW1WbmFXOXVNUkV3RHdZRFZRUUhFd2hDY25WegpjMlZzY3pFUk1BOEdBMVVFQ2hNSVJHVnNiMmwwZEdVeE9EQTJCZ05WQkFNVEwwbERRVTVPSUZSTlEwZ2dRWFYwYUc5eWFYcGxaQ0JVCmNtRmtaVzFoY21zZ1VHbHNiM1FnVm1Gc2FXUmhkRzl5TUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUEKeGxwM0twWUhYM1d5QXNGaFNrM0x3V2ZuR2x4blVERnFGWkEzVW91TVlqL1hpZ2JNa05lRVhJamxrUk9LVDRPUEdmUngvTEF5UmxRUQpqQ012NHFoYmtjWDFwN2FyNjNmbHE0U1pOVmNsMTVsN2gwdVQ1OEZ6U2ZubHowdTVya0hmSkltRDQzK21hUC84Z3YzNkZSMjdqVzhSCjl3WTRoaytXczRJQjBpRlNkOFNYdjFLcjh3L0ptTVFTRGtpdUcrUmZJaXVid1EvZnk3RWtqNVFXaFBadyttTXhOS25IVUx5M3hZejIKTHdWZmZ0andVdWVhY3ZxTlJDa01YbENsT0FEcWZUOG9TWm9lRFhlaEh2bFBzTENlbUdCb1RLdXJza0lTNjlGMHlQRUg1Z3plMEgrZgo4RlJPc0lvS1NzVlEzNEI0Uy9qb0U2N25wc0pQVGRLc05QSlR5UUlEQVFBQm80SUJoekNDQVlNd0RBWURWUjBUQVFIL0JBSXdBREFkCkJnTlZIUTRFRmdRVW9GcFk3NnA1eW9ORFJHdFFwelZ1UjgxVVdRMHdnY1lHQTFVZEl3U0J2akNCdTRBVXc2MCtwdFlSQUVXQVhEcFgKU29wdDNERU5ubkdoZ1lDa2ZqQjhNUXN3Q1FZRFZRUUdFd0pWVXpFOE1Eb0dBMVVFQ2hNelNXNTBaWEp1WlhRZ1EyOXljRzl5WVhScApiMjRnWm05eUlFRnpjMmxuYm1Wa0lFNWhiV1Z6SUdGdVpDQk9kVzFpWlhKek1TOHdMUVlEVlFRREV5WkpRMEZPVGlCVWNtRmtaVzFoCmNtc2dRMnhsWVhKcGJtZG9iM1Z6WlNCUWFXeHZkQ0JEUVlJZ0xyQWJldm9hZTUyeTNmNkMydEIwU24zcDdYSm0wVDAyRm9neEtDZk4KaFhrd0RnWURWUjBQQVFIL0JBUURBZ2VBTURRR0ExVWRId1F0TUNzd0thQW5vQ1dHSTJoMGRIQTZMeTlqY213dWFXTmhibTR1YjNKbgpMM1J0WTJoZmNHbHNiM1F1WTNKc01FVUdBMVVkSUFRK01Ed3dPZ1lES2dNRU1ETXdNUVlJS3dZQkJRVUhBZ0VXSldoMGRIQTZMeTkzCmQzY3VhV05oYm00dWIzSm5MM0JwYkc5MFgzSmxjRzl6YVhSdmNua3dEUVlKS29aSWh2Y05BUUVMQlFBRGdnRUJBSWVEWVlKcjYwVzMKeTlRcyszelJWSTlrZWtLb201dmtIT2FsQjN3SGFaSWFBRllwSTk4dFkwYVZOOWFHT04wdjZXUUYrbnZ6MUtSWlFiQXowMUJYdGFSSgo0bVBrYXJoaHVMbjlOa0J4cDhIUjVxY2MrS0g3Z3Y2ci9jMGlHM2JDTkorUVNyN1FmKzVNbE1vNnpMNVVkZFUvVDJqaWJNWENqL2YyCjFRdzN4OVFnb3lYTEZKOW96YUxnUTlSTWtMbE9temtDQWlYTjVBYjQzYUo5ZjdOMmdFMk5uUmpOS21tQzlBQlEwVFJ3RUtWTGhWbDEKVUdxQ0hKM0FsQlhXSVhONXNqUFFjRC8rbkhlRVhNeFl2bEF5cXhYb0QzTVd0UVZqN2oyb3FsYWtPQk1nRzgrcTJxWWxtQnRzNEZOaQp3NzQ4SWw1ODZIS0JScXhIdFpkUktXMlZxYVE9PC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9kczpTaWduYXR1cmU+PC9zbWQ6c2lnbmVkTWFyaz4= - - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_create_landrush_two_years.xml b/javatests/google/registry/flows/domain/testdata/domain_create_landrush_two_years.xml deleted file mode 100644 index 1ea1f97e0..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_create_landrush_two_years.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - test-validate.tld - 2 - - ns1.example.net - ns2.example.net - - jd1234 - sh8013 - sh8013 - - 2fooBAR - - - - - - landrush - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_create_registration_landrush.xml b/javatests/google/registry/flows/domain/testdata/domain_create_registration_landrush.xml deleted file mode 100644 index e215ebb70..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_create_registration_landrush.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - example.tld - 2 - - ns1.example.net - ns2.example.net - - jd1234 - sh8013 - sh8013 - - 2fooBAR - - - - - - landrush - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_create_registration_qlp_landrush.xml b/javatests/google/registry/flows/domain/testdata/domain_create_registration_qlp_landrush.xml deleted file mode 100644 index 643d29561..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_create_registration_qlp_landrush.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - example.tld - 2 - - ns1.example.net - ns2.example.net - - jd1234 - sh8013 - sh8013 - - 2fooBAR - - - - - - landrush - - - true - true - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_create_registration_qlp_landrush_claims_notice.xml b/javatests/google/registry/flows/domain/testdata/domain_create_registration_qlp_landrush_claims_notice.xml deleted file mode 100644 index b178db2b8..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_create_registration_qlp_landrush_claims_notice.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - example-one.tld - 2 - - ns1.example.net - ns2.example.net - - jd1234 - sh8013 - sh8013 - - 2fooBAR - - - - - - landrush - - 370d0b7c9223372036854775807 - 2010-08-16T09:00:00.0Z - 2009-08-16T09:00:00.0Z - - - - true - true - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_create_registration_qlp_landrush_encoded_signed_mark.xml b/javatests/google/registry/flows/domain/testdata/domain_create_registration_qlp_landrush_encoded_signed_mark.xml deleted file mode 100644 index bcb924be7..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_create_registration_qlp_landrush_encoded_signed_mark.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - test-validate.tld - 2 - - ns1.example.net - ns2.example.net - - jd1234 - sh8013 - sh8013 - - 2fooBAR - - - - - - landrush - -PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHNtZDpzaWduZWRNYXJrIHhtbG5zOnNtZD0idXJuOmlldGY6cGFyYW1zOnhtbDpuczpzaWduZWRNYXJrLTEuMCIgaWQ9Il8zOGFjNTg2ZC05OTg5LTQ4MTctYjcwOC1kOGU4MzQ0NzZkOTUiPgogIDxzbWQ6aWQ+MDAwMDAwMTc2MTM3NjA0Mjc1OTEzNi02NTUzNTwvc21kOmlkPgogIDxzbWQ6aXNzdWVySW5mbyBpc3N1ZXJJRD0iNjU1MzUiPgogICAgPHNtZDpvcmc+SUNBTk4gVE1DSCBURVNUSU5HIFRNVjwvc21kOm9yZz4KICAgIDxzbWQ6ZW1haWw+bm90YXZhaWxhYmxlQGV4YW1wbGUuY29tPC9zbWQ6ZW1haWw+CiAgICA8c21kOnVybD5odHRwOi8vd3d3LmV4YW1wbGUuY29tPC9zbWQ6dXJsPgogICAgPHNtZDp2b2ljZT4rMzIuMDAwMDAwPC9zbWQ6dm9pY2U+CiAgPC9zbWQ6aXNzdWVySW5mbz4KICA8c21kOm5vdEJlZm9yZT4yMDEzLTA4LTA5VDEwOjA1OjU5LjEzNlo8L3NtZDpub3RCZWZvcmU+CiAgPHNtZDpub3RBZnRlcj4yMDE3LTA3LTIzVDIyOjAwOjAwLjAwMFo8L3NtZDpub3RBZnRlcj4KICA8bWFyazptYXJrIHhtbG5zOm1hcms9InVybjppZXRmOnBhcmFtczp4bWw6bnM6bWFyay0xLjAiPgogICAgPG1hcms6Y291cnQ+CiAgICAgIDxtYXJrOmlkPjAwMDUyMDEzNzM0NjkxNjkxMzczNDY5MTY5LTY1NTM1PC9tYXJrOmlkPgogICAgICA8bWFyazptYXJrTmFtZT5UZXN0ICZhbXA7IFZhbGlkYXRlPC9tYXJrOm1hcmtOYW1lPgogICAgICA8bWFyazpob2xkZXIgZW50aXRsZW1lbnQ9Im93bmVyIj4KICAgICAgICA8bWFyazpvcmc+QWcgY29ycG9yYXRpb248L21hcms6b3JnPgogICAgICAgIDxtYXJrOmFkZHI+CiAgICAgICAgICA8bWFyazpzdHJlZXQ+MTMwNSBCcmlnaHQgQXZlbnVlPC9tYXJrOnN0cmVldD4KICAgICAgICAgIDxtYXJrOmNpdHk+QXJjYWRpYTwvbWFyazpjaXR5PgogICAgICAgICAgPG1hcms6c3A+Q0E8L21hcms6c3A+CiAgICAgICAgICA8bWFyazpwYz45MDAyODwvbWFyazpwYz4KICAgICAgICAgIDxtYXJrOmNjPlVTPC9tYXJrOmNjPgogICAgICAgIDwvbWFyazphZGRyPgogICAgICA8L21hcms6aG9sZGVyPgogICAgICA8bWFyazpjb250YWN0IHR5cGU9ImFnZW50Ij4KICAgICAgICA8bWFyazpuYW1lPlRvbnkgSG9sbGFuZDwvbWFyazpuYW1lPgogICAgICAgIDxtYXJrOm9yZz5BZyBjb3Jwb3JhdGlvbjwvbWFyazpvcmc+CiAgICAgICAgPG1hcms6YWRkcj4KICAgICAgICAgIDxtYXJrOnN0cmVldD4xMzA1IEJyaWdodCBBdmVudWU8L21hcms6c3RyZWV0PgogICAgICAgICAgPG1hcms6Y2l0eT5BcmNhZGlhPC9tYXJrOmNpdHk+CiAgICAgICAgICA8bWFyazpzcD5DQTwvbWFyazpzcD4KICAgICAgICAgIDxtYXJrOnBjPjkwMDI4PC9tYXJrOnBjPgogICAgICAgICAgPG1hcms6Y2M+VVM8L21hcms6Y2M+CiAgICAgICAgPC9tYXJrOmFkZHI+CiAgICAgICAgPG1hcms6dm9pY2U+KzEuMjAyNTU2MjMwMjwvbWFyazp2b2ljZT4KICAgICAgICA8bWFyazpmYXg+KzEuMjAyNTU2MjMwMTwvbWFyazpmYXg+CiAgICAgICAgPG1hcms6ZW1haWw+aW5mb0BhZ2NvcnBvcmF0aW9uLmNvbTwvbWFyazplbWFpbD4KICAgICAgPC9tYXJrOmNvbnRhY3Q+CiAgICAgIDxtYXJrOmxhYmVsPnRlc3RhbmR2YWxpZGF0ZTwvbWFyazpsYWJlbD4KICAgICAgPG1hcms6bGFiZWw+dGVzdC0tLXZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0YW5kLXZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LXZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LWFuZHZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LS12YWxpZGF0ZTwvbWFyazpsYWJlbD4KICAgICAgPG1hcms6bGFiZWw+dGVzdHZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LWFuZC12YWxpZGF0ZTwvbWFyazpsYWJlbD4KICAgICAgPG1hcms6Z29vZHNBbmRTZXJ2aWNlcz5NdXNpY2FsIGluc3RydW1lbnRzPC9tYXJrOmdvb2RzQW5kU2VydmljZXM+CiAgICAgIDxtYXJrOnJlZk51bT4xMjM0PC9tYXJrOnJlZk51bT4KICAgICAgPG1hcms6cHJvRGF0ZT4yMDEyLTEyLTMxVDIzOjAwOjAwLjAwMFo8L21hcms6cHJvRGF0ZT4KICAgICAgPG1hcms6Y2M+VVM8L21hcms6Y2M+CiAgICAgIDxtYXJrOmNvdXJ0TmFtZT5Ib3ZlPC9tYXJrOmNvdXJ0TmFtZT4KICAgIDwvbWFyazpjb3VydD4KICA8L21hcms6bWFyaz4KPGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgSWQ9Il9mZDBmMTM0Ni03MTM4LTRiMGMtODRkNy0yZTdlYmY2YTExNmMiPjxkczpTaWduZWRJbmZvPjxkczpDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PGRzOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI3JzYS1zaGEyNTYiLz48ZHM6UmVmZXJlbmNlIFVSST0iI18zOGFjNTg2ZC05OTg5LTQ4MTctYjcwOC1kOGU4MzQ0NzZkOTUiPjxkczpUcmFuc2Zvcm1zPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZW52ZWxvcGVkLXNpZ25hdHVyZSIvPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz48L2RzOlRyYW5zZm9ybXM+PGRzOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI3NoYTI1NiIvPjxkczpEaWdlc3RWYWx1ZT55WDRLTWgrUDJ2OVUxNnh0eTl2ZGU5S0JTZmZFTjRHbTVVa2tLblI5cDdZPTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PGRzOlJlZmVyZW5jZSBVUkk9IiNfYjg5MjI1NWItMWJjOC00MTdiLWE0NGYtZWE5OGJjMzQ5OWE0Ij48ZHM6VHJhbnNmb3Jtcz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PC9kczpUcmFuc2Zvcm1zPjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNzaGEyNTYiLz48ZHM6RGlnZXN0VmFsdWU+dDNuNkFBTHdiaUhNbGRyZkpEQjNYQ3FkSlFzOEhjeU5pK1lXT3ZoV1krdz08L2RzOkRpZ2VzdFZhbHVlPjwvZHM6UmVmZXJlbmNlPjwvZHM6U2lnbmVkSW5mbz48ZHM6U2lnbmF0dXJlVmFsdWUgSWQ9Il82OWQzMDRlNC04NzlmLTRmNzEtYmMxMi02ZjJhZDlmOTM5OGYiPmJSVFIzTzUxM0dnTkExS2pxb0g0VXE3cUlhN2NJaTljaXZmZmFyVmE0VVQyVEUzdzEzc2xsUDFXbkdYYjcyYUw0dXhkbDFUaTZZbFoKVnVjSC92ZU5zUnlWZFZwSFF0eEJNTDFLU0tZbXc3ZjdPNnVsYWtrYnFrTkdYVmFZdEVsa1dBZnZFSDBsNURkNkFZT0k2UGN5SzBCWgo2VEl3cWZhQ1luVk5DdTFpdDIzMm9EREtiWU9RNk02YnhmU3BvVFYvaTVVdEVyak0vZWFFanp4MXFxZzlFZmxOcm1obmRtZW42Q2JYCjVrNmZ4Y1o0V2NtWkM4V0Ruc0t0VWVjaGtmbko4L0Jwc2ppM1Foekg4YzFiL0RqTmR5UFFyOGlndXBqR2dlU0JmMHhRRUtoK3pRT2oKYTNvMEhRWjZ1UlUvejdWN2RoNU9qUEhmV2lLc0pqRjVwc2ppRlE9PTwvZHM6U2lnbmF0dXJlVmFsdWU+PGRzOktleUluZm8gSWQ9Il9iODkyMjU1Yi0xYmM4LTQxN2ItYTQ0Zi1lYTk4YmMzNDk5YTQiPjxkczpYNTA5RGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSUZMekNDQkJlZ0F3SUJBZ0lnTHJBYmV2b2FlNTJ5M2Y2QzJ0QjBTbjNwN1hKbTBUMDJGb2d4S0NmTmhYb3dEUVlKS29aSWh2Y04KQVFFTEJRQXdmREVMTUFrR0ExVUVCaE1DVlZNeFBEQTZCZ05WQkFvVE0wbHVkR1Z5Ym1WMElFTnZjbkJ2Y21GMGFXOXVJR1p2Y2lCQgpjM05wWjI1bFpDQk9ZVzFsY3lCaGJtUWdUblZ0WW1WeWN6RXZNQzBHQTFVRUF4TW1TVU5CVGs0Z1ZISmhaR1Z0WVhKcklFTnNaV0Z5CmFXNW5hRzkxYzJVZ1VHbHNiM1FnUTBFd0hoY05NVE13TmpJMk1EQXdNREF3V2hjTk1UZ3dOakkxTWpNMU9UVTVXakNCanpFTE1Ba0cKQTFVRUJoTUNRa1V4SURBZUJnTlZCQWdURjBKeWRYTnpaV3h6TFVOaGNHbDBZV3dnVW1WbmFXOXVNUkV3RHdZRFZRUUhFd2hDY25WegpjMlZzY3pFUk1BOEdBMVVFQ2hNSVJHVnNiMmwwZEdVeE9EQTJCZ05WQkFNVEwwbERRVTVPSUZSTlEwZ2dRWFYwYUc5eWFYcGxaQ0JVCmNtRmtaVzFoY21zZ1VHbHNiM1FnVm1Gc2FXUmhkRzl5TUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUEKeGxwM0twWUhYM1d5QXNGaFNrM0x3V2ZuR2x4blVERnFGWkEzVW91TVlqL1hpZ2JNa05lRVhJamxrUk9LVDRPUEdmUngvTEF5UmxRUQpqQ012NHFoYmtjWDFwN2FyNjNmbHE0U1pOVmNsMTVsN2gwdVQ1OEZ6U2ZubHowdTVya0hmSkltRDQzK21hUC84Z3YzNkZSMjdqVzhSCjl3WTRoaytXczRJQjBpRlNkOFNYdjFLcjh3L0ptTVFTRGtpdUcrUmZJaXVid1EvZnk3RWtqNVFXaFBadyttTXhOS25IVUx5M3hZejIKTHdWZmZ0andVdWVhY3ZxTlJDa01YbENsT0FEcWZUOG9TWm9lRFhlaEh2bFBzTENlbUdCb1RLdXJza0lTNjlGMHlQRUg1Z3plMEgrZgo4RlJPc0lvS1NzVlEzNEI0Uy9qb0U2N25wc0pQVGRLc05QSlR5UUlEQVFBQm80SUJoekNDQVlNd0RBWURWUjBUQVFIL0JBSXdBREFkCkJnTlZIUTRFRmdRVW9GcFk3NnA1eW9ORFJHdFFwelZ1UjgxVVdRMHdnY1lHQTFVZEl3U0J2akNCdTRBVXc2MCtwdFlSQUVXQVhEcFgKU29wdDNERU5ubkdoZ1lDa2ZqQjhNUXN3Q1FZRFZRUUdFd0pWVXpFOE1Eb0dBMVVFQ2hNelNXNTBaWEp1WlhRZ1EyOXljRzl5WVhScApiMjRnWm05eUlFRnpjMmxuYm1Wa0lFNWhiV1Z6SUdGdVpDQk9kVzFpWlhKek1TOHdMUVlEVlFRREV5WkpRMEZPVGlCVWNtRmtaVzFoCmNtc2dRMnhsWVhKcGJtZG9iM1Z6WlNCUWFXeHZkQ0JEUVlJZ0xyQWJldm9hZTUyeTNmNkMydEIwU24zcDdYSm0wVDAyRm9neEtDZk4KaFhrd0RnWURWUjBQQVFIL0JBUURBZ2VBTURRR0ExVWRId1F0TUNzd0thQW5vQ1dHSTJoMGRIQTZMeTlqY213dWFXTmhibTR1YjNKbgpMM1J0WTJoZmNHbHNiM1F1WTNKc01FVUdBMVVkSUFRK01Ed3dPZ1lES2dNRU1ETXdNUVlJS3dZQkJRVUhBZ0VXSldoMGRIQTZMeTkzCmQzY3VhV05oYm00dWIzSm5MM0JwYkc5MFgzSmxjRzl6YVhSdmNua3dEUVlKS29aSWh2Y05BUUVMQlFBRGdnRUJBSWVEWVlKcjYwVzMKeTlRcyszelJWSTlrZWtLb201dmtIT2FsQjN3SGFaSWFBRllwSTk4dFkwYVZOOWFHT04wdjZXUUYrbnZ6MUtSWlFiQXowMUJYdGFSSgo0bVBrYXJoaHVMbjlOa0J4cDhIUjVxY2MrS0g3Z3Y2ci9jMGlHM2JDTkorUVNyN1FmKzVNbE1vNnpMNVVkZFUvVDJqaWJNWENqL2YyCjFRdzN4OVFnb3lYTEZKOW96YUxnUTlSTWtMbE9temtDQWlYTjVBYjQzYUo5ZjdOMmdFMk5uUmpOS21tQzlBQlEwVFJ3RUtWTGhWbDEKVUdxQ0hKM0FsQlhXSVhONXNqUFFjRC8rbkhlRVhNeFl2bEF5cXhYb0QzTVd0UVZqN2oyb3FsYWtPQk1nRzgrcTJxWWxtQnRzNEZOaQp3NzQ4SWw1ODZIS0JScXhIdFpkUktXMlZxYVE9PC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9kczpTaWduYXR1cmU+PC9zbWQ6c2lnbmVkTWFyaz4= - - - - true - true - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_create_registration_qlp_sunrise.xml b/javatests/google/registry/flows/domain/testdata/domain_create_registration_qlp_sunrise.xml deleted file mode 100644 index 0da72e6c3..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_create_registration_qlp_sunrise.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - example.tld - 2 - - ns1.example.net - ns2.example.net - - jd1234 - sh8013 - sh8013 - - 2fooBAR - - - - - - sunrise - - - true - true - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_create_registration_qlp_sunrise_claims_notice.xml b/javatests/google/registry/flows/domain/testdata/domain_create_registration_qlp_sunrise_claims_notice.xml deleted file mode 100644 index 0f4e554c9..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_create_registration_qlp_sunrise_claims_notice.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - example-one.tld - 2 - - ns1.example.net - ns2.example.net - - jd1234 - sh8013 - sh8013 - - 2fooBAR - - - - - - sunrise - - 370d0b7c9223372036854775807 - 2010-08-16T09:00:00.0Z - 2009-08-16T09:00:00.0Z - - - - true - true - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_create_registration_qlp_sunrise_encoded_signed_mark.xml b/javatests/google/registry/flows/domain/testdata/domain_create_registration_qlp_sunrise_encoded_signed_mark.xml deleted file mode 100644 index 752401374..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_create_registration_qlp_sunrise_encoded_signed_mark.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - test-validate.tld - 2 - - ns1.example.net - ns2.example.net - - jd1234 - sh8013 - sh8013 - - 2fooBAR - - - - - - sunrise - -PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHNtZDpzaWduZWRNYXJrIHhtbG5zOnNtZD0idXJuOmlldGY6cGFyYW1zOnhtbDpuczpzaWduZWRNYXJrLTEuMCIgaWQ9Il8zOGFjNTg2ZC05OTg5LTQ4MTctYjcwOC1kOGU4MzQ0NzZkOTUiPgogIDxzbWQ6aWQ+MDAwMDAwMTc2MTM3NjA0Mjc1OTEzNi02NTUzNTwvc21kOmlkPgogIDxzbWQ6aXNzdWVySW5mbyBpc3N1ZXJJRD0iNjU1MzUiPgogICAgPHNtZDpvcmc+SUNBTk4gVE1DSCBURVNUSU5HIFRNVjwvc21kOm9yZz4KICAgIDxzbWQ6ZW1haWw+bm90YXZhaWxhYmxlQGV4YW1wbGUuY29tPC9zbWQ6ZW1haWw+CiAgICA8c21kOnVybD5odHRwOi8vd3d3LmV4YW1wbGUuY29tPC9zbWQ6dXJsPgogICAgPHNtZDp2b2ljZT4rMzIuMDAwMDAwPC9zbWQ6dm9pY2U+CiAgPC9zbWQ6aXNzdWVySW5mbz4KICA8c21kOm5vdEJlZm9yZT4yMDEzLTA4LTA5VDEwOjA1OjU5LjEzNlo8L3NtZDpub3RCZWZvcmU+CiAgPHNtZDpub3RBZnRlcj4yMDE3LTA3LTIzVDIyOjAwOjAwLjAwMFo8L3NtZDpub3RBZnRlcj4KICA8bWFyazptYXJrIHhtbG5zOm1hcms9InVybjppZXRmOnBhcmFtczp4bWw6bnM6bWFyay0xLjAiPgogICAgPG1hcms6Y291cnQ+CiAgICAgIDxtYXJrOmlkPjAwMDUyMDEzNzM0NjkxNjkxMzczNDY5MTY5LTY1NTM1PC9tYXJrOmlkPgogICAgICA8bWFyazptYXJrTmFtZT5UZXN0ICZhbXA7IFZhbGlkYXRlPC9tYXJrOm1hcmtOYW1lPgogICAgICA8bWFyazpob2xkZXIgZW50aXRsZW1lbnQ9Im93bmVyIj4KICAgICAgICA8bWFyazpvcmc+QWcgY29ycG9yYXRpb248L21hcms6b3JnPgogICAgICAgIDxtYXJrOmFkZHI+CiAgICAgICAgICA8bWFyazpzdHJlZXQ+MTMwNSBCcmlnaHQgQXZlbnVlPC9tYXJrOnN0cmVldD4KICAgICAgICAgIDxtYXJrOmNpdHk+QXJjYWRpYTwvbWFyazpjaXR5PgogICAgICAgICAgPG1hcms6c3A+Q0E8L21hcms6c3A+CiAgICAgICAgICA8bWFyazpwYz45MDAyODwvbWFyazpwYz4KICAgICAgICAgIDxtYXJrOmNjPlVTPC9tYXJrOmNjPgogICAgICAgIDwvbWFyazphZGRyPgogICAgICA8L21hcms6aG9sZGVyPgogICAgICA8bWFyazpjb250YWN0IHR5cGU9ImFnZW50Ij4KICAgICAgICA8bWFyazpuYW1lPlRvbnkgSG9sbGFuZDwvbWFyazpuYW1lPgogICAgICAgIDxtYXJrOm9yZz5BZyBjb3Jwb3JhdGlvbjwvbWFyazpvcmc+CiAgICAgICAgPG1hcms6YWRkcj4KICAgICAgICAgIDxtYXJrOnN0cmVldD4xMzA1IEJyaWdodCBBdmVudWU8L21hcms6c3RyZWV0PgogICAgICAgICAgPG1hcms6Y2l0eT5BcmNhZGlhPC9tYXJrOmNpdHk+CiAgICAgICAgICA8bWFyazpzcD5DQTwvbWFyazpzcD4KICAgICAgICAgIDxtYXJrOnBjPjkwMDI4PC9tYXJrOnBjPgogICAgICAgICAgPG1hcms6Y2M+VVM8L21hcms6Y2M+CiAgICAgICAgPC9tYXJrOmFkZHI+CiAgICAgICAgPG1hcms6dm9pY2U+KzEuMjAyNTU2MjMwMjwvbWFyazp2b2ljZT4KICAgICAgICA8bWFyazpmYXg+KzEuMjAyNTU2MjMwMTwvbWFyazpmYXg+CiAgICAgICAgPG1hcms6ZW1haWw+aW5mb0BhZ2NvcnBvcmF0aW9uLmNvbTwvbWFyazplbWFpbD4KICAgICAgPC9tYXJrOmNvbnRhY3Q+CiAgICAgIDxtYXJrOmxhYmVsPnRlc3RhbmR2YWxpZGF0ZTwvbWFyazpsYWJlbD4KICAgICAgPG1hcms6bGFiZWw+dGVzdC0tLXZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0YW5kLXZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LXZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LWFuZHZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LS12YWxpZGF0ZTwvbWFyazpsYWJlbD4KICAgICAgPG1hcms6bGFiZWw+dGVzdHZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LWFuZC12YWxpZGF0ZTwvbWFyazpsYWJlbD4KICAgICAgPG1hcms6Z29vZHNBbmRTZXJ2aWNlcz5NdXNpY2FsIGluc3RydW1lbnRzPC9tYXJrOmdvb2RzQW5kU2VydmljZXM+CiAgICAgIDxtYXJrOnJlZk51bT4xMjM0PC9tYXJrOnJlZk51bT4KICAgICAgPG1hcms6cHJvRGF0ZT4yMDEyLTEyLTMxVDIzOjAwOjAwLjAwMFo8L21hcms6cHJvRGF0ZT4KICAgICAgPG1hcms6Y2M+VVM8L21hcms6Y2M+CiAgICAgIDxtYXJrOmNvdXJ0TmFtZT5Ib3ZlPC9tYXJrOmNvdXJ0TmFtZT4KICAgIDwvbWFyazpjb3VydD4KICA8L21hcms6bWFyaz4KPGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgSWQ9Il9mZDBmMTM0Ni03MTM4LTRiMGMtODRkNy0yZTdlYmY2YTExNmMiPjxkczpTaWduZWRJbmZvPjxkczpDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PGRzOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI3JzYS1zaGEyNTYiLz48ZHM6UmVmZXJlbmNlIFVSST0iI18zOGFjNTg2ZC05OTg5LTQ4MTctYjcwOC1kOGU4MzQ0NzZkOTUiPjxkczpUcmFuc2Zvcm1zPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZW52ZWxvcGVkLXNpZ25hdHVyZSIvPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz48L2RzOlRyYW5zZm9ybXM+PGRzOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI3NoYTI1NiIvPjxkczpEaWdlc3RWYWx1ZT55WDRLTWgrUDJ2OVUxNnh0eTl2ZGU5S0JTZmZFTjRHbTVVa2tLblI5cDdZPTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PGRzOlJlZmVyZW5jZSBVUkk9IiNfYjg5MjI1NWItMWJjOC00MTdiLWE0NGYtZWE5OGJjMzQ5OWE0Ij48ZHM6VHJhbnNmb3Jtcz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PC9kczpUcmFuc2Zvcm1zPjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNzaGEyNTYiLz48ZHM6RGlnZXN0VmFsdWU+dDNuNkFBTHdiaUhNbGRyZkpEQjNYQ3FkSlFzOEhjeU5pK1lXT3ZoV1krdz08L2RzOkRpZ2VzdFZhbHVlPjwvZHM6UmVmZXJlbmNlPjwvZHM6U2lnbmVkSW5mbz48ZHM6U2lnbmF0dXJlVmFsdWUgSWQ9Il82OWQzMDRlNC04NzlmLTRmNzEtYmMxMi02ZjJhZDlmOTM5OGYiPmJSVFIzTzUxM0dnTkExS2pxb0g0VXE3cUlhN2NJaTljaXZmZmFyVmE0VVQyVEUzdzEzc2xsUDFXbkdYYjcyYUw0dXhkbDFUaTZZbFoKVnVjSC92ZU5zUnlWZFZwSFF0eEJNTDFLU0tZbXc3ZjdPNnVsYWtrYnFrTkdYVmFZdEVsa1dBZnZFSDBsNURkNkFZT0k2UGN5SzBCWgo2VEl3cWZhQ1luVk5DdTFpdDIzMm9EREtiWU9RNk02YnhmU3BvVFYvaTVVdEVyak0vZWFFanp4MXFxZzlFZmxOcm1obmRtZW42Q2JYCjVrNmZ4Y1o0V2NtWkM4V0Ruc0t0VWVjaGtmbko4L0Jwc2ppM1Foekg4YzFiL0RqTmR5UFFyOGlndXBqR2dlU0JmMHhRRUtoK3pRT2oKYTNvMEhRWjZ1UlUvejdWN2RoNU9qUEhmV2lLc0pqRjVwc2ppRlE9PTwvZHM6U2lnbmF0dXJlVmFsdWU+PGRzOktleUluZm8gSWQ9Il9iODkyMjU1Yi0xYmM4LTQxN2ItYTQ0Zi1lYTk4YmMzNDk5YTQiPjxkczpYNTA5RGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSUZMekNDQkJlZ0F3SUJBZ0lnTHJBYmV2b2FlNTJ5M2Y2QzJ0QjBTbjNwN1hKbTBUMDJGb2d4S0NmTmhYb3dEUVlKS29aSWh2Y04KQVFFTEJRQXdmREVMTUFrR0ExVUVCaE1DVlZNeFBEQTZCZ05WQkFvVE0wbHVkR1Z5Ym1WMElFTnZjbkJ2Y21GMGFXOXVJR1p2Y2lCQgpjM05wWjI1bFpDQk9ZVzFsY3lCaGJtUWdUblZ0WW1WeWN6RXZNQzBHQTFVRUF4TW1TVU5CVGs0Z1ZISmhaR1Z0WVhKcklFTnNaV0Z5CmFXNW5hRzkxYzJVZ1VHbHNiM1FnUTBFd0hoY05NVE13TmpJMk1EQXdNREF3V2hjTk1UZ3dOakkxTWpNMU9UVTVXakNCanpFTE1Ba0cKQTFVRUJoTUNRa1V4SURBZUJnTlZCQWdURjBKeWRYTnpaV3h6TFVOaGNHbDBZV3dnVW1WbmFXOXVNUkV3RHdZRFZRUUhFd2hDY25WegpjMlZzY3pFUk1BOEdBMVVFQ2hNSVJHVnNiMmwwZEdVeE9EQTJCZ05WQkFNVEwwbERRVTVPSUZSTlEwZ2dRWFYwYUc5eWFYcGxaQ0JVCmNtRmtaVzFoY21zZ1VHbHNiM1FnVm1Gc2FXUmhkRzl5TUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUEKeGxwM0twWUhYM1d5QXNGaFNrM0x3V2ZuR2x4blVERnFGWkEzVW91TVlqL1hpZ2JNa05lRVhJamxrUk9LVDRPUEdmUngvTEF5UmxRUQpqQ012NHFoYmtjWDFwN2FyNjNmbHE0U1pOVmNsMTVsN2gwdVQ1OEZ6U2ZubHowdTVya0hmSkltRDQzK21hUC84Z3YzNkZSMjdqVzhSCjl3WTRoaytXczRJQjBpRlNkOFNYdjFLcjh3L0ptTVFTRGtpdUcrUmZJaXVid1EvZnk3RWtqNVFXaFBadyttTXhOS25IVUx5M3hZejIKTHdWZmZ0andVdWVhY3ZxTlJDa01YbENsT0FEcWZUOG9TWm9lRFhlaEh2bFBzTENlbUdCb1RLdXJza0lTNjlGMHlQRUg1Z3plMEgrZgo4RlJPc0lvS1NzVlEzNEI0Uy9qb0U2N25wc0pQVGRLc05QSlR5UUlEQVFBQm80SUJoekNDQVlNd0RBWURWUjBUQVFIL0JBSXdBREFkCkJnTlZIUTRFRmdRVW9GcFk3NnA1eW9ORFJHdFFwelZ1UjgxVVdRMHdnY1lHQTFVZEl3U0J2akNCdTRBVXc2MCtwdFlSQUVXQVhEcFgKU29wdDNERU5ubkdoZ1lDa2ZqQjhNUXN3Q1FZRFZRUUdFd0pWVXpFOE1Eb0dBMVVFQ2hNelNXNTBaWEp1WlhRZ1EyOXljRzl5WVhScApiMjRnWm05eUlFRnpjMmxuYm1Wa0lFNWhiV1Z6SUdGdVpDQk9kVzFpWlhKek1TOHdMUVlEVlFRREV5WkpRMEZPVGlCVWNtRmtaVzFoCmNtc2dRMnhsWVhKcGJtZG9iM1Z6WlNCUWFXeHZkQ0JEUVlJZ0xyQWJldm9hZTUyeTNmNkMydEIwU24zcDdYSm0wVDAyRm9neEtDZk4KaFhrd0RnWURWUjBQQVFIL0JBUURBZ2VBTURRR0ExVWRId1F0TUNzd0thQW5vQ1dHSTJoMGRIQTZMeTlqY213dWFXTmhibTR1YjNKbgpMM1J0WTJoZmNHbHNiM1F1WTNKc01FVUdBMVVkSUFRK01Ed3dPZ1lES2dNRU1ETXdNUVlJS3dZQkJRVUhBZ0VXSldoMGRIQTZMeTkzCmQzY3VhV05oYm00dWIzSm5MM0JwYkc5MFgzSmxjRzl6YVhSdmNua3dEUVlKS29aSWh2Y05BUUVMQlFBRGdnRUJBSWVEWVlKcjYwVzMKeTlRcyszelJWSTlrZWtLb201dmtIT2FsQjN3SGFaSWFBRllwSTk4dFkwYVZOOWFHT04wdjZXUUYrbnZ6MUtSWlFiQXowMUJYdGFSSgo0bVBrYXJoaHVMbjlOa0J4cDhIUjVxY2MrS0g3Z3Y2ci9jMGlHM2JDTkorUVNyN1FmKzVNbE1vNnpMNVVkZFUvVDJqaWJNWENqL2YyCjFRdzN4OVFnb3lYTEZKOW96YUxnUTlSTWtMbE9temtDQWlYTjVBYjQzYUo5ZjdOMmdFMk5uUmpOS21tQzlBQlEwVFJ3RUtWTGhWbDEKVUdxQ0hKM0FsQlhXSVhONXNqUFFjRC8rbkhlRVhNeFl2bEF5cXhYb0QzTVd0UVZqN2oyb3FsYWtPQk1nRzgrcTJxWWxtQnRzNEZOaQp3NzQ4SWw1ODZIS0JScXhIdFpkUktXMlZxYVE9PC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9kczpTaWduYXR1cmU+PC9zbWQ6c2lnbmVkTWFyaz4= - - - - true - true - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_create_registration_qlp_sunrush.xml b/javatests/google/registry/flows/domain/testdata/domain_create_registration_qlp_sunrush.xml deleted file mode 100644 index f8e01ee07..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_create_registration_qlp_sunrush.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - example.tld - 2 - - ns1.example.net - ns2.example.net - - jd1234 - sh8013 - sh8013 - - 2fooBAR - - - - - - sunrise - - - true - true - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_create_registration_qlp_sunrush_claims_notice.xml b/javatests/google/registry/flows/domain/testdata/domain_create_registration_qlp_sunrush_claims_notice.xml deleted file mode 100644 index e6395e8d6..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_create_registration_qlp_sunrush_claims_notice.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - example-one.tld - 2 - - ns1.example.net - ns2.example.net - - jd1234 - sh8013 - sh8013 - - 2fooBAR - - - - - - sunrise - - 370d0b7c9223372036854775807 - 2010-08-16T09:00:00.0Z - 2009-08-16T09:00:00.0Z - - - - true - true - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_create_registration_qlp_sunrush_encoded_signed_mark.xml b/javatests/google/registry/flows/domain/testdata/domain_create_registration_qlp_sunrush_encoded_signed_mark.xml deleted file mode 100644 index 8d6b083d6..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_create_registration_qlp_sunrush_encoded_signed_mark.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - test-validate.tld - 2 - - ns1.example.net - ns2.example.net - - jd1234 - sh8013 - sh8013 - - 2fooBAR - - - - - - sunrise - -PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHNtZDpzaWduZWRNYXJrIHhtbG5zOnNtZD0idXJuOmlldGY6cGFyYW1zOnhtbDpuczpzaWduZWRNYXJrLTEuMCIgaWQ9Il8zOGFjNTg2ZC05OTg5LTQ4MTctYjcwOC1kOGU4MzQ0NzZkOTUiPgogIDxzbWQ6aWQ+MDAwMDAwMTc2MTM3NjA0Mjc1OTEzNi02NTUzNTwvc21kOmlkPgogIDxzbWQ6aXNzdWVySW5mbyBpc3N1ZXJJRD0iNjU1MzUiPgogICAgPHNtZDpvcmc+SUNBTk4gVE1DSCBURVNUSU5HIFRNVjwvc21kOm9yZz4KICAgIDxzbWQ6ZW1haWw+bm90YXZhaWxhYmxlQGV4YW1wbGUuY29tPC9zbWQ6ZW1haWw+CiAgICA8c21kOnVybD5odHRwOi8vd3d3LmV4YW1wbGUuY29tPC9zbWQ6dXJsPgogICAgPHNtZDp2b2ljZT4rMzIuMDAwMDAwPC9zbWQ6dm9pY2U+CiAgPC9zbWQ6aXNzdWVySW5mbz4KICA8c21kOm5vdEJlZm9yZT4yMDEzLTA4LTA5VDEwOjA1OjU5LjEzNlo8L3NtZDpub3RCZWZvcmU+CiAgPHNtZDpub3RBZnRlcj4yMDE3LTA3LTIzVDIyOjAwOjAwLjAwMFo8L3NtZDpub3RBZnRlcj4KICA8bWFyazptYXJrIHhtbG5zOm1hcms9InVybjppZXRmOnBhcmFtczp4bWw6bnM6bWFyay0xLjAiPgogICAgPG1hcms6Y291cnQ+CiAgICAgIDxtYXJrOmlkPjAwMDUyMDEzNzM0NjkxNjkxMzczNDY5MTY5LTY1NTM1PC9tYXJrOmlkPgogICAgICA8bWFyazptYXJrTmFtZT5UZXN0ICZhbXA7IFZhbGlkYXRlPC9tYXJrOm1hcmtOYW1lPgogICAgICA8bWFyazpob2xkZXIgZW50aXRsZW1lbnQ9Im93bmVyIj4KICAgICAgICA8bWFyazpvcmc+QWcgY29ycG9yYXRpb248L21hcms6b3JnPgogICAgICAgIDxtYXJrOmFkZHI+CiAgICAgICAgICA8bWFyazpzdHJlZXQ+MTMwNSBCcmlnaHQgQXZlbnVlPC9tYXJrOnN0cmVldD4KICAgICAgICAgIDxtYXJrOmNpdHk+QXJjYWRpYTwvbWFyazpjaXR5PgogICAgICAgICAgPG1hcms6c3A+Q0E8L21hcms6c3A+CiAgICAgICAgICA8bWFyazpwYz45MDAyODwvbWFyazpwYz4KICAgICAgICAgIDxtYXJrOmNjPlVTPC9tYXJrOmNjPgogICAgICAgIDwvbWFyazphZGRyPgogICAgICA8L21hcms6aG9sZGVyPgogICAgICA8bWFyazpjb250YWN0IHR5cGU9ImFnZW50Ij4KICAgICAgICA8bWFyazpuYW1lPlRvbnkgSG9sbGFuZDwvbWFyazpuYW1lPgogICAgICAgIDxtYXJrOm9yZz5BZyBjb3Jwb3JhdGlvbjwvbWFyazpvcmc+CiAgICAgICAgPG1hcms6YWRkcj4KICAgICAgICAgIDxtYXJrOnN0cmVldD4xMzA1IEJyaWdodCBBdmVudWU8L21hcms6c3RyZWV0PgogICAgICAgICAgPG1hcms6Y2l0eT5BcmNhZGlhPC9tYXJrOmNpdHk+CiAgICAgICAgICA8bWFyazpzcD5DQTwvbWFyazpzcD4KICAgICAgICAgIDxtYXJrOnBjPjkwMDI4PC9tYXJrOnBjPgogICAgICAgICAgPG1hcms6Y2M+VVM8L21hcms6Y2M+CiAgICAgICAgPC9tYXJrOmFkZHI+CiAgICAgICAgPG1hcms6dm9pY2U+KzEuMjAyNTU2MjMwMjwvbWFyazp2b2ljZT4KICAgICAgICA8bWFyazpmYXg+KzEuMjAyNTU2MjMwMTwvbWFyazpmYXg+CiAgICAgICAgPG1hcms6ZW1haWw+aW5mb0BhZ2NvcnBvcmF0aW9uLmNvbTwvbWFyazplbWFpbD4KICAgICAgPC9tYXJrOmNvbnRhY3Q+CiAgICAgIDxtYXJrOmxhYmVsPnRlc3RhbmR2YWxpZGF0ZTwvbWFyazpsYWJlbD4KICAgICAgPG1hcms6bGFiZWw+dGVzdC0tLXZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0YW5kLXZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LXZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LWFuZHZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LS12YWxpZGF0ZTwvbWFyazpsYWJlbD4KICAgICAgPG1hcms6bGFiZWw+dGVzdHZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LWFuZC12YWxpZGF0ZTwvbWFyazpsYWJlbD4KICAgICAgPG1hcms6Z29vZHNBbmRTZXJ2aWNlcz5NdXNpY2FsIGluc3RydW1lbnRzPC9tYXJrOmdvb2RzQW5kU2VydmljZXM+CiAgICAgIDxtYXJrOnJlZk51bT4xMjM0PC9tYXJrOnJlZk51bT4KICAgICAgPG1hcms6cHJvRGF0ZT4yMDEyLTEyLTMxVDIzOjAwOjAwLjAwMFo8L21hcms6cHJvRGF0ZT4KICAgICAgPG1hcms6Y2M+VVM8L21hcms6Y2M+CiAgICAgIDxtYXJrOmNvdXJ0TmFtZT5Ib3ZlPC9tYXJrOmNvdXJ0TmFtZT4KICAgIDwvbWFyazpjb3VydD4KICA8L21hcms6bWFyaz4KPGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgSWQ9Il9mZDBmMTM0Ni03MTM4LTRiMGMtODRkNy0yZTdlYmY2YTExNmMiPjxkczpTaWduZWRJbmZvPjxkczpDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PGRzOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI3JzYS1zaGEyNTYiLz48ZHM6UmVmZXJlbmNlIFVSST0iI18zOGFjNTg2ZC05OTg5LTQ4MTctYjcwOC1kOGU4MzQ0NzZkOTUiPjxkczpUcmFuc2Zvcm1zPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZW52ZWxvcGVkLXNpZ25hdHVyZSIvPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz48L2RzOlRyYW5zZm9ybXM+PGRzOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI3NoYTI1NiIvPjxkczpEaWdlc3RWYWx1ZT55WDRLTWgrUDJ2OVUxNnh0eTl2ZGU5S0JTZmZFTjRHbTVVa2tLblI5cDdZPTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PGRzOlJlZmVyZW5jZSBVUkk9IiNfYjg5MjI1NWItMWJjOC00MTdiLWE0NGYtZWE5OGJjMzQ5OWE0Ij48ZHM6VHJhbnNmb3Jtcz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PC9kczpUcmFuc2Zvcm1zPjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNzaGEyNTYiLz48ZHM6RGlnZXN0VmFsdWU+dDNuNkFBTHdiaUhNbGRyZkpEQjNYQ3FkSlFzOEhjeU5pK1lXT3ZoV1krdz08L2RzOkRpZ2VzdFZhbHVlPjwvZHM6UmVmZXJlbmNlPjwvZHM6U2lnbmVkSW5mbz48ZHM6U2lnbmF0dXJlVmFsdWUgSWQ9Il82OWQzMDRlNC04NzlmLTRmNzEtYmMxMi02ZjJhZDlmOTM5OGYiPmJSVFIzTzUxM0dnTkExS2pxb0g0VXE3cUlhN2NJaTljaXZmZmFyVmE0VVQyVEUzdzEzc2xsUDFXbkdYYjcyYUw0dXhkbDFUaTZZbFoKVnVjSC92ZU5zUnlWZFZwSFF0eEJNTDFLU0tZbXc3ZjdPNnVsYWtrYnFrTkdYVmFZdEVsa1dBZnZFSDBsNURkNkFZT0k2UGN5SzBCWgo2VEl3cWZhQ1luVk5DdTFpdDIzMm9EREtiWU9RNk02YnhmU3BvVFYvaTVVdEVyak0vZWFFanp4MXFxZzlFZmxOcm1obmRtZW42Q2JYCjVrNmZ4Y1o0V2NtWkM4V0Ruc0t0VWVjaGtmbko4L0Jwc2ppM1Foekg4YzFiL0RqTmR5UFFyOGlndXBqR2dlU0JmMHhRRUtoK3pRT2oKYTNvMEhRWjZ1UlUvejdWN2RoNU9qUEhmV2lLc0pqRjVwc2ppRlE9PTwvZHM6U2lnbmF0dXJlVmFsdWU+PGRzOktleUluZm8gSWQ9Il9iODkyMjU1Yi0xYmM4LTQxN2ItYTQ0Zi1lYTk4YmMzNDk5YTQiPjxkczpYNTA5RGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSUZMekNDQkJlZ0F3SUJBZ0lnTHJBYmV2b2FlNTJ5M2Y2QzJ0QjBTbjNwN1hKbTBUMDJGb2d4S0NmTmhYb3dEUVlKS29aSWh2Y04KQVFFTEJRQXdmREVMTUFrR0ExVUVCaE1DVlZNeFBEQTZCZ05WQkFvVE0wbHVkR1Z5Ym1WMElFTnZjbkJ2Y21GMGFXOXVJR1p2Y2lCQgpjM05wWjI1bFpDQk9ZVzFsY3lCaGJtUWdUblZ0WW1WeWN6RXZNQzBHQTFVRUF4TW1TVU5CVGs0Z1ZISmhaR1Z0WVhKcklFTnNaV0Z5CmFXNW5hRzkxYzJVZ1VHbHNiM1FnUTBFd0hoY05NVE13TmpJMk1EQXdNREF3V2hjTk1UZ3dOakkxTWpNMU9UVTVXakNCanpFTE1Ba0cKQTFVRUJoTUNRa1V4SURBZUJnTlZCQWdURjBKeWRYTnpaV3h6TFVOaGNHbDBZV3dnVW1WbmFXOXVNUkV3RHdZRFZRUUhFd2hDY25WegpjMlZzY3pFUk1BOEdBMVVFQ2hNSVJHVnNiMmwwZEdVeE9EQTJCZ05WQkFNVEwwbERRVTVPSUZSTlEwZ2dRWFYwYUc5eWFYcGxaQ0JVCmNtRmtaVzFoY21zZ1VHbHNiM1FnVm1Gc2FXUmhkRzl5TUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUEKeGxwM0twWUhYM1d5QXNGaFNrM0x3V2ZuR2x4blVERnFGWkEzVW91TVlqL1hpZ2JNa05lRVhJamxrUk9LVDRPUEdmUngvTEF5UmxRUQpqQ012NHFoYmtjWDFwN2FyNjNmbHE0U1pOVmNsMTVsN2gwdVQ1OEZ6U2ZubHowdTVya0hmSkltRDQzK21hUC84Z3YzNkZSMjdqVzhSCjl3WTRoaytXczRJQjBpRlNkOFNYdjFLcjh3L0ptTVFTRGtpdUcrUmZJaXVid1EvZnk3RWtqNVFXaFBadyttTXhOS25IVUx5M3hZejIKTHdWZmZ0andVdWVhY3ZxTlJDa01YbENsT0FEcWZUOG9TWm9lRFhlaEh2bFBzTENlbUdCb1RLdXJza0lTNjlGMHlQRUg1Z3plMEgrZgo4RlJPc0lvS1NzVlEzNEI0Uy9qb0U2N25wc0pQVGRLc05QSlR5UUlEQVFBQm80SUJoekNDQVlNd0RBWURWUjBUQVFIL0JBSXdBREFkCkJnTlZIUTRFRmdRVW9GcFk3NnA1eW9ORFJHdFFwelZ1UjgxVVdRMHdnY1lHQTFVZEl3U0J2akNCdTRBVXc2MCtwdFlSQUVXQVhEcFgKU29wdDNERU5ubkdoZ1lDa2ZqQjhNUXN3Q1FZRFZRUUdFd0pWVXpFOE1Eb0dBMVVFQ2hNelNXNTBaWEp1WlhRZ1EyOXljRzl5WVhScApiMjRnWm05eUlFRnpjMmxuYm1Wa0lFNWhiV1Z6SUdGdVpDQk9kVzFpWlhKek1TOHdMUVlEVlFRREV5WkpRMEZPVGlCVWNtRmtaVzFoCmNtc2dRMnhsWVhKcGJtZG9iM1Z6WlNCUWFXeHZkQ0JEUVlJZ0xyQWJldm9hZTUyeTNmNkMydEIwU24zcDdYSm0wVDAyRm9neEtDZk4KaFhrd0RnWURWUjBQQVFIL0JBUURBZ2VBTURRR0ExVWRId1F0TUNzd0thQW5vQ1dHSTJoMGRIQTZMeTlqY213dWFXTmhibTR1YjNKbgpMM1J0WTJoZmNHbHNiM1F1WTNKc01FVUdBMVVkSUFRK01Ed3dPZ1lES2dNRU1ETXdNUVlJS3dZQkJRVUhBZ0VXSldoMGRIQTZMeTkzCmQzY3VhV05oYm00dWIzSm5MM0JwYkc5MFgzSmxjRzl6YVhSdmNua3dEUVlKS29aSWh2Y05BUUVMQlFBRGdnRUJBSWVEWVlKcjYwVzMKeTlRcyszelJWSTlrZWtLb201dmtIT2FsQjN3SGFaSWFBRllwSTk4dFkwYVZOOWFHT04wdjZXUUYrbnZ6MUtSWlFiQXowMUJYdGFSSgo0bVBrYXJoaHVMbjlOa0J4cDhIUjVxY2MrS0g3Z3Y2ci9jMGlHM2JDTkorUVNyN1FmKzVNbE1vNnpMNVVkZFUvVDJqaWJNWENqL2YyCjFRdzN4OVFnb3lYTEZKOW96YUxnUTlSTWtMbE9temtDQWlYTjVBYjQzYUo5ZjdOMmdFMk5uUmpOS21tQzlBQlEwVFJ3RUtWTGhWbDEKVUdxQ0hKM0FsQlhXSVhONXNqUFFjRC8rbkhlRVhNeFl2bEF5cXhYb0QzTVd0UVZqN2oyb3FsYWtPQk1nRzgrcTJxWWxtQnRzNEZOaQp3NzQ4SWw1ODZIS0JScXhIdFpkUktXMlZxYVE9PC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9kczpTaWduYXR1cmU+PC9zbWQ6c2lnbmVkTWFyaz4= - - - - true - true - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_create_registration_sunrush.xml b/javatests/google/registry/flows/domain/testdata/domain_create_registration_sunrush.xml deleted file mode 100644 index 47b2fdf08..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_create_registration_sunrush.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - example.tld - 2 - - ns1.example.net - ns2.example.net - - jd1234 - sh8013 - sh8013 - - 2fooBAR - - - - - - sunrise - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_create_sunrise_bad_encoded_xml.xml b/javatests/google/registry/flows/domain/testdata/domain_create_sunrise_bad_encoded_xml.xml deleted file mode 100644 index 4db390d9c..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_create_sunrise_bad_encoded_xml.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - test-validate.tld - - ns1.example.net - ns2.example.net - - jd1234 - sh8013 - sh8013 - - 2fooBAR - - - - - - sunrise - -VGhpcyBpcyBpbnZhbGlkIFhNTA== - - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_create_sunrise_bad_encoding.xml b/javatests/google/registry/flows/domain/testdata/domain_create_sunrise_bad_encoding.xml deleted file mode 100644 index 98fd83dcc..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_create_sunrise_bad_encoding.xml +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - test-validate.tld - - ns1.example.net - ns2.example.net - - jd1234 - sh8013 - sh8013 - - 2fooBAR - - - - - - sunrise - -*D94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHNtZDpzaWduZWRNYXJrIHht -bG5zOnNtZD0idXJuOmlldGY6cGFyYW1zOnhtbDpuczpzaWduZWRNYXJrLTEuMCIgaWQ9Il8zOGFj -NTg2ZC05OTg5LTQ4MTctYjcwOC1kOGU4MzQ0NzZkOTUiPgogIDxzbWQ6aWQ+MDAwMDAwMTc2MTM3 -NjA0Mjc1OTEzNi02NTUzNTwvc21kOmlkPgogIDxzbWQ6aXNzdWVySW5mbyBpc3N1ZXJJRD0iNjU1 -MzUiPgogICAgPHNtZDpvcmc+SUNBTk4gVE1DSCBURVNUSU5HIFRNVjwvc21kOm9yZz4KICAgIDxz -bWQ6ZW1haWw+bm90YXZhaWxhYmxlQGV4YW1wbGUuY29tPC9zbWQ6ZW1haWw+CiAgICA8c21kOnVy -bD5odHRwOi8vd3d3LmV4YW1wbGUuY29tPC9zbWQ6dXJsPgogICAgPHNtZDp2b2ljZT4rMzIuMDAw -MDAwPC9zbWQ6dm9pY2U+CiAgPC9zbWQ6aXNzdWVySW5mbz4KICA8c21kOm5vdEJlZm9yZT4yMDEz -LTA4LTA5VDEwOjA1OjU5LjEzNlo8L3NtZDpub3RCZWZvcmU+CiAgPHNtZDpub3RBZnRlcj4yMDE3 -LTA3LTIzVDIyOjAwOjAwLjAwMFo8L3NtZDpub3RBZnRlcj4KICA8bWFyazptYXJrIHhtbG5zOm1h -cms9InVybjppZXRmOnBhcmFtczp4bWw6bnM6bWFyay0xLjAiPgogICAgPG1hcms6Y291cnQ+CiAg -ICAgIDxtYXJrOmlkPjAwMDUyMDEzNzM0NjkxNjkxMzczNDY5MTY5LTY1NTM1PC9tYXJrOmlkPgog -ICAgICA8bWFyazptYXJrTmFtZT5UZXN0ICZhbXA7IFZhbGlkYXRlPC9tYXJrOm1hcmtOYW1lPgog -ICAgICA8bWFyazpob2xkZXIgZW50aXRsZW1lbnQ9Im93bmVyIj4KICAgICAgICA8bWFyazpvcmc+ -QWcgY29ycG9yYXRpb248L21hcms6b3JnPgogICAgICAgIDxtYXJrOmFkZHI+CiAgICAgICAgICA8 -bWFyazpzdHJlZXQ+MTMwNSBCcmlnaHQgQXZlbnVlPC9tYXJrOnN0cmVldD4KICAgICAgICAgIDxt -YXJrOmNpdHk+QXJjYWRpYTwvbWFyazpjaXR5PgogICAgICAgICAgPG1hcms6c3A+Q0E8L21hcms6 -c3A+CiAgICAgICAgICA8bWFyazpwYz45MDAyODwvbWFyazpwYz4KICAgICAgICAgIDxtYXJrOmNj -PlVTPC9tYXJrOmNjPgogICAgICAgIDwvbWFyazphZGRyPgogICAgICA8L21hcms6aG9sZGVyPgog -ICAgICA8bWFyazpjb250YWN0IHR5cGU9ImFnZW50Ij4KICAgICAgICA8bWFyazpuYW1lPlRvbnkg -SG9sbGFuZDwvbWFyazpuYW1lPgogICAgICAgIDxtYXJrOm9yZz5BZyBjb3Jwb3JhdGlvbjwvbWFy -azpvcmc+CiAgICAgICAgPG1hcms6YWRkcj4KICAgICAgICAgIDxtYXJrOnN0cmVldD4xMzA1IEJy -aWdodCBBdmVudWU8L21hcms6c3RyZWV0PgogICAgICAgICAgPG1hcms6Y2l0eT5BcmNhZGlhPC9t -YXJrOmNpdHk+CiAgICAgICAgICA8bWFyazpzcD5DQTwvbWFyazpzcD4KICAgICAgICAgIDxtYXJr -OnBjPjkwMDI4PC9tYXJrOnBjPgogICAgICAgICAgPG1hcms6Y2M+VVM8L21hcms6Y2M+CiAgICAg -ICAgPC9tYXJrOmFkZHI+CiAgICAgICAgPG1hcms6dm9pY2U+KzEuMjAyNTU2MjMwMjwvbWFyazp2 -b2ljZT4KICAgICAgICA8bWFyazpmYXg+KzEuMjAyNTU2MjMwMTwvbWFyazpmYXg+CiAgICAgICAg -PG1hcms6ZW1haWw+aW5mb0BhZ2NvcnBvcmF0aW9uLmNvbTwvbWFyazplbWFpbD4KICAgICAgPC9t -YXJrOmNvbnRhY3Q+CiAgICAgIDxtYXJrOmxhYmVsPnRlc3RhbmR2YWxpZGF0ZTwvbWFyazpsYWJl -bD4KICAgICAgPG1hcms6bGFiZWw+dGVzdC0tLXZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8 -bWFyazpsYWJlbD50ZXN0YW5kLXZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJl -bD50ZXN0LXZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LWFuZHZh -bGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LS12YWxpZGF0ZTwvbWFy -azpsYWJlbD4KICAgICAgPG1hcms6bGFiZWw+dGVzdHZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAg -ICA8bWFyazpsYWJlbD50ZXN0LWFuZC12YWxpZGF0ZTwvbWFyazpsYWJlbD4KICAgICAgPG1hcms6 -Z29vZHNBbmRTZXJ2aWNlcz5NdXNpY2FsIGluc3RydW1lbnRzPC9tYXJrOmdvb2RzQW5kU2Vydmlj -ZXM+CiAgICAgIDxtYXJrOnJlZk51bT4xMjM0PC9tYXJrOnJlZk51bT4KICAgICAgPG1hcms6cHJv -RGF0ZT4yMDEyLTEyLTMxVDIzOjAwOjAwLjAwMFo8L21hcms6cHJvRGF0ZT4KICAgICAgPG1hcms6 -Y2M+VVM8L21hcms6Y2M+CiAgICAgIDxtYXJrOmNvdXJ0TmFtZT5Ib3ZlPC9tYXJrOmNvdXJ0TmFt -ZT4KICAgIDwvbWFyazpjb3VydD4KICA8L21hcms6bWFyaz4KPGRzOlNpZ25hdHVyZSB4bWxuczpk -cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgSWQ9Il9mZDBmMTM0Ni03MTM4 -LTRiMGMtODRkNy0yZTdlYmY2YTExNmMiPjxkczpTaWduZWRJbmZvPjxkczpDYW5vbmljYWxpemF0 -aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMx -NG4jIi8+PGRzOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIw -MDEvMDQveG1sZHNpZy1tb3JlI3JzYS1zaGEyNTYiLz48ZHM6UmVmZXJlbmNlIFVSST0iI18zOGFj -NTg2ZC05OTg5LTQ4MTctYjcwOC1kOGU4MzQ0NzZkOTUiPjxkczpUcmFuc2Zvcm1zPjxkczpUcmFu -c2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZW52ZWxv -cGVkLXNpZ25hdHVyZSIvPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9y -Zy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz48L2RzOlRyYW5zZm9ybXM+PGRzOkRpZ2VzdE1ldGhv -ZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI3NoYTI1NiIvPjxk -czpEaWdlc3RWYWx1ZT55WDRLTWgrUDJ2OVUxNnh0eTl2ZGU5S0JTZmZFTjRHbTVVa2tLblI5cDdZ -PTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PGRzOlJlZmVyZW5jZSBVUkk9IiNfYjg5 -MjI1NWItMWJjOC00MTdiLWE0NGYtZWE5OGJjMzQ5OWE0Ij48ZHM6VHJhbnNmb3Jtcz48ZHM6VHJh -bnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4j -Ii8+PC9kczpUcmFuc2Zvcm1zPjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3 -LnczLm9yZy8yMDAxLzA0L3htbGVuYyNzaGEyNTYiLz48ZHM6RGlnZXN0VmFsdWU+dDNuNkFBTHdi -aUhNbGRyZkpEQjNYQ3FkSlFzOEhjeU5pK1lXT3ZoV1krdz08L2RzOkRpZ2VzdFZhbHVlPjwvZHM6 -UmVmZXJlbmNlPjwvZHM6U2lnbmVkSW5mbz48ZHM6U2lnbmF0dXJlVmFsdWUgSWQ9Il82OWQzMDRl -NC04NzlmLTRmNzEtYmMxMi02ZjJhZDlmOTM5OGYiPmJSVFIzTzUxM0dnTkExS2pxb0g0VXE3cUlh -N2NJaTljaXZmZmFyVmE0VVQyVEUzdzEzc2xsUDFXbkdYYjcyYUw0dXhkbDFUaTZZbFoKVnVjSC92 -ZU5zUnlWZFZwSFF0eEJNTDFLU0tZbXc3ZjdPNnVsYWtrYnFrTkdYVmFZdEVsa1dBZnZFSDBsNURk -NkFZT0k2UGN5SzBCWgo2VEl3cWZhQ1luVk5DdTFpdDIzMm9EREtiWU9RNk02YnhmU3BvVFYvaTVV -dEVyak0vZWFFanp4MXFxZzlFZmxOcm1obmRtZW42Q2JYCjVrNmZ4Y1o0V2NtWkM4V0Ruc0t0VWVj -aGtmbko4L0Jwc2ppM1Foekg4YzFiL0RqTmR5UFFyOGlndXBqR2dlU0JmMHhRRUtoK3pRT2oKYTNv -MEhRWjZ1UlUvejdWN2RoNU9qUEhmV2lLc0pqRjVwc2ppRlE9PTwvZHM6U2lnbmF0dXJlVmFsdWU+ -PGRzOktleUluZm8gSWQ9Il9iODkyMjU1Yi0xYmM4LTQxN2ItYTQ0Zi1lYTk4YmMzNDk5YTQiPjxk -czpYNTA5RGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSUZMekNDQkJlZ0F3SUJBZ0lnTHJBYmV2 -b2FlNTJ5M2Y2QzJ0QjBTbjNwN1hKbTBUMDJGb2d4S0NmTmhYb3dEUVlKS29aSWh2Y04KQVFFTEJR -QXdmREVMTUFrR0ExVUVCaE1DVlZNeFBEQTZCZ05WQkFvVE0wbHVkR1Z5Ym1WMElFTnZjbkJ2Y21G -MGFXOXVJR1p2Y2lCQgpjM05wWjI1bFpDQk9ZVzFsY3lCaGJtUWdUblZ0WW1WeWN6RXZNQzBHQTFV -RUF4TW1TVU5CVGs0Z1ZISmhaR1Z0WVhKcklFTnNaV0Z5CmFXNW5hRzkxYzJVZ1VHbHNiM1FnUTBF -d0hoY05NVE13TmpJMk1EQXdNREF3V2hjTk1UZ3dOakkxTWpNMU9UVTVXakNCanpFTE1Ba0cKQTFV -RUJoTUNRa1V4SURBZUJnTlZCQWdURjBKeWRYTnpaV3h6TFVOaGNHbDBZV3dnVW1WbmFXOXVNUkV3 -RHdZRFZRUUhFd2hDY25WegpjMlZzY3pFUk1BOEdBMVVFQ2hNSVJHVnNiMmwwZEdVeE9EQTJCZ05W -QkFNVEwwbERRVTVPSUZSTlEwZ2dRWFYwYUc5eWFYcGxaQ0JVCmNtRmtaVzFoY21zZ1VHbHNiM1Fn -Vm1Gc2FXUmhkRzl5TUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUEK -eGxwM0twWUhYM1d5QXNGaFNrM0x3V2ZuR2x4blVERnFGWkEzVW91TVlqL1hpZ2JNa05lRVhJamxr -Uk9LVDRPUEdmUngvTEF5UmxRUQpqQ012NHFoYmtjWDFwN2FyNjNmbHE0U1pOVmNsMTVsN2gwdVQ1 -OEZ6U2ZubHowdTVya0hmSkltRDQzK21hUC84Z3YzNkZSMjdqVzhSCjl3WTRoaytXczRJQjBpRlNk -OFNYdjFLcjh3L0ptTVFTRGtpdUcrUmZJaXVid1EvZnk3RWtqNVFXaFBadyttTXhOS25IVUx5M3hZ -ejIKTHdWZmZ0andVdWVhY3ZxTlJDa01YbENsT0FEcWZUOG9TWm9lRFhlaEh2bFBzTENlbUdCb1RL -dXJza0lTNjlGMHlQRUg1Z3plMEgrZgo4RlJPc0lvS1NzVlEzNEI0Uy9qb0U2N25wc0pQVGRLc05Q -SlR5UUlEQVFBQm80SUJoekNDQVlNd0RBWURWUjBUQVFIL0JBSXdBREFkCkJnTlZIUTRFRmdRVW9G -cFk3NnA1eW9ORFJHdFFwelZ1UjgxVVdRMHdnY1lHQTFVZEl3U0J2akNCdTRBVXc2MCtwdFlSQUVX -QVhEcFgKU29wdDNERU5ubkdoZ1lDa2ZqQjhNUXN3Q1FZRFZRUUdFd0pWVXpFOE1Eb0dBMVVFQ2hN -elNXNTBaWEp1WlhRZ1EyOXljRzl5WVhScApiMjRnWm05eUlFRnpjMmxuYm1Wa0lFNWhiV1Z6SUdG -dVpDQk9kVzFpWlhKek1TOHdMUVlEVlFRREV5WkpRMEZPVGlCVWNtRmtaVzFoCmNtc2dRMnhsWVhK -cGJtZG9iM1Z6WlNCUWFXeHZkQ0JEUVlJZ0xyQWJldm9hZTUyeTNmNkMydEIwU24zcDdYSm0wVDAy -Rm9neEtDZk4KaFhrd0RnWURWUjBQQVFIL0JBUURBZ2VBTURRR0ExVWRId1F0TUNzd0thQW5vQ1dH -STJoMGRIQTZMeTlqY213dWFXTmhibTR1YjNKbgpMM1J0WTJoZmNHbHNiM1F1WTNKc01FVUdBMVVk -SUFRK01Ed3dPZ1lES2dNRU1ETXdNUVlJS3dZQkJRVUhBZ0VXSldoMGRIQTZMeTkzCmQzY3VhV05o -Ym00dWIzSm5MM0JwYkc5MFgzSmxjRzl6YVhSdmNua3dEUVlKS29aSWh2Y05BUUVMQlFBRGdnRUJB -SWVEWVlKcjYwVzMKeTlRcyszelJWSTlrZWtLb201dmtIT2FsQjN3SGFaSWFBRllwSTk4dFkwYVZO -OWFHT04wdjZXUUYrbnZ6MUtSWlFiQXowMUJYdGFSSgo0bVBrYXJoaHVMbjlOa0J4cDhIUjVxY2Mr -S0g3Z3Y2ci9jMGlHM2JDTkorUVNyN1FmKzVNbE1vNnpMNVVkZFUvVDJqaWJNWENqL2YyCjFRdzN4 -OVFnb3lYTEZKOW96YUxnUTlSTWtMbE9temtDQWlYTjVBYjQzYUo5ZjdOMmdFMk5uUmpOS21tQzlB -QlEwVFJ3RUtWTGhWbDEKVUdxQ0hKM0FsQlhXSVhONXNqUFFjRC8rbkhlRVhNeFl2bEF5cXhYb0Qz -TVd0UVZqN2oyb3FsYWtPQk1nRzgrcTJxWWxtQnRzNEZOaQp3NzQ4SWw1ODZIS0JScXhIdFpkUktX -MlZxYVE9PC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9k -czpTaWduYXR1cmU+PC9zbWQ6c2lnbmVkTWFyaz4= - - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_create_sunrise_code_with_mark.xml b/javatests/google/registry/flows/domain/testdata/domain_create_sunrise_code_with_mark.xml deleted file mode 100644 index 363523c29..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_create_sunrise_code_with_mark.xml +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - exampleone.tld - jd1234 - sh8013 - sh8013 - - 2fooBAR - - - - - - sunrise - - 49FD46E6C4B45C55D4AC - - - 1234-2 - Example One - - Example Inc. - - 123 Example Dr. - Suite 100 - Reston - VA - 20190 - US - - - US - 35 - 36 - example-one - exampleone - Dirigendas et eiusmodi - featuring infringo in airfare et cartam servicia. - - 234235 - 2009-08-16T09:00:00.0Z - 2015-08-16T09:00:00.0Z - - - - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_create_sunrise_duplicate_contact.xml b/javatests/google/registry/flows/domain/testdata/domain_create_sunrise_duplicate_contact.xml deleted file mode 100644 index ec73d5bdc..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_create_sunrise_duplicate_contact.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - test-validate.tld - - ns1.example.net - ns2.example.net - - jd1234 - sh8013 - jd1234 - sh8013 - - 2fooBAR - - - - - - sunrise - -PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHNtZDpzaWduZWRNYXJrIHhtbG5zOnNtZD0idXJuOmlldGY6cGFyYW1zOnhtbDpuczpzaWduZWRNYXJrLTEuMCIgaWQ9Il8zOGFjNTg2ZC05OTg5LTQ4MTctYjcwOC1kOGU4MzQ0NzZkOTUiPgogIDxzbWQ6aWQ+MDAwMDAwMTc2MTM3NjA0Mjc1OTEzNi02NTUzNTwvc21kOmlkPgogIDxzbWQ6aXNzdWVySW5mbyBpc3N1ZXJJRD0iNjU1MzUiPgogICAgPHNtZDpvcmc+SUNBTk4gVE1DSCBURVNUSU5HIFRNVjwvc21kOm9yZz4KICAgIDxzbWQ6ZW1haWw+bm90YXZhaWxhYmxlQGV4YW1wbGUuY29tPC9zbWQ6ZW1haWw+CiAgICA8c21kOnVybD5odHRwOi8vd3d3LmV4YW1wbGUuY29tPC9zbWQ6dXJsPgogICAgPHNtZDp2b2ljZT4rMzIuMDAwMDAwPC9zbWQ6dm9pY2U+CiAgPC9zbWQ6aXNzdWVySW5mbz4KICA8c21kOm5vdEJlZm9yZT4yMDEzLTA4LTA5VDEwOjA1OjU5LjEzNlo8L3NtZDpub3RCZWZvcmU+CiAgPHNtZDpub3RBZnRlcj4yMDE3LTA3LTIzVDIyOjAwOjAwLjAwMFo8L3NtZDpub3RBZnRlcj4KICA8bWFyazptYXJrIHhtbG5zOm1hcms9InVybjppZXRmOnBhcmFtczp4bWw6bnM6bWFyay0xLjAiPgogICAgPG1hcms6Y291cnQ+CiAgICAgIDxtYXJrOmlkPjAwMDUyMDEzNzM0NjkxNjkxMzczNDY5MTY5LTY1NTM1PC9tYXJrOmlkPgogICAgICA8bWFyazptYXJrTmFtZT5UZXN0ICZhbXA7IFZhbGlkYXRlPC9tYXJrOm1hcmtOYW1lPgogICAgICA8bWFyazpob2xkZXIgZW50aXRsZW1lbnQ9Im93bmVyIj4KICAgICAgICA8bWFyazpvcmc+QWcgY29ycG9yYXRpb248L21hcms6b3JnPgogICAgICAgIDxtYXJrOmFkZHI+CiAgICAgICAgICA8bWFyazpzdHJlZXQ+MTMwNSBCcmlnaHQgQXZlbnVlPC9tYXJrOnN0cmVldD4KICAgICAgICAgIDxtYXJrOmNpdHk+QXJjYWRpYTwvbWFyazpjaXR5PgogICAgICAgICAgPG1hcms6c3A+Q0E8L21hcms6c3A+CiAgICAgICAgICA8bWFyazpwYz45MDAyODwvbWFyazpwYz4KICAgICAgICAgIDxtYXJrOmNjPlVTPC9tYXJrOmNjPgogICAgICAgIDwvbWFyazphZGRyPgogICAgICA8L21hcms6aG9sZGVyPgogICAgICA8bWFyazpjb250YWN0IHR5cGU9ImFnZW50Ij4KICAgICAgICA8bWFyazpuYW1lPlRvbnkgSG9sbGFuZDwvbWFyazpuYW1lPgogICAgICAgIDxtYXJrOm9yZz5BZyBjb3Jwb3JhdGlvbjwvbWFyazpvcmc+CiAgICAgICAgPG1hcms6YWRkcj4KICAgICAgICAgIDxtYXJrOnN0cmVldD4xMzA1IEJyaWdodCBBdmVudWU8L21hcms6c3RyZWV0PgogICAgICAgICAgPG1hcms6Y2l0eT5BcmNhZGlhPC9tYXJrOmNpdHk+CiAgICAgICAgICA8bWFyazpzcD5DQTwvbWFyazpzcD4KICAgICAgICAgIDxtYXJrOnBjPjkwMDI4PC9tYXJrOnBjPgogICAgICAgICAgPG1hcms6Y2M+VVM8L21hcms6Y2M+CiAgICAgICAgPC9tYXJrOmFkZHI+CiAgICAgICAgPG1hcms6dm9pY2U+KzEuMjAyNTU2MjMwMjwvbWFyazp2b2ljZT4KICAgICAgICA8bWFyazpmYXg+KzEuMjAyNTU2MjMwMTwvbWFyazpmYXg+CiAgICAgICAgPG1hcms6ZW1haWw+aW5mb0BhZ2NvcnBvcmF0aW9uLmNvbTwvbWFyazplbWFpbD4KICAgICAgPC9tYXJrOmNvbnRhY3Q+CiAgICAgIDxtYXJrOmxhYmVsPnRlc3RhbmR2YWxpZGF0ZTwvbWFyazpsYWJlbD4KICAgICAgPG1hcms6bGFiZWw+dGVzdC0tLXZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0YW5kLXZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LXZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LWFuZHZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LS12YWxpZGF0ZTwvbWFyazpsYWJlbD4KICAgICAgPG1hcms6bGFiZWw+dGVzdHZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LWFuZC12YWxpZGF0ZTwvbWFyazpsYWJlbD4KICAgICAgPG1hcms6Z29vZHNBbmRTZXJ2aWNlcz5NdXNpY2FsIGluc3RydW1lbnRzPC9tYXJrOmdvb2RzQW5kU2VydmljZXM+CiAgICAgIDxtYXJrOnJlZk51bT4xMjM0PC9tYXJrOnJlZk51bT4KICAgICAgPG1hcms6cHJvRGF0ZT4yMDEyLTEyLTMxVDIzOjAwOjAwLjAwMFo8L21hcms6cHJvRGF0ZT4KICAgICAgPG1hcms6Y2M+VVM8L21hcms6Y2M+CiAgICAgIDxtYXJrOmNvdXJ0TmFtZT5Ib3ZlPC9tYXJrOmNvdXJ0TmFtZT4KICAgIDwvbWFyazpjb3VydD4KICA8L21hcms6bWFyaz4KPGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgSWQ9Il9mZDBmMTM0Ni03MTM4LTRiMGMtODRkNy0yZTdlYmY2YTExNmMiPjxkczpTaWduZWRJbmZvPjxkczpDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PGRzOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI3JzYS1zaGEyNTYiLz48ZHM6UmVmZXJlbmNlIFVSST0iI18zOGFjNTg2ZC05OTg5LTQ4MTctYjcwOC1kOGU4MzQ0NzZkOTUiPjxkczpUcmFuc2Zvcm1zPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZW52ZWxvcGVkLXNpZ25hdHVyZSIvPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz48L2RzOlRyYW5zZm9ybXM+PGRzOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI3NoYTI1NiIvPjxkczpEaWdlc3RWYWx1ZT55WDRLTWgrUDJ2OVUxNnh0eTl2ZGU5S0JTZmZFTjRHbTVVa2tLblI5cDdZPTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PGRzOlJlZmVyZW5jZSBVUkk9IiNfYjg5MjI1NWItMWJjOC00MTdiLWE0NGYtZWE5OGJjMzQ5OWE0Ij48ZHM6VHJhbnNmb3Jtcz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PC9kczpUcmFuc2Zvcm1zPjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNzaGEyNTYiLz48ZHM6RGlnZXN0VmFsdWU+dDNuNkFBTHdiaUhNbGRyZkpEQjNYQ3FkSlFzOEhjeU5pK1lXT3ZoV1krdz08L2RzOkRpZ2VzdFZhbHVlPjwvZHM6UmVmZXJlbmNlPjwvZHM6U2lnbmVkSW5mbz48ZHM6U2lnbmF0dXJlVmFsdWUgSWQ9Il82OWQzMDRlNC04NzlmLTRmNzEtYmMxMi02ZjJhZDlmOTM5OGYiPmJSVFIzTzUxM0dnTkExS2pxb0g0VXE3cUlhN2NJaTljaXZmZmFyVmE0VVQyVEUzdzEzc2xsUDFXbkdYYjcyYUw0dXhkbDFUaTZZbFoKVnVjSC92ZU5zUnlWZFZwSFF0eEJNTDFLU0tZbXc3ZjdPNnVsYWtrYnFrTkdYVmFZdEVsa1dBZnZFSDBsNURkNkFZT0k2UGN5SzBCWgo2VEl3cWZhQ1luVk5DdTFpdDIzMm9EREtiWU9RNk02YnhmU3BvVFYvaTVVdEVyak0vZWFFanp4MXFxZzlFZmxOcm1obmRtZW42Q2JYCjVrNmZ4Y1o0V2NtWkM4V0Ruc0t0VWVjaGtmbko4L0Jwc2ppM1Foekg4YzFiL0RqTmR5UFFyOGlndXBqR2dlU0JmMHhRRUtoK3pRT2oKYTNvMEhRWjZ1UlUvejdWN2RoNU9qUEhmV2lLc0pqRjVwc2ppRlE9PTwvZHM6U2lnbmF0dXJlVmFsdWU+PGRzOktleUluZm8gSWQ9Il9iODkyMjU1Yi0xYmM4LTQxN2ItYTQ0Zi1lYTk4YmMzNDk5YTQiPjxkczpYNTA5RGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSUZMekNDQkJlZ0F3SUJBZ0lnTHJBYmV2b2FlNTJ5M2Y2QzJ0QjBTbjNwN1hKbTBUMDJGb2d4S0NmTmhYb3dEUVlKS29aSWh2Y04KQVFFTEJRQXdmREVMTUFrR0ExVUVCaE1DVlZNeFBEQTZCZ05WQkFvVE0wbHVkR1Z5Ym1WMElFTnZjbkJ2Y21GMGFXOXVJR1p2Y2lCQgpjM05wWjI1bFpDQk9ZVzFsY3lCaGJtUWdUblZ0WW1WeWN6RXZNQzBHQTFVRUF4TW1TVU5CVGs0Z1ZISmhaR1Z0WVhKcklFTnNaV0Z5CmFXNW5hRzkxYzJVZ1VHbHNiM1FnUTBFd0hoY05NVE13TmpJMk1EQXdNREF3V2hjTk1UZ3dOakkxTWpNMU9UVTVXakNCanpFTE1Ba0cKQTFVRUJoTUNRa1V4SURBZUJnTlZCQWdURjBKeWRYTnpaV3h6TFVOaGNHbDBZV3dnVW1WbmFXOXVNUkV3RHdZRFZRUUhFd2hDY25WegpjMlZzY3pFUk1BOEdBMVVFQ2hNSVJHVnNiMmwwZEdVeE9EQTJCZ05WQkFNVEwwbERRVTVPSUZSTlEwZ2dRWFYwYUc5eWFYcGxaQ0JVCmNtRmtaVzFoY21zZ1VHbHNiM1FnVm1Gc2FXUmhkRzl5TUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUEKeGxwM0twWUhYM1d5QXNGaFNrM0x3V2ZuR2x4blVERnFGWkEzVW91TVlqL1hpZ2JNa05lRVhJamxrUk9LVDRPUEdmUngvTEF5UmxRUQpqQ012NHFoYmtjWDFwN2FyNjNmbHE0U1pOVmNsMTVsN2gwdVQ1OEZ6U2ZubHowdTVya0hmSkltRDQzK21hUC84Z3YzNkZSMjdqVzhSCjl3WTRoaytXczRJQjBpRlNkOFNYdjFLcjh3L0ptTVFTRGtpdUcrUmZJaXVid1EvZnk3RWtqNVFXaFBadyttTXhOS25IVUx5M3hZejIKTHdWZmZ0andVdWVhY3ZxTlJDa01YbENsT0FEcWZUOG9TWm9lRFhlaEh2bFBzTENlbUdCb1RLdXJza0lTNjlGMHlQRUg1Z3plMEgrZgo4RlJPc0lvS1NzVlEzNEI0Uy9qb0U2N25wc0pQVGRLc05QSlR5UUlEQVFBQm80SUJoekNDQVlNd0RBWURWUjBUQVFIL0JBSXdBREFkCkJnTlZIUTRFRmdRVW9GcFk3NnA1eW9ORFJHdFFwelZ1UjgxVVdRMHdnY1lHQTFVZEl3U0J2akNCdTRBVXc2MCtwdFlSQUVXQVhEcFgKU29wdDNERU5ubkdoZ1lDa2ZqQjhNUXN3Q1FZRFZRUUdFd0pWVXpFOE1Eb0dBMVVFQ2hNelNXNTBaWEp1WlhRZ1EyOXljRzl5WVhScApiMjRnWm05eUlFRnpjMmxuYm1Wa0lFNWhiV1Z6SUdGdVpDQk9kVzFpWlhKek1TOHdMUVlEVlFRREV5WkpRMEZPVGlCVWNtRmtaVzFoCmNtc2dRMnhsWVhKcGJtZG9iM1Z6WlNCUWFXeHZkQ0JEUVlJZ0xyQWJldm9hZTUyeTNmNkMydEIwU24zcDdYSm0wVDAyRm9neEtDZk4KaFhrd0RnWURWUjBQQVFIL0JBUURBZ2VBTURRR0ExVWRId1F0TUNzd0thQW5vQ1dHSTJoMGRIQTZMeTlqY213dWFXTmhibTR1YjNKbgpMM1J0WTJoZmNHbHNiM1F1WTNKc01FVUdBMVVkSUFRK01Ed3dPZ1lES2dNRU1ETXdNUVlJS3dZQkJRVUhBZ0VXSldoMGRIQTZMeTkzCmQzY3VhV05oYm00dWIzSm5MM0JwYkc5MFgzSmxjRzl6YVhSdmNua3dEUVlKS29aSWh2Y05BUUVMQlFBRGdnRUJBSWVEWVlKcjYwVzMKeTlRcyszelJWSTlrZWtLb201dmtIT2FsQjN3SGFaSWFBRllwSTk4dFkwYVZOOWFHT04wdjZXUUYrbnZ6MUtSWlFiQXowMUJYdGFSSgo0bVBrYXJoaHVMbjlOa0J4cDhIUjVxY2MrS0g3Z3Y2ci9jMGlHM2JDTkorUVNyN1FmKzVNbE1vNnpMNVVkZFUvVDJqaWJNWENqL2YyCjFRdzN4OVFnb3lYTEZKOW96YUxnUTlSTWtMbE9temtDQWlYTjVBYjQzYUo5ZjdOMmdFMk5uUmpOS21tQzlBQlEwVFJ3RUtWTGhWbDEKVUdxQ0hKM0FsQlhXSVhONXNqUFFjRC8rbkhlRVhNeFl2bEF5cXhYb0QzTVd0UVZqN2oyb3FsYWtPQk1nRzgrcTJxWWxtQnRzNEZOaQp3NzQ4SWw1ODZIS0JScXhIdFpkUktXMlZxYVE9PC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9kczpTaWduYXR1cmU+PC9zbWQ6c2lnbmVkTWFyaz4= - - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_create_sunrise_empty_encoded_signed_mark.xml b/javatests/google/registry/flows/domain/testdata/domain_create_sunrise_empty_encoded_signed_mark.xml deleted file mode 100644 index 9003ed946..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_create_sunrise_empty_encoded_signed_mark.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - test-validate.tld - - ns1.example.net - ns2.example.net - - jd1234 - sh8013 - sh8013 - - 2fooBAR - - - - - - sunrise - - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_create_sunrise_encoded_signed_mark_no_hosts.xml b/javatests/google/registry/flows/domain/testdata/domain_create_sunrise_encoded_signed_mark_no_hosts.xml deleted file mode 100644 index e7be100d3..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_create_sunrise_encoded_signed_mark_no_hosts.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - test-validate.tld - jd1234 - sh8013 - sh8013 - - 2fooBAR - - - - - - sunrise - -PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHNtZDpzaWduZWRNYXJrIHhtbG5zOnNtZD0idXJuOmlldGY6cGFyYW1zOnhtbDpuczpzaWduZWRNYXJrLTEuMCIgaWQ9Il8zOGFjNTg2ZC05OTg5LTQ4MTctYjcwOC1kOGU4MzQ0NzZkOTUiPgogIDxzbWQ6aWQ+MDAwMDAwMTc2MTM3NjA0Mjc1OTEzNi02NTUzNTwvc21kOmlkPgogIDxzbWQ6aXNzdWVySW5mbyBpc3N1ZXJJRD0iNjU1MzUiPgogICAgPHNtZDpvcmc+SUNBTk4gVE1DSCBURVNUSU5HIFRNVjwvc21kOm9yZz4KICAgIDxzbWQ6ZW1haWw+bm90YXZhaWxhYmxlQGV4YW1wbGUuY29tPC9zbWQ6ZW1haWw+CiAgICA8c21kOnVybD5odHRwOi8vd3d3LmV4YW1wbGUuY29tPC9zbWQ6dXJsPgogICAgPHNtZDp2b2ljZT4rMzIuMDAwMDAwPC9zbWQ6dm9pY2U+CiAgPC9zbWQ6aXNzdWVySW5mbz4KICA8c21kOm5vdEJlZm9yZT4yMDEzLTA4LTA5VDEwOjA1OjU5LjEzNlo8L3NtZDpub3RCZWZvcmU+CiAgPHNtZDpub3RBZnRlcj4yMDE3LTA3LTIzVDIyOjAwOjAwLjAwMFo8L3NtZDpub3RBZnRlcj4KICA8bWFyazptYXJrIHhtbG5zOm1hcms9InVybjppZXRmOnBhcmFtczp4bWw6bnM6bWFyay0xLjAiPgogICAgPG1hcms6Y291cnQ+CiAgICAgIDxtYXJrOmlkPjAwMDUyMDEzNzM0NjkxNjkxMzczNDY5MTY5LTY1NTM1PC9tYXJrOmlkPgogICAgICA8bWFyazptYXJrTmFtZT5UZXN0ICZhbXA7IFZhbGlkYXRlPC9tYXJrOm1hcmtOYW1lPgogICAgICA8bWFyazpob2xkZXIgZW50aXRsZW1lbnQ9Im93bmVyIj4KICAgICAgICA8bWFyazpvcmc+QWcgY29ycG9yYXRpb248L21hcms6b3JnPgogICAgICAgIDxtYXJrOmFkZHI+CiAgICAgICAgICA8bWFyazpzdHJlZXQ+MTMwNSBCcmlnaHQgQXZlbnVlPC9tYXJrOnN0cmVldD4KICAgICAgICAgIDxtYXJrOmNpdHk+QXJjYWRpYTwvbWFyazpjaXR5PgogICAgICAgICAgPG1hcms6c3A+Q0E8L21hcms6c3A+CiAgICAgICAgICA8bWFyazpwYz45MDAyODwvbWFyazpwYz4KICAgICAgICAgIDxtYXJrOmNjPlVTPC9tYXJrOmNjPgogICAgICAgIDwvbWFyazphZGRyPgogICAgICA8L21hcms6aG9sZGVyPgogICAgICA8bWFyazpjb250YWN0IHR5cGU9ImFnZW50Ij4KICAgICAgICA8bWFyazpuYW1lPlRvbnkgSG9sbGFuZDwvbWFyazpuYW1lPgogICAgICAgIDxtYXJrOm9yZz5BZyBjb3Jwb3JhdGlvbjwvbWFyazpvcmc+CiAgICAgICAgPG1hcms6YWRkcj4KICAgICAgICAgIDxtYXJrOnN0cmVldD4xMzA1IEJyaWdodCBBdmVudWU8L21hcms6c3RyZWV0PgogICAgICAgICAgPG1hcms6Y2l0eT5BcmNhZGlhPC9tYXJrOmNpdHk+CiAgICAgICAgICA8bWFyazpzcD5DQTwvbWFyazpzcD4KICAgICAgICAgIDxtYXJrOnBjPjkwMDI4PC9tYXJrOnBjPgogICAgICAgICAgPG1hcms6Y2M+VVM8L21hcms6Y2M+CiAgICAgICAgPC9tYXJrOmFkZHI+CiAgICAgICAgPG1hcms6dm9pY2U+KzEuMjAyNTU2MjMwMjwvbWFyazp2b2ljZT4KICAgICAgICA8bWFyazpmYXg+KzEuMjAyNTU2MjMwMTwvbWFyazpmYXg+CiAgICAgICAgPG1hcms6ZW1haWw+aW5mb0BhZ2NvcnBvcmF0aW9uLmNvbTwvbWFyazplbWFpbD4KICAgICAgPC9tYXJrOmNvbnRhY3Q+CiAgICAgIDxtYXJrOmxhYmVsPnRlc3RhbmR2YWxpZGF0ZTwvbWFyazpsYWJlbD4KICAgICAgPG1hcms6bGFiZWw+dGVzdC0tLXZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0YW5kLXZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LXZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LWFuZHZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LS12YWxpZGF0ZTwvbWFyazpsYWJlbD4KICAgICAgPG1hcms6bGFiZWw+dGVzdHZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LWFuZC12YWxpZGF0ZTwvbWFyazpsYWJlbD4KICAgICAgPG1hcms6Z29vZHNBbmRTZXJ2aWNlcz5NdXNpY2FsIGluc3RydW1lbnRzPC9tYXJrOmdvb2RzQW5kU2VydmljZXM+CiAgICAgIDxtYXJrOnJlZk51bT4xMjM0PC9tYXJrOnJlZk51bT4KICAgICAgPG1hcms6cHJvRGF0ZT4yMDEyLTEyLTMxVDIzOjAwOjAwLjAwMFo8L21hcms6cHJvRGF0ZT4KICAgICAgPG1hcms6Y2M+VVM8L21hcms6Y2M+CiAgICAgIDxtYXJrOmNvdXJ0TmFtZT5Ib3ZlPC9tYXJrOmNvdXJ0TmFtZT4KICAgIDwvbWFyazpjb3VydD4KICA8L21hcms6bWFyaz4KPGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgSWQ9Il9mZDBmMTM0Ni03MTM4LTRiMGMtODRkNy0yZTdlYmY2YTExNmMiPjxkczpTaWduZWRJbmZvPjxkczpDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PGRzOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI3JzYS1zaGEyNTYiLz48ZHM6UmVmZXJlbmNlIFVSST0iI18zOGFjNTg2ZC05OTg5LTQ4MTctYjcwOC1kOGU4MzQ0NzZkOTUiPjxkczpUcmFuc2Zvcm1zPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZW52ZWxvcGVkLXNpZ25hdHVyZSIvPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz48L2RzOlRyYW5zZm9ybXM+PGRzOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI3NoYTI1NiIvPjxkczpEaWdlc3RWYWx1ZT55WDRLTWgrUDJ2OVUxNnh0eTl2ZGU5S0JTZmZFTjRHbTVVa2tLblI5cDdZPTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PGRzOlJlZmVyZW5jZSBVUkk9IiNfYjg5MjI1NWItMWJjOC00MTdiLWE0NGYtZWE5OGJjMzQ5OWE0Ij48ZHM6VHJhbnNmb3Jtcz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PC9kczpUcmFuc2Zvcm1zPjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNzaGEyNTYiLz48ZHM6RGlnZXN0VmFsdWU+dDNuNkFBTHdiaUhNbGRyZkpEQjNYQ3FkSlFzOEhjeU5pK1lXT3ZoV1krdz08L2RzOkRpZ2VzdFZhbHVlPjwvZHM6UmVmZXJlbmNlPjwvZHM6U2lnbmVkSW5mbz48ZHM6U2lnbmF0dXJlVmFsdWUgSWQ9Il82OWQzMDRlNC04NzlmLTRmNzEtYmMxMi02ZjJhZDlmOTM5OGYiPmJSVFIzTzUxM0dnTkExS2pxb0g0VXE3cUlhN2NJaTljaXZmZmFyVmE0VVQyVEUzdzEzc2xsUDFXbkdYYjcyYUw0dXhkbDFUaTZZbFoKVnVjSC92ZU5zUnlWZFZwSFF0eEJNTDFLU0tZbXc3ZjdPNnVsYWtrYnFrTkdYVmFZdEVsa1dBZnZFSDBsNURkNkFZT0k2UGN5SzBCWgo2VEl3cWZhQ1luVk5DdTFpdDIzMm9EREtiWU9RNk02YnhmU3BvVFYvaTVVdEVyak0vZWFFanp4MXFxZzlFZmxOcm1obmRtZW42Q2JYCjVrNmZ4Y1o0V2NtWkM4V0Ruc0t0VWVjaGtmbko4L0Jwc2ppM1Foekg4YzFiL0RqTmR5UFFyOGlndXBqR2dlU0JmMHhRRUtoK3pRT2oKYTNvMEhRWjZ1UlUvejdWN2RoNU9qUEhmV2lLc0pqRjVwc2ppRlE9PTwvZHM6U2lnbmF0dXJlVmFsdWU+PGRzOktleUluZm8gSWQ9Il9iODkyMjU1Yi0xYmM4LTQxN2ItYTQ0Zi1lYTk4YmMzNDk5YTQiPjxkczpYNTA5RGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSUZMekNDQkJlZ0F3SUJBZ0lnTHJBYmV2b2FlNTJ5M2Y2QzJ0QjBTbjNwN1hKbTBUMDJGb2d4S0NmTmhYb3dEUVlKS29aSWh2Y04KQVFFTEJRQXdmREVMTUFrR0ExVUVCaE1DVlZNeFBEQTZCZ05WQkFvVE0wbHVkR1Z5Ym1WMElFTnZjbkJ2Y21GMGFXOXVJR1p2Y2lCQgpjM05wWjI1bFpDQk9ZVzFsY3lCaGJtUWdUblZ0WW1WeWN6RXZNQzBHQTFVRUF4TW1TVU5CVGs0Z1ZISmhaR1Z0WVhKcklFTnNaV0Z5CmFXNW5hRzkxYzJVZ1VHbHNiM1FnUTBFd0hoY05NVE13TmpJMk1EQXdNREF3V2hjTk1UZ3dOakkxTWpNMU9UVTVXakNCanpFTE1Ba0cKQTFVRUJoTUNRa1V4SURBZUJnTlZCQWdURjBKeWRYTnpaV3h6TFVOaGNHbDBZV3dnVW1WbmFXOXVNUkV3RHdZRFZRUUhFd2hDY25WegpjMlZzY3pFUk1BOEdBMVVFQ2hNSVJHVnNiMmwwZEdVeE9EQTJCZ05WQkFNVEwwbERRVTVPSUZSTlEwZ2dRWFYwYUc5eWFYcGxaQ0JVCmNtRmtaVzFoY21zZ1VHbHNiM1FnVm1Gc2FXUmhkRzl5TUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUEKeGxwM0twWUhYM1d5QXNGaFNrM0x3V2ZuR2x4blVERnFGWkEzVW91TVlqL1hpZ2JNa05lRVhJamxrUk9LVDRPUEdmUngvTEF5UmxRUQpqQ012NHFoYmtjWDFwN2FyNjNmbHE0U1pOVmNsMTVsN2gwdVQ1OEZ6U2ZubHowdTVya0hmSkltRDQzK21hUC84Z3YzNkZSMjdqVzhSCjl3WTRoaytXczRJQjBpRlNkOFNYdjFLcjh3L0ptTVFTRGtpdUcrUmZJaXVid1EvZnk3RWtqNVFXaFBadyttTXhOS25IVUx5M3hZejIKTHdWZmZ0andVdWVhY3ZxTlJDa01YbENsT0FEcWZUOG9TWm9lRFhlaEh2bFBzTENlbUdCb1RLdXJza0lTNjlGMHlQRUg1Z3plMEgrZgo4RlJPc0lvS1NzVlEzNEI0Uy9qb0U2N25wc0pQVGRLc05QSlR5UUlEQVFBQm80SUJoekNDQVlNd0RBWURWUjBUQVFIL0JBSXdBREFkCkJnTlZIUTRFRmdRVW9GcFk3NnA1eW9ORFJHdFFwelZ1UjgxVVdRMHdnY1lHQTFVZEl3U0J2akNCdTRBVXc2MCtwdFlSQUVXQVhEcFgKU29wdDNERU5ubkdoZ1lDa2ZqQjhNUXN3Q1FZRFZRUUdFd0pWVXpFOE1Eb0dBMVVFQ2hNelNXNTBaWEp1WlhRZ1EyOXljRzl5WVhScApiMjRnWm05eUlFRnpjMmxuYm1Wa0lFNWhiV1Z6SUdGdVpDQk9kVzFpWlhKek1TOHdMUVlEVlFRREV5WkpRMEZPVGlCVWNtRmtaVzFoCmNtc2dRMnhsWVhKcGJtZG9iM1Z6WlNCUWFXeHZkQ0JEUVlJZ0xyQWJldm9hZTUyeTNmNkMydEIwU24zcDdYSm0wVDAyRm9neEtDZk4KaFhrd0RnWURWUjBQQVFIL0JBUURBZ2VBTURRR0ExVWRId1F0TUNzd0thQW5vQ1dHSTJoMGRIQTZMeTlqY213dWFXTmhibTR1YjNKbgpMM1J0WTJoZmNHbHNiM1F1WTNKc01FVUdBMVVkSUFRK01Ed3dPZ1lES2dNRU1ETXdNUVlJS3dZQkJRVUhBZ0VXSldoMGRIQTZMeTkzCmQzY3VhV05oYm00dWIzSm5MM0JwYkc5MFgzSmxjRzl6YVhSdmNua3dEUVlKS29aSWh2Y05BUUVMQlFBRGdnRUJBSWVEWVlKcjYwVzMKeTlRcyszelJWSTlrZWtLb201dmtIT2FsQjN3SGFaSWFBRllwSTk4dFkwYVZOOWFHT04wdjZXUUYrbnZ6MUtSWlFiQXowMUJYdGFSSgo0bVBrYXJoaHVMbjlOa0J4cDhIUjVxY2MrS0g3Z3Y2ci9jMGlHM2JDTkorUVNyN1FmKzVNbE1vNnpMNVVkZFUvVDJqaWJNWENqL2YyCjFRdzN4OVFnb3lYTEZKOW96YUxnUTlSTWtMbE9temtDQWlYTjVBYjQzYUo5ZjdOMmdFMk5uUmpOS21tQzlBQlEwVFJ3RUtWTGhWbDEKVUdxQ0hKM0FsQlhXSVhONXNqUFFjRC8rbkhlRVhNeFl2bEF5cXhYb0QzTVd0UVZqN2oyb3FsYWtPQk1nRzgrcTJxWWxtQnRzNEZOaQp3NzQ4SWw1ODZIS0JScXhIdFpkUktXMlZxYVE9PC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9kczpTaWduYXR1cmU+PC9zbWQ6c2lnbmVkTWFyaz4= - - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_create_sunrise_encoded_signed_mark_response.xml b/javatests/google/registry/flows/domain/testdata/domain_create_sunrise_encoded_signed_mark_response.xml deleted file mode 100644 index 17ce2413e..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_create_sunrise_encoded_signed_mark_response.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - Command completed successfully - - - - test-validate.tld - 2013-08-09T12:05:59Z - - - - - sunrise - 1-TLD - - - - ABC-12345 - server-trid - - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_create_sunrise_encoded_signed_mark_with_whitespace.xml b/javatests/google/registry/flows/domain/testdata/domain_create_sunrise_encoded_signed_mark_with_whitespace.xml deleted file mode 100644 index d4da6621f..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_create_sunrise_encoded_signed_mark_with_whitespace.xml +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - test-validate.tld - - ns1.example.net - ns2.example.net - - jd1234 - sh8013 - sh8013 - - 2fooBAR - - - - - - sunrise - -PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHNtZDpzaWduZWRNYXJrIHhtbG5z -OnNtZD0idXJuOmlldGY6cGFyYW1zOnhtbDpuczpzaWduZWRNYXJrLTEuMCIgaWQ9Il8zOGFjNTg2ZC05 -OTg5LTQ4MTctYjcwOC1kOGU4MzQ0NzZkOTUiPgogIDxzbWQ6aWQ+MDAwMDAwMTc2MTM3NjA0Mjc1OTEz -Ni02NTUzNTwvc21kOmlkPgogIDxzbWQ6aXNzdWVySW5mbyBpc3N1ZXJJRD0iNjU1MzUiPgogICAgPHNt -ZDpvcmc+SUNBTk4gVE1DSCBURVNUSU5HIFRNVjwvc21kOm9yZz4KICAgIDxzbWQ6ZW1haWw+bm90YXZh -aWxhYmxlQGV4YW1wbGUuY29tPC9zbWQ6ZW1haWw+CiAgICA8c21kOnVybD5odHRwOi8vd3d3LmV4YW1w -bGUuY29tPC9zbWQ6dXJsPgogICAgPHNtZDp2b2ljZT4rMzIuMDAwMDAwPC9zbWQ6dm9pY2U+CiAgPC9z -bWQ6aXNzdWVySW5mbz4KICA8c21kOm5vdEJlZm9yZT4yMDEzLTA4LTA5VDEwOjA1OjU5LjEzNlo8L3Nt -ZDpub3RCZWZvcmU+CiAgPHNtZDpub3RBZnRlcj4yMDE3LTA3LTIzVDIyOjAwOjAwLjAwMFo8L3NtZDpu -b3RBZnRlcj4KICA8bWFyazptYXJrIHhtbG5zOm1hcms9InVybjppZXRmOnBhcmFtczp4bWw6bnM6bWFy -ay0xLjAiPgogICAgPG1hcms6Y291cnQ+CiAgICAgIDxtYXJrOmlkPjAwMDUyMDEzNzM0NjkxNjkxMzcz -NDY5MTY5LTY1NTM1PC9tYXJrOmlkPgogICAgICA8bWFyazptYXJrTmFtZT5UZXN0ICZhbXA7IFZhbGlk -YXRlPC9tYXJrOm1hcmtOYW1lPgogICAgICA8bWFyazpob2xkZXIgZW50aXRsZW1lbnQ9Im93bmVyIj4K -ICAgICAgICA8bWFyazpvcmc+QWcgY29ycG9yYXRpb248L21hcms6b3JnPgogICAgICAgIDxtYXJrOmFk -ZHI+CiAgICAgICAgICA8bWFyazpzdHJlZXQ+MTMwNSBCcmlnaHQgQXZlbnVlPC9tYXJrOnN0cmVldD4K -ICAgICAgICAgIDxtYXJrOmNpdHk+QXJjYWRpYTwvbWFyazpjaXR5PgogICAgICAgICAgPG1hcms6c3A+ -Q0E8L21hcms6c3A+CiAgICAgICAgICA8bWFyazpwYz45MDAyODwvbWFyazpwYz4KICAgICAgICAgIDxt -YXJrOmNjPlVTPC9tYXJrOmNjPgogICAgICAgIDwvbWFyazphZGRyPgogICAgICA8L21hcms6aG9sZGVy -PgogICAgICA8bWFyazpjb250YWN0IHR5cGU9ImFnZW50Ij4KICAgICAgICA8bWFyazpuYW1lPlRvbnkg -SG9sbGFuZDwvbWFyazpuYW1lPgogICAgICAgIDxtYXJrOm9yZz5BZyBjb3Jwb3JhdGlvbjwvbWFyazpv -cmc+CiAgICAgICAgPG1hcms6YWRkcj4KICAgICAgICAgIDxtYXJrOnN0cmVldD4xMzA1IEJyaWdodCBB -dmVudWU8L21hcms6c3RyZWV0PgogICAgICAgICAgPG1hcms6Y2l0eT5BcmNhZGlhPC9tYXJrOmNpdHk+ -CiAgICAgICAgICA8bWFyazpzcD5DQTwvbWFyazpzcD4KICAgICAgICAgIDxtYXJrOnBjPjkwMDI4PC9t -YXJrOnBjPgogICAgICAgICAgPG1hcms6Y2M+VVM8L21hcms6Y2M+CiAgICAgICAgPC9tYXJrOmFkZHI+ -CiAgICAgICAgPG1hcms6dm9pY2U+KzEuMjAyNTU2MjMwMjwvbWFyazp2b2ljZT4KICAgICAgICA8bWFy -azpmYXg+KzEuMjAyNTU2MjMwMTwvbWFyazpmYXg+CiAgICAgICAgPG1hcms6ZW1haWw+aW5mb0BhZ2Nv -cnBvcmF0aW9uLmNvbTwvbWFyazplbWFpbD4KICAgICAgPC9tYXJrOmNvbnRhY3Q+CiAgICAgIDxtYXJr -OmxhYmVsPnRlc3RhbmR2YWxpZGF0ZTwvbWFyazpsYWJlbD4KICAgICAgPG1hcms6bGFiZWw+dGVzdC0t -LXZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0YW5kLXZhbGlkYXRlPC9t -YXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LXZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAg -ICA8bWFyazpsYWJlbD50ZXN0LWFuZHZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJl -bD50ZXN0LS12YWxpZGF0ZTwvbWFyazpsYWJlbD4KICAgICAgPG1hcms6bGFiZWw+dGVzdHZhbGlkYXRl -PC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LWFuZC12YWxpZGF0ZTwvbWFyazpsYWJl -bD4KICAgICAgPG1hcms6Z29vZHNBbmRTZXJ2aWNlcz5NdXNpY2FsIGluc3RydW1lbnRzPC9tYXJrOmdv -b2RzQW5kU2VydmljZXM+CiAgICAgIDxtYXJrOnJlZk51bT4xMjM0PC9tYXJrOnJlZk51bT4KICAgICAg -PG1hcms6cHJvRGF0ZT4yMDEyLTEyLTMxVDIzOjAwOjAwLjAwMFo8L21hcms6cHJvRGF0ZT4KICAgICAg -PG1hcms6Y2M+VVM8L21hcms6Y2M+CiAgICAgIDxtYXJrOmNvdXJ0TmFtZT5Ib3ZlPC9tYXJrOmNvdXJ0 -TmFtZT4KICAgIDwvbWFyazpjb3VydD4KICA8L21hcms6bWFyaz4KPGRzOlNpZ25hdHVyZSB4bWxuczpk -cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgSWQ9Il9mZDBmMTM0Ni03MTM4LTRi -MGMtODRkNy0yZTdlYmY2YTExNmMiPjxkczpTaWduZWRJbmZvPjxkczpDYW5vbmljYWxpemF0aW9uTWV0 -aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PGRz -OlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNp -Zy1tb3JlI3JzYS1zaGEyNTYiLz48ZHM6UmVmZXJlbmNlIFVSST0iI18zOGFjNTg2ZC05OTg5LTQ4MTct -YjcwOC1kOGU4MzQ0NzZkOTUiPjxkczpUcmFuc2Zvcm1zPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJo -dHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZW52ZWxvcGVkLXNpZ25hdHVyZSIvPjxkczpU -cmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMi -Lz48L2RzOlRyYW5zZm9ybXM+PGRzOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMu -b3JnLzIwMDEvMDQveG1sZW5jI3NoYTI1NiIvPjxkczpEaWdlc3RWYWx1ZT55WDRLTWgrUDJ2OVUxNnh0 -eTl2ZGU5S0JTZmZFTjRHbTVVa2tLblI5cDdZPTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+ -PGRzOlJlZmVyZW5jZSBVUkk9IiNfYjg5MjI1NWItMWJjOC00MTdiLWE0NGYtZWE5OGJjMzQ5OWE0Ij48 -ZHM6VHJhbnNmb3Jtcz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAw -MS8xMC94bWwtZXhjLWMxNG4jIi8+PC9kczpUcmFuc2Zvcm1zPjxkczpEaWdlc3RNZXRob2QgQWxnb3Jp -dGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNzaGEyNTYiLz48ZHM6RGlnZXN0VmFs -dWU+dDNuNkFBTHdiaUhNbGRyZkpEQjNYQ3FkSlFzOEhjeU5pK1lXT3ZoV1krdz08L2RzOkRpZ2VzdFZh -bHVlPjwvZHM6UmVmZXJlbmNlPjwvZHM6U2lnbmVkSW5mbz48ZHM6U2lnbmF0dXJlVmFsdWUgSWQ9Il82 -OWQzMDRlNC04NzlmLTRmNzEtYmMxMi02ZjJhZDlmOTM5OGYiPmJSVFIzTzUxM0dnTkExS2pxb0g0VXE3 -cUlhN2NJaTljaXZmZmFyVmE0VVQyVEUzdzEzc2xsUDFXbkdYYjcyYUw0dXhkbDFUaTZZbFoKVnVjSC92 -ZU5zUnlWZFZwSFF0eEJNTDFLU0tZbXc3ZjdPNnVsYWtrYnFrTkdYVmFZdEVsa1dBZnZFSDBsNURkNkFZ -T0k2UGN5SzBCWgo2VEl3cWZhQ1luVk5DdTFpdDIzMm9EREtiWU9RNk02YnhmU3BvVFYvaTVVdEVyak0v -ZWFFanp4MXFxZzlFZmxOcm1obmRtZW42Q2JYCjVrNmZ4Y1o0V2NtWkM4V0Ruc0t0VWVjaGtmbko4L0Jw -c2ppM1Foekg4YzFiL0RqTmR5UFFyOGlndXBqR2dlU0JmMHhRRUtoK3pRT2oKYTNvMEhRWjZ1UlUvejdW -N2RoNU9qUEhmV2lLc0pqRjVwc2ppRlE9PTwvZHM6U2lnbmF0dXJlVmFsdWU+PGRzOktleUluZm8gSWQ9 -Il9iODkyMjU1Yi0xYmM4LTQxN2ItYTQ0Zi1lYTk4YmMzNDk5YTQiPjxkczpYNTA5RGF0YT48ZHM6WDUw -OUNlcnRpZmljYXRlPk1JSUZMekNDQkJlZ0F3SUJBZ0lnTHJBYmV2b2FlNTJ5M2Y2QzJ0QjBTbjNwN1hK -bTBUMDJGb2d4S0NmTmhYb3dEUVlKS29aSWh2Y04KQVFFTEJRQXdmREVMTUFrR0ExVUVCaE1DVlZNeFBE -QTZCZ05WQkFvVE0wbHVkR1Z5Ym1WMElFTnZjbkJ2Y21GMGFXOXVJR1p2Y2lCQgpjM05wWjI1bFpDQk9Z -VzFsY3lCaGJtUWdUblZ0WW1WeWN6RXZNQzBHQTFVRUF4TW1TVU5CVGs0Z1ZISmhaR1Z0WVhKcklFTnNa -V0Z5CmFXNW5hRzkxYzJVZ1VHbHNiM1FnUTBFd0hoY05NVE13TmpJMk1EQXdNREF3V2hjTk1UZ3dOakkx -TWpNMU9UVTVXakNCanpFTE1Ba0cKQTFVRUJoTUNRa1V4SURBZUJnTlZCQWdURjBKeWRYTnpaV3h6TFVO -aGNHbDBZV3dnVW1WbmFXOXVNUkV3RHdZRFZRUUhFd2hDY25WegpjMlZzY3pFUk1BOEdBMVVFQ2hNSVJH -VnNiMmwwZEdVeE9EQTJCZ05WQkFNVEwwbERRVTVPSUZSTlEwZ2dRWFYwYUc5eWFYcGxaQ0JVCmNtRmta -VzFoY21zZ1VHbHNiM1FnVm1Gc2FXUmhkRzl5TUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFN -SUlCQ2dLQ0FRRUEKeGxwM0twWUhYM1d5QXNGaFNrM0x3V2ZuR2x4blVERnFGWkEzVW91TVlqL1hpZ2JN -a05lRVhJamxrUk9LVDRPUEdmUngvTEF5UmxRUQpqQ012NHFoYmtjWDFwN2FyNjNmbHE0U1pOVmNsMTVs -N2gwdVQ1OEZ6U2ZubHowdTVya0hmSkltRDQzK21hUC84Z3YzNkZSMjdqVzhSCjl3WTRoaytXczRJQjBp -RlNkOFNYdjFLcjh3L0ptTVFTRGtpdUcrUmZJaXVid1EvZnk3RWtqNVFXaFBadyttTXhOS25IVUx5M3hZ -ejIKTHdWZmZ0andVdWVhY3ZxTlJDa01YbENsT0FEcWZUOG9TWm9lRFhlaEh2bFBzTENlbUdCb1RLdXJz -a0lTNjlGMHlQRUg1Z3plMEgrZgo4RlJPc0lvS1NzVlEzNEI0Uy9qb0U2N25wc0pQVGRLc05QSlR5UUlE -QVFBQm80SUJoekNDQVlNd0RBWURWUjBUQVFIL0JBSXdBREFkCkJnTlZIUTRFRmdRVW9GcFk3NnA1eW9O -RFJHdFFwelZ1UjgxVVdRMHdnY1lHQTFVZEl3U0J2akNCdTRBVXc2MCtwdFlSQUVXQVhEcFgKU29wdDNE -RU5ubkdoZ1lDa2ZqQjhNUXN3Q1FZRFZRUUdFd0pWVXpFOE1Eb0dBMVVFQ2hNelNXNTBaWEp1WlhRZ1Ey -OXljRzl5WVhScApiMjRnWm05eUlFRnpjMmxuYm1Wa0lFNWhiV1Z6SUdGdVpDQk9kVzFpWlhKek1TOHdM -UVlEVlFRREV5WkpRMEZPVGlCVWNtRmtaVzFoCmNtc2dRMnhsWVhKcGJtZG9iM1Z6WlNCUWFXeHZkQ0JE -UVlJZ0xyQWJldm9hZTUyeTNmNkMydEIwU24zcDdYSm0wVDAyRm9neEtDZk4KaFhrd0RnWURWUjBQQVFI -L0JBUURBZ2VBTURRR0ExVWRId1F0TUNzd0thQW5vQ1dHSTJoMGRIQTZMeTlqY213dWFXTmhibTR1YjNK -bgpMM1J0WTJoZmNHbHNiM1F1WTNKc01FVUdBMVVkSUFRK01Ed3dPZ1lES2dNRU1ETXdNUVlJS3dZQkJR -VUhBZ0VXSldoMGRIQTZMeTkzCmQzY3VhV05oYm00dWIzSm5MM0JwYkc5MFgzSmxjRzl6YVhSdmNua3dE -UVlKS29aSWh2Y05BUUVMQlFBRGdnRUJBSWVEWVlKcjYwVzMKeTlRcyszelJWSTlrZWtLb201dmtIT2Fs -QjN3SGFaSWFBRllwSTk4dFkwYVZOOWFHT04wdjZXUUYrbnZ6MUtSWlFiQXowMUJYdGFSSgo0bVBrYXJo -aHVMbjlOa0J4cDhIUjVxY2MrS0g3Z3Y2ci9jMGlHM2JDTkorUVNyN1FmKzVNbE1vNnpMNVVkZFUvVDJq -aWJNWENqL2YyCjFRdzN4OVFnb3lYTEZKOW96YUxnUTlSTWtMbE9temtDQWlYTjVBYjQzYUo5ZjdOMmdF -Mk5uUmpOS21tQzlBQlEwVFJ3RUtWTGhWbDEKVUdxQ0hKM0FsQlhXSVhONXNqUFFjRC8rbkhlRVhNeFl2 -bEF5cXhYb0QzTVd0UVZqN2oyb3FsYWtPQk1nRzgrcTJxWWxtQnRzNEZOaQp3NzQ4SWw1ODZIS0JScXhI -dFpkUktXMlZxYVE9PC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+ -PC9kczpTaWduYXR1cmU+PC9zbWQ6c2lnbmVkTWFyaz4= - - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_create_sunrise_hex_encoding.xml b/javatests/google/registry/flows/domain/testdata/domain_create_sunrise_hex_encoding.xml deleted file mode 100644 index 095b015aa..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_create_sunrise_hex_encoding.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - test-validate.tld - - ns1.example.net - ns2.example.net - - jd1234 - sh8013 - sh8013 - - 2fooBAR - - - - - - sunrise - - abcdef01234567890 - - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_create_sunrise_missing_contact_type.xml b/javatests/google/registry/flows/domain/testdata/domain_create_sunrise_missing_contact_type.xml deleted file mode 100644 index 9f32aa1e9..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_create_sunrise_missing_contact_type.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - test-validate.tld - - ns1.example.net - ns2.example.net - - jd1234 - sh8013 - sh8013 - - 2fooBAR - - - - - - sunrise - -PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHNtZDpzaWduZWRNYXJrIHhtbG5zOnNtZD0idXJuOmlldGY6cGFyYW1zOnhtbDpuczpzaWduZWRNYXJrLTEuMCIgaWQ9Il8zOGFjNTg2ZC05OTg5LTQ4MTctYjcwOC1kOGU4MzQ0NzZkOTUiPgogIDxzbWQ6aWQ+MDAwMDAwMTc2MTM3NjA0Mjc1OTEzNi02NTUzNTwvc21kOmlkPgogIDxzbWQ6aXNzdWVySW5mbyBpc3N1ZXJJRD0iNjU1MzUiPgogICAgPHNtZDpvcmc+SUNBTk4gVE1DSCBURVNUSU5HIFRNVjwvc21kOm9yZz4KICAgIDxzbWQ6ZW1haWw+bm90YXZhaWxhYmxlQGV4YW1wbGUuY29tPC9zbWQ6ZW1haWw+CiAgICA8c21kOnVybD5odHRwOi8vd3d3LmV4YW1wbGUuY29tPC9zbWQ6dXJsPgogICAgPHNtZDp2b2ljZT4rMzIuMDAwMDAwPC9zbWQ6dm9pY2U+CiAgPC9zbWQ6aXNzdWVySW5mbz4KICA8c21kOm5vdEJlZm9yZT4yMDEzLTA4LTA5VDEwOjA1OjU5LjEzNlo8L3NtZDpub3RCZWZvcmU+CiAgPHNtZDpub3RBZnRlcj4yMDE3LTA3LTIzVDIyOjAwOjAwLjAwMFo8L3NtZDpub3RBZnRlcj4KICA8bWFyazptYXJrIHhtbG5zOm1hcms9InVybjppZXRmOnBhcmFtczp4bWw6bnM6bWFyay0xLjAiPgogICAgPG1hcms6Y291cnQ+CiAgICAgIDxtYXJrOmlkPjAwMDUyMDEzNzM0NjkxNjkxMzczNDY5MTY5LTY1NTM1PC9tYXJrOmlkPgogICAgICA8bWFyazptYXJrTmFtZT5UZXN0ICZhbXA7IFZhbGlkYXRlPC9tYXJrOm1hcmtOYW1lPgogICAgICA8bWFyazpob2xkZXIgZW50aXRsZW1lbnQ9Im93bmVyIj4KICAgICAgICA8bWFyazpvcmc+QWcgY29ycG9yYXRpb248L21hcms6b3JnPgogICAgICAgIDxtYXJrOmFkZHI+CiAgICAgICAgICA8bWFyazpzdHJlZXQ+MTMwNSBCcmlnaHQgQXZlbnVlPC9tYXJrOnN0cmVldD4KICAgICAgICAgIDxtYXJrOmNpdHk+QXJjYWRpYTwvbWFyazpjaXR5PgogICAgICAgICAgPG1hcms6c3A+Q0E8L21hcms6c3A+CiAgICAgICAgICA8bWFyazpwYz45MDAyODwvbWFyazpwYz4KICAgICAgICAgIDxtYXJrOmNjPlVTPC9tYXJrOmNjPgogICAgICAgIDwvbWFyazphZGRyPgogICAgICA8L21hcms6aG9sZGVyPgogICAgICA8bWFyazpjb250YWN0IHR5cGU9ImFnZW50Ij4KICAgICAgICA8bWFyazpuYW1lPlRvbnkgSG9sbGFuZDwvbWFyazpuYW1lPgogICAgICAgIDxtYXJrOm9yZz5BZyBjb3Jwb3JhdGlvbjwvbWFyazpvcmc+CiAgICAgICAgPG1hcms6YWRkcj4KICAgICAgICAgIDxtYXJrOnN0cmVldD4xMzA1IEJyaWdodCBBdmVudWU8L21hcms6c3RyZWV0PgogICAgICAgICAgPG1hcms6Y2l0eT5BcmNhZGlhPC9tYXJrOmNpdHk+CiAgICAgICAgICA8bWFyazpzcD5DQTwvbWFyazpzcD4KICAgICAgICAgIDxtYXJrOnBjPjkwMDI4PC9tYXJrOnBjPgogICAgICAgICAgPG1hcms6Y2M+VVM8L21hcms6Y2M+CiAgICAgICAgPC9tYXJrOmFkZHI+CiAgICAgICAgPG1hcms6dm9pY2U+KzEuMjAyNTU2MjMwMjwvbWFyazp2b2ljZT4KICAgICAgICA8bWFyazpmYXg+KzEuMjAyNTU2MjMwMTwvbWFyazpmYXg+CiAgICAgICAgPG1hcms6ZW1haWw+aW5mb0BhZ2NvcnBvcmF0aW9uLmNvbTwvbWFyazplbWFpbD4KICAgICAgPC9tYXJrOmNvbnRhY3Q+CiAgICAgIDxtYXJrOmxhYmVsPnRlc3RhbmR2YWxpZGF0ZTwvbWFyazpsYWJlbD4KICAgICAgPG1hcms6bGFiZWw+dGVzdC0tLXZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0YW5kLXZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LXZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LWFuZHZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LS12YWxpZGF0ZTwvbWFyazpsYWJlbD4KICAgICAgPG1hcms6bGFiZWw+dGVzdHZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LWFuZC12YWxpZGF0ZTwvbWFyazpsYWJlbD4KICAgICAgPG1hcms6Z29vZHNBbmRTZXJ2aWNlcz5NdXNpY2FsIGluc3RydW1lbnRzPC9tYXJrOmdvb2RzQW5kU2VydmljZXM+CiAgICAgIDxtYXJrOnJlZk51bT4xMjM0PC9tYXJrOnJlZk51bT4KICAgICAgPG1hcms6cHJvRGF0ZT4yMDEyLTEyLTMxVDIzOjAwOjAwLjAwMFo8L21hcms6cHJvRGF0ZT4KICAgICAgPG1hcms6Y2M+VVM8L21hcms6Y2M+CiAgICAgIDxtYXJrOmNvdXJ0TmFtZT5Ib3ZlPC9tYXJrOmNvdXJ0TmFtZT4KICAgIDwvbWFyazpjb3VydD4KICA8L21hcms6bWFyaz4KPGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgSWQ9Il9mZDBmMTM0Ni03MTM4LTRiMGMtODRkNy0yZTdlYmY2YTExNmMiPjxkczpTaWduZWRJbmZvPjxkczpDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PGRzOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI3JzYS1zaGEyNTYiLz48ZHM6UmVmZXJlbmNlIFVSST0iI18zOGFjNTg2ZC05OTg5LTQ4MTctYjcwOC1kOGU4MzQ0NzZkOTUiPjxkczpUcmFuc2Zvcm1zPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZW52ZWxvcGVkLXNpZ25hdHVyZSIvPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz48L2RzOlRyYW5zZm9ybXM+PGRzOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI3NoYTI1NiIvPjxkczpEaWdlc3RWYWx1ZT55WDRLTWgrUDJ2OVUxNnh0eTl2ZGU5S0JTZmZFTjRHbTVVa2tLblI5cDdZPTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PGRzOlJlZmVyZW5jZSBVUkk9IiNfYjg5MjI1NWItMWJjOC00MTdiLWE0NGYtZWE5OGJjMzQ5OWE0Ij48ZHM6VHJhbnNmb3Jtcz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PC9kczpUcmFuc2Zvcm1zPjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNzaGEyNTYiLz48ZHM6RGlnZXN0VmFsdWU+dDNuNkFBTHdiaUhNbGRyZkpEQjNYQ3FkSlFzOEhjeU5pK1lXT3ZoV1krdz08L2RzOkRpZ2VzdFZhbHVlPjwvZHM6UmVmZXJlbmNlPjwvZHM6U2lnbmVkSW5mbz48ZHM6U2lnbmF0dXJlVmFsdWUgSWQ9Il82OWQzMDRlNC04NzlmLTRmNzEtYmMxMi02ZjJhZDlmOTM5OGYiPmJSVFIzTzUxM0dnTkExS2pxb0g0VXE3cUlhN2NJaTljaXZmZmFyVmE0VVQyVEUzdzEzc2xsUDFXbkdYYjcyYUw0dXhkbDFUaTZZbFoKVnVjSC92ZU5zUnlWZFZwSFF0eEJNTDFLU0tZbXc3ZjdPNnVsYWtrYnFrTkdYVmFZdEVsa1dBZnZFSDBsNURkNkFZT0k2UGN5SzBCWgo2VEl3cWZhQ1luVk5DdTFpdDIzMm9EREtiWU9RNk02YnhmU3BvVFYvaTVVdEVyak0vZWFFanp4MXFxZzlFZmxOcm1obmRtZW42Q2JYCjVrNmZ4Y1o0V2NtWkM4V0Ruc0t0VWVjaGtmbko4L0Jwc2ppM1Foekg4YzFiL0RqTmR5UFFyOGlndXBqR2dlU0JmMHhRRUtoK3pRT2oKYTNvMEhRWjZ1UlUvejdWN2RoNU9qUEhmV2lLc0pqRjVwc2ppRlE9PTwvZHM6U2lnbmF0dXJlVmFsdWU+PGRzOktleUluZm8gSWQ9Il9iODkyMjU1Yi0xYmM4LTQxN2ItYTQ0Zi1lYTk4YmMzNDk5YTQiPjxkczpYNTA5RGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSUZMekNDQkJlZ0F3SUJBZ0lnTHJBYmV2b2FlNTJ5M2Y2QzJ0QjBTbjNwN1hKbTBUMDJGb2d4S0NmTmhYb3dEUVlKS29aSWh2Y04KQVFFTEJRQXdmREVMTUFrR0ExVUVCaE1DVlZNeFBEQTZCZ05WQkFvVE0wbHVkR1Z5Ym1WMElFTnZjbkJ2Y21GMGFXOXVJR1p2Y2lCQgpjM05wWjI1bFpDQk9ZVzFsY3lCaGJtUWdUblZ0WW1WeWN6RXZNQzBHQTFVRUF4TW1TVU5CVGs0Z1ZISmhaR1Z0WVhKcklFTnNaV0Z5CmFXNW5hRzkxYzJVZ1VHbHNiM1FnUTBFd0hoY05NVE13TmpJMk1EQXdNREF3V2hjTk1UZ3dOakkxTWpNMU9UVTVXakNCanpFTE1Ba0cKQTFVRUJoTUNRa1V4SURBZUJnTlZCQWdURjBKeWRYTnpaV3h6TFVOaGNHbDBZV3dnVW1WbmFXOXVNUkV3RHdZRFZRUUhFd2hDY25WegpjMlZzY3pFUk1BOEdBMVVFQ2hNSVJHVnNiMmwwZEdVeE9EQTJCZ05WQkFNVEwwbERRVTVPSUZSTlEwZ2dRWFYwYUc5eWFYcGxaQ0JVCmNtRmtaVzFoY21zZ1VHbHNiM1FnVm1Gc2FXUmhkRzl5TUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUEKeGxwM0twWUhYM1d5QXNGaFNrM0x3V2ZuR2x4blVERnFGWkEzVW91TVlqL1hpZ2JNa05lRVhJamxrUk9LVDRPUEdmUngvTEF5UmxRUQpqQ012NHFoYmtjWDFwN2FyNjNmbHE0U1pOVmNsMTVsN2gwdVQ1OEZ6U2ZubHowdTVya0hmSkltRDQzK21hUC84Z3YzNkZSMjdqVzhSCjl3WTRoaytXczRJQjBpRlNkOFNYdjFLcjh3L0ptTVFTRGtpdUcrUmZJaXVid1EvZnk3RWtqNVFXaFBadyttTXhOS25IVUx5M3hZejIKTHdWZmZ0andVdWVhY3ZxTlJDa01YbENsT0FEcWZUOG9TWm9lRFhlaEh2bFBzTENlbUdCb1RLdXJza0lTNjlGMHlQRUg1Z3plMEgrZgo4RlJPc0lvS1NzVlEzNEI0Uy9qb0U2N25wc0pQVGRLc05QSlR5UUlEQVFBQm80SUJoekNDQVlNd0RBWURWUjBUQVFIL0JBSXdBREFkCkJnTlZIUTRFRmdRVW9GcFk3NnA1eW9ORFJHdFFwelZ1UjgxVVdRMHdnY1lHQTFVZEl3U0J2akNCdTRBVXc2MCtwdFlSQUVXQVhEcFgKU29wdDNERU5ubkdoZ1lDa2ZqQjhNUXN3Q1FZRFZRUUdFd0pWVXpFOE1Eb0dBMVVFQ2hNelNXNTBaWEp1WlhRZ1EyOXljRzl5WVhScApiMjRnWm05eUlFRnpjMmxuYm1Wa0lFNWhiV1Z6SUdGdVpDQk9kVzFpWlhKek1TOHdMUVlEVlFRREV5WkpRMEZPVGlCVWNtRmtaVzFoCmNtc2dRMnhsWVhKcGJtZG9iM1Z6WlNCUWFXeHZkQ0JEUVlJZ0xyQWJldm9hZTUyeTNmNkMydEIwU24zcDdYSm0wVDAyRm9neEtDZk4KaFhrd0RnWURWUjBQQVFIL0JBUURBZ2VBTURRR0ExVWRId1F0TUNzd0thQW5vQ1dHSTJoMGRIQTZMeTlqY213dWFXTmhibTR1YjNKbgpMM1J0WTJoZmNHbHNiM1F1WTNKc01FVUdBMVVkSUFRK01Ed3dPZ1lES2dNRU1ETXdNUVlJS3dZQkJRVUhBZ0VXSldoMGRIQTZMeTkzCmQzY3VhV05oYm00dWIzSm5MM0JwYkc5MFgzSmxjRzl6YVhSdmNua3dEUVlKS29aSWh2Y05BUUVMQlFBRGdnRUJBSWVEWVlKcjYwVzMKeTlRcyszelJWSTlrZWtLb201dmtIT2FsQjN3SGFaSWFBRllwSTk4dFkwYVZOOWFHT04wdjZXUUYrbnZ6MUtSWlFiQXowMUJYdGFSSgo0bVBrYXJoaHVMbjlOa0J4cDhIUjVxY2MrS0g3Z3Y2ci9jMGlHM2JDTkorUVNyN1FmKzVNbE1vNnpMNVVkZFUvVDJqaWJNWENqL2YyCjFRdzN4OVFnb3lYTEZKOW96YUxnUTlSTWtMbE9temtDQWlYTjVBYjQzYUo5ZjdOMmdFMk5uUmpOS21tQzlBQlEwVFJ3RUtWTGhWbDEKVUdxQ0hKM0FsQlhXSVhONXNqUFFjRC8rbkhlRVhNeFl2bEF5cXhYb0QzTVd0UVZqN2oyb3FsYWtPQk1nRzgrcTJxWWxtQnRzNEZOaQp3NzQ4SWw1ODZIS0JScXhIdFpkUktXMlZxYVE9PC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9kczpTaWduYXR1cmU+PC9zbWQ6c2lnbmVkTWFyaz4= - - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_create_sunrise_no_matching_marks.xml b/javatests/google/registry/flows/domain/testdata/domain_create_sunrise_no_matching_marks.xml deleted file mode 100644 index 6021f5887..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_create_sunrise_no_matching_marks.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - foo-validate.tld - - ns1.example.net - ns2.example.net - - jd1234 - sh8013 - sh8013 - - 2fooBAR - - - - - - sunrise - -PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHNtZDpzaWduZWRNYXJrIHhtbG5zOnNtZD0idXJuOmlldGY6cGFyYW1zOnhtbDpuczpzaWduZWRNYXJrLTEuMCIgaWQ9Il8zOGFjNTg2ZC05OTg5LTQ4MTctYjcwOC1kOGU4MzQ0NzZkOTUiPgogIDxzbWQ6aWQ+MDAwMDAwMTc2MTM3NjA0Mjc1OTEzNi02NTUzNTwvc21kOmlkPgogIDxzbWQ6aXNzdWVySW5mbyBpc3N1ZXJJRD0iNjU1MzUiPgogICAgPHNtZDpvcmc+SUNBTk4gVE1DSCBURVNUSU5HIFRNVjwvc21kOm9yZz4KICAgIDxzbWQ6ZW1haWw+bm90YXZhaWxhYmxlQGV4YW1wbGUuY29tPC9zbWQ6ZW1haWw+CiAgICA8c21kOnVybD5odHRwOi8vd3d3LmV4YW1wbGUuY29tPC9zbWQ6dXJsPgogICAgPHNtZDp2b2ljZT4rMzIuMDAwMDAwPC9zbWQ6dm9pY2U+CiAgPC9zbWQ6aXNzdWVySW5mbz4KICA8c21kOm5vdEJlZm9yZT4yMDEzLTA4LTA5VDEwOjA1OjU5LjEzNlo8L3NtZDpub3RCZWZvcmU+CiAgPHNtZDpub3RBZnRlcj4yMDE3LTA3LTIzVDIyOjAwOjAwLjAwMFo8L3NtZDpub3RBZnRlcj4KICA8bWFyazptYXJrIHhtbG5zOm1hcms9InVybjppZXRmOnBhcmFtczp4bWw6bnM6bWFyay0xLjAiPgogICAgPG1hcms6Y291cnQ+CiAgICAgIDxtYXJrOmlkPjAwMDUyMDEzNzM0NjkxNjkxMzczNDY5MTY5LTY1NTM1PC9tYXJrOmlkPgogICAgICA8bWFyazptYXJrTmFtZT5UZXN0ICZhbXA7IFZhbGlkYXRlPC9tYXJrOm1hcmtOYW1lPgogICAgICA8bWFyazpob2xkZXIgZW50aXRsZW1lbnQ9Im93bmVyIj4KICAgICAgICA8bWFyazpvcmc+QWcgY29ycG9yYXRpb248L21hcms6b3JnPgogICAgICAgIDxtYXJrOmFkZHI+CiAgICAgICAgICA8bWFyazpzdHJlZXQ+MTMwNSBCcmlnaHQgQXZlbnVlPC9tYXJrOnN0cmVldD4KICAgICAgICAgIDxtYXJrOmNpdHk+QXJjYWRpYTwvbWFyazpjaXR5PgogICAgICAgICAgPG1hcms6c3A+Q0E8L21hcms6c3A+CiAgICAgICAgICA8bWFyazpwYz45MDAyODwvbWFyazpwYz4KICAgICAgICAgIDxtYXJrOmNjPlVTPC9tYXJrOmNjPgogICAgICAgIDwvbWFyazphZGRyPgogICAgICA8L21hcms6aG9sZGVyPgogICAgICA8bWFyazpjb250YWN0IHR5cGU9ImFnZW50Ij4KICAgICAgICA8bWFyazpuYW1lPlRvbnkgSG9sbGFuZDwvbWFyazpuYW1lPgogICAgICAgIDxtYXJrOm9yZz5BZyBjb3Jwb3JhdGlvbjwvbWFyazpvcmc+CiAgICAgICAgPG1hcms6YWRkcj4KICAgICAgICAgIDxtYXJrOnN0cmVldD4xMzA1IEJyaWdodCBBdmVudWU8L21hcms6c3RyZWV0PgogICAgICAgICAgPG1hcms6Y2l0eT5BcmNhZGlhPC9tYXJrOmNpdHk+CiAgICAgICAgICA8bWFyazpzcD5DQTwvbWFyazpzcD4KICAgICAgICAgIDxtYXJrOnBjPjkwMDI4PC9tYXJrOnBjPgogICAgICAgICAgPG1hcms6Y2M+VVM8L21hcms6Y2M+CiAgICAgICAgPC9tYXJrOmFkZHI+CiAgICAgICAgPG1hcms6dm9pY2U+KzEuMjAyNTU2MjMwMjwvbWFyazp2b2ljZT4KICAgICAgICA8bWFyazpmYXg+KzEuMjAyNTU2MjMwMTwvbWFyazpmYXg+CiAgICAgICAgPG1hcms6ZW1haWw+aW5mb0BhZ2NvcnBvcmF0aW9uLmNvbTwvbWFyazplbWFpbD4KICAgICAgPC9tYXJrOmNvbnRhY3Q+CiAgICAgIDxtYXJrOmxhYmVsPnRlc3RhbmR2YWxpZGF0ZTwvbWFyazpsYWJlbD4KICAgICAgPG1hcms6bGFiZWw+dGVzdC0tLXZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0YW5kLXZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LXZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LWFuZHZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LS12YWxpZGF0ZTwvbWFyazpsYWJlbD4KICAgICAgPG1hcms6bGFiZWw+dGVzdHZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LWFuZC12YWxpZGF0ZTwvbWFyazpsYWJlbD4KICAgICAgPG1hcms6Z29vZHNBbmRTZXJ2aWNlcz5NdXNpY2FsIGluc3RydW1lbnRzPC9tYXJrOmdvb2RzQW5kU2VydmljZXM+CiAgICAgIDxtYXJrOnJlZk51bT4xMjM0PC9tYXJrOnJlZk51bT4KICAgICAgPG1hcms6cHJvRGF0ZT4yMDEyLTEyLTMxVDIzOjAwOjAwLjAwMFo8L21hcms6cHJvRGF0ZT4KICAgICAgPG1hcms6Y2M+VVM8L21hcms6Y2M+CiAgICAgIDxtYXJrOmNvdXJ0TmFtZT5Ib3ZlPC9tYXJrOmNvdXJ0TmFtZT4KICAgIDwvbWFyazpjb3VydD4KICA8L21hcms6bWFyaz4KPGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgSWQ9Il9mZDBmMTM0Ni03MTM4LTRiMGMtODRkNy0yZTdlYmY2YTExNmMiPjxkczpTaWduZWRJbmZvPjxkczpDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PGRzOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI3JzYS1zaGEyNTYiLz48ZHM6UmVmZXJlbmNlIFVSST0iI18zOGFjNTg2ZC05OTg5LTQ4MTctYjcwOC1kOGU4MzQ0NzZkOTUiPjxkczpUcmFuc2Zvcm1zPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZW52ZWxvcGVkLXNpZ25hdHVyZSIvPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz48L2RzOlRyYW5zZm9ybXM+PGRzOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI3NoYTI1NiIvPjxkczpEaWdlc3RWYWx1ZT55WDRLTWgrUDJ2OVUxNnh0eTl2ZGU5S0JTZmZFTjRHbTVVa2tLblI5cDdZPTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PGRzOlJlZmVyZW5jZSBVUkk9IiNfYjg5MjI1NWItMWJjOC00MTdiLWE0NGYtZWE5OGJjMzQ5OWE0Ij48ZHM6VHJhbnNmb3Jtcz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PC9kczpUcmFuc2Zvcm1zPjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNzaGEyNTYiLz48ZHM6RGlnZXN0VmFsdWU+dDNuNkFBTHdiaUhNbGRyZkpEQjNYQ3FkSlFzOEhjeU5pK1lXT3ZoV1krdz08L2RzOkRpZ2VzdFZhbHVlPjwvZHM6UmVmZXJlbmNlPjwvZHM6U2lnbmVkSW5mbz48ZHM6U2lnbmF0dXJlVmFsdWUgSWQ9Il82OWQzMDRlNC04NzlmLTRmNzEtYmMxMi02ZjJhZDlmOTM5OGYiPmJSVFIzTzUxM0dnTkExS2pxb0g0VXE3cUlhN2NJaTljaXZmZmFyVmE0VVQyVEUzdzEzc2xsUDFXbkdYYjcyYUw0dXhkbDFUaTZZbFoKVnVjSC92ZU5zUnlWZFZwSFF0eEJNTDFLU0tZbXc3ZjdPNnVsYWtrYnFrTkdYVmFZdEVsa1dBZnZFSDBsNURkNkFZT0k2UGN5SzBCWgo2VEl3cWZhQ1luVk5DdTFpdDIzMm9EREtiWU9RNk02YnhmU3BvVFYvaTVVdEVyak0vZWFFanp4MXFxZzlFZmxOcm1obmRtZW42Q2JYCjVrNmZ4Y1o0V2NtWkM4V0Ruc0t0VWVjaGtmbko4L0Jwc2ppM1Foekg4YzFiL0RqTmR5UFFyOGlndXBqR2dlU0JmMHhRRUtoK3pRT2oKYTNvMEhRWjZ1UlUvejdWN2RoNU9qUEhmV2lLc0pqRjVwc2ppRlE9PTwvZHM6U2lnbmF0dXJlVmFsdWU+PGRzOktleUluZm8gSWQ9Il9iODkyMjU1Yi0xYmM4LTQxN2ItYTQ0Zi1lYTk4YmMzNDk5YTQiPjxkczpYNTA5RGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSUZMekNDQkJlZ0F3SUJBZ0lnTHJBYmV2b2FlNTJ5M2Y2QzJ0QjBTbjNwN1hKbTBUMDJGb2d4S0NmTmhYb3dEUVlKS29aSWh2Y04KQVFFTEJRQXdmREVMTUFrR0ExVUVCaE1DVlZNeFBEQTZCZ05WQkFvVE0wbHVkR1Z5Ym1WMElFTnZjbkJ2Y21GMGFXOXVJR1p2Y2lCQgpjM05wWjI1bFpDQk9ZVzFsY3lCaGJtUWdUblZ0WW1WeWN6RXZNQzBHQTFVRUF4TW1TVU5CVGs0Z1ZISmhaR1Z0WVhKcklFTnNaV0Z5CmFXNW5hRzkxYzJVZ1VHbHNiM1FnUTBFd0hoY05NVE13TmpJMk1EQXdNREF3V2hjTk1UZ3dOakkxTWpNMU9UVTVXakNCanpFTE1Ba0cKQTFVRUJoTUNRa1V4SURBZUJnTlZCQWdURjBKeWRYTnpaV3h6TFVOaGNHbDBZV3dnVW1WbmFXOXVNUkV3RHdZRFZRUUhFd2hDY25WegpjMlZzY3pFUk1BOEdBMVVFQ2hNSVJHVnNiMmwwZEdVeE9EQTJCZ05WQkFNVEwwbERRVTVPSUZSTlEwZ2dRWFYwYUc5eWFYcGxaQ0JVCmNtRmtaVzFoY21zZ1VHbHNiM1FnVm1Gc2FXUmhkRzl5TUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUEKeGxwM0twWUhYM1d5QXNGaFNrM0x3V2ZuR2x4blVERnFGWkEzVW91TVlqL1hpZ2JNa05lRVhJamxrUk9LVDRPUEdmUngvTEF5UmxRUQpqQ012NHFoYmtjWDFwN2FyNjNmbHE0U1pOVmNsMTVsN2gwdVQ1OEZ6U2ZubHowdTVya0hmSkltRDQzK21hUC84Z3YzNkZSMjdqVzhSCjl3WTRoaytXczRJQjBpRlNkOFNYdjFLcjh3L0ptTVFTRGtpdUcrUmZJaXVid1EvZnk3RWtqNVFXaFBadyttTXhOS25IVUx5M3hZejIKTHdWZmZ0andVdWVhY3ZxTlJDa01YbENsT0FEcWZUOG9TWm9lRFhlaEh2bFBzTENlbUdCb1RLdXJza0lTNjlGMHlQRUg1Z3plMEgrZgo4RlJPc0lvS1NzVlEzNEI0Uy9qb0U2N25wc0pQVGRLc05QSlR5UUlEQVFBQm80SUJoekNDQVlNd0RBWURWUjBUQVFIL0JBSXdBREFkCkJnTlZIUTRFRmdRVW9GcFk3NnA1eW9ORFJHdFFwelZ1UjgxVVdRMHdnY1lHQTFVZEl3U0J2akNCdTRBVXc2MCtwdFlSQUVXQVhEcFgKU29wdDNERU5ubkdoZ1lDa2ZqQjhNUXN3Q1FZRFZRUUdFd0pWVXpFOE1Eb0dBMVVFQ2hNelNXNTBaWEp1WlhRZ1EyOXljRzl5WVhScApiMjRnWm05eUlFRnpjMmxuYm1Wa0lFNWhiV1Z6SUdGdVpDQk9kVzFpWlhKek1TOHdMUVlEVlFRREV5WkpRMEZPVGlCVWNtRmtaVzFoCmNtc2dRMnhsWVhKcGJtZG9iM1Z6WlNCUWFXeHZkQ0JEUVlJZ0xyQWJldm9hZTUyeTNmNkMydEIwU24zcDdYSm0wVDAyRm9neEtDZk4KaFhrd0RnWURWUjBQQVFIL0JBUURBZ2VBTURRR0ExVWRId1F0TUNzd0thQW5vQ1dHSTJoMGRIQTZMeTlqY213dWFXTmhibTR1YjNKbgpMM1J0WTJoZmNHbHNiM1F1WTNKc01FVUdBMVVkSUFRK01Ed3dPZ1lES2dNRU1ETXdNUVlJS3dZQkJRVUhBZ0VXSldoMGRIQTZMeTkzCmQzY3VhV05oYm00dWIzSm5MM0JwYkc5MFgzSmxjRzl6YVhSdmNua3dEUVlKS29aSWh2Y05BUUVMQlFBRGdnRUJBSWVEWVlKcjYwVzMKeTlRcyszelJWSTlrZWtLb201dmtIT2FsQjN3SGFaSWFBRllwSTk4dFkwYVZOOWFHT04wdjZXUUYrbnZ6MUtSWlFiQXowMUJYdGFSSgo0bVBrYXJoaHVMbjlOa0J4cDhIUjVxY2MrS0g3Z3Y2ci9jMGlHM2JDTkorUVNyN1FmKzVNbE1vNnpMNVVkZFUvVDJqaWJNWENqL2YyCjFRdzN4OVFnb3lYTEZKOW96YUxnUTlSTWtMbE9temtDQWlYTjVBYjQzYUo5ZjdOMmdFMk5uUmpOS21tQzlBQlEwVFJ3RUtWTGhWbDEKVUdxQ0hKM0FsQlhXSVhONXNqUFFjRC8rbkhlRVhNeFl2bEF5cXhYb0QzTVd0UVZqN2oyb3FsYWtPQk1nRzgrcTJxWWxtQnRzNEZOaQp3NzQ4SWw1ODZIS0JScXhIdFpkUktXMlZxYVE9PC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9kczpTaWduYXR1cmU+PC9zbWQ6c2lnbmVkTWFyaz4= - - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_create_sunrise_signed_mark.xml b/javatests/google/registry/flows/domain/testdata/domain_create_sunrise_signed_mark.xml deleted file mode 100644 index 7f165c213..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_create_sunrise_signed_mark.xml +++ /dev/null @@ -1,137 +0,0 @@ - - - - - - exampleone.tld - - ns1.example.net - ns2.example.net - - jd1234 - sh8013 - sh8013 - - 2fooBAR - - - - - - sunrise - - 1-2 - - Example Inc. - support@example.tld - http://www.example.tld - +1.7035555555 - - 2009-08-16T09:00:00.0Z - 2010-08-16T09:00:00.0Z - - - 1234-2 - Example One - - Example Inc. - - 123 Example Dr. - Suite 100 - Reston - VA - 20190 - US - - - US - 35 - 36 - example-one - exampleone - Dirigendas et eiusmodi featuring infringo in airfare et cartam servicia. - 234235 - 2009-08-16T09:00:00.0Z - 2015-08-16T09:00:00.0Z - - - - - - - - - - - - - miF4M2aTd1Y3tKOzJtiyl2VpzAnVPnV1Hq7Zax+yzrA= - - - - - MELpHTWEVfG1JcsG1/a//o54OnlJ5A864+X5JwfqgGBBeZSzGHNzwzTKFzIyyyfn - lGxVwNMoBV5aSvkF7oEKMNVzfcl/P0czNQZ/LJ83p3Ol27/iUNsqgCaGf9Zupw+M - XT4Q2lOrIw+qSx5g7q9T83siMLvkD5uEYlU5dPqgsObLTW8/doTQrA14RcxgY4kG - a4+t5B1cT+5VaghTOPb8uUSEDKjnOsGdy8p24wgyK9n8h0CTSS2ZQ6Zq/RmQeT7D - sbceUHheQ+mkQWIljpMQqsiBjw5XXh4jkEgfAzrb6gkYEF+X8ReuPZuOYC4QjIET - yx8ifN4KE3GIbMXeF4LDsA== - - - - - - o/cwvXhbVYl0RDWWvoyeZpETVZVVcMCovUVNg/swWinuMgEWgVQFrz0xA04pEhXC - FVv4evbUpekJ5buqU1gmQyOsCKQlhOHTdPjvkC5upDqa51Flk0TMaMkIQjs7aUKC - mA4RG4tTTGK/EjR1ix8/D0gHYVRldy1YPrMP+ou75bOVnIos+HifrAtrIv4qEqwL - L4FTZAUpaCa2BmgXfy2CSRQbxD5Or1gcSa3vurh5sPMCNxqaXmIXmQipS+DuEBqM - M8tldaN7RYojUEKrGVsNk5i9y2/7sjn1zyyUPf7vL4GgDYqhJYWV61DnXgx/Jd6C - WxvsnDF6scscQzUTEl+hyw== - - - AQAB - - - - - - MIIESTCCAzGgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBiMQswCQYDVQQGEwJVUzEL - MAkGA1UECBMCQ0ExFDASBgNVBAcTC0xvcyBBbmdlbGVzMRMwEQYDVQQKEwpJQ0FO - TiBUTUNIMRswGQYDVQQDExJJQ0FOTiBUTUNIIFRFU1QgQ0EwHhcNMTMwMjA4MDAw - MDAwWhcNMTgwMjA3MjM1OTU5WjBsMQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0Ex - FDASBgNVBAcTC0xvcyBBbmdlbGVzMRcwFQYDVQQKEw5WYWxpZGF0b3IgVE1DSDEh - MB8GA1UEAxMYVmFsaWRhdG9yIFRNQ0ggVEVTVCBDRVJUMIIBIjANBgkqhkiG9w0B - AQEFAAOCAQ8AMIIBCgKCAQEAo/cwvXhbVYl0RDWWvoyeZpETVZVVcMCovUVNg/sw - WinuMgEWgVQFrz0xA04pEhXCFVv4evbUpekJ5buqU1gmQyOsCKQlhOHTdPjvkC5u - pDqa51Flk0TMaMkIQjs7aUKCmA4RG4tTTGK/EjR1ix8/D0gHYVRldy1YPrMP+ou7 - 5bOVnIos+HifrAtrIv4qEqwLL4FTZAUpaCa2BmgXfy2CSRQbxD5Or1gcSa3vurh5 - sPMCNxqaXmIXmQipS+DuEBqMM8tldaN7RYojUEKrGVsNk5i9y2/7sjn1zyyUPf7v - L4GgDYqhJYWV61DnXgx/Jd6CWxvsnDF6scscQzUTEl+hywIDAQABo4H/MIH8MAwG - A1UdEwEB/wQCMAAwHQYDVR0OBBYEFPZEcIQcD/Bj2IFz/LERuo2ADJviMIGMBgNV - HSMEgYQwgYGAFO0/7kEh3FuEKS+Q/kYHaD/W6wihoWakZDBiMQswCQYDVQQGEwJV - UzELMAkGA1UECBMCQ0ExFDASBgNVBAcTC0xvcyBBbmdlbGVzMRMwEQYDVQQKEwpJ - Q0FOTiBUTUNIMRswGQYDVQQDExJJQ0FOTiBUTUNIIFRFU1QgQ0GCAQEwDgYDVR0P - AQH/BAQDAgeAMC4GA1UdHwQnMCUwI6AhoB+GHWh0dHA6Ly9jcmwuaWNhbm4ub3Jn - L3RtY2guY3JsMA0GCSqGSIb3DQEBCwUAA4IBAQB2qSy7ui+43cebKUKwWPrzz9y/ - IkrMeJGKjo40n+9uekaw3DJ5EqiOf/qZ4pjBD++oR6BJCb6NQuQKwnoAz5lE4Ssu - y5+i93oT3HfyVc4gNMIoHm1PS19l7DBKrbwbzAea/0jKWVzrvmV7TBfjxD3AQo1R - bU5dBr6IjbdLFlnO5x0G0mrG7x5OUPuurihyiURpFDpwH8KAH1wMcCpXGXFRtGKk - wydgyVYAty7otkl/z3bZkCVT34gPvF70sR6+QxUy8u0LzF5A/beYaZpxSYG31amL - AdXitTWFipaIGea9lEGFM0L9+Bg7XzNn4nVLXokyEB3bgS4scG6QznX23FGk - - - - - - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_create_sunrise_signed_mark_and_notice.xml b/javatests/google/registry/flows/domain/testdata/domain_create_sunrise_signed_mark_and_notice.xml deleted file mode 100644 index 669683362..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_create_sunrise_signed_mark_and_notice.xml +++ /dev/null @@ -1,142 +0,0 @@ - - - - - - exampleone.tld - - ns1.example.net - ns2.example.net - - jd1234 - sh8013 - sh8013 - - 2fooBAR - - - - - - sunrise - - 1-2 - - Example Inc. - support@example.tld - http://www.example.tld - +1.7035555555 - - 2009-08-16T09:00:00.0Z - 2010-08-16T09:00:00.0Z - - - 1234-2 - Example One - - Example Inc. - - 123 Example Dr. - Suite 100 - Reston - VA - 20190 - US - - - US - 35 - 36 - example-one - exampleone - Dirigendas et eiusmodi featuring infringo in airfare et cartam servicia. - 234235 - 2009-08-16T09:00:00.0Z - 2015-08-16T09:00:00.0Z - - - - - - - - - - - - - miF4M2aTd1Y3tKOzJtiyl2VpzAnVPnV1Hq7Zax+yzrA= - - - - - MELpHTWEVfG1JcsG1/a//o54OnlJ5A864+X5JwfqgGBBeZSzGHNzwzTKFzIyyyfn - lGxVwNMoBV5aSvkF7oEKMNVzfcl/P0czNQZ/LJ83p3Ol27/iUNsqgCaGf9Zupw+M - XT4Q2lOrIw+qSx5g7q9T83siMLvkD5uEYlU5dPqgsObLTW8/doTQrA14RcxgY4kG - a4+t5B1cT+5VaghTOPb8uUSEDKjnOsGdy8p24wgyK9n8h0CTSS2ZQ6Zq/RmQeT7D - sbceUHheQ+mkQWIljpMQqsiBjw5XXh4jkEgfAzrb6gkYEF+X8ReuPZuOYC4QjIET - yx8ifN4KE3GIbMXeF4LDsA== - - - - - - o/cwvXhbVYl0RDWWvoyeZpETVZVVcMCovUVNg/swWinuMgEWgVQFrz0xA04pEhXC - FVv4evbUpekJ5buqU1gmQyOsCKQlhOHTdPjvkC5upDqa51Flk0TMaMkIQjs7aUKC - mA4RG4tTTGK/EjR1ix8/D0gHYVRldy1YPrMP+ou75bOVnIos+HifrAtrIv4qEqwL - L4FTZAUpaCa2BmgXfy2CSRQbxD5Or1gcSa3vurh5sPMCNxqaXmIXmQipS+DuEBqM - M8tldaN7RYojUEKrGVsNk5i9y2/7sjn1zyyUPf7vL4GgDYqhJYWV61DnXgx/Jd6C - WxvsnDF6scscQzUTEl+hyw== - - - AQAB - - - - - - MIIESTCCAzGgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBiMQswCQYDVQQGEwJVUzEL - MAkGA1UECBMCQ0ExFDASBgNVBAcTC0xvcyBBbmdlbGVzMRMwEQYDVQQKEwpJQ0FO - TiBUTUNIMRswGQYDVQQDExJJQ0FOTiBUTUNIIFRFU1QgQ0EwHhcNMTMwMjA4MDAw - MDAwWhcNMTgwMjA3MjM1OTU5WjBsMQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0Ex - FDASBgNVBAcTC0xvcyBBbmdlbGVzMRcwFQYDVQQKEw5WYWxpZGF0b3IgVE1DSDEh - MB8GA1UEAxMYVmFsaWRhdG9yIFRNQ0ggVEVTVCBDRVJUMIIBIjANBgkqhkiG9w0B - AQEFAAOCAQ8AMIIBCgKCAQEAo/cwvXhbVYl0RDWWvoyeZpETVZVVcMCovUVNg/sw - WinuMgEWgVQFrz0xA04pEhXCFVv4evbUpekJ5buqU1gmQyOsCKQlhOHTdPjvkC5u - pDqa51Flk0TMaMkIQjs7aUKCmA4RG4tTTGK/EjR1ix8/D0gHYVRldy1YPrMP+ou7 - 5bOVnIos+HifrAtrIv4qEqwLL4FTZAUpaCa2BmgXfy2CSRQbxD5Or1gcSa3vurh5 - sPMCNxqaXmIXmQipS+DuEBqMM8tldaN7RYojUEKrGVsNk5i9y2/7sjn1zyyUPf7v - L4GgDYqhJYWV61DnXgx/Jd6CWxvsnDF6scscQzUTEl+hywIDAQABo4H/MIH8MAwG - A1UdEwEB/wQCMAAwHQYDVR0OBBYEFPZEcIQcD/Bj2IFz/LERuo2ADJviMIGMBgNV - HSMEgYQwgYGAFO0/7kEh3FuEKS+Q/kYHaD/W6wihoWakZDBiMQswCQYDVQQGEwJV - UzELMAkGA1UECBMCQ0ExFDASBgNVBAcTC0xvcyBBbmdlbGVzMRMwEQYDVQQKEwpJ - Q0FOTiBUTUNIMRswGQYDVQQDExJJQ0FOTiBUTUNIIFRFU1QgQ0GCAQEwDgYDVR0P - AQH/BAQDAgeAMC4GA1UdHwQnMCUwI6AhoB+GHWh0dHA6Ly9jcmwuaWNhbm4ub3Jn - L3RtY2guY3JsMA0GCSqGSIb3DQEBCwUAA4IBAQB2qSy7ui+43cebKUKwWPrzz9y/ - IkrMeJGKjo40n+9uekaw3DJ5EqiOf/qZ4pjBD++oR6BJCb6NQuQKwnoAz5lE4Ssu - y5+i93oT3HfyVc4gNMIoHm1PS19l7DBKrbwbzAea/0jKWVzrvmV7TBfjxD3AQo1R - bU5dBr6IjbdLFlnO5x0G0mrG7x5OUPuurihyiURpFDpwH8KAH1wMcCpXGXFRtGKk - wydgyVYAty7otkl/z3bZkCVT34gPvF70sR6+QxUy8u0LzF5A/beYaZpxSYG31amL - AdXitTWFipaIGea9lEGFM0L9+Bg7XzNn4nVLXokyEB3bgS4scG6QznX23FGk - - - - - - - 49FD46E6C4B45C55D4AC - 2012-06-19T10:00:10.0Z - 2012-06-19T09:01:30.0Z - - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_create_sunrise_signed_mark_reserved.xml b/javatests/google/registry/flows/domain/testdata/domain_create_sunrise_signed_mark_reserved.xml deleted file mode 100644 index 1f19951ee..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_create_sunrise_signed_mark_reserved.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - testandvalidate.tld - - ns1.example.net - ns2.example.net - - jd1234 - sh8013 - sh8013 - - 2fooBAR - - - - - - sunrise - -PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHNtZDpzaWduZWRNYXJrIHhtbG5zOnNtZD0idXJuOmlldGY6cGFyYW1zOnhtbDpuczpzaWduZWRNYXJrLTEuMCIgaWQ9Il8zOGFjNTg2ZC05OTg5LTQ4MTctYjcwOC1kOGU4MzQ0NzZkOTUiPgogIDxzbWQ6aWQ+MDAwMDAwMTc2MTM3NjA0Mjc1OTEzNi02NTUzNTwvc21kOmlkPgogIDxzbWQ6aXNzdWVySW5mbyBpc3N1ZXJJRD0iNjU1MzUiPgogICAgPHNtZDpvcmc+SUNBTk4gVE1DSCBURVNUSU5HIFRNVjwvc21kOm9yZz4KICAgIDxzbWQ6ZW1haWw+bm90YXZhaWxhYmxlQGV4YW1wbGUuY29tPC9zbWQ6ZW1haWw+CiAgICA8c21kOnVybD5odHRwOi8vd3d3LmV4YW1wbGUuY29tPC9zbWQ6dXJsPgogICAgPHNtZDp2b2ljZT4rMzIuMDAwMDAwPC9zbWQ6dm9pY2U+CiAgPC9zbWQ6aXNzdWVySW5mbz4KICA8c21kOm5vdEJlZm9yZT4yMDEzLTA4LTA5VDEwOjA1OjU5LjEzNlo8L3NtZDpub3RCZWZvcmU+CiAgPHNtZDpub3RBZnRlcj4yMDE3LTA3LTIzVDIyOjAwOjAwLjAwMFo8L3NtZDpub3RBZnRlcj4KICA8bWFyazptYXJrIHhtbG5zOm1hcms9InVybjppZXRmOnBhcmFtczp4bWw6bnM6bWFyay0xLjAiPgogICAgPG1hcms6Y291cnQ+CiAgICAgIDxtYXJrOmlkPjAwMDUyMDEzNzM0NjkxNjkxMzczNDY5MTY5LTY1NTM1PC9tYXJrOmlkPgogICAgICA8bWFyazptYXJrTmFtZT5UZXN0ICZhbXA7IFZhbGlkYXRlPC9tYXJrOm1hcmtOYW1lPgogICAgICA8bWFyazpob2xkZXIgZW50aXRsZW1lbnQ9Im93bmVyIj4KICAgICAgICA8bWFyazpvcmc+QWcgY29ycG9yYXRpb248L21hcms6b3JnPgogICAgICAgIDxtYXJrOmFkZHI+CiAgICAgICAgICA8bWFyazpzdHJlZXQ+MTMwNSBCcmlnaHQgQXZlbnVlPC9tYXJrOnN0cmVldD4KICAgICAgICAgIDxtYXJrOmNpdHk+QXJjYWRpYTwvbWFyazpjaXR5PgogICAgICAgICAgPG1hcms6c3A+Q0E8L21hcms6c3A+CiAgICAgICAgICA8bWFyazpwYz45MDAyODwvbWFyazpwYz4KICAgICAgICAgIDxtYXJrOmNjPlVTPC9tYXJrOmNjPgogICAgICAgIDwvbWFyazphZGRyPgogICAgICA8L21hcms6aG9sZGVyPgogICAgICA8bWFyazpjb250YWN0IHR5cGU9ImFnZW50Ij4KICAgICAgICA8bWFyazpuYW1lPlRvbnkgSG9sbGFuZDwvbWFyazpuYW1lPgogICAgICAgIDxtYXJrOm9yZz5BZyBjb3Jwb3JhdGlvbjwvbWFyazpvcmc+CiAgICAgICAgPG1hcms6YWRkcj4KICAgICAgICAgIDxtYXJrOnN0cmVldD4xMzA1IEJyaWdodCBBdmVudWU8L21hcms6c3RyZWV0PgogICAgICAgICAgPG1hcms6Y2l0eT5BcmNhZGlhPC9tYXJrOmNpdHk+CiAgICAgICAgICA8bWFyazpzcD5DQTwvbWFyazpzcD4KICAgICAgICAgIDxtYXJrOnBjPjkwMDI4PC9tYXJrOnBjPgogICAgICAgICAgPG1hcms6Y2M+VVM8L21hcms6Y2M+CiAgICAgICAgPC9tYXJrOmFkZHI+CiAgICAgICAgPG1hcms6dm9pY2U+KzEuMjAyNTU2MjMwMjwvbWFyazp2b2ljZT4KICAgICAgICA8bWFyazpmYXg+KzEuMjAyNTU2MjMwMTwvbWFyazpmYXg+CiAgICAgICAgPG1hcms6ZW1haWw+aW5mb0BhZ2NvcnBvcmF0aW9uLmNvbTwvbWFyazplbWFpbD4KICAgICAgPC9tYXJrOmNvbnRhY3Q+CiAgICAgIDxtYXJrOmxhYmVsPnRlc3RhbmR2YWxpZGF0ZTwvbWFyazpsYWJlbD4KICAgICAgPG1hcms6bGFiZWw+dGVzdC0tLXZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0YW5kLXZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LXZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LWFuZHZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LS12YWxpZGF0ZTwvbWFyazpsYWJlbD4KICAgICAgPG1hcms6bGFiZWw+dGVzdHZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LWFuZC12YWxpZGF0ZTwvbWFyazpsYWJlbD4KICAgICAgPG1hcms6Z29vZHNBbmRTZXJ2aWNlcz5NdXNpY2FsIGluc3RydW1lbnRzPC9tYXJrOmdvb2RzQW5kU2VydmljZXM+CiAgICAgIDxtYXJrOnJlZk51bT4xMjM0PC9tYXJrOnJlZk51bT4KICAgICAgPG1hcms6cHJvRGF0ZT4yMDEyLTEyLTMxVDIzOjAwOjAwLjAwMFo8L21hcms6cHJvRGF0ZT4KICAgICAgPG1hcms6Y2M+VVM8L21hcms6Y2M+CiAgICAgIDxtYXJrOmNvdXJ0TmFtZT5Ib3ZlPC9tYXJrOmNvdXJ0TmFtZT4KICAgIDwvbWFyazpjb3VydD4KICA8L21hcms6bWFyaz4KPGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgSWQ9Il9mZDBmMTM0Ni03MTM4LTRiMGMtODRkNy0yZTdlYmY2YTExNmMiPjxkczpTaWduZWRJbmZvPjxkczpDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PGRzOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI3JzYS1zaGEyNTYiLz48ZHM6UmVmZXJlbmNlIFVSST0iI18zOGFjNTg2ZC05OTg5LTQ4MTctYjcwOC1kOGU4MzQ0NzZkOTUiPjxkczpUcmFuc2Zvcm1zPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZW52ZWxvcGVkLXNpZ25hdHVyZSIvPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz48L2RzOlRyYW5zZm9ybXM+PGRzOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI3NoYTI1NiIvPjxkczpEaWdlc3RWYWx1ZT55WDRLTWgrUDJ2OVUxNnh0eTl2ZGU5S0JTZmZFTjRHbTVVa2tLblI5cDdZPTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PGRzOlJlZmVyZW5jZSBVUkk9IiNfYjg5MjI1NWItMWJjOC00MTdiLWE0NGYtZWE5OGJjMzQ5OWE0Ij48ZHM6VHJhbnNmb3Jtcz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PC9kczpUcmFuc2Zvcm1zPjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNzaGEyNTYiLz48ZHM6RGlnZXN0VmFsdWU+dDNuNkFBTHdiaUhNbGRyZkpEQjNYQ3FkSlFzOEhjeU5pK1lXT3ZoV1krdz08L2RzOkRpZ2VzdFZhbHVlPjwvZHM6UmVmZXJlbmNlPjwvZHM6U2lnbmVkSW5mbz48ZHM6U2lnbmF0dXJlVmFsdWUgSWQ9Il82OWQzMDRlNC04NzlmLTRmNzEtYmMxMi02ZjJhZDlmOTM5OGYiPmJSVFIzTzUxM0dnTkExS2pxb0g0VXE3cUlhN2NJaTljaXZmZmFyVmE0VVQyVEUzdzEzc2xsUDFXbkdYYjcyYUw0dXhkbDFUaTZZbFoKVnVjSC92ZU5zUnlWZFZwSFF0eEJNTDFLU0tZbXc3ZjdPNnVsYWtrYnFrTkdYVmFZdEVsa1dBZnZFSDBsNURkNkFZT0k2UGN5SzBCWgo2VEl3cWZhQ1luVk5DdTFpdDIzMm9EREtiWU9RNk02YnhmU3BvVFYvaTVVdEVyak0vZWFFanp4MXFxZzlFZmxOcm1obmRtZW42Q2JYCjVrNmZ4Y1o0V2NtWkM4V0Ruc0t0VWVjaGtmbko4L0Jwc2ppM1Foekg4YzFiL0RqTmR5UFFyOGlndXBqR2dlU0JmMHhRRUtoK3pRT2oKYTNvMEhRWjZ1UlUvejdWN2RoNU9qUEhmV2lLc0pqRjVwc2ppRlE9PTwvZHM6U2lnbmF0dXJlVmFsdWU+PGRzOktleUluZm8gSWQ9Il9iODkyMjU1Yi0xYmM4LTQxN2ItYTQ0Zi1lYTk4YmMzNDk5YTQiPjxkczpYNTA5RGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSUZMekNDQkJlZ0F3SUJBZ0lnTHJBYmV2b2FlNTJ5M2Y2QzJ0QjBTbjNwN1hKbTBUMDJGb2d4S0NmTmhYb3dEUVlKS29aSWh2Y04KQVFFTEJRQXdmREVMTUFrR0ExVUVCaE1DVlZNeFBEQTZCZ05WQkFvVE0wbHVkR1Z5Ym1WMElFTnZjbkJ2Y21GMGFXOXVJR1p2Y2lCQgpjM05wWjI1bFpDQk9ZVzFsY3lCaGJtUWdUblZ0WW1WeWN6RXZNQzBHQTFVRUF4TW1TVU5CVGs0Z1ZISmhaR1Z0WVhKcklFTnNaV0Z5CmFXNW5hRzkxYzJVZ1VHbHNiM1FnUTBFd0hoY05NVE13TmpJMk1EQXdNREF3V2hjTk1UZ3dOakkxTWpNMU9UVTVXakNCanpFTE1Ba0cKQTFVRUJoTUNRa1V4SURBZUJnTlZCQWdURjBKeWRYTnpaV3h6TFVOaGNHbDBZV3dnVW1WbmFXOXVNUkV3RHdZRFZRUUhFd2hDY25WegpjMlZzY3pFUk1BOEdBMVVFQ2hNSVJHVnNiMmwwZEdVeE9EQTJCZ05WQkFNVEwwbERRVTVPSUZSTlEwZ2dRWFYwYUc5eWFYcGxaQ0JVCmNtRmtaVzFoY21zZ1VHbHNiM1FnVm1Gc2FXUmhkRzl5TUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUEKeGxwM0twWUhYM1d5QXNGaFNrM0x3V2ZuR2x4blVERnFGWkEzVW91TVlqL1hpZ2JNa05lRVhJamxrUk9LVDRPUEdmUngvTEF5UmxRUQpqQ012NHFoYmtjWDFwN2FyNjNmbHE0U1pOVmNsMTVsN2gwdVQ1OEZ6U2ZubHowdTVya0hmSkltRDQzK21hUC84Z3YzNkZSMjdqVzhSCjl3WTRoaytXczRJQjBpRlNkOFNYdjFLcjh3L0ptTVFTRGtpdUcrUmZJaXVid1EvZnk3RWtqNVFXaFBadyttTXhOS25IVUx5M3hZejIKTHdWZmZ0andVdWVhY3ZxTlJDa01YbENsT0FEcWZUOG9TWm9lRFhlaEh2bFBzTENlbUdCb1RLdXJza0lTNjlGMHlQRUg1Z3plMEgrZgo4RlJPc0lvS1NzVlEzNEI0Uy9qb0U2N25wc0pQVGRLc05QSlR5UUlEQVFBQm80SUJoekNDQVlNd0RBWURWUjBUQVFIL0JBSXdBREFkCkJnTlZIUTRFRmdRVW9GcFk3NnA1eW9ORFJHdFFwelZ1UjgxVVdRMHdnY1lHQTFVZEl3U0J2akNCdTRBVXc2MCtwdFlSQUVXQVhEcFgKU29wdDNERU5ubkdoZ1lDa2ZqQjhNUXN3Q1FZRFZRUUdFd0pWVXpFOE1Eb0dBMVVFQ2hNelNXNTBaWEp1WlhRZ1EyOXljRzl5WVhScApiMjRnWm05eUlFRnpjMmxuYm1Wa0lFNWhiV1Z6SUdGdVpDQk9kVzFpWlhKek1TOHdMUVlEVlFRREV5WkpRMEZPVGlCVWNtRmtaVzFoCmNtc2dRMnhsWVhKcGJtZG9iM1Z6WlNCUWFXeHZkQ0JEUVlJZ0xyQWJldm9hZTUyeTNmNkMydEIwU24zcDdYSm0wVDAyRm9neEtDZk4KaFhrd0RnWURWUjBQQVFIL0JBUURBZ2VBTURRR0ExVWRId1F0TUNzd0thQW5vQ1dHSTJoMGRIQTZMeTlqY213dWFXTmhibTR1YjNKbgpMM1J0WTJoZmNHbHNiM1F1WTNKc01FVUdBMVVkSUFRK01Ed3dPZ1lES2dNRU1ETXdNUVlJS3dZQkJRVUhBZ0VXSldoMGRIQTZMeTkzCmQzY3VhV05oYm00dWIzSm5MM0JwYkc5MFgzSmxjRzl6YVhSdmNua3dEUVlKS29aSWh2Y05BUUVMQlFBRGdnRUJBSWVEWVlKcjYwVzMKeTlRcyszelJWSTlrZWtLb201dmtIT2FsQjN3SGFaSWFBRllwSTk4dFkwYVZOOWFHT04wdjZXUUYrbnZ6MUtSWlFiQXowMUJYdGFSSgo0bVBrYXJoaHVMbjlOa0J4cDhIUjVxY2MrS0g3Z3Y2ci9jMGlHM2JDTkorUVNyN1FmKzVNbE1vNnpMNVVkZFUvVDJqaWJNWENqL2YyCjFRdzN4OVFnb3lYTEZKOW96YUxnUTlSTWtMbE9temtDQWlYTjVBYjQzYUo5ZjdOMmdFMk5uUmpOS21tQzlBQlEwVFJ3RUtWTGhWbDEKVUdxQ0hKM0FsQlhXSVhONXNqUFFjRC8rbkhlRVhNeFl2bEF5cXhYb0QzTVd0UVZqN2oyb3FsYWtPQk1nRzgrcTJxWWxtQnRzNEZOaQp3NzQ4SWw1ODZIS0JScXhIdFpkUktXMlZxYVE9PC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9kczpTaWduYXR1cmU+PC9zbWQ6c2lnbmVkTWFyaz4= - - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_create_sunrise_signed_mark_reserved_response.xml b/javatests/google/registry/flows/domain/testdata/domain_create_sunrise_signed_mark_reserved_response.xml deleted file mode 100644 index 38300310f..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_create_sunrise_signed_mark_reserved_response.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - Command completed successfully - - - - testandvalidate.tld - 1999-04-03T22:00:00.0Z - - - - - sunrise - 1-TLD - - - - ABC-12345 - server-trid - - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_create_sunrise_signed_mark_uppercase.xml b/javatests/google/registry/flows/domain/testdata/domain_create_sunrise_signed_mark_uppercase.xml deleted file mode 100644 index e1151e1a2..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_create_sunrise_signed_mark_uppercase.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - TEST-VALIDATE.tld - - ns1.example.net - ns2.example.net - - jd1234 - sh8013 - sh8013 - - 2fooBAR - - - - - - sunrise - -PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHNtZDpzaWduZWRNYXJrIHhtbG5zOnNtZD0idXJuOmlldGY6cGFyYW1zOnhtbDpuczpzaWduZWRNYXJrLTEuMCIgaWQ9Il8zOGFjNTg2ZC05OTg5LTQ4MTctYjcwOC1kOGU4MzQ0NzZkOTUiPgogIDxzbWQ6aWQ+MDAwMDAwMTc2MTM3NjA0Mjc1OTEzNi02NTUzNTwvc21kOmlkPgogIDxzbWQ6aXNzdWVySW5mbyBpc3N1ZXJJRD0iNjU1MzUiPgogICAgPHNtZDpvcmc+SUNBTk4gVE1DSCBURVNUSU5HIFRNVjwvc21kOm9yZz4KICAgIDxzbWQ6ZW1haWw+bm90YXZhaWxhYmxlQGV4YW1wbGUuY29tPC9zbWQ6ZW1haWw+CiAgICA8c21kOnVybD5odHRwOi8vd3d3LmV4YW1wbGUuY29tPC9zbWQ6dXJsPgogICAgPHNtZDp2b2ljZT4rMzIuMDAwMDAwPC9zbWQ6dm9pY2U+CiAgPC9zbWQ6aXNzdWVySW5mbz4KICA8c21kOm5vdEJlZm9yZT4yMDEzLTA4LTA5VDEwOjA1OjU5LjEzNlo8L3NtZDpub3RCZWZvcmU+CiAgPHNtZDpub3RBZnRlcj4yMDE3LTA3LTIzVDIyOjAwOjAwLjAwMFo8L3NtZDpub3RBZnRlcj4KICA8bWFyazptYXJrIHhtbG5zOm1hcms9InVybjppZXRmOnBhcmFtczp4bWw6bnM6bWFyay0xLjAiPgogICAgPG1hcms6Y291cnQ+CiAgICAgIDxtYXJrOmlkPjAwMDUyMDEzNzM0NjkxNjkxMzczNDY5MTY5LTY1NTM1PC9tYXJrOmlkPgogICAgICA8bWFyazptYXJrTmFtZT5UZXN0ICZhbXA7IFZhbGlkYXRlPC9tYXJrOm1hcmtOYW1lPgogICAgICA8bWFyazpob2xkZXIgZW50aXRsZW1lbnQ9Im93bmVyIj4KICAgICAgICA8bWFyazpvcmc+QWcgY29ycG9yYXRpb248L21hcms6b3JnPgogICAgICAgIDxtYXJrOmFkZHI+CiAgICAgICAgICA8bWFyazpzdHJlZXQ+MTMwNSBCcmlnaHQgQXZlbnVlPC9tYXJrOnN0cmVldD4KICAgICAgICAgIDxtYXJrOmNpdHk+QXJjYWRpYTwvbWFyazpjaXR5PgogICAgICAgICAgPG1hcms6c3A+Q0E8L21hcms6c3A+CiAgICAgICAgICA8bWFyazpwYz45MDAyODwvbWFyazpwYz4KICAgICAgICAgIDxtYXJrOmNjPlVTPC9tYXJrOmNjPgogICAgICAgIDwvbWFyazphZGRyPgogICAgICA8L21hcms6aG9sZGVyPgogICAgICA8bWFyazpjb250YWN0IHR5cGU9ImFnZW50Ij4KICAgICAgICA8bWFyazpuYW1lPlRvbnkgSG9sbGFuZDwvbWFyazpuYW1lPgogICAgICAgIDxtYXJrOm9yZz5BZyBjb3Jwb3JhdGlvbjwvbWFyazpvcmc+CiAgICAgICAgPG1hcms6YWRkcj4KICAgICAgICAgIDxtYXJrOnN0cmVldD4xMzA1IEJyaWdodCBBdmVudWU8L21hcms6c3RyZWV0PgogICAgICAgICAgPG1hcms6Y2l0eT5BcmNhZGlhPC9tYXJrOmNpdHk+CiAgICAgICAgICA8bWFyazpzcD5DQTwvbWFyazpzcD4KICAgICAgICAgIDxtYXJrOnBjPjkwMDI4PC9tYXJrOnBjPgogICAgICAgICAgPG1hcms6Y2M+VVM8L21hcms6Y2M+CiAgICAgICAgPC9tYXJrOmFkZHI+CiAgICAgICAgPG1hcms6dm9pY2U+KzEuMjAyNTU2MjMwMjwvbWFyazp2b2ljZT4KICAgICAgICA8bWFyazpmYXg+KzEuMjAyNTU2MjMwMTwvbWFyazpmYXg+CiAgICAgICAgPG1hcms6ZW1haWw+aW5mb0BhZ2NvcnBvcmF0aW9uLmNvbTwvbWFyazplbWFpbD4KICAgICAgPC9tYXJrOmNvbnRhY3Q+CiAgICAgIDxtYXJrOmxhYmVsPnRlc3RhbmR2YWxpZGF0ZTwvbWFyazpsYWJlbD4KICAgICAgPG1hcms6bGFiZWw+dGVzdC0tLXZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0YW5kLXZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LXZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LWFuZHZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LS12YWxpZGF0ZTwvbWFyazpsYWJlbD4KICAgICAgPG1hcms6bGFiZWw+dGVzdHZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LWFuZC12YWxpZGF0ZTwvbWFyazpsYWJlbD4KICAgICAgPG1hcms6Z29vZHNBbmRTZXJ2aWNlcz5NdXNpY2FsIGluc3RydW1lbnRzPC9tYXJrOmdvb2RzQW5kU2VydmljZXM+CiAgICAgIDxtYXJrOnJlZk51bT4xMjM0PC9tYXJrOnJlZk51bT4KICAgICAgPG1hcms6cHJvRGF0ZT4yMDEyLTEyLTMxVDIzOjAwOjAwLjAwMFo8L21hcms6cHJvRGF0ZT4KICAgICAgPG1hcms6Y2M+VVM8L21hcms6Y2M+CiAgICAgIDxtYXJrOmNvdXJ0TmFtZT5Ib3ZlPC9tYXJrOmNvdXJ0TmFtZT4KICAgIDwvbWFyazpjb3VydD4KICA8L21hcms6bWFyaz4KPGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgSWQ9Il9mZDBmMTM0Ni03MTM4LTRiMGMtODRkNy0yZTdlYmY2YTExNmMiPjxkczpTaWduZWRJbmZvPjxkczpDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PGRzOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI3JzYS1zaGEyNTYiLz48ZHM6UmVmZXJlbmNlIFVSST0iI18zOGFjNTg2ZC05OTg5LTQ4MTctYjcwOC1kOGU4MzQ0NzZkOTUiPjxkczpUcmFuc2Zvcm1zPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZW52ZWxvcGVkLXNpZ25hdHVyZSIvPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz48L2RzOlRyYW5zZm9ybXM+PGRzOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI3NoYTI1NiIvPjxkczpEaWdlc3RWYWx1ZT55WDRLTWgrUDJ2OVUxNnh0eTl2ZGU5S0JTZmZFTjRHbTVVa2tLblI5cDdZPTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PGRzOlJlZmVyZW5jZSBVUkk9IiNfYjg5MjI1NWItMWJjOC00MTdiLWE0NGYtZWE5OGJjMzQ5OWE0Ij48ZHM6VHJhbnNmb3Jtcz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PC9kczpUcmFuc2Zvcm1zPjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNzaGEyNTYiLz48ZHM6RGlnZXN0VmFsdWU+dDNuNkFBTHdiaUhNbGRyZkpEQjNYQ3FkSlFzOEhjeU5pK1lXT3ZoV1krdz08L2RzOkRpZ2VzdFZhbHVlPjwvZHM6UmVmZXJlbmNlPjwvZHM6U2lnbmVkSW5mbz48ZHM6U2lnbmF0dXJlVmFsdWUgSWQ9Il82OWQzMDRlNC04NzlmLTRmNzEtYmMxMi02ZjJhZDlmOTM5OGYiPmJSVFIzTzUxM0dnTkExS2pxb0g0VXE3cUlhN2NJaTljaXZmZmFyVmE0VVQyVEUzdzEzc2xsUDFXbkdYYjcyYUw0dXhkbDFUaTZZbFoKVnVjSC92ZU5zUnlWZFZwSFF0eEJNTDFLU0tZbXc3ZjdPNnVsYWtrYnFrTkdYVmFZdEVsa1dBZnZFSDBsNURkNkFZT0k2UGN5SzBCWgo2VEl3cWZhQ1luVk5DdTFpdDIzMm9EREtiWU9RNk02YnhmU3BvVFYvaTVVdEVyak0vZWFFanp4MXFxZzlFZmxOcm1obmRtZW42Q2JYCjVrNmZ4Y1o0V2NtWkM4V0Ruc0t0VWVjaGtmbko4L0Jwc2ppM1Foekg4YzFiL0RqTmR5UFFyOGlndXBqR2dlU0JmMHhRRUtoK3pRT2oKYTNvMEhRWjZ1UlUvejdWN2RoNU9qUEhmV2lLc0pqRjVwc2ppRlE9PTwvZHM6U2lnbmF0dXJlVmFsdWU+PGRzOktleUluZm8gSWQ9Il9iODkyMjU1Yi0xYmM4LTQxN2ItYTQ0Zi1lYTk4YmMzNDk5YTQiPjxkczpYNTA5RGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSUZMekNDQkJlZ0F3SUJBZ0lnTHJBYmV2b2FlNTJ5M2Y2QzJ0QjBTbjNwN1hKbTBUMDJGb2d4S0NmTmhYb3dEUVlKS29aSWh2Y04KQVFFTEJRQXdmREVMTUFrR0ExVUVCaE1DVlZNeFBEQTZCZ05WQkFvVE0wbHVkR1Z5Ym1WMElFTnZjbkJ2Y21GMGFXOXVJR1p2Y2lCQgpjM05wWjI1bFpDQk9ZVzFsY3lCaGJtUWdUblZ0WW1WeWN6RXZNQzBHQTFVRUF4TW1TVU5CVGs0Z1ZISmhaR1Z0WVhKcklFTnNaV0Z5CmFXNW5hRzkxYzJVZ1VHbHNiM1FnUTBFd0hoY05NVE13TmpJMk1EQXdNREF3V2hjTk1UZ3dOakkxTWpNMU9UVTVXakNCanpFTE1Ba0cKQTFVRUJoTUNRa1V4SURBZUJnTlZCQWdURjBKeWRYTnpaV3h6TFVOaGNHbDBZV3dnVW1WbmFXOXVNUkV3RHdZRFZRUUhFd2hDY25WegpjMlZzY3pFUk1BOEdBMVVFQ2hNSVJHVnNiMmwwZEdVeE9EQTJCZ05WQkFNVEwwbERRVTVPSUZSTlEwZ2dRWFYwYUc5eWFYcGxaQ0JVCmNtRmtaVzFoY21zZ1VHbHNiM1FnVm1Gc2FXUmhkRzl5TUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUEKeGxwM0twWUhYM1d5QXNGaFNrM0x3V2ZuR2x4blVERnFGWkEzVW91TVlqL1hpZ2JNa05lRVhJamxrUk9LVDRPUEdmUngvTEF5UmxRUQpqQ012NHFoYmtjWDFwN2FyNjNmbHE0U1pOVmNsMTVsN2gwdVQ1OEZ6U2ZubHowdTVya0hmSkltRDQzK21hUC84Z3YzNkZSMjdqVzhSCjl3WTRoaytXczRJQjBpRlNkOFNYdjFLcjh3L0ptTVFTRGtpdUcrUmZJaXVid1EvZnk3RWtqNVFXaFBadyttTXhOS25IVUx5M3hZejIKTHdWZmZ0andVdWVhY3ZxTlJDa01YbENsT0FEcWZUOG9TWm9lRFhlaEh2bFBzTENlbUdCb1RLdXJza0lTNjlGMHlQRUg1Z3plMEgrZgo4RlJPc0lvS1NzVlEzNEI0Uy9qb0U2N25wc0pQVGRLc05QSlR5UUlEQVFBQm80SUJoekNDQVlNd0RBWURWUjBUQVFIL0JBSXdBREFkCkJnTlZIUTRFRmdRVW9GcFk3NnA1eW9ORFJHdFFwelZ1UjgxVVdRMHdnY1lHQTFVZEl3U0J2akNCdTRBVXc2MCtwdFlSQUVXQVhEcFgKU29wdDNERU5ubkdoZ1lDa2ZqQjhNUXN3Q1FZRFZRUUdFd0pWVXpFOE1Eb0dBMVVFQ2hNelNXNTBaWEp1WlhRZ1EyOXljRzl5WVhScApiMjRnWm05eUlFRnpjMmxuYm1Wa0lFNWhiV1Z6SUdGdVpDQk9kVzFpWlhKek1TOHdMUVlEVlFRREV5WkpRMEZPVGlCVWNtRmtaVzFoCmNtc2dRMnhsWVhKcGJtZG9iM1Z6WlNCUWFXeHZkQ0JEUVlJZ0xyQWJldm9hZTUyeTNmNkMydEIwU24zcDdYSm0wVDAyRm9neEtDZk4KaFhrd0RnWURWUjBQQVFIL0JBUURBZ2VBTURRR0ExVWRId1F0TUNzd0thQW5vQ1dHSTJoMGRIQTZMeTlqY213dWFXTmhibTR1YjNKbgpMM1J0WTJoZmNHbHNiM1F1WTNKc01FVUdBMVVkSUFRK01Ed3dPZ1lES2dNRU1ETXdNUVlJS3dZQkJRVUhBZ0VXSldoMGRIQTZMeTkzCmQzY3VhV05oYm00dWIzSm5MM0JwYkc5MFgzSmxjRzl6YVhSdmNua3dEUVlKS29aSWh2Y05BUUVMQlFBRGdnRUJBSWVEWVlKcjYwVzMKeTlRcyszelJWSTlrZWtLb201dmtIT2FsQjN3SGFaSWFBRllwSTk4dFkwYVZOOWFHT04wdjZXUUYrbnZ6MUtSWlFiQXowMUJYdGFSSgo0bVBrYXJoaHVMbjlOa0J4cDhIUjVxY2MrS0g3Z3Y2ci9jMGlHM2JDTkorUVNyN1FmKzVNbE1vNnpMNVVkZFUvVDJqaWJNWENqL2YyCjFRdzN4OVFnb3lYTEZKOW96YUxnUTlSTWtMbE9temtDQWlYTjVBYjQzYUo5ZjdOMmdFMk5uUmpOS21tQzlBQlEwVFJ3RUtWTGhWbDEKVUdxQ0hKM0FsQlhXSVhONXNqUFFjRC8rbkhlRVhNeFl2bEF5cXhYb0QzTVd0UVZqN2oyb3FsYWtPQk1nRzgrcTJxWWxtQnRzNEZOaQp3NzQ4SWw1ODZIS0JScXhIdFpkUktXMlZxYVE9PC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9kczpTaWduYXR1cmU+PC9zbWQ6c2lnbmVkTWFyaz4= - - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_create_sunrise_signed_mark_with_secdns.xml b/javatests/google/registry/flows/domain/testdata/domain_create_sunrise_signed_mark_with_secdns.xml deleted file mode 100644 index eda46bd53..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_create_sunrise_signed_mark_with_secdns.xml +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - test-validate.tld - - ns1.example.net - ns2.example.net - - jd1234 - sh8013 - sh8013 - - 2fooBAR - - - - - - - 12345 - 3 - 1 - 49FD46E6C4B45C55D4AC - - - - sunrise - -PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHNtZDpzaWduZWRNYXJrIHhtbG5zOnNtZD0idXJuOmlldGY6cGFyYW1zOnhtbDpuczpzaWduZWRNYXJrLTEuMCIgaWQ9Il8zOGFjNTg2ZC05OTg5LTQ4MTctYjcwOC1kOGU4MzQ0NzZkOTUiPgogIDxzbWQ6aWQ+MDAwMDAwMTc2MTM3NjA0Mjc1OTEzNi02NTUzNTwvc21kOmlkPgogIDxzbWQ6aXNzdWVySW5mbyBpc3N1ZXJJRD0iNjU1MzUiPgogICAgPHNtZDpvcmc+SUNBTk4gVE1DSCBURVNUSU5HIFRNVjwvc21kOm9yZz4KICAgIDxzbWQ6ZW1haWw+bm90YXZhaWxhYmxlQGV4YW1wbGUuY29tPC9zbWQ6ZW1haWw+CiAgICA8c21kOnVybD5odHRwOi8vd3d3LmV4YW1wbGUuY29tPC9zbWQ6dXJsPgogICAgPHNtZDp2b2ljZT4rMzIuMDAwMDAwPC9zbWQ6dm9pY2U+CiAgPC9zbWQ6aXNzdWVySW5mbz4KICA8c21kOm5vdEJlZm9yZT4yMDEzLTA4LTA5VDEwOjA1OjU5LjEzNlo8L3NtZDpub3RCZWZvcmU+CiAgPHNtZDpub3RBZnRlcj4yMDE3LTA3LTIzVDIyOjAwOjAwLjAwMFo8L3NtZDpub3RBZnRlcj4KICA8bWFyazptYXJrIHhtbG5zOm1hcms9InVybjppZXRmOnBhcmFtczp4bWw6bnM6bWFyay0xLjAiPgogICAgPG1hcms6Y291cnQ+CiAgICAgIDxtYXJrOmlkPjAwMDUyMDEzNzM0NjkxNjkxMzczNDY5MTY5LTY1NTM1PC9tYXJrOmlkPgogICAgICA8bWFyazptYXJrTmFtZT5UZXN0ICZhbXA7IFZhbGlkYXRlPC9tYXJrOm1hcmtOYW1lPgogICAgICA8bWFyazpob2xkZXIgZW50aXRsZW1lbnQ9Im93bmVyIj4KICAgICAgICA8bWFyazpvcmc+QWcgY29ycG9yYXRpb248L21hcms6b3JnPgogICAgICAgIDxtYXJrOmFkZHI+CiAgICAgICAgICA8bWFyazpzdHJlZXQ+MTMwNSBCcmlnaHQgQXZlbnVlPC9tYXJrOnN0cmVldD4KICAgICAgICAgIDxtYXJrOmNpdHk+QXJjYWRpYTwvbWFyazpjaXR5PgogICAgICAgICAgPG1hcms6c3A+Q0E8L21hcms6c3A+CiAgICAgICAgICA8bWFyazpwYz45MDAyODwvbWFyazpwYz4KICAgICAgICAgIDxtYXJrOmNjPlVTPC9tYXJrOmNjPgogICAgICAgIDwvbWFyazphZGRyPgogICAgICA8L21hcms6aG9sZGVyPgogICAgICA8bWFyazpjb250YWN0IHR5cGU9ImFnZW50Ij4KICAgICAgICA8bWFyazpuYW1lPlRvbnkgSG9sbGFuZDwvbWFyazpuYW1lPgogICAgICAgIDxtYXJrOm9yZz5BZyBjb3Jwb3JhdGlvbjwvbWFyazpvcmc+CiAgICAgICAgPG1hcms6YWRkcj4KICAgICAgICAgIDxtYXJrOnN0cmVldD4xMzA1IEJyaWdodCBBdmVudWU8L21hcms6c3RyZWV0PgogICAgICAgICAgPG1hcms6Y2l0eT5BcmNhZGlhPC9tYXJrOmNpdHk+CiAgICAgICAgICA8bWFyazpzcD5DQTwvbWFyazpzcD4KICAgICAgICAgIDxtYXJrOnBjPjkwMDI4PC9tYXJrOnBjPgogICAgICAgICAgPG1hcms6Y2M+VVM8L21hcms6Y2M+CiAgICAgICAgPC9tYXJrOmFkZHI+CiAgICAgICAgPG1hcms6dm9pY2U+KzEuMjAyNTU2MjMwMjwvbWFyazp2b2ljZT4KICAgICAgICA8bWFyazpmYXg+KzEuMjAyNTU2MjMwMTwvbWFyazpmYXg+CiAgICAgICAgPG1hcms6ZW1haWw+aW5mb0BhZ2NvcnBvcmF0aW9uLmNvbTwvbWFyazplbWFpbD4KICAgICAgPC9tYXJrOmNvbnRhY3Q+CiAgICAgIDxtYXJrOmxhYmVsPnRlc3RhbmR2YWxpZGF0ZTwvbWFyazpsYWJlbD4KICAgICAgPG1hcms6bGFiZWw+dGVzdC0tLXZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0YW5kLXZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LXZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LWFuZHZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LS12YWxpZGF0ZTwvbWFyazpsYWJlbD4KICAgICAgPG1hcms6bGFiZWw+dGVzdHZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LWFuZC12YWxpZGF0ZTwvbWFyazpsYWJlbD4KICAgICAgPG1hcms6Z29vZHNBbmRTZXJ2aWNlcz5NdXNpY2FsIGluc3RydW1lbnRzPC9tYXJrOmdvb2RzQW5kU2VydmljZXM+CiAgICAgIDxtYXJrOnJlZk51bT4xMjM0PC9tYXJrOnJlZk51bT4KICAgICAgPG1hcms6cHJvRGF0ZT4yMDEyLTEyLTMxVDIzOjAwOjAwLjAwMFo8L21hcms6cHJvRGF0ZT4KICAgICAgPG1hcms6Y2M+VVM8L21hcms6Y2M+CiAgICAgIDxtYXJrOmNvdXJ0TmFtZT5Ib3ZlPC9tYXJrOmNvdXJ0TmFtZT4KICAgIDwvbWFyazpjb3VydD4KICA8L21hcms6bWFyaz4KPGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgSWQ9Il9mZDBmMTM0Ni03MTM4LTRiMGMtODRkNy0yZTdlYmY2YTExNmMiPjxkczpTaWduZWRJbmZvPjxkczpDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PGRzOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI3JzYS1zaGEyNTYiLz48ZHM6UmVmZXJlbmNlIFVSST0iI18zOGFjNTg2ZC05OTg5LTQ4MTctYjcwOC1kOGU4MzQ0NzZkOTUiPjxkczpUcmFuc2Zvcm1zPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZW52ZWxvcGVkLXNpZ25hdHVyZSIvPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz48L2RzOlRyYW5zZm9ybXM+PGRzOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI3NoYTI1NiIvPjxkczpEaWdlc3RWYWx1ZT55WDRLTWgrUDJ2OVUxNnh0eTl2ZGU5S0JTZmZFTjRHbTVVa2tLblI5cDdZPTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PGRzOlJlZmVyZW5jZSBVUkk9IiNfYjg5MjI1NWItMWJjOC00MTdiLWE0NGYtZWE5OGJjMzQ5OWE0Ij48ZHM6VHJhbnNmb3Jtcz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PC9kczpUcmFuc2Zvcm1zPjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNzaGEyNTYiLz48ZHM6RGlnZXN0VmFsdWU+dDNuNkFBTHdiaUhNbGRyZkpEQjNYQ3FkSlFzOEhjeU5pK1lXT3ZoV1krdz08L2RzOkRpZ2VzdFZhbHVlPjwvZHM6UmVmZXJlbmNlPjwvZHM6U2lnbmVkSW5mbz48ZHM6U2lnbmF0dXJlVmFsdWUgSWQ9Il82OWQzMDRlNC04NzlmLTRmNzEtYmMxMi02ZjJhZDlmOTM5OGYiPmJSVFIzTzUxM0dnTkExS2pxb0g0VXE3cUlhN2NJaTljaXZmZmFyVmE0VVQyVEUzdzEzc2xsUDFXbkdYYjcyYUw0dXhkbDFUaTZZbFoKVnVjSC92ZU5zUnlWZFZwSFF0eEJNTDFLU0tZbXc3ZjdPNnVsYWtrYnFrTkdYVmFZdEVsa1dBZnZFSDBsNURkNkFZT0k2UGN5SzBCWgo2VEl3cWZhQ1luVk5DdTFpdDIzMm9EREtiWU9RNk02YnhmU3BvVFYvaTVVdEVyak0vZWFFanp4MXFxZzlFZmxOcm1obmRtZW42Q2JYCjVrNmZ4Y1o0V2NtWkM4V0Ruc0t0VWVjaGtmbko4L0Jwc2ppM1Foekg4YzFiL0RqTmR5UFFyOGlndXBqR2dlU0JmMHhRRUtoK3pRT2oKYTNvMEhRWjZ1UlUvejdWN2RoNU9qUEhmV2lLc0pqRjVwc2ppRlE9PTwvZHM6U2lnbmF0dXJlVmFsdWU+PGRzOktleUluZm8gSWQ9Il9iODkyMjU1Yi0xYmM4LTQxN2ItYTQ0Zi1lYTk4YmMzNDk5YTQiPjxkczpYNTA5RGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSUZMekNDQkJlZ0F3SUJBZ0lnTHJBYmV2b2FlNTJ5M2Y2QzJ0QjBTbjNwN1hKbTBUMDJGb2d4S0NmTmhYb3dEUVlKS29aSWh2Y04KQVFFTEJRQXdmREVMTUFrR0ExVUVCaE1DVlZNeFBEQTZCZ05WQkFvVE0wbHVkR1Z5Ym1WMElFTnZjbkJ2Y21GMGFXOXVJR1p2Y2lCQgpjM05wWjI1bFpDQk9ZVzFsY3lCaGJtUWdUblZ0WW1WeWN6RXZNQzBHQTFVRUF4TW1TVU5CVGs0Z1ZISmhaR1Z0WVhKcklFTnNaV0Z5CmFXNW5hRzkxYzJVZ1VHbHNiM1FnUTBFd0hoY05NVE13TmpJMk1EQXdNREF3V2hjTk1UZ3dOakkxTWpNMU9UVTVXakNCanpFTE1Ba0cKQTFVRUJoTUNRa1V4SURBZUJnTlZCQWdURjBKeWRYTnpaV3h6TFVOaGNHbDBZV3dnVW1WbmFXOXVNUkV3RHdZRFZRUUhFd2hDY25WegpjMlZzY3pFUk1BOEdBMVVFQ2hNSVJHVnNiMmwwZEdVeE9EQTJCZ05WQkFNVEwwbERRVTVPSUZSTlEwZ2dRWFYwYUc5eWFYcGxaQ0JVCmNtRmtaVzFoY21zZ1VHbHNiM1FnVm1Gc2FXUmhkRzl5TUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUEKeGxwM0twWUhYM1d5QXNGaFNrM0x3V2ZuR2x4blVERnFGWkEzVW91TVlqL1hpZ2JNa05lRVhJamxrUk9LVDRPUEdmUngvTEF5UmxRUQpqQ012NHFoYmtjWDFwN2FyNjNmbHE0U1pOVmNsMTVsN2gwdVQ1OEZ6U2ZubHowdTVya0hmSkltRDQzK21hUC84Z3YzNkZSMjdqVzhSCjl3WTRoaytXczRJQjBpRlNkOFNYdjFLcjh3L0ptTVFTRGtpdUcrUmZJaXVid1EvZnk3RWtqNVFXaFBadyttTXhOS25IVUx5M3hZejIKTHdWZmZ0andVdWVhY3ZxTlJDa01YbENsT0FEcWZUOG9TWm9lRFhlaEh2bFBzTENlbUdCb1RLdXJza0lTNjlGMHlQRUg1Z3plMEgrZgo4RlJPc0lvS1NzVlEzNEI0Uy9qb0U2N25wc0pQVGRLc05QSlR5UUlEQVFBQm80SUJoekNDQVlNd0RBWURWUjBUQVFIL0JBSXdBREFkCkJnTlZIUTRFRmdRVW9GcFk3NnA1eW9ORFJHdFFwelZ1UjgxVVdRMHdnY1lHQTFVZEl3U0J2akNCdTRBVXc2MCtwdFlSQUVXQVhEcFgKU29wdDNERU5ubkdoZ1lDa2ZqQjhNUXN3Q1FZRFZRUUdFd0pWVXpFOE1Eb0dBMVVFQ2hNelNXNTBaWEp1WlhRZ1EyOXljRzl5WVhScApiMjRnWm05eUlFRnpjMmxuYm1Wa0lFNWhiV1Z6SUdGdVpDQk9kVzFpWlhKek1TOHdMUVlEVlFRREV5WkpRMEZPVGlCVWNtRmtaVzFoCmNtc2dRMnhsWVhKcGJtZG9iM1Z6WlNCUWFXeHZkQ0JEUVlJZ0xyQWJldm9hZTUyeTNmNkMydEIwU24zcDdYSm0wVDAyRm9neEtDZk4KaFhrd0RnWURWUjBQQVFIL0JBUURBZ2VBTURRR0ExVWRId1F0TUNzd0thQW5vQ1dHSTJoMGRIQTZMeTlqY213dWFXTmhibTR1YjNKbgpMM1J0WTJoZmNHbHNiM1F1WTNKc01FVUdBMVVkSUFRK01Ed3dPZ1lES2dNRU1ETXdNUVlJS3dZQkJRVUhBZ0VXSldoMGRIQTZMeTkzCmQzY3VhV05oYm00dWIzSm5MM0JwYkc5MFgzSmxjRzl6YVhSdmNua3dEUVlKS29aSWh2Y05BUUVMQlFBRGdnRUJBSWVEWVlKcjYwVzMKeTlRcyszelJWSTlrZWtLb201dmtIT2FsQjN3SGFaSWFBRllwSTk4dFkwYVZOOWFHT04wdjZXUUYrbnZ6MUtSWlFiQXowMUJYdGFSSgo0bVBrYXJoaHVMbjlOa0J4cDhIUjVxY2MrS0g3Z3Y2ci9jMGlHM2JDTkorUVNyN1FmKzVNbE1vNnpMNVVkZFUvVDJqaWJNWENqL2YyCjFRdzN4OVFnb3lYTEZKOW96YUxnUTlSTWtMbE9temtDQWlYTjVBYjQzYUo5ZjdOMmdFMk5uUmpOS21tQzlBQlEwVFJ3RUtWTGhWbDEKVUdxQ0hKM0FsQlhXSVhONXNqUFFjRC8rbkhlRVhNeFl2bEF5cXhYb0QzTVd0UVZqN2oyb3FsYWtPQk1nRzgrcTJxWWxtQnRzNEZOaQp3NzQ4SWw1ODZIS0JScXhIdFpkUktXMlZxYVE9PC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9kczpTaWduYXR1cmU+PC9zbWQ6c2lnbmVkTWFyaz4= - - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_create_sunrise_signed_mark_with_secdns_8_records.xml b/javatests/google/registry/flows/domain/testdata/domain_create_sunrise_signed_mark_with_secdns_8_records.xml deleted file mode 100644 index 7873e1ff9..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_create_sunrise_signed_mark_with_secdns_8_records.xml +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - test-validate.tld - - ns1.example.net - ns2.example.net - - jd1234 - sh8013 - sh8013 - - 2fooBAR - - - - - - - 12345 - 3 - 1 - 49FD46E6C4B45C55D4AC - - - 12346 - 3 - 1 - 49FD46E6C4B45C55D4AC - - - 12347 - 3 - 1 - 49FD46E6C4B45C55D4AC - - - 12348 - 3 - 1 - 49FD46E6C4B45C55D4AC - - - 12349 - 3 - 1 - 49FD46E6C4B45C55D4AC - - - 12350 - 3 - 1 - 49FD46E6C4B45C55D4AC - - - 12351 - 3 - 1 - 49FD46E6C4B45C55D4AC - - - 12352 - 3 - 1 - 49FD46E6C4B45C55D4AC - - - - sunrise - -PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHNtZDpzaWduZWRNYXJrIHhtbG5zOnNtZD0idXJuOmlldGY6cGFyYW1zOnhtbDpuczpzaWduZWRNYXJrLTEuMCIgaWQ9Il8zOGFjNTg2ZC05OTg5LTQ4MTctYjcwOC1kOGU4MzQ0NzZkOTUiPgogIDxzbWQ6aWQ+MDAwMDAwMTc2MTM3NjA0Mjc1OTEzNi02NTUzNTwvc21kOmlkPgogIDxzbWQ6aXNzdWVySW5mbyBpc3N1ZXJJRD0iNjU1MzUiPgogICAgPHNtZDpvcmc+SUNBTk4gVE1DSCBURVNUSU5HIFRNVjwvc21kOm9yZz4KICAgIDxzbWQ6ZW1haWw+bm90YXZhaWxhYmxlQGV4YW1wbGUuY29tPC9zbWQ6ZW1haWw+CiAgICA8c21kOnVybD5odHRwOi8vd3d3LmV4YW1wbGUuY29tPC9zbWQ6dXJsPgogICAgPHNtZDp2b2ljZT4rMzIuMDAwMDAwPC9zbWQ6dm9pY2U+CiAgPC9zbWQ6aXNzdWVySW5mbz4KICA8c21kOm5vdEJlZm9yZT4yMDEzLTA4LTA5VDEwOjA1OjU5LjEzNlo8L3NtZDpub3RCZWZvcmU+CiAgPHNtZDpub3RBZnRlcj4yMDE3LTA3LTIzVDIyOjAwOjAwLjAwMFo8L3NtZDpub3RBZnRlcj4KICA8bWFyazptYXJrIHhtbG5zOm1hcms9InVybjppZXRmOnBhcmFtczp4bWw6bnM6bWFyay0xLjAiPgogICAgPG1hcms6Y291cnQ+CiAgICAgIDxtYXJrOmlkPjAwMDUyMDEzNzM0NjkxNjkxMzczNDY5MTY5LTY1NTM1PC9tYXJrOmlkPgogICAgICA8bWFyazptYXJrTmFtZT5UZXN0ICZhbXA7IFZhbGlkYXRlPC9tYXJrOm1hcmtOYW1lPgogICAgICA8bWFyazpob2xkZXIgZW50aXRsZW1lbnQ9Im93bmVyIj4KICAgICAgICA8bWFyazpvcmc+QWcgY29ycG9yYXRpb248L21hcms6b3JnPgogICAgICAgIDxtYXJrOmFkZHI+CiAgICAgICAgICA8bWFyazpzdHJlZXQ+MTMwNSBCcmlnaHQgQXZlbnVlPC9tYXJrOnN0cmVldD4KICAgICAgICAgIDxtYXJrOmNpdHk+QXJjYWRpYTwvbWFyazpjaXR5PgogICAgICAgICAgPG1hcms6c3A+Q0E8L21hcms6c3A+CiAgICAgICAgICA8bWFyazpwYz45MDAyODwvbWFyazpwYz4KICAgICAgICAgIDxtYXJrOmNjPlVTPC9tYXJrOmNjPgogICAgICAgIDwvbWFyazphZGRyPgogICAgICA8L21hcms6aG9sZGVyPgogICAgICA8bWFyazpjb250YWN0IHR5cGU9ImFnZW50Ij4KICAgICAgICA8bWFyazpuYW1lPlRvbnkgSG9sbGFuZDwvbWFyazpuYW1lPgogICAgICAgIDxtYXJrOm9yZz5BZyBjb3Jwb3JhdGlvbjwvbWFyazpvcmc+CiAgICAgICAgPG1hcms6YWRkcj4KICAgICAgICAgIDxtYXJrOnN0cmVldD4xMzA1IEJyaWdodCBBdmVudWU8L21hcms6c3RyZWV0PgogICAgICAgICAgPG1hcms6Y2l0eT5BcmNhZGlhPC9tYXJrOmNpdHk+CiAgICAgICAgICA8bWFyazpzcD5DQTwvbWFyazpzcD4KICAgICAgICAgIDxtYXJrOnBjPjkwMDI4PC9tYXJrOnBjPgogICAgICAgICAgPG1hcms6Y2M+VVM8L21hcms6Y2M+CiAgICAgICAgPC9tYXJrOmFkZHI+CiAgICAgICAgPG1hcms6dm9pY2U+KzEuMjAyNTU2MjMwMjwvbWFyazp2b2ljZT4KICAgICAgICA8bWFyazpmYXg+KzEuMjAyNTU2MjMwMTwvbWFyazpmYXg+CiAgICAgICAgPG1hcms6ZW1haWw+aW5mb0BhZ2NvcnBvcmF0aW9uLmNvbTwvbWFyazplbWFpbD4KICAgICAgPC9tYXJrOmNvbnRhY3Q+CiAgICAgIDxtYXJrOmxhYmVsPnRlc3RhbmR2YWxpZGF0ZTwvbWFyazpsYWJlbD4KICAgICAgPG1hcms6bGFiZWw+dGVzdC0tLXZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0YW5kLXZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LXZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LWFuZHZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LS12YWxpZGF0ZTwvbWFyazpsYWJlbD4KICAgICAgPG1hcms6bGFiZWw+dGVzdHZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LWFuZC12YWxpZGF0ZTwvbWFyazpsYWJlbD4KICAgICAgPG1hcms6Z29vZHNBbmRTZXJ2aWNlcz5NdXNpY2FsIGluc3RydW1lbnRzPC9tYXJrOmdvb2RzQW5kU2VydmljZXM+CiAgICAgIDxtYXJrOnJlZk51bT4xMjM0PC9tYXJrOnJlZk51bT4KICAgICAgPG1hcms6cHJvRGF0ZT4yMDEyLTEyLTMxVDIzOjAwOjAwLjAwMFo8L21hcms6cHJvRGF0ZT4KICAgICAgPG1hcms6Y2M+VVM8L21hcms6Y2M+CiAgICAgIDxtYXJrOmNvdXJ0TmFtZT5Ib3ZlPC9tYXJrOmNvdXJ0TmFtZT4KICAgIDwvbWFyazpjb3VydD4KICA8L21hcms6bWFyaz4KPGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgSWQ9Il9mZDBmMTM0Ni03MTM4LTRiMGMtODRkNy0yZTdlYmY2YTExNmMiPjxkczpTaWduZWRJbmZvPjxkczpDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PGRzOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI3JzYS1zaGEyNTYiLz48ZHM6UmVmZXJlbmNlIFVSST0iI18zOGFjNTg2ZC05OTg5LTQ4MTctYjcwOC1kOGU4MzQ0NzZkOTUiPjxkczpUcmFuc2Zvcm1zPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZW52ZWxvcGVkLXNpZ25hdHVyZSIvPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz48L2RzOlRyYW5zZm9ybXM+PGRzOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI3NoYTI1NiIvPjxkczpEaWdlc3RWYWx1ZT55WDRLTWgrUDJ2OVUxNnh0eTl2ZGU5S0JTZmZFTjRHbTVVa2tLblI5cDdZPTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PGRzOlJlZmVyZW5jZSBVUkk9IiNfYjg5MjI1NWItMWJjOC00MTdiLWE0NGYtZWE5OGJjMzQ5OWE0Ij48ZHM6VHJhbnNmb3Jtcz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PC9kczpUcmFuc2Zvcm1zPjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNzaGEyNTYiLz48ZHM6RGlnZXN0VmFsdWU+dDNuNkFBTHdiaUhNbGRyZkpEQjNYQ3FkSlFzOEhjeU5pK1lXT3ZoV1krdz08L2RzOkRpZ2VzdFZhbHVlPjwvZHM6UmVmZXJlbmNlPjwvZHM6U2lnbmVkSW5mbz48ZHM6U2lnbmF0dXJlVmFsdWUgSWQ9Il82OWQzMDRlNC04NzlmLTRmNzEtYmMxMi02ZjJhZDlmOTM5OGYiPmJSVFIzTzUxM0dnTkExS2pxb0g0VXE3cUlhN2NJaTljaXZmZmFyVmE0VVQyVEUzdzEzc2xsUDFXbkdYYjcyYUw0dXhkbDFUaTZZbFoKVnVjSC92ZU5zUnlWZFZwSFF0eEJNTDFLU0tZbXc3ZjdPNnVsYWtrYnFrTkdYVmFZdEVsa1dBZnZFSDBsNURkNkFZT0k2UGN5SzBCWgo2VEl3cWZhQ1luVk5DdTFpdDIzMm9EREtiWU9RNk02YnhmU3BvVFYvaTVVdEVyak0vZWFFanp4MXFxZzlFZmxOcm1obmRtZW42Q2JYCjVrNmZ4Y1o0V2NtWkM4V0Ruc0t0VWVjaGtmbko4L0Jwc2ppM1Foekg4YzFiL0RqTmR5UFFyOGlndXBqR2dlU0JmMHhRRUtoK3pRT2oKYTNvMEhRWjZ1UlUvejdWN2RoNU9qUEhmV2lLc0pqRjVwc2ppRlE9PTwvZHM6U2lnbmF0dXJlVmFsdWU+PGRzOktleUluZm8gSWQ9Il9iODkyMjU1Yi0xYmM4LTQxN2ItYTQ0Zi1lYTk4YmMzNDk5YTQiPjxkczpYNTA5RGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSUZMekNDQkJlZ0F3SUJBZ0lnTHJBYmV2b2FlNTJ5M2Y2QzJ0QjBTbjNwN1hKbTBUMDJGb2d4S0NmTmhYb3dEUVlKS29aSWh2Y04KQVFFTEJRQXdmREVMTUFrR0ExVUVCaE1DVlZNeFBEQTZCZ05WQkFvVE0wbHVkR1Z5Ym1WMElFTnZjbkJ2Y21GMGFXOXVJR1p2Y2lCQgpjM05wWjI1bFpDQk9ZVzFsY3lCaGJtUWdUblZ0WW1WeWN6RXZNQzBHQTFVRUF4TW1TVU5CVGs0Z1ZISmhaR1Z0WVhKcklFTnNaV0Z5CmFXNW5hRzkxYzJVZ1VHbHNiM1FnUTBFd0hoY05NVE13TmpJMk1EQXdNREF3V2hjTk1UZ3dOakkxTWpNMU9UVTVXakNCanpFTE1Ba0cKQTFVRUJoTUNRa1V4SURBZUJnTlZCQWdURjBKeWRYTnpaV3h6TFVOaGNHbDBZV3dnVW1WbmFXOXVNUkV3RHdZRFZRUUhFd2hDY25WegpjMlZzY3pFUk1BOEdBMVVFQ2hNSVJHVnNiMmwwZEdVeE9EQTJCZ05WQkFNVEwwbERRVTVPSUZSTlEwZ2dRWFYwYUc5eWFYcGxaQ0JVCmNtRmtaVzFoY21zZ1VHbHNiM1FnVm1Gc2FXUmhkRzl5TUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUEKeGxwM0twWUhYM1d5QXNGaFNrM0x3V2ZuR2x4blVERnFGWkEzVW91TVlqL1hpZ2JNa05lRVhJamxrUk9LVDRPUEdmUngvTEF5UmxRUQpqQ012NHFoYmtjWDFwN2FyNjNmbHE0U1pOVmNsMTVsN2gwdVQ1OEZ6U2ZubHowdTVya0hmSkltRDQzK21hUC84Z3YzNkZSMjdqVzhSCjl3WTRoaytXczRJQjBpRlNkOFNYdjFLcjh3L0ptTVFTRGtpdUcrUmZJaXVid1EvZnk3RWtqNVFXaFBadyttTXhOS25IVUx5M3hZejIKTHdWZmZ0andVdWVhY3ZxTlJDa01YbENsT0FEcWZUOG9TWm9lRFhlaEh2bFBzTENlbUdCb1RLdXJza0lTNjlGMHlQRUg1Z3plMEgrZgo4RlJPc0lvS1NzVlEzNEI0Uy9qb0U2N25wc0pQVGRLc05QSlR5UUlEQVFBQm80SUJoekNDQVlNd0RBWURWUjBUQVFIL0JBSXdBREFkCkJnTlZIUTRFRmdRVW9GcFk3NnA1eW9ORFJHdFFwelZ1UjgxVVdRMHdnY1lHQTFVZEl3U0J2akNCdTRBVXc2MCtwdFlSQUVXQVhEcFgKU29wdDNERU5ubkdoZ1lDa2ZqQjhNUXN3Q1FZRFZRUUdFd0pWVXpFOE1Eb0dBMVVFQ2hNelNXNTBaWEp1WlhRZ1EyOXljRzl5WVhScApiMjRnWm05eUlFRnpjMmxuYm1Wa0lFNWhiV1Z6SUdGdVpDQk9kVzFpWlhKek1TOHdMUVlEVlFRREV5WkpRMEZPVGlCVWNtRmtaVzFoCmNtc2dRMnhsWVhKcGJtZG9iM1Z6WlNCUWFXeHZkQ0JEUVlJZ0xyQWJldm9hZTUyeTNmNkMydEIwU24zcDdYSm0wVDAyRm9neEtDZk4KaFhrd0RnWURWUjBQQVFIL0JBUURBZ2VBTURRR0ExVWRId1F0TUNzd0thQW5vQ1dHSTJoMGRIQTZMeTlqY213dWFXTmhibTR1YjNKbgpMM1J0WTJoZmNHbHNiM1F1WTNKc01FVUdBMVVkSUFRK01Ed3dPZ1lES2dNRU1ETXdNUVlJS3dZQkJRVUhBZ0VXSldoMGRIQTZMeTkzCmQzY3VhV05oYm00dWIzSm5MM0JwYkc5MFgzSmxjRzl6YVhSdmNua3dEUVlKS29aSWh2Y05BUUVMQlFBRGdnRUJBSWVEWVlKcjYwVzMKeTlRcyszelJWSTlrZWtLb201dmtIT2FsQjN3SGFaSWFBRllwSTk4dFkwYVZOOWFHT04wdjZXUUYrbnZ6MUtSWlFiQXowMUJYdGFSSgo0bVBrYXJoaHVMbjlOa0J4cDhIUjVxY2MrS0g3Z3Y2ci9jMGlHM2JDTkorUVNyN1FmKzVNbE1vNnpMNVVkZFUvVDJqaWJNWENqL2YyCjFRdzN4OVFnb3lYTEZKOW96YUxnUTlSTWtMbE9temtDQWlYTjVBYjQzYUo5ZjdOMmdFMk5uUmpOS21tQzlBQlEwVFJ3RUtWTGhWbDEKVUdxQ0hKM0FsQlhXSVhONXNqUFFjRC8rbkhlRVhNeFl2bEF5cXhYb0QzTVd0UVZqN2oyb3FsYWtPQk1nRzgrcTJxWWxtQnRzNEZOaQp3NzQ4SWw1ODZIS0JScXhIdFpkUktXMlZxYVE9PC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9kczpTaWduYXR1cmU+PC9zbWQ6c2lnbmVkTWFyaz4= - - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_create_sunrise_signed_mark_with_secdns_9_records.xml b/javatests/google/registry/flows/domain/testdata/domain_create_sunrise_signed_mark_with_secdns_9_records.xml deleted file mode 100644 index 841af3cd0..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_create_sunrise_signed_mark_with_secdns_9_records.xml +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - test-validate.tld - - ns1.example.net - ns2.example.net - - jd1234 - sh8013 - sh8013 - - 2fooBAR - - - - - - - 12345 - 3 - 1 - 49FD46E6C4B45C55D4AC - - - 12346 - 3 - 1 - 49FD46E6C4B45C55D4AC - - - 12347 - 3 - 1 - 49FD46E6C4B45C55D4AC - - - 12348 - 3 - 1 - 49FD46E6C4B45C55D4AC - - - 12349 - 3 - 1 - 49FD46E6C4B45C55D4AC - - - 12350 - 3 - 1 - 49FD46E6C4B45C55D4AC - - - 12351 - 3 - 1 - 49FD46E6C4B45C55D4AC - - - 12352 - 3 - 1 - 49FD46E6C4B45C55D4AC - - - 12353 - 3 - 1 - 49FD46E6C4B45C55D4AC - - - - sunrise - -PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHNtZDpzaWduZWRNYXJrIHhtbG5zOnNtZD0idXJuOmlldGY6cGFyYW1zOnhtbDpuczpzaWduZWRNYXJrLTEuMCIgaWQ9Il8zOGFjNTg2ZC05OTg5LTQ4MTctYjcwOC1kOGU4MzQ0NzZkOTUiPgogIDxzbWQ6aWQ+MDAwMDAwMTc2MTM3NjA0Mjc1OTEzNi02NTUzNTwvc21kOmlkPgogIDxzbWQ6aXNzdWVySW5mbyBpc3N1ZXJJRD0iNjU1MzUiPgogICAgPHNtZDpvcmc+SUNBTk4gVE1DSCBURVNUSU5HIFRNVjwvc21kOm9yZz4KICAgIDxzbWQ6ZW1haWw+bm90YXZhaWxhYmxlQGV4YW1wbGUuY29tPC9zbWQ6ZW1haWw+CiAgICA8c21kOnVybD5odHRwOi8vd3d3LmV4YW1wbGUuY29tPC9zbWQ6dXJsPgogICAgPHNtZDp2b2ljZT4rMzIuMDAwMDAwPC9zbWQ6dm9pY2U+CiAgPC9zbWQ6aXNzdWVySW5mbz4KICA8c21kOm5vdEJlZm9yZT4yMDEzLTA4LTA5VDEwOjA1OjU5LjEzNlo8L3NtZDpub3RCZWZvcmU+CiAgPHNtZDpub3RBZnRlcj4yMDE3LTA3LTIzVDIyOjAwOjAwLjAwMFo8L3NtZDpub3RBZnRlcj4KICA8bWFyazptYXJrIHhtbG5zOm1hcms9InVybjppZXRmOnBhcmFtczp4bWw6bnM6bWFyay0xLjAiPgogICAgPG1hcms6Y291cnQ+CiAgICAgIDxtYXJrOmlkPjAwMDUyMDEzNzM0NjkxNjkxMzczNDY5MTY5LTY1NTM1PC9tYXJrOmlkPgogICAgICA8bWFyazptYXJrTmFtZT5UZXN0ICZhbXA7IFZhbGlkYXRlPC9tYXJrOm1hcmtOYW1lPgogICAgICA8bWFyazpob2xkZXIgZW50aXRsZW1lbnQ9Im93bmVyIj4KICAgICAgICA8bWFyazpvcmc+QWcgY29ycG9yYXRpb248L21hcms6b3JnPgogICAgICAgIDxtYXJrOmFkZHI+CiAgICAgICAgICA8bWFyazpzdHJlZXQ+MTMwNSBCcmlnaHQgQXZlbnVlPC9tYXJrOnN0cmVldD4KICAgICAgICAgIDxtYXJrOmNpdHk+QXJjYWRpYTwvbWFyazpjaXR5PgogICAgICAgICAgPG1hcms6c3A+Q0E8L21hcms6c3A+CiAgICAgICAgICA8bWFyazpwYz45MDAyODwvbWFyazpwYz4KICAgICAgICAgIDxtYXJrOmNjPlVTPC9tYXJrOmNjPgogICAgICAgIDwvbWFyazphZGRyPgogICAgICA8L21hcms6aG9sZGVyPgogICAgICA8bWFyazpjb250YWN0IHR5cGU9ImFnZW50Ij4KICAgICAgICA8bWFyazpuYW1lPlRvbnkgSG9sbGFuZDwvbWFyazpuYW1lPgogICAgICAgIDxtYXJrOm9yZz5BZyBjb3Jwb3JhdGlvbjwvbWFyazpvcmc+CiAgICAgICAgPG1hcms6YWRkcj4KICAgICAgICAgIDxtYXJrOnN0cmVldD4xMzA1IEJyaWdodCBBdmVudWU8L21hcms6c3RyZWV0PgogICAgICAgICAgPG1hcms6Y2l0eT5BcmNhZGlhPC9tYXJrOmNpdHk+CiAgICAgICAgICA8bWFyazpzcD5DQTwvbWFyazpzcD4KICAgICAgICAgIDxtYXJrOnBjPjkwMDI4PC9tYXJrOnBjPgogICAgICAgICAgPG1hcms6Y2M+VVM8L21hcms6Y2M+CiAgICAgICAgPC9tYXJrOmFkZHI+CiAgICAgICAgPG1hcms6dm9pY2U+KzEuMjAyNTU2MjMwMjwvbWFyazp2b2ljZT4KICAgICAgICA8bWFyazpmYXg+KzEuMjAyNTU2MjMwMTwvbWFyazpmYXg+CiAgICAgICAgPG1hcms6ZW1haWw+aW5mb0BhZ2NvcnBvcmF0aW9uLmNvbTwvbWFyazplbWFpbD4KICAgICAgPC9tYXJrOmNvbnRhY3Q+CiAgICAgIDxtYXJrOmxhYmVsPnRlc3RhbmR2YWxpZGF0ZTwvbWFyazpsYWJlbD4KICAgICAgPG1hcms6bGFiZWw+dGVzdC0tLXZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0YW5kLXZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LXZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LWFuZHZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LS12YWxpZGF0ZTwvbWFyazpsYWJlbD4KICAgICAgPG1hcms6bGFiZWw+dGVzdHZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LWFuZC12YWxpZGF0ZTwvbWFyazpsYWJlbD4KICAgICAgPG1hcms6Z29vZHNBbmRTZXJ2aWNlcz5NdXNpY2FsIGluc3RydW1lbnRzPC9tYXJrOmdvb2RzQW5kU2VydmljZXM+CiAgICAgIDxtYXJrOnJlZk51bT4xMjM0PC9tYXJrOnJlZk51bT4KICAgICAgPG1hcms6cHJvRGF0ZT4yMDEyLTEyLTMxVDIzOjAwOjAwLjAwMFo8L21hcms6cHJvRGF0ZT4KICAgICAgPG1hcms6Y2M+VVM8L21hcms6Y2M+CiAgICAgIDxtYXJrOmNvdXJ0TmFtZT5Ib3ZlPC9tYXJrOmNvdXJ0TmFtZT4KICAgIDwvbWFyazpjb3VydD4KICA8L21hcms6bWFyaz4KPGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgSWQ9Il9mZDBmMTM0Ni03MTM4LTRiMGMtODRkNy0yZTdlYmY2YTExNmMiPjxkczpTaWduZWRJbmZvPjxkczpDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PGRzOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI3JzYS1zaGEyNTYiLz48ZHM6UmVmZXJlbmNlIFVSST0iI18zOGFjNTg2ZC05OTg5LTQ4MTctYjcwOC1kOGU4MzQ0NzZkOTUiPjxkczpUcmFuc2Zvcm1zPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZW52ZWxvcGVkLXNpZ25hdHVyZSIvPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz48L2RzOlRyYW5zZm9ybXM+PGRzOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI3NoYTI1NiIvPjxkczpEaWdlc3RWYWx1ZT55WDRLTWgrUDJ2OVUxNnh0eTl2ZGU5S0JTZmZFTjRHbTVVa2tLblI5cDdZPTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PGRzOlJlZmVyZW5jZSBVUkk9IiNfYjg5MjI1NWItMWJjOC00MTdiLWE0NGYtZWE5OGJjMzQ5OWE0Ij48ZHM6VHJhbnNmb3Jtcz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PC9kczpUcmFuc2Zvcm1zPjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNzaGEyNTYiLz48ZHM6RGlnZXN0VmFsdWU+dDNuNkFBTHdiaUhNbGRyZkpEQjNYQ3FkSlFzOEhjeU5pK1lXT3ZoV1krdz08L2RzOkRpZ2VzdFZhbHVlPjwvZHM6UmVmZXJlbmNlPjwvZHM6U2lnbmVkSW5mbz48ZHM6U2lnbmF0dXJlVmFsdWUgSWQ9Il82OWQzMDRlNC04NzlmLTRmNzEtYmMxMi02ZjJhZDlmOTM5OGYiPmJSVFIzTzUxM0dnTkExS2pxb0g0VXE3cUlhN2NJaTljaXZmZmFyVmE0VVQyVEUzdzEzc2xsUDFXbkdYYjcyYUw0dXhkbDFUaTZZbFoKVnVjSC92ZU5zUnlWZFZwSFF0eEJNTDFLU0tZbXc3ZjdPNnVsYWtrYnFrTkdYVmFZdEVsa1dBZnZFSDBsNURkNkFZT0k2UGN5SzBCWgo2VEl3cWZhQ1luVk5DdTFpdDIzMm9EREtiWU9RNk02YnhmU3BvVFYvaTVVdEVyak0vZWFFanp4MXFxZzlFZmxOcm1obmRtZW42Q2JYCjVrNmZ4Y1o0V2NtWkM4V0Ruc0t0VWVjaGtmbko4L0Jwc2ppM1Foekg4YzFiL0RqTmR5UFFyOGlndXBqR2dlU0JmMHhRRUtoK3pRT2oKYTNvMEhRWjZ1UlUvejdWN2RoNU9qUEhmV2lLc0pqRjVwc2ppRlE9PTwvZHM6U2lnbmF0dXJlVmFsdWU+PGRzOktleUluZm8gSWQ9Il9iODkyMjU1Yi0xYmM4LTQxN2ItYTQ0Zi1lYTk4YmMzNDk5YTQiPjxkczpYNTA5RGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSUZMekNDQkJlZ0F3SUJBZ0lnTHJBYmV2b2FlNTJ5M2Y2QzJ0QjBTbjNwN1hKbTBUMDJGb2d4S0NmTmhYb3dEUVlKS29aSWh2Y04KQVFFTEJRQXdmREVMTUFrR0ExVUVCaE1DVlZNeFBEQTZCZ05WQkFvVE0wbHVkR1Z5Ym1WMElFTnZjbkJ2Y21GMGFXOXVJR1p2Y2lCQgpjM05wWjI1bFpDQk9ZVzFsY3lCaGJtUWdUblZ0WW1WeWN6RXZNQzBHQTFVRUF4TW1TVU5CVGs0Z1ZISmhaR1Z0WVhKcklFTnNaV0Z5CmFXNW5hRzkxYzJVZ1VHbHNiM1FnUTBFd0hoY05NVE13TmpJMk1EQXdNREF3V2hjTk1UZ3dOakkxTWpNMU9UVTVXakNCanpFTE1Ba0cKQTFVRUJoTUNRa1V4SURBZUJnTlZCQWdURjBKeWRYTnpaV3h6TFVOaGNHbDBZV3dnVW1WbmFXOXVNUkV3RHdZRFZRUUhFd2hDY25WegpjMlZzY3pFUk1BOEdBMVVFQ2hNSVJHVnNiMmwwZEdVeE9EQTJCZ05WQkFNVEwwbERRVTVPSUZSTlEwZ2dRWFYwYUc5eWFYcGxaQ0JVCmNtRmtaVzFoY21zZ1VHbHNiM1FnVm1Gc2FXUmhkRzl5TUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUEKeGxwM0twWUhYM1d5QXNGaFNrM0x3V2ZuR2x4blVERnFGWkEzVW91TVlqL1hpZ2JNa05lRVhJamxrUk9LVDRPUEdmUngvTEF5UmxRUQpqQ012NHFoYmtjWDFwN2FyNjNmbHE0U1pOVmNsMTVsN2gwdVQ1OEZ6U2ZubHowdTVya0hmSkltRDQzK21hUC84Z3YzNkZSMjdqVzhSCjl3WTRoaytXczRJQjBpRlNkOFNYdjFLcjh3L0ptTVFTRGtpdUcrUmZJaXVid1EvZnk3RWtqNVFXaFBadyttTXhOS25IVUx5M3hZejIKTHdWZmZ0andVdWVhY3ZxTlJDa01YbENsT0FEcWZUOG9TWm9lRFhlaEh2bFBzTENlbUdCb1RLdXJza0lTNjlGMHlQRUg1Z3plMEgrZgo4RlJPc0lvS1NzVlEzNEI0Uy9qb0U2N25wc0pQVGRLc05QSlR5UUlEQVFBQm80SUJoekNDQVlNd0RBWURWUjBUQVFIL0JBSXdBREFkCkJnTlZIUTRFRmdRVW9GcFk3NnA1eW9ORFJHdFFwelZ1UjgxVVdRMHdnY1lHQTFVZEl3U0J2akNCdTRBVXc2MCtwdFlSQUVXQVhEcFgKU29wdDNERU5ubkdoZ1lDa2ZqQjhNUXN3Q1FZRFZRUUdFd0pWVXpFOE1Eb0dBMVVFQ2hNelNXNTBaWEp1WlhRZ1EyOXljRzl5WVhScApiMjRnWm05eUlFRnpjMmxuYm1Wa0lFNWhiV1Z6SUdGdVpDQk9kVzFpWlhKek1TOHdMUVlEVlFRREV5WkpRMEZPVGlCVWNtRmtaVzFoCmNtc2dRMnhsWVhKcGJtZG9iM1Z6WlNCUWFXeHZkQ0JEUVlJZ0xyQWJldm9hZTUyeTNmNkMydEIwU24zcDdYSm0wVDAyRm9neEtDZk4KaFhrd0RnWURWUjBQQVFIL0JBUURBZ2VBTURRR0ExVWRId1F0TUNzd0thQW5vQ1dHSTJoMGRIQTZMeTlqY213dWFXTmhibTR1YjNKbgpMM1J0WTJoZmNHbHNiM1F1WTNKc01FVUdBMVVkSUFRK01Ed3dPZ1lES2dNRU1ETXdNUVlJS3dZQkJRVUhBZ0VXSldoMGRIQTZMeTkzCmQzY3VhV05oYm00dWIzSm5MM0JwYkc5MFgzSmxjRzl6YVhSdmNua3dEUVlKS29aSWh2Y05BUUVMQlFBRGdnRUJBSWVEWVlKcjYwVzMKeTlRcyszelJWSTlrZWtLb201dmtIT2FsQjN3SGFaSWFBRllwSTk4dFkwYVZOOWFHT04wdjZXUUYrbnZ6MUtSWlFiQXowMUJYdGFSSgo0bVBrYXJoaHVMbjlOa0J4cDhIUjVxY2MrS0g3Z3Y2ci9jMGlHM2JDTkorUVNyN1FmKzVNbE1vNnpMNVVkZFUvVDJqaWJNWENqL2YyCjFRdzN4OVFnb3lYTEZKOW96YUxnUTlSTWtMbE9temtDQWlYTjVBYjQzYUo5ZjdOMmdFMk5uUmpOS21tQzlBQlEwVFJ3RUtWTGhWbDEKVUdxQ0hKM0FsQlhXSVhONXNqUFFjRC8rbkhlRVhNeFl2bEF5cXhYb0QzTVd0UVZqN2oyb3FsYWtPQk1nRzgrcTJxWWxtQnRzNEZOaQp3NzQ4SWw1ODZIS0JScXhIdFpkUktXMlZxYVE9PC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9kczpTaWduYXR1cmU+PC9zbWQ6c2lnbmVkTWFyaz4= - - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_create_sunrise_two_signed_marks.xml b/javatests/google/registry/flows/domain/testdata/domain_create_sunrise_two_signed_marks.xml deleted file mode 100644 index aa31ff6b3..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_create_sunrise_two_signed_marks.xml +++ /dev/null @@ -1,245 +0,0 @@ - - - - - - exampleone.tld - - ns1.example.net - ns2.example.net - - jd1234 - sh8013 - sh8013 - - 2fooBAR - - - - - - sunrise - - 1-2 - - Example Inc. - support@example.tld - http://www.example.tld - +1.7035555555 - - 2009-08-16T09:00:00.0Z - 2010-08-16T09:00:00.0Z - - - 1234-2 - Example One - - Example Inc. - - 123 Example Dr. - Suite 100 - Reston - VA - 20190 - US - - - US - 35 - 36 - example-one - exampleone - Dirigendas et eiusmodi featuring infringo in airfare et cartam servicia. - 234235 - 2009-08-16T09:00:00.0Z - 2015-08-16T09:00:00.0Z - - - - - - - - - - - - - miF4M2aTd1Y3tKOzJtiyl2VpzAnVPnV1Hq7Zax+yzrA= - - - - - MELpHTWEVfG1JcsG1/a//o54OnlJ5A864+X5JwfqgGBBeZSzGHNzwzTKFzIyyyfn - lGxVwNMoBV5aSvkF7oEKMNVzfcl/P0czNQZ/LJ83p3Ol27/iUNsqgCaGf9Zupw+M - XT4Q2lOrIw+qSx5g7q9T83siMLvkD5uEYlU5dPqgsObLTW8/doTQrA14RcxgY4kG - a4+t5B1cT+5VaghTOPb8uUSEDKjnOsGdy8p24wgyK9n8h0CTSS2ZQ6Zq/RmQeT7D - sbceUHheQ+mkQWIljpMQqsiBjw5XXh4jkEgfAzrb6gkYEF+X8ReuPZuOYC4QjIET - yx8ifN4KE3GIbMXeF4LDsA== - - - - - - o/cwvXhbVYl0RDWWvoyeZpETVZVVcMCovUVNg/swWinuMgEWgVQFrz0xA04pEhXC - FVv4evbUpekJ5buqU1gmQyOsCKQlhOHTdPjvkC5upDqa51Flk0TMaMkIQjs7aUKC - mA4RG4tTTGK/EjR1ix8/D0gHYVRldy1YPrMP+ou75bOVnIos+HifrAtrIv4qEqwL - L4FTZAUpaCa2BmgXfy2CSRQbxD5Or1gcSa3vurh5sPMCNxqaXmIXmQipS+DuEBqM - M8tldaN7RYojUEKrGVsNk5i9y2/7sjn1zyyUPf7vL4GgDYqhJYWV61DnXgx/Jd6C - WxvsnDF6scscQzUTEl+hyw== - - - AQAB - - - - - - MIIESTCCAzGgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBiMQswCQYDVQQGEwJVUzEL - MAkGA1UECBMCQ0ExFDASBgNVBAcTC0xvcyBBbmdlbGVzMRMwEQYDVQQKEwpJQ0FO - TiBUTUNIMRswGQYDVQQDExJJQ0FOTiBUTUNIIFRFU1QgQ0EwHhcNMTMwMjA4MDAw - MDAwWhcNMTgwMjA3MjM1OTU5WjBsMQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0Ex - FDASBgNVBAcTC0xvcyBBbmdlbGVzMRcwFQYDVQQKEw5WYWxpZGF0b3IgVE1DSDEh - MB8GA1UEAxMYVmFsaWRhdG9yIFRNQ0ggVEVTVCBDRVJUMIIBIjANBgkqhkiG9w0B - AQEFAAOCAQ8AMIIBCgKCAQEAo/cwvXhbVYl0RDWWvoyeZpETVZVVcMCovUVNg/sw - WinuMgEWgVQFrz0xA04pEhXCFVv4evbUpekJ5buqU1gmQyOsCKQlhOHTdPjvkC5u - pDqa51Flk0TMaMkIQjs7aUKCmA4RG4tTTGK/EjR1ix8/D0gHYVRldy1YPrMP+ou7 - 5bOVnIos+HifrAtrIv4qEqwLL4FTZAUpaCa2BmgXfy2CSRQbxD5Or1gcSa3vurh5 - sPMCNxqaXmIXmQipS+DuEBqMM8tldaN7RYojUEKrGVsNk5i9y2/7sjn1zyyUPf7v - L4GgDYqhJYWV61DnXgx/Jd6CWxvsnDF6scscQzUTEl+hywIDAQABo4H/MIH8MAwG - A1UdEwEB/wQCMAAwHQYDVR0OBBYEFPZEcIQcD/Bj2IFz/LERuo2ADJviMIGMBgNV - HSMEgYQwgYGAFO0/7kEh3FuEKS+Q/kYHaD/W6wihoWakZDBiMQswCQYDVQQGEwJV - UzELMAkGA1UECBMCQ0ExFDASBgNVBAcTC0xvcyBBbmdlbGVzMRMwEQYDVQQKEwpJ - Q0FOTiBUTUNIMRswGQYDVQQDExJJQ0FOTiBUTUNIIFRFU1QgQ0GCAQEwDgYDVR0P - AQH/BAQDAgeAMC4GA1UdHwQnMCUwI6AhoB+GHWh0dHA6Ly9jcmwuaWNhbm4ub3Jn - L3RtY2guY3JsMA0GCSqGSIb3DQEBCwUAA4IBAQB2qSy7ui+43cebKUKwWPrzz9y/ - IkrMeJGKjo40n+9uekaw3DJ5EqiOf/qZ4pjBD++oR6BJCb6NQuQKwnoAz5lE4Ssu - y5+i93oT3HfyVc4gNMIoHm1PS19l7DBKrbwbzAea/0jKWVzrvmV7TBfjxD3AQo1R - bU5dBr6IjbdLFlnO5x0G0mrG7x5OUPuurihyiURpFDpwH8KAH1wMcCpXGXFRtGKk - wydgyVYAty7otkl/z3bZkCVT34gPvF70sR6+QxUy8u0LzF5A/beYaZpxSYG31amL - AdXitTWFipaIGea9lEGFM0L9+Bg7XzNn4nVLXokyEB3bgS4scG6QznX23FGk - - - - - - - 3-4 - - Example Inc. - support@example.tld - http://www.example.tld - +1.7035555555 - - 2009-08-16T09:00:00.0Z - 2010-08-16T09:00:00.0Z - - - 1234-2 - Example One - - Example Inc. - - 123 Example Dr. - Suite 100 - Reston - VA - 20190 - US - - - US - 35 - 36 - example-one - exampleone - Dirigendas et eiusmodi featuring infringo in airfare et cartam servicia. - 234235 - 2009-08-16T09:00:00.0Z - 2015-08-16T09:00:00.0Z - - - - - - - - - - - - - miF4M2aTd1Y3tKOzJtiyl2VpzAnVPnV1Hq7Zax+yzrA= - - - - - MELpHTWEVfG1JcsG1/a//o54OnlJ5A864+X5JwfqgGBBeZSzGHNzwzTKFzIyyyfn - lGxVwNMoBV5aSvkF7oEKMNVzfcl/P0czNQZ/LJ83p3Ol27/iUNsqgCaGf9Zupw+M - XT4Q2lOrIw+qSx5g7q9T83siMLvkD5uEYlU5dPqgsObLTW8/doTQrA14RcxgY4kG - a4+t5B1cT+5VaghTOPb8uUSEDKjnOsGdy8p24wgyK9n8h0CTSS2ZQ6Zq/RmQeT7D - sbceUHheQ+mkQWIljpMQqsiBjw5XXh4jkEgfAzrb6gkYEF+X8ReuPZuOYC4QjIET - yx8ifN4KE3GIbMXeF4LDsA== - - - - - - o/cwvXhbVYl0RDWWvoyeZpETVZVVcMCovUVNg/swWinuMgEWgVQFrz0xA04pEhXC - FVv4evbUpekJ5buqU1gmQyOsCKQlhOHTdPjvkC5upDqa51Flk0TMaMkIQjs7aUKC - mA4RG4tTTGK/EjR1ix8/D0gHYVRldy1YPrMP+ou75bOVnIos+HifrAtrIv4qEqwL - L4FTZAUpaCa2BmgXfy2CSRQbxD5Or1gcSa3vurh5sPMCNxqaXmIXmQipS+DuEBqM - M8tldaN7RYojUEKrGVsNk5i9y2/7sjn1zyyUPf7vL4GgDYqhJYWV61DnXgx/Jd6C - WxvsnDF6scscQzUTEl+hyw== - - - AQAB - - - - - - MIIESTCCAzGgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBiMQswCQYDVQQGEwJVUzEL - MAkGA1UECBMCQ0ExFDASBgNVBAcTC0xvcyBBbmdlbGVzMRMwEQYDVQQKEwpJQ0FO - TiBUTUNIMRswGQYDVQQDExJJQ0FOTiBUTUNIIFRFU1QgQ0EwHhcNMTMwMjA4MDAw - MDAwWhcNMTgwMjA3MjM1OTU5WjBsMQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0Ex - FDASBgNVBAcTC0xvcyBBbmdlbGVzMRcwFQYDVQQKEw5WYWxpZGF0b3IgVE1DSDEh - MB8GA1UEAxMYVmFsaWRhdG9yIFRNQ0ggVEVTVCBDRVJUMIIBIjANBgkqhkiG9w0B - AQEFAAOCAQ8AMIIBCgKCAQEAo/cwvXhbVYl0RDWWvoyeZpETVZVVcMCovUVNg/sw - WinuMgEWgVQFrz0xA04pEhXCFVv4evbUpekJ5buqU1gmQyOsCKQlhOHTdPjvkC5u - pDqa51Flk0TMaMkIQjs7aUKCmA4RG4tTTGK/EjR1ix8/D0gHYVRldy1YPrMP+ou7 - 5bOVnIos+HifrAtrIv4qEqwLL4FTZAUpaCa2BmgXfy2CSRQbxD5Or1gcSa3vurh5 - sPMCNxqaXmIXmQipS+DuEBqMM8tldaN7RYojUEKrGVsNk5i9y2/7sjn1zyyUPf7v - L4GgDYqhJYWV61DnXgx/Jd6CWxvsnDF6scscQzUTEl+hywIDAQABo4H/MIH8MAwG - A1UdEwEB/wQCMAAwHQYDVR0OBBYEFPZEcIQcD/Bj2IFz/LERuo2ADJviMIGMBgNV - HSMEgYQwgYGAFO0/7kEh3FuEKS+Q/kYHaD/W6wihoWakZDBiMQswCQYDVQQGEwJV - UzELMAkGA1UECBMCQ0ExFDASBgNVBAcTC0xvcyBBbmdlbGVzMRMwEQYDVQQKEwpJ - Q0FOTiBUTUNIMRswGQYDVQQDExJJQ0FOTiBUTUNIIFRFU1QgQ0GCAQEwDgYDVR0P - AQH/BAQDAgeAMC4GA1UdHwQnMCUwI6AhoB+GHWh0dHA6Ly9jcmwuaWNhbm4ub3Jn - L3RtY2guY3JsMA0GCSqGSIb3DQEBCwUAA4IBAQB2qSy7ui+43cebKUKwWPrzz9y/ - IkrMeJGKjo40n+9uekaw3DJ5EqiOf/qZ4pjBD++oR6BJCb6NQuQKwnoAz5lE4Ssu - y5+i93oT3HfyVc4gNMIoHm1PS19l7DBKrbwbzAea/0jKWVzrvmV7TBfjxD3AQo1R - bU5dBr6IjbdLFlnO5x0G0mrG7x5OUPuurihyiURpFDpwH8KAH1wMcCpXGXFRtGKk - wydgyVYAty7otkl/z3bZkCVT34gPvF70sR6+QxUy8u0LzF5A/beYaZpxSYG31amL - AdXitTWFipaIGea9lEGFM0L9+Bg7XzNn4nVLXokyEB3bgS4scG6QznX23FGk - - - - - - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_create_sunrise_with_secdns_maxsiglife.xml b/javatests/google/registry/flows/domain/testdata/domain_create_sunrise_with_secdns_maxsiglife.xml deleted file mode 100644 index c467ecea9..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_create_sunrise_with_secdns_maxsiglife.xml +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - test-validate.tld - - ns1.example.net - ns2.example.net - - jd1234 - sh8013 - sh8013 - - 2fooBAR - - - - - - 604800 - - 12345 - 3 - 1 - 49FD46E6C4B45C55D4AC - - - - sunrise - -PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHNtZDpzaWduZWRNYXJrIHhtbG5zOnNtZD0idXJuOmlldGY6cGFyYW1zOnhtbDpuczpzaWduZWRNYXJrLTEuMCIgaWQ9Il8zOGFjNTg2ZC05OTg5LTQ4MTctYjcwOC1kOGU4MzQ0NzZkOTUiPgogIDxzbWQ6aWQ+MDAwMDAwMTc2MTM3NjA0Mjc1OTEzNi02NTUzNTwvc21kOmlkPgogIDxzbWQ6aXNzdWVySW5mbyBpc3N1ZXJJRD0iNjU1MzUiPgogICAgPHNtZDpvcmc+SUNBTk4gVE1DSCBURVNUSU5HIFRNVjwvc21kOm9yZz4KICAgIDxzbWQ6ZW1haWw+bm90YXZhaWxhYmxlQGV4YW1wbGUuY29tPC9zbWQ6ZW1haWw+CiAgICA8c21kOnVybD5odHRwOi8vd3d3LmV4YW1wbGUuY29tPC9zbWQ6dXJsPgogICAgPHNtZDp2b2ljZT4rMzIuMDAwMDAwPC9zbWQ6dm9pY2U+CiAgPC9zbWQ6aXNzdWVySW5mbz4KICA8c21kOm5vdEJlZm9yZT4yMDEzLTA4LTA5VDEwOjA1OjU5LjEzNlo8L3NtZDpub3RCZWZvcmU+CiAgPHNtZDpub3RBZnRlcj4yMDE3LTA3LTIzVDIyOjAwOjAwLjAwMFo8L3NtZDpub3RBZnRlcj4KICA8bWFyazptYXJrIHhtbG5zOm1hcms9InVybjppZXRmOnBhcmFtczp4bWw6bnM6bWFyay0xLjAiPgogICAgPG1hcms6Y291cnQ+CiAgICAgIDxtYXJrOmlkPjAwMDUyMDEzNzM0NjkxNjkxMzczNDY5MTY5LTY1NTM1PC9tYXJrOmlkPgogICAgICA8bWFyazptYXJrTmFtZT5UZXN0ICZhbXA7IFZhbGlkYXRlPC9tYXJrOm1hcmtOYW1lPgogICAgICA8bWFyazpob2xkZXIgZW50aXRsZW1lbnQ9Im93bmVyIj4KICAgICAgICA8bWFyazpvcmc+QWcgY29ycG9yYXRpb248L21hcms6b3JnPgogICAgICAgIDxtYXJrOmFkZHI+CiAgICAgICAgICA8bWFyazpzdHJlZXQ+MTMwNSBCcmlnaHQgQXZlbnVlPC9tYXJrOnN0cmVldD4KICAgICAgICAgIDxtYXJrOmNpdHk+QXJjYWRpYTwvbWFyazpjaXR5PgogICAgICAgICAgPG1hcms6c3A+Q0E8L21hcms6c3A+CiAgICAgICAgICA8bWFyazpwYz45MDAyODwvbWFyazpwYz4KICAgICAgICAgIDxtYXJrOmNjPlVTPC9tYXJrOmNjPgogICAgICAgIDwvbWFyazphZGRyPgogICAgICA8L21hcms6aG9sZGVyPgogICAgICA8bWFyazpjb250YWN0IHR5cGU9ImFnZW50Ij4KICAgICAgICA8bWFyazpuYW1lPlRvbnkgSG9sbGFuZDwvbWFyazpuYW1lPgogICAgICAgIDxtYXJrOm9yZz5BZyBjb3Jwb3JhdGlvbjwvbWFyazpvcmc+CiAgICAgICAgPG1hcms6YWRkcj4KICAgICAgICAgIDxtYXJrOnN0cmVldD4xMzA1IEJyaWdodCBBdmVudWU8L21hcms6c3RyZWV0PgogICAgICAgICAgPG1hcms6Y2l0eT5BcmNhZGlhPC9tYXJrOmNpdHk+CiAgICAgICAgICA8bWFyazpzcD5DQTwvbWFyazpzcD4KICAgICAgICAgIDxtYXJrOnBjPjkwMDI4PC9tYXJrOnBjPgogICAgICAgICAgPG1hcms6Y2M+VVM8L21hcms6Y2M+CiAgICAgICAgPC9tYXJrOmFkZHI+CiAgICAgICAgPG1hcms6dm9pY2U+KzEuMjAyNTU2MjMwMjwvbWFyazp2b2ljZT4KICAgICAgICA8bWFyazpmYXg+KzEuMjAyNTU2MjMwMTwvbWFyazpmYXg+CiAgICAgICAgPG1hcms6ZW1haWw+aW5mb0BhZ2NvcnBvcmF0aW9uLmNvbTwvbWFyazplbWFpbD4KICAgICAgPC9tYXJrOmNvbnRhY3Q+CiAgICAgIDxtYXJrOmxhYmVsPnRlc3RhbmR2YWxpZGF0ZTwvbWFyazpsYWJlbD4KICAgICAgPG1hcms6bGFiZWw+dGVzdC0tLXZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0YW5kLXZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LXZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LWFuZHZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LS12YWxpZGF0ZTwvbWFyazpsYWJlbD4KICAgICAgPG1hcms6bGFiZWw+dGVzdHZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LWFuZC12YWxpZGF0ZTwvbWFyazpsYWJlbD4KICAgICAgPG1hcms6Z29vZHNBbmRTZXJ2aWNlcz5NdXNpY2FsIGluc3RydW1lbnRzPC9tYXJrOmdvb2RzQW5kU2VydmljZXM+CiAgICAgIDxtYXJrOnJlZk51bT4xMjM0PC9tYXJrOnJlZk51bT4KICAgICAgPG1hcms6cHJvRGF0ZT4yMDEyLTEyLTMxVDIzOjAwOjAwLjAwMFo8L21hcms6cHJvRGF0ZT4KICAgICAgPG1hcms6Y2M+VVM8L21hcms6Y2M+CiAgICAgIDxtYXJrOmNvdXJ0TmFtZT5Ib3ZlPC9tYXJrOmNvdXJ0TmFtZT4KICAgIDwvbWFyazpjb3VydD4KICA8L21hcms6bWFyaz4KPGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgSWQ9Il9mZDBmMTM0Ni03MTM4LTRiMGMtODRkNy0yZTdlYmY2YTExNmMiPjxkczpTaWduZWRJbmZvPjxkczpDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PGRzOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI3JzYS1zaGEyNTYiLz48ZHM6UmVmZXJlbmNlIFVSST0iI18zOGFjNTg2ZC05OTg5LTQ4MTctYjcwOC1kOGU4MzQ0NzZkOTUiPjxkczpUcmFuc2Zvcm1zPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZW52ZWxvcGVkLXNpZ25hdHVyZSIvPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz48L2RzOlRyYW5zZm9ybXM+PGRzOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI3NoYTI1NiIvPjxkczpEaWdlc3RWYWx1ZT55WDRLTWgrUDJ2OVUxNnh0eTl2ZGU5S0JTZmZFTjRHbTVVa2tLblI5cDdZPTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PGRzOlJlZmVyZW5jZSBVUkk9IiNfYjg5MjI1NWItMWJjOC00MTdiLWE0NGYtZWE5OGJjMzQ5OWE0Ij48ZHM6VHJhbnNmb3Jtcz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PC9kczpUcmFuc2Zvcm1zPjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNzaGEyNTYiLz48ZHM6RGlnZXN0VmFsdWU+dDNuNkFBTHdiaUhNbGRyZkpEQjNYQ3FkSlFzOEhjeU5pK1lXT3ZoV1krdz08L2RzOkRpZ2VzdFZhbHVlPjwvZHM6UmVmZXJlbmNlPjwvZHM6U2lnbmVkSW5mbz48ZHM6U2lnbmF0dXJlVmFsdWUgSWQ9Il82OWQzMDRlNC04NzlmLTRmNzEtYmMxMi02ZjJhZDlmOTM5OGYiPmJSVFIzTzUxM0dnTkExS2pxb0g0VXE3cUlhN2NJaTljaXZmZmFyVmE0VVQyVEUzdzEzc2xsUDFXbkdYYjcyYUw0dXhkbDFUaTZZbFoKVnVjSC92ZU5zUnlWZFZwSFF0eEJNTDFLU0tZbXc3ZjdPNnVsYWtrYnFrTkdYVmFZdEVsa1dBZnZFSDBsNURkNkFZT0k2UGN5SzBCWgo2VEl3cWZhQ1luVk5DdTFpdDIzMm9EREtiWU9RNk02YnhmU3BvVFYvaTVVdEVyak0vZWFFanp4MXFxZzlFZmxOcm1obmRtZW42Q2JYCjVrNmZ4Y1o0V2NtWkM4V0Ruc0t0VWVjaGtmbko4L0Jwc2ppM1Foekg4YzFiL0RqTmR5UFFyOGlndXBqR2dlU0JmMHhRRUtoK3pRT2oKYTNvMEhRWjZ1UlUvejdWN2RoNU9qUEhmV2lLc0pqRjVwc2ppRlE9PTwvZHM6U2lnbmF0dXJlVmFsdWU+PGRzOktleUluZm8gSWQ9Il9iODkyMjU1Yi0xYmM4LTQxN2ItYTQ0Zi1lYTk4YmMzNDk5YTQiPjxkczpYNTA5RGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSUZMekNDQkJlZ0F3SUJBZ0lnTHJBYmV2b2FlNTJ5M2Y2QzJ0QjBTbjNwN1hKbTBUMDJGb2d4S0NmTmhYb3dEUVlKS29aSWh2Y04KQVFFTEJRQXdmREVMTUFrR0ExVUVCaE1DVlZNeFBEQTZCZ05WQkFvVE0wbHVkR1Z5Ym1WMElFTnZjbkJ2Y21GMGFXOXVJR1p2Y2lCQgpjM05wWjI1bFpDQk9ZVzFsY3lCaGJtUWdUblZ0WW1WeWN6RXZNQzBHQTFVRUF4TW1TVU5CVGs0Z1ZISmhaR1Z0WVhKcklFTnNaV0Z5CmFXNW5hRzkxYzJVZ1VHbHNiM1FnUTBFd0hoY05NVE13TmpJMk1EQXdNREF3V2hjTk1UZ3dOakkxTWpNMU9UVTVXakNCanpFTE1Ba0cKQTFVRUJoTUNRa1V4SURBZUJnTlZCQWdURjBKeWRYTnpaV3h6TFVOaGNHbDBZV3dnVW1WbmFXOXVNUkV3RHdZRFZRUUhFd2hDY25WegpjMlZzY3pFUk1BOEdBMVVFQ2hNSVJHVnNiMmwwZEdVeE9EQTJCZ05WQkFNVEwwbERRVTVPSUZSTlEwZ2dRWFYwYUc5eWFYcGxaQ0JVCmNtRmtaVzFoY21zZ1VHbHNiM1FnVm1Gc2FXUmhkRzl5TUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUEKeGxwM0twWUhYM1d5QXNGaFNrM0x3V2ZuR2x4blVERnFGWkEzVW91TVlqL1hpZ2JNa05lRVhJamxrUk9LVDRPUEdmUngvTEF5UmxRUQpqQ012NHFoYmtjWDFwN2FyNjNmbHE0U1pOVmNsMTVsN2gwdVQ1OEZ6U2ZubHowdTVya0hmSkltRDQzK21hUC84Z3YzNkZSMjdqVzhSCjl3WTRoaytXczRJQjBpRlNkOFNYdjFLcjh3L0ptTVFTRGtpdUcrUmZJaXVid1EvZnk3RWtqNVFXaFBadyttTXhOS25IVUx5M3hZejIKTHdWZmZ0andVdWVhY3ZxTlJDa01YbENsT0FEcWZUOG9TWm9lRFhlaEh2bFBzTENlbUdCb1RLdXJza0lTNjlGMHlQRUg1Z3plMEgrZgo4RlJPc0lvS1NzVlEzNEI0Uy9qb0U2N25wc0pQVGRLc05QSlR5UUlEQVFBQm80SUJoekNDQVlNd0RBWURWUjBUQVFIL0JBSXdBREFkCkJnTlZIUTRFRmdRVW9GcFk3NnA1eW9ORFJHdFFwelZ1UjgxVVdRMHdnY1lHQTFVZEl3U0J2akNCdTRBVXc2MCtwdFlSQUVXQVhEcFgKU29wdDNERU5ubkdoZ1lDa2ZqQjhNUXN3Q1FZRFZRUUdFd0pWVXpFOE1Eb0dBMVVFQ2hNelNXNTBaWEp1WlhRZ1EyOXljRzl5WVhScApiMjRnWm05eUlFRnpjMmxuYm1Wa0lFNWhiV1Z6SUdGdVpDQk9kVzFpWlhKek1TOHdMUVlEVlFRREV5WkpRMEZPVGlCVWNtRmtaVzFoCmNtc2dRMnhsWVhKcGJtZG9iM1Z6WlNCUWFXeHZkQ0JEUVlJZ0xyQWJldm9hZTUyeTNmNkMydEIwU24zcDdYSm0wVDAyRm9neEtDZk4KaFhrd0RnWURWUjBQQVFIL0JBUURBZ2VBTURRR0ExVWRId1F0TUNzd0thQW5vQ1dHSTJoMGRIQTZMeTlqY213dWFXTmhibTR1YjNKbgpMM1J0WTJoZmNHbHNiM1F1WTNKc01FVUdBMVVkSUFRK01Ed3dPZ1lES2dNRU1ETXdNUVlJS3dZQkJRVUhBZ0VXSldoMGRIQTZMeTkzCmQzY3VhV05oYm00dWIzSm5MM0JwYkc5MFgzSmxjRzl6YVhSdmNua3dEUVlKS29aSWh2Y05BUUVMQlFBRGdnRUJBSWVEWVlKcjYwVzMKeTlRcyszelJWSTlrZWtLb201dmtIT2FsQjN3SGFaSWFBRllwSTk4dFkwYVZOOWFHT04wdjZXUUYrbnZ6MUtSWlFiQXowMUJYdGFSSgo0bVBrYXJoaHVMbjlOa0J4cDhIUjVxY2MrS0g3Z3Y2ci9jMGlHM2JDTkorUVNyN1FmKzVNbE1vNnpMNVVkZFUvVDJqaWJNWENqL2YyCjFRdzN4OVFnb3lYTEZKOW96YUxnUTlSTWtMbE9temtDQWlYTjVBYjQzYUo5ZjdOMmdFMk5uUmpOS21tQzlBQlEwVFJ3RUtWTGhWbDEKVUdxQ0hKM0FsQlhXSVhONXNqUFFjRC8rbkhlRVhNeFl2bEF5cXhYb0QzTVd0UVZqN2oyb3FsYWtPQk1nRzgrcTJxWWxtQnRzNEZOaQp3NzQ4SWw1ODZIS0JScXhIdFpkUktXMlZxYVE9PC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9kczpTaWduYXR1cmU+PC9zbWQ6c2lnbmVkTWFyaz4= - - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_create_sunrise_without_marks.xml b/javatests/google/registry/flows/domain/testdata/domain_create_sunrise_without_marks.xml deleted file mode 100644 index e39070a0e..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_create_sunrise_without_marks.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - test-validate.tld - - ns1.example.net - ns2.example.net - - jd1234 - sh8013 - sh8013 - - 2fooBAR - - - - - - sunrise - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_create_sunrise_wrong_extension.xml b/javatests/google/registry/flows/domain/testdata/domain_create_sunrise_wrong_extension.xml deleted file mode 100644 index 153a3a2f5..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_create_sunrise_wrong_extension.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - test-validate.tld - - ns1.example.net - ns2.example.net - - jd1234 - sh8013 - sh8013 - - 2fooBAR - - - - - - - - 12345 - 3 - 1 - 49FD46E6C4B45C55D4AC - - - - - sunrise - -PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHNtZDpzaWduZWRNYXJrIHhtbG5zOnNtZD0idXJuOmlldGY6cGFyYW1zOnhtbDpuczpzaWduZWRNYXJrLTEuMCIgaWQ9Il8zOGFjNTg2ZC05OTg5LTQ4MTctYjcwOC1kOGU4MzQ0NzZkOTUiPgogIDxzbWQ6aWQ+MDAwMDAwMTc2MTM3NjA0Mjc1OTEzNi02NTUzNTwvc21kOmlkPgogIDxzbWQ6aXNzdWVySW5mbyBpc3N1ZXJJRD0iNjU1MzUiPgogICAgPHNtZDpvcmc+SUNBTk4gVE1DSCBURVNUSU5HIFRNVjwvc21kOm9yZz4KICAgIDxzbWQ6ZW1haWw+bm90YXZhaWxhYmxlQGV4YW1wbGUuY29tPC9zbWQ6ZW1haWw+CiAgICA8c21kOnVybD5odHRwOi8vd3d3LmV4YW1wbGUuY29tPC9zbWQ6dXJsPgogICAgPHNtZDp2b2ljZT4rMzIuMDAwMDAwPC9zbWQ6dm9pY2U+CiAgPC9zbWQ6aXNzdWVySW5mbz4KICA8c21kOm5vdEJlZm9yZT4yMDEzLTA4LTA5VDEwOjA1OjU5LjEzNlo8L3NtZDpub3RCZWZvcmU+CiAgPHNtZDpub3RBZnRlcj4yMDE3LTA3LTIzVDIyOjAwOjAwLjAwMFo8L3NtZDpub3RBZnRlcj4KICA8bWFyazptYXJrIHhtbG5zOm1hcms9InVybjppZXRmOnBhcmFtczp4bWw6bnM6bWFyay0xLjAiPgogICAgPG1hcms6Y291cnQ+CiAgICAgIDxtYXJrOmlkPjAwMDUyMDEzNzM0NjkxNjkxMzczNDY5MTY5LTY1NTM1PC9tYXJrOmlkPgogICAgICA8bWFyazptYXJrTmFtZT5UZXN0ICZhbXA7IFZhbGlkYXRlPC9tYXJrOm1hcmtOYW1lPgogICAgICA8bWFyazpob2xkZXIgZW50aXRsZW1lbnQ9Im93bmVyIj4KICAgICAgICA8bWFyazpvcmc+QWcgY29ycG9yYXRpb248L21hcms6b3JnPgogICAgICAgIDxtYXJrOmFkZHI+CiAgICAgICAgICA8bWFyazpzdHJlZXQ+MTMwNSBCcmlnaHQgQXZlbnVlPC9tYXJrOnN0cmVldD4KICAgICAgICAgIDxtYXJrOmNpdHk+QXJjYWRpYTwvbWFyazpjaXR5PgogICAgICAgICAgPG1hcms6c3A+Q0E8L21hcms6c3A+CiAgICAgICAgICA8bWFyazpwYz45MDAyODwvbWFyazpwYz4KICAgICAgICAgIDxtYXJrOmNjPlVTPC9tYXJrOmNjPgogICAgICAgIDwvbWFyazphZGRyPgogICAgICA8L21hcms6aG9sZGVyPgogICAgICA8bWFyazpjb250YWN0IHR5cGU9ImFnZW50Ij4KICAgICAgICA8bWFyazpuYW1lPlRvbnkgSG9sbGFuZDwvbWFyazpuYW1lPgogICAgICAgIDxtYXJrOm9yZz5BZyBjb3Jwb3JhdGlvbjwvbWFyazpvcmc+CiAgICAgICAgPG1hcms6YWRkcj4KICAgICAgICAgIDxtYXJrOnN0cmVldD4xMzA1IEJyaWdodCBBdmVudWU8L21hcms6c3RyZWV0PgogICAgICAgICAgPG1hcms6Y2l0eT5BcmNhZGlhPC9tYXJrOmNpdHk+CiAgICAgICAgICA8bWFyazpzcD5DQTwvbWFyazpzcD4KICAgICAgICAgIDxtYXJrOnBjPjkwMDI4PC9tYXJrOnBjPgogICAgICAgICAgPG1hcms6Y2M+VVM8L21hcms6Y2M+CiAgICAgICAgPC9tYXJrOmFkZHI+CiAgICAgICAgPG1hcms6dm9pY2U+KzEuMjAyNTU2MjMwMjwvbWFyazp2b2ljZT4KICAgICAgICA8bWFyazpmYXg+KzEuMjAyNTU2MjMwMTwvbWFyazpmYXg+CiAgICAgICAgPG1hcms6ZW1haWw+aW5mb0BhZ2NvcnBvcmF0aW9uLmNvbTwvbWFyazplbWFpbD4KICAgICAgPC9tYXJrOmNvbnRhY3Q+CiAgICAgIDxtYXJrOmxhYmVsPnRlc3RhbmR2YWxpZGF0ZTwvbWFyazpsYWJlbD4KICAgICAgPG1hcms6bGFiZWw+dGVzdC0tLXZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0YW5kLXZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LXZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LWFuZHZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LS12YWxpZGF0ZTwvbWFyazpsYWJlbD4KICAgICAgPG1hcms6bGFiZWw+dGVzdHZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LWFuZC12YWxpZGF0ZTwvbWFyazpsYWJlbD4KICAgICAgPG1hcms6Z29vZHNBbmRTZXJ2aWNlcz5NdXNpY2FsIGluc3RydW1lbnRzPC9tYXJrOmdvb2RzQW5kU2VydmljZXM+CiAgICAgIDxtYXJrOnJlZk51bT4xMjM0PC9tYXJrOnJlZk51bT4KICAgICAgPG1hcms6cHJvRGF0ZT4yMDEyLTEyLTMxVDIzOjAwOjAwLjAwMFo8L21hcms6cHJvRGF0ZT4KICAgICAgPG1hcms6Y2M+VVM8L21hcms6Y2M+CiAgICAgIDxtYXJrOmNvdXJ0TmFtZT5Ib3ZlPC9tYXJrOmNvdXJ0TmFtZT4KICAgIDwvbWFyazpjb3VydD4KICA8L21hcms6bWFyaz4KPGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgSWQ9Il9mZDBmMTM0Ni03MTM4LTRiMGMtODRkNy0yZTdlYmY2YTExNmMiPjxkczpTaWduZWRJbmZvPjxkczpDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PGRzOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI3JzYS1zaGEyNTYiLz48ZHM6UmVmZXJlbmNlIFVSST0iI18zOGFjNTg2ZC05OTg5LTQ4MTctYjcwOC1kOGU4MzQ0NzZkOTUiPjxkczpUcmFuc2Zvcm1zPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZW52ZWxvcGVkLXNpZ25hdHVyZSIvPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz48L2RzOlRyYW5zZm9ybXM+PGRzOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI3NoYTI1NiIvPjxkczpEaWdlc3RWYWx1ZT55WDRLTWgrUDJ2OVUxNnh0eTl2ZGU5S0JTZmZFTjRHbTVVa2tLblI5cDdZPTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PGRzOlJlZmVyZW5jZSBVUkk9IiNfYjg5MjI1NWItMWJjOC00MTdiLWE0NGYtZWE5OGJjMzQ5OWE0Ij48ZHM6VHJhbnNmb3Jtcz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PC9kczpUcmFuc2Zvcm1zPjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNzaGEyNTYiLz48ZHM6RGlnZXN0VmFsdWU+dDNuNkFBTHdiaUhNbGRyZkpEQjNYQ3FkSlFzOEhjeU5pK1lXT3ZoV1krdz08L2RzOkRpZ2VzdFZhbHVlPjwvZHM6UmVmZXJlbmNlPjwvZHM6U2lnbmVkSW5mbz48ZHM6U2lnbmF0dXJlVmFsdWUgSWQ9Il82OWQzMDRlNC04NzlmLTRmNzEtYmMxMi02ZjJhZDlmOTM5OGYiPmJSVFIzTzUxM0dnTkExS2pxb0g0VXE3cUlhN2NJaTljaXZmZmFyVmE0VVQyVEUzdzEzc2xsUDFXbkdYYjcyYUw0dXhkbDFUaTZZbFoKVnVjSC92ZU5zUnlWZFZwSFF0eEJNTDFLU0tZbXc3ZjdPNnVsYWtrYnFrTkdYVmFZdEVsa1dBZnZFSDBsNURkNkFZT0k2UGN5SzBCWgo2VEl3cWZhQ1luVk5DdTFpdDIzMm9EREtiWU9RNk02YnhmU3BvVFYvaTVVdEVyak0vZWFFanp4MXFxZzlFZmxOcm1obmRtZW42Q2JYCjVrNmZ4Y1o0V2NtWkM4V0Ruc0t0VWVjaGtmbko4L0Jwc2ppM1Foekg4YzFiL0RqTmR5UFFyOGlndXBqR2dlU0JmMHhRRUtoK3pRT2oKYTNvMEhRWjZ1UlUvejdWN2RoNU9qUEhmV2lLc0pqRjVwc2ppRlE9PTwvZHM6U2lnbmF0dXJlVmFsdWU+PGRzOktleUluZm8gSWQ9Il9iODkyMjU1Yi0xYmM4LTQxN2ItYTQ0Zi1lYTk4YmMzNDk5YTQiPjxkczpYNTA5RGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSUZMekNDQkJlZ0F3SUJBZ0lnTHJBYmV2b2FlNTJ5M2Y2QzJ0QjBTbjNwN1hKbTBUMDJGb2d4S0NmTmhYb3dEUVlKS29aSWh2Y04KQVFFTEJRQXdmREVMTUFrR0ExVUVCaE1DVlZNeFBEQTZCZ05WQkFvVE0wbHVkR1Z5Ym1WMElFTnZjbkJ2Y21GMGFXOXVJR1p2Y2lCQgpjM05wWjI1bFpDQk9ZVzFsY3lCaGJtUWdUblZ0WW1WeWN6RXZNQzBHQTFVRUF4TW1TVU5CVGs0Z1ZISmhaR1Z0WVhKcklFTnNaV0Z5CmFXNW5hRzkxYzJVZ1VHbHNiM1FnUTBFd0hoY05NVE13TmpJMk1EQXdNREF3V2hjTk1UZ3dOakkxTWpNMU9UVTVXakNCanpFTE1Ba0cKQTFVRUJoTUNRa1V4SURBZUJnTlZCQWdURjBKeWRYTnpaV3h6TFVOaGNHbDBZV3dnVW1WbmFXOXVNUkV3RHdZRFZRUUhFd2hDY25WegpjMlZzY3pFUk1BOEdBMVVFQ2hNSVJHVnNiMmwwZEdVeE9EQTJCZ05WQkFNVEwwbERRVTVPSUZSTlEwZ2dRWFYwYUc5eWFYcGxaQ0JVCmNtRmtaVzFoY21zZ1VHbHNiM1FnVm1Gc2FXUmhkRzl5TUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUEKeGxwM0twWUhYM1d5QXNGaFNrM0x3V2ZuR2x4blVERnFGWkEzVW91TVlqL1hpZ2JNa05lRVhJamxrUk9LVDRPUEdmUngvTEF5UmxRUQpqQ012NHFoYmtjWDFwN2FyNjNmbHE0U1pOVmNsMTVsN2gwdVQ1OEZ6U2ZubHowdTVya0hmSkltRDQzK21hUC84Z3YzNkZSMjdqVzhSCjl3WTRoaytXczRJQjBpRlNkOFNYdjFLcjh3L0ptTVFTRGtpdUcrUmZJaXVid1EvZnk3RWtqNVFXaFBadyttTXhOS25IVUx5M3hZejIKTHdWZmZ0andVdWVhY3ZxTlJDa01YbENsT0FEcWZUOG9TWm9lRFhlaEh2bFBzTENlbUdCb1RLdXJza0lTNjlGMHlQRUg1Z3plMEgrZgo4RlJPc0lvS1NzVlEzNEI0Uy9qb0U2N25wc0pQVGRLc05QSlR5UUlEQVFBQm80SUJoekNDQVlNd0RBWURWUjBUQVFIL0JBSXdBREFkCkJnTlZIUTRFRmdRVW9GcFk3NnA1eW9ORFJHdFFwelZ1UjgxVVdRMHdnY1lHQTFVZEl3U0J2akNCdTRBVXc2MCtwdFlSQUVXQVhEcFgKU29wdDNERU5ubkdoZ1lDa2ZqQjhNUXN3Q1FZRFZRUUdFd0pWVXpFOE1Eb0dBMVVFQ2hNelNXNTBaWEp1WlhRZ1EyOXljRzl5WVhScApiMjRnWm05eUlFRnpjMmxuYm1Wa0lFNWhiV1Z6SUdGdVpDQk9kVzFpWlhKek1TOHdMUVlEVlFRREV5WkpRMEZPVGlCVWNtRmtaVzFoCmNtc2dRMnhsWVhKcGJtZG9iM1Z6WlNCUWFXeHZkQ0JEUVlJZ0xyQWJldm9hZTUyeTNmNkMydEIwU24zcDdYSm0wVDAyRm9neEtDZk4KaFhrd0RnWURWUjBQQVFIL0JBUURBZ2VBTURRR0ExVWRId1F0TUNzd0thQW5vQ1dHSTJoMGRIQTZMeTlqY213dWFXTmhibTR1YjNKbgpMM1J0WTJoZmNHbHNiM1F1WTNKc01FVUdBMVVkSUFRK01Ed3dPZ1lES2dNRU1ETXdNUVlJS3dZQkJRVUhBZ0VXSldoMGRIQTZMeTkzCmQzY3VhV05oYm00dWIzSm5MM0JwYkc5MFgzSmxjRzl6YVhSdmNua3dEUVlKS29aSWh2Y05BUUVMQlFBRGdnRUJBSWVEWVlKcjYwVzMKeTlRcyszelJWSTlrZWtLb201dmtIT2FsQjN3SGFaSWFBRllwSTk4dFkwYVZOOWFHT04wdjZXUUYrbnZ6MUtSWlFiQXowMUJYdGFSSgo0bVBrYXJoaHVMbjlOa0J4cDhIUjVxY2MrS0g3Z3Y2ci9jMGlHM2JDTkorUVNyN1FmKzVNbE1vNnpMNVVkZFUvVDJqaWJNWENqL2YyCjFRdzN4OVFnb3lYTEZKOW96YUxnUTlSTWtMbE9temtDQWlYTjVBYjQzYUo5ZjdOMmdFMk5uUmpOS21tQzlBQlEwVFJ3RUtWTGhWbDEKVUdxQ0hKM0FsQlhXSVhONXNqUFFjRC8rbkhlRVhNeFl2bEF5cXhYb0QzTVd0UVZqN2oyb3FsYWtPQk1nRzgrcTJxWWxtQnRzNEZOaQp3NzQ4SWw1ODZIS0JScXhIdFpkUktXMlZxYVE9PC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9kczpTaWduYXR1cmU+PC9zbWQ6c2lnbmVkTWFyaz4= - - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_create_sunrush.xml b/javatests/google/registry/flows/domain/testdata/domain_create_sunrush.xml deleted file mode 100644 index 5e3164b98..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_create_sunrush.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - test-validate.tld - - ns1.example.net - ns2.example.net - - jd1234 - sh8013 - sh8013 - - 2fooBAR - - - - - - sunrise - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_create_sunrush_13_nameservers.xml b/javatests/google/registry/flows/domain/testdata/domain_create_sunrush_13_nameservers.xml deleted file mode 100644 index 2c706bdbe..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_create_sunrush_13_nameservers.xml +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - test-validate.tld - - ns1.example.net - ns2.example.net - ns3.example.net - ns4.example.net - ns5.example.net - ns6.example.net - ns7.example.net - ns8.example.net - ns9.example.net - ns10.example.net - ns11.example.net - ns12.example.net - ns13.example.net - - jd1234 - sh8013 - sh8013 - - 2fooBAR - - - - - - sunrise - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_create_sunrush_14_nameservers.xml b/javatests/google/registry/flows/domain/testdata/domain_create_sunrush_14_nameservers.xml deleted file mode 100644 index fe587073f..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_create_sunrush_14_nameservers.xml +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - test-validate.tld - - ns1.example.net - ns2.example.net - ns3.example.net - ns4.example.net - ns5.example.net - ns6.example.net - ns7.example.net - ns8.example.net - ns9.example.net - ns10.example.net - ns11.example.net - ns12.example.net - ns13.example.net - ns14.example.net - - jd1234 - sh8013 - sh8013 - - 2fooBAR - - - - - - sunrise - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_create_sunrush_allowedinsunrise.xml b/javatests/google/registry/flows/domain/testdata/domain_create_sunrush_allowedinsunrise.xml deleted file mode 100644 index 2bcee19ed..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_create_sunrush_allowedinsunrise.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - test---validate.tld - - ns1.example.net - ns2.example.net - - jd1234 - sh8013 - sh8013 - - 2fooBAR - - - - - - sunrise - -PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHNtZDpzaWduZWRNYXJrIHhtbG5zOnNtZD0idXJuOmlldGY6cGFyYW1zOnhtbDpuczpzaWduZWRNYXJrLTEuMCIgaWQ9Il8zOGFjNTg2ZC05OTg5LTQ4MTctYjcwOC1kOGU4MzQ0NzZkOTUiPgogIDxzbWQ6aWQ+MDAwMDAwMTc2MTM3NjA0Mjc1OTEzNi02NTUzNTwvc21kOmlkPgogIDxzbWQ6aXNzdWVySW5mbyBpc3N1ZXJJRD0iNjU1MzUiPgogICAgPHNtZDpvcmc+SUNBTk4gVE1DSCBURVNUSU5HIFRNVjwvc21kOm9yZz4KICAgIDxzbWQ6ZW1haWw+bm90YXZhaWxhYmxlQGV4YW1wbGUuY29tPC9zbWQ6ZW1haWw+CiAgICA8c21kOnVybD5odHRwOi8vd3d3LmV4YW1wbGUuY29tPC9zbWQ6dXJsPgogICAgPHNtZDp2b2ljZT4rMzIuMDAwMDAwPC9zbWQ6dm9pY2U+CiAgPC9zbWQ6aXNzdWVySW5mbz4KICA8c21kOm5vdEJlZm9yZT4yMDEzLTA4LTA5VDEwOjA1OjU5LjEzNlo8L3NtZDpub3RCZWZvcmU+CiAgPHNtZDpub3RBZnRlcj4yMDE3LTA3LTIzVDIyOjAwOjAwLjAwMFo8L3NtZDpub3RBZnRlcj4KICA8bWFyazptYXJrIHhtbG5zOm1hcms9InVybjppZXRmOnBhcmFtczp4bWw6bnM6bWFyay0xLjAiPgogICAgPG1hcms6Y291cnQ+CiAgICAgIDxtYXJrOmlkPjAwMDUyMDEzNzM0NjkxNjkxMzczNDY5MTY5LTY1NTM1PC9tYXJrOmlkPgogICAgICA8bWFyazptYXJrTmFtZT5UZXN0ICZhbXA7IFZhbGlkYXRlPC9tYXJrOm1hcmtOYW1lPgogICAgICA8bWFyazpob2xkZXIgZW50aXRsZW1lbnQ9Im93bmVyIj4KICAgICAgICA8bWFyazpvcmc+QWcgY29ycG9yYXRpb248L21hcms6b3JnPgogICAgICAgIDxtYXJrOmFkZHI+CiAgICAgICAgICA8bWFyazpzdHJlZXQ+MTMwNSBCcmlnaHQgQXZlbnVlPC9tYXJrOnN0cmVldD4KICAgICAgICAgIDxtYXJrOmNpdHk+QXJjYWRpYTwvbWFyazpjaXR5PgogICAgICAgICAgPG1hcms6c3A+Q0E8L21hcms6c3A+CiAgICAgICAgICA8bWFyazpwYz45MDAyODwvbWFyazpwYz4KICAgICAgICAgIDxtYXJrOmNjPlVTPC9tYXJrOmNjPgogICAgICAgIDwvbWFyazphZGRyPgogICAgICA8L21hcms6aG9sZGVyPgogICAgICA8bWFyazpjb250YWN0IHR5cGU9ImFnZW50Ij4KICAgICAgICA8bWFyazpuYW1lPlRvbnkgSG9sbGFuZDwvbWFyazpuYW1lPgogICAgICAgIDxtYXJrOm9yZz5BZyBjb3Jwb3JhdGlvbjwvbWFyazpvcmc+CiAgICAgICAgPG1hcms6YWRkcj4KICAgICAgICAgIDxtYXJrOnN0cmVldD4xMzA1IEJyaWdodCBBdmVudWU8L21hcms6c3RyZWV0PgogICAgICAgICAgPG1hcms6Y2l0eT5BcmNhZGlhPC9tYXJrOmNpdHk+CiAgICAgICAgICA8bWFyazpzcD5DQTwvbWFyazpzcD4KICAgICAgICAgIDxtYXJrOnBjPjkwMDI4PC9tYXJrOnBjPgogICAgICAgICAgPG1hcms6Y2M+VVM8L21hcms6Y2M+CiAgICAgICAgPC9tYXJrOmFkZHI+CiAgICAgICAgPG1hcms6dm9pY2U+KzEuMjAyNTU2MjMwMjwvbWFyazp2b2ljZT4KICAgICAgICA8bWFyazpmYXg+KzEuMjAyNTU2MjMwMTwvbWFyazpmYXg+CiAgICAgICAgPG1hcms6ZW1haWw+aW5mb0BhZ2NvcnBvcmF0aW9uLmNvbTwvbWFyazplbWFpbD4KICAgICAgPC9tYXJrOmNvbnRhY3Q+CiAgICAgIDxtYXJrOmxhYmVsPnRlc3RhbmR2YWxpZGF0ZTwvbWFyazpsYWJlbD4KICAgICAgPG1hcms6bGFiZWw+dGVzdC0tLXZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0YW5kLXZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LXZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LWFuZHZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LS12YWxpZGF0ZTwvbWFyazpsYWJlbD4KICAgICAgPG1hcms6bGFiZWw+dGVzdHZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LWFuZC12YWxpZGF0ZTwvbWFyazpsYWJlbD4KICAgICAgPG1hcms6Z29vZHNBbmRTZXJ2aWNlcz5NdXNpY2FsIGluc3RydW1lbnRzPC9tYXJrOmdvb2RzQW5kU2VydmljZXM+CiAgICAgIDxtYXJrOnJlZk51bT4xMjM0PC9tYXJrOnJlZk51bT4KICAgICAgPG1hcms6cHJvRGF0ZT4yMDEyLTEyLTMxVDIzOjAwOjAwLjAwMFo8L21hcms6cHJvRGF0ZT4KICAgICAgPG1hcms6Y2M+VVM8L21hcms6Y2M+CiAgICAgIDxtYXJrOmNvdXJ0TmFtZT5Ib3ZlPC9tYXJrOmNvdXJ0TmFtZT4KICAgIDwvbWFyazpjb3VydD4KICA8L21hcms6bWFyaz4KPGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgSWQ9Il9mZDBmMTM0Ni03MTM4LTRiMGMtODRkNy0yZTdlYmY2YTExNmMiPjxkczpTaWduZWRJbmZvPjxkczpDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PGRzOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI3JzYS1zaGEyNTYiLz48ZHM6UmVmZXJlbmNlIFVSST0iI18zOGFjNTg2ZC05OTg5LTQ4MTctYjcwOC1kOGU4MzQ0NzZkOTUiPjxkczpUcmFuc2Zvcm1zPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZW52ZWxvcGVkLXNpZ25hdHVyZSIvPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz48L2RzOlRyYW5zZm9ybXM+PGRzOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI3NoYTI1NiIvPjxkczpEaWdlc3RWYWx1ZT55WDRLTWgrUDJ2OVUxNnh0eTl2ZGU5S0JTZmZFTjRHbTVVa2tLblI5cDdZPTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PGRzOlJlZmVyZW5jZSBVUkk9IiNfYjg5MjI1NWItMWJjOC00MTdiLWE0NGYtZWE5OGJjMzQ5OWE0Ij48ZHM6VHJhbnNmb3Jtcz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PC9kczpUcmFuc2Zvcm1zPjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNzaGEyNTYiLz48ZHM6RGlnZXN0VmFsdWU+dDNuNkFBTHdiaUhNbGRyZkpEQjNYQ3FkSlFzOEhjeU5pK1lXT3ZoV1krdz08L2RzOkRpZ2VzdFZhbHVlPjwvZHM6UmVmZXJlbmNlPjwvZHM6U2lnbmVkSW5mbz48ZHM6U2lnbmF0dXJlVmFsdWUgSWQ9Il82OWQzMDRlNC04NzlmLTRmNzEtYmMxMi02ZjJhZDlmOTM5OGYiPmJSVFIzTzUxM0dnTkExS2pxb0g0VXE3cUlhN2NJaTljaXZmZmFyVmE0VVQyVEUzdzEzc2xsUDFXbkdYYjcyYUw0dXhkbDFUaTZZbFoKVnVjSC92ZU5zUnlWZFZwSFF0eEJNTDFLU0tZbXc3ZjdPNnVsYWtrYnFrTkdYVmFZdEVsa1dBZnZFSDBsNURkNkFZT0k2UGN5SzBCWgo2VEl3cWZhQ1luVk5DdTFpdDIzMm9EREtiWU9RNk02YnhmU3BvVFYvaTVVdEVyak0vZWFFanp4MXFxZzlFZmxOcm1obmRtZW42Q2JYCjVrNmZ4Y1o0V2NtWkM4V0Ruc0t0VWVjaGtmbko4L0Jwc2ppM1Foekg4YzFiL0RqTmR5UFFyOGlndXBqR2dlU0JmMHhRRUtoK3pRT2oKYTNvMEhRWjZ1UlUvejdWN2RoNU9qUEhmV2lLc0pqRjVwc2ppRlE9PTwvZHM6U2lnbmF0dXJlVmFsdWU+PGRzOktleUluZm8gSWQ9Il9iODkyMjU1Yi0xYmM4LTQxN2ItYTQ0Zi1lYTk4YmMzNDk5YTQiPjxkczpYNTA5RGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSUZMekNDQkJlZ0F3SUJBZ0lnTHJBYmV2b2FlNTJ5M2Y2QzJ0QjBTbjNwN1hKbTBUMDJGb2d4S0NmTmhYb3dEUVlKS29aSWh2Y04KQVFFTEJRQXdmREVMTUFrR0ExVUVCaE1DVlZNeFBEQTZCZ05WQkFvVE0wbHVkR1Z5Ym1WMElFTnZjbkJ2Y21GMGFXOXVJR1p2Y2lCQgpjM05wWjI1bFpDQk9ZVzFsY3lCaGJtUWdUblZ0WW1WeWN6RXZNQzBHQTFVRUF4TW1TVU5CVGs0Z1ZISmhaR1Z0WVhKcklFTnNaV0Z5CmFXNW5hRzkxYzJVZ1VHbHNiM1FnUTBFd0hoY05NVE13TmpJMk1EQXdNREF3V2hjTk1UZ3dOakkxTWpNMU9UVTVXakNCanpFTE1Ba0cKQTFVRUJoTUNRa1V4SURBZUJnTlZCQWdURjBKeWRYTnpaV3h6TFVOaGNHbDBZV3dnVW1WbmFXOXVNUkV3RHdZRFZRUUhFd2hDY25WegpjMlZzY3pFUk1BOEdBMVVFQ2hNSVJHVnNiMmwwZEdVeE9EQTJCZ05WQkFNVEwwbERRVTVPSUZSTlEwZ2dRWFYwYUc5eWFYcGxaQ0JVCmNtRmtaVzFoY21zZ1VHbHNiM1FnVm1Gc2FXUmhkRzl5TUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUEKeGxwM0twWUhYM1d5QXNGaFNrM0x3V2ZuR2x4blVERnFGWkEzVW91TVlqL1hpZ2JNa05lRVhJamxrUk9LVDRPUEdmUngvTEF5UmxRUQpqQ012NHFoYmtjWDFwN2FyNjNmbHE0U1pOVmNsMTVsN2gwdVQ1OEZ6U2ZubHowdTVya0hmSkltRDQzK21hUC84Z3YzNkZSMjdqVzhSCjl3WTRoaytXczRJQjBpRlNkOFNYdjFLcjh3L0ptTVFTRGtpdUcrUmZJaXVid1EvZnk3RWtqNVFXaFBadyttTXhOS25IVUx5M3hZejIKTHdWZmZ0andVdWVhY3ZxTlJDa01YbENsT0FEcWZUOG9TWm9lRFhlaEh2bFBzTENlbUdCb1RLdXJza0lTNjlGMHlQRUg1Z3plMEgrZgo4RlJPc0lvS1NzVlEzNEI0Uy9qb0U2N25wc0pQVGRLc05QSlR5UUlEQVFBQm80SUJoekNDQVlNd0RBWURWUjBUQVFIL0JBSXdBREFkCkJnTlZIUTRFRmdRVW9GcFk3NnA1eW9ORFJHdFFwelZ1UjgxVVdRMHdnY1lHQTFVZEl3U0J2akNCdTRBVXc2MCtwdFlSQUVXQVhEcFgKU29wdDNERU5ubkdoZ1lDa2ZqQjhNUXN3Q1FZRFZRUUdFd0pWVXpFOE1Eb0dBMVVFQ2hNelNXNTBaWEp1WlhRZ1EyOXljRzl5WVhScApiMjRnWm05eUlFRnpjMmxuYm1Wa0lFNWhiV1Z6SUdGdVpDQk9kVzFpWlhKek1TOHdMUVlEVlFRREV5WkpRMEZPVGlCVWNtRmtaVzFoCmNtc2dRMnhsWVhKcGJtZG9iM1Z6WlNCUWFXeHZkQ0JEUVlJZ0xyQWJldm9hZTUyeTNmNkMydEIwU24zcDdYSm0wVDAyRm9neEtDZk4KaFhrd0RnWURWUjBQQVFIL0JBUURBZ2VBTURRR0ExVWRId1F0TUNzd0thQW5vQ1dHSTJoMGRIQTZMeTlqY213dWFXTmhibTR1YjNKbgpMM1J0WTJoZmNHbHNiM1F1WTNKc01FVUdBMVVkSUFRK01Ed3dPZ1lES2dNRU1ETXdNUVlJS3dZQkJRVUhBZ0VXSldoMGRIQTZMeTkzCmQzY3VhV05oYm00dWIzSm5MM0JwYkc5MFgzSmxjRzl6YVhSdmNua3dEUVlKS29aSWh2Y05BUUVMQlFBRGdnRUJBSWVEWVlKcjYwVzMKeTlRcyszelJWSTlrZWtLb201dmtIT2FsQjN3SGFaSWFBRllwSTk4dFkwYVZOOWFHT04wdjZXUUYrbnZ6MUtSWlFiQXowMUJYdGFSSgo0bVBrYXJoaHVMbjlOa0J4cDhIUjVxY2MrS0g3Z3Y2ci9jMGlHM2JDTkorUVNyN1FmKzVNbE1vNnpMNVVkZFUvVDJqaWJNWENqL2YyCjFRdzN4OVFnb3lYTEZKOW96YUxnUTlSTWtMbE9temtDQWlYTjVBYjQzYUo5ZjdOMmdFMk5uUmpOS21tQzlBQlEwVFJ3RUtWTGhWbDEKVUdxQ0hKM0FsQlhXSVhONXNqUFFjRC8rbkhlRVhNeFl2bEF5cXhYb0QzTVd0UVZqN2oyb3FsYWtPQk1nRzgrcTJxWWxtQnRzNEZOaQp3NzQ4SWw1ODZIS0JScXhIdFpkUktXMlZxYVE9PC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9kczpTaWduYXR1cmU+PC9zbWQ6c2lnbmVkTWFyaz4= - - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_create_sunrush_allowedinsunrise_response.xml b/javatests/google/registry/flows/domain/testdata/domain_create_sunrush_allowedinsunrise_response.xml deleted file mode 100644 index 51c377a10..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_create_sunrush_allowedinsunrise_response.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - Command completed successfully - - - - test---validate.tld - 2013-08-09T12:05:59Z - - - - - sunrise - 1-TLD - - - - ABC-12345 - server-trid - - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_create_sunrush_bad_checksum_claim_notice.xml b/javatests/google/registry/flows/domain/testdata/domain_create_sunrush_bad_checksum_claim_notice.xml deleted file mode 100644 index b122136bb..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_create_sunrush_bad_checksum_claim_notice.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - example-one.tld - - ns1.example.net - ns2.example.net - - jd1234 - sh8013 - sh8013 - - 2fooBAR - - - - - - sunrise - - 370d0b7c9223372036854775808 - 2010-08-16T09:00:00.0Z - 2009-08-16T09:00:00.0Z - - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_create_sunrush_bad_idn_minna.xml b/javatests/google/registry/flows/domain/testdata/domain_create_sunrush_bad_idn_minna.xml deleted file mode 100644 index 4f00ff1ad..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_create_sunrush_bad_idn_minna.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - xn--6ca193v6danctkyk.xn--q9jyb4c - 2 - - ns1.example.net - ns2.example.net - - jd1234 - sh8013 - sh8013 - - 2fooBAR - - - - - - sunrise - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_create_sunrush_bad_validator_id.xml b/javatests/google/registry/flows/domain/testdata/domain_create_sunrush_bad_validator_id.xml deleted file mode 100644 index e94d084c5..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_create_sunrush_bad_validator_id.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - exampleone.tld - - ns1.example.net - ns2.example.net - - jd1234 - sh8013 - sh8013 - - 2fooBAR - - - - - - sunrise - - 49FD46E6C4B45C55D4AC - 2012-06-19T10:00:10.0Z - 2012-06-19T09:01:30.0Z - - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_create_sunrush_claim_notice.xml b/javatests/google/registry/flows/domain/testdata/domain_create_sunrush_claim_notice.xml deleted file mode 100644 index b09b26fe2..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_create_sunrush_claim_notice.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - example-one.tld - - ns1.example.net - ns2.example.net - - jd1234 - sh8013 - sh8013 - - 2fooBAR - - - - - - sunrise - - 370d0b7c9223372036854775807 - 2010-08-16T09:00:00.0Z - 2009-08-16T09:00:00.0Z - - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_create_sunrush_encoded_signed_mark.xml b/javatests/google/registry/flows/domain/testdata/domain_create_sunrush_encoded_signed_mark.xml deleted file mode 100644 index 9a725ae4c..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_create_sunrush_encoded_signed_mark.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - test-validate.tld - - ns1.example.net - ns2.example.net - - jd1234 - sh8013 - sh8013 - - 2fooBAR - - - - - - sunrise - -PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHNtZDpzaWduZWRNYXJrIHhtbG5zOnNtZD0idXJuOmlldGY6cGFyYW1zOnhtbDpuczpzaWduZWRNYXJrLTEuMCIgaWQ9Il8zOGFjNTg2ZC05OTg5LTQ4MTctYjcwOC1kOGU4MzQ0NzZkOTUiPgogIDxzbWQ6aWQ+MDAwMDAwMTc2MTM3NjA0Mjc1OTEzNi02NTUzNTwvc21kOmlkPgogIDxzbWQ6aXNzdWVySW5mbyBpc3N1ZXJJRD0iNjU1MzUiPgogICAgPHNtZDpvcmc+SUNBTk4gVE1DSCBURVNUSU5HIFRNVjwvc21kOm9yZz4KICAgIDxzbWQ6ZW1haWw+bm90YXZhaWxhYmxlQGV4YW1wbGUuY29tPC9zbWQ6ZW1haWw+CiAgICA8c21kOnVybD5odHRwOi8vd3d3LmV4YW1wbGUuY29tPC9zbWQ6dXJsPgogICAgPHNtZDp2b2ljZT4rMzIuMDAwMDAwPC9zbWQ6dm9pY2U+CiAgPC9zbWQ6aXNzdWVySW5mbz4KICA8c21kOm5vdEJlZm9yZT4yMDEzLTA4LTA5VDEwOjA1OjU5LjEzNlo8L3NtZDpub3RCZWZvcmU+CiAgPHNtZDpub3RBZnRlcj4yMDE3LTA3LTIzVDIyOjAwOjAwLjAwMFo8L3NtZDpub3RBZnRlcj4KICA8bWFyazptYXJrIHhtbG5zOm1hcms9InVybjppZXRmOnBhcmFtczp4bWw6bnM6bWFyay0xLjAiPgogICAgPG1hcms6Y291cnQ+CiAgICAgIDxtYXJrOmlkPjAwMDUyMDEzNzM0NjkxNjkxMzczNDY5MTY5LTY1NTM1PC9tYXJrOmlkPgogICAgICA8bWFyazptYXJrTmFtZT5UZXN0ICZhbXA7IFZhbGlkYXRlPC9tYXJrOm1hcmtOYW1lPgogICAgICA8bWFyazpob2xkZXIgZW50aXRsZW1lbnQ9Im93bmVyIj4KICAgICAgICA8bWFyazpvcmc+QWcgY29ycG9yYXRpb248L21hcms6b3JnPgogICAgICAgIDxtYXJrOmFkZHI+CiAgICAgICAgICA8bWFyazpzdHJlZXQ+MTMwNSBCcmlnaHQgQXZlbnVlPC9tYXJrOnN0cmVldD4KICAgICAgICAgIDxtYXJrOmNpdHk+QXJjYWRpYTwvbWFyazpjaXR5PgogICAgICAgICAgPG1hcms6c3A+Q0E8L21hcms6c3A+CiAgICAgICAgICA8bWFyazpwYz45MDAyODwvbWFyazpwYz4KICAgICAgICAgIDxtYXJrOmNjPlVTPC9tYXJrOmNjPgogICAgICAgIDwvbWFyazphZGRyPgogICAgICA8L21hcms6aG9sZGVyPgogICAgICA8bWFyazpjb250YWN0IHR5cGU9ImFnZW50Ij4KICAgICAgICA8bWFyazpuYW1lPlRvbnkgSG9sbGFuZDwvbWFyazpuYW1lPgogICAgICAgIDxtYXJrOm9yZz5BZyBjb3Jwb3JhdGlvbjwvbWFyazpvcmc+CiAgICAgICAgPG1hcms6YWRkcj4KICAgICAgICAgIDxtYXJrOnN0cmVldD4xMzA1IEJyaWdodCBBdmVudWU8L21hcms6c3RyZWV0PgogICAgICAgICAgPG1hcms6Y2l0eT5BcmNhZGlhPC9tYXJrOmNpdHk+CiAgICAgICAgICA8bWFyazpzcD5DQTwvbWFyazpzcD4KICAgICAgICAgIDxtYXJrOnBjPjkwMDI4PC9tYXJrOnBjPgogICAgICAgICAgPG1hcms6Y2M+VVM8L21hcms6Y2M+CiAgICAgICAgPC9tYXJrOmFkZHI+CiAgICAgICAgPG1hcms6dm9pY2U+KzEuMjAyNTU2MjMwMjwvbWFyazp2b2ljZT4KICAgICAgICA8bWFyazpmYXg+KzEuMjAyNTU2MjMwMTwvbWFyazpmYXg+CiAgICAgICAgPG1hcms6ZW1haWw+aW5mb0BhZ2NvcnBvcmF0aW9uLmNvbTwvbWFyazplbWFpbD4KICAgICAgPC9tYXJrOmNvbnRhY3Q+CiAgICAgIDxtYXJrOmxhYmVsPnRlc3RhbmR2YWxpZGF0ZTwvbWFyazpsYWJlbD4KICAgICAgPG1hcms6bGFiZWw+dGVzdC0tLXZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0YW5kLXZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LXZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LWFuZHZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LS12YWxpZGF0ZTwvbWFyazpsYWJlbD4KICAgICAgPG1hcms6bGFiZWw+dGVzdHZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LWFuZC12YWxpZGF0ZTwvbWFyazpsYWJlbD4KICAgICAgPG1hcms6Z29vZHNBbmRTZXJ2aWNlcz5NdXNpY2FsIGluc3RydW1lbnRzPC9tYXJrOmdvb2RzQW5kU2VydmljZXM+CiAgICAgIDxtYXJrOnJlZk51bT4xMjM0PC9tYXJrOnJlZk51bT4KICAgICAgPG1hcms6cHJvRGF0ZT4yMDEyLTEyLTMxVDIzOjAwOjAwLjAwMFo8L21hcms6cHJvRGF0ZT4KICAgICAgPG1hcms6Y2M+VVM8L21hcms6Y2M+CiAgICAgIDxtYXJrOmNvdXJ0TmFtZT5Ib3ZlPC9tYXJrOmNvdXJ0TmFtZT4KICAgIDwvbWFyazpjb3VydD4KICA8L21hcms6bWFyaz4KPGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgSWQ9Il9mZDBmMTM0Ni03MTM4LTRiMGMtODRkNy0yZTdlYmY2YTExNmMiPjxkczpTaWduZWRJbmZvPjxkczpDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PGRzOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI3JzYS1zaGEyNTYiLz48ZHM6UmVmZXJlbmNlIFVSST0iI18zOGFjNTg2ZC05OTg5LTQ4MTctYjcwOC1kOGU4MzQ0NzZkOTUiPjxkczpUcmFuc2Zvcm1zPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZW52ZWxvcGVkLXNpZ25hdHVyZSIvPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz48L2RzOlRyYW5zZm9ybXM+PGRzOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI3NoYTI1NiIvPjxkczpEaWdlc3RWYWx1ZT55WDRLTWgrUDJ2OVUxNnh0eTl2ZGU5S0JTZmZFTjRHbTVVa2tLblI5cDdZPTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PGRzOlJlZmVyZW5jZSBVUkk9IiNfYjg5MjI1NWItMWJjOC00MTdiLWE0NGYtZWE5OGJjMzQ5OWE0Ij48ZHM6VHJhbnNmb3Jtcz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PC9kczpUcmFuc2Zvcm1zPjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNzaGEyNTYiLz48ZHM6RGlnZXN0VmFsdWU+dDNuNkFBTHdiaUhNbGRyZkpEQjNYQ3FkSlFzOEhjeU5pK1lXT3ZoV1krdz08L2RzOkRpZ2VzdFZhbHVlPjwvZHM6UmVmZXJlbmNlPjwvZHM6U2lnbmVkSW5mbz48ZHM6U2lnbmF0dXJlVmFsdWUgSWQ9Il82OWQzMDRlNC04NzlmLTRmNzEtYmMxMi02ZjJhZDlmOTM5OGYiPmJSVFIzTzUxM0dnTkExS2pxb0g0VXE3cUlhN2NJaTljaXZmZmFyVmE0VVQyVEUzdzEzc2xsUDFXbkdYYjcyYUw0dXhkbDFUaTZZbFoKVnVjSC92ZU5zUnlWZFZwSFF0eEJNTDFLU0tZbXc3ZjdPNnVsYWtrYnFrTkdYVmFZdEVsa1dBZnZFSDBsNURkNkFZT0k2UGN5SzBCWgo2VEl3cWZhQ1luVk5DdTFpdDIzMm9EREtiWU9RNk02YnhmU3BvVFYvaTVVdEVyak0vZWFFanp4MXFxZzlFZmxOcm1obmRtZW42Q2JYCjVrNmZ4Y1o0V2NtWkM4V0Ruc0t0VWVjaGtmbko4L0Jwc2ppM1Foekg4YzFiL0RqTmR5UFFyOGlndXBqR2dlU0JmMHhRRUtoK3pRT2oKYTNvMEhRWjZ1UlUvejdWN2RoNU9qUEhmV2lLc0pqRjVwc2ppRlE9PTwvZHM6U2lnbmF0dXJlVmFsdWU+PGRzOktleUluZm8gSWQ9Il9iODkyMjU1Yi0xYmM4LTQxN2ItYTQ0Zi1lYTk4YmMzNDk5YTQiPjxkczpYNTA5RGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSUZMekNDQkJlZ0F3SUJBZ0lnTHJBYmV2b2FlNTJ5M2Y2QzJ0QjBTbjNwN1hKbTBUMDJGb2d4S0NmTmhYb3dEUVlKS29aSWh2Y04KQVFFTEJRQXdmREVMTUFrR0ExVUVCaE1DVlZNeFBEQTZCZ05WQkFvVE0wbHVkR1Z5Ym1WMElFTnZjbkJ2Y21GMGFXOXVJR1p2Y2lCQgpjM05wWjI1bFpDQk9ZVzFsY3lCaGJtUWdUblZ0WW1WeWN6RXZNQzBHQTFVRUF4TW1TVU5CVGs0Z1ZISmhaR1Z0WVhKcklFTnNaV0Z5CmFXNW5hRzkxYzJVZ1VHbHNiM1FnUTBFd0hoY05NVE13TmpJMk1EQXdNREF3V2hjTk1UZ3dOakkxTWpNMU9UVTVXakNCanpFTE1Ba0cKQTFVRUJoTUNRa1V4SURBZUJnTlZCQWdURjBKeWRYTnpaV3h6TFVOaGNHbDBZV3dnVW1WbmFXOXVNUkV3RHdZRFZRUUhFd2hDY25WegpjMlZzY3pFUk1BOEdBMVVFQ2hNSVJHVnNiMmwwZEdVeE9EQTJCZ05WQkFNVEwwbERRVTVPSUZSTlEwZ2dRWFYwYUc5eWFYcGxaQ0JVCmNtRmtaVzFoY21zZ1VHbHNiM1FnVm1Gc2FXUmhkRzl5TUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUEKeGxwM0twWUhYM1d5QXNGaFNrM0x3V2ZuR2x4blVERnFGWkEzVW91TVlqL1hpZ2JNa05lRVhJamxrUk9LVDRPUEdmUngvTEF5UmxRUQpqQ012NHFoYmtjWDFwN2FyNjNmbHE0U1pOVmNsMTVsN2gwdVQ1OEZ6U2ZubHowdTVya0hmSkltRDQzK21hUC84Z3YzNkZSMjdqVzhSCjl3WTRoaytXczRJQjBpRlNkOFNYdjFLcjh3L0ptTVFTRGtpdUcrUmZJaXVid1EvZnk3RWtqNVFXaFBadyttTXhOS25IVUx5M3hZejIKTHdWZmZ0andVdWVhY3ZxTlJDa01YbENsT0FEcWZUOG9TWm9lRFhlaEh2bFBzTENlbUdCb1RLdXJza0lTNjlGMHlQRUg1Z3plMEgrZgo4RlJPc0lvS1NzVlEzNEI0Uy9qb0U2N25wc0pQVGRLc05QSlR5UUlEQVFBQm80SUJoekNDQVlNd0RBWURWUjBUQVFIL0JBSXdBREFkCkJnTlZIUTRFRmdRVW9GcFk3NnA1eW9ORFJHdFFwelZ1UjgxVVdRMHdnY1lHQTFVZEl3U0J2akNCdTRBVXc2MCtwdFlSQUVXQVhEcFgKU29wdDNERU5ubkdoZ1lDa2ZqQjhNUXN3Q1FZRFZRUUdFd0pWVXpFOE1Eb0dBMVVFQ2hNelNXNTBaWEp1WlhRZ1EyOXljRzl5WVhScApiMjRnWm05eUlFRnpjMmxuYm1Wa0lFNWhiV1Z6SUdGdVpDQk9kVzFpWlhKek1TOHdMUVlEVlFRREV5WkpRMEZPVGlCVWNtRmtaVzFoCmNtc2dRMnhsWVhKcGJtZG9iM1Z6WlNCUWFXeHZkQ0JEUVlJZ0xyQWJldm9hZTUyeTNmNkMydEIwU24zcDdYSm0wVDAyRm9neEtDZk4KaFhrd0RnWURWUjBQQVFIL0JBUURBZ2VBTURRR0ExVWRId1F0TUNzd0thQW5vQ1dHSTJoMGRIQTZMeTlqY213dWFXTmhibTR1YjNKbgpMM1J0WTJoZmNHbHNiM1F1WTNKc01FVUdBMVVkSUFRK01Ed3dPZ1lES2dNRU1ETXdNUVlJS3dZQkJRVUhBZ0VXSldoMGRIQTZMeTkzCmQzY3VhV05oYm00dWIzSm5MM0JwYkc5MFgzSmxjRzl6YVhSdmNua3dEUVlKS29aSWh2Y05BUUVMQlFBRGdnRUJBSWVEWVlKcjYwVzMKeTlRcyszelJWSTlrZWtLb201dmtIT2FsQjN3SGFaSWFBRllwSTk4dFkwYVZOOWFHT04wdjZXUUYrbnZ6MUtSWlFiQXowMUJYdGFSSgo0bVBrYXJoaHVMbjlOa0J4cDhIUjVxY2MrS0g3Z3Y2ci9jMGlHM2JDTkorUVNyN1FmKzVNbE1vNnpMNVVkZFUvVDJqaWJNWENqL2YyCjFRdzN4OVFnb3lYTEZKOW96YUxnUTlSTWtMbE9temtDQWlYTjVBYjQzYUo5ZjdOMmdFMk5uUmpOS21tQzlBQlEwVFJ3RUtWTGhWbDEKVUdxQ0hKM0FsQlhXSVhONXNqUFFjRC8rbkhlRVhNeFl2bEF5cXhYb0QzTVd0UVZqN2oyb3FsYWtPQk1nRzgrcTJxWWxtQnRzNEZOaQp3NzQ4SWw1ODZIS0JScXhIdFpkUktXMlZxYVE9PC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9kczpTaWduYXR1cmU+PC9zbWQ6c2lnbmVkTWFyaz4= - - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_create_sunrush_encoded_signed_mark_certificate_corrupt.xml b/javatests/google/registry/flows/domain/testdata/domain_create_sunrush_encoded_signed_mark_certificate_corrupt.xml deleted file mode 100644 index 8dc549e65..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_create_sunrush_encoded_signed_mark_certificate_corrupt.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - test-validate.tld - - ns1.example.net - ns2.example.net - - jd1234 - sh8013 - sh8013 - - 2fooBAR - - - - - - sunrise - -PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHNtZDpzaWduZWRNYXJrIHhtbG5zOnNtZD0idXJuOmlldGY6cGFyYW1zOnhtbDpuczpzaWduZWRNYXJrLTEuMCIgaWQ9Il8zOGFjNTg2ZC05OTg5LTQ4MTctYjcwOC1kOGU4MzQ0NzZkOTUiPgogIDxzbWQ6aWQ+MDAwMDAwMTc2MTM3NjA0Mjc1OTEzNi02NTUzNTwvc21kOmlkPgogIDxzbWQ6aXNzdWVySW5mbyBpc3N1ZXJJRD0iNjU1MzUiPgogICAgPHNtZDpvcmc+SUNBTk4gVE1DSCBURVNUSU5HIFRNVjwvc21kOm9yZz4KICAgIDxzbWQ6ZW1haWw+bm90YXZhaWxhYmxlQGV4YW1wbGUuY29tPC9zbWQ6ZW1haWw+CiAgICA8c21kOnVybD5odHRwOi8vd3d3LmV4YW1wbGUuY29tPC9zbWQ6dXJsPgogICAgPHNtZDp2b2ljZT4rMzIuMDAwMDAwPC9zbWQ6dm9pY2U+CiAgPC9zbWQ6aXNzdWVySW5mbz4KICA8c21kOm5vdEJlZm9yZT4yMDEzLTA4LTA5VDEwOjA1OjU5LjEzNlo8L3NtZDpub3RCZWZvcmU+CiAgPHNtZDpub3RBZnRlcj4yMDE3LTA3LTIzVDIyOjAwOjAwLjAwMFo8L3NtZDpub3RBZnRlcj4KICA8bWFyazptYXJrIHhtbG5zOm1hcms9InVybjppZXRmOnBhcmFtczp4bWw6bnM6bWFyay0xLjAiPgogICAgPG1hcms6Y291cnQ+CiAgICAgIDxtYXJrOmlkPjAwMDUyMDEzNzM0NjkxNjkxMzczNDY5MTY5LTY1NTM1PC9tYXJrOmlkPgogICAgICA8bWFyazptYXJrTmFtZT5UZXN0ICZhbXA7IFZhbGlkYXRlPC9tYXJrOm1hcmtOYW1lPgogICAgICA8bWFyazpob2xkZXIgZW50aXRsZW1lbnQ9Im93bmVyIj4KICAgICAgICA8bWFyazpvcmc+QWcgY29ycG9yYXRpb248L21hcms6b3JnPgogICAgICAgIDxtYXJrOmFkZHI+CiAgICAgICAgICA8bWFyazpzdHJlZXQ+MTMwNSBCcmlnaHQgQXZlbnVlPC9tYXJrOnN0cmVldD4KICAgICAgICAgIDxtYXJrOmNpdHk+QXJjYWRpYTwvbWFyazpjaXR5PgogICAgICAgICAgPG1hcms6c3A+Q0E8L21hcms6c3A+CiAgICAgICAgICA8bWFyazpwYz45MDAyODwvbWFyazpwYz4KICAgICAgICAgIDxtYXJrOmNjPlVTPC9tYXJrOmNjPgogICAgICAgIDwvbWFyazphZGRyPgogICAgICA8L21hcms6aG9sZGVyPgogICAgICA8bWFyazpjb250YWN0IHR5cGU9ImFnZW50Ij4KICAgICAgICA8bWFyazpuYW1lPlRvbnkgSG9sbGFuZDwvbWFyazpuYW1lPgogICAgICAgIDxtYXJrOm9yZz5BZyBjb3Jwb3JhdGlvbjwvbWFyazpvcmc+CiAgICAgICAgPG1hcms6YWRkcj4KICAgICAgICAgIDxtYXJrOnN0cmVldD4xMzA1IEJyaWdodCBBdmVudWU8L21hcms6c3RyZWV0PgogICAgICAgICAgPG1hcms6Y2l0eT5BcmNhZGlhPC9tYXJrOmNpdHk+CiAgICAgICAgICA8bWFyazpzcD5DQTwvbWFyazpzcD4KICAgICAgICAgIDxtYXJrOnBjPjkwMDI4PC9tYXJrOnBjPgogICAgICAgICAgPG1hcms6Y2M+VVM8L21hcms6Y2M+CiAgICAgICAgPC9tYXJrOmFkZHI+CiAgICAgICAgPG1hcms6dm9pY2U+KzEuMjAyNTU2MjMwMjwvbWFyazp2b2ljZT4KICAgICAgICA8bWFyazpmYXg+KzEuMjAyNTU2MjMwMTwvbWFyazpmYXg+CiAgICAgICAgPG1hcms6ZW1haWw+aW5mb0BhZ2NvcnBvcmF0aW9uLmNvbTwvbWFyazplbWFpbD4KICAgICAgPC9tYXJrOmNvbnRhY3Q+CiAgICAgIDxtYXJrOmxhYmVsPnRlc3RhbmR2YWxpZGF0ZTwvbWFyazpsYWJlbD4KICAgICAgPG1hcms6bGFiZWw+dGVzdC0tLXZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0YW5kLXZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LXZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LWFuZHZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LS12YWxpZGF0ZTwvbWFyazpsYWJlbD4KICAgICAgPG1hcms6bGFiZWw+dGVzdHZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LWFuZC12YWxpZGF0ZTwvbWFyazpsYWJlbD4KICAgICAgPG1hcms6Z29vZHNBbmRTZXJ2aWNlcz5NdXNpY2FsIGluc3RydW1lbnRzPC9tYXJrOmdvb2RzQW5kU2VydmljZXM+CiAgICAgIDxtYXJrOnJlZk51bT4xMjM0PC9tYXJrOnJlZk51bT4KICAgICAgPG1hcms6cHJvRGF0ZT4yMDEyLTEyLTMxVDIzOjAwOjAwLjAwMFo8L21hcms6cHJvRGF0ZT4KICAgICAgPG1hcms6Y2M+VVM8L21hcms6Y2M+CiAgICAgIDxtYXJrOmNvdXJ0TmFtZT5Ib3ZlPC9tYXJrOmNvdXJ0TmFtZT4KICAgIDwvbWFyazpjb3VydD4KICA8L21hcms6bWFyaz4KPGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgSWQ9Il9mZDBmMTM0Ni03MTM4LTRiMGMtODRkNy0yZTdlYmY2YTExNmMiPjxkczpTaWduZWRJbmZvPjxkczpDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PGRzOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI3JzYS1zaGEyNTYiLz48ZHM6UmVmZXJlbmNlIFVSST0iI18zOGFjNTg2ZC05OTg5LTQ4MTctYjcwOC1kOGU4MzQ0NzZkOTUiPjxkczpUcmFuc2Zvcm1zPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZW52ZWxvcGVkLXNpZ25hdHVyZSIvPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz48L2RzOlRyYW5zZm9ybXM+PGRzOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI3NoYTI1NiIvPjxkczpEaWdlc3RWYWx1ZT55WDRLTWgrUDJ2OVUxNnh0eTl2ZGU5S0JTZmZFTjRHbTVVa2tLblI5cDdZPTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PGRzOlJlZmVyZW5jZSBVUkk9IiNfYjg5MjI1NWItMWJjOC00MTdiLWE0NGYtZWE5OGJjMzQ5OWE0Ij48ZHM6VHJhbnNmb3Jtcz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PC9kczpUcmFuc2Zvcm1zPjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNzaGEyNTYiLz48ZHM6RGlnZXN0VmFsdWU+dDNuNkFBTHdiaUhNbGRyZkpEQjNYQ3FkSlFzOEhjeU5pK1lXT3ZoV1krdz08L2RzOkRpZ2VzdFZhbHVlPjwvZHM6UmVmZXJlbmNlPjwvZHM6U2lnbmVkSW5mbz48ZHM6U2lnbmF0dXJlVmFsdWUgSWQ9Il82OWQzMDRlNC04NzlmLTRmNzEtYmMxMi02ZjJhZDlmOTM5OGYiPmJSVFIzTzUxM0dnTkExS2pxb0g0VXE3cUlhN2NJaTljaXZmZmFyVmE0VVQyVEUzdzEzc2xsUDFXbkdYYjcyYUw0dXhkbDFUaTZZbFoKVnVjSC92ZU5zUnlWZFZwSFF0eEJNTDFLU0tZbXc3ZjdPNnVsYWtrYnFrTkdYVmFZdEVsa1dBZnZFSDBsNURkNkFZT0k2UGN5SzBCWgo2VEl3cWZhQ1luVk5DdTFpdDIzMm9EREtiWU9RNk02YnhmU3BvVFYvaTVVdEVyak0vZWFFanp4MXFxZzlFZmxOcm1obmRtZW42Q2JYCjVrNmZ4Y1o0V2NtWkM4V0Ruc0t0VWVjaGtmbko4L0Jwc2ppM1Foekg4YzFiL0RqTmR5UFFyOGlndXBqR2dlU0JmMHhRRUtoK3pRT2oKYTNvMEhRWjZ1UlUvejdWN2RoNU9qUEhmV2lLc0pqRjVwc2ppRlE9PTwvZHM6U2lnbmF0dXJlVmFsdWU+PGRzOktleUluZm8gSWQ9Il9iODkyMjU1Yi0xYmM4LTQxN2ItYTQ0Zi1lYTk4YmMzNDk5YTQiPjxkczpYNTA5RGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSUZMekNDQkJlZ0F3SUJBZ0lnTHJBYmV2b2FlNTJ5M2Y2QzJ0QjBTbjNwN1hKbTBUMDJGb2d4S0NmTmhYb3dEUVlKS29aSWh2Y04KQVFFTEJRQXdmREVMTUFrR0ExVUVCaE1DVlZNeFBEQTZCZ05WQkFvVE0wbHVkR1Z5Ym1WMElFTnZjbkJ2Y21GMGFXOXVJR1p2Y2lCYwpjM05wWjI1bFpDQk9ZVzFsY3lCaGJtUWdUblZ0WW1WeWN6RXZNQzBHQTFVRUF4TW1TVU5CVGs0Z1ZISmhaR1Z0WVhKcklFTnNaV0ZkCmFXNW5hRzkxYzJVZ1VHbHNiM1FnUTBFd0hoY05NVE13TmpJMk1EQXdNREF3V2hjTk1UZ3dOakkxTWpNMU9UVTVXakNCanpFTE1Ba2YKQTFVRUJoTUNRa1V4SURBZUJnTlZCQWdURjBKeWRYTnpaV3h6TFVOaGNHbDBZV3dnVW1WbmFXOXVNUkV3RHdZRFZRUUhFd2hDY25WZwpjMlZzY3pFUk1BOEdBMVVFQ2hNSVJHVnNiMmwwZEdVeE9EQTJCZ05WQkFNVEwwbERRVTVPSUZSTlEwZ2dRWFYwYUc5eWFYcGxaQ0JhCmNtRmtaVzFoY21zZ1VHbHNiM1FnVm1Gc2FXUmhkRzl5TUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRWEKeGxwM0twWUhYM1d5QXNGaFNrM0x3V2ZuR2x4blVERnFGWkEzVW91TVlqL1hpZ2JNa05lRVhJamxrUk9LVDRPUEdmUngvTEF5UmxRUQpqQ012NHFoYmtjWDFwN2FyNjNmbHE0U1pOVmNsMTVsN2gwdVQ1OEZ6U2ZubHowdTVya0hmSkltRDQzK21hUC84Z3YzNkZSMjdqVzhSCjl3WTRoaytXczRJQjBpRlNkOFNYdjFLcjh3L0ptTVFTRGtpdUcrUmZJaXVid1EvZnk3RWtqNVFXaFBadyttTXhOS25IVUx5M3hZejIKTHdWZmZ0andVdWVhY3ZxTlJDa01YbENsT0FEcWZUOG9TWm9lRFhlaEh2bFBzTENlbUdCb1RLdXJza0lTNjlGMHlQRUg1Z3plMEgrZgo4RlJPc0lvS1NzVlEzNEI0Uy9qb0U2N25wc0pQVGRLc05QSlR5UUlEQVFBQm80SUJoekNDQVlNd0RBWURWUjBUQVFIL0JBSXdBREFkCkJnTlZIUTRFRmdRVW9GcFk3NnA1eW9ORFJHdFFwelZ1UjgxVVdRMHdnY1lHQTFVZEl3U0J2akNCdTRBVXc2MCtwdFlSQUVXQVhEcFgKU29wdDNERU5ubkdoZ1lDa2ZqQjhNUXN3Q1FZRFZRUUdFd0pWVXpFOE1Eb0dBMVVFQ2hNelNXNTBaWEp1WlhRZ1EyOXljRzl5WVhScApiMjRnWm05eUlFRnpjMmxuYm1Wa0lFNWhiV1Z6SUdGdVpDQk9kVzFpWlhKek1TOHdMUVlEVlFRREV5WkpRMEZPVGlCVWNtRmtaVzFoCmNtc2dRMnhsWVhKcGJtZG9iM1Z6WlNCUWFXeHZkQ0JEUVlJZ0xyQWJldm9hZTUyeTNmNkMydEIwU24zcDdYSm0wVDAyRm9neEtDZk4KaFhrd0RnWURWUjBQQVFIL0JBUURBZ2VBTURRR0ExVWRId1F0TUNzd0thQW5vQ1dHSTJoMGRIQTZMeTlqY213dWFXTmhibTR1YjNKbgpMM1J0WTJoZmNHbHNiM1F1WTNKc01FVUdBMVVkSUFRK01Ed3dPZ1lES2dNRU1ETXdNUVlJS3dZQkJRVUhBZ0VXSldoMGRIQTZMeTkzCmQzY3VhV05oYm00dWIzSm5MM0JwYkc5MFgzSmxjRzl6YVhSdmNua3dEUVlKS29aSWh2Y05BUUVMQlFBRGdnRUJBSWVEWVlKcjYwVzMKeTlRcyszelJWSTlrZWtLb201dmtIT2FsQjN3SGFaSWFBRllwSTk4dFkwYVZOOWFHT04wdjZXUUYrbnZ6MUtSWlFiQXowMUJYdGFSSgo0bVBrYXJoaHVMbjlOa0J4cDhIUjVxY2MrS0g3Z3Y2ci9jMGlHM2JDTkorUVNyN1FmKzVNbE1vNnpMNVVkZFUvVDJqaWJNWENqL2YyCjFRdzN4OVFnb3lYTEZKOW96YUxnUTlSTWtMbE9temtDQWlYTjVBYjQzYUo5ZjdOMmdFMk5uUmpOS21tQzlBQlEwVFJ3RUtWTGhWbDEKVUdxQ0hKM0FsQlhXSVhONXNqUFFjRC8rbkhlRVhNeFl2bEF5cXhYb0QzTVd0UVZqN2oyb3FsYWtPQk1nRzgrcTJxWWxtQnRzNEZOaQp3NzQ4SWw1ODZIS0JScXhIdFpkUktXMlZxYVE9PC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9kczpTaWduYXR1cmU+PC9zbWQ6c2lnbmVkTWFyaz4K - - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_create_sunrush_encoded_signed_mark_corrupt.xml b/javatests/google/registry/flows/domain/testdata/domain_create_sunrush_encoded_signed_mark_corrupt.xml deleted file mode 100644 index 32fcde60b..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_create_sunrush_encoded_signed_mark_corrupt.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - test-validate.tld - - ns1.example.net - ns2.example.net - - jd1234 - sh8013 - sh8013 - - 2fooBAR - - - - - - sunrise - -PD94bWwgdmVyc2lvbj0iMS4wIiB666666666666666lbmNvZGluZz0iVVRGLTgiPz4KPHNtZDpzaWduZWRNYXJrIHhtbG5zOnNtZD0idXJuOmlldGY6cGFyYW1zOnhtbDpuczpzaWduZWRNYXJrLTEuMCIgaWQ9Il8zOGFjNTg2ZC05OTg5LTQ4MTctYjcwOC1kOGU4MzQ0NzZkOTUiPgogIDxzbWQ6aWQ+MDAwMDAwMTc2MTM3NjA0Mjc1OTEzNi02NTUzNTwvc21kOmlkPgogIDxzbWQ6aXNzdWVySW5mbyBpc3N1ZXJJRD0iNjU1MzUiPgogICAgPHNtZDpvcmc+SUNBTk4gVE1DSCBURVNUSU5HIFRNVjwvc21kOm9yZz4KICAgIDxzbWQ6ZW1haWw+bm90YXZhaWxhYmxlQGV4YW1wbGUuY29tPC9zbWQ6ZW1haWw+CiAgICA8c21kOnVybD5odHRwOi8vd3d3LmV4YW1wbGUuY29tPC9zbWQ6dXJsPgogICAgPHNtZDp2b2ljZT4rMzIuMDAwMDAwPC9zbWQ6dm9pY2U+CiAgPC9zbWQ6aXNzdWVySW5mbz4KICA8c21kOm5vdEJlZm9yZT4yMDEzLTA4LTA5VDEwOjA1OjU5LjEzNlo8L3NtZDpub3RCZWZvcmU+CiAgPHNtZDpub3RBZnRlcj4yMDE3LTA3LTIzVDIyOjAwOjAwLjAwMFo8L3NtZDpub3RBZnRlcj4KICA8bWFyazptYXJrIHhtbG5zOm1hcms9InVybjppZXRmOnBhcmFtczp4bWw6bnM6bWFyay0xLjAiPgogICAgPG1hcms6Y291cnQ+CiAgICAgIDxtYXJrOmlkPjAwMDUyMDEzNzM0NjkxNjkxMzczNDY5MTY5LTY1NTM1PC9tYXJrOmlkPgogICAgICA8bWFyazptYXJrTmFtZT5UZXN0ICZhbXA7IFZhbGlkYXRlPC9tYXJrOm1hcmtOYW1lPgogICAgICA8bWFyazpob2xkZXIgZW50aXRsZW1lbnQ9Im93bmVyIj4KICAgICAgICA8bWFyazpvcmc+QWcgY29ycG9yYXRpb248L21hcms6b3JnPgogICAgICAgIDxtYXJrOmFkZHI+CiAgICAgICAgICA8bWFyazpzdHJlZXQ+MTMwNSBCcmlnaHQgQXZlbnVlPC9tYXJrOnN0cmVldD4KICAgICAgICAgIDxtYXJrOmNpdHk+QXJjYWRpYTwvbWFyazpjaXR5PgogICAgICAgICAgPG1hcms6c3A+Q0E8L21hcms6c3A+CiAgICAgICAgICA8bWFyazpwYz45MDAyODwvbWFyazpwYz4KICAgICAgICAgIDxtYXJrOmNjPlVTPC9tYXJrOmNjPgogICAgICAgIDwvbWFyazphZGRyPgogICAgICA8L21hcms6aG9sZGVyPgogICAgICA8bWFyazpjb250YWN0IHR5cGU9ImFnZW50Ij4KICAgICAgICA8bWFyazpuYW1lPlRvbnkgSG9sbGFuZDwvbWFyazpuYW1lPgogICAgICAgIDxtYXJrOm9yZz5BZyBjb3Jwb3JhdGlvbjwvbWFyazpvcmc+CiAgICAgICAgPG1hcms6YWRkcj4KICAgICAgICAgIDxtYXJrOnN0cmVldD4xMzA1IEJyaWdodCBBdmVudWU8L21hcms6c3RyZWV0PgogICAgICAgICAgPG1hcms6Y2l0eT5BcmNhZGlhPC9tYXJrOmNpdHk+CiAgICAgICAgICA8bWFyazpzcD5DQTwvbWFyazpzcD4KICAgICAgICAgIDxtYXJrOnBjPjkwMDI4PC9tYXJrOnBjPgogICAgICAgICAgPG1hcms6Y2M+VVM8L21hcms6Y2M+CiAgICAgICAgPC9tYXJrOmFkZHI+CiAgICAgICAgPG1hcms6dm9pY2U+KzEuMjAyNTU2MjMwMjwvbWFyazp2b2ljZT4KICAgICAgICA8bWFyazpmYXg+KzEuMjAyNTU2MjMwMTwvbWFyazpmYXg+CiAgICAgICAgPG1hcms6ZW1haWw+aW5mb0BhZ2NvcnBvcmF0aW9uLmNvbTwvbWFyazplbWFpbD4KICAgICAgPC9tYXJrOmNvbnRhY3Q+CiAgICAgIDxtYXJrOmxhYmVsPnRlc3RhbmR2YWxpZGF0ZTwvbWFyazpsYWJlbD4KICAgICAgPG1hcms6bGFiZWw+dGVzdC0tLXZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0YW5kLXZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LXZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LWFuZHZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LS12YWxpZGF0ZTwvbWFyazpsYWJlbD4KICAgICAgPG1hcms6bGFiZWw+dGVzdHZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LWFuZC12YWxpZGF0ZTwvbWFyazpsYWJlbD4KICAgICAgPG1hcms6Z29vZHNBbmRTZXJ2aWNlcz5NdXNpY2FsIGluc3RydW1lbnRzPC9tYXJrOmdvb2RzQW5kU2VydmljZXM+CiAgICAgIDxtYXJrOnJlZk51bT4xMjM0PC9tYXJrOnJlZk51bT4KICAgICAgPG1hcms6cHJvRGF0ZT4yMDEyLTEyLTMxVDIzOjAwOjAwLjAwMFo8L21hcms6cHJvRGF0ZT4KICAgICAgPG1hcms6Y2M+VVM8L21hcms6Y2M+CiAgICAgIDxtYXJrOmNvdXJ0TmFtZT5Ib3ZlPC9tYXJrOmNvdXJ0TmFtZT4KICAgIDwvbWFyazpjb3VydD4KICA8L21hcms6bWFyaz4KPGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgSWQ9Il9mZDBmMTM0Ni03MTM4LTRiMGMtODRkNy0yZTdlYmY2YTExNmMiPjxkczpTaWduZWRJbmZvPjxkczpDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PGRzOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI3JzYS1zaGEyNTYiLz48ZHM6UmVmZXJlbmNlIFVSST0iI18zOGFjNTg2ZC05OTg5LTQ4MTctYjcwOC1kOGU4MzQ0NzZkOTUiPjxkczpUcmFuc2Zvcm1zPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZW52ZWxvcGVkLXNpZ25hdHVyZSIvPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz48L2RzOlRyYW5zZm9ybXM+PGRzOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI3NoYTI1NiIvPjxkczpEaWdlc3RWYWx1ZT55WDRLTWgrUDJ2OVUxNnh0eTl2ZGU5S0JTZmZFTjRHbTVVa2tLblI5cDdZPTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PGRzOlJlZmVyZW5jZSBVUkk9IiNfYjg5MjI1NWItMWJjOC00MTdiLWE0NGYtZWE5OGJjMzQ5OWE0Ij48ZHM6VHJhbnNmb3Jtcz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PC9kczpUcmFuc2Zvcm1zPjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNzaGEyNTYiLz48ZHM6RGlnZXN0VmFsdWU+dDNuNkFBTHdiaUhNbGRyZkpEQjNYQ3FkSlFzOEhjeU5pK1lXT3ZoV1krdz08L2RzOkRpZ2VzdFZhbHVlPjwvZHM6UmVmZXJlbmNlPjwvZHM6U2lnbmVkSW5mbz48ZHM6U2lnbmF0dXJlVmFsdWUgSWQ9Il82OWQzMDRlNC04NzlmLTRmNzEtYmMxMi02ZjJhZDlmOTM5OGYiPmJSVFIzTzUxM0dnTkExS2pxb0g0VXE3cUlhN2NJaTljaXZmZmFyVmE0VVQyVEUzdzEzc2xsUDFXbkdYYjcyYUw0dXhkbDFUaTZZbFoKVnVjSC92ZU5zUnlWZFZwSFF0eEJNTDFLU0tZbXc3ZjdPNnVsYWtrYnFrTkdYVmFZdEVsa1dBZnZFSDBsNURkNkFZT0k2UGN5SzBCWgo2VEl3cWZhQ1luVk5DdTFpdDIzMm9EREtiWU9RNk02YnhmU3BvVFYvaTVVdEVyak0vZWFFanp4MXFxZzlFZmxOcm1obmRtZW42Q2JYCjVrNmZ4Y1o0V2NtWkM4V0Ruc0t0VWVjaGtmbko4L0Jwc2ppM1Foekg4YzFiL0RqTmR5UFFyOGlndXBqR2dlU0JmMHhRRUtoK3pRT2oKYTNvMEhRWjZ1UlUvejdWN2RoNU9qUEhmV2lLc0pqRjVwc2ppRlE9PTwvZHM6U2lnbmF0dXJlVmFsdWU+PGRzOktleUluZm8gSWQ9Il9iODkyMjU1Yi0xYmM4LTQxN2ItYTQ0Zi1lYTk4YmMzNDk5YTQiPjxkczpYNTA5RGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSUZMekNDQkJlZ0F3SUJBZ0lnTHJBYmV2b2FlNTJ5M2Y2QzJ0QjBTbjNwN1hKbTBUMDJGb2d4S0NmTmhYb3dEUVlKS29aSWh2Y04KQVFFTEJRQXdmREVMTUFrR0ExVUVCaE1DVlZNeFBEQTZCZ05WQkFvVE0wbHVkR1Z5Ym1WMElFTnZjbkJ2Y21GMGFXOXVJR1p2Y2lCQgpjM05wWjI1bFpDQk9ZVzFsY3lCaGJtUWdUblZ0WW1WeWN6RXZNQzBHQTFVRUF4TW1TVU5CVGs0Z1ZISmhaR1Z0WVhKcklFTnNaV0Z5CmFXNW5hRzkxYzJVZ1VHbHNiM1FnUTBFd0hoY05NVE13TmpJMk1EQXdNREF3V2hjTk1UZ3dOakkxTWpNMU9UVTVXakNCanpFTE1Ba0cKQTFVRUJoTUNRa1V4SURBZUJnTlZCQWdURjBKeWRYTnpaV3h6TFVOaGNHbDBZV3dnVW1WbmFXOXVNUkV3RHdZRFZRUUhFd2hDY25WegpjMlZzY3pFUk1BOEdBMVVFQ2hNSVJHVnNiMmwwZEdVeE9EQTJCZ05WQkFNVEwwbERRVTVPSUZSTlEwZ2dRWFYwYUc5eWFYcGxaQ0JVCmNtRmtaVzFoY21zZ1VHbHNiM1FnVm1Gc2FXUmhkRzl5TUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUEKeGxwM0twWUhYM1d5QXNGaFNrM0x3V2ZuR2x4blVERnFGWkEzVW91TVlqL1hpZ2JNa05lRVhJamxrUk9LVDRPUEdmUngvTEF5UmxRUQpqQ012NHFoYmtjWDFwN2FyNjNmbHE0U1pOVmNsMTVsN2gwdVQ1OEZ6U2ZubHowdTVya0hmSkltRDQzK21hUC84Z3YzNkZSMjdqVzhSCjl3WTRoaytXczRJQjBpRlNkOFNYdjFLcjh3L0ptTVFTRGtpdUcrUmZJaXVid1EvZnk3RWtqNVFXaFBadyttTXhOS25IVUx5M3hZejIKTHdWZmZ0andVdWVhY3ZxTlJDa01YbENsT0FEcWZUOG9TWm9lRFhlaEh2bFBzTENlbUdCb1RLdXJza0lTNjlGMHlQRUg1Z3plMEgrZgo4RlJPc0lvS1NzVlEzNEI0Uy9qb0U2N25wc0pQVGRLc05QSlR5UUlEQVFBQm80SUJoekNDQVlNd0RBWURWUjBUQVFIL0JBSXdBREFkCkJnTlZIUTRFRmdRVW9GcFk3NnA1eW9ORFJHdFFwelZ1UjgxVVdRMHdnY1lHQTFVZEl3U0J2akNCdTRBVXc2MCtwdFlSQUVXQVhEcFgKU29wdDNERU5ubkdoZ1lDa2ZqQjhNUXN3Q1FZRFZRUUdFd0pWVXpFOE1Eb0dBMVVFQ2hNelNXNTBaWEp1WlhRZ1EyOXljRzl5WVhScApiMjRnWm05eUlFRnpjMmxuYm1Wa0lFNWhiV1Z6SUdGdVpDQk9kVzFpWlhKek1TOHdMUVlEVlFRREV5WkpRMEZPVGlCVWNtRmtaVzFoCmNtc2dRMnhsWVhKcGJtZG9iM1Z6WlNCUWFXeHZkQ0JEUVlJZ0xyQWJldm9hZTUyeTNmNkMydEIwU24zcDdYSm0wVDAyRm9neEtDZk4KaFhrd0RnWURWUjBQQVFIL0JBUURBZ2VBTURRR0ExVWRId1F0TUNzd0thQW5vQ1dHSTJoMGRIQTZMeTlqY213dWFXTmhibTR1YjNKbgpMM1J0WTJoZmNHbHNiM1F1WTNKc01FVUdBMVVkSUFRK01Ed3dPZ1lES2dNRU1ETXdNUVlJS3dZQkJRVUhBZ0VXSldoMGRIQTZMeTkzCmQzY3VhV05oYm00dWIzSm5MM0JwYkc5MFgzSmxjRzl6YVhSdmNua3dEUVlKS29aSWh2Y05BUUVMQlFBRGdnRUJBSWVEWVlKcjYwVzMKeTlRcyszelJWSTlrZWtLb201dmtIT2FsQjN3SGFaSWFBRllwSTk4dFkwYVZOOWFHT04wdjZXUUYrbnZ6MUtSWlFiQXowMUJYdGFSSgo0bVBrYXJoaHVMbjlOa0J4cDhIUjVxY2MrS0g3Z3Y2ci9jMGlHM2JDTkorUVNyN1FmKzVNbE1vNnpMNVVkZFUvVDJqaWJNWENqL2YyCjFRdzN4OVFnb3lYTEZKOW96YUxnUTlSTWtMbE9temtDQWlYTjVBYjQzYUo5ZjdOMmdFMk5uUmpOS21tQzlBQlEwVFJ3RUtWTGhWbDEKVUdxQ0hKM0FsQlhXSVhONXNqUFFjRC8rbkhlRVhNeFl2bEF5cXhYb0QzTVd0UVZqN2oyb3FsYWtPQk1nRzgrcTJxWWxtQnRzNEZOaQp3NzQ4SWw1ODZIS0JScXhIdFpkUktXMlZxYVE9PC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9kczpTaWduYXR1cmU+PC9zbWQ6c2lnbmVkTWFyaz4= - - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_create_sunrush_encoded_signed_mark_response.xml b/javatests/google/registry/flows/domain/testdata/domain_create_sunrush_encoded_signed_mark_response.xml deleted file mode 100644 index 97c2801c6..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_create_sunrush_encoded_signed_mark_response.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - Command completed successfully - - - - test-validate.tld - 2013-08-09T12:05:59Z - - - - - sunrise - 1-TLD - - - - ABC-12345 - server-trid - - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_create_sunrush_encoded_signed_mark_revoked_cert.xml b/javatests/google/registry/flows/domain/testdata/domain_create_sunrush_encoded_signed_mark_revoked_cert.xml deleted file mode 100644 index d3504a855..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_create_sunrush_encoded_signed_mark_revoked_cert.xml +++ /dev/null @@ -1,136 +0,0 @@ - - - - - - - test-validate.tld - - ns1.example.net - ns2.example.net - - jd1234 - sh8013 - sh8013 - - 2fooBAR - - - - - - sunrise - -PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHNtZDpzaWduZWRNYXJrIHht -bG5zOnNtZD0idXJuOmlldGY6cGFyYW1zOnhtbDpuczpzaWduZWRNYXJrLTEuMCIgaWQ9Il9jYjEz -YjgwYy1hNTE4LTQ1MTktODUxYy0wYWUxNGMxZWJhZjMiPgogIDxzbWQ6aWQ+MDAwMDAwMTc3MTM3 -NTc4OTEwNDYwOC02NTUzNTwvc21kOmlkPgogIDxzbWQ6aXNzdWVySW5mbyBpc3N1ZXJJRD0iNjU1 -MzUiPgogICAgPHNtZDpvcmc+SUNBTk4gVE1DSCBURVNUSU5HIFRNVjwvc21kOm9yZz4KICAgIDxz -bWQ6ZW1haWw+bm90YXZhaWxhYmxlQGV4YW1wbGUuY29tPC9zbWQ6ZW1haWw+CiAgICA8c21kOnVy -bD5odHRwOi8vd3d3LmV4YW1wbGUuY29tPC9zbWQ6dXJsPgogICAgPHNtZDp2b2ljZT4rMzIuMDAw -MDAwPC9zbWQ6dm9pY2U+CiAgPC9zbWQ6aXNzdWVySW5mbz4KICA8c21kOm5vdEJlZm9yZT4yMDEz -LTA4LTA2VDExOjM4OjI0LjYwOFo8L3NtZDpub3RCZWZvcmU+CiAgPHNtZDpub3RBZnRlcj4yMDE3 -LTA3LTIzVDIyOjAwOjAwLjAwMFo8L3NtZDpub3RBZnRlcj4KICA8bWFyazptYXJrIHhtbG5zOm1h -cms9InVybjppZXRmOnBhcmFtczp4bWw6bnM6bWFyay0xLjAiPgogICAgPG1hcms6dHJlYXR5T3JT -dGF0dXRlPgogICAgICA8bWFyazppZD4wMDA1MjAxMzczNDY5MjQ0MTM3MzQ2OTI0NC02NTUzNTwv -bWFyazppZD4KICAgICAgPG1hcms6bWFya05hbWU+VGVzdCAmYW1wOyBWYWxpZGF0ZTwvbWFyazpt -YXJrTmFtZT4KICAgICAgPG1hcms6aG9sZGVyIGVudGl0bGVtZW50PSJvd25lciI+CiAgICAgICAg -PG1hcms6b3JnPkFnIGNvcnBvcmF0aW9uPC9tYXJrOm9yZz4KICAgICAgICA8bWFyazphZGRyPgog -ICAgICAgICAgPG1hcms6c3RyZWV0PjEzMDUgQnJpZ2h0IEF2ZW51ZTwvbWFyazpzdHJlZXQ+CiAg -ICAgICAgICA8bWFyazpjaXR5PkFyY2FkaWE8L21hcms6Y2l0eT4KICAgICAgICAgIDxtYXJrOnNw -PkNBPC9tYXJrOnNwPgogICAgICAgICAgPG1hcms6cGM+OTAwMjg8L21hcms6cGM+CiAgICAgICAg -ICA8bWFyazpjYz5VUzwvbWFyazpjYz4KICAgICAgICA8L21hcms6YWRkcj4KICAgICAgPC9tYXJr -OmhvbGRlcj4KICAgICAgPG1hcms6Y29udGFjdCB0eXBlPSJhZ2VudCI+CiAgICAgICAgPG1hcms6 -bmFtZT5Ub255IEhvbGxhbmQ8L21hcms6bmFtZT4KICAgICAgICA8bWFyazpvcmc+QWcgY29ycG9y -YXRpb248L21hcms6b3JnPgogICAgICAgIDxtYXJrOmFkZHI+CiAgICAgICAgICA8bWFyazpzdHJl -ZXQ+MTMwNSBCcmlnaHQgQXZlbnVlPC9tYXJrOnN0cmVldD4KICAgICAgICAgIDxtYXJrOmNpdHk+ -QXJjYWRpYTwvbWFyazpjaXR5PgogICAgICAgICAgPG1hcms6c3A+Q0E8L21hcms6c3A+CiAgICAg -ICAgICA8bWFyazpwYz45MDAyODwvbWFyazpwYz4KICAgICAgICAgIDxtYXJrOmNjPlVTPC9tYXJr -OmNjPgogICAgICAgIDwvbWFyazphZGRyPgogICAgICAgIDxtYXJrOnZvaWNlPisxLjIwMjU1NjIz -MDI8L21hcms6dm9pY2U+CiAgICAgICAgPG1hcms6ZmF4PisxLjIwMjU1NjIzMDE8L21hcms6ZmF4 -PgogICAgICAgIDxtYXJrOmVtYWlsPmluZm9AYWdjb3Jwb3JhdGlvbi5jb208L21hcms6ZW1haWw+ -CiAgICAgIDwvbWFyazpjb250YWN0PgogICAgICA8bWFyazpwcm90ZWN0aW9uPgogICAgICAgIDxt -YXJrOmNjPlVTPC9tYXJrOmNjPgogICAgICAgIDxtYXJrOnJ1bGluZz5VUzwvbWFyazpydWxpbmc+ -CiAgICAgIDwvbWFyazpwcm90ZWN0aW9uPgogICAgICA8bWFyazpsYWJlbD50ZXN0YW5kdmFsaWRh -dGU8L21hcms6bGFiZWw+CiAgICAgIDxtYXJrOmxhYmVsPnRlc3QtLS12YWxpZGF0ZTwvbWFyazps -YWJlbD4KICAgICAgPG1hcms6bGFiZWw+dGVzdGFuZC12YWxpZGF0ZTwvbWFyazpsYWJlbD4KICAg -ICAgPG1hcms6bGFiZWw+dGVzdC12YWxpZGF0ZTwvbWFyazpsYWJlbD4KICAgICAgPG1hcms6bGFi -ZWw+dGVzdC1hbmR2YWxpZGF0ZTwvbWFyazpsYWJlbD4KICAgICAgPG1hcms6bGFiZWw+dGVzdC0t -dmFsaWRhdGU8L21hcms6bGFiZWw+CiAgICAgIDxtYXJrOmxhYmVsPnRlc3R2YWxpZGF0ZTwvbWFy -azpsYWJlbD4KICAgICAgPG1hcms6bGFiZWw+dGVzdC1hbmQtdmFsaWRhdGU8L21hcms6bGFiZWw+ -CiAgICAgIDxtYXJrOmdvb2RzQW5kU2VydmljZXM+TXVzaWNhbCBpbnN0cnVtZW50czwvbWFyazpn -b29kc0FuZFNlcnZpY2VzPgogICAgICA8bWFyazpyZWZOdW0+MTIzNDwvbWFyazpyZWZOdW0+CiAg -ICAgIDxtYXJrOnByb0RhdGU+MjAxMy0wMi0wMVQyMzowMDowMC4wMDBaPC9tYXJrOnByb0RhdGU+ -CiAgICAgIDxtYXJrOnRpdGxlPmd1aXRhcjwvbWFyazp0aXRsZT4KICAgICAgPG1hcms6ZXhlY0Rh -dGU+MjAxMy0wMi0wMVQyMzowMDowMC4wMDBaPC9tYXJrOmV4ZWNEYXRlPgogICAgPC9tYXJrOnRy -ZWF0eU9yU3RhdHV0ZT4KICA8L21hcms6bWFyaz4KPGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0 -cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgSWQ9Il83NmFkOGJiYy0xMTZjLTRiYzAt -OTI3ZC1mOWVmODAyMjI1NTUiPjxkczpTaWduZWRJbmZvPjxkczpDYW5vbmljYWxpemF0aW9uTWV0 -aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+ -PGRzOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQv -eG1sZHNpZy1tb3JlI3JzYS1zaGEyNTYiLz48ZHM6UmVmZXJlbmNlIFVSST0iI19jYjEzYjgwYy1h -NTE4LTQ1MTktODUxYy0wYWUxNGMxZWJhZjMiPjxkczpUcmFuc2Zvcm1zPjxkczpUcmFuc2Zvcm0g -QWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZW52ZWxvcGVkLXNp -Z25hdHVyZSIvPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAx -LzEwL3htbC1leGMtYzE0biMiLz48L2RzOlRyYW5zZm9ybXM+PGRzOkRpZ2VzdE1ldGhvZCBBbGdv -cml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI3NoYTI1NiIvPjxkczpEaWdl -c3RWYWx1ZT5jVlFIVFJubTg2T2RzUUFPTGVpNWNGTnYrYUpvcUY1TkY3Uk1ObERpcS9NPTwvZHM6 -RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PGRzOlJlZmVyZW5jZSBVUkk9IiNfNDQwODMyZjIt -YjNlNS00NmI0LTkzZGUtMDNiYTcxZGVmMGM1Ij48ZHM6VHJhbnNmb3Jtcz48ZHM6VHJhbnNmb3Jt -IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PC9k -czpUcmFuc2Zvcm1zPjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9y -Zy8yMDAxLzA0L3htbGVuYyNzaGEyNTYiLz48ZHM6RGlnZXN0VmFsdWU+MWtnVnh3WXpRTjExb1Zl -Vk1lME9Wc1hHL2lNbU1qWVVQS0RQNlZqNEc0QT08L2RzOkRpZ2VzdFZhbHVlPjwvZHM6UmVmZXJl -bmNlPjwvZHM6U2lnbmVkSW5mbz48ZHM6U2lnbmF0dXJlVmFsdWUgSWQ9Il9iODVhY2Y0Mi05YmE1 -LTQ0NzMtODhhNy0wZDVkNjVlYTUzYjUiPmpSclNYdExEaDVtbUtrRUxGYTh5NWlwK3VUQTVqRkY2 -bEw4dS9TNW04b1orR1dGUUlSUzlIUU85ZGJCTk9YQU5HemtUQ0FEMW1qU0wKeGY5NStIRVJUVFFG -ZkRKb2hTY1pBbkR0YVpTYlJxT2pQSUFMWmE4bjRkc090VlAzZHg1Y3d0QXRNaE1OK1ROdUF0c1dD -b0tuMSt0SwovRDlwSlRoRWlTRjBKQkdQWWZ4U0NMSnZzWVgvc3hMSFo5Mlk4MWh3b0xVVE0yTkdo -SlRaWnoxdVdsUFo0WERPOWJ2QVlMNTc2MVoyClNraFppSitFcHk0U0p5aTl1M2NoaThlR3cxWVI2 -R3VFMDA3WUVYdmg1MDhZdGdlV3hOeVRiSE04UEI2VDREakxwbmsxQjhhbzVCS2cKK25tRXBqd2E5 -aTEzR1JLcDdiZ1JBN2dtNjdndnJxaEordVFLdXc9PTwvZHM6U2lnbmF0dXJlVmFsdWU+PGRzOktl -eUluZm8gSWQ9Il80NDA4MzJmMi1iM2U1LTQ2YjQtOTNkZS0wM2JhNzFkZWYwYzUiPjxkczpYNTA5 -RGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSUZOekNDQkIrZ0F3SUJBZ0lnTHJBYmV2b2FlNTJ5 -M2Y2QzJ0QjBTbjNwN1hKbTBUMDJGb2d4S0NmTmhYc3dEUVlKS29aSWh2Y04KQVFFTEJRQXdmREVM -TUFrR0ExVUVCaE1DVlZNeFBEQTZCZ05WQkFvVE0wbHVkR1Z5Ym1WMElFTnZjbkJ2Y21GMGFXOXVJ -R1p2Y2lCQgpjM05wWjI1bFpDQk9ZVzFsY3lCaGJtUWdUblZ0WW1WeWN6RXZNQzBHQTFVRUF4TW1T -VU5CVGs0Z1ZISmhaR1Z0WVhKcklFTnNaV0Z5CmFXNW5hRzkxYzJVZ1VHbHNiM1FnUTBFd0hoY05N -VE13TnpBNU1EQXdNREF3V2hjTk1UZ3dOekE0TWpNMU9UVTVXakNCbHpFTE1Ba0cKQTFVRUJoTUNR -a1V4SURBZUJnTlZCQWdURjBKeWRYTnpaV3h6TFVOaGNHbDBZV3dnVW1WbmFXOXVNUkV3RHdZRFZR -UUhFd2hDY25WegpjMlZzY3pFUk1BOEdBMVVFQ2hNSVJHVnNiMmwwZEdVeFFEQStCZ05WQkFNVE4x -SkZWazlMUlVRZ1NVTkJUazRnVkUxRFNDQkJkWFJvCmIzSnBlbVZrSUZSeVlXUmxiV0Z5YXlCUWFX -eHZkQ0JXWVd4cFpHRjBiM0l3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXcKZ2dFS0Fv -SUJBUUN0TXRRU3p0Uk9jUUZlSkhObi95UU1ZblZaYXFVcEVHaHVRejRzOUNlUFF6MWIwM1Zsbll5 -amFOVms1THNrR0pGaQpzUmdpWk5CQWpqanRsMkFWekQ1WThtd21wQ1YyNFIwTnRyS0FmbG5HNkNB -MTVyQlRzSFVGRGY2QmFxeU1haXpBczRRSUFHaGRXT1Y3CjlHeTN3bnhXU212Q2tCdDVCUGthTW9W -M3hrVXZYbC9PKzlDQ0ZlSDBVZUJwczVpM3I3QTUzZjdYNWpqdVV1c2doT0Q3R1Z2WTBOTjcKaWNs -dVMrY1dFb1JBNXdQSU0vZjliQ0FGRk5nQnZLS25YQ3RUdElMblAzQmNuU3RiSmdodElPYlNlamth -ZWlkTUQyWGx6bWo4dXdJUAp0cFZic2RZVnhBaGd0NTJzZVF2ekZTNEVXWHJwT3gvbEY3RlBTTEow -aTlyRFQxYkJBZ01CQUFHamdnR0hNSUlCZ3pBTUJnTlZIUk1CCkFmOEVBakFBTUIwR0ExVWREZ1FX -QkJSODh0Z2FHTklQV3JGbzVnZmZRdTBaZlNmVmhEQ0J4Z1lEVlIwakJJRytNSUc3Z0JURHJUNm0K -MWhFQVJZQmNPbGRLaW0zY01RMmVjYUdCZ0tSK01Id3hDekFKQmdOVkJBWVRBbFZUTVR3d09nWURW -UVFLRXpOSmJuUmxjbTVsZENCRApiM0p3YjNKaGRHbHZiaUJtYjNJZ1FYTnphV2R1WldRZ1RtRnRa -WE1nWVc1a0lFNTFiV0psY25NeEx6QXRCZ05WQkFNVEprbERRVTVPCklGUnlZV1JsYldGeWF5QkRi -R1ZoY21sdVoyaHZkWE5sSUZCcGJHOTBJRU5CZ2lBdXNCdDYraHA3bmJMZC9vTGEwSFJLZmVudGNt -YlIKUFRZV2lERW9KODJGZVRBT0JnTlZIUThCQWY4RUJBTUNCNEF3TkFZRFZSMGZCQzB3S3pBcG9D -ZWdKWVlqYUhSMGNEb3ZMMk55YkM1cApZMkZ1Ymk1dmNtY3ZkRzFqYUY5d2FXeHZkQzVqY213d1JR -WURWUjBnQkQ0d1BEQTZCZ01xQXdRd016QXhCZ2dyQmdFRkJRY0NBUllsCmFIUjBjRG92TDNkM2R5 -NXBZMkZ1Ymk1dmNtY3ZjR2xzYjNSZmNtVndiM05wZEc5eWVUQU5CZ2txaGtpRzl3MEJBUXNGQUFP -Q0FRRUEKdWpsNmY2ZTZEK0lKdUZlQlI0UlBoVm9nRUxKRzYvWCs0bjFkbkxTRHAvdjJrb0luZlFx -U3FSY1JrM3h1dGhZano3djZ5M3A3b1c2Ygp0czNCVHZRSU1ldTVKNFRJa2JPak5sVmdhby9qZTlm -L2dUN2lLNURhSldIRlFwblludmpYaFEzVjZSa1M3ZEpsNEZaRWl5NnBMOG01ClgxcDVwQ3pjRnFP -eU0vd1I4S3pmQlVYK0toWGFBV2d0dURla0FUbVI1eUNGZ1BtQW9aZlBrcFVGZ01KcFk1WWNSdStL -MjRXVm50NFkKVzd5dy9HRjVpNmRwVFV0cEZNNy9ZVUFyenBkZlUrZWNvblk0ZE1LZFo2c0s4ZmFq -NGlVSUcrS0VjenNZMW05ODlWSWJwdGd4RFZzNQpGZU00Z1YvSDd3YU1tbVpkeVlQNHBZUkMzeWRI -T2tiYlpnbFhadz09PC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUlu -Zm8+PC9kczpTaWduYXR1cmU+PC9zbWQ6c2lnbmVkTWFyaz4= - - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_create_sunrush_encoded_signed_mark_signature_corrupt.xml b/javatests/google/registry/flows/domain/testdata/domain_create_sunrush_encoded_signed_mark_signature_corrupt.xml deleted file mode 100644 index 5440b92e9..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_create_sunrush_encoded_signed_mark_signature_corrupt.xml +++ /dev/null @@ -1,138 +0,0 @@ - - - - - - - test-validate.tld - - ns1.example.net - ns2.example.net - - jd1234 - sh8013 - sh8013 - - 2fooBAR - - - - - - sunrise - -PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHNtZDpzaWduZWRNYXJrIHht -bG5zOnNtZD0idXJuOmlldGY6cGFyYW1zOnhtbDpuczpzaWduZWRNYXJrLTEuMCIgaWQ9Il8zOGFj -NTg2ZC05OTg5LTQ4MTctYjcwOC1kOGU4MzQ0NzZkOTUiPgogIDxzbWQ6aWQ+MDAwMDAwMTc2MTM3 -NjA0Mjc1OTEzNi02NTUzNTwvc21kOmlkPgogIDxzbWQ6aXNzdWVySW5mbyBpc3N1ZXJJRD0iNjU1 -MzUiPgogICAgPHNtZDpvcmc+SUNBTk4gVE1DSCBURVNUSU5HIFRNVjwvc21kOm9yZz4KICAgIDxz -bWQ6ZW1haWw+bm90YXZhaWxhYmxlQGV4YW1wbGUuY29tPC9zbWQ6ZW1haWw+CiAgICA8c21kOnVy -bD5odHRwOi8vd3d3LmV4YW1wbGUuY29tPC9zbWQ6dXJsPgogICAgPHNtZDp2b2ljZT4rMzIuMDAw -MDAwPC9zbWQ6dm9pY2U+CiAgPC9zbWQ6aXNzdWVySW5mbz4KICA8c21kOm5vdEJlZm9yZT4yMDEz -LTA4LTA5VDEwOjA1OjU5LjEzNlo8L3NtZDpub3RCZWZvcmU+CiAgPHNtZDpub3RBZnRlcj4yMDE3 -LTA3LTIzVDIyOjAwOjAwLjAwMFo8L3NtZDpub3RBZnRlcj4KICA8bWFyazptYXJrIHhtbG5zOm1h -cms9InVybjppZXRmOnBhcmFtczp4bWw6bnM6bWFyay0xLjAiPgogICAgPG1hcms6Y291cnQ+CiAg -ICAgIDxtYXJrOmlkPjAwMDUyMDEzNzM0NjkxNjkxMzczNDY5MTY5LTY1NTM1PC9tYXJrOmlkPgog -ICAgICA8bWFyazptYXJrTmFtZT5UZXN0ICZhbXA7IFZhbGlkYXRlPC9tYXJrOm1hcmtOYW1lPgog -ICAgICA8bWFyazpob2xkZXIgZW50aXRsZW1lbnQ9Im93bmVyIj4KICAgICAgICA8bWFyazpvcmc+ -QWcgY29ycG9yYXRpb248L21hcms6b3JnPgogICAgICAgIDxtYXJrOmFkZHI+CiAgICAgICAgICA8 -bWFyazpzdHJlZXQ+MTMwNSBCcmlnaHQgQXZlbnVlPC9tYXJrOnN0cmVldD4KICAgICAgICAgIDxt -YXJrOmNpdHk+QXJjYWRpYTwvbWFyazpjaXR5PgogICAgICAgICAgPG1hcms6c3A+Q0E8L21hcms6 -c3A+CiAgICAgICAgICA8bWFyazpwYz45MDAyODwvbWFyazpwYz4KICAgICAgICAgIDxtYXJrOmNj -PlVTPC9tYXJrOmNjPgogICAgICAgIDwvbWFyazphZGRyPgogICAgICA8L21hcms6aG9sZGVyPgog -ICAgICA8bWFyazpjb250YWN0IHR5cGU9ImFnZW50Ij4KICAgICAgICA8bWFyazpuYW1lPlRvbnkg -SG9sbGFuZDwvbWFyazpuYW1lPgogICAgICAgIDxtYXJrOm9yZz5BZyBjb3Jwb3JhdGlvbjwvbWFy -azpvcmc+CiAgICAgICAgPG1hcms6YWRkcj4KICAgICAgICAgIDxtYXJrOnN0cmVldD4xMzA1IEJy -aWdodCBBdmVudWU8L21hcms6c3RyZWV0PgogICAgICAgICAgPG1hcms6Y2l0eT5BcmNhZGlhPC9t -YXJrOmNpdHk+CiAgICAgICAgICA8bWFyazpzcD5DQTwvbWFyazpzcD4KICAgICAgICAgIDxtYXJr -OnBjPjkwMDI4PC9tYXJrOnBjPgogICAgICAgICAgPG1hcms6Y2M+VVM8L21hcms6Y2M+CiAgICAg -ICAgPC9tYXJrOmFkZHI+CiAgICAgICAgPG1hcms6dm9pY2U+KzEuMjAyNTU2MjMwMjwvbWFyazp2 -b2ljZT4KICAgICAgICA8bWFyazpmYXg+KzEuMjAyNTU2MjMwMTwvbWFyazpmYXg+CiAgICAgICAg -PG1hcms6ZW1haWw+aW5mb0BhZ2NvcnBvcmF0aW9uLmNvbTwvbWFyazplbWFpbD4KICAgICAgPC9t -YXJrOmNvbnRhY3Q+CiAgICAgIDxtYXJrOmxhYmVsPnRlc3RhbmR2YWxpZGF0ZTwvbWFyazpsYWJl -bD4KICAgICAgPG1hcms6bGFiZWw+dGVzdC0tLXZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8 -bWFyazpsYWJlbD50ZXN0YW5kLXZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJl -bD50ZXN0LXZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LWFuZHZh -bGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LS12YWxpZGF0ZTwvbWFy -azpsYWJlbD4KICAgICAgPG1hcms6bGFiZWw+dGVzdHZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAg -ICA8bWFyazpsYWJlbD50ZXN0LWFuZC12YWxpZGF0ZTwvbWFyazpsYWJlbD4KICAgICAgPG1hcms6 -Z29vZHNBbmRTZXJ2aWNlcz5NdXNpY2FsIGluc3RydW1lbnRzPC9tYXJrOmdvb2RzQW5kU2Vydmlj -ZXM+CiAgICAgIDxtYXJrOnJlZk51bT4xMjM0PC9tYXJrOnJlZk51bT4KICAgICAgPG1hcms6cHJv -RGF0ZT4yMDEyLTEyLTMxVDIzOjAwOjAwLjAwMFo8L21hcms6cHJvRGF0ZT4KICAgICAgPG1hcms6 -Y2M+VVM8L21hcms6Y2M+CiAgICAgIDxtYXJrOmNvdXJ0TmFtZT5Ib3ZlPC9tYXJrOmNvdXJ0TmFt -ZT4KICAgIDwvbWFyazpjb3VydD4KICA8L21hcms6bWFyaz4KPGRzOlNpZ25hdHVyZSB4bWxuczpk -cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgSWQ9Il9mZDBmMTM0Ni03MTM4 -LTRiMGMtODRkNy0yZTdlYmY2YTExNmMiPjxkczpTaWduZWRJbmZvPjxkczpDYW5vbmljYWxpemF0 -aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMx -NG4jIi8+PGRzOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIw -MDEvMDQveG1sZHNpZy1tb3JlI3JzYS1zaGEyNTYiLz48ZHM6UmVmZXJlbmNlIFVSST0iI18zOGFj -NTg2ZC05OTg5LTQ4MTctYjcwOC1kOGU4MzQ0NzZkOTUiPjxkczpUcmFuc2Zvcm1zPjxkczpUcmFu -c2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZW52ZWxv -cGVkLXNpZ25hdHVyZSIvPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9y -Zy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz48L2RzOlRyYW5zZm9ybXM+PGRzOkRpZ2VzdE1ldGhv -ZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI3NoYTI1NiIvPjxk -czpEaWdlc3RWYWx1ZT55WDRLTWgrUDJ2OVUxNnh0eTl2ZGU5S0JTZmZFTjRHbTVVa2tLblI5cDdZ -PTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PGRzOlJlZmVyZW5jZSBVUkk9IiNfYjg5 -MjI1NWItMWJjOC00MTdiLWE0NGYtZWE5OGJjMzQ5OWE0Ij48ZHM6VHJhbnNmb3Jtcz48ZHM6VHJh -bnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4j -Ii8+PC9kczpUcmFuc2Zvcm1zPjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3 -LnczLm9yZy8yMDAxLzA0L3htbGVuYyNzaGEyNTYiLz48ZHM6RGlnZXN0VmFsdWU+dDNuNkFBTHdi -aUhNbGRyZkpEQjNYQ3FkSlFzOEhjeU5pK1lXT3ZoV1krdz08L2RzOkRpZ2VzdFZhbHVlPjwvZHM6 -UmVmZXJlbmNlPjwvZHM6U2lnbmVkSW5mbz48ZHM6U2lnbmF0dXJlVmFsdWUgSWQ9Il82OWQzMDRl -NC04NzlmLTRmNzEtYmMxMi02ZjJhZDlmOTM5OGYiPmJSVFIzTzUxM0dnTkExS2pxb0g0VXE3cUlh -N2NJaTljaXZmZmFyVmE0VVQyVEUzdzEzc2xsUDFXbkdYYjcyYUw0dXhkbDFUaTZZbFoKVnVjSC92 -ZU5zUnlWZFZwSFF0eEJNTDFLU0tZbXc3ZjdPNnVsYWtrYnFrTkdYVmFZdEVsa1dBZnZFSDBsNURk -NkFZT0k2UGN5SzBCWgo2VEl3cWZhQ1luVk5DdTFpdDIzMm9EREtiWU9RNk02YnhmU3BvVFYvaTVV -dEVyak0vZWFFanp4MXFxZzlFZmxOcm1obmRtZW42Q2JYCjVrNmZ4Y1o0V2NtWkM4V0Ruc0t0VWVj -aGtmbko4L0Jwc2ppM1Foekg4YzFiL0RqTmR5UFFyOGlndXBqR2dlU0JmMHhRRUtoK3pRT2oKYTNv -MEhRWjZ1UlUvejdWN2RoNU9qUEhmV2lLc0pqRjVwbnJpRlFvPTwvZHM6U2lnbmF0dXJlVmFsdWU+ -PGRzOktleUluZm8gSWQ9Il9iODkyMjU1Yi0xYmM4LTQxN2ItYTQ0Zi1lYTk4YmMzNDk5YTQiPjxk -czpYNTA5RGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSUZMekNDQkJlZ0F3SUJBZ0lnTHJBYmV2 -b2FlNTJ5M2Y2QzJ0QjBTbjNwN1hKbTBUMDJGb2d4S0NmTmhYb3dEUVlKS29aSWh2Y04KQVFFTEJR -QXdmREVMTUFrR0ExVUVCaE1DVlZNeFBEQTZCZ05WQkFvVE0wbHVkR1Z5Ym1WMElFTnZjbkJ2Y21G -MGFXOXVJR1p2Y2lCQgpjM05wWjI1bFpDQk9ZVzFsY3lCaGJtUWdUblZ0WW1WeWN6RXZNQzBHQTFV -RUF4TW1TVU5CVGs0Z1ZISmhaR1Z0WVhKcklFTnNaV0Z5CmFXNW5hRzkxYzJVZ1VHbHNiM1FnUTBF -d0hoY05NVE13TmpJMk1EQXdNREF3V2hjTk1UZ3dOakkxTWpNMU9UVTVXakNCanpFTE1Ba0cKQTFV -RUJoTUNRa1V4SURBZUJnTlZCQWdURjBKeWRYTnpaV3h6TFVOaGNHbDBZV3dnVW1WbmFXOXVNUkV3 -RHdZRFZRUUhFd2hDY25WegpjMlZzY3pFUk1BOEdBMVVFQ2hNSVJHVnNiMmwwZEdVeE9EQTJCZ05W -QkFNVEwwbERRVTVPSUZSTlEwZ2dRWFYwYUc5eWFYcGxaQ0JVCmNtRmtaVzFoY21zZ1VHbHNiM1Fn -Vm1Gc2FXUmhkRzl5TUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUEK -eGxwM0twWUhYM1d5QXNGaFNrM0x3V2ZuR2x4blVERnFGWkEzVW91TVlqL1hpZ2JNa05lRVhJamxr -Uk9LVDRPUEdmUngvTEF5UmxRUQpqQ012NHFoYmtjWDFwN2FyNjNmbHE0U1pOVmNsMTVsN2gwdVQ1 -OEZ6U2ZubHowdTVya0hmSkltRDQzK21hUC84Z3YzNkZSMjdqVzhSCjl3WTRoaytXczRJQjBpRlNk -OFNYdjFLcjh3L0ptTVFTRGtpdUcrUmZJaXVid1EvZnk3RWtqNVFXaFBadyttTXhOS25IVUx5M3hZ -ejIKTHdWZmZ0andVdWVhY3ZxTlJDa01YbENsT0FEcWZUOG9TWm9lRFhlaEh2bFBzTENlbUdCb1RL -dXJza0lTNjlGMHlQRUg1Z3plMEgrZgo4RlJPc0lvS1NzVlEzNEI0Uy9qb0U2N25wc0pQVGRLc05Q -SlR5UUlEQVFBQm80SUJoekNDQVlNd0RBWURWUjBUQVFIL0JBSXdBREFkCkJnTlZIUTRFRmdRVW9G -cFk3NnA1eW9ORFJHdFFwelZ1UjgxVVdRMHdnY1lHQTFVZEl3U0J2akNCdTRBVXc2MCtwdFlSQUVX -QVhEcFgKU29wdDNERU5ubkdoZ1lDa2ZqQjhNUXN3Q1FZRFZRUUdFd0pWVXpFOE1Eb0dBMVVFQ2hN -elNXNTBaWEp1WlhRZ1EyOXljRzl5WVhScApiMjRnWm05eUlFRnpjMmxuYm1Wa0lFNWhiV1Z6SUdG -dVpDQk9kVzFpWlhKek1TOHdMUVlEVlFRREV5WkpRMEZPVGlCVWNtRmtaVzFoCmNtc2dRMnhsWVhK -cGJtZG9iM1Z6WlNCUWFXeHZkQ0JEUVlJZ0xyQWJldm9hZTUyeTNmNkMydEIwU24zcDdYSm0wVDAy -Rm9neEtDZk4KaFhrd0RnWURWUjBQQVFIL0JBUURBZ2VBTURRR0ExVWRId1F0TUNzd0thQW5vQ1dH -STJoMGRIQTZMeTlqY213dWFXTmhibTR1YjNKbgpMM1J0WTJoZmNHbHNiM1F1WTNKc01FVUdBMVVk -SUFRK01Ed3dPZ1lES2dNRU1ETXdNUVlJS3dZQkJRVUhBZ0VXSldoMGRIQTZMeTkzCmQzY3VhV05o -Ym00dWIzSm5MM0JwYkc5MFgzSmxjRzl6YVhSdmNua3dEUVlKS29aSWh2Y05BUUVMQlFBRGdnRUJB -SWVEWVlKcjYwVzMKeTlRcyszelJWSTlrZWtLb201dmtIT2FsQjN3SGFaSWFBRllwSTk4dFkwYVZO -OWFHT04wdjZXUUYrbnZ6MUtSWlFiQXowMUJYdGFSSgo0bVBrYXJoaHVMbjlOa0J4cDhIUjVxY2Mr -S0g3Z3Y2ci9jMGlHM2JDTkorUVNyN1FmKzVNbE1vNnpMNVVkZFUvVDJqaWJNWENqL2YyCjFRdzN4 -OVFnb3lYTEZKOW96YUxnUTlSTWtMbE9temtDQWlYTjVBYjQzYUo5ZjdOMmdFMk5uUmpOS21tQzlB -QlEwVFJ3RUtWTGhWbDEKVUdxQ0hKM0FsQlhXSVhONXNqUFFjRC8rbkhlRVhNeFl2bEF5cXhYb0Qz -TVd0UVZqN2oyb3FsYWtPQk1nRzgrcTJxWWxtQnRzNEZOaQp3NzQ4SWw1ODZIS0JScXhIdFpkUktX -MlZxYVE9PC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9k -czpTaWduYXR1cmU+PC9zbWQ6c2lnbmVkTWFyaz4K - - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_create_sunrush_malformed_claim_notice1.xml b/javatests/google/registry/flows/domain/testdata/domain_create_sunrush_malformed_claim_notice1.xml deleted file mode 100644 index 6b0a46c7d..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_create_sunrush_malformed_claim_notice1.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - example-one.tld - - ns1.example.net - ns2.example.net - - jd1234 - sh8013 - sh8013 - - 2fooBAR - - - - - - sunrise - - 370d0b7c922337203685477580 - 2010-08-16T09:00:00.0Z - 2009-08-16T09:00:00.0Z - - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_create_sunrush_malformed_claim_notice2.xml b/javatests/google/registry/flows/domain/testdata/domain_create_sunrush_malformed_claim_notice2.xml deleted file mode 100644 index 33fc1276b..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_create_sunrush_malformed_claim_notice2.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - example-one.tld - - ns1.example.net - ns2.example.net - - jd1234 - sh8013 - sh8013 - - 2fooBAR - - - - - - sunrise - - 370d0b7c922337203685477580a - 2010-08-16T09:00:00.0Z - 2009-08-16T09:00:00.0Z - - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_create_sunrush_response.xml b/javatests/google/registry/flows/domain/testdata/domain_create_sunrush_response.xml deleted file mode 100644 index 97c2801c6..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_create_sunrush_response.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - Command completed successfully - - - - test-validate.tld - 2013-08-09T12:05:59Z - - - - - sunrise - 1-TLD - - - - ABC-12345 - server-trid - - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_create_sunrush_response_claims.xml b/javatests/google/registry/flows/domain/testdata/domain_create_sunrush_response_claims.xml deleted file mode 100644 index f1c5e3cd9..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_create_sunrush_response_claims.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - Command completed successfully - - - - example-one.tld - 2013-08-09T12:05:59Z - - - - - sunrise - 1-TLD - - - - ABC-12345 - server-trid - - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_delete_application.xml b/javatests/google/registry/flows/domain/testdata/domain_delete_application.xml deleted file mode 100644 index e25fe6fc8..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_delete_application.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - example.tld - - - - - sunrise - 1-TLD - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_delete_application_landrush.xml b/javatests/google/registry/flows/domain/testdata/domain_delete_application_landrush.xml deleted file mode 100644 index 44ef95e2f..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_delete_application_landrush.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - %DOMAIN% - - - - - landrush - 1-TLD - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_delete_application_sunrush.xml b/javatests/google/registry/flows/domain/testdata/domain_delete_application_sunrush.xml deleted file mode 100644 index 3e13e7e7d..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_delete_application_sunrush.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - example.tld - - - - - sunrise - 1-TLD - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_delete_application_wrong_extension.xml b/javatests/google/registry/flows/domain/testdata/domain_delete_application_wrong_extension.xml deleted file mode 100644 index 0a2b300d9..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_delete_application_wrong_extension.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - example.tld - - - - - landrush - 1-TLD - - - - - 12345 - 3 - 1 - 49FD46E6C4B45C55D4AC - - - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_info_sunrise.xml b/javatests/google/registry/flows/domain/testdata/domain_info_sunrise.xml deleted file mode 100644 index 4bf1120ca..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_info_sunrise.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - example.tld - - - - - sunrise - 123-TLD - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_info_sunrise_all_hosts.xml b/javatests/google/registry/flows/domain/testdata/domain_info_sunrise_all_hosts.xml deleted file mode 100644 index cc72e747a..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_info_sunrise_all_hosts.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - example.tld - - - - - sunrise - 123-TLD - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_info_sunrise_allocated.xml b/javatests/google/registry/flows/domain/testdata/domain_info_sunrise_allocated.xml deleted file mode 100644 index d50c18c81..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_info_sunrise_allocated.xml +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - Command completed successfully - - - - example.tld - %ROID% - - jd1234 - sh8013 - sh8013 - - ns1.example.tld - ns1.example.net - - NewRegistrar - TheRegistrar - 1999-04-03T22:00:00.0Z - NewRegistrar - 1999-12-03T09:00:00.0Z - - 2fooBAR - - - - - - sunrise - 123-TLD - - - - - ABC-12345 - server-trid - - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_info_sunrise_delegated_hosts.xml b/javatests/google/registry/flows/domain/testdata/domain_info_sunrise_delegated_hosts.xml deleted file mode 100644 index 91bee8d6a..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_info_sunrise_delegated_hosts.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - example.tld - - - - - sunrise - 123-TLD - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_info_sunrise_flags_none.xml b/javatests/google/registry/flows/domain/testdata/domain_info_sunrise_flags_none.xml deleted file mode 100644 index 85417598c..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_info_sunrise_flags_none.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - domain.flags - - - - - sunrise - 123-TLD - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_info_sunrise_flags_two.xml b/javatests/google/registry/flows/domain/testdata/domain_info_sunrise_flags_two.xml deleted file mode 100644 index 261bd85a7..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_info_sunrise_flags_two.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - domain-flag1-flag2.flags - - - - - sunrise - 123-TLD - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_info_sunrise_include_marks.xml b/javatests/google/registry/flows/domain/testdata/domain_info_sunrise_include_marks.xml deleted file mode 100644 index a3233839a..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_info_sunrise_include_marks.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - example.tld - - - - - sunrise - 123-TLD - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_info_sunrise_no_application_id.xml b/javatests/google/registry/flows/domain/testdata/domain_info_sunrise_no_application_id.xml deleted file mode 100644 index 469b8bfdc..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_info_sunrise_no_application_id.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - example.tld - - - - - sunrise - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_info_sunrise_no_marks.xml b/javatests/google/registry/flows/domain/testdata/domain_info_sunrise_no_marks.xml deleted file mode 100644 index 18a8a36a9..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_info_sunrise_no_marks.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - example.tld - - - - - sunrise - 123-TLD - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_info_sunrise_none_hosts.xml b/javatests/google/registry/flows/domain/testdata/domain_info_sunrise_none_hosts.xml deleted file mode 100644 index f56a5a66e..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_info_sunrise_none_hosts.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - example.tld - - - - - sunrise - 123-TLD - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_info_sunrise_response.xml b/javatests/google/registry/flows/domain/testdata/domain_info_sunrise_response.xml deleted file mode 100644 index 18cbb5a70..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_info_sunrise_response.xml +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - Command completed successfully - - - - example.tld - %ROID% - - jd1234 - sh8013 - sh8013 - - ns1.example.tld - ns1.example.net - - NewRegistrar - TheRegistrar - 1999-04-03T22:00:00.0Z - NewRegistrar - 1999-12-03T09:00:00.0Z - - 2fooBAR - - - - - - sunrise - 123-TLD - - - - - ABC-12345 - server-trid - - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_info_sunrise_response_dsdata.xml b/javatests/google/registry/flows/domain/testdata/domain_info_sunrise_response_dsdata.xml deleted file mode 100644 index 23afffe47..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_info_sunrise_response_dsdata.xml +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - Command completed successfully - - - - example.tld - %ROID% - - jd1234 - sh8013 - sh8013 - - ns1.example.tld - ns1.example.net - - NewRegistrar - TheRegistrar - 1999-04-03T22:00:00.0Z - NewRegistrar - 1999-12-03T09:00:00.0Z - - 2fooBAR - - - - - - - 12345 - 3 - 1 - 49FD46E6C4B45C55D4AC - - - - sunrise - 123-TLD - - - - - ABC-12345 - server-trid - - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_info_sunrise_response_no_nameservers.xml b/javatests/google/registry/flows/domain/testdata/domain_info_sunrise_response_no_nameservers.xml deleted file mode 100644 index b69b45c96..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_info_sunrise_response_no_nameservers.xml +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - Command completed successfully - - - - example.tld - %ROID% - - jd1234 - sh8013 - sh8013 - NewRegistrar - TheRegistrar - 1999-04-03T22:00:00.0Z - NewRegistrar - 1999-12-03T09:00:00.0Z - - 2fooBAR - - - - - - sunrise - 123-TLD - - - - - ABC-12345 - server-trid - - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_info_sunrise_response_with_mark.xml b/javatests/google/registry/flows/domain/testdata/domain_info_sunrise_response_with_mark.xml deleted file mode 100644 index 340b76397..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_info_sunrise_response_with_mark.xml +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - Command completed successfully - - - - example.tld - %ROID% - - jd1234 - sh8013 - sh8013 - - ns1.example.tld - ns1.example.net - - NewRegistrar - TheRegistrar - 1999-04-03T22:00:00.0Z - NewRegistrar - 1999-12-03T09:00:00.0Z - - 2fooBAR - - - - - - sunrise - 123-TLD - - - - 00052013734691691373469169-65535 - Test & Validate - - Ag corporation - - 1305 Bright Avenue - Arcadia - CA - 90028 - US - - - - Tony Holland - Ag corporation - - 1305 Bright Avenue - Arcadia - CA - 90028 - US - - +1.2025562302 - +1.2025562301 - info@agcorporation.com - - testandvalidate - test---validate - testand-validate - test-validate - test-andvalidate - test--validate - testvalidate - test-and-validate - Musical instruments - 1234 - 2012-12-31T23:00:00.000Z - US - Hove - - - - - - ABC-12345 - server-trid - - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_update_sunrise.xml b/javatests/google/registry/flows/domain/testdata/domain_update_sunrise.xml deleted file mode 100644 index f864b07e2..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_update_sunrise.xml +++ /dev/null @@ -1,38 +0,0 @@ - - - - - example.tld - - - ns2.example.tld - - mak21 - Payment overdue. - - - - ns1.example.tld - - sh8013 - - - - sh8013 - - 2BARfoo - - - - - - - sunrise - 1-TLD - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_update_sunrise_add_nameserver.xml b/javatests/google/registry/flows/domain/testdata/domain_update_sunrise_add_nameserver.xml deleted file mode 100644 index 2664dc361..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_update_sunrise_add_nameserver.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - example.tld - - - ns2.example.tld - - - - - - - - - sunrise - 1-TLD - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_update_sunrise_add_remove_same_contact.xml b/javatests/google/registry/flows/domain/testdata/domain_update_sunrise_add_remove_same_contact.xml deleted file mode 100644 index f304bc025..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_update_sunrise_add_remove_same_contact.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - example.tld - - sh8013 - Payment overdue. - - - sh8013 - - - sh8013 - - 2BARfoo - - - - - - - sunrise - 1-TLD - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_update_sunrise_add_remove_same_host.xml b/javatests/google/registry/flows/domain/testdata/domain_update_sunrise_add_remove_same_host.xml deleted file mode 100644 index 4b12cdd0a..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_update_sunrise_add_remove_same_host.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - - - example.tld - - - ns1.example.tld - - Payment overdue. - - - - ns1.example.tld - - - - sh8013 - - 2BARfoo - - - - - - - sunrise - 1-TLD - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_update_sunrise_authinfo.xml b/javatests/google/registry/flows/domain/testdata/domain_update_sunrise_authinfo.xml deleted file mode 100644 index 89ab8f770..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_update_sunrise_authinfo.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - example.tld - - - 2BARfoo - - - - - - - sunrise - 1-TLD - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_update_sunrise_dsdata_add.xml b/javatests/google/registry/flows/domain/testdata/domain_update_sunrise_dsdata_add.xml deleted file mode 100644 index 905ddcb54..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_update_sunrise_dsdata_add.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - example.tld - - - - - - - 12346 - 3 - 1 - 38EC35D5B3A34B44C39B - - - - - sunrise - 1-TLD - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_update_sunrise_dsdata_add_rem.xml b/javatests/google/registry/flows/domain/testdata/domain_update_sunrise_dsdata_add_rem.xml deleted file mode 100644 index 996e4706f..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_update_sunrise_dsdata_add_rem.xml +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - example.tld - - - - - - - 12345 - 3 - 1 - 38EC35D5B3A34B33C99B - - - - - 12346 - 3 - 1 - 38EC35D5B3A34B44C39B - - - - - sunrise - 1-TLD - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_update_sunrise_dsdata_add_rem_same.xml b/javatests/google/registry/flows/domain/testdata/domain_update_sunrise_dsdata_add_rem_same.xml deleted file mode 100644 index d3100399b..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_update_sunrise_dsdata_add_rem_same.xml +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - example.tld - - - - - - - 12345 - 3 - 1 - 38EC35D5B3A34B33C99B - - - - - 12345 - 3 - 1 - 38EC35D5B3A34B33C99B - - - - - sunrise - 1-TLD - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_update_sunrise_dsdata_empty.xml b/javatests/google/registry/flows/domain/testdata/domain_update_sunrise_dsdata_empty.xml deleted file mode 100644 index fcddcf527..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_update_sunrise_dsdata_empty.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - example.tld - - - - - - - sunrise - 1-TLD - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_update_sunrise_dsdata_rem.xml b/javatests/google/registry/flows/domain/testdata/domain_update_sunrise_dsdata_rem.xml deleted file mode 100644 index 68e29d186..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_update_sunrise_dsdata_rem.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - example.tld - - - - - - - 12346 - 3 - 1 - 38EC35D5B3A34B44C39B - - - - - sunrise - 1-TLD - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_update_sunrise_dsdata_rem_all.xml b/javatests/google/registry/flows/domain/testdata/domain_update_sunrise_dsdata_rem_all.xml deleted file mode 100644 index 0b3e290f3..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_update_sunrise_dsdata_rem_all.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - example.tld - - - - - - true - - - - sunrise - 1-TLD - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_update_sunrise_dsdata_rem_all_false.xml b/javatests/google/registry/flows/domain/testdata/domain_update_sunrise_dsdata_rem_all_false.xml deleted file mode 100644 index eabbf8383..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_update_sunrise_dsdata_rem_all_false.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - example.tld - - - - - - false - - - - sunrise - 1-TLD - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_update_sunrise_dsdata_urgent.xml b/javatests/google/registry/flows/domain/testdata/domain_update_sunrise_dsdata_urgent.xml deleted file mode 100644 index 813f80d56..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_update_sunrise_dsdata_urgent.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - example.tld - - - - - - true - - - - 12346 - 3 - 1 - 38EC35D5B3A34B44C39B - - - - - sunrise - 1-TLD - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_update_sunrise_duplicate_contact.xml b/javatests/google/registry/flows/domain/testdata/domain_update_sunrise_duplicate_contact.xml deleted file mode 100644 index 0446d0cd6..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_update_sunrise_duplicate_contact.xml +++ /dev/null @@ -1,40 +0,0 @@ - - - - - example.tld - - - ns2.example.tld - - mak21 - mak21 - sh8013 - Payment overdue. - - - - ns1.example.tld - - sh8013 - - - - sh8013 - - 2BARfoo - - - - - - - sunrise - 1-TLD - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_update_sunrise_fee.xml b/javatests/google/registry/flows/domain/testdata/domain_update_sunrise_fee.xml deleted file mode 100644 index 2e863ec72..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_update_sunrise_fee.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - %DOMAIN% - - - ns2.example.tld - - - - - ns1.example.tld - - - - - - - sunrise - 1-ROID - - - USD - %AMOUNT% - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_update_sunrise_maxsiglife.xml b/javatests/google/registry/flows/domain/testdata/domain_update_sunrise_maxsiglife.xml deleted file mode 100644 index dbf52fd99..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_update_sunrise_maxsiglife.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - example.tld - - - - - - 605900 - - - - sunrise - 1-TLD - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_update_sunrise_missing_contact_type.xml b/javatests/google/registry/flows/domain/testdata/domain_update_sunrise_missing_contact_type.xml deleted file mode 100644 index 561e99359..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_update_sunrise_missing_contact_type.xml +++ /dev/null @@ -1,38 +0,0 @@ - - - - - example.tld - - - ns2.example.tld - - mak21 - Payment overdue. - - - - ns1.example.tld - - sh8013 - - - - sh8013 - - 2BARfoo - - - - - - - sunrise - 1-TLD - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_update_sunrise_prohibited_status.xml b/javatests/google/registry/flows/domain/testdata/domain_update_sunrise_prohibited_status.xml deleted file mode 100644 index 3aba461c9..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_update_sunrise_prohibited_status.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - - - example.tld - - - ns2.example.tld - - Payment overdue. - - - - ns1.example.tld - - - - - sh8013 - - 2BARfoo - - - - - - - sunrise - 1-TLD - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_update_sunrise_registrant_to_tech.xml b/javatests/google/registry/flows/domain/testdata/domain_update_sunrise_registrant_to_tech.xml deleted file mode 100644 index 72dbc4a03..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_update_sunrise_registrant_to_tech.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - example.tld - - sh8013 - - - contact1234 - - - mak21 - - - - - - sunrise - 1-TLD - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_update_sunrise_remove_admin.xml b/javatests/google/registry/flows/domain/testdata/domain_update_sunrise_remove_admin.xml deleted file mode 100644 index 37fcd216d..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_update_sunrise_remove_admin.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - example.tld - - sh8013 - - - - - - sunrise - 1-TLD - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_update_sunrise_remove_contact.xml b/javatests/google/registry/flows/domain/testdata/domain_update_sunrise_remove_contact.xml deleted file mode 100644 index 961c1b112..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_update_sunrise_remove_contact.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - example.tld - - - ns2.example.tld - - mak21 - Payment overdue. - - - - ns1.example.tld - - sh8013 - - - - - 2BARfoo - - - - - - - sunrise - 1-TLD - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_update_sunrise_remove_multiple_contacts.xml b/javatests/google/registry/flows/domain/testdata/domain_update_sunrise_remove_multiple_contacts.xml deleted file mode 100644 index 61d363865..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_update_sunrise_remove_multiple_contacts.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - example.tld - - mak21 - mak21 - mak21 - - - sh8013 - sh8013 - sh8013 - - - mak21 - - - - - - sunrise - 1-TLD - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_update_sunrise_remove_nameserver.xml b/javatests/google/registry/flows/domain/testdata/domain_update_sunrise_remove_nameserver.xml deleted file mode 100644 index eec4f8984..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_update_sunrise_remove_nameserver.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - - - example.tld - - mak21 - Payment overdue. - - - - ns1.example.tld - - sh8013 - - - - sh8013 - - 2BARfoo - - - - - - - sunrise - 1-TLD - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_update_sunrise_remove_tech.xml b/javatests/google/registry/flows/domain/testdata/domain_update_sunrise_remove_tech.xml deleted file mode 100644 index 969e9ccc1..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_update_sunrise_remove_tech.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - example.tld - - sh8013 - - - - - - sunrise - 1-TLD - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_update_sunrise_wrong_extension.xml b/javatests/google/registry/flows/domain/testdata/domain_update_sunrise_wrong_extension.xml deleted file mode 100644 index 61d79ccff..000000000 --- a/javatests/google/registry/flows/domain/testdata/domain_update_sunrise_wrong_extension.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - example.tld - - - - - - 12345 - 3 - 1 - 49FD46E6C4B45C55D4AC - - - - sunrise - 1-TLD - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/host/HostDeleteFlowTest.java b/javatests/google/registry/flows/host/HostDeleteFlowTest.java index 746d5b37b..bf0950d66 100644 --- a/javatests/google/registry/flows/host/HostDeleteFlowTest.java +++ b/javatests/google/registry/flows/host/HostDeleteFlowTest.java @@ -17,7 +17,6 @@ package google.registry.flows.host; import static com.google.common.truth.Truth.assertThat; import static google.registry.testing.DatastoreHelper.assertNoBillingEvents; import static google.registry.testing.DatastoreHelper.createTld; -import static google.registry.testing.DatastoreHelper.newDomainApplication; import static google.registry.testing.DatastoreHelper.newDomainResource; import static google.registry.testing.DatastoreHelper.newHostResource; import static google.registry.testing.DatastoreHelper.persistActiveHost; @@ -291,18 +290,6 @@ public class HostDeleteFlowTest extends ResourceFlowTestCase - - - Command completed successfully - - - - test-validate.example - 2014-03-02T00:01:00.000Z - 2015-03-02T00:01:00.000Z - - - - ABC-12345 - server-trid - - - diff --git a/javatests/google/registry/flows/testdata/domain_allocate_testvalidate.xml b/javatests/google/registry/flows/testdata/domain_allocate_testvalidate.xml deleted file mode 100644 index 312ce6cf3..000000000 --- a/javatests/google/registry/flows/testdata/domain_allocate_testvalidate.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - test-validate.example - 1 - - ns1.example.external - ns2.example.external - - jd1234 - sh8013 - sh8013 - - 2fooBAR - - - - - - B-EXAMPLE - 2014-01-01T00:00:00Z - - - ABC-12345 - - diff --git a/javatests/google/registry/flows/domain/testdata/domain_create_sunrise_encoded_signed_mark.xml b/javatests/google/registry/flows/testdata/domain_create_start_date_sunrise_encoded_mark_wrong_phase.xml similarity index 97% rename from javatests/google/registry/flows/domain/testdata/domain_create_sunrise_encoded_signed_mark.xml rename to javatests/google/registry/flows/testdata/domain_create_start_date_sunrise_encoded_mark_wrong_phase.xml index cbcff8901..a875994ce 100644 --- a/javatests/google/registry/flows/domain/testdata/domain_create_sunrise_encoded_signed_mark.xml +++ b/javatests/google/registry/flows/testdata/domain_create_start_date_sunrise_encoded_mark_wrong_phase.xml @@ -5,10 +5,10 @@ - test-validate.tld + test-validate.example - ns1.example.net - ns2.example.net + ns1.example.external + ns2.example.external jd1234 sh8013 @@ -21,8 +21,8 @@ - sunrise + type="registration"> + open PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHNtZDpzaWduZWRNYXJrIHhtbG5zOnNtZD0idXJuOmlldGY6cGFyYW1zOnhtbDpuczpzaWduZWRNYXJrLTEuMCIgaWQ9Il8zOGFjNTg2ZC05OTg5LTQ4MTctYjcwOC1kOGU4MzQ0NzZkOTUiPgogIDxzbWQ6aWQ+MDAwMDAwMTc2MTM3NjA0Mjc1OTEzNi02NTUzNTwvc21kOmlkPgogIDxzbWQ6aXNzdWVySW5mbyBpc3N1ZXJJRD0iNjU1MzUiPgogICAgPHNtZDpvcmc+SUNBTk4gVE1DSCBURVNUSU5HIFRNVjwvc21kOm9yZz4KICAgIDxzbWQ6ZW1haWw+bm90YXZhaWxhYmxlQGV4YW1wbGUuY29tPC9zbWQ6ZW1haWw+CiAgICA8c21kOnVybD5odHRwOi8vd3d3LmV4YW1wbGUuY29tPC9zbWQ6dXJsPgogICAgPHNtZDp2b2ljZT4rMzIuMDAwMDAwPC9zbWQ6dm9pY2U+CiAgPC9zbWQ6aXNzdWVySW5mbz4KICA8c21kOm5vdEJlZm9yZT4yMDEzLTA4LTA5VDEwOjA1OjU5LjEzNlo8L3NtZDpub3RCZWZvcmU+CiAgPHNtZDpub3RBZnRlcj4yMDE3LTA3LTIzVDIyOjAwOjAwLjAwMFo8L3NtZDpub3RBZnRlcj4KICA8bWFyazptYXJrIHhtbG5zOm1hcms9InVybjppZXRmOnBhcmFtczp4bWw6bnM6bWFyay0xLjAiPgogICAgPG1hcms6Y291cnQ+CiAgICAgIDxtYXJrOmlkPjAwMDUyMDEzNzM0NjkxNjkxMzczNDY5MTY5LTY1NTM1PC9tYXJrOmlkPgogICAgICA8bWFyazptYXJrTmFtZT5UZXN0ICZhbXA7IFZhbGlkYXRlPC9tYXJrOm1hcmtOYW1lPgogICAgICA8bWFyazpob2xkZXIgZW50aXRsZW1lbnQ9Im93bmVyIj4KICAgICAgICA8bWFyazpvcmc+QWcgY29ycG9yYXRpb248L21hcms6b3JnPgogICAgICAgIDxtYXJrOmFkZHI+CiAgICAgICAgICA8bWFyazpzdHJlZXQ+MTMwNSBCcmlnaHQgQXZlbnVlPC9tYXJrOnN0cmVldD4KICAgICAgICAgIDxtYXJrOmNpdHk+QXJjYWRpYTwvbWFyazpjaXR5PgogICAgICAgICAgPG1hcms6c3A+Q0E8L21hcms6c3A+CiAgICAgICAgICA8bWFyazpwYz45MDAyODwvbWFyazpwYz4KICAgICAgICAgIDxtYXJrOmNjPlVTPC9tYXJrOmNjPgogICAgICAgIDwvbWFyazphZGRyPgogICAgICA8L21hcms6aG9sZGVyPgogICAgICA8bWFyazpjb250YWN0IHR5cGU9ImFnZW50Ij4KICAgICAgICA8bWFyazpuYW1lPlRvbnkgSG9sbGFuZDwvbWFyazpuYW1lPgogICAgICAgIDxtYXJrOm9yZz5BZyBjb3Jwb3JhdGlvbjwvbWFyazpvcmc+CiAgICAgICAgPG1hcms6YWRkcj4KICAgICAgICAgIDxtYXJrOnN0cmVldD4xMzA1IEJyaWdodCBBdmVudWU8L21hcms6c3RyZWV0PgogICAgICAgICAgPG1hcms6Y2l0eT5BcmNhZGlhPC9tYXJrOmNpdHk+CiAgICAgICAgICA8bWFyazpzcD5DQTwvbWFyazpzcD4KICAgICAgICAgIDxtYXJrOnBjPjkwMDI4PC9tYXJrOnBjPgogICAgICAgICAgPG1hcms6Y2M+VVM8L21hcms6Y2M+CiAgICAgICAgPC9tYXJrOmFkZHI+CiAgICAgICAgPG1hcms6dm9pY2U+KzEuMjAyNTU2MjMwMjwvbWFyazp2b2ljZT4KICAgICAgICA8bWFyazpmYXg+KzEuMjAyNTU2MjMwMTwvbWFyazpmYXg+CiAgICAgICAgPG1hcms6ZW1haWw+aW5mb0BhZ2NvcnBvcmF0aW9uLmNvbTwvbWFyazplbWFpbD4KICAgICAgPC9tYXJrOmNvbnRhY3Q+CiAgICAgIDxtYXJrOmxhYmVsPnRlc3RhbmR2YWxpZGF0ZTwvbWFyazpsYWJlbD4KICAgICAgPG1hcms6bGFiZWw+dGVzdC0tLXZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0YW5kLXZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LXZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LWFuZHZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LS12YWxpZGF0ZTwvbWFyazpsYWJlbD4KICAgICAgPG1hcms6bGFiZWw+dGVzdHZhbGlkYXRlPC9tYXJrOmxhYmVsPgogICAgICA8bWFyazpsYWJlbD50ZXN0LWFuZC12YWxpZGF0ZTwvbWFyazpsYWJlbD4KICAgICAgPG1hcms6Z29vZHNBbmRTZXJ2aWNlcz5NdXNpY2FsIGluc3RydW1lbnRzPC9tYXJrOmdvb2RzQW5kU2VydmljZXM+CiAgICAgIDxtYXJrOnJlZk51bT4xMjM0PC9tYXJrOnJlZk51bT4KICAgICAgPG1hcms6cHJvRGF0ZT4yMDEyLTEyLTMxVDIzOjAwOjAwLjAwMFo8L21hcms6cHJvRGF0ZT4KICAgICAgPG1hcms6Y2M+VVM8L21hcms6Y2M+CiAgICAgIDxtYXJrOmNvdXJ0TmFtZT5Ib3ZlPC9tYXJrOmNvdXJ0TmFtZT4KICAgIDwvbWFyazpjb3VydD4KICA8L21hcms6bWFyaz4KPGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgSWQ9Il9mZDBmMTM0Ni03MTM4LTRiMGMtODRkNy0yZTdlYmY2YTExNmMiPjxkczpTaWduZWRJbmZvPjxkczpDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PGRzOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI3JzYS1zaGEyNTYiLz48ZHM6UmVmZXJlbmNlIFVSST0iI18zOGFjNTg2ZC05OTg5LTQ4MTctYjcwOC1kOGU4MzQ0NzZkOTUiPjxkczpUcmFuc2Zvcm1zPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZW52ZWxvcGVkLXNpZ25hdHVyZSIvPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz48L2RzOlRyYW5zZm9ybXM+PGRzOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI3NoYTI1NiIvPjxkczpEaWdlc3RWYWx1ZT55WDRLTWgrUDJ2OVUxNnh0eTl2ZGU5S0JTZmZFTjRHbTVVa2tLblI5cDdZPTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PGRzOlJlZmVyZW5jZSBVUkk9IiNfYjg5MjI1NWItMWJjOC00MTdiLWE0NGYtZWE5OGJjMzQ5OWE0Ij48ZHM6VHJhbnNmb3Jtcz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PC9kczpUcmFuc2Zvcm1zPjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNzaGEyNTYiLz48ZHM6RGlnZXN0VmFsdWU+dDNuNkFBTHdiaUhNbGRyZkpEQjNYQ3FkSlFzOEhjeU5pK1lXT3ZoV1krdz08L2RzOkRpZ2VzdFZhbHVlPjwvZHM6UmVmZXJlbmNlPjwvZHM6U2lnbmVkSW5mbz48ZHM6U2lnbmF0dXJlVmFsdWUgSWQ9Il82OWQzMDRlNC04NzlmLTRmNzEtYmMxMi02ZjJhZDlmOTM5OGYiPmJSVFIzTzUxM0dnTkExS2pxb0g0VXE3cUlhN2NJaTljaXZmZmFyVmE0VVQyVEUzdzEzc2xsUDFXbkdYYjcyYUw0dXhkbDFUaTZZbFoKVnVjSC92ZU5zUnlWZFZwSFF0eEJNTDFLU0tZbXc3ZjdPNnVsYWtrYnFrTkdYVmFZdEVsa1dBZnZFSDBsNURkNkFZT0k2UGN5SzBCWgo2VEl3cWZhQ1luVk5DdTFpdDIzMm9EREtiWU9RNk02YnhmU3BvVFYvaTVVdEVyak0vZWFFanp4MXFxZzlFZmxOcm1obmRtZW42Q2JYCjVrNmZ4Y1o0V2NtWkM4V0Ruc0t0VWVjaGtmbko4L0Jwc2ppM1Foekg4YzFiL0RqTmR5UFFyOGlndXBqR2dlU0JmMHhRRUtoK3pRT2oKYTNvMEhRWjZ1UlUvejdWN2RoNU9qUEhmV2lLc0pqRjVwc2ppRlE9PTwvZHM6U2lnbmF0dXJlVmFsdWU+PGRzOktleUluZm8gSWQ9Il9iODkyMjU1Yi0xYmM4LTQxN2ItYTQ0Zi1lYTk4YmMzNDk5YTQiPjxkczpYNTA5RGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSUZMekNDQkJlZ0F3SUJBZ0lnTHJBYmV2b2FlNTJ5M2Y2QzJ0QjBTbjNwN1hKbTBUMDJGb2d4S0NmTmhYb3dEUVlKS29aSWh2Y04KQVFFTEJRQXdmREVMTUFrR0ExVUVCaE1DVlZNeFBEQTZCZ05WQkFvVE0wbHVkR1Z5Ym1WMElFTnZjbkJ2Y21GMGFXOXVJR1p2Y2lCQgpjM05wWjI1bFpDQk9ZVzFsY3lCaGJtUWdUblZ0WW1WeWN6RXZNQzBHQTFVRUF4TW1TVU5CVGs0Z1ZISmhaR1Z0WVhKcklFTnNaV0Z5CmFXNW5hRzkxYzJVZ1VHbHNiM1FnUTBFd0hoY05NVE13TmpJMk1EQXdNREF3V2hjTk1UZ3dOakkxTWpNMU9UVTVXakNCanpFTE1Ba0cKQTFVRUJoTUNRa1V4SURBZUJnTlZCQWdURjBKeWRYTnpaV3h6TFVOaGNHbDBZV3dnVW1WbmFXOXVNUkV3RHdZRFZRUUhFd2hDY25WegpjMlZzY3pFUk1BOEdBMVVFQ2hNSVJHVnNiMmwwZEdVeE9EQTJCZ05WQkFNVEwwbERRVTVPSUZSTlEwZ2dRWFYwYUc5eWFYcGxaQ0JVCmNtRmtaVzFoY21zZ1VHbHNiM1FnVm1Gc2FXUmhkRzl5TUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUEKeGxwM0twWUhYM1d5QXNGaFNrM0x3V2ZuR2x4blVERnFGWkEzVW91TVlqL1hpZ2JNa05lRVhJamxrUk9LVDRPUEdmUngvTEF5UmxRUQpqQ012NHFoYmtjWDFwN2FyNjNmbHE0U1pOVmNsMTVsN2gwdVQ1OEZ6U2ZubHowdTVya0hmSkltRDQzK21hUC84Z3YzNkZSMjdqVzhSCjl3WTRoaytXczRJQjBpRlNkOFNYdjFLcjh3L0ptTVFTRGtpdUcrUmZJaXVid1EvZnk3RWtqNVFXaFBadyttTXhOS25IVUx5M3hZejIKTHdWZmZ0andVdWVhY3ZxTlJDa01YbENsT0FEcWZUOG9TWm9lRFhlaEh2bFBzTENlbUdCb1RLdXJza0lTNjlGMHlQRUg1Z3plMEgrZgo4RlJPc0lvS1NzVlEzNEI0Uy9qb0U2N25wc0pQVGRLc05QSlR5UUlEQVFBQm80SUJoekNDQVlNd0RBWURWUjBUQVFIL0JBSXdBREFkCkJnTlZIUTRFRmdRVW9GcFk3NnA1eW9ORFJHdFFwelZ1UjgxVVdRMHdnY1lHQTFVZEl3U0J2akNCdTRBVXc2MCtwdFlSQUVXQVhEcFgKU29wdDNERU5ubkdoZ1lDa2ZqQjhNUXN3Q1FZRFZRUUdFd0pWVXpFOE1Eb0dBMVVFQ2hNelNXNTBaWEp1WlhRZ1EyOXljRzl5WVhScApiMjRnWm05eUlFRnpjMmxuYm1Wa0lFNWhiV1Z6SUdGdVpDQk9kVzFpWlhKek1TOHdMUVlEVlFRREV5WkpRMEZPVGlCVWNtRmtaVzFoCmNtc2dRMnhsWVhKcGJtZG9iM1Z6WlNCUWFXeHZkQ0JEUVlJZ0xyQWJldm9hZTUyeTNmNkMydEIwU24zcDdYSm0wVDAyRm9neEtDZk4KaFhrd0RnWURWUjBQQVFIL0JBUURBZ2VBTURRR0ExVWRId1F0TUNzd0thQW5vQ1dHSTJoMGRIQTZMeTlqY213dWFXTmhibTR1YjNKbgpMM1J0WTJoZmNHbHNiM1F1WTNKc01FVUdBMVVkSUFRK01Ed3dPZ1lES2dNRU1ETXdNUVlJS3dZQkJRVUhBZ0VXSldoMGRIQTZMeTkzCmQzY3VhV05oYm00dWIzSm5MM0JwYkc5MFgzSmxjRzl6YVhSdmNua3dEUVlKS29aSWh2Y05BUUVMQlFBRGdnRUJBSWVEWVlKcjYwVzMKeTlRcyszelJWSTlrZWtLb201dmtIT2FsQjN3SGFaSWFBRllwSTk4dFkwYVZOOWFHT04wdjZXUUYrbnZ6MUtSWlFiQXowMUJYdGFSSgo0bVBrYXJoaHVMbjlOa0J4cDhIUjVxY2MrS0g3Z3Y2ci9jMGlHM2JDTkorUVNyN1FmKzVNbE1vNnpMNVVkZFUvVDJqaWJNWENqL2YyCjFRdzN4OVFnb3lYTEZKOW96YUxnUTlSTWtMbE9temtDQWlYTjVBYjQzYUo5ZjdOMmdFMk5uUmpOS21tQzlBQlEwVFJ3RUtWTGhWbDEKVUdxQ0hKM0FsQlhXSVhONXNqUFFjRC8rbkhlRVhNeFl2bEF5cXhYb0QzTVd0UVZqN2oyb3FsYWtPQk1nRzgrcTJxWWxtQnRzNEZOaQp3NzQ4SWw1ODZIS0JScXhIdFpkUktXMlZxYVE9PC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9kczpTaWduYXR1cmU+PC9zbWQ6c2lnbmVkTWFyaz4= diff --git a/javatests/google/registry/flows/testdata/domain_create_sunrise_encoded_mark.xml b/javatests/google/registry/flows/testdata/domain_create_sunrise_encoded_mark.xml index de4f02ef6..42346ad72 100644 --- a/javatests/google/registry/flows/testdata/domain_create_sunrise_encoded_mark.xml +++ b/javatests/google/registry/flows/testdata/domain_create_sunrise_encoded_mark.xml @@ -21,7 +21,7 @@ + type="registration"> sunrise diff --git a/javatests/google/registry/flows/testdata/domain_create_sunrise_encoded_signed_mark_response.xml b/javatests/google/registry/flows/testdata/domain_create_sunrise_encoded_signed_mark_response.xml deleted file mode 100644 index 40a250fdd..000000000 --- a/javatests/google/registry/flows/testdata/domain_create_sunrise_encoded_signed_mark_response.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - Command completed successfully - - - - test-validate.example - 2014-01-01T00:00:00Z - - - - - sunrise - B-EXAMPLE - - - - ABC-12345 - server-trid - - - diff --git a/javatests/google/registry/mapreduce/inputs/EppResourceInputsTest.java b/javatests/google/registry/mapreduce/inputs/EppResourceInputsTest.java index 4ed971f92..7077a414c 100644 --- a/javatests/google/registry/mapreduce/inputs/EppResourceInputsTest.java +++ b/javatests/google/registry/mapreduce/inputs/EppResourceInputsTest.java @@ -21,7 +21,6 @@ import static google.registry.mapreduce.inputs.EppResourceInputs.createKeyInput; import static google.registry.model.index.EppResourceIndexBucket.getBucketKey; import static google.registry.testing.DatastoreHelper.createTld; import static google.registry.testing.DatastoreHelper.newContactResource; -import static google.registry.testing.DatastoreHelper.newDomainApplication; import static google.registry.testing.DatastoreHelper.newDomainResource; import static google.registry.testing.DatastoreHelper.newHostResource; import static google.registry.testing.DatastoreHelper.persistActiveContact; @@ -34,7 +33,6 @@ import com.google.appengine.tools.mapreduce.InputReader; import com.googlecode.objectify.Key; import google.registry.model.EppResource; import google.registry.model.contact.ContactResource; -import google.registry.model.domain.DomainApplication; import google.registry.model.domain.DomainBase; import google.registry.model.domain.DomainResource; import google.registry.model.host.HostResource; @@ -223,41 +221,6 @@ public class EppResourceInputsTest { assertThrows(NoSuchElementException.class, deserializedReader::next); } - @Test - public void testSuccess_entityReader_allowsPolymorphicMatches() throws Exception { - createTld("tld"); - DomainResource domain = persistEppResourceInFirstBucket(newDomainResource("a.tld")); - DomainApplication application = persistEppResourceInFirstBucket(newDomainApplication("b.tld")); - Set seen = new HashSet<>(); - InputReader reader = createEntityInput(DomainBase.class).createReaders().get(0); - reader.beginShard(); - reader.beginSlice(); - assertThat(reader.getProgress()).isWithin(EPSILON).of(0); - seen.add(reader.next()); - assertThat(reader.getProgress()).isWithin(EPSILON).of(0.5); - seen.add(reader.next()); - assertThat(reader.getProgress()).isWithin(EPSILON).of(1.0); - assertThat(seen).containsExactly(domain, application); - assertThrows(NoSuchElementException.class, reader::next); - } - - @Test - public void testSuccess_entityReader_skipsPolymorphicMismatches() throws Exception { - createTld("tld"); - persistEppResourceInFirstBucket(newDomainApplication("b.tld")); - DomainResource domainA = persistEppResourceInFirstBucket(newDomainResource("a.tld")); - InputReader reader = - createEntityInput(DomainResource.class).createReaders().get(0); - reader.beginShard(); - reader.beginSlice(); - assertThat(reader.getProgress()).isWithin(EPSILON).of(0); - assertThat(reader.next()).isEqualTo(domainA); - // We can't reliably assert getProgress() here, since it counts before the postfilter that weeds - // out polymorphic mismatches, and so depending on whether the domain or the application was - // seen first it will be 0.5 or 1.0. However, there should be nothing left when we call next(). - assertThrows(NoSuchElementException.class, reader::next); - } - @Test public void testSuccess_entityReader_filtersOnMultipleTypes() throws Exception { createTld("tld"); @@ -284,9 +247,8 @@ public class EppResourceInputsTest { createTld("tld"); ContactResource contact = persistEppResourceInFirstBucket(newContactResource("contact")); // Specify the contact since persistActiveDomain{Application} creates a hidden one. - DomainResource domain = persistEppResourceInFirstBucket(newDomainResource("a.tld", contact)); - DomainApplication application = - persistEppResourceInFirstBucket(newDomainApplication("b.tld", contact)); + DomainResource domain1 = persistEppResourceInFirstBucket(newDomainResource("a.tld", contact)); + DomainResource domain2 = persistEppResourceInFirstBucket(newDomainResource("b.tld", contact)); HostResource host = persistEppResourceInFirstBucket(newHostResource("ns1.example.com")); Set seen = new HashSet<>(); InputReader reader = createEntityInput(EppResource.class).createReaders().get(0); @@ -301,7 +263,7 @@ public class EppResourceInputsTest { assertThat(reader.getProgress()).isWithin(EPSILON).of(0.75); seen.add(reader.next()); assertThat(reader.getProgress()).isWithin(EPSILON).of(1.0); - assertThat(seen).containsExactly(domain, host, application, contact); + assertThat(seen).containsExactly(domain1, domain2, host, contact); assertThrows(NoSuchElementException.class, reader::next); } } diff --git a/javatests/google/registry/model/OteAccountBuilderTest.java b/javatests/google/registry/model/OteAccountBuilderTest.java index cf8ff12b4..1aac53f30 100644 --- a/javatests/google/registry/model/OteAccountBuilderTest.java +++ b/javatests/google/registry/model/OteAccountBuilderTest.java @@ -16,9 +16,13 @@ package google.registry.model; import static com.google.common.truth.Truth.assertThat; import static com.google.common.truth.Truth8.assertThat; +import static google.registry.model.registry.Registry.TldState.GENERAL_AVAILABILITY; +import static google.registry.testing.AppEngineRule.makeRegistrar1; import static google.registry.testing.CertificateSamples.SAMPLE_CERT; import static google.registry.testing.CertificateSamples.SAMPLE_CERT_HASH; +import static google.registry.testing.DatastoreHelper.createTld; import static google.registry.testing.DatastoreHelper.persistPremiumList; +import static google.registry.testing.DatastoreHelper.persistSimpleResource; import static google.registry.testing.JUnitBackports.assertThrows; import static google.registry.util.DateTimeUtils.START_OF_TIME; import static org.joda.money.CurrencyUnit.USD; @@ -29,7 +33,6 @@ import google.registry.model.registrar.RegistrarContact; import google.registry.model.registry.Registry; import google.registry.model.registry.Registry.TldState; import google.registry.testing.AppEngineRule; -import google.registry.testing.DatastoreHelper; import google.registry.util.CidrAddressBlock; import google.registry.util.SystemClock; import org.joda.money.Money; @@ -52,7 +55,6 @@ public final class OteAccountBuilderTest { assertThat(OteAccountBuilder.forClientId("myclientid").getClientIdToTldMap()) .containsExactly( "myclientid-1", "myclientid-sunrise", - "myclientid-2", "myclientid-landrush", "myclientid-3", "myclientid-ga", "myclientid-4", "myclientid-ga", "myclientid-5", "myclientid-eap"); @@ -72,7 +74,7 @@ public final class OteAccountBuilderTest { assertThat(registry.getAddGracePeriodLength()).isEqualTo(Duration.standardDays(5)); assertThat(registry.getPendingDeleteLength()).isEqualTo(Duration.standardDays(5)); assertThat(registry.getRedemptionGracePeriodLength()).isEqualTo(Duration.standardDays(30)); - assertThat(registry.getEapFeeScheduleAsMap()).containsExactly(START_OF_TIME, Money.of(USD, 0)); + assertThat(registry.getEapFeeScheduleAsMap()).containsExactly(START_OF_TIME, Money.zero(USD)); } private void assertTldExistsGa(String tld, Money eapFee) { @@ -80,7 +82,7 @@ public final class OteAccountBuilderTest { assertThat(registry).isNotNull(); assertThat(registry.getPremiumList().getName()).isEqualTo("default_sandbox_list"); assertThat(registry.getTldStateTransitions()) - .containsExactly(START_OF_TIME, TldState.GENERAL_AVAILABILITY); + .containsExactly(START_OF_TIME, GENERAL_AVAILABILITY); assertThat(registry.getDnsWriters()).containsExactly("VoidDnsWriter"); assertThat(registry.getAddGracePeriodLength()).isEqualTo(Duration.standardHours(1)); assertThat(registry.getPendingDeleteLength()).isEqualTo(Duration.standardMinutes(5)); @@ -118,16 +120,13 @@ public final class OteAccountBuilderTest { OteAccountBuilder.forClientId("myclientid").addContact("email@example.com").buildAndPersist(); assertTldExists("myclientid-sunrise", TldState.START_DATE_SUNRISE); - assertTldExists("myclientid-landrush", TldState.LANDRUSH); - assertTldExistsGa("myclientid-ga", Money.of(USD, 0)); + assertTldExistsGa("myclientid-ga", Money.zero(USD)); assertTldExistsGa("myclientid-eap", Money.of(USD, 100)); assertRegistrarExists("myclientid-1", "myclientid-sunrise"); - assertRegistrarExists("myclientid-2", "myclientid-landrush"); assertRegistrarExists("myclientid-3", "myclientid-ga"); assertRegistrarExists("myclientid-4", "myclientid-ga"); assertRegistrarExists("myclientid-5", "myclientid-eap"); assertContactExists("myclientid-1", "email@example.com"); - assertContactExists("myclientid-2", "email@example.com"); assertContactExists("myclientid-3", "email@example.com"); assertContactExists("myclientid-4", "email@example.com"); assertContactExists("myclientid-5", "email@example.com"); @@ -142,26 +141,21 @@ public final class OteAccountBuilderTest { .buildAndPersist(); assertTldExists("myclientid-sunrise", TldState.START_DATE_SUNRISE); - assertTldExists("myclientid-landrush", TldState.LANDRUSH); - assertTldExistsGa("myclientid-ga", Money.of(USD, 0)); + assertTldExistsGa("myclientid-ga", Money.zero(USD)); assertTldExistsGa("myclientid-eap", Money.of(USD, 100)); assertRegistrarExists("myclientid-1", "myclientid-sunrise"); - assertRegistrarExists("myclientid-2", "myclientid-landrush"); assertRegistrarExists("myclientid-3", "myclientid-ga"); assertRegistrarExists("myclientid-4", "myclientid-ga"); assertRegistrarExists("myclientid-5", "myclientid-eap"); assertContactExists("myclientid-1", "email@example.com"); - assertContactExists("myclientid-2", "email@example.com"); assertContactExists("myclientid-3", "email@example.com"); assertContactExists("myclientid-4", "email@example.com"); assertContactExists("myclientid-5", "email@example.com"); assertContactExists("myclientid-1", "other@example.com"); - assertContactExists("myclientid-2", "other@example.com"); assertContactExists("myclientid-3", "other@example.com"); assertContactExists("myclientid-4", "other@example.com"); assertContactExists("myclientid-5", "other@example.com"); assertContactExists("myclientid-1", "someone@example.com"); - assertContactExists("myclientid-2", "someone@example.com"); assertContactExists("myclientid-3", "someone@example.com"); assertContactExists("myclientid-4", "someone@example.com"); assertContactExists("myclientid-5", "someone@example.com"); @@ -244,8 +238,7 @@ public final class OteAccountBuilderTest { @Test public void testCreateOteEntities_entityExists_failsWhenNotReplaceExisting() { - DatastoreHelper.persistSimpleResource( - AppEngineRule.makeRegistrar1().asBuilder().setClientId("myclientid-1").build()); + persistSimpleResource(makeRegistrar1().asBuilder().setClientId("myclientid-1").build()); OteAccountBuilder oteSetupHelper = OteAccountBuilder.forClientId("myclientid"); assertThat(assertThrows(IllegalStateException.class, () -> oteSetupHelper.buildAndPersist())) @@ -255,14 +248,14 @@ public final class OteAccountBuilderTest { @Test public void testCreateOteEntities_entityExists_succeedsWhenReplaceExisting() { - DatastoreHelper.persistSimpleResource( - AppEngineRule.makeRegistrar1().asBuilder().setClientId("myclientid-1").build()); - DatastoreHelper.createTld("myclientid-landrush", Registry.TldState.SUNRUSH); + persistSimpleResource(makeRegistrar1().asBuilder().setClientId("myclientid-4").build()); + createTld("myclientid-ga", GENERAL_AVAILABILITY); OteAccountBuilder.forClientId("myclientid").setReplaceExisting(true).buildAndPersist(); - assertTldExists("myclientid-landrush", TldState.LANDRUSH); + assertTldExistsGa("myclientid-ga", Money.zero(USD)); assertRegistrarExists("myclientid-3", "myclientid-ga"); + assertRegistrarExists("myclientid-4", "myclientid-ga"); } @Test @@ -305,7 +298,6 @@ public final class OteAccountBuilderTest { assertThat(OteAccountBuilder.createClientIdToTldMap("myclientid")) .containsExactly( "myclientid-1", "myclientid-sunrise", - "myclientid-2", "myclientid-landrush", "myclientid-3", "myclientid-ga", "myclientid-4", "myclientid-ga", "myclientid-5", "myclientid-eap"); diff --git a/javatests/google/registry/model/OteStatsTest.java b/javatests/google/registry/model/OteStatsTest.java index cf0a8724e..6af75bdcb 100644 --- a/javatests/google/registry/model/OteStatsTest.java +++ b/javatests/google/registry/model/OteStatsTest.java @@ -65,11 +65,6 @@ public final class OteStatsTest { + "contact transfer rejects: 0\n" + "contact transfer requests: 0\n" + "contact updates: 0\n" - + "domain application creates: 0\n" - + "domain application creates landrush: 0\n" - + "domain application creates sunrise: 0\n" - + "domain application deletes: 0\n" - + "domain application updates: 0\n" + "domain autorenews: 0\n" + "domain creates: 5\n" + "domain creates ascii: 4\n" @@ -111,11 +106,6 @@ public final class OteStatsTest { + "contact transfer rejects: 0\n" + "contact transfer requests: 0\n" + "contact updates: 0\n" - + "domain application creates: 0\n" - + "domain application creates landrush: 0\n" - + "domain application creates sunrise: 0\n" - + "domain application deletes: 0\n" - + "domain application updates: 0\n" + "domain autorenews: 0\n" + "domain creates: 5\n" + "domain creates ascii: 4\n" diff --git a/javatests/google/registry/model/OteStatsTestHelper.java b/javatests/google/registry/model/OteStatsTestHelper.java index 410e6c111..6af145dd9 100644 --- a/javatests/google/registry/model/OteStatsTestHelper.java +++ b/javatests/google/registry/model/OteStatsTestHelper.java @@ -72,7 +72,7 @@ public final class OteStatsTestHelper { .build()); persistResource( new HistoryEntry.Builder() - .setClientId("blobio-2") + .setClientId("blobio-3") .setType(Type.DOMAIN_DELETE) .setXmlBytes(getBytes("domain_delete.xml")) .build()); @@ -109,13 +109,13 @@ public final class OteStatsTestHelper { .build()); persistResource( new HistoryEntry.Builder() - .setClientId("blobio-1") + .setClientId("blobio-4") .setType(Type.DOMAIN_UPDATE) .setXmlBytes(getBytes("domain_update_with_secdns.xml")) .build()); persistResource( new HistoryEntry.Builder() - .setClientId("blobio-1") + .setClientId("blobio-5") .setType(Type.HOST_CREATE) .setXmlBytes(getBytes("host_create_complete.xml")) .build()); diff --git a/javatests/google/registry/model/domain/DomainApplicationTest.java b/javatests/google/registry/model/domain/DomainApplicationTest.java deleted file mode 100644 index e39ccb794..000000000 --- a/javatests/google/registry/model/domain/DomainApplicationTest.java +++ /dev/null @@ -1,155 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.model.domain; - -import static com.google.common.truth.Truth.assertThat; -import static com.google.common.truth.Truth8.assertThat; -import static google.registry.model.EppResourceUtils.loadDomainApplication; -import static google.registry.testing.DatastoreHelper.cloneAndSetAutoTimestamps; -import static google.registry.testing.DatastoreHelper.createTld; -import static google.registry.testing.DatastoreHelper.newDomainApplication; -import static google.registry.testing.DatastoreHelper.newHostResource; -import static google.registry.testing.DatastoreHelper.persistActiveContact; -import static google.registry.testing.DatastoreHelper.persistActiveHost; -import static google.registry.testing.DatastoreHelper.persistResource; -import static google.registry.util.DateTimeUtils.START_OF_TIME; -import static org.joda.money.CurrencyUnit.USD; - -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableSet; -import com.googlecode.objectify.Key; -import google.registry.model.EntityTestCase; -import google.registry.model.domain.launch.ApplicationStatus; -import google.registry.model.domain.launch.LaunchNotice; -import google.registry.model.domain.launch.LaunchPhase; -import google.registry.model.domain.secdns.DelegationSignerData; -import google.registry.model.eppcommon.AuthInfo.PasswordAuth; -import google.registry.model.eppcommon.StatusValue; -import google.registry.model.eppcommon.Trid; -import google.registry.model.smd.EncodedSignedMark; -import org.joda.money.Money; -import org.junit.Before; -import org.junit.Test; - -/** Unit tests for {@link DomainApplication}. */ -public class DomainApplicationTest extends EntityTestCase { - - DomainApplication domainApplication; - - @Before - public void setUp() { - createTld("com"); - // Set up a new persisted domain application entity. - domainApplication = persistResource(cloneAndSetAutoTimestamps( - new DomainApplication.Builder() - .setFullyQualifiedDomainName("example.com") - .setRepoId("1-COM") - .setCreationClientId("a registrar") - .setLastEppUpdateTime(clock.nowUtc()) - .setLastEppUpdateClientId("another registrar") - .setStatusValues(ImmutableSet.of( - StatusValue.CLIENT_DELETE_PROHIBITED, - StatusValue.SERVER_DELETE_PROHIBITED, - StatusValue.SERVER_TRANSFER_PROHIBITED, - StatusValue.SERVER_UPDATE_PROHIBITED, - StatusValue.SERVER_RENEW_PROHIBITED, - StatusValue.SERVER_HOLD)) - .setRegistrant(Key.create(persistActiveContact("contact_id1"))) - .setContacts(ImmutableSet.of(DesignatedContact.create( - DesignatedContact.Type.ADMIN, - Key.create(persistActiveContact("contact_id2"))))) - .setNameservers( - ImmutableSet.of(Key.create(persistActiveHost("ns1.example.com")))) - .setPersistedCurrentSponsorClientId("a third registrar") - .setAuthInfo(DomainAuthInfo.create(PasswordAuth.create("password"))) - .setDsData(ImmutableSet.of(DelegationSignerData.create(1, 2, 3, new byte[] {0, 1, 2}))) - .setLaunchNotice( - LaunchNotice.create("tcnid", "validatorId", START_OF_TIME, START_OF_TIME)) - .setCreationTrid(Trid.create("client-creation-trid", "server-trid")) - .setPhase(LaunchPhase.LANDRUSH) - .setPeriod(Period.create(5, Period.Unit.YEARS)) - .setEncodedSignedMarks(ImmutableList.of(EncodedSignedMark.create("base64", "abcdefg="))) - .setApplicationStatus(ApplicationStatus.ALLOCATED) - .setAuctionPrice(Money.of(USD, 11)) - .build())); - } - - @Test - public void testPersistence() { - assertThat(loadDomainApplication(domainApplication.getForeignKey(), clock.nowUtc())) - .hasValue(domainApplication); - } - - @Test - public void testIndexing() throws Exception { - domainApplication = persistResource( - domainApplication.asBuilder().setPeriod(Period.create(5, Period.Unit.YEARS)).build()); - verifyIndexing( - domainApplication, - "allContacts.contact", - "fullyQualifiedDomainName", - "nsHosts", - "deletionTime", - "currentSponsorClientId", - "tld"); - } - - private DomainApplication.Builder emptyBuilder() { - return newDomainApplication("example.com").asBuilder(); - } - - @Test - public void testEmptyStringsBecomeNull() { - assertThat(emptyBuilder().setPersistedCurrentSponsorClientId(null).build() - .getCurrentSponsorClientId()).isNull(); - assertThat(emptyBuilder().setPersistedCurrentSponsorClientId("").build() - .getCurrentSponsorClientId()).isNull(); - assertThat(emptyBuilder().setPersistedCurrentSponsorClientId(" ").build() - .getCurrentSponsorClientId()).isNotNull(); - } - - @Test - public void testEmptySetsAndArraysBecomeNull() { - assertThat(emptyBuilder().setNameservers(ImmutableSet.of()).build().nsHosts).isNull(); - assertThat( - emptyBuilder() - .setNameservers(ImmutableSet.of(Key.create(newHostResource("foo.example.tld")))) - .build() - .nsHosts) - .isNotNull(); - // This behavior should also hold true for ImmutableObjects nested in collections. - assertThat(emptyBuilder() - .setDsData(ImmutableSet.of(DelegationSignerData.create(1, 1, 1, null))) - .build() - .getDsData().asList().get(0).getDigest()) - .isNull(); - assertThat(emptyBuilder() - .setDsData(ImmutableSet.of(DelegationSignerData.create(1, 1, 1, new byte[]{}))) - .build() - .getDsData().asList().get(0).getDigest()) - .isNull(); - assertThat(emptyBuilder() - .setDsData(ImmutableSet.of(DelegationSignerData.create(1, 1, 1, new byte[]{1}))) - .build() - .getDsData().asList().get(0).getDigest()) - .isNotNull(); - } - - @Test - public void testToHydratedString_notCircular() { - // If there are circular references, this will overflow the stack. - domainApplication.toHydratedString(); - } -} diff --git a/javatests/google/registry/model/domain/DomainCommandTest.java b/javatests/google/registry/model/domain/DomainCommandTest.java index 1a3d3b986..c6892de43 100644 --- a/javatests/google/registry/model/domain/DomainCommandTest.java +++ b/javatests/google/registry/model/domain/DomainCommandTest.java @@ -57,11 +57,6 @@ public class DomainCommandTest extends ResourceCommandTestCase { doXmlRoundtripTest("domain_create_sunrise_encoded_signed_mark.xml"); } - @Test - public void testCreate_landrush() throws Exception { - doXmlRoundtripTest("domain_create_landrush.xml"); - } - @Test public void testCreate_fee() throws Exception { doXmlRoundtripTest("domain_create_fee.xml"); @@ -158,16 +153,6 @@ public class DomainCommandTest extends ResourceCommandTestCase { doXmlRoundtripTest("domain_info_sunrise.xml"); } - @Test - public void testInfo_landrush() throws Exception { - doXmlRoundtripTest("domain_info_landrush.xml"); - } - - @Test - public void testInfo_sunriseNoApplicationId() throws Exception { - doXmlRoundtripTest("domain_info_sunrise_no_application_id.xml"); - } - @Test public void testInfo_feeExtension() throws Exception { doXmlRoundtripTest("domain_info_fee.xml"); diff --git a/javatests/google/registry/model/domain/DomainResourceTest.java b/javatests/google/registry/model/domain/DomainResourceTest.java index 7a1e2b464..c24311320 100644 --- a/javatests/google/registry/model/domain/DomainResourceTest.java +++ b/javatests/google/registry/model/domain/DomainResourceTest.java @@ -60,6 +60,7 @@ import org.junit.Test; /** Unit tests for {@link DomainResource}. */ public class DomainResourceTest extends EntityTestCase { + DomainResource domain; @Before @@ -141,8 +142,6 @@ public class DomainResourceTest extends EntityTestCase { .setAutorenewBillingEvent(recurringBillKey) .setAutorenewPollMessage(autorenewPollKey) .setSmdId("smdid") - .setApplicationTime(START_OF_TIME) - .setApplication(Key.create(DomainApplication.class, 1)) .addGracePeriod( GracePeriod.create( GracePeriodStatus.ADD, clock.nowUtc().plusDays(1), "registrar", null)) diff --git a/javatests/google/registry/model/domain/GracePeriodTest.java b/javatests/google/registry/model/domain/GracePeriodTest.java index cc002c83c..70d10093f 100644 --- a/javatests/google/registry/model/domain/GracePeriodTest.java +++ b/javatests/google/registry/model/domain/GracePeriodTest.java @@ -67,17 +67,9 @@ public class GracePeriodTest { assertThat(gracePeriod.getRecurringBillingEvent()).isNull(); assertThat(gracePeriod.getClientId()).isEqualTo("TheRegistrar"); assertThat(gracePeriod.getExpirationTime()).isEqualTo(now.plusDays(1)); - assertThat(gracePeriod.isSunrushAddGracePeriod()).isFalse(); assertThat(gracePeriod.hasBillingEvent()).isTrue(); } - @Test - public void testSuccess_forBillingEvent_sunrushAdd() { - GracePeriod gracePeriod = GracePeriod.forBillingEvent(GracePeriodStatus.SUNRUSH_ADD, onetime); - assertThat(gracePeriod.getType()).isEqualTo(GracePeriodStatus.ADD); - assertThat(gracePeriod.isSunrushAddGracePeriod()).isTrue(); - } - @Test public void testSuccess_createWithoutBillingEvent() { GracePeriod gracePeriod = GracePeriod.createWithoutBillingEvent( diff --git a/javatests/google/registry/model/domain/testdata/domain_create_landrush.xml b/javatests/google/registry/model/domain/testdata/domain_create_landrush.xml deleted file mode 100644 index 255cae8ce..000000000 --- a/javatests/google/registry/model/domain/testdata/domain_create_landrush.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - example.tld - jd1234 - sh8013 - sh8013 - - 2fooBAR - - - - - - landrush - - - ABC-12345 - - diff --git a/javatests/google/registry/model/domain/testdata/domain_info_landrush.xml b/javatests/google/registry/model/domain/testdata/domain_info_landrush.xml deleted file mode 100644 index 0cccb9678..000000000 --- a/javatests/google/registry/model/domain/testdata/domain_info_landrush.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - example.tld - - - - - landrush - 123 - - - ABC-12345 - - diff --git a/javatests/google/registry/model/domain/testdata/domain_info_sunrise.xml b/javatests/google/registry/model/domain/testdata/domain_info_sunrise.xml index 5161e4c29..83a8a0eef 100644 --- a/javatests/google/registry/model/domain/testdata/domain_info_sunrise.xml +++ b/javatests/google/registry/model/domain/testdata/domain_info_sunrise.xml @@ -1,19 +1,19 @@ - - - example.tld - - - - - sunrise - 123 - - - ABC-12345 + + + example.tld + + + + + sunrise + + + ABC-12345 diff --git a/javatests/google/registry/model/domain/testdata/domain_info_sunrise_no_application_id.xml b/javatests/google/registry/model/domain/testdata/domain_info_sunrise_no_application_id.xml deleted file mode 100644 index 469b8bfdc..000000000 --- a/javatests/google/registry/model/domain/testdata/domain_info_sunrise_no_application_id.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - example.tld - - - - - sunrise - - - ABC-12345 - - diff --git a/javatests/google/registry/model/index/DomainApplicationIndexTest.java b/javatests/google/registry/model/index/DomainApplicationIndexTest.java deleted file mode 100644 index 64671bf8b..000000000 --- a/javatests/google/registry/model/index/DomainApplicationIndexTest.java +++ /dev/null @@ -1,143 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.model.index; - -import static com.google.common.truth.Truth.assertThat; -import static google.registry.model.index.DomainApplicationIndex.createUpdatedInstance; -import static google.registry.model.index.DomainApplicationIndex.createWithSpecifiedKeys; -import static google.registry.model.index.DomainApplicationIndex.loadActiveApplicationsByDomainName; -import static google.registry.model.ofy.ObjectifyService.ofy; -import static google.registry.testing.DatastoreHelper.createTld; -import static google.registry.testing.DatastoreHelper.newDomainApplication; -import static google.registry.testing.DatastoreHelper.persistResource; -import static google.registry.testing.DatastoreHelper.persistSimpleResource; -import static google.registry.testing.JUnitBackports.assertThrows; -import static org.joda.time.DateTimeZone.UTC; - -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableSet; -import com.googlecode.objectify.Key; -import google.registry.model.EntityTestCase; -import google.registry.model.domain.DomainApplication; -import org.joda.time.DateTime; -import org.junit.Before; -import org.junit.Test; - -/** Unit tests for {@link DomainApplicationIndex}. */ -public class DomainApplicationIndexTest extends EntityTestCase { - @Before - public void init() { - createTld("com"); - } - - @Test - public void testFailure_create_nullReferences() { - IllegalArgumentException thrown = - assertThrows( - IllegalArgumentException.class, - () -> DomainApplicationIndex.createWithSpecifiedKeys("blah.com", null)); - assertThat(thrown).hasMessageThat().contains("Keys must not be null or empty."); - } - - @Test - public void testFailure_create_emptyReferences() { - IllegalArgumentException thrown = - assertThrows( - IllegalArgumentException.class, - () -> createWithSpecifiedKeys("blah.com", ImmutableSet.of())); - assertThat(thrown).hasMessageThat().contains("Keys must not be null or empty."); - } - - @Test - public void testSuccess_singleApplication() { - DomainApplication application = persistSimpleResource(newDomainApplication("example.com")); - persistResource(createUpdatedInstance(application)); - DomainApplicationIndex savedIndex = DomainApplicationIndex.load("example.com"); - assertThat(savedIndex).isNotNull(); - assertThat(savedIndex.getKeys()).containsExactly(Key.create(application)); - assertThat(loadActiveApplicationsByDomainName("example.com", clock.nowUtc())) - .containsExactly(application); - } - - @Test - public void testSuccess_noApplications() { - assertThat(DomainApplicationIndex.load("example.com")).isNull(); - assertThat(loadActiveApplicationsByDomainName("example.com", clock.nowUtc())).isEmpty(); - } - - @Test - public void testSuccess_multipleApplications() { - DomainApplication application1 = persistSimpleResource(newDomainApplication("example.com")); - DomainApplication application2 = persistSimpleResource(newDomainApplication("example.com")); - DomainApplication application3 = persistSimpleResource(newDomainApplication("example.com")); - persistResource(createUpdatedInstance(application1)); - persistResource(createUpdatedInstance(application2)); - persistResource(createUpdatedInstance(application3)); - DomainApplicationIndex savedIndex = DomainApplicationIndex.load("example.com"); - assertThat(savedIndex).isNotNull(); - assertThat(savedIndex.getKeys()).containsExactly( - Key.create(application1), Key.create(application2), Key.create(application3)); - assertThat(loadActiveApplicationsByDomainName("example.com", clock.nowUtc())) - .containsExactly(application1, application2, application3); - } - - @Test - public void testSuccess_doesntStoreSameApplicationMultipleTimes() { - DomainApplication application1 = persistSimpleResource(newDomainApplication("example.com")); - DomainApplication application2 = persistSimpleResource(newDomainApplication("example.com")); - persistResource(createUpdatedInstance(application1)); - persistResource(createUpdatedInstance(application2)); - persistResource(createUpdatedInstance(application1)); - assertThat(loadActiveApplicationsByDomainName("example.com", clock.nowUtc())) - .containsExactly(application1, application2); - } - - @Test - public void testSuccess_doesntIncludePastApplications() { - DomainApplication application1 = persistSimpleResource(newDomainApplication("example.com")); - DomainApplication application2 = - persistSimpleResource( - newDomainApplication("example.com") - .asBuilder() - .setDeletionTime(DateTime.now(UTC).minusDays(30)) - .build()); - persistResource(createUpdatedInstance(application1)); - persistResource(createUpdatedInstance(application2)); - DomainApplicationIndex savedIndex = - DomainApplicationIndex.load(application1.getFullyQualifiedDomainName()); - assertThat(savedIndex.getKeys()).hasSize(2); - assertThat(loadActiveApplicationsByDomainName("example.com", DateTime.now(UTC))) - .containsExactly(application1); - } - - /** Ensure loading over 25 applications still succeeds (despite being in a transaction.) */ - @Test - public void testSuccess_overCrossTransactionLimit() { - final ImmutableList.Builder applicationsBuilder = - new ImmutableList.Builder<>(); - for (int i = 0; i < 30; i++) { - DomainApplication application = persistSimpleResource(newDomainApplication("example.com")); - persistResource(createUpdatedInstance(application)); - applicationsBuilder.add(application); - } - ofy() - .transact( - () -> { - assertThat(DomainApplicationIndex.load("example.com")).isNotNull(); - assertThat(loadActiveApplicationsByDomainName("example.com", clock.nowUtc())) - .containsExactlyElementsIn(applicationsBuilder.build()); - }); - } -} diff --git a/javatests/google/registry/model/registry/RegistryTest.java b/javatests/google/registry/model/registry/RegistryTest.java index b9abede29..4dcbef58f 100644 --- a/javatests/google/registry/model/registry/RegistryTest.java +++ b/javatests/google/registry/model/registry/RegistryTest.java @@ -19,6 +19,10 @@ import static com.google.common.truth.Truth.assertWithMessage; import static com.google.common.truth.Truth8.assertThat; import static google.registry.model.common.EntityGroupRoot.getCrossTldKey; import static google.registry.model.ofy.ObjectifyService.ofy; +import static google.registry.model.registry.Registry.TldState.GENERAL_AVAILABILITY; +import static google.registry.model.registry.Registry.TldState.PREDELEGATION; +import static google.registry.model.registry.Registry.TldState.QUIET_PERIOD; +import static google.registry.model.registry.Registry.TldState.START_DATE_SUNRISE; import static google.registry.testing.DatastoreHelper.createTld; import static google.registry.testing.DatastoreHelper.newRegistry; import static google.registry.testing.DatastoreHelper.persistPremiumList; @@ -216,65 +220,51 @@ public class RegistryTest extends EntityTestCase { Registry registry = Registry.get("tld").asBuilder() .setTldStateTransitions(ImmutableSortedMap.of(START_OF_TIME, TldState.PDT)) .build(); - assertThat(registry.getTldState(START_OF_TIME)).isEqualTo(TldState.GENERAL_AVAILABILITY); + assertThat(registry.getTldState(START_OF_TIME)).isEqualTo(GENERAL_AVAILABILITY); } @Test public void testTldStateTransitionTimes() { - Registry registry = Registry.get("tld").asBuilder() - .setTldStateTransitions(ImmutableSortedMap.naturalOrder() - .put(START_OF_TIME, TldState.PREDELEGATION) - .put(clock.nowUtc().plusMonths(1), TldState.SUNRISE) - .put(clock.nowUtc().plusMonths(2), TldState.SUNRUSH) - .put(clock.nowUtc().plusMonths(3), TldState.LANDRUSH) - .put(clock.nowUtc().plusMonths(4), TldState.QUIET_PERIOD) - .put(clock.nowUtc().plusMonths(5), TldState.GENERAL_AVAILABILITY) - .build()) - .build(); - assertThat(registry.getTldState(clock.nowUtc())).isEqualTo(TldState.PREDELEGATION); - assertThat(registry.getTldState(clock.nowUtc().plusMillis(1))) - .isEqualTo(TldState.PREDELEGATION); + Registry registry = + Registry.get("tld") + .asBuilder() + .setTldStateTransitions( + ImmutableSortedMap.naturalOrder() + .put(START_OF_TIME, PREDELEGATION) + .put(clock.nowUtc().plusMonths(1), START_DATE_SUNRISE) + .put(clock.nowUtc().plusMonths(2), QUIET_PERIOD) + .put(clock.nowUtc().plusMonths(3), GENERAL_AVAILABILITY) + .build()) + .build(); + assertThat(registry.getTldState(clock.nowUtc())).isEqualTo(PREDELEGATION); + assertThat(registry.getTldState(clock.nowUtc().plusMillis(1))).isEqualTo(PREDELEGATION); assertThat(registry.getTldState(clock.nowUtc().plusMonths(1).minusMillis(1))) - .isEqualTo(TldState.PREDELEGATION); - assertThat(registry.getTldState(clock.nowUtc().plusMonths(1))).isEqualTo(TldState.SUNRISE); + .isEqualTo(PREDELEGATION); + assertThat(registry.getTldState(clock.nowUtc().plusMonths(1))).isEqualTo(START_DATE_SUNRISE); assertThat(registry.getTldState(clock.nowUtc().plusMonths(1).plusMillis(1))) - .isEqualTo(TldState.SUNRISE); + .isEqualTo(START_DATE_SUNRISE); assertThat(registry.getTldState(clock.nowUtc().plusMonths(2).minusMillis(1))) - .isEqualTo(TldState.SUNRISE); - assertThat(registry.getTldState(clock.nowUtc().plusMonths(2))).isEqualTo(TldState.SUNRUSH); + .isEqualTo(START_DATE_SUNRISE); + assertThat(registry.getTldState(clock.nowUtc().plusMonths(2))).isEqualTo(QUIET_PERIOD); assertThat(registry.getTldState(clock.nowUtc().plusMonths(2).plusMillis(1))) - .isEqualTo(TldState.SUNRUSH); + .isEqualTo(QUIET_PERIOD); assertThat(registry.getTldState(clock.nowUtc().plusMonths(3).minusMillis(1))) - .isEqualTo(TldState.SUNRUSH); - assertThat(registry.getTldState(clock.nowUtc().plusMonths(3))).isEqualTo(TldState.LANDRUSH); + .isEqualTo(QUIET_PERIOD); + assertThat(registry.getTldState(clock.nowUtc().plusMonths(3))).isEqualTo(GENERAL_AVAILABILITY); assertThat(registry.getTldState(clock.nowUtc().plusMonths(3).plusMillis(1))) - .isEqualTo(TldState.LANDRUSH); - assertThat(registry.getTldState(clock.nowUtc().plusMonths(4).minusMillis(1))) - .isEqualTo(TldState.LANDRUSH); - assertThat(registry.getTldState(clock.nowUtc().plusMonths(4))) - .isEqualTo(TldState.QUIET_PERIOD); - assertThat(registry.getTldState(clock.nowUtc().plusMonths(4).plusMillis(1))) - .isEqualTo(TldState.QUIET_PERIOD); - assertThat(registry.getTldState(clock.nowUtc().plusMonths(5).minusMillis(1))) - .isEqualTo(TldState.QUIET_PERIOD); - assertThat(registry.getTldState(clock.nowUtc().plusMonths(5))) - .isEqualTo(TldState.GENERAL_AVAILABILITY); - assertThat(registry.getTldState(clock.nowUtc().plusMonths(5).plusMillis(1))) - .isEqualTo(TldState.GENERAL_AVAILABILITY); - assertThat(registry.getTldState(END_OF_TIME)).isEqualTo(TldState.GENERAL_AVAILABILITY); + .isEqualTo(GENERAL_AVAILABILITY); + assertThat(registry.getTldState(END_OF_TIME)).isEqualTo(GENERAL_AVAILABILITY); } @Test public void testQuietPeriodCanAppearMultipleTimesAnywhere() { Registry.get("tld").asBuilder() .setTldStateTransitions(ImmutableSortedMap.naturalOrder() - .put(START_OF_TIME, TldState.PREDELEGATION) - .put(clock.nowUtc().plusMonths(1), TldState.QUIET_PERIOD) - .put(clock.nowUtc().plusMonths(2), TldState.SUNRISE) - .put(clock.nowUtc().plusMonths(3), TldState.QUIET_PERIOD) - .put(clock.nowUtc().plusMonths(4), TldState.LANDRUSH) - .put(clock.nowUtc().plusMonths(5), TldState.QUIET_PERIOD) - .put(clock.nowUtc().plusMonths(6), TldState.GENERAL_AVAILABILITY) + .put(START_OF_TIME, PREDELEGATION) + .put(clock.nowUtc().plusMonths(1), QUIET_PERIOD) + .put(clock.nowUtc().plusMonths(2), START_DATE_SUNRISE) + .put(clock.nowUtc().plusMonths(3), QUIET_PERIOD) + .put(clock.nowUtc().plusMonths(6), GENERAL_AVAILABILITY) .build()) .build(); } @@ -366,10 +356,8 @@ public class RegistryTest extends EntityTestCase { .asBuilder() .setTldStateTransitions( ImmutableSortedMap.of( - clock.nowUtc(), - TldState.SUNRUSH, - clock.nowUtc().plusMonths(1), - TldState.SUNRISE)) + clock.nowUtc(), GENERAL_AVAILABILITY, + clock.nowUtc().plusMonths(1), START_DATE_SUNRISE)) .build()); } @@ -382,10 +370,8 @@ public class RegistryTest extends EntityTestCase { .asBuilder() .setTldStateTransitions( ImmutableSortedMap.of( - clock.nowUtc(), - TldState.SUNRUSH, - clock.nowUtc().plusMonths(1), - TldState.SUNRUSH)) + clock.nowUtc(), START_DATE_SUNRISE, + clock.nowUtc().plusMonths(1), START_DATE_SUNRISE)) .build()); } diff --git a/javatests/google/registry/model/testdata/schema.txt b/javatests/google/registry/model/testdata/schema.txt index 7f0c4f045..4fa328912 100644 --- a/javatests/google/registry/model/testdata/schema.txt +++ b/javatests/google/registry/model/testdata/schema.txt @@ -157,32 +157,6 @@ enum google.registry.model.domain.DesignatedContact$Type { REGISTRANT; TECH; } -class google.registry.model.domain.DomainApplication { - @Id java.lang.String repoId; - com.google.common.collect.ImmutableSortedMap> revisions; - google.registry.model.CreateAutoTimestamp creationTime; - google.registry.model.UpdateAutoTimestamp updateTimestamp; - google.registry.model.domain.DomainAuthInfo authInfo; - google.registry.model.domain.Period period; - google.registry.model.domain.launch.ApplicationStatus applicationStatus; - google.registry.model.domain.launch.LaunchNotice launchNotice; - google.registry.model.domain.launch.LaunchPhase phase; - google.registry.model.eppcommon.Trid creationTrid; - java.lang.String creationClientId; - java.lang.String currentSponsorClientId; - java.lang.String fullyQualifiedDomainName; - java.lang.String idnTableName; - java.lang.String lastEppUpdateClientId; - java.lang.String tld; - java.util.List encodedSignedMarks; - java.util.Set> nsHosts; - java.util.Set allContacts; - java.util.Set dsData; - java.util.Set status; - org.joda.money.Money auctionPrice; - org.joda.time.DateTime deletionTime; - org.joda.time.DateTime lastEppUpdateTime; -} class google.registry.model.domain.DomainAuthInfo { google.registry.model.eppcommon.AuthInfo$PasswordAuth pw; } @@ -210,7 +184,6 @@ class google.registry.model.domain.DomainResource { @Id java.lang.String repoId; com.google.common.collect.ImmutableSortedMap> revisions; com.googlecode.objectify.Key autorenewBillingEvent; - com.googlecode.objectify.Key application; com.googlecode.objectify.Key autorenewPollMessage; com.googlecode.objectify.Key deletePollMessage; google.registry.model.CreateAutoTimestamp creationTime; @@ -231,7 +204,6 @@ class google.registry.model.domain.DomainResource { java.util.Set dsData; java.util.Set status; java.util.Set subordinateHosts; - org.joda.time.DateTime applicationTime; org.joda.time.DateTime deletionTime; org.joda.time.DateTime lastEppUpdateTime; org.joda.time.DateTime lastTransferTime; @@ -252,20 +224,6 @@ enum google.registry.model.domain.Period$Unit { MONTHS; YEARS; } -enum google.registry.model.domain.launch.ApplicationStatus { - ALLOCATED; - INVALID; - PENDING_ALLOCATION; - PENDING_VALIDATION; - REJECTED; - VALIDATED; -} -class google.registry.model.domain.launch.LaunchInfoResponseExtension { - google.registry.model.domain.launch.ApplicationStatus applicationStatus; - google.registry.model.domain.launch.LaunchPhase phase; - java.lang.String applicationId; - java.util.List marks; -} class google.registry.model.domain.launch.LaunchNotice { google.registry.model.domain.launch.LaunchNotice$NoticeIdType noticeId; org.joda.time.DateTime acceptedTime; @@ -275,10 +233,6 @@ class google.registry.model.domain.launch.LaunchNotice$NoticeIdType { java.lang.String tcnId; java.lang.String validatorId; } -class google.registry.model.domain.launch.LaunchPhase { - java.lang.String phase; - java.lang.String subphase; -} enum google.registry.model.domain.rgp.GracePeriodStatus { ADD; AUTO_RENEW; @@ -286,7 +240,6 @@ enum google.registry.model.domain.rgp.GracePeriodStatus { PENDING_RESTORE; REDEMPTION; RENEW; - SUNRUSH_ADD; TRANSFER; } class google.registry.model.domain.secdns.DelegationSignerData { @@ -349,11 +302,6 @@ class google.registry.model.host.HostResource { org.joda.time.DateTime lastSuperordinateChange; org.joda.time.DateTime lastTransferTime; } -class google.registry.model.index.DomainApplicationIndex { - @Id java.lang.String fullyQualifiedDomainName; - google.registry.model.UpdateAutoTimestamp updateTimestamp; - java.util.Set> references; -} class google.registry.model.index.EppResourceIndex { @Id java.lang.String id; @Parent com.googlecode.objectify.Key bucket; @@ -382,96 +330,6 @@ class google.registry.model.index.ForeignKeyIndex$ForeignKeyHostIndex { google.registry.model.UpdateAutoTimestamp updateTimestamp; org.joda.time.DateTime deletionTime; } -class google.registry.model.mark.CourtMark { - java.lang.String countryCode; - java.lang.String courtName; - java.lang.String goodsAndServices; - java.lang.String id; - java.lang.String markName; - java.lang.String referenceNumber; - java.util.List contacts; - java.util.List markHolders; - java.util.List labels; - java.util.List regions; - org.joda.time.DateTime protectionDate; -} -class google.registry.model.mark.Mark { - java.util.List courtMarks; - java.util.List trademarks; - java.util.List treatyOrStatuteMarks; -} -class google.registry.model.mark.MarkAddress { - java.lang.String city; - java.lang.String countryCode; - java.lang.String state; - java.lang.String zip; - java.util.List street; -} -class google.registry.model.mark.MarkContact { - google.registry.model.mark.MarkAddress address; - google.registry.model.mark.MarkContact$ContactType type; - google.registry.model.mark.MarkPhoneNumber fax; - google.registry.model.mark.MarkPhoneNumber voice; - java.lang.String email; - java.lang.String name; - java.lang.String organization; -} -enum google.registry.model.mark.MarkContact$ContactType { - AGENT; - OWNER; - THIRD_PARTY; -} -class google.registry.model.mark.MarkHolder { - google.registry.model.mark.MarkAddress address; - google.registry.model.mark.MarkHolder$EntitlementType entitlement; - google.registry.model.mark.MarkPhoneNumber fax; - google.registry.model.mark.MarkPhoneNumber voice; - java.lang.String email; - java.lang.String name; - java.lang.String organization; -} -enum google.registry.model.mark.MarkHolder$EntitlementType { - ASSIGNEE; - LICENSEE; - OWNER; -} -class google.registry.model.mark.MarkPhoneNumber { - java.lang.String extension; - java.lang.String phoneNumber; -} -class google.registry.model.mark.MarkProtection { - java.lang.String countryCode; - java.lang.String region; - java.util.List rulingCountryCodes; -} -class google.registry.model.mark.Trademark { - java.lang.String applicationId; - java.lang.String goodsAndServices; - java.lang.String id; - java.lang.String jurisdiction; - java.lang.String markName; - java.lang.String registrationNumber; - java.util.List contacts; - java.util.List markHolders; - java.util.List markClasses; - java.util.List labels; - org.joda.time.DateTime applicationDate; - org.joda.time.DateTime expirationDate; - org.joda.time.DateTime registrationDate; -} -class google.registry.model.mark.TreatyOrStatuteMark { - java.lang.String goodsAndServices; - java.lang.String id; - java.lang.String markName; - java.lang.String referenceNumber; - java.lang.String title; - java.util.List contacts; - java.util.List markHolders; - java.util.List markProtections; - java.util.List labels; - org.joda.time.DateTime executionDate; - org.joda.time.DateTime protectionDate; -} class google.registry.model.ofy.CommitLogBucket { @Id long bucketNum; org.joda.time.DateTime lastWrittenTime; @@ -533,7 +391,6 @@ class google.registry.model.poll.PollMessage$Autorenew { class google.registry.model.poll.PollMessage$OneTime { @Id long id; @Parent com.googlecode.objectify.Key parent; - google.registry.model.domain.launch.LaunchInfoResponseExtension launchInfoResponseExtension; java.lang.String clientId; java.lang.String msg; java.util.List contactPendingActionNotificationResponses; @@ -664,7 +521,6 @@ class google.registry.model.registry.Registry { org.joda.time.Duration pendingDeleteLength; org.joda.time.Duration redemptionGracePeriodLength; org.joda.time.Duration renewGracePeriodLength; - org.joda.time.Duration sunrushAddGracePeriodLength; org.joda.time.Duration transferGracePeriodLength; } class google.registry.model.registry.Registry$BillingCostTransition { @@ -673,13 +529,10 @@ class google.registry.model.registry.Registry$BillingCostTransition { } enum google.registry.model.registry.Registry$TldState { GENERAL_AVAILABILITY; - LANDRUSH; PDT; PREDELEGATION; QUIET_PERIOD; START_DATE_SUNRISE; - SUNRISE; - SUNRUSH; } class google.registry.model.registry.Registry$TldStateTransition { google.registry.model.registry.Registry$TldState tldState; @@ -790,10 +643,6 @@ enum google.registry.model.reporting.HistoryEntry$Type { CONTACT_TRANSFER_REQUEST; CONTACT_UPDATE; DOMAIN_ALLOCATE; - DOMAIN_APPLICATION_CREATE; - DOMAIN_APPLICATION_DELETE; - DOMAIN_APPLICATION_STATUS_UPDATE; - DOMAIN_APPLICATION_UPDATE; DOMAIN_AUTORENEW; DOMAIN_CREATE; DOMAIN_DELETE; @@ -838,10 +687,6 @@ class google.registry.model.server.ServerSecret { long leastSignificant; long mostSignificant; } -class google.registry.model.smd.EncodedSignedMark { - com.google.appengine.api.datastore.Text encodedData; - java.lang.String encoding; -} class google.registry.model.smd.SignedMarkRevocationList { @Id long id; @Parent com.googlecode.objectify.Key parent; diff --git a/javatests/google/registry/module/tools/testdata/tools_routing.txt b/javatests/google/registry/module/tools/testdata/tools_routing.txt index 2d953941c..40756e6f4 100644 --- a/javatests/google/registry/module/tools/testdata/tools_routing.txt +++ b/javatests/google/registry/module/tools/testdata/tools_routing.txt @@ -1,22 +1,21 @@ -PATH CLASS METHODS OK AUTH_METHODS MIN USER_POLICY -/_dr/admin/createGroups CreateGroupsAction POST n INTERNAL,API APP ADMIN -/_dr/admin/createPremiumList CreatePremiumListAction POST n INTERNAL,API APP ADMIN -/_dr/admin/deleteEntity DeleteEntityAction GET n INTERNAL,API APP ADMIN -/_dr/admin/list/domains ListDomainsAction GET,POST n INTERNAL,API APP ADMIN -/_dr/admin/list/hosts ListHostsAction GET,POST n INTERNAL,API APP ADMIN -/_dr/admin/list/premiumLists ListPremiumListsAction GET,POST n INTERNAL,API APP ADMIN -/_dr/admin/list/registrars ListRegistrarsAction GET,POST n INTERNAL,API APP ADMIN -/_dr/admin/list/reservedLists ListReservedListsAction GET,POST n INTERNAL,API APP ADMIN -/_dr/admin/list/tlds ListTldsAction GET,POST n INTERNAL,API APP ADMIN -/_dr/admin/updatePremiumList UpdatePremiumListAction POST n INTERNAL,API APP ADMIN -/_dr/admin/verifyOte VerifyOteAction POST n INTERNAL,API APP ADMIN -/_dr/epptool EppToolAction POST n INTERNAL,API APP ADMIN -/_dr/loadtest LoadTestAction POST y INTERNAL,API APP ADMIN -/_dr/task/generateZoneFiles GenerateZoneFilesAction POST n INTERNAL,API APP ADMIN -/_dr/task/killAllCommitLogs KillAllCommitLogsAction POST n INTERNAL APP IGNORED -/_dr/task/killAllDomainApplications KillAllDomainApplicationsAction POST n INTERNAL APP IGNORED -/_dr/task/killAllEppResources KillAllEppResourcesAction POST n INTERNAL APP IGNORED -/_dr/task/pollMapreduce PollMapreduceAction POST n INTERNAL APP IGNORED -/_dr/task/refreshDnsForAllDomains RefreshDnsForAllDomainsAction GET n INTERNAL,API APP ADMIN -/_dr/task/resaveAllHistoryEntries ResaveAllHistoryEntriesAction GET n INTERNAL,API APP ADMIN -/_dr/task/restoreCommitLogs RestoreCommitLogsAction POST y INTERNAL,API APP ADMIN +PATH CLASS METHODS OK AUTH_METHODS MIN USER_POLICY +/_dr/admin/createGroups CreateGroupsAction POST n INTERNAL,API APP ADMIN +/_dr/admin/createPremiumList CreatePremiumListAction POST n INTERNAL,API APP ADMIN +/_dr/admin/deleteEntity DeleteEntityAction GET n INTERNAL,API APP ADMIN +/_dr/admin/list/domains ListDomainsAction GET,POST n INTERNAL,API APP ADMIN +/_dr/admin/list/hosts ListHostsAction GET,POST n INTERNAL,API APP ADMIN +/_dr/admin/list/premiumLists ListPremiumListsAction GET,POST n INTERNAL,API APP ADMIN +/_dr/admin/list/registrars ListRegistrarsAction GET,POST n INTERNAL,API APP ADMIN +/_dr/admin/list/reservedLists ListReservedListsAction GET,POST n INTERNAL,API APP ADMIN +/_dr/admin/list/tlds ListTldsAction GET,POST n INTERNAL,API APP ADMIN +/_dr/admin/updatePremiumList UpdatePremiumListAction POST n INTERNAL,API APP ADMIN +/_dr/admin/verifyOte VerifyOteAction POST n INTERNAL,API APP ADMIN +/_dr/epptool EppToolAction POST n INTERNAL,API APP ADMIN +/_dr/loadtest LoadTestAction POST y INTERNAL,API APP ADMIN +/_dr/task/generateZoneFiles GenerateZoneFilesAction POST n INTERNAL,API APP ADMIN +/_dr/task/killAllCommitLogs KillAllCommitLogsAction POST n INTERNAL APP IGNORED +/_dr/task/killAllEppResources KillAllEppResourcesAction POST n INTERNAL APP IGNORED +/_dr/task/pollMapreduce PollMapreduceAction POST n INTERNAL APP IGNORED +/_dr/task/refreshDnsForAllDomains RefreshDnsForAllDomainsAction GET n INTERNAL,API APP ADMIN +/_dr/task/resaveAllHistoryEntries ResaveAllHistoryEntriesAction GET n INTERNAL,API APP ADMIN +/_dr/task/restoreCommitLogs RestoreCommitLogsAction POST y INTERNAL,API APP ADMIN diff --git a/javatests/google/registry/testing/DatastoreHelper.java b/javatests/google/registry/testing/DatastoreHelper.java index e4055bb32..73b402122 100644 --- a/javatests/google/registry/testing/DatastoreHelper.java +++ b/javatests/google/registry/testing/DatastoreHelper.java @@ -27,7 +27,6 @@ import static google.registry.config.RegistryConfig.getContactAutomaticTransferL import static google.registry.model.EppResourceUtils.createDomainRepoId; import static google.registry.model.EppResourceUtils.createRepoId; import static google.registry.model.ResourceTransferUtils.createTransferResponse; -import static google.registry.model.domain.launch.ApplicationStatus.VALIDATED; import static google.registry.model.ofy.ObjectifyService.ofy; import static google.registry.model.registry.label.PremiumListUtils.parentPremiumListEntriesOnRevision; import static google.registry.pricing.PricingEngineProxy.getDomainRenewCost; @@ -66,17 +65,14 @@ import google.registry.model.contact.ContactAuthInfo; import google.registry.model.contact.ContactResource; import google.registry.model.domain.DesignatedContact; import google.registry.model.domain.DesignatedContact.Type; -import google.registry.model.domain.DomainApplication; import google.registry.model.domain.DomainAuthInfo; import google.registry.model.domain.DomainResource; import google.registry.model.domain.GracePeriod; -import google.registry.model.domain.launch.LaunchPhase; import google.registry.model.domain.rgp.GracePeriodStatus; import google.registry.model.eppcommon.AuthInfo.PasswordAuth; import google.registry.model.eppcommon.StatusValue; import google.registry.model.eppcommon.Trid; import google.registry.model.host.HostResource; -import google.registry.model.index.DomainApplicationIndex; import google.registry.model.index.EppResourceIndex; import google.registry.model.index.EppResourceIndexBucket; import google.registry.model.index.ForeignKeyIndex; @@ -93,7 +89,6 @@ import google.registry.model.registry.label.PremiumList.PremiumListEntry; import google.registry.model.registry.label.PremiumList.PremiumListRevision; import google.registry.model.registry.label.ReservedList; import google.registry.model.reporting.HistoryEntry; -import google.registry.model.smd.EncodedSignedMark; import google.registry.model.transfer.TransferData; import google.registry.model.transfer.TransferData.Builder; import google.registry.model.transfer.TransferStatus; @@ -164,59 +159,6 @@ public class DatastoreHelper { .build(); } - public static DomainApplication newDomainApplication(String domainName) { - // This ensures that the domain application gets the next available repoId before the created - // contact does, which is usually the applicationId 1. - return newDomainApplication( - domainName, - generateNewDomainRoid(getTldFromDomainName(domainName)), - persistActiveContact("contact1234"), - LaunchPhase.SUNRISE); - } - - public static DomainApplication newDomainApplication(String domainName, ContactResource contact) { - return newDomainApplication(domainName, contact, LaunchPhase.SUNRISE); - } - - public static DomainApplication newDomainApplication( - String domainName, ContactResource contact, LaunchPhase phase) { - return newDomainApplication( - domainName, - generateNewDomainRoid(getTldFromDomainName(domainName)), - contact, - phase); - } - - public static DomainApplication newDomainApplication( - String domainName, String repoId, ContactResource contact, LaunchPhase phase) { - Key contactKey = Key.create(contact); - return new DomainApplication.Builder() - .setRepoId(repoId) - .setFullyQualifiedDomainName(domainName) - .setPersistedCurrentSponsorClientId("TheRegistrar") - .setAuthInfo(DomainAuthInfo.create(PasswordAuth.create("2fooBAR"))) - .setRegistrant(contactKey) - .setContacts(ImmutableSet.of( - DesignatedContact.create(Type.ADMIN, contactKey), - DesignatedContact.create(Type.TECH, contactKey))) - .setPhase(phase) - .setApplicationStatus(VALIDATED) - .addStatusValue(StatusValue.PENDING_CREATE) - .build(); - } - - public static DomainApplication newSunriseApplication(String domainName) { - return newSunriseApplication(domainName, persistActiveContact("contact1234")); - } - - public static DomainApplication newSunriseApplication( - String domainName, ContactResource contact) { - return newDomainApplication(domainName, contact, LaunchPhase.SUNRISE) - .asBuilder() - .setEncodedSignedMarks(ImmutableList.of(EncodedSignedMark.create("base64", "abcdef"))) - .build(); - } - /** * Returns a newly created {@link ContactResource} for the given contactId (which is the foreign * key) with an auto-generated repoId. @@ -327,25 +269,6 @@ public class DatastoreHelper { .build()); } - public static DomainApplication persistActiveDomainApplication(String domainName) { - return persistResource(newDomainApplication(domainName)); - } - - public static DomainApplication persistActiveDomainApplication( - String domainName, ContactResource contact, LaunchPhase phase) { - return persistResource(newDomainApplication(domainName, contact, phase)); - } - - /** - * Persists a domain application resource with the given domain name deleted at the specified - * time. - */ - public static DomainApplication persistDeletedDomainApplication( - String domainName, DateTime deletionTime) { - return persistResource( - newDomainApplication(domainName).asBuilder().setDeletionTime(deletionTime).build()); - } - /** Persists a domain resource with the given domain name deleted at the specified time. */ public static DomainResource persistDeletedDomain(String domainName, DateTime deletionTime) { return persistDomainAsDeleted(newDomainResource(domainName), deletionTime); @@ -901,7 +824,7 @@ public class DatastoreHelper { * ofy() session cache. Specifically, this method calls .now() on the save to force the write to * actually get sent to Datastore (although it does not force it to be applied) and clears the * session cache. If necessary, this method also updates the relevant {@link EppResourceIndex}, - * {@link ForeignKeyIndex} and {@link DomainApplicationIndex}. + * {@link ForeignKeyIndex}. * *

    Note: Your resource will not be enrolled in a commit log. If you want backups, use * {@link #persistResourceWithCommitLog(Object)}. @@ -934,9 +857,6 @@ public class DatastoreHelper { if (resource instanceof ForeignKeyedEppResource) { saver.entity(ForeignKeyIndex.create(resource, resource.getDeletionTime())); } - if (resource instanceof DomainApplication) { - saver.entity(DomainApplicationIndex.createUpdatedInstance((DomainApplication) resource)); - } } private static R persistResource(final R resource, final boolean wantBackup) { diff --git a/javatests/google/registry/testing/DomainApplicationSubject.java b/javatests/google/registry/testing/DomainApplicationSubject.java deleted file mode 100644 index 82acf998c..000000000 --- a/javatests/google/registry/testing/DomainApplicationSubject.java +++ /dev/null @@ -1,84 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.testing; - -import static com.google.common.base.Preconditions.checkNotNull; -import static com.google.common.truth.Truth.assertAbout; -import static com.google.common.truth.Truth.assertThat; - -import com.google.common.truth.FailureMetadata; -import com.google.common.truth.SimpleSubjectBuilder; -import google.registry.model.domain.DomainApplication; -import google.registry.model.domain.Period; -import google.registry.model.domain.launch.ApplicationStatus; -import google.registry.model.smd.EncodedSignedMark; -import google.registry.testing.TruthChainer.And; -import java.util.Objects; - -/** Truth subject for asserting things about {@link DomainApplication} instances. */ -public final class DomainApplicationSubject - extends AbstractDomainBaseSubject { - - public And hasPeriodYears(int years) { - assertThat(actual().getPeriod()).isNotNull(); - assertThat(actual().getPeriod().getUnit()).isEqualTo(Period.Unit.YEARS); - assertThat(actual().getPeriod().getValue()).isEqualTo(years); - return andChainer(); - } - - public And hasApplicationStatus( - ApplicationStatus applicationStatus) { - if (!Objects.equals(actual().getApplicationStatus(), applicationStatus)) { - failWithBadResults( - "has application status", applicationStatus, actual().getApplicationStatus()); - } - return andChainer(); - } - - public And doesNotHaveApplicationStatus( - ApplicationStatus applicationStatus) { - return doesNotHaveValue( - applicationStatus, - actual().getApplicationStatus(), - "application status"); - } - - public And hasExactlyEncodedSignedMarks( - EncodedSignedMark... encodedSignedMarks) { - - assertThat(actual().getEncodedSignedMarks()) - .named("the encoded signed marks of " + actualAsString()) - .containsExactly((Object[]) encodedSignedMarks); - - return andChainer(); - } - - public And hasNumEncodedSignedMarks(int num) { - if (actual().getEncodedSignedMarks().size() != num) { - failWithBadResults( - "has this many encoded signed marks: ", num, actual().getEncodedSignedMarks().size()); - } - return andChainer(); - } - - public DomainApplicationSubject(FailureMetadata failureMetadata, DomainApplication subject) { - super(failureMetadata, checkNotNull(subject)); - } - - public static SimpleSubjectBuilder - assertAboutApplications() { - return assertAbout(DomainApplicationSubject::new); - } -} diff --git a/javatests/google/registry/tmch/LordnTaskUtilsTest.java b/javatests/google/registry/tmch/LordnTaskUtilsTest.java index 9ce2bf00a..400130890 100644 --- a/javatests/google/registry/tmch/LordnTaskUtilsTest.java +++ b/javatests/google/registry/tmch/LordnTaskUtilsTest.java @@ -60,39 +60,35 @@ public class LordnTaskUtilsTest { inject.setStaticField(Ofy.class, "clock", clock); } - - - private DomainResource.Builder newDomainBuilder(DateTime applicationTime) { + private DomainResource.Builder newDomainBuilder() { return new DomainResource.Builder() .setFullyQualifiedDomainName("fleece.example") .setRegistrant(Key.create(persistActiveContact("jd1234"))) .setSmdId("smdzzzz") - .setCreationClientId("TheRegistrar") - .setApplicationTime(applicationTime); + .setCreationClientId("TheRegistrar"); } @Test public void test_enqueueDomainResourceTask_sunrise() { - DomainResource domain = newDomainBuilder(DateTime.parse("2010-05-01T10:11:12Z")) - .setRepoId("A-EXAMPLE") - .build(); - persistDomainAndEnqueueLordn(domain); + persistDomainAndEnqueueLordn(newDomainBuilder().setRepoId("A-EXAMPLE").build()); String expectedPayload = - "A-EXAMPLE,fleece.example,smdzzzz,1,2010-05-01T10:11:12.000Z,2010-05-01T10:11:12.000Z"; + "A-EXAMPLE,fleece.example,smdzzzz,1,2010-05-01T10:11:12.000Z"; assertTasksEnqueued( "lordn-sunrise", new TaskMatcher().payload(expectedPayload).tag("example")); } @Test public void test_enqueueDomainResourceTask_claims() { - DateTime time = DateTime.parse("2010-05-01T10:11:12Z"); - DomainResource domain = newDomainBuilder(time) - .setRepoId("11-EXAMPLE") - .setLaunchNotice(LaunchNotice.create("landrush1tcn", null, null, time.minusHours(1))) - .build(); + DomainResource domain = + newDomainBuilder() + .setRepoId("11-EXAMPLE") + .setLaunchNotice( + LaunchNotice.create( + "landrush1tcn", null, null, DateTime.parse("2010-05-01T09:11:12Z"))) + .build(); persistDomainAndEnqueueLordn(domain); String expectedPayload = "11-EXAMPLE,fleece.example,landrush1tcn,1,2010-05-01T10:11:12.000Z," - + "2010-05-01T09:11:12.000Z,2010-05-01T10:11:12.000Z"; + + "2010-05-01T09:11:12.000Z"; assertTasksEnqueued( "lordn-claims", new TaskMatcher().payload(expectedPayload).tag("example")); } @@ -110,20 +106,16 @@ public class LordnTaskUtilsTest { .setType(Type.OTE) .setIanaIdentifier(null) .build())); - DomainResource domain = - newDomainBuilder(DateTime.parse("2010-05-01T10:11:12Z")).setRepoId("3-EXAMPLE").build(); - persistDomainAndEnqueueLordn(domain); - String expectedPayload = - "3-EXAMPLE,fleece.example,smdzzzz,null,2010-05-01T10:11:12.000Z,2010-05-01T10:11:12.000Z"; + persistDomainAndEnqueueLordn(newDomainBuilder().setRepoId("3-EXAMPLE").build()); + String expectedPayload = "3-EXAMPLE,fleece.example,smdzzzz,null,2010-05-01T10:11:12.000Z"; assertTasksEnqueued( "lordn-sunrise", new TaskMatcher().payload(expectedPayload).tag("example")); } @Test public void test_enqueueDomainResourceTask_throwsExceptionOnInvalidRegistrar() { - DateTime time = DateTime.parse("2010-05-01T10:11:12Z"); DomainResource domain = - newDomainBuilder(time) + newDomainBuilder() .setRepoId("9000-EXAMPLE") .setCreationClientId("nonexistentRegistrar") .build(); diff --git a/javatests/google/registry/tmch/NordnUploadActionTest.java b/javatests/google/registry/tmch/NordnUploadActionTest.java index 2ec070283..e17e602e1 100644 --- a/javatests/google/registry/tmch/NordnUploadActionTest.java +++ b/javatests/google/registry/tmch/NordnUploadActionTest.java @@ -84,11 +84,11 @@ public class NordnUploadActionTest { + "roid,domain-name,notice-id,registrar-id,registration-datetime,ack-datetime," + "application-datetime\n" + "2-TLD,claims-landrush1.tld,landrush1tcn,99999,2010-05-01T10:11:12.000Z," - + "1969-12-31T23:00:00.000Z,1969-12-31T00:00:00.000Z\n"; + + "1969-12-31T23:00:00.000Z\n"; private static final String SUNRISE_CSV = "1,2010-05-01T10:11:12.000Z,1\n" + "roid,domain-name,SMD-id,registrar-id,registration-datetime,application-datetime\n" - + "2-TLD,sunrise1.tld,my-smdid,99999,2010-05-01T10:11:12.000Z,1969-12-31T00:00:00.000Z\n"; + + "2-TLD,sunrise1.tld,my-smdid,99999,2010-05-01T10:11:12.000Z\n"; private static final String LOCATION_URL = "http://trololol"; @@ -272,20 +272,19 @@ public class NordnUploadActionTest { private void persistClaimsModeDomain() { DomainResource domain = newDomainResource("claims-landrush1.tld"); - persistDomainAndEnqueueLordn(domain.asBuilder() - .setLaunchNotice(LaunchNotice.create( - "landrush1tcn", null, null, domain.getCreationTime().minusHours(1))) - .setApplicationTime(domain.getCreationTime().minusDays(1)) - .build()); + persistDomainAndEnqueueLordn( + domain + .asBuilder() + .setLaunchNotice( + LaunchNotice.create( + "landrush1tcn", null, null, domain.getCreationTime().minusHours(1))) + .build()); } private void persistSunriseModeDomain() { action.phase = "sunrise"; DomainResource domain = newDomainResource("sunrise1.tld"); - persistDomainAndEnqueueLordn(domain.asBuilder() - .setSmdId("my-smdid") - .setApplicationTime(domain.getCreationTime().minusDays(1)) - .build()); + persistDomainAndEnqueueLordn(domain.asBuilder().setSmdId("my-smdid").build()); } private static TaskHandle makeTaskHandle( diff --git a/javatests/google/registry/tools/AllocateDomainCommandTest.java b/javatests/google/registry/tools/AllocateDomainCommandTest.java deleted file mode 100644 index 351076561..000000000 --- a/javatests/google/registry/tools/AllocateDomainCommandTest.java +++ /dev/null @@ -1,158 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.tools; - -import static com.google.common.io.BaseEncoding.base16; -import static com.google.common.truth.Truth.assertThat; -import static google.registry.flows.picker.FlowPicker.getFlowClass; -import static google.registry.model.domain.DesignatedContact.Type.ADMIN; -import static google.registry.model.domain.DesignatedContact.Type.BILLING; -import static google.registry.model.domain.DesignatedContact.Type.TECH; -import static google.registry.model.domain.launch.ApplicationStatus.VALIDATED; -import static google.registry.model.eppcommon.EppXmlTransformer.unmarshal; -import static google.registry.model.registry.Registry.TldState.QUIET_PERIOD; -import static google.registry.testing.DatastoreHelper.createTld; -import static google.registry.testing.DatastoreHelper.newDomainApplication; -import static google.registry.testing.DatastoreHelper.persistActiveContact; -import static google.registry.testing.DatastoreHelper.persistActiveHost; -import static google.registry.testing.DatastoreHelper.persistResource; -import static google.registry.testing.JUnitBackports.assertThrows; -import static google.registry.util.DateTimeUtils.START_OF_TIME; - -import com.beust.jcommander.ParameterException; -import com.google.common.collect.ImmutableSet; -import com.googlecode.objectify.Key; -import google.registry.flows.domain.DomainAllocateFlow; -import google.registry.model.domain.DesignatedContact; -import google.registry.model.domain.DomainApplication; -import google.registry.model.domain.launch.LaunchNotice; -import google.registry.model.domain.secdns.DelegationSignerData; -import google.registry.model.eppcommon.Trid; -import google.registry.model.eppinput.EppInput; -import google.registry.model.reporting.HistoryEntry; -import google.registry.tools.server.ToolsTestData; -import java.io.IOException; -import org.joda.time.DateTime; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; - -/** Unit tests for {@link AllocateDomainCommand}. */ -public class AllocateDomainCommandTest extends CommandTestCase { - - private EppToolVerifier eppVerifier; - - @Before - public void init() throws IOException { - eppVerifier = EppToolVerifier.create(command).expectClientId("TheRegistrar").expectSuperuser(); - createTld("tld", QUIET_PERIOD); - createApplication("example-one.tld", "domain_create_sunrush.xml", "1-TLD"); - createApplication("example-two.tld", "domain_create_sunrush2.xml", "2-TLD"); - } - - @After - public void cleanup() throws Exception { - eppVerifier.verifyNoMoreSent(); - } - - private void createApplication(String name, String xmlFile, String repoId) throws IOException { - DomainApplication application = - persistResource(newDomainApplication(name) - .asBuilder() - .setRepoId(repoId) - .setCreationTimeForTest(START_OF_TIME) - .setRegistrant(Key.create(persistActiveContact("registrant"))) - .setContacts(ImmutableSet.of( - DesignatedContact.create( - ADMIN, - Key.create(persistActiveContact("adminContact"))), - DesignatedContact.create( - BILLING, - Key.create(persistActiveContact("billingContact"))), - DesignatedContact.create( - TECH, - Key.create(persistActiveContact("techContact"))))) - .setNameservers(ImmutableSet.of( - Key.create(persistActiveHost("ns1.example.com")), - Key.create(persistActiveHost("ns2.example.com")))) - .setApplicationStatus(VALIDATED) - .setDsData(ImmutableSet.of( - DelegationSignerData.create( - 12345, 3, 1, base16().decode("49FD46E6C4B45C55D4AC")), - DelegationSignerData.create( - 56789, 2, 4, base16().decode("69FD46E6C4A45C55D4AC")))) - .setLaunchNotice(LaunchNotice.create( - "370d0b7c9223372036854775807", - "tmch", - DateTime.parse("2010-08-16T09:00:00.0Z"), - DateTime.parse("2009-08-16T09:00:00.0Z"))) - .build()); - persistResource( - new HistoryEntry.Builder() - .setParent(application) - .setClientId("NewRegistrar") - .setModificationTime(application.getCreationTime()) - .setTrid(Trid.create("ABC-123", "server-trid")) - .setXmlBytes(ToolsTestData.loadBytes(xmlFile).read()) - .build()); - } - - @Test - public void testSuccess() throws Exception { - runCommand("--ids=1-TLD", "--force", "--superuser"); - // NB: These commands are sent as the sponsoring registrar, in this case "TheRegistrar". - eppVerifier.verifySent("allocate_domain.xml"); - } - - @Test - public void testSuccess_multiple() throws Exception { - runCommand("--ids=1-TLD,2-TLD", "--force", "--superuser"); - eppVerifier - .verifySent("allocate_domain.xml") - .verifySent("allocate_domain2.xml"); - } - - @Test - public void testSuccess_dryRun() throws Exception { - runCommand("--ids=1-TLD", "--dry_run", "--superuser"); - eppVerifier.expectDryRun().verifySent("allocate_domain.xml"); - } - - @Test - public void testFailure_notAsSuperuser() { - assertThrows(IllegalArgumentException.class, () -> runCommand("--ids=1-TLD", "--force")); - } - - @Test - public void testFailure_forceAndDryRunIncompatible() { - assertThrows( - IllegalArgumentException.class, - () -> runCommand("--ids=1-TLD", "--force", "--dry_run", "--superuser")); - } - - @Test - public void testFailure_unknownFlag() { - assertThrows( - ParameterException.class, - () -> runCommand("--ids=1-TLD", "--force", "--unrecognized=foo", "--superuser")); - } - - @Test - public void testXmlInstantiatesFlow() throws Exception { - byte[] xmlBytes = ToolsTestData.loadBytes("allocate_domain.xml").read(); - assertThat(getFlowClass(unmarshal(EppInput.class, xmlBytes))) - .isEqualTo(DomainAllocateFlow.class); - } -} diff --git a/javatests/google/registry/tools/CreateTldCommandTest.java b/javatests/google/registry/tools/CreateTldCommandTest.java index 00b90e2d1..d4bd8691f 100644 --- a/javatests/google/registry/tools/CreateTldCommandTest.java +++ b/javatests/google/registry/tools/CreateTldCommandTest.java @@ -24,7 +24,6 @@ import static google.registry.util.DateTimeUtils.START_OF_TIME; import static org.joda.money.CurrencyUnit.JPY; import static org.joda.money.CurrencyUnit.USD; import static org.joda.time.DateTimeZone.UTC; -import static org.joda.time.Duration.standardDays; import static org.joda.time.Duration.standardMinutes; import com.beust.jcommander.ParameterException; @@ -152,17 +151,6 @@ public class CreateTldCommandTest extends CommandTestCase { assertThat(Registry.get("xn--q9jyb4c").getAddGracePeriodLength()).isEqualTo(standardMinutes(5)); } - @Test - public void testSuccess_sunrushAddGracePeriodFlag() throws Exception { - runCommandForced( - "--sunrush_add_grace_period=P13D", - "--roid_suffix=Q9JYB4C", - "--dns_writers=VoidDnsWriter", - "xn--q9jyb4c"); - assertThat(Registry.get("xn--q9jyb4c").getSunrushAddGracePeriodLength()) - .isEqualTo(standardDays(13)); - } - @Test public void testSuccess_roidSuffixWorks() throws Exception { runCommandForced("--roid_suffix=RSUFFIX", "--dns_writers=VoidDnsWriter", "tld"); @@ -310,20 +298,6 @@ public class CreateTldCommandTest extends CommandTestCase { assertThat(thrown).hasMessageThat().contains("Invalid format: \"5m\""); } - @Test - public void testFailure_invalidSunrushAddGracePeriod() { - Exception e = - assertThrows( - IllegalArgumentException.class, - () -> - runCommandForced( - "--sunrush_add_grace_period=5d", - "--roid_suffix=Q9JYB4C", - "--dns_writers=VoidDnsWriter", - "xn--q9jyb4c")); - assertThat(e).hasMessageThat().isEqualTo("Invalid format: \"5d\""); - } - @Test public void testFailure_invalidRedemptionGracePeriod() { IllegalArgumentException thrown = @@ -375,7 +349,7 @@ public class CreateTldCommandTest extends CommandTestCase { () -> runCommandForced( String.format( - "--tld_state_transitions=%s=PREDELEGATION,%s=SUNRISE", + "--tld_state_transitions=%s=PREDELEGATION,%s=START_DATE_SUNRISE", now, now.plus(Duration.millis(1))), "--initial_tld_state=GENERAL_AVAILABILITY", "--dns_writers=VoidDnsWriter", diff --git a/javatests/google/registry/tools/DomainApplicationInfoCommandTest.java b/javatests/google/registry/tools/DomainApplicationInfoCommandTest.java deleted file mode 100644 index 811f81a60..000000000 --- a/javatests/google/registry/tools/DomainApplicationInfoCommandTest.java +++ /dev/null @@ -1,101 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.tools; - -import static google.registry.testing.JUnitBackports.assertThrows; - -import com.beust.jcommander.ParameterException; -import org.junit.Test; - -/** Unit tests for {@link DomainApplicationInfoCommand}. */ -public class DomainApplicationInfoCommandTest - extends EppToolCommandTestCase { - - @Test - public void testSuccess() throws Exception { - runCommand("--client=NewRegistrar", "--domain_name=example.tld", - "--phase=landrush", "--id=123"); - eppVerifier.expectDryRun().verifySent("domain_info_landrush.xml"); - } - - @Test - public void testSuccess_subphase() throws Exception { - // Sunrush: phase=sunrise, subphase=landrush - runCommand("--client=NewRegistrar", "--domain_name=example.tld", - "--phase=sunrush", "--id=123"); - eppVerifier.expectDryRun().verifySent("domain_info_sunrush.xml"); - } - - @Test - public void testFailure_invalidPhase() { - assertThrows( - IllegalArgumentException.class, - () -> - runCommand( - "--client=NewRegistrar", - "--domain_name=example.tld", - "--phase=landrise", - "--id=123")); - } - - @Test - public void testFailure_missingClientId() { - assertThrows( - ParameterException.class, - () -> runCommand("--domain_name=example.tld", "--phase=sunrush", "--id=123")); - } - - @Test - public void testFailure_missingPhase() { - assertThrows( - ParameterException.class, - () -> runCommand("--client=NewRegistrar", "--domain_name=example.tld", "--id=123")); - } - - @Test - public void testFailure_missingApplicationId() { - assertThrows( - ParameterException.class, - () -> - runCommand( - "--client=NewRegistrar", "--domain_name=example.tld", "--phase=landrush")); - } - - @Test - public void testFailure_mainParameter() { - assertThrows( - ParameterException.class, - () -> - runCommand( - "--client=NewRegistrar", - "--domain_name=example.tld", - "--phase=landrush", - "--id=123", - "foo")); - } - - @Test - public void testFailure_unknownFlag() { - assertThrows( - ParameterException.class, - () -> - runCommand( - "--client=NewRegistrar", - "--domain_name=example.tld", - "--phase=landrush", - "--id=123", - "--foo=bar")); - } -} diff --git a/javatests/google/registry/tools/GenerateAuctionDataCommandTest.java b/javatests/google/registry/tools/GenerateAuctionDataCommandTest.java deleted file mode 100644 index cd148bbfe..000000000 --- a/javatests/google/registry/tools/GenerateAuctionDataCommandTest.java +++ /dev/null @@ -1,336 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.tools; - -import static com.google.common.truth.Truth.assertThat; -import static google.registry.testing.DatastoreHelper.createTld; -import static google.registry.testing.DatastoreHelper.newContactResourceWithRoid; -import static google.registry.testing.DatastoreHelper.newDomainApplication; -import static google.registry.testing.DatastoreHelper.newSunriseApplication; -import static google.registry.testing.DatastoreHelper.persistResource; -import static google.registry.testing.JUnitBackports.assertThrows; -import static java.nio.charset.StandardCharsets.UTF_8; -import static org.joda.time.DateTimeZone.UTC; - -import com.beust.jcommander.ParameterException; -import com.google.common.base.Joiner; -import com.google.common.collect.ImmutableList; -import google.registry.model.contact.ContactAddress; -import google.registry.model.contact.ContactPhoneNumber; -import google.registry.model.contact.ContactResource; -import google.registry.model.contact.PostalInfo; -import google.registry.model.domain.launch.ApplicationStatus; -import google.registry.model.ofy.Ofy; -import google.registry.testing.FakeClock; -import google.registry.testing.InjectRule; -import java.io.IOException; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; -import org.joda.time.DateTime; -import org.junit.Before; -import org.junit.Rule; -import org.junit.Test; -import org.junit.rules.TemporaryFolder; - -/** Unit tests for {@link GenerateAuctionDataCommand}. */ -public class GenerateAuctionDataCommandTest extends CommandTestCase { - - @Rule - public final TemporaryFolder folder = new TemporaryFolder(); - - @Rule - public final InjectRule inject = new InjectRule(); - - FakeClock clock = new FakeClock(DateTime.parse("2000-01-01TZ")); - - Path output; - ContactResource contact1; - ContactResource contact2; - - String getOutput() throws IOException { - return new String(Files.readAllBytes(output), UTF_8).trim(); - } - - @Before - public void init() throws Exception { - inject.setStaticField(Ofy.class, "clock", clock); - output = Paths.get(folder.newFile().toString()); - - createTld("xn--q9jyb4c"); - contact1 = persistResource( - newContactResourceWithRoid("contact1", "C1-ROID").asBuilder() - .setLocalizedPostalInfo(new PostalInfo.Builder() - .setType(PostalInfo.Type.LOCALIZED) - .setName("Joe Registrant") - .setOrg("Google") - .setAddress(new ContactAddress.Builder() - .setStreet(ImmutableList.of("111 8th Ave", "4th Floor", "Suite 100")) - .setCity("New York") - .setState("NY") - .setZip("10011") - .setCountryCode("US") - .build()) - .build()) - .setVoiceNumber(new ContactPhoneNumber.Builder() - .setPhoneNumber("867-5000") - .setExtension("0000") - .build()) - .setFaxNumber(new ContactPhoneNumber.Builder() - .setPhoneNumber("867-5000") - .setExtension("0001") - .build()) - .setEmailAddress("joe.registrant@example.com") - .build()); - contact2 = persistResource( - newContactResourceWithRoid("contact1", "C2-ROID").asBuilder() - .setLocalizedPostalInfo(new PostalInfo.Builder() - .setType(PostalInfo.Type.LOCALIZED) - .setName("Jáne Registrant") - .setOrg("Charleston Road Registry") - .setAddress(new ContactAddress.Builder() - .setStreet(ImmutableList.of("1600 Charleston Road")) - .setCity("Mountain View") - .setState("CA") - .setZip("94043") - .setCountryCode("US") - .build()) - .build()) - .setInternationalizedPostalInfo(new PostalInfo.Builder() - .setType(PostalInfo.Type.INTERNATIONALIZED) - .setName("Jane Registrant") - .setOrg("Charleston Road Registry") - .setAddress(new ContactAddress.Builder() - .setStreet(ImmutableList.of("1600 Charleston Road")) - .setCity("Mountain View") - .setState("CA") - .setZip("94043") - .setCountryCode("US") - .build()) - .build()) - .setVoiceNumber(new ContactPhoneNumber.Builder() - .setPhoneNumber("555-1234") - .setExtension("0000") - .build()) - .setFaxNumber(new ContactPhoneNumber.Builder() - .setPhoneNumber("555-1235") - .setExtension("0001") - .build()) - .setEmailAddress("jane.registrant@example.com") - .build()); - } - - @Test - public void testSuccess_emptyOutput() throws Exception { - runCommand("--output=" + output, "xn--q9jyb4c"); - assertThat(getOutput()).isEmpty(); - } - - @Test - public void testSuccess_nullApplicationFields() throws Exception { - // Make two contacts with different email addresses. - ContactResource contact = persistResource( - newContactResourceWithRoid("contact1234", "C1234-ROID") - .asBuilder() - .setEmailAddress("foo@bar.baz") - .build()); - ContactResource otherContact = persistResource( - newContactResourceWithRoid("contact5678", "C5678-ROID") - .asBuilder() - .setEmailAddress("bar@baz.foo") - .build()); - persistResource(newDomainApplication("label.xn--q9jyb4c", contact)); - persistResource(newDomainApplication("label.xn--q9jyb4c", otherContact)); - runCommand("--output=" + output, "xn--q9jyb4c"); - assertThat(getOutput()).isEqualTo(Joiner.on('\n').join(ImmutableList.of( - "label.xn--q9jyb4c|2-Q9JYB4C|2000-01-01 00:00:00||TheRegistrar|||||||||foo@bar.baz" - + "|||Landrush", - "label.xn--q9jyb4c|3-Q9JYB4C|2000-01-01 00:00:00||TheRegistrar|||||||||bar@baz.foo" - + "|||Landrush", - "TheRegistrar|John Doe|The Registrar|123 Example Bőulevard||Williamsburg|NY|" - + "11211|US|new.registrar@example.com|+1.2223334444"))); - } - - @Test - public void testSuccess_multipleRegistrars() throws Exception { - persistResource(newDomainApplication("label.xn--q9jyb4c", contact1)); - persistResource(newDomainApplication("label.xn--q9jyb4c", contact2) - .asBuilder() - .setPersistedCurrentSponsorClientId("NewRegistrar") - .build()); - runCommand("--output=" + output, "xn--q9jyb4c"); - assertThat(getOutput()).isEqualTo(Joiner.on('\n').join(ImmutableList.of( - "label.xn--q9jyb4c|2-Q9JYB4C|2000-01-01 00:00:00||TheRegistrar|Joe Registrant|Google|" - + "111 8th Ave|4th Floor Suite 100|New York|NY|10011|US|joe.registrant@example.com|" - + "867-5000 x0000||Landrush", - "label.xn--q9jyb4c|3-Q9JYB4C|2000-01-01 00:00:00||NewRegistrar|Jane Registrant|" - + "Charleston Road Registry|1600 Charleston Road||Mountain View|CA|94043|US|" - + "jane.registrant@example.com|555-1234 x0000||Landrush", - "NewRegistrar|Jane Doe|New Registrar|123 Example Bőulevard||Williamsburg|NY|" - + "11211|US|new.registrar@example.com|+1.3334445555", - "TheRegistrar|John Doe|The Registrar|123 Example Bőulevard||Williamsburg|NY|" - + "11211|US|new.registrar@example.com|+1.2223334444"))); - } - - @Test - public void testSuccess_allFieldsPopulated() throws Exception { - persistResource(newDomainApplication("label.xn--q9jyb4c", contact1) - .asBuilder() - .setLastEppUpdateTime(DateTime.parse("2006-06-06T00:30:00Z")) - .build()); - persistResource(newDomainApplication("label.xn--q9jyb4c", contact2) - .asBuilder() - .setLastEppUpdateTime(DateTime.parse("2006-06-07T00:30:00Z")) - .build()); - runCommand("--output=" + output, "xn--q9jyb4c"); - assertThat(getOutput()).isEqualTo(Joiner.on('\n').join(ImmutableList.of( - "label.xn--q9jyb4c|2-Q9JYB4C|2000-01-01 00:00:00|2006-06-06 00:30:00|TheRegistrar|" - + "Joe Registrant|Google|111 8th Ave|4th Floor Suite 100|New York|NY|10011|US|" - + "joe.registrant@example.com|867-5000 x0000||Landrush", - "label.xn--q9jyb4c|3-Q9JYB4C|2000-01-01 00:00:00|2006-06-07 00:30:00|TheRegistrar|" - + "Jane Registrant|Charleston Road Registry|1600 Charleston Road||Mountain View|CA|" - + "94043|US|jane.registrant@example.com|555-1234 x0000||Landrush", - "TheRegistrar|John Doe|The Registrar|123 Example Bőulevard||Williamsburg|NY|" - + "11211|US|new.registrar@example.com|+1.2223334444"))); - } - - @Test - public void testSuccess_multipleSunriseMultipleLandrushApplications() throws Exception { - persistResource(newDomainApplication("label.xn--q9jyb4c", contact1) - .asBuilder() - .setLastEppUpdateTime(DateTime.parse("2006-06-07T00:30:00Z")) - .build()); - persistResource(newDomainApplication("label.xn--q9jyb4c", contact2) - .asBuilder() - .setLastEppUpdateTime(DateTime.parse("2006-06-08T00:30:00Z")) - .build()); - persistResource(newSunriseApplication("label.xn--q9jyb4c", contact1) - .asBuilder() - .setLastEppUpdateTime(DateTime.parse("2006-06-09T00:30:00Z")) - .build()); - persistResource(newSunriseApplication("label.xn--q9jyb4c", contact2) - .asBuilder() - .setLastEppUpdateTime(DateTime.parse("2006-06-10T00:30:00Z")) - .build()); - runCommand("--output=" + output, "xn--q9jyb4c"); - assertThat(getOutput()).isEqualTo(Joiner.on('\n').join(ImmutableList.of( - "label.xn--q9jyb4c|4-Q9JYB4C|2000-01-01 00:00:00|2006-06-09 00:30:00|TheRegistrar|" - + "Joe Registrant|Google|111 8th Ave|4th Floor Suite 100|New York|NY|10011|US|" - + "joe.registrant@example.com|867-5000 x0000||Sunrise", - "label.xn--q9jyb4c|5-Q9JYB4C|2000-01-01 00:00:00|2006-06-10 00:30:00|TheRegistrar|" - + "Jane Registrant|Charleston Road Registry|1600 Charleston Road||Mountain View|CA|" - + "94043|US|jane.registrant@example.com|555-1234 x0000||Sunrise", - "TheRegistrar|John Doe|The Registrar|123 Example Bőulevard||Williamsburg|NY|" - + "11211|US|new.registrar@example.com|+1.2223334444"))); - } - - @Test - public void testSuccess_multipleLabels() throws Exception { - persistResource(newDomainApplication("label.xn--q9jyb4c", contact1) - .asBuilder() - .setLastEppUpdateTime(DateTime.parse("2006-06-06T00:30:00Z")) - .build()); - persistResource(newDomainApplication("label.xn--q9jyb4c", contact2) - .asBuilder() - .setLastEppUpdateTime(DateTime.parse("2006-06-07T00:30:00Z")) - .build()); - persistResource(newSunriseApplication("label2.xn--q9jyb4c", contact1) - .asBuilder() - .setLastEppUpdateTime(DateTime.parse("2006-06-09T00:30:00Z")) - .build()); - persistResource(newSunriseApplication("label2.xn--q9jyb4c", contact2) - .asBuilder() - .setLastEppUpdateTime(DateTime.parse("2006-06-10T00:30:00Z")) - .build()); - runCommand("--output=" + output, "xn--q9jyb4c"); - assertThat(getOutput()).isEqualTo(Joiner.on('\n').join(ImmutableList.of( - "label.xn--q9jyb4c|2-Q9JYB4C|2000-01-01 00:00:00|2006-06-06 00:30:00|TheRegistrar|" - + "Joe Registrant|Google|111 8th Ave|4th Floor Suite 100|New York|NY|10011|US|" - + "joe.registrant@example.com|867-5000 x0000||Landrush", - "label.xn--q9jyb4c|3-Q9JYB4C|2000-01-01 00:00:00|2006-06-07 00:30:00|TheRegistrar|" - + "Jane Registrant|Charleston Road Registry|1600 Charleston Road||Mountain View|CA|" - + "94043|US|jane.registrant@example.com|555-1234 x0000||Landrush", - "label2.xn--q9jyb4c|4-Q9JYB4C|2000-01-01 00:00:00|2006-06-09 00:30:00|TheRegistrar|" - + "Joe Registrant|Google|111 8th Ave|4th Floor Suite 100|New York|NY|10011|US|" - + "joe.registrant@example.com|867-5000 x0000||Sunrise", - "label2.xn--q9jyb4c|5-Q9JYB4C|2000-01-01 00:00:00|2006-06-10 00:30:00|TheRegistrar|" - + "Jane Registrant|Charleston Road Registry|1600 Charleston Road||Mountain View|CA|" - + "94043|US|jane.registrant@example.com|555-1234 x0000||Sunrise", - "TheRegistrar|John Doe|The Registrar|123 Example Bőulevard||Williamsburg|NY|" - + "11211|US|new.registrar@example.com|+1.2223334444"))); - } - - @Test - public void testSuccess_oneSunriseApplication() throws Exception { - persistResource(newSunriseApplication("label.xn--q9jyb4c")); - runCommand("--output=" + output, "xn--q9jyb4c"); - assertThat(getOutput()).isEmpty(); - } - - @Test - public void testSuccess_twoSunriseApplicationsOneRejected() throws Exception { - persistResource(newSunriseApplication("label.xn--q9jyb4c")); - persistResource(newSunriseApplication("label.xn--q9jyb4c") - .asBuilder() - .setApplicationStatus(ApplicationStatus.REJECTED) - .build()); - runCommand("--output=" + output, "xn--q9jyb4c"); - assertThat(getOutput()).isEmpty(); - } - - @Test - public void testSuccess_twoSunriseApplicationsOneDeleted() throws Exception { - persistResource(newSunriseApplication("label.xn--q9jyb4c")); - DateTime deletionTime = DateTime.now(UTC); - persistResource(newSunriseApplication("label.xn--q9jyb4c") - .asBuilder() - .setDeletionTime(deletionTime) - .build()); - clock.setTo(deletionTime); - runCommand("--output=" + output, "xn--q9jyb4c"); - assertThat(getOutput()).isEmpty(); - } - - @Test - public void testSuccess_oneLandrushApplication() throws Exception { - persistResource(newDomainApplication("label.xn--q9jyb4c")); - runCommand("--output=" + output, "xn--q9jyb4c"); - assertThat(getOutput()).isEmpty(); - } - - @Test - public void testSuccess_oneSunriseApplicationMultipleLandrushApplications() throws Exception { - persistResource(newSunriseApplication("label.xn--q9jyb4c")); - persistResource(newDomainApplication("label.xn--q9jyb4c")); - persistResource(newDomainApplication("label.xn--q9jyb4c")); - runCommand("--output=" + output, "xn--q9jyb4c"); - assertThat(getOutput()).isEmpty(); - } - - @Test - public void testFailure_missingTldName() { - assertThrows(ParameterException.class, this::runCommand); - } - - @Test - public void testFailure_tooManyParameters() { - assertThrows(IllegalArgumentException.class, () -> runCommand("xn--q9jyb4c", "foobar")); - } - - @Test - public void testFailure_nonexistentTld() { - assertThrows(IllegalArgumentException.class, () -> runCommand("foobarbaz")); - } -} diff --git a/javatests/google/registry/tools/GetApplicationCommandTest.java b/javatests/google/registry/tools/GetApplicationCommandTest.java deleted file mode 100644 index eb7106481..000000000 --- a/javatests/google/registry/tools/GetApplicationCommandTest.java +++ /dev/null @@ -1,103 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.tools; - -import static google.registry.testing.DatastoreHelper.createTld; -import static google.registry.testing.DatastoreHelper.newDomainApplication; -import static google.registry.testing.DatastoreHelper.persistActiveDomainApplication; -import static google.registry.testing.DatastoreHelper.persistDeletedDomainApplication; -import static google.registry.testing.DatastoreHelper.persistResource; -import static google.registry.testing.JUnitBackports.assertThrows; -import static org.joda.time.DateTimeZone.UTC; - -import com.beust.jcommander.ParameterException; -import org.joda.time.DateTime; -import org.junit.Before; -import org.junit.Test; - -/** Unit tests for {@link GetApplicationCommand}. */ -public class GetApplicationCommandTest extends CommandTestCase { - - DateTime now = DateTime.now(UTC); - - @Before - public void initialize() { - createTld("tld"); - } - - @Test - public void testSuccess() throws Exception { - persistActiveDomainApplication("example.tld"); - runCommand("2-TLD"); - assertInStdout("fullyQualifiedDomainName=example.tld"); - assertInStdout("contact=Key(ContactResource(\"3-ROID\"))"); - } - - @Test - public void testSuccess_expand() throws Exception { - persistActiveDomainApplication("example.tld"); - runCommand("2-TLD", "--expand"); - assertInStdout("fullyQualifiedDomainName=example.tld"); - assertInStdout("contactId=contact1234"); - assertNotInStdout("LiveRef"); - } - - @Test - public void testSuccess_multipleArguments() throws Exception { - persistActiveDomainApplication("example.tld"); - persistActiveDomainApplication("example2.tld"); - persistActiveDomainApplication("example3.tld"); - runCommand("2-TLD", "4-TLD", "6-TLD"); - assertInStdout("fullyQualifiedDomainName=example.tld"); - assertInStdout("fullyQualifiedDomainName=example2.tld"); - assertInStdout("fullyQualifiedDomainName=example3.tld"); - } - - @Test - public void testSuccess_applicationDeletedInFuture() throws Exception { - persistResource( - newDomainApplication("example.tld").asBuilder().setDeletionTime(now.plusDays(1)).build()); - runCommand("--read_timestamp=" + now.plusMonths(1), "2-TLD"); - assertInStdout("Application '2-TLD' does not exist or is deleted"); - } - - @Test - public void testSuccess_deletedApplication() throws Exception { - persistDeletedDomainApplication("example.tld", now.minusDays(1)); - runCommand("2-TLD"); - assertInStdout("Application '2-TLD' does not exist or is deleted"); - } - - @Test - public void testSuccess_applicationDoesNotExist() throws Exception { - runCommand("42-TLD"); - assertInStdout("Application '42-TLD' does not exist or is deleted"); - } - - @Test - public void testFailure_noApplicationId() { - assertThrows(ParameterException.class, this::runCommand); - } - - @Test - public void testSuccess_oneApplicationDoesNotExist() throws Exception { - persistActiveDomainApplication("example.tld"); - persistActiveDomainApplication("example2.tld"); - runCommand("2-TLD", "4-TLD", "55-TLD"); - assertInStdout("fullyQualifiedDomainName=example.tld"); - assertInStdout("fullyQualifiedDomainName=example2.tld"); - assertInStdout("Application '55-TLD' does not exist or is deleted"); - } -} diff --git a/javatests/google/registry/tools/GetApplicationIdsCommandTest.java b/javatests/google/registry/tools/GetApplicationIdsCommandTest.java deleted file mode 100644 index 22c885c88..000000000 --- a/javatests/google/registry/tools/GetApplicationIdsCommandTest.java +++ /dev/null @@ -1,98 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.tools; - -import static com.google.common.truth.Truth.assertThat; -import static google.registry.testing.DatastoreHelper.createTld; -import static google.registry.testing.DatastoreHelper.newDomainApplication; -import static google.registry.testing.DatastoreHelper.persistActiveContact; -import static google.registry.testing.DatastoreHelper.persistResource; -import static google.registry.testing.JUnitBackports.assertThrows; -import static org.joda.time.DateTimeZone.UTC; - -import com.beust.jcommander.ParameterException; -import google.registry.model.domain.launch.LaunchPhase; -import org.joda.time.DateTime; -import org.junit.Before; -import org.junit.Test; - -/** Unit tests for {@link GetApplicationIdsCommand}. */ -public class GetApplicationIdsCommandTest extends CommandTestCase { - - DateTime now = DateTime.now(UTC); - - @Before - public void initialize() { - createTld("tld"); - } - - @Test - public void testSuccess() throws Exception { - persistDomainApplication("example.tld", "1-TLD"); - runCommand("example.tld"); - assertInStdout("1-TLD (TheRegistrar)"); - } - - @Test - public void testSuccess_multipleArguments() throws Exception { - persistDomainApplication("example.tld", "1-TLD"); - persistDomainApplication("example2.tld", "2-TLD"); - runCommand("example.tld", "example2.tld"); - assertInStdout("1-TLD (TheRegistrar)"); - assertInStdout("2-TLD (TheRegistrar)"); - } - - @Test - public void testSuccess_domainDoesNotExist() throws Exception { - runCommand("something.tld"); - assertInStdout("No applications exist for 'something.tld'."); - } - - @Test - public void testFailure_tldDoesNotExist() { - IllegalArgumentException thrown = - assertThrows(IllegalArgumentException.class, () -> runCommand("example.foo")); - assertThat(thrown).hasMessageThat().contains("Domain name is not under a recognized TLD"); - } - - @Test - public void testSuccess_deletedApplication() throws Exception { - persistResource( - newDomainApplication("example.tld").asBuilder().setDeletionTime(now.minusDays(1)).build()); - runCommand("example.tld"); - assertInStdout("No applications exist for 'example.tld'."); - } - - @Test - public void testFailure_noDomainName() { - assertThrows(ParameterException.class, this::runCommand); - } - - private void persistDomainApplication(String domainName, String repoId) { - persistResource( - newDomainApplication( - domainName, repoId, persistActiveContact("icn1001"), LaunchPhase.OPEN)); - } - - @Test - public void testSuccess_oneDomainDoesNotExist() throws Exception { - persistDomainApplication("example.tld", "1-TLD"); - createTld("com"); - runCommand("example.com", "example.tld", "example2.com"); - assertInStdout("1-TLD (TheRegistrar)"); - assertInStdout("No applications exist for 'example.com'."); - assertInStdout("No applications exist for 'example2.com'."); - } -} diff --git a/javatests/google/registry/tools/SetupOteCommandTest.java b/javatests/google/registry/tools/SetupOteCommandTest.java index 0b6b92bc3..d75e2bfcd 100644 --- a/javatests/google/registry/tools/SetupOteCommandTest.java +++ b/javatests/google/registry/tools/SetupOteCommandTest.java @@ -16,6 +16,8 @@ package google.registry.tools; import static com.google.common.truth.Truth.assertThat; import static google.registry.model.registrar.Registrar.State.ACTIVE; +import static google.registry.model.registry.Registry.TldState.GENERAL_AVAILABILITY; +import static google.registry.model.registry.Registry.TldState.START_DATE_SUNRISE; import static google.registry.testing.CertificateSamples.SAMPLE_CERT; import static google.registry.testing.CertificateSamples.SAMPLE_CERT_HASH; import static google.registry.testing.DatastoreHelper.createTld; @@ -154,12 +156,10 @@ public class SetupOteCommandTest extends CommandTestCase { "--email=contact@email.com", "--certfile=" + getCertFilename()); - verifyTldCreation("blobio-sunrise", "BLOBIOS0", TldState.START_DATE_SUNRISE); - verifyTldCreation("blobio-landrush", "BLOBIOL1", TldState.LANDRUSH); - verifyTldCreation( - "blobio-ga", + verifyTldCreation("blobio-sunrise", "BLOBIOS0", START_DATE_SUNRISE); + verifyTldCreation("blobio-ga", "BLOBIOG2", - TldState.GENERAL_AVAILABILITY, + GENERAL_AVAILABILITY, Duration.standardMinutes(60), Duration.standardMinutes(10), Duration.standardMinutes(5), @@ -167,7 +167,7 @@ public class SetupOteCommandTest extends CommandTestCase { verifyTldCreation( "blobio-eap", "BLOBIOE3", - TldState.GENERAL_AVAILABILITY, + GENERAL_AVAILABILITY, Duration.standardMinutes(60), Duration.standardMinutes(10), Duration.standardMinutes(5), @@ -177,13 +177,11 @@ public class SetupOteCommandTest extends CommandTestCase { CidrAddressBlock.create("1.1.1.1")); verifyRegistrarCreation("blobio-1", "blobio-sunrise", PASSWORD, ipAddress); - verifyRegistrarCreation("blobio-2", "blobio-landrush", PASSWORD, ipAddress); verifyRegistrarCreation("blobio-3", "blobio-ga", PASSWORD, ipAddress); verifyRegistrarCreation("blobio-4", "blobio-ga", PASSWORD, ipAddress); verifyRegistrarCreation("blobio-5", "blobio-eap", PASSWORD, ipAddress); verifyRegistrarContactCreation("blobio-1", "contact@email.com"); - verifyRegistrarContactCreation("blobio-2", "contact@email.com"); verifyRegistrarContactCreation("blobio-3", "contact@email.com"); verifyRegistrarContactCreation("blobio-4", "contact@email.com"); verifyRegistrarContactCreation("blobio-5", "contact@email.com"); @@ -197,12 +195,10 @@ public class SetupOteCommandTest extends CommandTestCase { "--email=abc@email.com", "--certfile=" + getCertFilename()); - verifyTldCreation("abc-sunrise", "ABCSUNR0", TldState.START_DATE_SUNRISE); - verifyTldCreation("abc-landrush", "ABCLAND1", TldState.LANDRUSH); - verifyTldCreation( - "abc-ga", + verifyTldCreation("abc-sunrise", "ABCSUNR0", START_DATE_SUNRISE); + verifyTldCreation("abc-ga", "ABCGA2", - TldState.GENERAL_AVAILABILITY, + GENERAL_AVAILABILITY, Duration.standardMinutes(60), Duration.standardMinutes(10), Duration.standardMinutes(5), @@ -210,7 +206,7 @@ public class SetupOteCommandTest extends CommandTestCase { verifyTldCreation( "abc-eap", "ABCEAP3", - TldState.GENERAL_AVAILABILITY, + GENERAL_AVAILABILITY, Duration.standardMinutes(60), Duration.standardMinutes(10), Duration.standardMinutes(5), @@ -220,13 +216,11 @@ public class SetupOteCommandTest extends CommandTestCase { ImmutableList.of(CidrAddressBlock.create("1.1.1.1")); verifyRegistrarCreation("abc-1", "abc-sunrise", PASSWORD, ipAddress); - verifyRegistrarCreation("abc-2", "abc-landrush", PASSWORD, ipAddress); verifyRegistrarCreation("abc-3", "abc-ga", PASSWORD, ipAddress); verifyRegistrarCreation("abc-4", "abc-ga", PASSWORD, ipAddress); verifyRegistrarCreation("abc-5", "abc-eap", PASSWORD, ipAddress); verifyRegistrarContactCreation("abc-1", "abc@email.com"); - verifyRegistrarContactCreation("abc-2", "abc@email.com"); verifyRegistrarContactCreation("abc-3", "abc@email.com"); verifyRegistrarContactCreation("abc-4", "abc@email.com"); verifyRegistrarContactCreation("abc-5", "abc@email.com"); @@ -243,7 +237,7 @@ public class SetupOteCommandTest extends CommandTestCase { verifyTldCreation( "blobio-eap", "BLOBIOE3", - TldState.GENERAL_AVAILABILITY, + GENERAL_AVAILABILITY, Duration.standardMinutes(60), Duration.standardMinutes(10), Duration.standardMinutes(5), @@ -265,12 +259,11 @@ public class SetupOteCommandTest extends CommandTestCase { "--email=contact@email.com", "--certfile=" + getCertFilename()); - verifyTldCreation("blobio-sunrise", "BLOBIOS0", TldState.START_DATE_SUNRISE); - verifyTldCreation("blobio-landrush", "BLOBIOL1", TldState.LANDRUSH); + verifyTldCreation("blobio-sunrise", "BLOBIOS0", START_DATE_SUNRISE); verifyTldCreation( "blobio-ga", "BLOBIOG2", - TldState.GENERAL_AVAILABILITY, + GENERAL_AVAILABILITY, Duration.standardMinutes(60), Duration.standardMinutes(10), Duration.standardMinutes(5), @@ -278,7 +271,7 @@ public class SetupOteCommandTest extends CommandTestCase { verifyTldCreation( "blobio-eap", "BLOBIOE3", - TldState.GENERAL_AVAILABILITY, + GENERAL_AVAILABILITY, Duration.standardMinutes(60), Duration.standardMinutes(10), Duration.standardMinutes(5), @@ -289,13 +282,11 @@ public class SetupOteCommandTest extends CommandTestCase { CidrAddressBlock.create("2.2.2.2")); verifyRegistrarCreation("blobio-1", "blobio-sunrise", PASSWORD, ipAddresses); - verifyRegistrarCreation("blobio-2", "blobio-landrush", PASSWORD, ipAddresses); verifyRegistrarCreation("blobio-3", "blobio-ga", PASSWORD, ipAddresses); verifyRegistrarCreation("blobio-4", "blobio-ga", PASSWORD, ipAddresses); verifyRegistrarCreation("blobio-5", "blobio-eap", PASSWORD, ipAddresses); verifyRegistrarContactCreation("blobio-1", "contact@email.com"); - verifyRegistrarContactCreation("blobio-2", "contact@email.com"); verifyRegistrarContactCreation("blobio-3", "contact@email.com"); verifyRegistrarContactCreation("blobio-4", "contact@email.com"); verifyRegistrarContactCreation("blobio-5", "contact@email.com"); @@ -470,8 +461,15 @@ public class SetupOteCommandTest extends CommandTestCase { "--email=contact@email.com", "--certfile=" + getCertFilename()); - verifyTldCreation("blobio-sunrise", "BLOBIOS0", TldState.START_DATE_SUNRISE); - verifyTldCreation("blobio-landrush", "BLOBIOL1", TldState.LANDRUSH); + verifyTldCreation("blobio-sunrise", "BLOBIOS0", START_DATE_SUNRISE); + verifyTldCreation( + "blobio-ga", + "BLOBIOG2", + GENERAL_AVAILABILITY, + Duration.standardMinutes(60), + Duration.standardMinutes(10), + Duration.standardMinutes(5), + false); } @Test @@ -512,6 +510,6 @@ public class SetupOteCommandTest extends CommandTestCase { CidrAddressBlock.create("1.1.1.1")); verifyRegistrarCreation("blobio-1", "blobio-sunrise", PASSWORD, ipAddress); - verifyRegistrarCreation("blobio-2", "blobio-landrush", PASSWORD, ipAddress); + verifyRegistrarCreation("blobio-3", "blobio-ga", PASSWORD, ipAddress); } } diff --git a/javatests/google/registry/tools/UpdateApplicationStatusCommandTest.java b/javatests/google/registry/tools/UpdateApplicationStatusCommandTest.java deleted file mode 100644 index 8bc4ca4a0..000000000 --- a/javatests/google/registry/tools/UpdateApplicationStatusCommandTest.java +++ /dev/null @@ -1,294 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.tools; - -import static com.google.common.collect.Iterables.getLast; -import static com.google.common.truth.Truth.assertThat; -import static google.registry.model.domain.launch.ApplicationStatus.ALLOCATED; -import static google.registry.model.domain.launch.ApplicationStatus.PENDING_ALLOCATION; -import static google.registry.model.domain.launch.ApplicationStatus.REJECTED; -import static google.registry.model.ofy.ObjectifyService.ofy; -import static google.registry.testing.DatastoreHelper.createTld; -import static google.registry.testing.DatastoreHelper.loadRegistrar; -import static google.registry.testing.DatastoreHelper.newContactResourceWithRoid; -import static google.registry.testing.DatastoreHelper.newDomainApplication; -import static google.registry.testing.DatastoreHelper.persistResource; -import static google.registry.testing.DomainApplicationSubject.assertAboutApplications; -import static google.registry.testing.HistoryEntrySubject.assertAboutHistoryEntries; -import static google.registry.testing.JUnitBackports.assertThrows; -import static org.joda.time.DateTimeZone.UTC; - -import google.registry.model.domain.DomainApplication; -import google.registry.model.eppcommon.StatusValue; -import google.registry.model.eppcommon.Trid; -import google.registry.model.poll.PendingActionNotificationResponse.DomainPendingActionNotificationResponse; -import google.registry.model.poll.PollMessage; -import google.registry.model.reporting.HistoryEntry; -import org.joda.time.DateTime; -import org.junit.Before; -import org.junit.Test; - -/** Unit tests for {@link UpdateApplicationStatusCommand}. */ -public class UpdateApplicationStatusCommandTest - extends CommandTestCase { - - private DomainApplication domainApplication; - private DateTime creationTime; - - @Before - public void init() { - // Since the command's history client ID defaults to CharlestonRoad, resave TheRegistrar as - // CharlestonRoad so we don't have to pass in --history_client_id everywhere below. - persistResource( - loadRegistrar("TheRegistrar").asBuilder().setClientId("CharlestonRoad").build()); - - createTld("xn--q9jyb4c"); - domainApplication = persistResource(newDomainApplication( - "label.xn--q9jyb4c", persistResource(newContactResourceWithRoid("contact1", "C1-ROID"))) - .asBuilder() - .setPersistedCurrentSponsorClientId("TheRegistrar") - .build()); - - this.creationTime = domainApplication.getCreationTime(); - - // Add a history entry under this application that corresponds to its creation. - persistResource( - new HistoryEntry.Builder() - .setParent(domainApplication) - .setModificationTime(creationTime) - .setTrid(Trid.create("ABC123", "server-trid")) - .setType(HistoryEntry.Type.DOMAIN_APPLICATION_CREATE) - .build()); - - // Add a second history entry with a different Trid just to make sure we are always retrieving - // the right one. - persistResource( - new HistoryEntry.Builder() - .setParent(domainApplication) - .setModificationTime(creationTime) - .setTrid(Trid.create("ABC124", "server-trid")) - .setType(HistoryEntry.Type.DOMAIN_APPLICATION_CREATE) - .build()); - } - - private HistoryEntry loadLastHistoryEntry() { - // Loading everything and using getLast() is inefficient, but to do it right would require a new - // descending index on modification time, and this is fine for testing. - return getLast(ofy().load() - .type(HistoryEntry.class) - .ancestor(domainApplication) - .order("modificationTime") - .list()); - } - - @Test - public void testSuccess_rejected() throws Exception { - DateTime before = new DateTime(UTC); - - assertAboutApplications() - .that(domainApplication) - .hasStatusValue(StatusValue.PENDING_CREATE).and() - .doesNotHaveApplicationStatus(REJECTED); - assertThat(getPollMessageCount()).isEqualTo(0); - - Trid creationTrid = Trid.create("DEF456", "server-trid"); - persistResource(reloadResource(domainApplication).asBuilder() - .setCreationTrid(creationTrid) - .build()); - runCommandForced("--ids=2-Q9JYB4C", "--msg=\"Application rejected\"", "--status=REJECTED"); - - domainApplication = ofy().load().entity(domainApplication).now(); - assertAboutApplications().that(domainApplication) - .doesNotHaveStatusValue(StatusValue.PENDING_CREATE).and() - .hasApplicationStatus(REJECTED).and() - .hasLastEppUpdateTimeAtLeast(before).and() - .hasLastEppUpdateClientId("TheRegistrar"); - assertAboutHistoryEntries().that(loadLastHistoryEntry()) - .hasType(HistoryEntry.Type.DOMAIN_APPLICATION_STATUS_UPDATE).and() - .hasClientId("CharlestonRoad"); - assertThat(getPollMessageCount()).isEqualTo(1); - - PollMessage pollMessage = getFirstPollMessage(); - assertThat(pollMessage.getMsg()).isEqualTo("Application rejected"); - DomainPendingActionNotificationResponse response = - (DomainPendingActionNotificationResponse) - pollMessage.getResponseData().stream().findFirst().get(); - assertThat(response.getTrid()).isEqualTo(creationTrid); - assertThat(response.getActionResult()).isFalse(); - } - - private PollMessage getFirstPollMessage() { - return ofy().load().type(PollMessage.class).first().safe(); - } - - @Test - public void testSuccess_allocated() throws Exception { - DateTime before = new DateTime(UTC); - - assertAboutApplications().that(domainApplication) - .hasStatusValue(StatusValue.PENDING_CREATE).and() - .doesNotHaveApplicationStatus(ALLOCATED); - assertThat(getPollMessageCount()).isEqualTo(0); - - Trid creationTrid = Trid.create("DEF456", "server-trid"); - persistResource(reloadResource(domainApplication).asBuilder() - .setCreationTrid(creationTrid) - .build()); - runCommandForced("--ids=2-Q9JYB4C", "--msg=\"Application allocated\"", "--status=ALLOCATED"); - - domainApplication = ofy().load().entity(domainApplication).now(); - assertAboutApplications().that(domainApplication) - .doesNotHaveStatusValue(StatusValue.PENDING_CREATE).and() - .hasApplicationStatus(ALLOCATED).and() - .hasLastEppUpdateTimeAtLeast(before).and() - .hasLastEppUpdateClientId("TheRegistrar"); - assertAboutHistoryEntries().that(loadLastHistoryEntry()) - .hasType(HistoryEntry.Type.DOMAIN_APPLICATION_STATUS_UPDATE).and() - .hasClientId("CharlestonRoad"); - assertThat(getPollMessageCount()).isEqualTo(1); - - PollMessage pollMessage = getFirstPollMessage(); - assertThat(pollMessage.getMsg()).isEqualTo("Application allocated"); - DomainPendingActionNotificationResponse response = - (DomainPendingActionNotificationResponse) - pollMessage.getResponseData().stream().findFirst().get(); - assertThat(response.getTrid()).isEqualTo(creationTrid); - assertThat(response.getActionResult()).isTrue(); - } - - @Test - public void testSuccess_pendingAllocation() throws Exception { - DateTime before = new DateTime(UTC); - - assertAboutApplications().that(domainApplication) - .doesNotHaveApplicationStatus(PENDING_ALLOCATION).and() - .hasStatusValue(StatusValue.PENDING_CREATE); - assertThat(getPollMessageCount()).isEqualTo(0); - - Trid creationTrid = Trid.create("DEF456", "server-trid"); - persistResource(reloadResource(domainApplication).asBuilder() - .setCreationTrid(creationTrid) - .build()); - runCommandForced( - "--ids=2-Q9JYB4C", - "--msg=\"Application pending allocation\"", - "--status=PENDING_ALLOCATION"); - - domainApplication = ofy().load().entity(domainApplication).now(); - assertAboutApplications().that(domainApplication) - .hasStatusValue(StatusValue.PENDING_CREATE).and() - .hasApplicationStatus(PENDING_ALLOCATION).and() - .hasLastEppUpdateTimeAtLeast(before).and() - .hasLastEppUpdateClientId("TheRegistrar"); - assertAboutHistoryEntries().that(loadLastHistoryEntry()) - .hasType(HistoryEntry.Type.DOMAIN_APPLICATION_STATUS_UPDATE).and() - .hasClientId("CharlestonRoad"); - assertThat(getPollMessageCount()).isEqualTo(1); - - PollMessage pollMessage = getFirstPollMessage(); - assertThat(pollMessage.getMsg()).isEqualTo("Application pending allocation"); - assertThat(pollMessage.getResponseData()).isEmpty(); - assertThat(pollMessage.getResponseExtensions()).isNotEmpty(); - } - - @Test - public void testSuccess_rejectedTridFromHistoryEntry() throws Exception { - DateTime before = new DateTime(UTC); - - assertAboutApplications().that(domainApplication) - .hasStatusValue(StatusValue.PENDING_CREATE).and() - .doesNotHaveApplicationStatus(REJECTED); - assertThat(getPollMessageCount()).isEqualTo(0); - - runCommandForced("--ids=2-Q9JYB4C", "--msg=\"Application rejected\"", "--status=REJECTED"); - - domainApplication = ofy().load().entity(domainApplication).now(); - assertAboutApplications().that(domainApplication) - .doesNotHaveStatusValue(StatusValue.PENDING_CREATE).and() - .hasApplicationStatus(REJECTED).and() - .hasLastEppUpdateTimeAtLeast(before).and() - .hasLastEppUpdateClientId("TheRegistrar"); - assertAboutHistoryEntries().that(loadLastHistoryEntry()) - .hasType(HistoryEntry.Type.DOMAIN_APPLICATION_STATUS_UPDATE).and() - .hasClientId("CharlestonRoad"); - assertThat(getPollMessageCount()).isEqualTo(1); - - PollMessage pollMessage = getFirstPollMessage(); - DomainPendingActionNotificationResponse response = - (DomainPendingActionNotificationResponse) - pollMessage.getResponseData().stream().findFirst().get(); - assertThat(response.getTrid()).isEqualTo(Trid.create("ABC123", "server-trid")); - } - - @Test - public void testFailure_applicationAlreadyRejected() throws Exception { - assertThat(getPollMessageCount()).isEqualTo(0); - persistResource(reloadResource(domainApplication).asBuilder() - .setApplicationStatus(REJECTED) - .build()); - - runCommandForced("--ids=2-Q9JYB4C", "--msg=\"Application rejected\"", "--status=REJECTED"); - - assertAboutApplications().that(ofy().load().entity(domainApplication).now()) - .hasApplicationStatus(REJECTED); - assertThat(getPollMessageCount()).isEqualTo(0); - assertAboutHistoryEntries().that(loadLastHistoryEntry()) - .hasType(HistoryEntry.Type.DOMAIN_APPLICATION_CREATE); - } - - @Test - public void testFailure_applicationAlreadyAllocated() { - persistResource(reloadResource(domainApplication).asBuilder() - .setApplicationStatus(ALLOCATED) - .build()); - - IllegalStateException e = - assertThrows( - IllegalStateException.class, - () -> - runCommandForced( - "--ids=2-Q9JYB4C", "--msg=\"Application rejected\"", "--status=REJECTED")); - assertThat(e).hasMessageThat().contains("Domain application has final status ALLOCATED"); - assertAboutApplications().that(ofy().load().entity(domainApplication).now()) - .hasApplicationStatus(ALLOCATED); - assertThat(getPollMessageCount()).isEqualTo(0); - assertAboutHistoryEntries().that(loadLastHistoryEntry()) - .hasType(HistoryEntry.Type.DOMAIN_APPLICATION_CREATE); - } - - @Test - public void testFailure_applicationDoesNotExist() { - assertThrows( - IllegalArgumentException.class, - () -> - runCommandForced( - "--ids=555-Q9JYB4C", "--msg=\"Application rejected\"", "--status=REJECTED")); - } - - @Test - public void testFailure_historyClientIdDoesNotExist() { - IllegalArgumentException thrown = - assertThrows( - IllegalArgumentException.class, - () -> - runCommandForced( - "--history_client_id=fakeclient", - "--ids=2-Q9JYB4C", - "--msg=Ignored", - "--status=REJECTED")); - assertThat(thrown).hasMessageThat().contains("fakeclient"); - } -} - diff --git a/javatests/google/registry/tools/UpdateClaimsNoticeCommandTest.java b/javatests/google/registry/tools/UpdateClaimsNoticeCommandTest.java deleted file mode 100644 index ae498803a..000000000 --- a/javatests/google/registry/tools/UpdateClaimsNoticeCommandTest.java +++ /dev/null @@ -1,174 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.tools; - -import static com.google.common.truth.Truth.assertThat; -import static google.registry.model.ofy.ObjectifyService.ofy; -import static google.registry.testing.DatastoreHelper.createTld; -import static google.registry.testing.DatastoreHelper.newDomainApplication; -import static google.registry.testing.DatastoreHelper.persistResource; -import static google.registry.testing.DomainApplicationSubject.assertAboutApplications; -import static google.registry.testing.JUnitBackports.assertThrows; -import static google.registry.util.DateTimeUtils.END_OF_TIME; -import static google.registry.util.DateTimeUtils.START_OF_TIME; -import static org.joda.time.DateTimeZone.UTC; - -import com.google.common.collect.ImmutableList; -import google.registry.model.domain.DomainApplication; -import google.registry.model.domain.launch.LaunchNotice; -import google.registry.model.domain.launch.LaunchNotice.InvalidChecksumException; -import google.registry.model.reporting.HistoryEntry; -import google.registry.model.smd.EncodedSignedMark; -import org.joda.time.DateTime; -import org.junit.Before; -import org.junit.Test; - -/** Unit tests for {@link UpdateClaimsNoticeCommandTest}. */ -public class UpdateClaimsNoticeCommandTest extends CommandTestCase { - - DomainApplication domainApplication; - - @Before - public void init() { - createTld("xn--q9jyb4c"); - domainApplication = persistResource(newDomainApplication("example-one.xn--q9jyb4c") - .asBuilder() - .setPersistedCurrentSponsorClientId("TheRegistrar") - .build()); - } - - private DomainApplication reloadDomainApplication() { - return ofy().load().entity(domainApplication).now(); - } - - @Test - public void testSuccess_noLaunchNotice() throws Exception { - DateTime before = new DateTime(UTC); - assertAboutApplications().that(domainApplication).hasLaunchNotice(null); - - runCommand( - "--id=2-Q9JYB4C", - "--tcn_id=370d0b7c9223372036854775807", - "--expiration_time=2010-08-16T09:00:00.0Z", - "--accepted_time=2009-08-16T09:00:00.0Z"); - - assertAboutApplications().that(reloadDomainApplication()) - .hasLaunchNotice(LaunchNotice.create( - "370d0b7c9223372036854775807", - "tmch", - DateTime.parse("2010-08-16T09:00:00.0Z"), - DateTime.parse("2009-08-16T09:00:00.0Z"))).and() - .hasLastEppUpdateTimeAtLeast(before).and() - .hasLastEppUpdateClientId("TheRegistrar").and() - .hasOnlyOneHistoryEntryWhich() - .hasType(HistoryEntry.Type.DOMAIN_APPLICATION_UPDATE).and() - .hasClientId("TheRegistrar"); - } - - @Test - public void testSuccess_paddedChecksum() throws Exception { - DateTime before = new DateTime(UTC); - domainApplication = persistResource(newDomainApplication("imdb.xn--q9jyb4c")); - - runCommand( - "--id=4-Q9JYB4C", - "--tcn_id=0a07ec6e0000000000010995975", - "--expiration_time=2014-02-28T12:00:00.0Z", - "--accepted_time=2014-02-26T12:00:00.0Z"); - - assertAboutApplications().that(reloadDomainApplication()) - .hasLaunchNotice(LaunchNotice.create( - "0a07ec6e0000000000010995975", - "tmch", - DateTime.parse("2014-02-28T12:00:00.0Z"), - DateTime.parse("2014-02-26T12:00:00.0Z"))).and() - .hasLastEppUpdateTimeAtLeast(before).and() - .hasLastEppUpdateClientId("TheRegistrar").and() - .hasOnlyOneHistoryEntryWhich() - .hasType(HistoryEntry.Type.DOMAIN_APPLICATION_UPDATE).and() - .hasClientId("TheRegistrar"); - } - - @Test - public void testSuccess_replaceExistingLaunchNotice() throws Exception { - DateTime before = new DateTime(UTC); - - // Set a launch notice which should get overwritten. - domainApplication = persistResource(domainApplication.asBuilder() - .setLaunchNotice(LaunchNotice.create("foobar", "tmch", END_OF_TIME, START_OF_TIME)) - .build()); - - runCommand( - "--id=2-Q9JYB4C", - "--tcn_id=370d0b7c9223372036854775807", - "--expiration_time=2010-08-16T09:00:00.0Z", - "--accepted_time=2009-08-16T09:00:00.0Z"); - - assertAboutApplications().that(reloadDomainApplication()) - .hasLaunchNotice(LaunchNotice.create( - "370d0b7c9223372036854775807", - "tmch", - DateTime.parse("2010-08-16T09:00:00.0Z"), - DateTime.parse("2009-08-16T09:00:00.0Z"))).and() - .hasLastEppUpdateTimeAtLeast(before).and() - .hasLastEppUpdateClientId("TheRegistrar").and() - .hasOnlyOneHistoryEntryWhich() - .hasType(HistoryEntry.Type.DOMAIN_APPLICATION_UPDATE).and() - .hasClientId("TheRegistrar"); - } - - @Test - public void testFailure_badClaimsNotice() { - assertThrows( - IllegalArgumentException.class, - () -> - runCommand( - "--id=1-Q9JYB4C", - "--tcn_id=foobarbaz", - "--expiration_time=2010-08-16T09:00:00.0Z", - "--accepted_time=2009-08-16T09:00:00.0Z")); - } - - @Test - public void testFailure_claimsNoticeForWrongLabel() { - persistResource(newDomainApplication("bad-label.xn--q9jyb4c")); - Exception e = - assertThrows( - Exception.class, - () -> - runCommand( - "--id=4-Q9JYB4C", - "--tcn_id=370d0b7c9223372036854775807", - "--expiration_time=2010-08-16T09:00:00.0Z", - "--accepted_time=2009-08-16T09:00:00.0Z")); - assertThat(e).hasCauseThat().isInstanceOf(InvalidChecksumException.class); - } - - @Test - public void testFailure_sunriseApplication() { - // Add an encoded signed mark to the application to make it a sunrise application. - domainApplication = persistResource(domainApplication.asBuilder() - .setEncodedSignedMarks(ImmutableList.of(EncodedSignedMark.create("base64", "AAAAA"))) - .build()); - assertThrows( - IllegalArgumentException.class, - () -> - runCommand( - "--id=1-Q9JYB4C", - "--tcn_id=370d0b7c9223372036854775807", - "--expiration_time=2010-08-16T09:00:00.0Z", - "--accepted_time=2009-08-16T09:00:00.0Z")); - } -} diff --git a/javatests/google/registry/tools/UpdateSmdCommandTest.java b/javatests/google/registry/tools/UpdateSmdCommandTest.java deleted file mode 100644 index d112bf311..000000000 --- a/javatests/google/registry/tools/UpdateSmdCommandTest.java +++ /dev/null @@ -1,179 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.tools; - -import static com.google.common.io.BaseEncoding.base64; -import static com.google.common.truth.Truth.assertThat; -import static google.registry.config.RegistryConfig.ConfigModule.TmchCaMode.PILOT; -import static google.registry.model.ofy.ObjectifyService.ofy; -import static google.registry.testing.DatastoreHelper.createTld; -import static google.registry.testing.DatastoreHelper.newDomainApplication; -import static google.registry.testing.DatastoreHelper.persistResource; -import static google.registry.testing.DomainApplicationSubject.assertAboutApplications; -import static google.registry.testing.JUnitBackports.assertThrows; -import static google.registry.tmch.TmchTestData.loadFile; -import static java.nio.charset.StandardCharsets.US_ASCII; -import static java.nio.charset.StandardCharsets.UTF_8; - -import com.google.common.collect.ImmutableList; -import com.google.common.io.CharSource; -import google.registry.flows.EppException.ParameterValuePolicyErrorException; -import google.registry.flows.EppException.ParameterValueSyntaxErrorException; -import google.registry.flows.EppException.RequiredParameterMissingException; -import google.registry.flows.domain.DomainFlowTmchUtils; -import google.registry.model.domain.DomainApplication; -import google.registry.model.ofy.Ofy; -import google.registry.model.reporting.HistoryEntry; -import google.registry.model.smd.EncodedSignedMark; -import google.registry.testing.FakeClock; -import google.registry.testing.InjectRule; -import google.registry.tmch.SmdrlCsvParser; -import google.registry.tmch.TmchCertificateAuthority; -import google.registry.tmch.TmchData; -import google.registry.tmch.TmchTestData; -import google.registry.tmch.TmchXmlSignature; -import org.joda.time.DateTime; -import org.junit.Before; -import org.junit.Rule; -import org.junit.Test; - -/** Unit tests for {@link UpdateSmdCommandTest}. */ -public class UpdateSmdCommandTest extends CommandTestCase { - - DomainApplication domainApplication; - - private static final String ACTIVE_SMD = - loadFile("active/Court-Agent-English-Active.smd"); - private static final String DIFFERENT_LABEL_SMD = - loadFile("active/Court-Agent-Chinese-Active.smd"); - private static final String REVOKED_SMD = - loadFile("revoked/smd/Trademark-Holder-English-Revoked.smd"); - private static final String INVALID_SMD = - loadFile("invalid/InvalidSignature-Trademark-Agent-English-Active.smd"); - private static final String REVOKED_TMV_SMD = - loadFile("revoked/tmv/TMVRevoked-Trademark-Agent-English-Active.smd"); - private static final CharSource REVOCATION_LIST = - TmchTestData.loadBytes("tmch_test_smd_revocation_list.csv").asCharSource(US_ASCII); - - // Use a date that is within the valid range for the SMD test files. - private final FakeClock clock = new FakeClock(DateTime.parse("2018-06-01TZ")); - - @Rule - public final InjectRule inject = new InjectRule(); - - @Before - public void init() { - inject.setStaticField(Ofy.class, "clock", clock); - createTld("xn--q9jyb4c"); - clock.advanceOneMilli(); - domainApplication = persistResource(newDomainApplication("test-validate.xn--q9jyb4c") - .asBuilder() - .setPersistedCurrentSponsorClientId("TheRegistrar") - .setEncodedSignedMarks(ImmutableList.of(EncodedSignedMark.create("base64", "garbage"))) - .build()); - clock.advanceOneMilli(); - command.tmchUtils = - new DomainFlowTmchUtils(new TmchXmlSignature(new TmchCertificateAuthority(PILOT, clock))); - } - - private DomainApplication reloadDomainApplication() { - return ofy().load().entity(domainApplication).now(); - } - - @Test - public void testSuccess() throws Exception { - DateTime before = clock.nowUtc(); - clock.advanceOneMilli(); - String smdFile = writeToTmpFile(ACTIVE_SMD); - runCommand("--id=2-Q9JYB4C", "--smd=" + smdFile, "--reason=testing"); - - EncodedSignedMark encodedSignedMark = TmchData.readEncodedSignedMark(ACTIVE_SMD); - assertAboutApplications().that(reloadDomainApplication()) - .hasExactlyEncodedSignedMarks(encodedSignedMark).and() - .hasLastEppUpdateTimeAtLeast(before).and() - .hasLastEppUpdateClientId("TheRegistrar").and() - .hasOnlyOneHistoryEntryWhich() - .hasType(HistoryEntry.Type.DOMAIN_APPLICATION_UPDATE).and() - .hasClientId("TheRegistrar").and() - .hasMetadataReason("UpdateSmdCommand: testing").and() - .hasNoXml(); - } - - @Test - public void testFailure_invalidSmd() throws Exception { - String smdFile = writeToTmpFile(INVALID_SMD); - Exception e = - assertThrows(Exception.class, () -> runCommand("--id=2-Q9JYB4C", "--smd=" + smdFile)); - assertThat(e).hasCauseThat().isInstanceOf(ParameterValuePolicyErrorException.class); - } - - @Test - public void testFailure_revokedSmd() throws Exception { - SmdrlCsvParser.parse(REVOCATION_LIST.readLines()).save(); - clock.advanceOneMilli(); - String smdFile = writeToTmpFile(REVOKED_SMD); - Exception e = - assertThrows(Exception.class, () -> runCommand("--id=2-Q9JYB4C", "--smd=" + smdFile)); - assertThat(e).hasCauseThat().isInstanceOf(ParameterValuePolicyErrorException.class); - } - - @Test - public void testFailure_revokedTmv() throws Exception { - String smdFile = writeToTmpFile(REVOKED_TMV_SMD); - Exception e = - assertThrows(Exception.class, () -> runCommand("--id=2-Q9JYB4C", "--smd=" + smdFile)); - assertThat(e).hasCauseThat().isInstanceOf(ParameterValuePolicyErrorException.class); - } - - @Test - public void testFailure_unparseableXml() throws Exception { - String smdFile = writeToTmpFile(base64().encode("This is not XML!".getBytes(UTF_8))); - Exception e = - assertThrows(Exception.class, () -> runCommand("--id=2-Q9JYB4C", "--smd=" + smdFile)); - assertThat(e).hasCauseThat().isInstanceOf(ParameterValueSyntaxErrorException.class); - } - - @Test - public void testFailure_badlyEncodedData() throws Exception { - String smdFile = writeToTmpFile("Bad base64 data ~!@#$#@%%$#^$%^&^**&^)(*)(_".getBytes(UTF_8)); - Exception e = - assertThrows(Exception.class, () -> runCommand("--id=2-Q9JYB4C", "--smd=" + smdFile)); - assertThat(e).hasCauseThat().isInstanceOf(ParameterValueSyntaxErrorException.class); - } - - @Test - public void testFailure_wrongLabel() throws Exception { - String smdFile = writeToTmpFile(DIFFERENT_LABEL_SMD); - Exception e = - assertThrows(Exception.class, () -> runCommand("--id=2-Q9JYB4C", "--smd=" + smdFile)); - assertThat(e).hasCauseThat().isInstanceOf(RequiredParameterMissingException.class); - } - - @Test - public void testFailure_nonExistentApplication() throws Exception { - String smdFile = writeToTmpFile(ACTIVE_SMD); - assertThrows( - IllegalArgumentException.class, () -> runCommand("--id=3-Q9JYB4C", "--smd=" + smdFile)); - } - - @Test - public void testFailure_deletedApplication() throws Exception { - persistResource(domainApplication.asBuilder().setDeletionTime(clock.nowUtc()).build()); - clock.advanceOneMilli(); - String smdFile = writeToTmpFile(ACTIVE_SMD); - assertThrows( - IllegalArgumentException.class, () -> runCommand("--id=2-Q9JYB4C", "--smd=" + smdFile)); - } -} diff --git a/javatests/google/registry/tools/UpdateTldCommandTest.java b/javatests/google/registry/tools/UpdateTldCommandTest.java index 3cc69b935..19bb1de94 100644 --- a/javatests/google/registry/tools/UpdateTldCommandTest.java +++ b/javatests/google/registry/tools/UpdateTldCommandTest.java @@ -16,6 +16,7 @@ package google.registry.tools; import static com.google.common.truth.Truth.assertThat; import static com.google.common.truth.Truth8.assertThat; +import static google.registry.model.registry.Registry.TldState.START_DATE_SUNRISE; import static google.registry.testing.DatastoreHelper.createTld; import static google.registry.testing.DatastoreHelper.persistPremiumList; import static google.registry.testing.DatastoreHelper.persistReservedList; @@ -26,7 +27,6 @@ import static google.registry.util.DateTimeUtils.START_OF_TIME; import static org.joda.money.CurrencyUnit.JPY; import static org.joda.money.CurrencyUnit.USD; import static org.joda.time.DateTimeZone.UTC; -import static org.joda.time.Duration.standardDays; import static org.joda.time.Duration.standardMinutes; import com.beust.jcommander.ParameterException; @@ -65,28 +65,20 @@ public class UpdateTldCommandTest extends CommandTestCase { @Test public void testSuccess_tldStateTransitions() throws Exception { DateTime sunriseStart = now; - DateTime sunrushStart = sunriseStart.plusMonths(2); - DateTime quietPeriodStart = sunrushStart.plusMonths(1); + DateTime quietPeriodStart = sunriseStart.plusMonths(2); DateTime gaStart = quietPeriodStart.plusWeeks(1); runCommandForced( String.format( - "--tld_state_transitions=%s=PREDELEGATION,%s=SUNRISE,%s=SUNRUSH,%s=QUIET_PERIOD," + "--tld_state_transitions=%s=PREDELEGATION,%s=START_DATE_SUNRISE,%s=QUIET_PERIOD," + "%s=GENERAL_AVAILABILITY", - START_OF_TIME, - sunriseStart, - sunrushStart, - quietPeriodStart, - gaStart), + START_OF_TIME, sunriseStart, quietPeriodStart, gaStart), "xn--q9jyb4c"); Registry registry = Registry.get("xn--q9jyb4c"); assertThat(registry.getTldState(sunriseStart.minusMillis(1))).isEqualTo(TldState.PREDELEGATION); - assertThat(registry.getTldState(sunriseStart)).isEqualTo(TldState.SUNRISE); - assertThat(registry.getTldState(sunriseStart.plusMillis(1))).isEqualTo(TldState.SUNRISE); - assertThat(registry.getTldState(sunrushStart.minusMillis(1))).isEqualTo(TldState.SUNRISE); - assertThat(registry.getTldState(sunrushStart)).isEqualTo(TldState.SUNRUSH); - assertThat(registry.getTldState(sunrushStart.plusMillis(1))).isEqualTo(TldState.SUNRUSH); - assertThat(registry.getTldState(quietPeriodStart.minusMillis(1))).isEqualTo(TldState.SUNRUSH); + assertThat(registry.getTldState(sunriseStart)).isEqualTo(START_DATE_SUNRISE); + assertThat(registry.getTldState(sunriseStart.plusMillis(1))).isEqualTo(START_DATE_SUNRISE); + assertThat(registry.getTldState(quietPeriodStart.minusMillis(1))).isEqualTo(START_DATE_SUNRISE); assertThat(registry.getTldState(quietPeriodStart)).isEqualTo(TldState.QUIET_PERIOD); assertThat(registry.getTldState(quietPeriodStart.plusMillis(1))) .isEqualTo(TldState.QUIET_PERIOD); @@ -99,13 +91,14 @@ public class UpdateTldCommandTest extends CommandTestCase { @Test public void testSuccess_setTldState() throws Exception { - Registry registry = persistResource( - Registry.get("xn--q9jyb4c").asBuilder() + persistResource( + Registry.get("xn--q9jyb4c") + .asBuilder() .setTldStateTransitions(ImmutableSortedMap.of(START_OF_TIME, TldState.PREDELEGATION)) .build()); - runCommandForced("--set_current_tld_state=SUNRISE", "xn--q9jyb4c"); - registry = Registry.get("xn--q9jyb4c"); - assertThat(registry.getTldState(now.plusDays(1))).isEqualTo(TldState.SUNRISE); + runCommandForced("--set_current_tld_state=START_DATE_SUNRISE", "xn--q9jyb4c"); + assertThat(Registry.get("xn--q9jyb4c").getTldState(now.plusDays(1))) + .isEqualTo(START_DATE_SUNRISE); } @Test @@ -151,13 +144,6 @@ public class UpdateTldCommandTest extends CommandTestCase { assertThat(Registry.get("xn--q9jyb4c").getAddGracePeriodLength()).isEqualTo(standardMinutes(5)); } - @Test - public void testSuccess_sunrushAddGracePeriodFlag() throws Exception { - runCommandForced("--sunrush_add_grace_period=P13D", "xn--q9jyb4c"); - assertThat(Registry.get("xn--q9jyb4c").getSunrushAddGracePeriodLength()) - .isEqualTo(standardDays(13)); - } - @Test public void testSuccess_redemptionGracePeriodFlag() throws Exception { assertThat(Registry.get("xn--q9jyb4c").getRedemptionGracePeriodLength()) @@ -509,7 +495,7 @@ public class UpdateTldCommandTest extends CommandTestCase { () -> runCommandForced( String.format( - "--tld_state_transitions=%s=SUNRISE,%s=PREDELEGATION", + "--tld_state_transitions=%s=START_DATE_SUNRISE,%s=PREDELEGATION", now, now.plusMonths(1)), "xn--q9jyb4c")); assertThat(thrown).hasMessageThat().contains("The TLD states are chronologically out of order"); @@ -523,7 +509,8 @@ public class UpdateTldCommandTest extends CommandTestCase { () -> runCommandForced( String.format( - "--tld_state_transitions=%s=SUNRISE,%s=SUNRISE", now, now.plusMonths(1)), + "--tld_state_transitions=%s=START_DATE_SUNRISE,%s=START_DATE_SUNRISE", + now, now.plusMonths(1)), "xn--q9jyb4c")); assertThat(thrown).hasMessageThat().contains("The TLD states are chronologically out of order"); } @@ -535,7 +522,8 @@ public class UpdateTldCommandTest extends CommandTestCase { ParameterException.class, () -> runCommandForced( - String.format("--tld_state_transitions=%s=PREDELEGATION,%s=SUNRISE", now, now), + String.format( + "--tld_state_transitions=%s=PREDELEGATION,%s=START_DATE_SUNRISE", now, now), "xn--q9jyb4c")); assertThat(thrown) .hasMessageThat() @@ -550,7 +538,7 @@ public class UpdateTldCommandTest extends CommandTestCase { () -> runCommandForced( String.format( - "--tld_state_transitions=%s=PREDELEGATION,%s=SUNRISE", + "--tld_state_transitions=%s=PREDELEGATION,%s=START_DATE_SUNRISE", now, now.minus(Duration.millis(1))), "xn--q9jyb4c")); assertThat(thrown) @@ -566,7 +554,7 @@ public class UpdateTldCommandTest extends CommandTestCase { () -> runCommandForced( String.format( - "--tld_state_transitions=%s=PREDELEGATION,%s=SUNRISE", + "--tld_state_transitions=%s=PREDELEGATION,%s=START_DATE_SUNRISE", now, now.plusDays(1)), "--set_current_tld_state=GENERAL_AVAILABILITY", "xn--q9jyb4c")); @@ -587,7 +575,7 @@ public class UpdateTldCommandTest extends CommandTestCase { IllegalArgumentException thrown = assertThrows( IllegalArgumentException.class, - () -> runCommandForced("--set_current_tld_state=SUNRISE", "xn--q9jyb4c")); + () -> runCommandForced("--set_current_tld_state=START_DATE_SUNRISE", "xn--q9jyb4c")); assertThat(thrown).hasMessageThat().contains("The TLD states are chronologically out of order"); } @@ -603,7 +591,7 @@ public class UpdateTldCommandTest extends CommandTestCase { IllegalArgumentException thrown = assertThrows( IllegalArgumentException.class, - () -> runCommandForced("--set_current_tld_state=SUNRISE", "xn--q9jyb4c")); + () -> runCommandForced("--set_current_tld_state=START_DATE_SUNRISE", "xn--q9jyb4c")); assertThat(thrown) .hasMessageThat() .contains(" when there is a later transition already scheduled"); @@ -624,7 +612,7 @@ public class UpdateTldCommandTest extends CommandTestCase { () -> runCommandInEnvironment( RegistryToolEnvironment.PRODUCTION, - "--set_current_tld_state=SUNRISE", + "--set_current_tld_state=START_DATE_SUNRISE", "xn--q9jyb4c", "--force")); assertThat(thrown) diff --git a/javatests/google/registry/tools/params/EnumParameterTest.java b/javatests/google/registry/tools/params/EnumParameterTest.java index b5d1507aa..92ae85afb 100644 --- a/javatests/google/registry/tools/params/EnumParameterTest.java +++ b/javatests/google/registry/tools/params/EnumParameterTest.java @@ -38,10 +38,10 @@ public class EnumParameterTest { @Test public void testFailure_badValue() { IllegalArgumentException thrown = - assertThrows(IllegalArgumentException.class, () -> instance.convert("GENERAL_SUNRUSH")); + assertThrows(IllegalArgumentException.class, () -> instance.convert("FREE_DOMAINS")); assertThat(thrown) .hasMessageThat() .contains( - "No enum constant google.registry.model.registry.Registry.TldState.GENERAL_SUNRUSH"); + "No enum constant google.registry.model.registry.Registry.TldState.FREE_DOMAINS"); } } diff --git a/javatests/google/registry/tools/server/GenerateZoneFilesActionTest.java b/javatests/google/registry/tools/server/GenerateZoneFilesActionTest.java index 6a4f1ad29..d3453efd6 100644 --- a/javatests/google/registry/tools/server/GenerateZoneFilesActionTest.java +++ b/javatests/google/registry/tools/server/GenerateZoneFilesActionTest.java @@ -21,7 +21,6 @@ import static google.registry.testing.DatastoreHelper.newDomainResource; import static google.registry.testing.DatastoreHelper.newHostResource; import static google.registry.testing.DatastoreHelper.persistActiveContact; import static google.registry.testing.DatastoreHelper.persistActiveDomain; -import static google.registry.testing.DatastoreHelper.persistActiveDomainApplication; import static google.registry.testing.DatastoreHelper.persistActiveHost; import static google.registry.testing.DatastoreHelper.persistResource; import static google.registry.testing.GcsTestingUtils.readGcsFile; @@ -101,14 +100,13 @@ public class GenerateZoneFilesActionTest extends MapreduceTestCase { - - private void runMapreduce() throws Exception { - action = new KillAllDomainApplicationsAction(); - action.mrRunner = makeDefaultRunner(); - action.response = new FakeResponse(); - action.run(); - executeTasksUntilEmpty("mapreduce"); - } - - @Test - public void test_deletesOnlyApplicationsAndAssociatedEntities() throws Exception { - createTlds("tld1", "tld2"); - - DomainResource domain = persistActiveDomain("foo1.tld1"); - EppResourceIndex domainEri = - ofy().load().entity(EppResourceIndex.create(Key.create(domain))).now(); - ForeignKeyIndex domainFki = - ofy().load().key(ForeignKeyIndex.createKey(domain)).now(); - HistoryEntry domainHistoryEntry = - persistResource(new HistoryEntry.Builder().setParent(domain).build()); - - DomainApplication application = persistActiveDomainApplication("foo2.tld1"); - EppResourceIndex applicationEri = - ofy().load().entity(EppResourceIndex.create(Key.create(application))).now(); - DomainApplicationIndex applicationDai = - ofy().load().key(DomainApplicationIndex.createKey(application)).now(); - HistoryEntry applicationHistoryEntry = - persistResource(new HistoryEntry.Builder().setParent(application).build()); - - ContactResource contact = persistActiveContact("foo"); - HostResource host = persistActiveHost("ns.foo.tld1"); - - runMapreduce(); - ofy().clearSessionCache(); - - // Check that none of the domain, contact, and host entities were deleted. - assertThat( - ofy() - .load() - .entities(domain, domainEri, domainFki, domainHistoryEntry, contact, host) - .values()) - .containsExactly(domain, domainEri, domainFki, domainHistoryEntry, contact, host); - // Check that all of the domain application entities were deleted. - assertThat( - ofy() - .load() - .entities(application, applicationEri, applicationDai, applicationHistoryEntry)) - .isEmpty(); - } - - @Test - public void test_deletesApplication_evenWhenIndexIsMissing() throws Exception { - createTld("tld1"); - DomainApplication application = persistActiveDomainApplication("applied.tld1"); - EppResourceIndex applicationEri = - ofy().load().entity(EppResourceIndex.create(Key.create(application))).now(); - HistoryEntry applicationHistoryEntry = - persistResource(new HistoryEntry.Builder().setParent(application).build()); - - // Delete the domain application index. - ofy().transact(() -> ofy().delete().key(DomainApplicationIndex.createKey(application)).now()); - ofy().clearSessionCache(); - - runMapreduce(); - ofy().clearSessionCache(); - - // Check that the domain application and history entry were deleted even though the indexes - // couldn't be found. - assertThat(ofy().load().entities(application, applicationEri, applicationHistoryEntry)) - .isEmpty(); - } -} diff --git a/javatests/google/registry/tools/server/KillAllEppResourcesActionTest.java b/javatests/google/registry/tools/server/KillAllEppResourcesActionTest.java index 34c3586c9..10f5052d0 100644 --- a/javatests/google/registry/tools/server/KillAllEppResourcesActionTest.java +++ b/javatests/google/registry/tools/server/KillAllEppResourcesActionTest.java @@ -25,7 +25,6 @@ import static google.registry.model.ofy.ObjectifyService.ofy; import static google.registry.testing.DatastoreHelper.createTld; import static google.registry.testing.DatastoreHelper.persistActiveContact; import static google.registry.testing.DatastoreHelper.persistActiveDomain; -import static google.registry.testing.DatastoreHelper.persistActiveDomainApplication; import static google.registry.testing.DatastoreHelper.persistActiveHost; import static google.registry.testing.DatastoreHelper.persistResource; import static google.registry.util.DateTimeUtils.START_OF_TIME; @@ -43,7 +42,6 @@ import google.registry.model.billing.BillingEvent.Reason; import google.registry.model.contact.ContactResource; import google.registry.model.domain.DomainBase; import google.registry.model.host.HostResource; -import google.registry.model.index.DomainApplicationIndex; import google.registry.model.index.EppResourceIndex; import google.registry.model.index.ForeignKeyIndex.ForeignKeyContactIndex; import google.registry.model.index.ForeignKeyIndex.ForeignKeyDomainIndex; @@ -69,7 +67,6 @@ public class KillAllEppResourcesActionTest extends MapreduceTestCase - - - - - example-one.tld - 3 - - ns1.example.com - ns2.example.com - - registrant - billingContact - adminContact - techContact - - 2fooBAR - - - - - - 1-TLD - 1970-01-01T00:00:00.000Z - - 370d0b7c9223372036854775807 - 2010-08-16T09:00:00.000Z - 2009-08-16T09:00:00.000Z - - - - - 56789 - 2 - 4 - 69FD46E6C4A45C55D4AC - - - 12345 - 3 - 1 - 49FD46E6C4B45C55D4AC - - - - ABC-123 - - diff --git a/javatests/google/registry/tools/server/testdata/allocate_domain2.xml b/javatests/google/registry/tools/server/testdata/allocate_domain2.xml deleted file mode 100644 index 2bea7f807..000000000 --- a/javatests/google/registry/tools/server/testdata/allocate_domain2.xml +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - example-two.tld - 3 - - ns1.example.com - ns2.example.com - - registrant - billingContact - adminContact - techContact - - 2fooBAR - - - - - - 2-TLD - 1970-01-01T00:00:00.000Z - - 370d0b7c9223372036854775807 - 2010-08-16T09:00:00.000Z - 2009-08-16T09:00:00.000Z - - - - - 56789 - 2 - 4 - 69FD46E6C4A45C55D4AC - - - 12345 - 3 - 1 - 49FD46E6C4B45C55D4AC - - - - ABC-123 - - diff --git a/javatests/google/registry/tools/server/testdata/domain_create_sunrush.xml b/javatests/google/registry/tools/server/testdata/domain_create_sunrush.xml deleted file mode 100644 index 7d159de3b..000000000 --- a/javatests/google/registry/tools/server/testdata/domain_create_sunrush.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - example-one.tld - 3 - - ns1.example.com - ns2.example.com - - jd1234 - sh8013 - sh8013 - - 2fooBAR - - - - - - sunrise - - - ABC-12345 - - diff --git a/javatests/google/registry/tools/server/testdata/domain_create_sunrush2.xml b/javatests/google/registry/tools/server/testdata/domain_create_sunrush2.xml deleted file mode 100644 index d4d29379d..000000000 --- a/javatests/google/registry/tools/server/testdata/domain_create_sunrush2.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - example-two.tld - 3 - - ns1.example.com - ns2.example.com - - jd1234 - sh8013 - sh8013 - - 2fooBAR - - - - - - sunrise - - - ABC-12345 - - diff --git a/javatests/google/registry/tools/server/testdata/domain_info_landrush.xml b/javatests/google/registry/tools/server/testdata/domain_info_landrush.xml deleted file mode 100644 index f5828bc44..000000000 --- a/javatests/google/registry/tools/server/testdata/domain_info_landrush.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - example.tld - - - - - landrush - 123 - - - RegistryTool - - diff --git a/javatests/google/registry/tools/server/testdata/domain_info_sunrush.xml b/javatests/google/registry/tools/server/testdata/domain_info_sunrush.xml deleted file mode 100644 index 3ac43cdf7..000000000 --- a/javatests/google/registry/tools/server/testdata/domain_info_sunrush.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - example.tld - - - - - sunrise - 123 - - - RegistryTool - - diff --git a/javatests/google/registry/ui/server/otesetup/ConsoleOteSetupActionTest.java b/javatests/google/registry/ui/server/otesetup/ConsoleOteSetupActionTest.java index da34d9d0e..7f6acf5d0 100644 --- a/javatests/google/registry/ui/server/otesetup/ConsoleOteSetupActionTest.java +++ b/javatests/google/registry/ui/server/otesetup/ConsoleOteSetupActionTest.java @@ -154,7 +154,6 @@ public final class ConsoleOteSetupActionTest { "" + "The following entities were created in unittest by TestUserId:\n" + " Registrar myclientid-1 with access to TLD myclientid-sunrise\n" - + " Registrar myclientid-2 with access to TLD myclientid-landrush\n" + " Registrar myclientid-3 with access to TLD myclientid-ga\n" + " Registrar myclientid-4 with access to TLD myclientid-ga\n" + " Registrar myclientid-5 with access to TLD myclientid-eap\n" diff --git a/javatests/google/registry/ui/server/registrar/OteStatusActionTest.java b/javatests/google/registry/ui/server/registrar/OteStatusActionTest.java index e9d5ff2d1..1e876bf82 100644 --- a/javatests/google/registry/ui/server/registrar/OteStatusActionTest.java +++ b/javatests/google/registry/ui/server/registrar/OteStatusActionTest.java @@ -105,9 +105,9 @@ public final class OteStatusActionTest { @Test public void testFailure_noRegistrar() { - assertThat(action.handleJsonRequest(ImmutableMap.of("clientId", "nonexistent-id-2"))) + assertThat(action.handleJsonRequest(ImmutableMap.of("clientId", "nonexistent-id-3"))) .containsExactlyEntriesIn( - errorResultWithMessage("TestUserId doesn't have access to registrar nonexistent-id-2")); + errorResultWithMessage("TestUserId doesn't have access to registrar nonexistent-id-3")); } @Test