diff --git a/java/google/registry/flows/domain/DomainCheckFlow.java b/java/google/registry/flows/domain/DomainCheckFlow.java index ce53e27e6..6c011a8d7 100644 --- a/java/google/registry/flows/domain/DomainCheckFlow.java +++ b/java/google/registry/flows/domain/DomainCheckFlow.java @@ -20,15 +20,18 @@ import static google.registry.flows.ResourceFlowUtils.verifyTargetIdCount; import static google.registry.flows.domain.DomainFlowUtils.checkAllowedAccessToTld; import static google.registry.flows.domain.DomainFlowUtils.getReservationTypes; import static google.registry.flows.domain.DomainFlowUtils.handleFeeRequest; +import static google.registry.flows.domain.DomainFlowUtils.isReserved; 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.registry.Registry.TldState.START_DATE_SUNRISE; 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.Maps; import com.google.common.net.InternetDomainName; import google.registry.config.RegistryConfig.Config; import google.registry.flows.EppException; @@ -56,11 +59,13 @@ 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; import java.util.HashSet; import java.util.List; +import java.util.Map; import java.util.Optional; import java.util.Set; import javax.inject.Inject; @@ -153,9 +158,11 @@ public final class DomainCheckFlow implements Flow { now) : ImmutableMap.of(); ImmutableList.Builder checks = new ImmutableList.Builder<>(); + ImmutableMap tldStates = + Maps.toMap(seenTlds, tld -> Registry.get(tld).getTldState(now)); for (String targetId : targetIds) { Optional message = - getMessageForCheck(domainNames.get(targetId), existingIds, tokenCheckResults); + getMessageForCheck(domainNames.get(targetId), existingIds, tokenCheckResults, tldStates); checks.add(DomainCheck.create(!message.isPresent(), targetId, message.orElse(null))); } BeforeResponseReturnData responseData = @@ -174,13 +181,17 @@ public final class DomainCheckFlow implements Flow { private Optional getMessageForCheck( InternetDomainName domainName, Set existingIds, - ImmutableMap tokenCheckResults) { + ImmutableMap tokenCheckResults, + Map tldStates) { if (existingIds.contains(domainName.toString())) { return Optional.of("In use"); } - ImmutableSet reservationTypes = getReservationTypes(domainName); - if (!reservationTypes.isEmpty()) { - return Optional.of(getTypeOfHighestSeverity(reservationTypes).getMessageForCheck()); + TldState tldState = tldStates.get(domainName.parent().toString()); + if (isReserved(domainName, START_DATE_SUNRISE.equals(tldState))) { + ImmutableSet reservationTypes = getReservationTypes(domainName); + if (!reservationTypes.isEmpty()) { + return Optional.of(getTypeOfHighestSeverity(reservationTypes).getMessageForCheck()); + } } return Optional.ofNullable(emptyToNull(tokenCheckResults.get(domainName))); } diff --git a/java/google/registry/model/registry/label/ReservationType.java b/java/google/registry/model/registry/label/ReservationType.java index 594bf917c..7ed081861 100644 --- a/java/google/registry/model/registry/label/ReservationType.java +++ b/java/google/registry/model/registry/label/ReservationType.java @@ -38,7 +38,7 @@ public enum ReservationType { NAMESERVER_RESTRICTED("Nameserver restricted", 0), /** The domain can only be registered during sunrise, and is reserved thereafter. */ - ALLOWED_IN_SUNRISE("Reserved for non-sunrise", 1), + ALLOWED_IN_SUNRISE("Reserved", 1), /** The domain can only be registered by providing a specific token. */ RESERVED_FOR_SPECIFIC_USE("Reserved", 2), diff --git a/javatests/google/registry/flows/domain/DomainCheckFlowTest.java b/javatests/google/registry/flows/domain/DomainCheckFlowTest.java index 662211179..71615ac35 100644 --- a/javatests/google/registry/flows/domain/DomainCheckFlowTest.java +++ b/javatests/google/registry/flows/domain/DomainCheckFlowTest.java @@ -170,16 +170,28 @@ public class DomainCheckFlowTest create(false, "collision.tld", "Cannot be delegated"), create(false, "reserved.tld", "Reserved"), create(false, "anchor.tld", "Reserved"), - create(false, "allowedinsunrise.tld", "Reserved for non-sunrise"), + create(false, "allowedinsunrise.tld", "Reserved"), create(false, "premiumcollision.tld", "Cannot be delegated")); } @Test - public void testSuccess_oneReserved() throws Exception { + public void testSuccess_oneReservedInSunrise() throws Exception { + createTld("tld", START_DATE_SUNRISE); + persistResource(Registry.get("tld").asBuilder().setReservedLists(createReservedList()).build()); setEppInput("domain_check_one_tld_reserved.xml"); doCheckTest( create(false, "reserved.tld", "Reserved"), - create(false, "allowedinsunrise.tld", "Reserved for non-sunrise"), + create(true, "allowedinsunrise.tld", null), + create(true, "example2.tld", null), + create(true, "example3.tld", null)); + } + + @Test + public void testSuccess_twoReservedOutsideSunrise() throws Exception { + setEppInput("domain_check_one_tld_reserved.xml"); + doCheckTest( + create(false, "reserved.tld", "Reserved"), + create(false, "allowedinsunrise.tld", "Reserved"), create(true, "example2.tld", null), create(true, "example3.tld", null)); } @@ -221,7 +233,7 @@ public class DomainCheckFlowTest setEppInput("domain_check_one_multipart_tld_reserved.xml"); doCheckTest( create(false, "reserved.tld.foo", "Reserved"), - create(false, "allowedinsunrise.tld.foo", "Reserved for non-sunrise"), + create(false, "allowedinsunrise.tld.foo", "Reserved"), create(true, "example2.tld.foo", null), create(true, "example3.tld.foo", null)); } diff --git a/javatests/google/registry/flows/domain/testdata/domain_check_fee_reserved_response_v06.xml b/javatests/google/registry/flows/domain/testdata/domain_check_fee_reserved_response_v06.xml index 59c3f3e08..ecc216b57 100644 --- a/javatests/google/registry/flows/domain/testdata/domain_check_fee_reserved_response_v06.xml +++ b/javatests/google/registry/flows/domain/testdata/domain_check_fee_reserved_response_v06.xml @@ -11,7 +11,7 @@ allowedinsunrise.tld - Reserved for non-sunrise + Reserved collision.tld diff --git a/javatests/google/registry/flows/domain/testdata/domain_check_fee_reserved_response_v11_create.xml b/javatests/google/registry/flows/domain/testdata/domain_check_fee_reserved_response_v11_create.xml index 2b439adb3..b2b06b53b 100644 --- a/javatests/google/registry/flows/domain/testdata/domain_check_fee_reserved_response_v11_create.xml +++ b/javatests/google/registry/flows/domain/testdata/domain_check_fee_reserved_response_v11_create.xml @@ -11,7 +11,7 @@ allowedinsunrise.tld - Reserved for non-sunrise + Reserved collision.tld diff --git a/javatests/google/registry/flows/domain/testdata/domain_check_fee_reserved_response_v11_renew.xml b/javatests/google/registry/flows/domain/testdata/domain_check_fee_reserved_response_v11_renew.xml index d0eb74177..a4ad13f1b 100644 --- a/javatests/google/registry/flows/domain/testdata/domain_check_fee_reserved_response_v11_renew.xml +++ b/javatests/google/registry/flows/domain/testdata/domain_check_fee_reserved_response_v11_renew.xml @@ -11,7 +11,7 @@ allowedinsunrise.tld - Reserved for non-sunrise + Reserved collision.tld diff --git a/javatests/google/registry/flows/domain/testdata/domain_check_fee_reserved_response_v11_restore.xml b/javatests/google/registry/flows/domain/testdata/domain_check_fee_reserved_response_v11_restore.xml index 15dfb7c5e..101e1ecce 100644 --- a/javatests/google/registry/flows/domain/testdata/domain_check_fee_reserved_response_v11_restore.xml +++ b/javatests/google/registry/flows/domain/testdata/domain_check_fee_reserved_response_v11_restore.xml @@ -11,7 +11,7 @@ allowedinsunrise.tld - Reserved for non-sunrise + Reserved collision.tld diff --git a/javatests/google/registry/flows/domain/testdata/domain_check_fee_reserved_response_v11_transfer.xml b/javatests/google/registry/flows/domain/testdata/domain_check_fee_reserved_response_v11_transfer.xml index 1af632bfc..4131378a2 100644 --- a/javatests/google/registry/flows/domain/testdata/domain_check_fee_reserved_response_v11_transfer.xml +++ b/javatests/google/registry/flows/domain/testdata/domain_check_fee_reserved_response_v11_transfer.xml @@ -11,7 +11,7 @@ allowedinsunrise.tld - Reserved for non-sunrise + Reserved collision.tld diff --git a/javatests/google/registry/flows/domain/testdata/domain_check_fee_reserved_response_v12.xml b/javatests/google/registry/flows/domain/testdata/domain_check_fee_reserved_response_v12.xml index 15530cb06..f053b8ef6 100644 --- a/javatests/google/registry/flows/domain/testdata/domain_check_fee_reserved_response_v12.xml +++ b/javatests/google/registry/flows/domain/testdata/domain_check_fee_reserved_response_v12.xml @@ -11,7 +11,7 @@ allowedinsunrise.tld - Reserved for non-sunrise + Reserved collision.tld diff --git a/javatests/google/registry/flows/domain/testdata/domain_check_fee_reserved_sunrise_response_v06.xml b/javatests/google/registry/flows/domain/testdata/domain_check_fee_reserved_sunrise_response_v06.xml index 565d48822..53dcb6f6d 100644 --- a/javatests/google/registry/flows/domain/testdata/domain_check_fee_reserved_sunrise_response_v06.xml +++ b/javatests/google/registry/flows/domain/testdata/domain_check_fee_reserved_sunrise_response_v06.xml @@ -10,16 +10,13 @@ Reserved - allowedinsunrise.tld - Reserved for non-sunrise + allowedinsunrise.tld - collision.tld - Cannot be delegated + collision.tld - premiumcollision.tld - Cannot be delegated + premiumcollision.tld diff --git a/javatests/google/registry/flows/domain/testdata/domain_check_fee_reserved_sunrise_response_v11_create.xml b/javatests/google/registry/flows/domain/testdata/domain_check_fee_reserved_sunrise_response_v11_create.xml index 160f4352d..8e387289a 100644 --- a/javatests/google/registry/flows/domain/testdata/domain_check_fee_reserved_sunrise_response_v11_create.xml +++ b/javatests/google/registry/flows/domain/testdata/domain_check_fee_reserved_sunrise_response_v11_create.xml @@ -10,16 +10,13 @@ Reserved - allowedinsunrise.tld - Reserved for non-sunrise + allowedinsunrise.tld - collision.tld - Cannot be delegated + collision.tld - premiumcollision.tld - Cannot be delegated + premiumcollision.tld diff --git a/javatests/google/registry/flows/domain/testdata/domain_check_fee_reserved_sunrise_response_v11_renew.xml b/javatests/google/registry/flows/domain/testdata/domain_check_fee_reserved_sunrise_response_v11_renew.xml index a62839cf3..3427c6dfe 100644 --- a/javatests/google/registry/flows/domain/testdata/domain_check_fee_reserved_sunrise_response_v11_renew.xml +++ b/javatests/google/registry/flows/domain/testdata/domain_check_fee_reserved_sunrise_response_v11_renew.xml @@ -10,16 +10,13 @@ Reserved - allowedinsunrise.tld - Reserved for non-sunrise + allowedinsunrise.tld - collision.tld - Cannot be delegated + collision.tld - premiumcollision.tld - Cannot be delegated + premiumcollision.tld diff --git a/javatests/google/registry/flows/domain/testdata/domain_check_fee_reserved_sunrise_response_v11_restore.xml b/javatests/google/registry/flows/domain/testdata/domain_check_fee_reserved_sunrise_response_v11_restore.xml index 5a9fcf51f..c65800496 100644 --- a/javatests/google/registry/flows/domain/testdata/domain_check_fee_reserved_sunrise_response_v11_restore.xml +++ b/javatests/google/registry/flows/domain/testdata/domain_check_fee_reserved_sunrise_response_v11_restore.xml @@ -10,16 +10,13 @@ Reserved - allowedinsunrise.tld - Reserved for non-sunrise + allowedinsunrise.tld - collision.tld - Cannot be delegated + collision.tld - premiumcollision.tld - Cannot be delegated + premiumcollision.tld diff --git a/javatests/google/registry/flows/domain/testdata/domain_check_fee_reserved_sunrise_response_v11_transfer.xml b/javatests/google/registry/flows/domain/testdata/domain_check_fee_reserved_sunrise_response_v11_transfer.xml index 75c99b258..a2ba76162 100644 --- a/javatests/google/registry/flows/domain/testdata/domain_check_fee_reserved_sunrise_response_v11_transfer.xml +++ b/javatests/google/registry/flows/domain/testdata/domain_check_fee_reserved_sunrise_response_v11_transfer.xml @@ -10,16 +10,13 @@ Reserved - allowedinsunrise.tld - Reserved for non-sunrise + allowedinsunrise.tld - collision.tld - Cannot be delegated + collision.tld - premiumcollision.tld - Cannot be delegated + premiumcollision.tld diff --git a/javatests/google/registry/flows/domain/testdata/domain_check_fee_reserved_sunrise_response_v12.xml b/javatests/google/registry/flows/domain/testdata/domain_check_fee_reserved_sunrise_response_v12.xml index df0ffb2a7..200f23dd7 100644 --- a/javatests/google/registry/flows/domain/testdata/domain_check_fee_reserved_sunrise_response_v12.xml +++ b/javatests/google/registry/flows/domain/testdata/domain_check_fee_reserved_sunrise_response_v12.xml @@ -10,16 +10,13 @@ Reserved - allowedinsunrise.tld - Reserved for non-sunrise + allowedinsunrise.tld - collision.tld - Cannot be delegated + collision.tld - premiumcollision.tld - Cannot be delegated + premiumcollision.tld