From 05e36f378b650c3a2fd7249a379592ad728de67c Mon Sep 17 00:00:00 2001 From: gbrodman Date: Tue, 30 Nov 2021 15:00:05 -0500 Subject: [PATCH] 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. --- .../flows/contact/ContactCheckFlow.java | 1 + .../flows/contact/ContactCreateFlow.java | 1 + .../flows/contact/ContactDeleteFlow.java | 1 + .../flows/contact/ContactInfoFlow.java | 1 + .../contact/ContactTransferApproveFlow.java | 1 + .../contact/ContactTransferCancelFlow.java | 1 + .../contact/ContactTransferQueryFlow.java | 7 +-- .../contact/ContactTransferRejectFlow.java | 1 + .../contact/ContactTransferRequestFlow.java | 1 + .../flows/contact/ContactUpdateFlow.java | 1 + .../flows/domain/DomainCheckFlow.java | 1 + .../flows/domain/DomainClaimsCheckFlow.java | 3 +- .../flows/domain/DomainCreateFlow.java | 1 + .../flows/domain/DomainDeleteFlow.java | 1 + .../registry/flows/domain/DomainInfoFlow.java | 1 + .../flows/domain/DomainRenewFlow.java | 1 + .../domain/DomainRestoreRequestFlow.java | 1 + .../domain/DomainTransferApproveFlow.java | 1 + .../domain/DomainTransferCancelFlow.java | 1 + .../flows/domain/DomainTransferQueryFlow.java | 7 +-- .../domain/DomainTransferRejectFlow.java | 1 + .../domain/DomainTransferRequestFlow.java | 1 + .../flows/domain/DomainUpdateFlow.java | 1 + .../registry/flows/host/HostCheckFlow.java | 1 + .../registry/flows/host/HostCreateFlow.java | 1 + .../registry/flows/host/HostDeleteFlow.java | 1 + .../registry/flows/host/HostInfoFlow.java | 1 + .../registry/flows/host/HostUpdateFlow.java | 1 + .../registry/flows/ResourceFlowTestCase.java | 11 ----- .../flows/contact/ContactCheckFlowTest.java | 8 ++++ .../flows/contact/ContactCreateFlowTest.java | 8 ++++ .../flows/contact/ContactDeleteFlowTest.java | 8 ++++ .../flows/contact/ContactInfoFlowTest.java | 9 ++++ .../ContactTransferApproveFlowTest.java | 8 ++++ .../ContactTransferCancelFlowTest.java | 8 ++++ .../contact/ContactTransferQueryFlowTest.java | 8 ++++ .../ContactTransferRejectFlowTest.java | 8 ++++ .../ContactTransferRequestFlowTest.java | 8 ++++ .../flows/contact/ContactUpdateFlowTest.java | 8 ++++ .../flows/domain/DomainCheckFlowTest.java | 8 ++++ .../domain/DomainClaimsCheckFlowTest.java | 8 ++++ .../flows/domain/DomainCreateFlowTest.java | 8 ++++ .../flows/domain/DomainDeleteFlowTest.java | 8 ++++ .../flows/domain/DomainInfoFlowTest.java | 8 ++++ .../flows/domain/DomainRenewFlowTest.java | 8 ++++ .../domain/DomainRestoreRequestFlowTest.java | 8 ++++ .../domain/DomainTransferApproveFlowTest.java | 8 ++++ .../domain/DomainTransferCancelFlowTest.java | 8 ++++ .../domain/DomainTransferQueryFlowTest.java | 8 ++++ .../domain/DomainTransferRejectFlowTest.java | 8 ++++ .../domain/DomainTransferRequestFlowTest.java | 8 ++++ .../flows/domain/DomainUpdateFlowTest.java | 8 ++++ .../flows/host/HostCheckFlowTest.java | 8 ++++ .../flows/host/HostCreateFlowTest.java | 8 ++++ .../flows/host/HostDeleteFlowTest.java | 8 ++++ .../registry/flows/host/HostInfoFlowTest.java | 8 ++++ .../flows/host/HostUpdateFlowTest.java | 8 ++++ docs/flows.md | 47 +++++++++++++++++++ 58 files changed, 307 insertions(+), 18 deletions(-) diff --git a/core/src/main/java/google/registry/flows/contact/ContactCheckFlow.java b/core/src/main/java/google/registry/flows/contact/ContactCheckFlow.java index 78db93ccc..64d0d5113 100644 --- a/core/src/main/java/google/registry/flows/contact/ContactCheckFlow.java +++ b/core/src/main/java/google/registry/flows/contact/ContactCheckFlow.java @@ -42,6 +42,7 @@ import javax.inject.Inject; *

