Add NotLoggedInException tests to flows and flow docs (#1437)

* Add NotLoggedInException tests to flows and flow docs

This wasn't included in flows.md before because the test existed in
ResourceFlowTestCase. So even though the exception could be thrown and
even though this was tested, it wasn't picked up in the documentation
because the documentation is picked up from the corresponding concrete
test class.
This commit is contained in:
gbrodman 2021-11-30 15:00:05 -05:00 committed by GitHub
parent a82e6a05af
commit 05e36f378b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
58 changed files with 307 additions and 18 deletions

View file

@ -42,6 +42,7 @@ import javax.inject.Inject;
* <p>This flows can check the existence of multiple contacts simultaneously. * <p>This flows can check the existence of multiple contacts simultaneously.
* *
* @error {@link google.registry.flows.exceptions.TooManyResourceChecksException} * @error {@link google.registry.flows.exceptions.TooManyResourceChecksException}
* @error {@link google.registry.flows.FlowUtils.NotLoggedInException}
*/ */
@ReportingSpec(ActivityReportField.CONTACT_CHECK) @ReportingSpec(ActivityReportField.CONTACT_CHECK)
public final class ContactCheckFlow implements Flow { public final class ContactCheckFlow implements Flow {

View file

@ -51,6 +51,7 @@ import org.joda.time.DateTime;
* An EPP flow that creates a new contact. * An EPP flow that creates a new contact.
* *
* @error {@link google.registry.flows.EppException.ReadOnlyModeEppException} * @error {@link google.registry.flows.EppException.ReadOnlyModeEppException}
* @error {@link google.registry.flows.FlowUtils.NotLoggedInException}
* @error {@link ResourceAlreadyExistsForThisClientException} * @error {@link ResourceAlreadyExistsForThisClientException}
* @error {@link ResourceCreateContentionException} * @error {@link ResourceCreateContentionException}
* @error {@link ContactFlowUtils.BadInternationalizedPostalInfoException} * @error {@link ContactFlowUtils.BadInternationalizedPostalInfoException}

View file

@ -61,6 +61,7 @@ import org.joda.time.DateTime;
* with the success or failure message when the process is complete. * with the success or failure message when the process is complete.
* *
* @error {@link google.registry.flows.EppException.ReadOnlyModeEppException} * @error {@link google.registry.flows.EppException.ReadOnlyModeEppException}
* @error {@link google.registry.flows.FlowUtils.NotLoggedInException}
* @error {@link google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException} * @error {@link google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException}
* @error {@link google.registry.flows.ResourceFlowUtils.ResourceNotOwnedException} * @error {@link google.registry.flows.ResourceFlowUtils.ResourceNotOwnedException}
* @error {@link google.registry.flows.exceptions.ResourceStatusProhibitsOperationException} * @error {@link google.registry.flows.exceptions.ResourceStatusProhibitsOperationException}

View file

@ -46,6 +46,7 @@ import org.joda.time.DateTime;
* ever been transferred. Any registrar can see any contact's information, but the authInfo is only * ever been transferred. Any registrar can see any contact's information, but the authInfo is only
* visible to the registrar that owns the contact or to a registrar that already supplied it. * visible to the registrar that owns the contact or to a registrar that already supplied it.
* *
* @error {@link google.registry.flows.FlowUtils.NotLoggedInException}
* @error {@link google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException} * @error {@link google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException}
* @error {@link google.registry.flows.ResourceFlowUtils.ResourceNotOwnedException} * @error {@link google.registry.flows.ResourceFlowUtils.ResourceNotOwnedException}
*/ */

View file

@ -55,6 +55,7 @@ import org.joda.time.DateTime;
* explicitly approve the transfer request, which then becomes effective immediately. * explicitly approve the transfer request, which then becomes effective immediately.
* *
* @error {@link google.registry.flows.EppException.ReadOnlyModeEppException} * @error {@link google.registry.flows.EppException.ReadOnlyModeEppException}
* @error {@link google.registry.flows.FlowUtils.NotLoggedInException}
* @error {@link google.registry.flows.ResourceFlowUtils.BadAuthInfoForResourceException} * @error {@link google.registry.flows.ResourceFlowUtils.BadAuthInfoForResourceException}
* @error {@link google.registry.flows.ResourceFlowUtils.ResourceNotOwnedException} * @error {@link google.registry.flows.ResourceFlowUtils.ResourceNotOwnedException}
* @error {@link google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException} * @error {@link google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException}

View file

@ -55,6 +55,7 @@ import org.joda.time.DateTime;
* withdraw the transfer request. * withdraw the transfer request.
* *
* @error {@link google.registry.flows.EppException.ReadOnlyModeEppException} * @error {@link google.registry.flows.EppException.ReadOnlyModeEppException}
* @error {@link google.registry.flows.FlowUtils.NotLoggedInException}
* @error {@link google.registry.flows.ResourceFlowUtils.BadAuthInfoForResourceException} * @error {@link google.registry.flows.ResourceFlowUtils.BadAuthInfoForResourceException}
* @error {@link google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException} * @error {@link google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException}
* @error {@link google.registry.flows.exceptions.NotPendingTransferException} * @error {@link google.registry.flows.exceptions.NotPendingTransferException}

View file

@ -40,11 +40,12 @@ import javax.inject.Inject;
* *
* <p>The "gaining" registrar requests a transfer from the "losing" (aka current) registrar. The * <p>The "gaining" registrar requests a transfer from the "losing" (aka current) registrar. The
* losing registrar has a "transfer" time period to respond (by default five days) after which the * losing registrar has a "transfer" time period to respond (by default five days) after which the
* transfer is automatically approved. This flow can be used by the gaining or losing registrars * transfer is automatically approved. This flow can be used by the gaining or losing registrars (or
* (or anyone with the correct authId) to see the status of a transfer, which may still be pending * anyone with the correct authId) to see the status of a transfer, which may still be pending or
* or may have been approved, rejected, cancelled or implicitly approved by virtue of the transfer * may have been approved, rejected, cancelled or implicitly approved by virtue of the transfer
* period expiring. * period expiring.
* *
* @error {@link google.registry.flows.FlowUtils.NotLoggedInException}
* @error {@link google.registry.flows.ResourceFlowUtils.BadAuthInfoForResourceException} * @error {@link google.registry.flows.ResourceFlowUtils.BadAuthInfoForResourceException}
* @error {@link google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException} * @error {@link google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException}
* @error {@link google.registry.flows.exceptions.NoTransferHistoryToQueryException} * @error {@link google.registry.flows.exceptions.NoTransferHistoryToQueryException}

View file

@ -54,6 +54,7 @@ import org.joda.time.DateTime;
* reject the transfer request. * reject the transfer request.
* *
* @error {@link google.registry.flows.EppException.ReadOnlyModeEppException} * @error {@link google.registry.flows.EppException.ReadOnlyModeEppException}
* @error {@link google.registry.flows.FlowUtils.NotLoggedInException}
* @error {@link google.registry.flows.ResourceFlowUtils.BadAuthInfoForResourceException} * @error {@link google.registry.flows.ResourceFlowUtils.BadAuthInfoForResourceException}
* @error {@link google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException} * @error {@link google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException}
* @error {@link google.registry.flows.ResourceFlowUtils.ResourceNotOwnedException} * @error {@link google.registry.flows.ResourceFlowUtils.ResourceNotOwnedException}

View file

@ -64,6 +64,7 @@ import org.joda.time.Duration;
* request. * request.
* *
* @error {@link google.registry.flows.EppException.ReadOnlyModeEppException} * @error {@link google.registry.flows.EppException.ReadOnlyModeEppException}
* @error {@link google.registry.flows.FlowUtils.NotLoggedInException}
* @error {@link google.registry.flows.ResourceFlowUtils.BadAuthInfoForResourceException} * @error {@link google.registry.flows.ResourceFlowUtils.BadAuthInfoForResourceException}
* @error {@link google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException} * @error {@link google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException}
* @error {@link google.registry.flows.exceptions.AlreadyPendingTransferException} * @error {@link google.registry.flows.exceptions.AlreadyPendingTransferException}

View file

@ -56,6 +56,7 @@ import org.joda.time.DateTime;
* An EPP flow that updates a contact. * An EPP flow that updates a contact.
* *
* @error {@link google.registry.flows.EppException.ReadOnlyModeEppException} * @error {@link google.registry.flows.EppException.ReadOnlyModeEppException}
* @error {@link google.registry.flows.FlowUtils.NotLoggedInException}
* @error {@link google.registry.flows.ResourceFlowUtils.AddRemoveSameValueException} * @error {@link google.registry.flows.ResourceFlowUtils.AddRemoveSameValueException}
* @error {@link google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException} * @error {@link google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException}
* @error {@link google.registry.flows.ResourceFlowUtils.ResourceNotOwnedException} * @error {@link google.registry.flows.ResourceFlowUtils.ResourceNotOwnedException}

View file

@ -85,6 +85,7 @@ import org.joda.time.DateTime;
* <p>This flow also supports the EPP fee extension and can return pricing information. * <p>This flow also supports the EPP fee extension and can return pricing information.
* *
* @error {@link google.registry.flows.exceptions.TooManyResourceChecksException} * @error {@link google.registry.flows.exceptions.TooManyResourceChecksException}
* @error {@link google.registry.flows.FlowUtils.NotLoggedInException}
* @error {@link google.registry.flows.FlowUtils.UnknownCurrencyEppException} * @error {@link google.registry.flows.FlowUtils.UnknownCurrencyEppException}
* @error {@link DomainFlowUtils.BadDomainNameCharacterException} * @error {@link DomainFlowUtils.BadDomainNameCharacterException}
* @error {@link DomainFlowUtils.BadDomainNamePartsCountException} * @error {@link DomainFlowUtils.BadDomainNamePartsCountException}

View file

@ -57,13 +57,14 @@ import org.joda.time.DateTime;
* An EPP flow that checks whether domain labels are trademarked. * An EPP flow that checks whether domain labels are trademarked.
* *
* @error {@link google.registry.flows.exceptions.TooManyResourceChecksException} * @error {@link google.registry.flows.exceptions.TooManyResourceChecksException}
* @error {@link google.registry.flows.FlowUtils.NotLoggedInException}
* @error {@link DomainFlowUtils.BadCommandForRegistryPhaseException} * @error {@link DomainFlowUtils.BadCommandForRegistryPhaseException}
* @error {@link DomainFlowUtils.ClaimsPeriodEndedException} * @error {@link DomainFlowUtils.ClaimsPeriodEndedException}
* @error {@link DomainFlowUtils.NotAuthorizedForTldException} * @error {@link DomainFlowUtils.NotAuthorizedForTldException}
* @error {@link DomainFlowUtils.TldDoesNotExistException} * @error {@link DomainFlowUtils.TldDoesNotExistException}
* @error {@link DomainClaimsCheckNotAllowedWithAllocationTokens} * @error {@link DomainClaimsCheckNotAllowedWithAllocationTokens}
*/ */
@ReportingSpec(ActivityReportField.DOMAIN_CHECK) // Claims check is a special domain check. @ReportingSpec(ActivityReportField.DOMAIN_CHECK) // Claims check is a special domain check.
public final class DomainClaimsCheckFlow implements Flow { public final class DomainClaimsCheckFlow implements Flow {
@Inject ExtensionManager extensionManager; @Inject ExtensionManager extensionManager;

View file

@ -139,6 +139,7 @@ import org.joda.time.Duration;
* @error {@link ResourceCreateContentionException} * @error {@link ResourceCreateContentionException}
* @error {@link google.registry.flows.EppException.UnimplementedExtensionException} * @error {@link google.registry.flows.EppException.UnimplementedExtensionException}
* @error {@link google.registry.flows.ExtensionManager.UndeclaredServiceExtensionException} * @error {@link google.registry.flows.ExtensionManager.UndeclaredServiceExtensionException}
* @error {@link google.registry.flows.FlowUtils.NotLoggedInException}
* @error {@link google.registry.flows.FlowUtils.UnknownCurrencyEppException} * @error {@link google.registry.flows.FlowUtils.UnknownCurrencyEppException}
* @error {@link DomainCreateFlow.AnchorTenantCreatePeriodException} * @error {@link DomainCreateFlow.AnchorTenantCreatePeriodException}
* @error {@link DomainCreateFlow.MustHaveSignedMarksInCurrentPhaseException} * @error {@link DomainCreateFlow.MustHaveSignedMarksInCurrentPhaseException}

View file

@ -105,6 +105,7 @@ import org.joda.time.Duration;
* *
* @error {@link google.registry.flows.EppException.ReadOnlyModeEppException} * @error {@link google.registry.flows.EppException.ReadOnlyModeEppException}
* @error {@link google.registry.flows.EppException.UnimplementedExtensionException} * @error {@link google.registry.flows.EppException.UnimplementedExtensionException}
* @error {@link google.registry.flows.FlowUtils.NotLoggedInException}
* @error {@link google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException} * @error {@link google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException}
* @error {@link google.registry.flows.ResourceFlowUtils.ResourceNotOwnedException} * @error {@link google.registry.flows.ResourceFlowUtils.ResourceNotOwnedException}
* @error {@link google.registry.flows.exceptions.OnlyToolCanPassMetadataException} * @error {@link google.registry.flows.exceptions.OnlyToolCanPassMetadataException}

View file

@ -63,6 +63,7 @@ import org.joda.time.DateTime;
* domain, will get a rich result with all of the domain's fields. All other requests will be * domain, will get a rich result with all of the domain's fields. All other requests will be
* answered with a minimal result containing only basic information about the domain. * answered with a minimal result containing only basic information about the domain.
* *
* @error {@link google.registry.flows.FlowUtils.NotLoggedInException}
* @error {@link google.registry.flows.FlowUtils.UnknownCurrencyEppException} * @error {@link google.registry.flows.FlowUtils.UnknownCurrencyEppException}
* @error {@link google.registry.flows.ResourceFlowUtils.BadAuthInfoForResourceException} * @error {@link google.registry.flows.ResourceFlowUtils.BadAuthInfoForResourceException}
* @error {@link google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException} * @error {@link google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException}

View file

@ -95,6 +95,7 @@ import org.joda.time.Duration;
* expired. * expired.
* *
* @error {@link google.registry.flows.EppException.ReadOnlyModeEppException} * @error {@link google.registry.flows.EppException.ReadOnlyModeEppException}
* @error {@link google.registry.flows.FlowUtils.NotLoggedInException}
* @error {@link google.registry.flows.FlowUtils.UnknownCurrencyEppException} * @error {@link google.registry.flows.FlowUtils.UnknownCurrencyEppException}
* @error {@link google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException} * @error {@link google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException}
* @error {@link google.registry.flows.ResourceFlowUtils.ResourceNotOwnedException} * @error {@link google.registry.flows.ResourceFlowUtils.ResourceNotOwnedException}

View file

@ -95,6 +95,7 @@ import org.joda.time.DateTime;
* *
* @error {@link google.registry.flows.EppException.ReadOnlyModeEppException} * @error {@link google.registry.flows.EppException.ReadOnlyModeEppException}
* @error {@link google.registry.flows.EppException.UnimplementedExtensionException} * @error {@link google.registry.flows.EppException.UnimplementedExtensionException}
* @error {@link google.registry.flows.FlowUtils.NotLoggedInException}
* @error {@link google.registry.flows.FlowUtils.UnknownCurrencyEppException} * @error {@link google.registry.flows.FlowUtils.UnknownCurrencyEppException}
* @error {@link google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException} * @error {@link google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException}
* @error {@link google.registry.flows.ResourceFlowUtils.ResourceNotOwnedException} * @error {@link google.registry.flows.ResourceFlowUtils.ResourceNotOwnedException}

View file

@ -79,6 +79,7 @@ import org.joda.time.DateTime;
* those speculative objects are deleted and replaced with new ones with the correct approval time. * those speculative objects are deleted and replaced with new ones with the correct approval time.
* *
* @error {@link google.registry.flows.EppException.ReadOnlyModeEppException} * @error {@link google.registry.flows.EppException.ReadOnlyModeEppException}
* @error {@link google.registry.flows.FlowUtils.NotLoggedInException}
* @error {@link google.registry.flows.ResourceFlowUtils.BadAuthInfoForResourceException} * @error {@link google.registry.flows.ResourceFlowUtils.BadAuthInfoForResourceException}
* @error {@link google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException} * @error {@link google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException}
* @error {@link google.registry.flows.ResourceFlowUtils.ResourceNotOwnedException} * @error {@link google.registry.flows.ResourceFlowUtils.ResourceNotOwnedException}

View file

@ -66,6 +66,7 @@ import org.joda.time.DateTime;
* those speculative objects are deleted. * those speculative objects are deleted.
* *
* @error {@link google.registry.flows.EppException.ReadOnlyModeEppException} * @error {@link google.registry.flows.EppException.ReadOnlyModeEppException}
* @error {@link google.registry.flows.FlowUtils.NotLoggedInException}
* @error {@link google.registry.flows.ResourceFlowUtils.BadAuthInfoForResourceException} * @error {@link google.registry.flows.ResourceFlowUtils.BadAuthInfoForResourceException}
* @error {@link google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException} * @error {@link google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException}
* @error {@link google.registry.flows.exceptions.NotPendingTransferException} * @error {@link google.registry.flows.exceptions.NotPendingTransferException}

View file

@ -44,11 +44,12 @@ import org.joda.time.DateTime;
* *
* <p>The "gaining" registrar requests a transfer from the "losing" (aka current) registrar. The * <p>The "gaining" registrar requests a transfer from the "losing" (aka current) registrar. The
* losing registrar has a "transfer" time period to respond (by default five days) after which the * losing registrar has a "transfer" time period to respond (by default five days) after which the
* transfer is automatically approved. This flow can be used by the gaining or losing registrars * transfer is automatically approved. This flow can be used by the gaining or losing registrars (or
* (or anyone with the correct authId) to see the status of a transfer, which may still be pending * anyone with the correct authId) to see the status of a transfer, which may still be pending or
* or may have been approved, rejected, cancelled or implicitly approved by virtue of the transfer * may have been approved, rejected, cancelled or implicitly approved by virtue of the transfer
* period expiring. * period expiring.
* *
* @error {@link google.registry.flows.FlowUtils.NotLoggedInException}
* @error {@link google.registry.flows.ResourceFlowUtils.BadAuthInfoForResourceException} * @error {@link google.registry.flows.ResourceFlowUtils.BadAuthInfoForResourceException}
* @error {@link google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException} * @error {@link google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException}
* @error {@link google.registry.flows.exceptions.NoTransferHistoryToQueryException} * @error {@link google.registry.flows.exceptions.NoTransferHistoryToQueryException}

View file

@ -68,6 +68,7 @@ import org.joda.time.DateTime;
* those speculative objects are deleted. * those speculative objects are deleted.
* *
* @error {@link google.registry.flows.EppException.ReadOnlyModeEppException} * @error {@link google.registry.flows.EppException.ReadOnlyModeEppException}
* @error {@link google.registry.flows.FlowUtils.NotLoggedInException}
* @error {@link google.registry.flows.ResourceFlowUtils.BadAuthInfoForResourceException} * @error {@link google.registry.flows.ResourceFlowUtils.BadAuthInfoForResourceException}
* @error {@link google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException} * @error {@link google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException}
* @error {@link google.registry.flows.ResourceFlowUtils.ResourceNotOwnedException} * @error {@link google.registry.flows.ResourceFlowUtils.ResourceNotOwnedException}

View file

@ -94,6 +94,7 @@ import org.joda.time.DateTime;
* replaced with new ones with the correct approval time). * replaced with new ones with the correct approval time).
* *
* @error {@link google.registry.flows.EppException.ReadOnlyModeEppException} * @error {@link google.registry.flows.EppException.ReadOnlyModeEppException}
* @error {@link google.registry.flows.FlowUtils.NotLoggedInException}
* @error {@link google.registry.flows.FlowUtils.UnknownCurrencyEppException} * @error {@link google.registry.flows.FlowUtils.UnknownCurrencyEppException}
* @error {@link google.registry.flows.ResourceFlowUtils.BadAuthInfoForResourceException} * @error {@link google.registry.flows.ResourceFlowUtils.BadAuthInfoForResourceException}
* @error {@link google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException} * @error {@link google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException}

View file

@ -99,6 +99,7 @@ import org.joda.time.DateTime;
* *
* @error {@link google.registry.flows.EppException.ReadOnlyModeEppException} * @error {@link google.registry.flows.EppException.ReadOnlyModeEppException}
* @error {@link google.registry.flows.EppException.UnimplementedExtensionException} * @error {@link google.registry.flows.EppException.UnimplementedExtensionException}
* @error {@link google.registry.flows.FlowUtils.NotLoggedInException}
* @error {@link google.registry.flows.ResourceFlowUtils.AddRemoveSameValueException} * @error {@link google.registry.flows.ResourceFlowUtils.AddRemoveSameValueException}
* @error {@link google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException} * @error {@link google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException}
* @error {@link google.registry.flows.ResourceFlowUtils.ResourceNotOwnedException} * @error {@link google.registry.flows.ResourceFlowUtils.ResourceNotOwnedException}

View file

@ -42,6 +42,7 @@ import javax.inject.Inject;
* <p>This flows can check the existence of multiple hosts simultaneously. * <p>This flows can check the existence of multiple hosts simultaneously.
* *
* @error {@link google.registry.flows.exceptions.TooManyResourceChecksException} * @error {@link google.registry.flows.exceptions.TooManyResourceChecksException}
* @error {@link google.registry.flows.FlowUtils.NotLoggedInException}
*/ */
@ReportingSpec(ActivityReportField.HOST_CHECK) @ReportingSpec(ActivityReportField.HOST_CHECK)
public final class HostCheckFlow implements Flow { public final class HostCheckFlow implements Flow {

View file

@ -67,6 +67,7 @@ import org.joda.time.DateTime;
* *
* @error {@link google.registry.flows.EppException.ReadOnlyModeEppException} * @error {@link google.registry.flows.EppException.ReadOnlyModeEppException}
* @error {@link google.registry.flows.FlowUtils.IpAddressVersionMismatchException} * @error {@link google.registry.flows.FlowUtils.IpAddressVersionMismatchException}
* @error {@link google.registry.flows.FlowUtils.NotLoggedInException}
* @error {@link ResourceAlreadyExistsForThisClientException} * @error {@link ResourceAlreadyExistsForThisClientException}
* @error {@link ResourceCreateContentionException} * @error {@link ResourceCreateContentionException}
* @error {@link HostFlowUtils.HostNameTooLongException} * @error {@link HostFlowUtils.HostNameTooLongException}

View file

@ -59,6 +59,7 @@ import org.joda.time.DateTime;
* with the success or failure message when the process is complete. * with the success or failure message when the process is complete.
* *
* @error {@link google.registry.flows.EppException.ReadOnlyModeEppException} * @error {@link google.registry.flows.EppException.ReadOnlyModeEppException}
* @error {@link google.registry.flows.FlowUtils.NotLoggedInException}
* @error {@link google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException} * @error {@link google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException}
* @error {@link google.registry.flows.ResourceFlowUtils.ResourceNotOwnedException} * @error {@link google.registry.flows.ResourceFlowUtils.ResourceNotOwnedException}
* @error {@link google.registry.flows.exceptions.ResourceStatusProhibitsOperationException} * @error {@link google.registry.flows.exceptions.ResourceStatusProhibitsOperationException}

View file

@ -44,6 +44,7 @@ import org.joda.time.DateTime;
* <p>The returned information included IP addresses, if any, and details of the host's most recent * <p>The returned information included IP addresses, if any, and details of the host's most recent
* transfer if it has ever been transferred. Any registrar can see the information for any host. * transfer if it has ever been transferred. Any registrar can see the information for any host.
* *
* @error {@link google.registry.flows.FlowUtils.NotLoggedInException}
* @error {@link google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException} * @error {@link google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException}
* @error {@link HostFlowUtils.HostNameNotLowerCaseException} * @error {@link HostFlowUtils.HostNameNotLowerCaseException}
* @error {@link HostFlowUtils.HostNameNotNormalizedException} * @error {@link HostFlowUtils.HostNameNotNormalizedException}

View file

@ -79,6 +79,7 @@ import org.joda.time.DateTime;
* or IP addresses are added, tasks are enqueued to update DNS accordingly. * or IP addresses are added, tasks are enqueued to update DNS accordingly.
* *
* @error {@link google.registry.flows.EppException.ReadOnlyModeEppException} * @error {@link google.registry.flows.EppException.ReadOnlyModeEppException}
* @error {@link google.registry.flows.FlowUtils.NotLoggedInException}
* @error {@link google.registry.flows.ResourceFlowUtils.AddRemoveSameValueException} * @error {@link google.registry.flows.ResourceFlowUtils.AddRemoveSameValueException}
* @error {@link google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException} * @error {@link google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException}
* @error {@link google.registry.flows.ResourceFlowUtils.ResourceNotOwnedException} * @error {@link google.registry.flows.ResourceFlowUtils.ResourceNotOwnedException}

View file

@ -21,10 +21,8 @@ import static google.registry.model.ImmutableObjectSubject.assertAboutImmutableO
import static google.registry.model.ofy.ObjectifyService.auditedOfy; import static google.registry.model.ofy.ObjectifyService.auditedOfy;
import static google.registry.persistence.transaction.TransactionManagerFactory.tm; import static google.registry.persistence.transaction.TransactionManagerFactory.tm;
import static google.registry.persistence.transaction.TransactionManagerUtil.transactIfJpaTm; import static google.registry.persistence.transaction.TransactionManagerUtil.transactIfJpaTm;
import static google.registry.testing.EppExceptionSubject.assertAboutEppExceptions;
import static google.registry.testing.LogsSubject.assertAboutLogs; import static google.registry.testing.LogsSubject.assertAboutLogs;
import static google.registry.testing.TaskQueueHelper.assertTasksEnqueued; import static google.registry.testing.TaskQueueHelper.assertTasksEnqueued;
import static org.junit.jupiter.api.Assertions.assertThrows;
import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableMap;
@ -33,7 +31,6 @@ import com.google.common.collect.Streams;
import com.google.common.flogger.LoggerConfig; import com.google.common.flogger.LoggerConfig;
import com.google.common.testing.TestLogHandler; import com.google.common.testing.TestLogHandler;
import com.googlecode.objectify.Key; import com.googlecode.objectify.Key;
import google.registry.flows.FlowUtils.NotLoggedInException;
import google.registry.model.EppResource; import google.registry.model.EppResource;
import google.registry.model.contact.ContactBase; import google.registry.model.contact.ContactBase;
import google.registry.model.contact.ContactHistory; import google.registry.model.contact.ContactHistory;
@ -58,7 +55,6 @@ import org.joda.time.DateTime;
import org.joda.time.Duration; import org.joda.time.Duration;
import org.json.simple.JSONValue; import org.json.simple.JSONValue;
import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
/** /**
* Base class for resource flow unit tests. * Base class for resource flow unit tests.
@ -120,13 +116,6 @@ public abstract class ResourceFlowTestCase<F extends Flow, R extends EppResource
ClaimsListDao.save(ClaimsList.create(clock.nowUtc(), labelsToKeys)); ClaimsListDao.save(ClaimsList.create(clock.nowUtc(), labelsToKeys));
} }
@Test
void testRequiresLogin() {
sessionMetadata.setRegistrarId(null);
EppException thrown = assertThrows(NotLoggedInException.class, this::runFlow);
assertAboutEppExceptions().that(thrown).marshalsToXml();
}
/** /**
* Confirms that an EppResourceIndex entity exists in Datastore for a given resource. * Confirms that an EppResourceIndex entity exists in Datastore for a given resource.
*/ */

View file

@ -21,6 +21,7 @@ import static google.registry.testing.EppExceptionSubject.assertAboutEppExceptio
import static org.junit.jupiter.api.Assertions.assertThrows; import static org.junit.jupiter.api.Assertions.assertThrows;
import google.registry.flows.EppException; import google.registry.flows.EppException;
import google.registry.flows.FlowUtils.NotLoggedInException;
import google.registry.flows.ResourceCheckFlowTestCase; import google.registry.flows.ResourceCheckFlowTestCase;
import google.registry.flows.exceptions.TooManyResourceChecksException; import google.registry.flows.exceptions.TooManyResourceChecksException;
import google.registry.model.contact.ContactResource; import google.registry.model.contact.ContactResource;
@ -42,6 +43,13 @@ class ContactCheckFlowTest extends ResourceCheckFlowTestCase<ContactCheckFlow, C
setEppInput("contact_check.xml"); setEppInput("contact_check.xml");
} }
@TestOfyAndSql
void testNotLoggedIn() {
sessionMetadata.setRegistrarId(null);
EppException thrown = assertThrows(NotLoggedInException.class, this::runFlow);
assertAboutEppExceptions().that(thrown).marshalsToXml();
}
@TestOfyAndSql @TestOfyAndSql
void testNothingExists() throws Exception { void testNothingExists() throws Exception {
// These ids come from the check xml. // These ids come from the check xml.

View file

@ -27,6 +27,7 @@ import static org.junit.jupiter.api.Assertions.assertThrows;
import google.registry.flows.EppException; import google.registry.flows.EppException;
import google.registry.flows.EppException.ReadOnlyModeEppException; import google.registry.flows.EppException.ReadOnlyModeEppException;
import google.registry.flows.FlowUtils.NotLoggedInException;
import google.registry.flows.ResourceFlowTestCase; import google.registry.flows.ResourceFlowTestCase;
import google.registry.flows.contact.ContactFlowUtils.BadInternationalizedPostalInfoException; import google.registry.flows.contact.ContactFlowUtils.BadInternationalizedPostalInfoException;
import google.registry.flows.contact.ContactFlowUtils.DeclineContactDisclosureFieldDisallowedPolicyException; import google.registry.flows.contact.ContactFlowUtils.DeclineContactDisclosureFieldDisallowedPolicyException;
@ -68,6 +69,13 @@ class ContactCreateFlowTest extends ResourceFlowTestCase<ContactCreateFlow, Cont
assertLastHistoryContainsResource(contact); assertLastHistoryContainsResource(contact);
} }
@TestOfyAndSql
void testNotLoggedIn() {
sessionMetadata.setRegistrarId(null);
EppException thrown = assertThrows(NotLoggedInException.class, this::runFlow);
assertAboutEppExceptions().that(thrown).marshalsToXml();
}
@TestOfyAndSql @TestOfyAndSql
void testDryRun() throws Exception { void testDryRun() throws Exception {
dryRunFlowAssertResponse(loadFile("contact_create_response.xml")); dryRunFlowAssertResponse(loadFile("contact_create_response.xml"));

View file

@ -36,6 +36,7 @@ import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Iterables; import com.google.common.collect.Iterables;
import google.registry.flows.EppException; import google.registry.flows.EppException;
import google.registry.flows.EppException.ReadOnlyModeEppException; import google.registry.flows.EppException.ReadOnlyModeEppException;
import google.registry.flows.FlowUtils.NotLoggedInException;
import google.registry.flows.ResourceFlowTestCase; import google.registry.flows.ResourceFlowTestCase;
import google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException; import google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException;
import google.registry.flows.ResourceFlowUtils.ResourceNotOwnedException; import google.registry.flows.ResourceFlowUtils.ResourceNotOwnedException;
@ -76,6 +77,13 @@ class ContactDeleteFlowTest extends ResourceFlowTestCase<ContactDeleteFlow, Cont
setEppInput("contact_delete.xml"); setEppInput("contact_delete.xml");
} }
@TestOfyAndSql
void testNotLoggedIn() {
sessionMetadata.setRegistrarId(null);
EppException thrown = assertThrows(NotLoggedInException.class, this::runFlow);
assertAboutEppExceptions().that(thrown).marshalsToXml();
}
@TestOfyAndSql @TestOfyAndSql
void testDryRun() throws Exception { void testDryRun() throws Exception {
persistActiveContact(getUniqueIdFromCommand()); persistActiveContact(getUniqueIdFromCommand());

View file

@ -25,6 +25,8 @@ import static org.junit.jupiter.api.Assertions.assertThrows;
import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet; import com.google.common.collect.ImmutableSet;
import google.registry.flows.EppException;
import google.registry.flows.FlowUtils.NotLoggedInException;
import google.registry.flows.ResourceFlowTestCase; import google.registry.flows.ResourceFlowTestCase;
import google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException; import google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException;
import google.registry.flows.ResourceFlowUtils.ResourceNotOwnedException; import google.registry.flows.ResourceFlowUtils.ResourceNotOwnedException;
@ -105,6 +107,13 @@ class ContactInfoFlowTest extends ResourceFlowTestCase<ContactInfoFlow, ContactR
return contact; return contact;
} }
@TestOfyAndSql
void testNotLoggedIn() {
sessionMetadata.setRegistrarId(null);
EppException thrown = assertThrows(NotLoggedInException.class, this::runFlow);
assertAboutEppExceptions().that(thrown).marshalsToXml();
}
@TestOfyAndSql @TestOfyAndSql
void testSuccess() throws Exception { void testSuccess() throws Exception {
persistContactResource(true); persistContactResource(true);

View file

@ -27,6 +27,7 @@ import static org.junit.jupiter.api.Assertions.assertThrows;
import google.registry.flows.EppException; import google.registry.flows.EppException;
import google.registry.flows.EppException.ReadOnlyModeEppException; import google.registry.flows.EppException.ReadOnlyModeEppException;
import google.registry.flows.FlowUtils.NotLoggedInException;
import google.registry.flows.ResourceFlowUtils.BadAuthInfoForResourceException; import google.registry.flows.ResourceFlowUtils.BadAuthInfoForResourceException;
import google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException; import google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException;
import google.registry.flows.ResourceFlowUtils.ResourceNotOwnedException; import google.registry.flows.ResourceFlowUtils.ResourceNotOwnedException;
@ -135,6 +136,13 @@ class ContactTransferApproveFlowTest
runFlow(); runFlow();
} }
@TestOfyAndSql
void testNotLoggedIn() {
sessionMetadata.setRegistrarId(null);
EppException thrown = assertThrows(NotLoggedInException.class, this::runFlow);
assertAboutEppExceptions().that(thrown).marshalsToXml();
}
@TestOfyAndSql @TestOfyAndSql
void testDryRun() throws Exception { void testDryRun() throws Exception {
setEppInput("contact_transfer_approve.xml"); setEppInput("contact_transfer_approve.xml");

View file

@ -26,6 +26,7 @@ import static org.junit.jupiter.api.Assertions.assertThrows;
import google.registry.flows.EppException; import google.registry.flows.EppException;
import google.registry.flows.EppException.ReadOnlyModeEppException; import google.registry.flows.EppException.ReadOnlyModeEppException;
import google.registry.flows.FlowUtils.NotLoggedInException;
import google.registry.flows.ResourceFlowUtils.BadAuthInfoForResourceException; import google.registry.flows.ResourceFlowUtils.BadAuthInfoForResourceException;
import google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException; import google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException;
import google.registry.flows.exceptions.NotPendingTransferException; import google.registry.flows.exceptions.NotPendingTransferException;
@ -119,6 +120,13 @@ class ContactTransferCancelFlowTest
runFlow(); runFlow();
} }
@TestOfyAndSql
void testNotLoggedIn() {
sessionMetadata.setRegistrarId(null);
EppException thrown = assertThrows(NotLoggedInException.class, this::runFlow);
assertAboutEppExceptions().that(thrown).marshalsToXml();
}
@TestOfyAndSql @TestOfyAndSql
void testDryRun() throws Exception { void testDryRun() throws Exception {
setEppInput("contact_transfer_cancel.xml"); setEppInput("contact_transfer_cancel.xml");

View file

@ -22,6 +22,7 @@ import static google.registry.testing.EppExceptionSubject.assertAboutEppExceptio
import static org.junit.jupiter.api.Assertions.assertThrows; import static org.junit.jupiter.api.Assertions.assertThrows;
import google.registry.flows.EppException; import google.registry.flows.EppException;
import google.registry.flows.FlowUtils.NotLoggedInException;
import google.registry.flows.ResourceFlowUtils.BadAuthInfoForResourceException; import google.registry.flows.ResourceFlowUtils.BadAuthInfoForResourceException;
import google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException; import google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException;
import google.registry.flows.exceptions.NoTransferHistoryToQueryException; import google.registry.flows.exceptions.NoTransferHistoryToQueryException;
@ -76,6 +77,13 @@ class ContactTransferQueryFlowTest
runFlow(); runFlow();
} }
@TestOfyAndSql
void testNotLoggedIn() {
sessionMetadata.setRegistrarId(null);
EppException thrown = assertThrows(NotLoggedInException.class, this::runFlow);
assertAboutEppExceptions().that(thrown).marshalsToXml();
}
@TestOfyAndSql @TestOfyAndSql
void testSuccess() throws Exception { void testSuccess() throws Exception {
doSuccessfulTest("contact_transfer_query.xml", "contact_transfer_query_response.xml"); doSuccessfulTest("contact_transfer_query.xml", "contact_transfer_query_response.xml");

View file

@ -26,6 +26,7 @@ import static org.junit.jupiter.api.Assertions.assertThrows;
import google.registry.flows.EppException; import google.registry.flows.EppException;
import google.registry.flows.EppException.ReadOnlyModeEppException; import google.registry.flows.EppException.ReadOnlyModeEppException;
import google.registry.flows.FlowUtils.NotLoggedInException;
import google.registry.flows.ResourceFlowUtils.BadAuthInfoForResourceException; import google.registry.flows.ResourceFlowUtils.BadAuthInfoForResourceException;
import google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException; import google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException;
import google.registry.flows.ResourceFlowUtils.ResourceNotOwnedException; import google.registry.flows.ResourceFlowUtils.ResourceNotOwnedException;
@ -134,6 +135,13 @@ class ContactTransferRejectFlowTest
runFlow(); runFlow();
} }
@TestOfyAndSql
void testNotLoggedIn() {
sessionMetadata.setRegistrarId(null);
EppException thrown = assertThrows(NotLoggedInException.class, this::runFlow);
assertAboutEppExceptions().that(thrown).marshalsToXml();
}
@TestOfyAndSql @TestOfyAndSql
void testDryRun() throws Exception { void testDryRun() throws Exception {
setEppInput("contact_transfer_reject.xml"); setEppInput("contact_transfer_reject.xml");

View file

@ -36,6 +36,7 @@ import com.google.common.collect.ImmutableList;
import com.google.common.collect.Iterables; import com.google.common.collect.Iterables;
import google.registry.flows.EppException; import google.registry.flows.EppException;
import google.registry.flows.EppException.ReadOnlyModeEppException; import google.registry.flows.EppException.ReadOnlyModeEppException;
import google.registry.flows.FlowUtils.NotLoggedInException;
import google.registry.flows.ResourceFlowUtils.BadAuthInfoForResourceException; import google.registry.flows.ResourceFlowUtils.BadAuthInfoForResourceException;
import google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException; import google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException;
import google.registry.flows.exceptions.AlreadyPendingTransferException; import google.registry.flows.exceptions.AlreadyPendingTransferException;
@ -153,6 +154,13 @@ class ContactTransferRequestFlowTest
runFlow(); runFlow();
} }
@TestOfyAndSql
void testNotLoggedIn() {
sessionMetadata.setRegistrarId(null);
EppException thrown = assertThrows(NotLoggedInException.class, this::runFlow);
assertAboutEppExceptions().that(thrown).marshalsToXml();
}
@TestOfyAndSql @TestOfyAndSql
void testDryRun() throws Exception { void testDryRun() throws Exception {
setEppInput("contact_transfer_request.xml"); setEppInput("contact_transfer_request.xml");

View file

@ -28,6 +28,7 @@ import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet; import com.google.common.collect.ImmutableSet;
import google.registry.flows.EppException; import google.registry.flows.EppException;
import google.registry.flows.EppException.ReadOnlyModeEppException; import google.registry.flows.EppException.ReadOnlyModeEppException;
import google.registry.flows.FlowUtils.NotLoggedInException;
import google.registry.flows.ResourceFlowTestCase; import google.registry.flows.ResourceFlowTestCase;
import google.registry.flows.ResourceFlowUtils.AddRemoveSameValueException; import google.registry.flows.ResourceFlowUtils.AddRemoveSameValueException;
import google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException; import google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException;
@ -79,6 +80,13 @@ class ContactUpdateFlowTest extends ResourceFlowTestCase<ContactUpdateFlow, Cont
assertLastHistoryContainsResource(contact); assertLastHistoryContainsResource(contact);
} }
@TestOfyAndSql
void testNotLoggedIn() {
sessionMetadata.setRegistrarId(null);
EppException thrown = assertThrows(NotLoggedInException.class, this::runFlow);
assertAboutEppExceptions().that(thrown).marshalsToXml();
}
@TestOfyAndSql @TestOfyAndSql
void testDryRun() throws Exception { void testDryRun() throws Exception {
persistActiveContact(getUniqueIdFromCommand()); persistActiveContact(getUniqueIdFromCommand());

View file

@ -40,6 +40,7 @@ import com.google.common.collect.ImmutableSortedMap;
import com.google.common.collect.Ordering; import com.google.common.collect.Ordering;
import com.googlecode.objectify.Key; import com.googlecode.objectify.Key;
import google.registry.flows.EppException; import google.registry.flows.EppException;
import google.registry.flows.FlowUtils.NotLoggedInException;
import google.registry.flows.FlowUtils.UnknownCurrencyEppException; import google.registry.flows.FlowUtils.UnknownCurrencyEppException;
import google.registry.flows.ResourceCheckFlowTestCase; import google.registry.flows.ResourceCheckFlowTestCase;
import google.registry.flows.domain.DomainCheckFlow.OnlyCheckedNamesCanBeFeeCheckedException; import google.registry.flows.domain.DomainCheckFlow.OnlyCheckedNamesCanBeFeeCheckedException;
@ -122,6 +123,13 @@ class DomainCheckFlowTest extends ResourceCheckFlowTestCase<DomainCheckFlow, Dom
persistResource(Registry.get("tld").asBuilder().setReservedLists(createReservedList()).build()); persistResource(Registry.get("tld").asBuilder().setReservedLists(createReservedList()).build());
} }
@TestOfyAndSql
void testNotLoggedIn() {
sessionMetadata.setRegistrarId(null);
EppException thrown = assertThrows(NotLoggedInException.class, this::runFlow);
assertAboutEppExceptions().that(thrown).marshalsToXml();
}
@TestOfyAndSql @TestOfyAndSql
void testSuccess_nothingExists() throws Exception { void testSuccess_nothingExists() throws Exception {
doCheckTest( doCheckTest(

View file

@ -26,6 +26,7 @@ import static org.junit.jupiter.api.Assertions.assertThrows;
import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet; import com.google.common.collect.ImmutableSet;
import google.registry.flows.EppException; import google.registry.flows.EppException;
import google.registry.flows.FlowUtils.NotLoggedInException;
import google.registry.flows.ResourceFlowTestCase; import google.registry.flows.ResourceFlowTestCase;
import google.registry.flows.domain.DomainClaimsCheckFlow.DomainClaimsCheckNotAllowedWithAllocationTokens; import google.registry.flows.domain.DomainClaimsCheckFlow.DomainClaimsCheckNotAllowedWithAllocationTokens;
import google.registry.flows.domain.DomainFlowUtils.BadCommandForRegistryPhaseException; import google.registry.flows.domain.DomainFlowUtils.BadCommandForRegistryPhaseException;
@ -68,6 +69,13 @@ public class DomainClaimsCheckFlowTest
runFlowAssertResponse(loadFile(expectedXmlFilename)); runFlowAssertResponse(loadFile(expectedXmlFilename));
} }
@TestOfyAndSql
void testNotLoggedIn() {
sessionMetadata.setRegistrarId(null);
EppException thrown = assertThrows(NotLoggedInException.class, this::runFlow);
assertAboutEppExceptions().that(thrown).marshalsToXml();
}
@TestOfyAndSql @TestOfyAndSql
void testSuccess_noClaims() throws Exception { void testSuccess_noClaims() throws Exception {
doSuccessfulTest("domain_check_claims_response_none.xml"); doSuccessfulTest("domain_check_claims_response_none.xml");

View file

@ -76,6 +76,7 @@ import google.registry.flows.EppException.ReadOnlyModeEppException;
import google.registry.flows.EppException.UnimplementedExtensionException; import google.registry.flows.EppException.UnimplementedExtensionException;
import google.registry.flows.EppRequestSource; import google.registry.flows.EppRequestSource;
import google.registry.flows.ExtensionManager.UndeclaredServiceExtensionException; import google.registry.flows.ExtensionManager.UndeclaredServiceExtensionException;
import google.registry.flows.FlowUtils.NotLoggedInException;
import google.registry.flows.FlowUtils.UnknownCurrencyEppException; import google.registry.flows.FlowUtils.UnknownCurrencyEppException;
import google.registry.flows.ResourceFlowTestCase; import google.registry.flows.ResourceFlowTestCase;
import google.registry.flows.domain.DomainCreateFlow.AnchorTenantCreatePeriodException; import google.registry.flows.domain.DomainCreateFlow.AnchorTenantCreatePeriodException;
@ -417,6 +418,13 @@ class DomainCreateFlowTest extends ResourceFlowTestCase<DomainCreateFlow, Domain
doSuccessfulTest("tld"); doSuccessfulTest("tld");
} }
@TestOfyAndSql
void testNotLoggedIn() {
sessionMetadata.setRegistrarId(null);
EppException thrown = assertThrows(NotLoggedInException.class, this::runFlow);
assertAboutEppExceptions().that(thrown).marshalsToXml();
}
@TestOfyAndSql @TestOfyAndSql
void testDryRun() throws Exception { void testDryRun() throws Exception {
persistContactsAndHosts(); persistContactsAndHosts();

View file

@ -71,6 +71,7 @@ import google.registry.flows.EppException;
import google.registry.flows.EppException.ReadOnlyModeEppException; import google.registry.flows.EppException.ReadOnlyModeEppException;
import google.registry.flows.EppException.UnimplementedExtensionException; import google.registry.flows.EppException.UnimplementedExtensionException;
import google.registry.flows.EppRequestSource; import google.registry.flows.EppRequestSource;
import google.registry.flows.FlowUtils.NotLoggedInException;
import google.registry.flows.ResourceFlowTestCase; import google.registry.flows.ResourceFlowTestCase;
import google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException; import google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException;
import google.registry.flows.ResourceFlowUtils.ResourceNotOwnedException; import google.registry.flows.ResourceFlowUtils.ResourceNotOwnedException;
@ -294,6 +295,13 @@ class DomainDeleteFlowTest extends ResourceFlowTestCase<DomainDeleteFlow, Domain
.setParent(earlierHistoryEntry); .setParent(earlierHistoryEntry);
} }
@TestOfyAndSql
void testNotLoggedIn() {
sessionMetadata.setRegistrarId(null);
EppException thrown = assertThrows(NotLoggedInException.class, this::runFlow);
assertAboutEppExceptions().that(thrown).marshalsToXml();
}
@TestOfyAndSql @TestOfyAndSql
void testSuccess_asyncActionsAreEnqueued() throws Exception { void testSuccess_asyncActionsAreEnqueued() throws Exception {
persistResource( persistResource(

View file

@ -36,6 +36,7 @@ import com.google.common.collect.ImmutableSet;
import com.google.common.collect.ImmutableSortedMap; import com.google.common.collect.ImmutableSortedMap;
import com.googlecode.objectify.Key; import com.googlecode.objectify.Key;
import google.registry.flows.EppException; import google.registry.flows.EppException;
import google.registry.flows.FlowUtils.NotLoggedInException;
import google.registry.flows.FlowUtils.UnknownCurrencyEppException; import google.registry.flows.FlowUtils.UnknownCurrencyEppException;
import google.registry.flows.ResourceFlowTestCase; import google.registry.flows.ResourceFlowTestCase;
import google.registry.flows.ResourceFlowUtils.BadAuthInfoForResourceException; import google.registry.flows.ResourceFlowUtils.BadAuthInfoForResourceException;
@ -206,6 +207,13 @@ class DomainInfoFlowTest extends ResourceFlowTestCase<DomainInfoFlow, DomainBase
doSuccessfulTest(expectedXmlFilename, true); doSuccessfulTest(expectedXmlFilename, true);
} }
@TestOfyAndSql
void testNotLoggedIn() {
sessionMetadata.setRegistrarId(null);
EppException thrown = assertThrows(NotLoggedInException.class, this::runFlow);
assertAboutEppExceptions().that(thrown).marshalsToXml();
}
@TestOfyAndSql @TestOfyAndSql
void testSuccess_allHosts() throws Exception { void testSuccess_allHosts() throws Exception {
doSuccessfulTest("domain_info_response.xml"); doSuccessfulTest("domain_info_response.xml");

View file

@ -44,6 +44,7 @@ import com.google.common.collect.ImmutableSortedMap;
import google.registry.flows.EppException; import google.registry.flows.EppException;
import google.registry.flows.EppException.ReadOnlyModeEppException; import google.registry.flows.EppException.ReadOnlyModeEppException;
import google.registry.flows.EppRequestSource; import google.registry.flows.EppRequestSource;
import google.registry.flows.FlowUtils.NotLoggedInException;
import google.registry.flows.FlowUtils.UnknownCurrencyEppException; import google.registry.flows.FlowUtils.UnknownCurrencyEppException;
import google.registry.flows.ResourceFlowTestCase; import google.registry.flows.ResourceFlowTestCase;
import google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException; import google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException;
@ -278,6 +279,13 @@ class DomainRenewFlowTest extends ResourceFlowTestCase<DomainRenewFlow, DomainBa
renewBillingEvent)); renewBillingEvent));
} }
@TestOfyAndSql
void testNotLoggedIn() {
sessionMetadata.setRegistrarId(null);
EppException thrown = assertThrows(NotLoggedInException.class, this::runFlow);
assertAboutEppExceptions().that(thrown).marshalsToXml();
}
@TestOfyAndSql @TestOfyAndSql
void testDryRun() throws Exception { void testDryRun() throws Exception {
persistDomain(); persistDomain();

View file

@ -43,6 +43,7 @@ import com.google.common.collect.ImmutableSortedMap;
import google.registry.flows.EppException; import google.registry.flows.EppException;
import google.registry.flows.EppException.ReadOnlyModeEppException; import google.registry.flows.EppException.ReadOnlyModeEppException;
import google.registry.flows.EppException.UnimplementedExtensionException; import google.registry.flows.EppException.UnimplementedExtensionException;
import google.registry.flows.FlowUtils.NotLoggedInException;
import google.registry.flows.FlowUtils.UnknownCurrencyEppException; import google.registry.flows.FlowUtils.UnknownCurrencyEppException;
import google.registry.flows.ResourceFlowTestCase; import google.registry.flows.ResourceFlowTestCase;
import google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException; import google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException;
@ -148,6 +149,13 @@ class DomainRestoreRequestFlowTest
clock.advanceOneMilli(); clock.advanceOneMilli();
} }
@TestOfyAndSql
void testNotLoggedIn() {
sessionMetadata.setRegistrarId(null);
EppException thrown = assertThrows(NotLoggedInException.class, this::runFlow);
assertAboutEppExceptions().that(thrown).marshalsToXml();
}
@TestOfyAndSql @TestOfyAndSql
void testDryRun() throws Exception { void testDryRun() throws Exception {
setEppInput("domain_update_restore_request.xml", ImmutableMap.of("DOMAIN", "example.tld")); setEppInput("domain_update_restore_request.xml", ImmutableMap.of("DOMAIN", "example.tld"));

View file

@ -44,6 +44,7 @@ import com.google.common.collect.Ordering;
import com.google.common.collect.Streams; import com.google.common.collect.Streams;
import google.registry.flows.EppException; import google.registry.flows.EppException;
import google.registry.flows.EppException.ReadOnlyModeEppException; import google.registry.flows.EppException.ReadOnlyModeEppException;
import google.registry.flows.FlowUtils.NotLoggedInException;
import google.registry.flows.ResourceFlowUtils.BadAuthInfoForResourceException; import google.registry.flows.ResourceFlowUtils.BadAuthInfoForResourceException;
import google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException; import google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException;
import google.registry.flows.ResourceFlowUtils.ResourceNotOwnedException; import google.registry.flows.ResourceFlowUtils.ResourceNotOwnedException;
@ -353,6 +354,13 @@ class DomainTransferApproveFlowTest
runFlow(); runFlow();
} }
@TestOfyAndSql
void testNotLoggedIn() {
sessionMetadata.setRegistrarId(null);
EppException thrown = assertThrows(NotLoggedInException.class, this::runFlow);
assertAboutEppExceptions().that(thrown).marshalsToXml();
}
@TestOfyAndSql @TestOfyAndSql
void testDryRun() throws Exception { void testDryRun() throws Exception {
setEppLoader("domain_transfer_approve.xml"); setEppLoader("domain_transfer_approve.xml");

View file

@ -38,6 +38,7 @@ import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet; import com.google.common.collect.ImmutableSet;
import google.registry.flows.EppException; import google.registry.flows.EppException;
import google.registry.flows.EppException.ReadOnlyModeEppException; import google.registry.flows.EppException.ReadOnlyModeEppException;
import google.registry.flows.FlowUtils.NotLoggedInException;
import google.registry.flows.ResourceFlowUtils.BadAuthInfoForResourceException; import google.registry.flows.ResourceFlowUtils.BadAuthInfoForResourceException;
import google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException; import google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException;
import google.registry.flows.domain.DomainFlowUtils.NotAuthorizedForTldException; import google.registry.flows.domain.DomainFlowUtils.NotAuthorizedForTldException;
@ -205,6 +206,13 @@ class DomainTransferCancelFlowTest
runFlow(); runFlow();
} }
@TestOfyAndSql
void testNotLoggedIn() {
sessionMetadata.setRegistrarId(null);
EppException thrown = assertThrows(NotLoggedInException.class, this::runFlow);
assertAboutEppExceptions().that(thrown).marshalsToXml();
}
@TestOfyAndSql @TestOfyAndSql
void testDryRun() throws Exception { void testDryRun() throws Exception {
setEppInput("domain_transfer_cancel.xml"); setEppInput("domain_transfer_cancel.xml");

View file

@ -24,6 +24,7 @@ import static google.registry.testing.EppExceptionSubject.assertAboutEppExceptio
import static org.junit.jupiter.api.Assertions.assertThrows; import static org.junit.jupiter.api.Assertions.assertThrows;
import google.registry.flows.EppException; import google.registry.flows.EppException;
import google.registry.flows.FlowUtils.NotLoggedInException;
import google.registry.flows.ResourceFlowUtils.BadAuthInfoForResourceException; import google.registry.flows.ResourceFlowUtils.BadAuthInfoForResourceException;
import google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException; import google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException;
import google.registry.flows.exceptions.NoTransferHistoryToQueryException; import google.registry.flows.exceptions.NoTransferHistoryToQueryException;
@ -88,6 +89,13 @@ class DomainTransferQueryFlowTest
runFlow(); runFlow();
} }
@TestOfyAndSql
void testNotLoggedIn() {
sessionMetadata.setRegistrarId(null);
EppException thrown = assertThrows(NotLoggedInException.class, this::runFlow);
assertAboutEppExceptions().that(thrown).marshalsToXml();
}
@TestOfyAndSql @TestOfyAndSql
void testSuccess() throws Exception { void testSuccess() throws Exception {
doSuccessfulTest("domain_transfer_query.xml", "domain_transfer_query_response.xml", 1); doSuccessfulTest("domain_transfer_query.xml", "domain_transfer_query_response.xml", 1);

View file

@ -38,6 +38,7 @@ import static org.junit.jupiter.api.Assertions.assertThrows;
import com.google.common.collect.ImmutableSet; import com.google.common.collect.ImmutableSet;
import google.registry.flows.EppException; import google.registry.flows.EppException;
import google.registry.flows.EppException.ReadOnlyModeEppException; import google.registry.flows.EppException.ReadOnlyModeEppException;
import google.registry.flows.FlowUtils.NotLoggedInException;
import google.registry.flows.ResourceFlowUtils.BadAuthInfoForResourceException; import google.registry.flows.ResourceFlowUtils.BadAuthInfoForResourceException;
import google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException; import google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException;
import google.registry.flows.ResourceFlowUtils.ResourceNotOwnedException; import google.registry.flows.ResourceFlowUtils.ResourceNotOwnedException;
@ -165,6 +166,13 @@ class DomainTransferRejectFlowTest
runFlow(); runFlow();
} }
@TestOfyAndSql
void testNotLoggedIn() {
sessionMetadata.setRegistrarId(null);
EppException thrown = assertThrows(NotLoggedInException.class, this::runFlow);
assertAboutEppExceptions().that(thrown).marshalsToXml();
}
@TestOfyAndSql @TestOfyAndSql
void testSuccess() throws Exception { void testSuccess() throws Exception {
doSuccessfulTest("domain_transfer_reject.xml", "domain_transfer_reject_response.xml"); doSuccessfulTest("domain_transfer_reject.xml", "domain_transfer_reject_response.xml");

View file

@ -62,6 +62,7 @@ import google.registry.batch.ResaveEntityAction;
import google.registry.flows.EppException; import google.registry.flows.EppException;
import google.registry.flows.EppException.ReadOnlyModeEppException; import google.registry.flows.EppException.ReadOnlyModeEppException;
import google.registry.flows.EppRequestSource; import google.registry.flows.EppRequestSource;
import google.registry.flows.FlowUtils.NotLoggedInException;
import google.registry.flows.FlowUtils.UnknownCurrencyEppException; import google.registry.flows.FlowUtils.UnknownCurrencyEppException;
import google.registry.flows.ResourceFlowUtils.BadAuthInfoForResourceException; import google.registry.flows.ResourceFlowUtils.BadAuthInfoForResourceException;
import google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException; import google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException;
@ -649,6 +650,13 @@ class DomainTransferRequestFlowTest
runTest(commandFilename, UserPrivileges.NORMAL, ImmutableMap.of()); runTest(commandFilename, UserPrivileges.NORMAL, ImmutableMap.of());
} }
@TestOfyAndSql
void testNotLoggedIn() {
sessionMetadata.setRegistrarId(null);
EppException thrown = assertThrows(NotLoggedInException.class, this::runFlow);
assertAboutEppExceptions().that(thrown).marshalsToXml();
}
@TestOfyAndSql @TestOfyAndSql
void testDryRun() throws Exception { void testDryRun() throws Exception {
setupDomain("example", "tld"); setupDomain("example", "tld");

View file

@ -62,6 +62,7 @@ import google.registry.flows.EppException;
import google.registry.flows.EppException.ReadOnlyModeEppException; import google.registry.flows.EppException.ReadOnlyModeEppException;
import google.registry.flows.EppException.UnimplementedExtensionException; import google.registry.flows.EppException.UnimplementedExtensionException;
import google.registry.flows.EppRequestSource; import google.registry.flows.EppRequestSource;
import google.registry.flows.FlowUtils.NotLoggedInException;
import google.registry.flows.ResourceFlowTestCase; import google.registry.flows.ResourceFlowTestCase;
import google.registry.flows.ResourceFlowUtils.AddRemoveSameValueException; import google.registry.flows.ResourceFlowUtils.AddRemoveSameValueException;
import google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException; import google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException;
@ -227,6 +228,13 @@ class DomainUpdateFlowTest extends ResourceFlowTestCase<DomainUpdateFlow, Domain
assertLastHistoryContainsResource(reloadResourceByForeignKey()); assertLastHistoryContainsResource(reloadResourceByForeignKey());
} }
@TestOfyAndSql
void testNotLoggedIn() {
sessionMetadata.setRegistrarId(null);
EppException thrown = assertThrows(NotLoggedInException.class, this::runFlow);
assertAboutEppExceptions().that(thrown).marshalsToXml();
}
@TestOfyAndSql @TestOfyAndSql
void testDryRun() throws Exception { void testDryRun() throws Exception {
persistReferencedEntities(); persistReferencedEntities();

View file

@ -21,6 +21,7 @@ import static google.registry.testing.EppExceptionSubject.assertAboutEppExceptio
import static org.junit.jupiter.api.Assertions.assertThrows; import static org.junit.jupiter.api.Assertions.assertThrows;
import google.registry.flows.EppException; import google.registry.flows.EppException;
import google.registry.flows.FlowUtils.NotLoggedInException;
import google.registry.flows.ResourceCheckFlowTestCase; import google.registry.flows.ResourceCheckFlowTestCase;
import google.registry.flows.exceptions.TooManyResourceChecksException; import google.registry.flows.exceptions.TooManyResourceChecksException;
import google.registry.model.host.HostResource; import google.registry.model.host.HostResource;
@ -42,6 +43,13 @@ class HostCheckFlowTest extends ResourceCheckFlowTestCase<HostCheckFlow, HostRes
setEppInput("host_check.xml"); setEppInput("host_check.xml");
} }
@TestOfyAndSql
void testNotLoggedIn() {
sessionMetadata.setRegistrarId(null);
EppException thrown = assertThrows(NotLoggedInException.class, this::runFlow);
assertAboutEppExceptions().that(thrown).marshalsToXml();
}
@TestOfyAndSql @TestOfyAndSql
void testNothingExists() throws Exception { void testNothingExists() throws Exception {
// These ids come from the check xml. // These ids come from the check xml.

View file

@ -38,6 +38,7 @@ import com.google.common.collect.ImmutableSet;
import google.registry.flows.EppException; import google.registry.flows.EppException;
import google.registry.flows.EppException.ReadOnlyModeEppException; import google.registry.flows.EppException.ReadOnlyModeEppException;
import google.registry.flows.FlowUtils.IpAddressVersionMismatchException; import google.registry.flows.FlowUtils.IpAddressVersionMismatchException;
import google.registry.flows.FlowUtils.NotLoggedInException;
import google.registry.flows.ResourceFlowTestCase; import google.registry.flows.ResourceFlowTestCase;
import google.registry.flows.exceptions.ResourceAlreadyExistsForThisClientException; import google.registry.flows.exceptions.ResourceAlreadyExistsForThisClientException;
import google.registry.flows.exceptions.ResourceCreateContentionException; import google.registry.flows.exceptions.ResourceCreateContentionException;
@ -117,6 +118,13 @@ class HostCreateFlowTest extends ResourceFlowTestCase<HostCreateFlow, HostResour
doSuccessfulTest(); doSuccessfulTest();
} }
@TestOfyAndSql
void testNotLoggedIn() {
sessionMetadata.setRegistrarId(null);
EppException thrown = assertThrows(NotLoggedInException.class, this::runFlow);
assertAboutEppExceptions().that(thrown).marshalsToXml();
}
@TestOfyAndSql @TestOfyAndSql
void testDryRun() throws Exception { void testDryRun() throws Exception {
dryRunFlowAssertResponse(loadFile("host_create_response.xml")); dryRunFlowAssertResponse(loadFile("host_create_response.xml"));

View file

@ -36,6 +36,7 @@ import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet; import com.google.common.collect.ImmutableSet;
import google.registry.flows.EppException; import google.registry.flows.EppException;
import google.registry.flows.EppException.ReadOnlyModeEppException; import google.registry.flows.EppException.ReadOnlyModeEppException;
import google.registry.flows.FlowUtils.NotLoggedInException;
import google.registry.flows.ResourceFlowTestCase; import google.registry.flows.ResourceFlowTestCase;
import google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException; import google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException;
import google.registry.flows.ResourceFlowUtils.ResourceNotOwnedException; import google.registry.flows.ResourceFlowUtils.ResourceNotOwnedException;
@ -75,6 +76,13 @@ class HostDeleteFlowTest extends ResourceFlowTestCase<HostDeleteFlow, HostResour
setEppInput("host_delete.xml", ImmutableMap.of("HOSTNAME", "ns1.example.tld")); setEppInput("host_delete.xml", ImmutableMap.of("HOSTNAME", "ns1.example.tld"));
} }
@TestOfyAndSql
void testNotLoggedIn() {
sessionMetadata.setRegistrarId(null);
EppException thrown = assertThrows(NotLoggedInException.class, this::runFlow);
assertAboutEppExceptions().that(thrown).marshalsToXml();
}
@TestOfyAndSql @TestOfyAndSql
void testDryRun() throws Exception { void testDryRun() throws Exception {
persistActiveHost("ns1.example.tld"); persistActiveHost("ns1.example.tld");

View file

@ -28,6 +28,7 @@ import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet; import com.google.common.collect.ImmutableSet;
import com.google.common.net.InetAddresses; import com.google.common.net.InetAddresses;
import google.registry.flows.EppException; import google.registry.flows.EppException;
import google.registry.flows.FlowUtils.NotLoggedInException;
import google.registry.flows.ResourceFlowTestCase; import google.registry.flows.ResourceFlowTestCase;
import google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException; import google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException;
import google.registry.flows.host.HostFlowUtils.HostNameNotLowerCaseException; import google.registry.flows.host.HostFlowUtils.HostNameNotLowerCaseException;
@ -83,6 +84,13 @@ class HostInfoFlowTest extends ResourceFlowTestCase<HostInfoFlow, HostResource>
.build()); .build());
} }
@TestOfyAndSql
void testNotLoggedIn() {
sessionMetadata.setRegistrarId(null);
EppException thrown = assertThrows(NotLoggedInException.class, this::runFlow);
assertAboutEppExceptions().that(thrown).marshalsToXml();
}
@TestOfyAndSql @TestOfyAndSql
void testSuccess() throws Exception { void testSuccess() throws Exception {
persistHostResource(); persistHostResource();

View file

@ -49,6 +49,7 @@ import com.google.common.net.InetAddresses;
import google.registry.flows.EppException; import google.registry.flows.EppException;
import google.registry.flows.EppException.ReadOnlyModeEppException; import google.registry.flows.EppException.ReadOnlyModeEppException;
import google.registry.flows.EppRequestSource; import google.registry.flows.EppRequestSource;
import google.registry.flows.FlowUtils.NotLoggedInException;
import google.registry.flows.ResourceFlowTestCase; import google.registry.flows.ResourceFlowTestCase;
import google.registry.flows.ResourceFlowUtils.AddRemoveSameValueException; import google.registry.flows.ResourceFlowUtils.AddRemoveSameValueException;
import google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException; import google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException;
@ -145,6 +146,13 @@ class HostUpdateFlowTest extends ResourceFlowTestCase<HostUpdateFlow, HostResour
return getUniqueIdFromCommand(); return getUniqueIdFromCommand();
} }
@TestOfyAndSql
void testNotLoggedIn() {
sessionMetadata.setRegistrarId(null);
EppException thrown = assertThrows(NotLoggedInException.class, this::runFlow);
assertAboutEppExceptions().that(thrown).marshalsToXml();
}
@TestOfyAndSql @TestOfyAndSql
void testDryRun() throws Exception { void testDryRun() throws Exception {
createTld("tld"); createTld("tld");

View file

@ -10,6 +10,8 @@ This flows can check the existence of multiple contacts simultaneously.
### Errors ### Errors
* 2002
* Registrar is not logged in.
* 2306 * 2306
* Too many resource checks requested in one check command. * Too many resource checks requested in one check command.
@ -21,6 +23,8 @@ An EPP flow that creates a new contact.
### Errors ### Errors
* 2002
* Registrar is not logged in.
* 2005 * 2005
* Internationalized postal infos can only contain ASCII characters. * Internationalized postal infos can only contain ASCII characters.
* 2302 * 2302
@ -45,6 +49,8 @@ or failure message when the process is complete.
### Errors ### Errors
* 2002
* Registrar is not logged in.
* 2201 * 2201
* The specified resource belongs to another client. * The specified resource belongs to another client.
* 2303 * 2303
@ -70,6 +76,8 @@ registrar that owns the contact or to a registrar that already supplied it.
### Errors ### Errors
* 2002
* Registrar is not logged in.
* 2201 * 2201
* The specified resource belongs to another client. * The specified resource belongs to another client.
* 2303 * 2303
@ -89,6 +97,8 @@ transfer request, which then becomes effective immediately.
### Errors ### Errors
* 2002
* Registrar is not logged in.
* 2201 * 2201
* The specified resource belongs to another client. * The specified resource belongs to another client.
* 2202 * 2202
@ -114,6 +124,8 @@ request.
### Errors ### Errors
* 2002
* Registrar is not logged in.
* 2201 * 2201
* Registrar is not the initiator of this transfer. * Registrar is not the initiator of this transfer.
* 2202 * 2202
@ -142,6 +154,7 @@ transfer period expiring.
### Errors ### Errors
* 2002 * 2002
* Registrar is not logged in.
* Object has no transfer history. * Object has no transfer history.
* 2201 * 2201
* Registrar is not authorized to view transfer status. * Registrar is not authorized to view transfer status.
@ -163,6 +176,8 @@ that window, this flow allows the losing client to reject the transfer request.
### Errors ### Errors
* 2002
* Registrar is not logged in.
* 2201 * 2201
* The specified resource belongs to another client. * The specified resource belongs to another client.
* 2202 * 2202
@ -189,6 +204,7 @@ or rejected, and the gaining registrar can also cancel the transfer request.
### Errors ### Errors
* 2002 * 2002
* Registrar is not logged in.
* Registrar already sponsors the object of this transfer request. * Registrar already sponsors the object of this transfer request.
* 2201 * 2201
* Authorization info is required to request a transfer. * Authorization info is required to request a transfer.
@ -211,6 +227,8 @@ An EPP flow that updates a contact.
### Errors ### Errors
* 2002
* Registrar is not logged in.
* 2004 * 2004
* The specified status value cannot be set by clients. * The specified status value cannot be set by clients.
* 2005 * 2005
@ -241,6 +259,7 @@ information.
### Errors ### Errors
* 2002 * 2002
* Registrar is not logged in.
* Command is not allowed in the current registry phase. * Command is not allowed in the current registry phase.
* 2004 * 2004
* Unknown currency. * Unknown currency.
@ -279,6 +298,7 @@ An EPP flow that checks whether domain labels are trademarked.
### Errors ### Errors
* 2002 * 2002
* Registrar is not logged in.
* Command is not allowed in the current registry phase. * Command is not allowed in the current registry phase.
* Claims checks are not allowed with allocation tokens. * Claims checks are not allowed with allocation tokens.
* 2004 * 2004
@ -300,6 +320,7 @@ An EPP flow that creates a new domain resource.
* 2002 * 2002
* Service extension(s) must be declared at login. * Service extension(s) must be declared at login.
* Registrar is not logged in.
* The current registry phase allows registrations only with signed marks. * The current registry phase allows registrations only with signed marks.
* The current registry phase does not allow for general registrations. * The current registry phase does not allow for general registrations.
* Signed marks are only allowed during sunrise. * Signed marks are only allowed during sunrise.
@ -397,6 +418,7 @@ An EPP flow that deletes a domain.
### Errors ### Errors
* 2002 * 2002
* Registrar is not logged in.
* Command is not allowed in the current registry phase. * Command is not allowed in the current registry phase.
* 2103 * 2103
* Specified extension is not implemented. * Specified extension is not implemented.
@ -426,6 +448,8 @@ information about the domain.
### Errors ### Errors
* 2002
* Registrar is not logged in.
* 2004 * 2004
* Unknown currency. * Unknown currency.
* 2202 * 2202
@ -457,6 +481,8 @@ comes in at the exact millisecond that the domain would have expired.
### Errors ### Errors
* 2002
* Registrar is not logged in.
* 2003 * 2003
* Fees must be explicitly acknowledged when performing any operations on a * Fees must be explicitly acknowledged when performing any operations on a
premium name. premium name.
@ -515,6 +541,7 @@ regardless of what the original expiration time was.
### Errors ### Errors
* 2002 * 2002
* Registrar is not logged in.
* Restore command cannot have other changes specified. * Restore command cannot have other changes specified.
* 2003 * 2003
* Fees must be explicitly acknowledged when performing any operations on a * Fees must be explicitly acknowledged when performing any operations on a
@ -566,6 +593,8 @@ replaced with new ones with the correct approval time.
### Errors ### Errors
* 2002
* Registrar is not logged in.
* 2201 * 2201
* The specified resource belongs to another client. * The specified resource belongs to another client.
* Registrar is not authorized to access this TLD. * Registrar is not authorized to access this TLD.
@ -596,6 +625,8 @@ transfer period passed. In this flow, those speculative objects are deleted.
### Errors ### Errors
* 2002
* Registrar is not logged in.
* 2201 * 2201
* Registrar is not the initiator of this transfer. * Registrar is not the initiator of this transfer.
* Registrar is not authorized to access this TLD. * Registrar is not authorized to access this TLD.
@ -625,6 +656,7 @@ transfer period expiring.
### Errors ### Errors
* 2002 * 2002
* Registrar is not logged in.
* Object has no transfer history. * Object has no transfer history.
* 2201 * 2201
* Registrar is not authorized to view transfer status. * Registrar is not authorized to view transfer status.
@ -650,6 +682,8 @@ transfer period passed. In this flow, those speculative objects are deleted.
### Errors ### Errors
* 2002
* Registrar is not logged in.
* 2201 * 2201
* The specified resource belongs to another client. * The specified resource belongs to another client.
* Registrar is not authorized to access this TLD. * Registrar is not authorized to access this TLD.
@ -684,6 +718,7 @@ new ones with the correct approval time).
### Errors ### Errors
* 2002 * 2002
* Registrar is not logged in.
* Registrar already sponsors the object of this transfer request. * Registrar already sponsors the object of this transfer request.
* 2003 * 2003
* Fees must be explicitly acknowledged when performing any operations on a * Fees must be explicitly acknowledged when performing any operations on a
@ -739,6 +774,8 @@ statuses are updated at once.
### Errors ### Errors
* 2002
* Registrar is not logged in.
* 2003 * 2003
* At least one of 'add' or 'rem' is required on a secDNS update. * At least one of 'add' or 'rem' is required on a secDNS update.
* Fees must be explicitly acknowledged when performing an operation which * Fees must be explicitly acknowledged when performing an operation which
@ -801,6 +838,8 @@ This flows can check the existence of multiple hosts simultaneously.
### Errors ### Errors
* 2002
* Registrar is not logged in.
* 2306 * 2306
* Too many resource checks requested in one check command. * Too many resource checks requested in one check command.
@ -818,6 +857,8 @@ allows creating a host name, and if necessary enqueues tasks to update DNS.
### Errors ### Errors
* 2002
* Registrar is not logged in.
* 2003 * 2003
* Subordinate hosts must have an ip address. * Subordinate hosts must have an ip address.
* 2004 * 2004
@ -855,6 +896,8 @@ or failure message when the process is complete.
### Errors ### Errors
* 2002
* Registrar is not logged in.
* 2005 * 2005
* Host names must be in lower-case. * Host names must be in lower-case.
* Host names must be in normalized format. * Host names must be in normalized format.
@ -882,6 +925,8 @@ see the information for any host.
### Errors ### Errors
* 2002
* Registrar is not logged in.
* 2005 * 2005
* Host names must be in lower-case. * Host names must be in lower-case.
* Host names must be in normalized format. * Host names must be in normalized format.
@ -908,6 +953,8 @@ are enqueued to update DNS accordingly.
### Errors ### Errors
* 2002
* Registrar is not logged in.
* 2004 * 2004
* The specified status value cannot be set by clients. * The specified status value cannot be set by clients.
* Host names are limited to 253 characters. * Host names are limited to 253 characters.