This flows can check the existence of multiple contacts simultaneously. * * @error {@link google.registry.flows.exceptions.TooManyResourceChecksException} + * @error {@link google.registry.flows.FlowUtils.NotLoggedInException} */ @ReportingSpec(ActivityReportField.CONTACT_CHECK) public final class ContactCheckFlow implements Flow { diff --git a/core/src/main/java/google/registry/flows/contact/ContactCreateFlow.java b/core/src/main/java/google/registry/flows/contact/ContactCreateFlow.java index a249d9226..5df19aa41 100644 --- a/core/src/main/java/google/registry/flows/contact/ContactCreateFlow.java +++ b/core/src/main/java/google/registry/flows/contact/ContactCreateFlow.java @@ -51,6 +51,7 @@ import org.joda.time.DateTime; * An EPP flow that creates a new contact. * * @error {@link google.registry.flows.EppException.ReadOnlyModeEppException} + * @error {@link google.registry.flows.FlowUtils.NotLoggedInException} * @error {@link ResourceAlreadyExistsForThisClientException} * @error {@link ResourceCreateContentionException} * @error {@link ContactFlowUtils.BadInternationalizedPostalInfoException} diff --git a/core/src/main/java/google/registry/flows/contact/ContactDeleteFlow.java b/core/src/main/java/google/registry/flows/contact/ContactDeleteFlow.java index 6e7133368..ba3264a1b 100644 --- a/core/src/main/java/google/registry/flows/contact/ContactDeleteFlow.java +++ b/core/src/main/java/google/registry/flows/contact/ContactDeleteFlow.java @@ -61,6 +61,7 @@ import org.joda.time.DateTime; * with the success or failure message when the process is complete. * * @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.ResourceNotOwnedException} * @error {@link google.registry.flows.exceptions.ResourceStatusProhibitsOperationException} diff --git a/core/src/main/java/google/registry/flows/contact/ContactInfoFlow.java b/core/src/main/java/google/registry/flows/contact/ContactInfoFlow.java index 0c9b21a03..a1a465fa2 100644 --- a/core/src/main/java/google/registry/flows/contact/ContactInfoFlow.java +++ b/core/src/main/java/google/registry/flows/contact/ContactInfoFlow.java @@ -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 * 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.ResourceNotOwnedException} */ diff --git a/core/src/main/java/google/registry/flows/contact/ContactTransferApproveFlow.java b/core/src/main/java/google/registry/flows/contact/ContactTransferApproveFlow.java index 32cae77fd..6bfee950a 100644 --- a/core/src/main/java/google/registry/flows/contact/ContactTransferApproveFlow.java +++ b/core/src/main/java/google/registry/flows/contact/ContactTransferApproveFlow.java @@ -55,6 +55,7 @@ import org.joda.time.DateTime; * explicitly approve the transfer request, which then becomes effective immediately. * * @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.ResourceNotOwnedException} * @error {@link google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException} diff --git a/core/src/main/java/google/registry/flows/contact/ContactTransferCancelFlow.java b/core/src/main/java/google/registry/flows/contact/ContactTransferCancelFlow.java index 3c1cfcc24..f403c4aab 100644 --- a/core/src/main/java/google/registry/flows/contact/ContactTransferCancelFlow.java +++ b/core/src/main/java/google/registry/flows/contact/ContactTransferCancelFlow.java @@ -55,6 +55,7 @@ import org.joda.time.DateTime; * withdraw the transfer request. * * @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.ResourceDoesNotExistException} * @error {@link google.registry.flows.exceptions.NotPendingTransferException} diff --git a/core/src/main/java/google/registry/flows/contact/ContactTransferQueryFlow.java b/core/src/main/java/google/registry/flows/contact/ContactTransferQueryFlow.java index f991a2a8d..b800719d8 100644 --- a/core/src/main/java/google/registry/flows/contact/ContactTransferQueryFlow.java +++ b/core/src/main/java/google/registry/flows/contact/ContactTransferQueryFlow.java @@ -40,11 +40,12 @@ import javax.inject.Inject; * *

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 - * transfer is automatically approved. This flow can be used by the gaining or losing registrars - * (or anyone with the correct authId) to see the status of a transfer, which may still be pending - * or may have been approved, rejected, cancelled or implicitly approved by virtue of the transfer + * transfer is automatically approved. This flow can be used by the gaining or losing registrars (or + * anyone with the correct authId) to see the status of a transfer, which may still be pending or + * may have been approved, rejected, cancelled or implicitly approved by virtue of the transfer * period expiring. * + * @error {@link google.registry.flows.FlowUtils.NotLoggedInException} * @error {@link google.registry.flows.ResourceFlowUtils.BadAuthInfoForResourceException} * @error {@link google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException} * @error {@link google.registry.flows.exceptions.NoTransferHistoryToQueryException} diff --git a/core/src/main/java/google/registry/flows/contact/ContactTransferRejectFlow.java b/core/src/main/java/google/registry/flows/contact/ContactTransferRejectFlow.java index cb2428ddb..3ce701c94 100644 --- a/core/src/main/java/google/registry/flows/contact/ContactTransferRejectFlow.java +++ b/core/src/main/java/google/registry/flows/contact/ContactTransferRejectFlow.java @@ -54,6 +54,7 @@ import org.joda.time.DateTime; * reject the transfer request. * * @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.ResourceDoesNotExistException} * @error {@link google.registry.flows.ResourceFlowUtils.ResourceNotOwnedException} diff --git a/core/src/main/java/google/registry/flows/contact/ContactTransferRequestFlow.java b/core/src/main/java/google/registry/flows/contact/ContactTransferRequestFlow.java index 97833699d..77f84e93f 100644 --- a/core/src/main/java/google/registry/flows/contact/ContactTransferRequestFlow.java +++ b/core/src/main/java/google/registry/flows/contact/ContactTransferRequestFlow.java @@ -64,6 +64,7 @@ import org.joda.time.Duration; * request. * * @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.ResourceDoesNotExistException} * @error {@link google.registry.flows.exceptions.AlreadyPendingTransferException} diff --git a/core/src/main/java/google/registry/flows/contact/ContactUpdateFlow.java b/core/src/main/java/google/registry/flows/contact/ContactUpdateFlow.java index 71080c1d5..3ae076ff9 100644 --- a/core/src/main/java/google/registry/flows/contact/ContactUpdateFlow.java +++ b/core/src/main/java/google/registry/flows/contact/ContactUpdateFlow.java @@ -56,6 +56,7 @@ import org.joda.time.DateTime; * An EPP flow that updates a contact. * * @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.ResourceDoesNotExistException} * @error {@link google.registry.flows.ResourceFlowUtils.ResourceNotOwnedException} diff --git a/core/src/main/java/google/registry/flows/domain/DomainCheckFlow.java b/core/src/main/java/google/registry/flows/domain/DomainCheckFlow.java index 264c036d5..434344c1b 100644 --- a/core/src/main/java/google/registry/flows/domain/DomainCheckFlow.java +++ b/core/src/main/java/google/registry/flows/domain/DomainCheckFlow.java @@ -85,6 +85,7 @@ import org.joda.time.DateTime; *

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.FlowUtils.NotLoggedInException} * @error {@link google.registry.flows.FlowUtils.UnknownCurrencyEppException} * @error {@link DomainFlowUtils.BadDomainNameCharacterException} * @error {@link DomainFlowUtils.BadDomainNamePartsCountException} diff --git a/core/src/main/java/google/registry/flows/domain/DomainClaimsCheckFlow.java b/core/src/main/java/google/registry/flows/domain/DomainClaimsCheckFlow.java index d64399e48..57b62e918 100644 --- a/core/src/main/java/google/registry/flows/domain/DomainClaimsCheckFlow.java +++ b/core/src/main/java/google/registry/flows/domain/DomainClaimsCheckFlow.java @@ -57,13 +57,14 @@ import org.joda.time.DateTime; * An EPP flow that checks whether domain labels are trademarked. * * @error {@link google.registry.flows.exceptions.TooManyResourceChecksException} + * @error {@link google.registry.flows.FlowUtils.NotLoggedInException} * @error {@link DomainFlowUtils.BadCommandForRegistryPhaseException} * @error {@link DomainFlowUtils.ClaimsPeriodEndedException} * @error {@link DomainFlowUtils.NotAuthorizedForTldException} * @error {@link DomainFlowUtils.TldDoesNotExistException} * @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 { @Inject ExtensionManager extensionManager; diff --git a/core/src/main/java/google/registry/flows/domain/DomainCreateFlow.java b/core/src/main/java/google/registry/flows/domain/DomainCreateFlow.java index d15e2bd79..857b9349e 100644 --- a/core/src/main/java/google/registry/flows/domain/DomainCreateFlow.java +++ b/core/src/main/java/google/registry/flows/domain/DomainCreateFlow.java @@ -139,6 +139,7 @@ import org.joda.time.Duration; * @error {@link ResourceCreateContentionException} * @error {@link google.registry.flows.EppException.UnimplementedExtensionException} * @error {@link google.registry.flows.ExtensionManager.UndeclaredServiceExtensionException} + * @error {@link google.registry.flows.FlowUtils.NotLoggedInException} * @error {@link google.registry.flows.FlowUtils.UnknownCurrencyEppException} * @error {@link DomainCreateFlow.AnchorTenantCreatePeriodException} * @error {@link DomainCreateFlow.MustHaveSignedMarksInCurrentPhaseException} diff --git a/core/src/main/java/google/registry/flows/domain/DomainDeleteFlow.java b/core/src/main/java/google/registry/flows/domain/DomainDeleteFlow.java index 1190da927..a23c24c86 100644 --- a/core/src/main/java/google/registry/flows/domain/DomainDeleteFlow.java +++ b/core/src/main/java/google/registry/flows/domain/DomainDeleteFlow.java @@ -105,6 +105,7 @@ import org.joda.time.Duration; * * @error {@link google.registry.flows.EppException.ReadOnlyModeEppException} * @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.ResourceNotOwnedException} * @error {@link google.registry.flows.exceptions.OnlyToolCanPassMetadataException} diff --git a/core/src/main/java/google/registry/flows/domain/DomainInfoFlow.java b/core/src/main/java/google/registry/flows/domain/DomainInfoFlow.java index 6aa343567..cd1e17085 100644 --- a/core/src/main/java/google/registry/flows/domain/DomainInfoFlow.java +++ b/core/src/main/java/google/registry/flows/domain/DomainInfoFlow.java @@ -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 * 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.ResourceFlowUtils.BadAuthInfoForResourceException} * @error {@link google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException} diff --git a/core/src/main/java/google/registry/flows/domain/DomainRenewFlow.java b/core/src/main/java/google/registry/flows/domain/DomainRenewFlow.java index 363a1e0f3..82f04d890 100644 --- a/core/src/main/java/google/registry/flows/domain/DomainRenewFlow.java +++ b/core/src/main/java/google/registry/flows/domain/DomainRenewFlow.java @@ -95,6 +95,7 @@ import org.joda.time.Duration; * expired. * * @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.ResourceFlowUtils.ResourceDoesNotExistException} * @error {@link google.registry.flows.ResourceFlowUtils.ResourceNotOwnedException} diff --git a/core/src/main/java/google/registry/flows/domain/DomainRestoreRequestFlow.java b/core/src/main/java/google/registry/flows/domain/DomainRestoreRequestFlow.java index f23d58a75..be2021c1b 100644 --- a/core/src/main/java/google/registry/flows/domain/DomainRestoreRequestFlow.java +++ b/core/src/main/java/google/registry/flows/domain/DomainRestoreRequestFlow.java @@ -95,6 +95,7 @@ import org.joda.time.DateTime; * * @error {@link google.registry.flows.EppException.ReadOnlyModeEppException} * @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.ResourceFlowUtils.ResourceDoesNotExistException} * @error {@link google.registry.flows.ResourceFlowUtils.ResourceNotOwnedException} diff --git a/core/src/main/java/google/registry/flows/domain/DomainTransferApproveFlow.java b/core/src/main/java/google/registry/flows/domain/DomainTransferApproveFlow.java index a313151f7..80354e1ea 100644 --- a/core/src/main/java/google/registry/flows/domain/DomainTransferApproveFlow.java +++ b/core/src/main/java/google/registry/flows/domain/DomainTransferApproveFlow.java @@ -79,6 +79,7 @@ import org.joda.time.DateTime; * 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.FlowUtils.NotLoggedInException} * @error {@link google.registry.flows.ResourceFlowUtils.BadAuthInfoForResourceException} * @error {@link google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException} * @error {@link google.registry.flows.ResourceFlowUtils.ResourceNotOwnedException} diff --git a/core/src/main/java/google/registry/flows/domain/DomainTransferCancelFlow.java b/core/src/main/java/google/registry/flows/domain/DomainTransferCancelFlow.java index 4cdf94c52..633e00f53 100644 --- a/core/src/main/java/google/registry/flows/domain/DomainTransferCancelFlow.java +++ b/core/src/main/java/google/registry/flows/domain/DomainTransferCancelFlow.java @@ -66,6 +66,7 @@ import org.joda.time.DateTime; * those speculative objects are deleted. * * @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.ResourceDoesNotExistException} * @error {@link google.registry.flows.exceptions.NotPendingTransferException} diff --git a/core/src/main/java/google/registry/flows/domain/DomainTransferQueryFlow.java b/core/src/main/java/google/registry/flows/domain/DomainTransferQueryFlow.java index 0cf74d71c..c3456e1ec 100644 --- a/core/src/main/java/google/registry/flows/domain/DomainTransferQueryFlow.java +++ b/core/src/main/java/google/registry/flows/domain/DomainTransferQueryFlow.java @@ -44,11 +44,12 @@ import org.joda.time.DateTime; * *

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 - * transfer is automatically approved. This flow can be used by the gaining or losing registrars - * (or anyone with the correct authId) to see the status of a transfer, which may still be pending - * or may have been approved, rejected, cancelled or implicitly approved by virtue of the transfer + * transfer is automatically approved. This flow can be used by the gaining or losing registrars (or + * anyone with the correct authId) to see the status of a transfer, which may still be pending or + * may have been approved, rejected, cancelled or implicitly approved by virtue of the transfer * period expiring. * + * @error {@link google.registry.flows.FlowUtils.NotLoggedInException} * @error {@link google.registry.flows.ResourceFlowUtils.BadAuthInfoForResourceException} * @error {@link google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException} * @error {@link google.registry.flows.exceptions.NoTransferHistoryToQueryException} diff --git a/core/src/main/java/google/registry/flows/domain/DomainTransferRejectFlow.java b/core/src/main/java/google/registry/flows/domain/DomainTransferRejectFlow.java index fd334826c..ae6df4163 100644 --- a/core/src/main/java/google/registry/flows/domain/DomainTransferRejectFlow.java +++ b/core/src/main/java/google/registry/flows/domain/DomainTransferRejectFlow.java @@ -68,6 +68,7 @@ import org.joda.time.DateTime; * those speculative objects are deleted. * * @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.ResourceDoesNotExistException} * @error {@link google.registry.flows.ResourceFlowUtils.ResourceNotOwnedException} diff --git a/core/src/main/java/google/registry/flows/domain/DomainTransferRequestFlow.java b/core/src/main/java/google/registry/flows/domain/DomainTransferRequestFlow.java index 775191ccc..08439b436 100644 --- a/core/src/main/java/google/registry/flows/domain/DomainTransferRequestFlow.java +++ b/core/src/main/java/google/registry/flows/domain/DomainTransferRequestFlow.java @@ -94,6 +94,7 @@ import org.joda.time.DateTime; * replaced with new ones with the correct approval time). * * @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.ResourceFlowUtils.BadAuthInfoForResourceException} * @error {@link google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException} diff --git a/core/src/main/java/google/registry/flows/domain/DomainUpdateFlow.java b/core/src/main/java/google/registry/flows/domain/DomainUpdateFlow.java index b788770b5..d12bd45e2 100644 --- a/core/src/main/java/google/registry/flows/domain/DomainUpdateFlow.java +++ b/core/src/main/java/google/registry/flows/domain/DomainUpdateFlow.java @@ -99,6 +99,7 @@ import org.joda.time.DateTime; * * @error {@link google.registry.flows.EppException.ReadOnlyModeEppException} * @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.ResourceDoesNotExistException} * @error {@link google.registry.flows.ResourceFlowUtils.ResourceNotOwnedException} diff --git a/core/src/main/java/google/registry/flows/host/HostCheckFlow.java b/core/src/main/java/google/registry/flows/host/HostCheckFlow.java index b8c102496..c3a108690 100644 --- a/core/src/main/java/google/registry/flows/host/HostCheckFlow.java +++ b/core/src/main/java/google/registry/flows/host/HostCheckFlow.java @@ -42,6 +42,7 @@ import javax.inject.Inject; *

This flows can check the existence of multiple hosts simultaneously. * * @error {@link google.registry.flows.exceptions.TooManyResourceChecksException} + * @error {@link google.registry.flows.FlowUtils.NotLoggedInException} */ @ReportingSpec(ActivityReportField.HOST_CHECK) public final class HostCheckFlow implements Flow { diff --git a/core/src/main/java/google/registry/flows/host/HostCreateFlow.java b/core/src/main/java/google/registry/flows/host/HostCreateFlow.java index a272e4c2c..802e571eb 100644 --- a/core/src/main/java/google/registry/flows/host/HostCreateFlow.java +++ b/core/src/main/java/google/registry/flows/host/HostCreateFlow.java @@ -67,6 +67,7 @@ import org.joda.time.DateTime; * * @error {@link google.registry.flows.EppException.ReadOnlyModeEppException} * @error {@link google.registry.flows.FlowUtils.IpAddressVersionMismatchException} + * @error {@link google.registry.flows.FlowUtils.NotLoggedInException} * @error {@link ResourceAlreadyExistsForThisClientException} * @error {@link ResourceCreateContentionException} * @error {@link HostFlowUtils.HostNameTooLongException} diff --git a/core/src/main/java/google/registry/flows/host/HostDeleteFlow.java b/core/src/main/java/google/registry/flows/host/HostDeleteFlow.java index 46359a2bf..e154ec29d 100644 --- a/core/src/main/java/google/registry/flows/host/HostDeleteFlow.java +++ b/core/src/main/java/google/registry/flows/host/HostDeleteFlow.java @@ -59,6 +59,7 @@ import org.joda.time.DateTime; * with the success or failure message when the process is complete. * * @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.ResourceNotOwnedException} * @error {@link google.registry.flows.exceptions.ResourceStatusProhibitsOperationException} diff --git a/core/src/main/java/google/registry/flows/host/HostInfoFlow.java b/core/src/main/java/google/registry/flows/host/HostInfoFlow.java index 39d891026..c55286ccd 100644 --- a/core/src/main/java/google/registry/flows/host/HostInfoFlow.java +++ b/core/src/main/java/google/registry/flows/host/HostInfoFlow.java @@ -44,6 +44,7 @@ import org.joda.time.DateTime; *

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. * + * @error {@link google.registry.flows.FlowUtils.NotLoggedInException} * @error {@link google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException} * @error {@link HostFlowUtils.HostNameNotLowerCaseException} * @error {@link HostFlowUtils.HostNameNotNormalizedException} diff --git a/core/src/main/java/google/registry/flows/host/HostUpdateFlow.java b/core/src/main/java/google/registry/flows/host/HostUpdateFlow.java index 5045b68db..0991ed97c 100644 --- a/core/src/main/java/google/registry/flows/host/HostUpdateFlow.java +++ b/core/src/main/java/google/registry/flows/host/HostUpdateFlow.java @@ -79,6 +79,7 @@ import org.joda.time.DateTime; * or IP addresses are added, tasks are enqueued to update DNS accordingly. * * @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.ResourceDoesNotExistException} * @error {@link google.registry.flows.ResourceFlowUtils.ResourceNotOwnedException} diff --git a/core/src/test/java/google/registry/flows/ResourceFlowTestCase.java b/core/src/test/java/google/registry/flows/ResourceFlowTestCase.java index 15dc40655..aafdf3a81 100644 --- a/core/src/test/java/google/registry/flows/ResourceFlowTestCase.java +++ b/core/src/test/java/google/registry/flows/ResourceFlowTestCase.java @@ -21,10 +21,8 @@ import static google.registry.model.ImmutableObjectSubject.assertAboutImmutableO import static google.registry.model.ofy.ObjectifyService.auditedOfy; import static google.registry.persistence.transaction.TransactionManagerFactory.tm; 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.TaskQueueHelper.assertTasksEnqueued; -import static org.junit.jupiter.api.Assertions.assertThrows; import com.google.common.collect.ImmutableList; 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.testing.TestLogHandler; import com.googlecode.objectify.Key; -import google.registry.flows.FlowUtils.NotLoggedInException; import google.registry.model.EppResource; import google.registry.model.contact.ContactBase; import google.registry.model.contact.ContactHistory; @@ -58,7 +55,6 @@ import org.joda.time.DateTime; import org.joda.time.Duration; import org.json.simple.JSONValue; import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; /** * Base class for resource flow unit tests. @@ -120,13 +116,6 @@ public abstract class ResourceFlowTestCase .build()); } + @TestOfyAndSql + void testNotLoggedIn() { + sessionMetadata.setRegistrarId(null); + EppException thrown = assertThrows(NotLoggedInException.class, this::runFlow); + assertAboutEppExceptions().that(thrown).marshalsToXml(); + } + @TestOfyAndSql void testSuccess() throws Exception { persistHostResource(); diff --git a/core/src/test/java/google/registry/flows/host/HostUpdateFlowTest.java b/core/src/test/java/google/registry/flows/host/HostUpdateFlowTest.java index f51145400..957051fda 100644 --- a/core/src/test/java/google/registry/flows/host/HostUpdateFlowTest.java +++ b/core/src/test/java/google/registry/flows/host/HostUpdateFlowTest.java @@ -49,6 +49,7 @@ import com.google.common.net.InetAddresses; import google.registry.flows.EppException; import google.registry.flows.EppException.ReadOnlyModeEppException; import google.registry.flows.EppRequestSource; +import google.registry.flows.FlowUtils.NotLoggedInException; import google.registry.flows.ResourceFlowTestCase; import google.registry.flows.ResourceFlowUtils.AddRemoveSameValueException; import google.registry.flows.ResourceFlowUtils.ResourceDoesNotExistException; @@ -145,6 +146,13 @@ class HostUpdateFlowTest extends ResourceFlowTestCase