From a56713e4be0e1486c060fc0a6b4d173766f4c554 Mon Sep 17 00:00:00 2001 From: Ben McIlwain Date: Tue, 28 Jul 2020 14:18:16 -0400 Subject: [PATCH] Upgrade App Engine and webserver tests from JUnit 4 to 5 (#720) * Upgrade App Engine and webserver tests from JUnit 4 to 5 * Fix most errors * Merge branch 'master' into junit5ification * Fix test server by extracting non-test setup/tear-down * Merge branch 'master' into junit5ification * Fix backup tests * Don't createFile(); asCharSink does it * Increase the timeout for all WebDriver tests to 60s (helps w/ flakiness) --- config/presubmits.py | 10 +- core/build.gradle | 1 + .../dependency-locks/testCompile.lockfile | 1 + .../testCompileClasspath.lockfile | 1 + .../dependency-locks/testRuntime.lockfile | 1 + .../testRuntimeClasspath.lockfile | 1 + .../beam/initsql/InitSqlPipelineOptions.java | 4 +- .../tools/DeploySpec11PipelineCommand.java | 36 ++- .../registry/tools/DomainLockUtils.java | 7 +- .../tools/LockOrUnlockDomainCommand.java | 46 ++-- .../google/registry/tools/RegistryCli.java | 5 +- .../tools/GenerateSqlSchemaCommand.java | 1 + .../backup/CommitLogCheckpointActionTest.java | 6 +- .../CommitLogCheckpointStrategyTest.java | 5 +- .../backup/ExportCommitLogDiffActionTest.java | 6 +- .../backup/GcsDiffFileListerTest.java | 5 +- .../backup/RestoreCommitLogsActionTest.java | 6 +- .../registry/batch/AsyncTaskEnqueuerTest.java | 6 +- .../batch/RelockDomainActionTest.java | 6 +- .../batch/ResaveEntityActionTest.java | 6 +- .../beam/initsql/BackupTestStore.java | 10 +- .../beam/initsql/DomainBaseUtilTest.java | 6 +- .../beam/initsql/InitSqlPipelineTest.java | 14 +- .../registry/beam/initsql/WriteToSqlTest.java | 10 +- .../cron/CommitLogFanoutActionTest.java | 6 +- .../registry/cron/TldFanoutActionTest.java | 6 +- .../google/registry/dns/DnsInjectionTest.java | 6 +- .../google/registry/dns/DnsQueueTest.java | 6 +- .../dns/PublishDnsUpdatesActionTest.java | 6 +- .../registry/dns/ReadDnsQueueActionTest.java | 6 +- .../registry/dns/RefreshDnsActionTest.java | 6 +- .../writer/clouddns/CloudDnsWriterTest.java | 5 +- .../writer/dnsupdate/DnsUpdateWriterTest.java | 6 +- .../export/BackupDatastoreActionTest.java | 4 +- .../export/BigqueryPollJobActionTest.java | 6 +- .../export/CheckBackupActionTest.java | 4 +- .../export/ExportPremiumTermsActionTest.java | 5 +- .../export/ExportReservedTermsActionTest.java | 5 +- .../registry/export/ExportUtilsTest.java | 5 +- .../export/SyncGroupMembersActionTest.java | 7 +- .../export/UpdateSnapshotViewActionTest.java | 4 +- .../UploadDatastoreBackupActionTest.java | 4 +- .../sheet/SyncRegistrarsSheetActionTest.java | 6 +- .../export/sheet/SyncRegistrarsSheetTest.java | 5 +- .../registry/flows/CheckApiActionTest.java | 5 +- .../registry/flows/EppCommitLogsTest.java | 6 +- .../registry/flows/EppControllerTest.java | 5 +- .../flows/EppLifecycleContactTest.java | 6 +- .../flows/EppLifecycleDomainTest.java | 6 +- .../registry/flows/EppLifecycleHostTest.java | 6 +- .../registry/flows/EppLifecycleLoginTest.java | 6 +- .../registry/flows/EppLoggedOutTest.java | 5 +- .../registry/flows/EppLoginTlsTest.java | 5 +- .../registry/flows/EppXxeAttackTest.java | 5 +- .../registry/flows/ExtensionManagerTest.java | 5 +- .../google/registry/flows/FlowRunnerTest.java | 5 +- .../google/registry/flows/FlowTestCase.java | 6 +- .../registry/flows/TlsCredentialsTest.java | 5 +- .../contact/ContactTransferFlowTestCase.java | 5 +- .../ContactTransferRequestFlowTest.java | 2 +- .../flows/domain/DomainFlowUtilsTest.java | 4 +- .../flows/domain/DomainInfoFlowTest.java | 4 +- .../domain/DomainTransferFlowTestCase.java | 5 +- .../domain/DomainTransferQueryFlowTest.java | 2 +- .../token/AllocationTokenFlowUtilsTest.java | 5 +- .../flows/host/HostFlowUtilsTest.java | 5 +- .../registry/keyring/kms/KmsKeyringTest.java | 5 +- .../registry/keyring/kms/KmsUpdaterTest.java | 5 +- .../inputs/ChildEntityInputTest.java | 5 +- .../inputs/CommitLogManifestInputTest.java | 5 +- .../inputs/EppResourceInputsTest.java | 5 +- .../model/CreateAutoTimestampTest.java | 6 +- .../google/registry/model/EntityTestCase.java | 6 +- .../registry/model/EppResourceUtilsTest.java | 6 +- .../registry/model/ImmutableObjectTest.java | 6 +- .../google/registry/model/ModelUtilsTest.java | 5 +- .../registry/model/OteAccountBuilderTest.java | 7 +- .../google/registry/model/OteStatsTest.java | 5 +- .../registry/model/SchemaVersionTest.java | 5 +- .../model/UpdateAutoTimestampTest.java | 6 +- .../model/common/GaeUserIdConverterTest.java | 5 +- .../model/contact/ContactCommandTest.java | 5 +- .../model/domain/GracePeriodTest.java | 6 +- .../model/ofy/CommitLogBucketTest.java | 5 +- .../model/ofy/CommitLogCheckpointTest.java | 5 +- .../model/ofy/CommitLogMutationTest.java | 5 +- .../model/ofy/ObjectifyServiceTest.java | 5 +- .../registry/model/ofy/OfyCommitLogTest.java | 6 +- .../google/registry/model/ofy/OfyTest.java | 5 +- .../PollMessageExternalKeyConverterTest.java | 5 +- .../registry/model/rde/RdeRevisionTest.java | 5 +- .../model/registrar/RegistrarTest.java | 1 + .../model/registry/RegistriesTest.java | 5 +- .../label/GenrulePremiumListTest.java | 5 +- .../label/GenruleReservedListTest.java | 5 +- .../model/registry/label/PremiumListTest.java | 5 +- .../registry/label/PremiumListUtilsTest.java | 5 +- .../registry/label/ReservedListTest.java | 5 +- .../model/server/KmsSecretRevisionTest.java | 5 +- .../registry/model/server/KmsSecretTest.java | 5 +- .../registry/model/server/LockTest.java | 6 +- .../model/server/ServerSecretTest.java | 5 +- .../smd/SignedMarkRevocationListTest.java | 5 +- .../model/tmch/ClaimsListShardTest.java | 5 +- .../registry/model/tmch/TmchCrlTest.java | 5 +- .../model/transfer/TransferDataTest.java | 5 +- ...mmitLogRevisionsTranslatorFactoryTest.java | 6 +- .../translators/StatusValueAdapterTest.java | 5 +- .../VKeyTranslatorFactoryTest.java | 4 +- .../module/backend/BackendServletTest.java | 6 +- .../module/frontend/FrontendServletTest.java | 6 +- .../module/pubapi/PubApiServletTest.java | 6 +- .../monitoring/whitebox/EppMetricTest.java | 5 +- .../google/registry/persistence/VKeyTest.java | 6 +- .../InetAddressSetConverterTest.java | 6 +- .../DummyJpaTransactionManagerTest.java | 4 + ...e.java => JpaEntityCoverageExtension.java} | 26 +- .../persistence/transaction/JpaTestRules.java | 99 ++----- ...va => JpaTransactionManagerExtension.java} | 31 +-- .../JpaTransactionManagerRuleTest.java | 5 +- .../transaction/TransactionManagerTest.java | 6 +- .../transaction/TransactionTest.java | 6 +- .../pricing/PricingEngineProxyTest.java | 5 +- .../registry/rdap/RdapActionBaseTestCase.java | 5 +- .../registry/rdap/RdapJsonFormatterTest.java | 5 +- ...UpdateRegistrarRdapBaseUrlsActionTest.java | 6 +- .../registry/rde/BrdaCopyActionTest.java | 5 +- .../ContactResourceToXjcConverterTest.java | 5 +- .../rde/DomainBaseToXjcConverterTest.java | 5 +- .../registry/rde/EscrowTaskRunnerTest.java | 6 +- .../rde/HostResourceToXjcConverterTest.java | 5 +- .../rde/PendingDepositCheckerTest.java | 5 +- .../registry/rde/RdeMarshallerTest.java | 5 +- .../registry/rde/RdeReportActionTest.java | 5 +- .../registry/rde/RdeStagingMapperTest.java | 5 +- .../registry/rde/RdeStagingReducerTest.java | 6 +- .../registry/rde/RdeUploadActionTest.java | 6 +- .../rde/RegistrarToXjcConverterTest.java | 5 +- .../billing/CopyDetailReportsActionTest.java | 5 +- .../billing/GenerateInvoicesActionTest.java | 4 +- .../billing/PublishInvoicesActionTest.java | 4 +- .../icann/IcannHttpReporterTest.java | 5 +- .../icann/IcannReportingStagerTest.java | 6 +- .../IcannReportingStagingActionTest.java | 10 +- .../icann/IcannReportingUploadActionTest.java | 5 +- .../GenerateSpec11ReportActionTest.java | 4 +- .../spec11/Spec11EmailUtilsTest.java | 7 +- .../registry/request/RequestHandlerTest.java | 6 +- .../AuthenticatedRegistrarAccessorTest.java | 7 +- .../LegacyAuthenticationMechanismTest.java | 5 +- .../auth/RequestAuthenticatorTest.java | 4 +- .../request/lock/LockHandlerImplTest.java | 27 +- .../registry/schema/cursor/CursorDaoTest.java | 6 +- .../SqlIntegrationMembershipTest.java | 88 ------ .../integration/SqlIntegrationTestSuite.java | 19 +- .../registry/schema/replay/EntityTest.java | 8 +- .../schema/tld/PremiumListDaoTest.java | 6 +- .../schema/tld/PremiumListUtilsTest.java | 20 +- .../registry/security/JsonHttpTest.java | 27 +- .../security/XsrfTokenManagerTest.java | 39 ++- .../server/RegistryTestServerMain.java | 67 +++-- .../storage/drive/DriveConnectionTest.java | 95 +++---- ...ngineRule.java => AppEngineExtension.java} | 258 +++++++++--------- ...eTest.java => AppEngineExtensionTest.java} | 81 +++--- .../ContextCapturingMetaExtension.java | 41 +++ .../testing/DatastoreEntityExtension.java | 14 +- ...DatabaseTestInvocationContextProvider.java | 6 +- ...baseTestInvocationContextProviderTest.java | 3 +- .../google/registry/testing/InjectRule.java | 12 +- .../google/registry/testing/SqlHelper.java | 2 +- .../google/registry/testing/UserInfo.java | 4 +- .../testing/mapreduce/MapreduceTestCase.java | 10 +- .../tldconfig/idn/IdnLabelValidatorTest.java | 15 +- .../registry/tldconfig/idn/IdnTableTest.java | 20 +- .../registry/tmch/LordnTaskUtilsTest.java | 6 +- .../registry/tmch/NordnUploadActionTest.java | 6 +- .../registry/tmch/NordnVerifyActionTest.java | 6 +- .../registry/tmch/SmdrlCsvParserTest.java | 5 +- .../registry/tmch/TmchActionTestCase.java | 5 +- .../tmch/TmchCertificateAuthorityTest.java | 5 +- .../tmch/TmchTestDataExpirationTest.java | 5 +- .../registry/tmch/TmchXmlSignatureTest.java | 5 +- .../registry/tools/CommandTestCase.java | 6 +- .../registry/tools/DomainLockUtilsTest.java | 33 +-- .../registry/tools/EntityWrapperTest.java | 5 +- .../registry/tools/EppLifecycleToolsTest.java | 6 +- .../tools/LevelDbFileBuilderTest.java | 5 +- .../registry/tools/MutatingCommandTest.java | 5 +- .../registry/tools/RecordAccumulatorTest.java | 5 +- .../registry/tools/RegistryToolTest.java | 5 +- .../tools/UpdateRegistrarCommandTest.java | 4 +- .../tools/server/CreateGroupsActionTest.java | 5 +- .../server/CreatePremiumListActionTest.java | 5 +- .../tools/server/DeleteEntityActionTest.java | 5 +- .../tools/server/ListActionTestCase.java | 5 +- .../server/UpdatePremiumListActionTest.java | 5 +- .../tools/server/VerifyOteActionTest.java | 5 +- .../ui/forms/FormFieldExceptionTest.java | 16 +- .../registry/ui/forms/FormFieldTest.java | 233 ++++++++-------- .../registry/ui/forms/FormFieldsTest.java | 33 +-- .../ui/server/ActionMembershipTest.java | 10 +- .../ui/server/RegistrarFormFieldsTest.java | 16 +- .../ui/server/SendEmailUtilsTest.java | 23 +- .../registrar/ConsoleOteSetupActionTest.java | 6 +- .../ConsoleRegistrarCreatorActionTest.java | 5 +- .../server/registrar/ConsoleUiActionTest.java | 55 ++-- .../server/registrar/ContactSettingsTest.java | 40 +-- .../server/registrar/OteStatusActionTest.java | 34 ++- .../RegistrarSettingsActionTestCase.java | 6 +- .../registrar/RegistryLockGetActionTest.java | 57 ++-- .../registrar/RegistryLockPostActionTest.java | 94 +++---- .../RegistryLockVerifyActionTest.java | 56 ++-- .../google/registry/util/ConcurrentTest.java | 24 +- .../util/RequestStatusCheckerImplTest.java | 39 +-- .../registry/util/TaskQueueUtilsTest.java | 39 ++- .../registry/util/UrlFetchUtilsTest.java | 38 ++- .../registry/webdriver/ActualScreenshot.java | 20 +- ...ule.java => DockerWebDriverExtension.java} | 15 +- .../OteSetupConsoleScreenshotTest.java | 24 +- .../RegistrarConsoleScreenshotTest.java | 166 ++++++----- .../webdriver/RegistrarConsoleWebTest.java | 76 +++--- .../RegistrarCreateConsoleScreenshotTest.java | 26 +- .../registry/webdriver/RepeatableRunner.java | 182 ------------ .../registry/webdriver/ScreenDiffer.java | 6 +- ...rverRule.java => TestServerExtension.java} | 66 +++-- ...> WebDriverPlusScreenDifferExtension.java} | 62 ++--- .../webdriver/WebDriverScreenDiffer.java | 21 +- .../registry/webdriver/WebDriverTestCase.java | 24 +- .../whois/DomainWhoisResponseTest.java | 42 ++- .../whois/NameserverWhoisResponseTest.java | 29 +- .../whois/RegistrarWhoisResponseTest.java | 152 +++++------ .../registry/whois/WhoisActionTest.java | 5 +- .../registry/whois/WhoisHttpActionTest.java | 76 +++--- .../registry/whois/WhoisInjectionTest.java | 26 +- .../registry/whois/WhoisReaderTest.java | 138 +++++----- .../google/registry/xjc/JaxbFragmentTest.java | 10 +- .../google/registry/xjc/XjcObjectTest.java | 26 +- .../google/registry/xml/DateAdapterTest.java | 22 +- .../xml/TrimWhitespaceAdapterTest.java | 11 +- .../registry/xml/UtcDateTimeAdapterTest.java | 21 +- .../google/registry/xml/XmlTestUtilsTest.java | 15 +- dependencies.gradle | 1 + 242 files changed, 1900 insertions(+), 2206 deletions(-) rename core/src/test/java/google/registry/persistence/transaction/{JpaEntityCoverage.java => JpaEntityCoverageExtension.java} (88%) rename core/src/test/java/google/registry/persistence/transaction/{JpaTransactionManagerRule.java => JpaTransactionManagerExtension.java} (94%) delete mode 100644 core/src/test/java/google/registry/schema/integration/SqlIntegrationMembershipTest.java rename core/src/test/java/google/registry/testing/{AppEngineRule.java => AppEngineExtension.java} (75%) rename core/src/test/java/google/registry/testing/{AppEngineRuleTest.java => AppEngineExtensionTest.java} (65%) create mode 100644 core/src/test/java/google/registry/testing/ContextCapturingMetaExtension.java rename core/src/test/java/google/registry/webdriver/{DockerWebDriverRule.java => DockerWebDriverExtension.java} (85%) delete mode 100644 core/src/test/java/google/registry/webdriver/RepeatableRunner.java rename core/src/test/java/google/registry/webdriver/{TestServerRule.java => TestServerExtension.java} (83%) rename core/src/test/java/google/registry/webdriver/{WebDriverPlusScreenDifferRule.java => WebDriverPlusScreenDifferExtension.java} (87%) diff --git a/config/presubmits.py b/config/presubmits.py index fbab0c213..3d827aaba 100644 --- a/config/presubmits.py +++ b/config/presubmits.py @@ -93,20 +93,20 @@ PRESUBMITS = { PresubmitCheck( r".*\bSystem\.(out|err)\.print", "java", { "StackdriverDashboardBuilder.java", "/tools/", "/example/", - "RegistryTestServerMain.java", "TestServerRule.java", + "RegistryTestServerMain.java", "TestServerExtension.java", "FlowDocumentationTool.java" }): "System.(out|err).println is only allowed in tools/ packages. Please " "use a logger instead.", - # ObjectifyService.register is restricted to main/ or AppEngineRule. + # ObjectifyService.register is restricted to main/ or AppEngineExtension. PresubmitCheck( r".*\bObjectifyService\.register", "java", { "/build/", "/generated/", "node_modules/", "src/main/", - "AppEngineRule.java" + "AppEngineExtension.java" }): - "ObjectifyService.register is not allowed in tests. Please use " - "AppengineRule.register instead.", + "ObjectifyService.register(...) is not allowed in tests. Please use " + "AppEngineExtension.register(...) instead.", # PostgreSQLContainer instantiation must specify docker tag PresubmitCheck( diff --git a/core/build.gradle b/core/build.gradle index a089a2038..5b70bb773 100644 --- a/core/build.gradle +++ b/core/build.gradle @@ -315,6 +315,7 @@ dependencies { testCompile deps['org.junit.jupiter:junit-jupiter-engine'] testCompile deps['org.junit.jupiter:junit-jupiter-migrationsupport'] testCompile deps['org.junit.jupiter:junit-jupiter-params'] + testCompile deps['org.junit-pioneer:junit-pioneer'] testCompile deps['org.junit.platform:junit-platform-runner'] testCompile deps['org.junit.platform:junit-platform-suite-api'] testCompile deps['org.junit.vintage:junit-vintage-engine'] diff --git a/core/gradle/dependency-locks/testCompile.lockfile b/core/gradle/dependency-locks/testCompile.lockfile index 6d0763544..b64193962 100644 --- a/core/gradle/dependency-locks/testCompile.lockfile +++ b/core/gradle/dependency-locks/testCompile.lockfile @@ -243,6 +243,7 @@ org.jboss:jandex:2.1.3.Final org.jetbrains:annotations:19.0.0 org.joda:joda-money:1.0.1 org.json:json:20160810 +org.junit-pioneer:junit-pioneer:0.7.0 org.junit.jupiter:junit-jupiter-api:5.6.2 org.junit.jupiter:junit-jupiter-engine:5.6.2 org.junit.jupiter:junit-jupiter-migrationsupport:5.6.2 diff --git a/core/gradle/dependency-locks/testCompileClasspath.lockfile b/core/gradle/dependency-locks/testCompileClasspath.lockfile index 73605a65b..ca24218ab 100644 --- a/core/gradle/dependency-locks/testCompileClasspath.lockfile +++ b/core/gradle/dependency-locks/testCompileClasspath.lockfile @@ -241,6 +241,7 @@ org.jboss:jandex:2.1.3.Final org.jetbrains:annotations:19.0.0 org.joda:joda-money:1.0.1 org.json:json:20160810 +org.junit-pioneer:junit-pioneer:0.7.0 org.junit.jupiter:junit-jupiter-api:5.6.2 org.junit.jupiter:junit-jupiter-engine:5.6.2 org.junit.jupiter:junit-jupiter-migrationsupport:5.6.2 diff --git a/core/gradle/dependency-locks/testRuntime.lockfile b/core/gradle/dependency-locks/testRuntime.lockfile index 9fb8b3f18..10a523e53 100644 --- a/core/gradle/dependency-locks/testRuntime.lockfile +++ b/core/gradle/dependency-locks/testRuntime.lockfile @@ -246,6 +246,7 @@ org.jboss:jandex:2.1.3.Final org.jetbrains:annotations:19.0.0 org.joda:joda-money:1.0.1 org.json:json:20160810 +org.junit-pioneer:junit-pioneer:0.7.0 org.junit.jupiter:junit-jupiter-api:5.6.2 org.junit.jupiter:junit-jupiter-engine:5.6.2 org.junit.jupiter:junit-jupiter-migrationsupport:5.6.2 diff --git a/core/gradle/dependency-locks/testRuntimeClasspath.lockfile b/core/gradle/dependency-locks/testRuntimeClasspath.lockfile index 5168aae42..6fd63311d 100644 --- a/core/gradle/dependency-locks/testRuntimeClasspath.lockfile +++ b/core/gradle/dependency-locks/testRuntimeClasspath.lockfile @@ -246,6 +246,7 @@ org.jboss:jandex:2.1.3.Final org.jetbrains:annotations:19.0.0 org.joda:joda-money:1.0.1 org.json:json:20160810 +org.junit-pioneer:junit-pioneer:0.7.0 org.junit.jupiter:junit-jupiter-api:5.6.2 org.junit.jupiter:junit-jupiter-engine:5.6.2 org.junit.jupiter:junit-jupiter-migrationsupport:5.6.2 diff --git a/core/src/main/java/google/registry/beam/initsql/InitSqlPipelineOptions.java b/core/src/main/java/google/registry/beam/initsql/InitSqlPipelineOptions.java index 9d0fc9e3d..ebf1e85c5 100644 --- a/core/src/main/java/google/registry/beam/initsql/InitSqlPipelineOptions.java +++ b/core/src/main/java/google/registry/beam/initsql/InitSqlPipelineOptions.java @@ -60,8 +60,8 @@ public interface InitSqlPipelineOptions extends GcpOptions { void setEnvironment(String environment); - @Description("The GCP project that contains the keyring used for decrypting the " - + "SQL credential file.") + @Description( + "The GCP project that contains the keyring used for decrypting the " + "SQL credential file.") @Nullable String getCloudKmsProjectId(); diff --git a/core/src/main/java/google/registry/tools/DeploySpec11PipelineCommand.java b/core/src/main/java/google/registry/tools/DeploySpec11PipelineCommand.java index 0c4683ca7..62f5ff3e8 100644 --- a/core/src/main/java/google/registry/tools/DeploySpec11PipelineCommand.java +++ b/core/src/main/java/google/registry/tools/DeploySpec11PipelineCommand.java @@ -27,18 +27,40 @@ import javax.inject.Inject; @Parameters(commandDescription = "Deploy the Spec11 pipeline to GCS.") public class DeploySpec11PipelineCommand implements Command { - @Inject @Config("projectId") String projectId; - @Inject @Config("beamStagingUrl") String beamStagingUrl; - @Inject @Config("spec11TemplateUrl")String spec11TemplateUrl; - @Inject @Config("reportingBucketUrl")String reportingBucketUrl; + @Inject + @Config("projectId") + String projectId; + + @Inject + @Config("beamStagingUrl") + String beamStagingUrl; + + @Inject + @Config("spec11TemplateUrl") + String spec11TemplateUrl; + + @Inject + @Config("reportingBucketUrl") + String reportingBucketUrl; + @Inject @LocalCredential GoogleCredentialsBundle googleCredentialsBundle; @Inject Retrier retrier; - @Inject @Nullable @Config("sqlAccessInfoFile") String sqlAccessInfoFile; + + @Inject + @Nullable + @Config("sqlAccessInfoFile") + String sqlAccessInfoFile; @Override public void run() { - Spec11Pipeline pipeline = new Spec11Pipeline(projectId, beamStagingUrl, spec11TemplateUrl, - reportingBucketUrl, googleCredentialsBundle, retrier); + Spec11Pipeline pipeline = + new Spec11Pipeline( + projectId, + beamStagingUrl, + spec11TemplateUrl, + reportingBucketUrl, + googleCredentialsBundle, + retrier); pipeline.deploy(); } } diff --git a/core/src/main/java/google/registry/tools/DomainLockUtils.java b/core/src/main/java/google/registry/tools/DomainLockUtils.java index 30af71e72..db71b6fad 100644 --- a/core/src/main/java/google/registry/tools/DomainLockUtils.java +++ b/core/src/main/java/google/registry/tools/DomainLockUtils.java @@ -303,8 +303,8 @@ public final class DomainLockUtils { private static void verifyDomainLocked(DomainBase domainBase, boolean isAdmin) { checkArgument( - isAdmin || !Sets.intersection(domainBase.getStatusValues(), REGISTRY_LOCK_STATUSES) - .isEmpty(), + isAdmin + || !Sets.intersection(domainBase.getStatusValues(), REGISTRY_LOCK_STATUSES).isEmpty(), "Domain %s is already unlocked", domainBase.getDomainName()); } @@ -312,8 +312,7 @@ public final class DomainLockUtils { private DomainBase getDomain(String domainName, String registrarId, DateTime now) { DomainBase domain = loadByForeignKeyCached(DomainBase.class, domainName, now) - .orElseThrow( - () -> new IllegalArgumentException("Domain doesn't exist")); + .orElseThrow(() -> new IllegalArgumentException("Domain doesn't exist")); // The user must have specified either the correct registrar ID or the admin registrar ID checkArgument( registryAdminRegistrarId.equals(registrarId) diff --git a/core/src/main/java/google/registry/tools/LockOrUnlockDomainCommand.java b/core/src/main/java/google/registry/tools/LockOrUnlockDomainCommand.java index 9b68621a0..5b17f7af8 100644 --- a/core/src/main/java/google/registry/tools/LockOrUnlockDomainCommand.java +++ b/core/src/main/java/google/registry/tools/LockOrUnlockDomainCommand.java @@ -34,9 +34,7 @@ import google.registry.model.eppcommon.StatusValue; import java.util.List; import javax.inject.Inject; -/** - * Shared base class for commands to registry lock or unlock a domain via EPP. - */ +/** Shared base class for commands to registry lock or unlock a domain via EPP. */ public abstract class LockOrUnlockDomainCommand extends ConfirmingCommand implements CommandWithRemoteApi { @@ -61,8 +59,7 @@ public abstract class LockOrUnlockDomainCommand extends ConfirmingCommand @Config("registryAdminClientId") String registryAdminClientId; - @Inject - DomainLockUtils domainLockUtils; + @Inject DomainLockUtils domainLockUtils; protected ImmutableSet getDomains() { return ImmutableSet.copyOf(mainParameters); @@ -88,25 +85,28 @@ public abstract class LockOrUnlockDomainCommand extends ConfirmingCommand .forEach( batch -> // we require that the jpaTm is the outer transaction in DomainLockUtils - jpaTm().transact(() -> tm().transact( - () -> { - for (String domain : batch) { - try { - createAndApplyRequest(domain); - } catch (Throwable t) { - logger.atSevere().withCause(t).log( - "Error when (un)locking domain %s.", domain); - failedDomainsToReasons.put(domain, t.getMessage()); - continue; - } - successfulDomainsBuilder.add(domain); - } - }))); + jpaTm() + .transact( + () -> + tm().transact( + () -> { + for (String domain : batch) { + try { + createAndApplyRequest(domain); + } catch (Throwable t) { + logger.atSevere().withCause(t).log( + "Error when (un)locking domain %s.", domain); + failedDomainsToReasons.put(domain, t.getMessage()); + continue; + } + successfulDomainsBuilder.add(domain); + } + }))); ImmutableSet successfulDomains = successfulDomainsBuilder.build(); - ImmutableSet failedDomains = failedDomainsToReasons.build().entrySet() - .stream() - .map(entry -> String.format("%s (%s)", entry.getKey(), entry.getValue())) - .collect(toImmutableSet()); + ImmutableSet failedDomains = + failedDomainsToReasons.build().entrySet().stream() + .map(entry -> String.format("%s (%s)", entry.getKey(), entry.getValue())) + .collect(toImmutableSet()); return String.format( "Successfully locked/unlocked domains:\n%s\nFailed domains:\n%s", successfulDomains, failedDomains); diff --git a/core/src/main/java/google/registry/tools/RegistryCli.java b/core/src/main/java/google/registry/tools/RegistryCli.java index 9d8539966..25c0b7779 100644 --- a/core/src/main/java/google/registry/tools/RegistryCli.java +++ b/core/src/main/java/google/registry/tools/RegistryCli.java @@ -68,8 +68,9 @@ final class RegistryCli implements AutoCloseable, CommandRunner { @Parameter( names = {"--sql_access_info"}, - description = "Name of a file containing space-separated SQL access info used when deploying " - + "Beam pipelines") + description = + "Name of a file containing space-separated SQL access info used when deploying " + + "Beam pipelines") private String sqlAccessInfoFile = null; // Do not make this final - compile-time constant inlining may interfere with JCommander. diff --git a/core/src/nonprod/java/google/registry/tools/GenerateSqlSchemaCommand.java b/core/src/nonprod/java/google/registry/tools/GenerateSqlSchemaCommand.java index e65ca2cc2..14c440372 100644 --- a/core/src/nonprod/java/google/registry/tools/GenerateSqlSchemaCommand.java +++ b/core/src/nonprod/java/google/registry/tools/GenerateSqlSchemaCommand.java @@ -36,6 +36,7 @@ import org.testcontainers.containers.PostgreSQLContainer; */ @Parameters(separators = " =", commandDescription = "Generate PostgreSQL schema.") public class GenerateSqlSchemaCommand implements Command { + private static final String DB_NAME = "postgres"; private static final String DB_USERNAME = "postgres"; private static final String DB_PASSWORD = "domain-registry"; diff --git a/core/src/test/java/google/registry/backup/CommitLogCheckpointActionTest.java b/core/src/test/java/google/registry/backup/CommitLogCheckpointActionTest.java index 82378b3ff..1920fc9d6 100644 --- a/core/src/test/java/google/registry/backup/CommitLogCheckpointActionTest.java +++ b/core/src/test/java/google/registry/backup/CommitLogCheckpointActionTest.java @@ -27,7 +27,7 @@ import static org.mockito.Mockito.when; import com.google.common.collect.ImmutableMap; import google.registry.model.ofy.CommitLogCheckpoint; import google.registry.model.ofy.CommitLogCheckpointRoot; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.FakeClock; import google.registry.testing.TaskQueueHelper.TaskMatcher; import google.registry.util.Retrier; @@ -43,8 +43,8 @@ public class CommitLogCheckpointActionTest { private static final String QUEUE_NAME = "export-commits"; @RegisterExtension - public final AppEngineRule appEngine = - AppEngineRule.builder().withDatastoreAndCloudSql().withTaskQueue().build(); + public final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().withTaskQueue().build(); private CommitLogCheckpointStrategy strategy = mock(CommitLogCheckpointStrategy.class); diff --git a/core/src/test/java/google/registry/backup/CommitLogCheckpointStrategyTest.java b/core/src/test/java/google/registry/backup/CommitLogCheckpointStrategyTest.java index 64cc5dbb4..ee812db54 100644 --- a/core/src/test/java/google/registry/backup/CommitLogCheckpointStrategyTest.java +++ b/core/src/test/java/google/registry/backup/CommitLogCheckpointStrategyTest.java @@ -31,7 +31,7 @@ import google.registry.model.ofy.Ofy; import google.registry.model.registry.Registry; import google.registry.persistence.transaction.TransactionManager; import google.registry.schema.cursor.CursorDao; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.FakeClock; import google.registry.testing.InjectRule; import org.joda.time.DateTime; @@ -44,7 +44,8 @@ import org.junit.jupiter.api.extension.RegisterExtension; public class CommitLogCheckpointStrategyTest { @RegisterExtension - public final AppEngineRule appEngine = AppEngineRule.builder().withDatastoreAndCloudSql().build(); + public final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().build(); @RegisterExtension public final InjectRule inject = new InjectRule(); diff --git a/core/src/test/java/google/registry/backup/ExportCommitLogDiffActionTest.java b/core/src/test/java/google/registry/backup/ExportCommitLogDiffActionTest.java index 1fc308468..9b343135a 100644 --- a/core/src/test/java/google/registry/backup/ExportCommitLogDiffActionTest.java +++ b/core/src/test/java/google/registry/backup/ExportCommitLogDiffActionTest.java @@ -34,7 +34,7 @@ import google.registry.model.ofy.CommitLogBucket; import google.registry.model.ofy.CommitLogCheckpoint; import google.registry.model.ofy.CommitLogManifest; import google.registry.model.ofy.CommitLogMutation; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.GcsTestingUtils; import google.registry.testing.TestObject; import java.util.List; @@ -47,8 +47,8 @@ import org.junit.jupiter.api.extension.RegisterExtension; public class ExportCommitLogDiffActionTest { @RegisterExtension - public final AppEngineRule appEngine = - AppEngineRule.builder() + public final AppEngineExtension appEngine = + AppEngineExtension.builder() .withDatastoreAndCloudSql() .withOfyTestEntities(TestObject.class) .build(); diff --git a/core/src/test/java/google/registry/backup/GcsDiffFileListerTest.java b/core/src/test/java/google/registry/backup/GcsDiffFileListerTest.java index ccb441035..adb27af4b 100644 --- a/core/src/test/java/google/registry/backup/GcsDiffFileListerTest.java +++ b/core/src/test/java/google/registry/backup/GcsDiffFileListerTest.java @@ -34,7 +34,7 @@ import com.google.appengine.tools.cloudstorage.ListResult; import com.google.common.collect.Iterators; import com.google.common.flogger.LoggerConfig; import com.google.common.testing.TestLogHandler; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import java.io.IOException; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; @@ -59,7 +59,8 @@ public class GcsDiffFileListerTest { private final TestLogHandler logHandler = new TestLogHandler(); @RegisterExtension - public final AppEngineRule appEngine = AppEngineRule.builder().withDatastoreAndCloudSql().build(); + public final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().build(); @BeforeEach void beforeEach() throws Exception { diff --git a/core/src/test/java/google/registry/backup/RestoreCommitLogsActionTest.java b/core/src/test/java/google/registry/backup/RestoreCommitLogsActionTest.java index 87df435b0..fc3a25517 100644 --- a/core/src/test/java/google/registry/backup/RestoreCommitLogsActionTest.java +++ b/core/src/test/java/google/registry/backup/RestoreCommitLogsActionTest.java @@ -42,7 +42,7 @@ import google.registry.model.ofy.CommitLogCheckpoint; import google.registry.model.ofy.CommitLogCheckpointRoot; import google.registry.model.ofy.CommitLogManifest; import google.registry.model.ofy.CommitLogMutation; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.FakeClock; import google.registry.testing.FakeSleeper; import google.registry.testing.TestObject; @@ -68,8 +68,8 @@ public class RestoreCommitLogsActionTest { private final GcsService gcsService = createGcsService(); @RegisterExtension - public final AppEngineRule appEngine = - AppEngineRule.builder() + public final AppEngineExtension appEngine = + AppEngineExtension.builder() .withDatastoreAndCloudSql() .withOfyTestEntities(TestObject.class) .build(); diff --git a/core/src/test/java/google/registry/batch/AsyncTaskEnqueuerTest.java b/core/src/test/java/google/registry/batch/AsyncTaskEnqueuerTest.java index a03c1c0a2..d7bd102de 100644 --- a/core/src/test/java/google/registry/batch/AsyncTaskEnqueuerTest.java +++ b/core/src/test/java/google/registry/batch/AsyncTaskEnqueuerTest.java @@ -39,7 +39,7 @@ import com.google.common.flogger.LoggerConfig; import com.googlecode.objectify.Key; import google.registry.model.contact.ContactResource; import google.registry.schema.domain.RegistryLock; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.FakeClock; import google.registry.testing.FakeSleeper; import google.registry.testing.InjectRule; @@ -64,8 +64,8 @@ import org.mockito.quality.Strictness; public class AsyncTaskEnqueuerTest { @RegisterExtension - public final AppEngineRule appEngine = - AppEngineRule.builder().withDatastoreAndCloudSql().withTaskQueue().build(); + public final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().withTaskQueue().build(); @RegisterExtension public final InjectRule inject = new InjectRule(); diff --git a/core/src/test/java/google/registry/batch/RelockDomainActionTest.java b/core/src/test/java/google/registry/batch/RelockDomainActionTest.java index dd8f7470b..8f058d87f 100644 --- a/core/src/test/java/google/registry/batch/RelockDomainActionTest.java +++ b/core/src/test/java/google/registry/batch/RelockDomainActionTest.java @@ -34,7 +34,7 @@ import com.google.common.collect.ImmutableSet; import google.registry.model.domain.DomainBase; import google.registry.model.host.HostResource; import google.registry.schema.domain.RegistryLock; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.DeterministicStringGenerator; import google.registry.testing.FakeClock; import google.registry.testing.FakeResponse; @@ -65,8 +65,8 @@ public class RelockDomainActionTest { mock(AppEngineServiceUtils.class), clock, Duration.ZERO)); @RegisterExtension - public final AppEngineRule appEngineRule = - AppEngineRule.builder() + public final AppEngineExtension appEngineRule = + AppEngineExtension.builder() .withDatastoreAndCloudSql() .withUserService(UserInfo.create(POC_ID, "12345")) .build(); diff --git a/core/src/test/java/google/registry/batch/ResaveEntityActionTest.java b/core/src/test/java/google/registry/batch/ResaveEntityActionTest.java index 717b019c6..f26bc2278 100644 --- a/core/src/test/java/google/registry/batch/ResaveEntityActionTest.java +++ b/core/src/test/java/google/registry/batch/ResaveEntityActionTest.java @@ -42,7 +42,7 @@ import google.registry.model.domain.rgp.GracePeriodStatus; import google.registry.model.eppcommon.StatusValue; import google.registry.model.ofy.Ofy; import google.registry.request.Response; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.FakeClock; import google.registry.testing.InjectRule; import google.registry.testing.TaskQueueHelper.TaskMatcher; @@ -63,8 +63,8 @@ import org.mockito.quality.Strictness; public class ResaveEntityActionTest { @RegisterExtension - public final AppEngineRule appEngine = - AppEngineRule.builder().withDatastoreAndCloudSql().withTaskQueue().build(); + public final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().withTaskQueue().build(); @RegisterExtension public final InjectRule inject = new InjectRule(); diff --git a/core/src/test/java/google/registry/beam/initsql/BackupTestStore.java b/core/src/test/java/google/registry/beam/initsql/BackupTestStore.java index be19740bf..7a6a9910e 100644 --- a/core/src/test/java/google/registry/beam/initsql/BackupTestStore.java +++ b/core/src/test/java/google/registry/beam/initsql/BackupTestStore.java @@ -26,7 +26,7 @@ import com.googlecode.objectify.Key; import google.registry.backup.CommitLogExports; import google.registry.backup.VersionedEntity; import google.registry.model.ofy.CommitLogCheckpoint; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.FakeClock; import google.registry.tools.LevelDbFileBuilder; import java.io.File; @@ -53,7 +53,7 @@ class BackupTestStore implements AutoCloseable { DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss_SSS"); private final FakeClock fakeClock; - private AppEngineRule appEngine; + private AppEngineExtension appEngine; /** For fetching the persisted Datastore Entity directly. */ private DatastoreService datastoreService; @@ -62,12 +62,12 @@ class BackupTestStore implements AutoCloseable { BackupTestStore(FakeClock fakeClock) throws Exception { this.fakeClock = fakeClock; this.appEngine = - new AppEngineRule.Builder() + new AppEngineExtension.Builder() .withDatastore() .withoutCannedData() .withClock(fakeClock) .build(); - this.appEngine.beforeEach(null); + this.appEngine.setUp(); datastoreService = DatastoreServiceFactory.getDatastoreService(); } @@ -186,7 +186,7 @@ class BackupTestStore implements AutoCloseable { @Override public void close() throws Exception { if (appEngine != null) { - appEngine.afterEach(null); + appEngine.tearDown(); appEngine = null; } } diff --git a/core/src/test/java/google/registry/beam/initsql/DomainBaseUtilTest.java b/core/src/test/java/google/registry/beam/initsql/DomainBaseUtilTest.java index 6d6758a0b..5f6b7c95e 100644 --- a/core/src/test/java/google/registry/beam/initsql/DomainBaseUtilTest.java +++ b/core/src/test/java/google/registry/beam/initsql/DomainBaseUtilTest.java @@ -46,7 +46,7 @@ import google.registry.model.reporting.HistoryEntry; import google.registry.model.transfer.DomainTransferData; import google.registry.model.transfer.TransferStatus; import google.registry.persistence.VKey; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.DatastoreHelper; import google.registry.testing.FakeClock; import google.registry.testing.InjectRule; @@ -67,8 +67,8 @@ public class DomainBaseUtilTest { private Key domainKey; @RegisterExtension - AppEngineRule appEngineRule = - AppEngineRule.builder().withDatastore().withClock(fakeClock).build(); + AppEngineExtension appEngineRule = + AppEngineExtension.builder().withDatastore().withClock(fakeClock).build(); @RegisterExtension InjectRule injectRule = new InjectRule(); diff --git a/core/src/test/java/google/registry/beam/initsql/InitSqlPipelineTest.java b/core/src/test/java/google/registry/beam/initsql/InitSqlPipelineTest.java index 4fdf7a7df..8125b6e0c 100644 --- a/core/src/test/java/google/registry/beam/initsql/InitSqlPipelineTest.java +++ b/core/src/test/java/google/registry/beam/initsql/InitSqlPipelineTest.java @@ -49,8 +49,8 @@ import google.registry.model.transfer.DomainTransferData; import google.registry.model.transfer.TransferStatus; import google.registry.persistence.VKey; import google.registry.persistence.transaction.JpaTestRules; -import google.registry.persistence.transaction.JpaTestRules.JpaIntegrationTestRule; -import google.registry.testing.AppEngineRule; +import google.registry.persistence.transaction.JpaTestRules.JpaIntegrationTestExtension; +import google.registry.testing.AppEngineExtension; import google.registry.testing.DatastoreEntityExtension; import google.registry.testing.FakeClock; import google.registry.testing.InjectRule; @@ -95,7 +95,7 @@ class InitSqlPipelineTest { TestPipelineExtension.create().enableAbandonedNodeEnforcement(true); @RegisterExtension - final transient JpaIntegrationTestRule database = + final transient JpaIntegrationTestExtension database = new JpaTestRules.Builder().withClock(fakeClock).buildIntegrationTestRule(); // Must not be transient! @@ -118,14 +118,14 @@ class InitSqlPipelineTest { private transient HistoryEntry historyEntry; @BeforeEach - public void beforeEach() throws Exception { + void beforeEach() throws Exception { try (BackupTestStore store = new BackupTestStore(fakeClock)) { injectRule.setStaticField(Ofy.class, "clock", fakeClock); exportRootDir = Files.createDirectory(tmpDir.resolve("exports")).toFile(); persistResource(newRegistry("com", "COM")); - registrar1 = persistResource(AppEngineRule.makeRegistrar1()); - registrar2 = persistResource(AppEngineRule.makeRegistrar2()); + registrar1 = persistResource(AppEngineExtension.makeRegistrar1()); + registrar2 = persistResource(AppEngineExtension.makeRegistrar2()); Key domainKey = Key.create(null, DomainBase.class, "4-COM"); hostResource = persistResource( @@ -222,7 +222,7 @@ class InitSqlPipelineTest { } @Test - public void runPipeline() { + void runPipeline() { InitSqlPipelineOptions options = PipelineOptionsFactory.fromArgs( "--sqlCredentialUrlOverride=" diff --git a/core/src/test/java/google/registry/beam/initsql/WriteToSqlTest.java b/core/src/test/java/google/registry/beam/initsql/WriteToSqlTest.java index 038d340f2..d83ef9627 100644 --- a/core/src/test/java/google/registry/beam/initsql/WriteToSqlTest.java +++ b/core/src/test/java/google/registry/beam/initsql/WriteToSqlTest.java @@ -27,8 +27,8 @@ import google.registry.model.contact.ContactResource; import google.registry.model.ofy.Ofy; import google.registry.model.registrar.Registrar; import google.registry.persistence.transaction.JpaTestRules; -import google.registry.persistence.transaction.JpaTestRules.JpaIntegrationTestRule; -import google.registry.testing.AppEngineRule; +import google.registry.persistence.transaction.JpaTestRules.JpaIntegrationTestExtension; +import google.registry.testing.AppEngineExtension; import google.registry.testing.DatastoreEntityExtension; import google.registry.testing.DatastoreHelper; import google.registry.testing.FakeClock; @@ -58,7 +58,7 @@ class WriteToSqlTest implements Serializable { @RegisterExtension final transient InjectRule injectRule = new InjectRule(); @RegisterExtension - final transient JpaIntegrationTestRule database = + final transient JpaIntegrationTestExtension database = new JpaTestRules.Builder().withClock(fakeClock).buildIntegrationTestRule(); @SuppressWarnings("WeakerAccess") @@ -72,7 +72,7 @@ class WriteToSqlTest implements Serializable { // Must not be transient! @RegisterExtension @Order(Order.DEFAULT + 1) - public final BeamJpaExtension beamJpaExtension = + final BeamJpaExtension beamJpaExtension = new BeamJpaExtension(() -> tmpDir.resolve("credential.dat"), database.getDatabase()); private ImmutableList contacts; @@ -83,7 +83,7 @@ class WriteToSqlTest implements Serializable { injectRule.setStaticField(Ofy.class, "clock", fakeClock); // Required for contacts created below. - Registrar ofyRegistrar = AppEngineRule.makeRegistrar2(); + Registrar ofyRegistrar = AppEngineExtension.makeRegistrar2(); store.insertOrUpdate(ofyRegistrar); jpaTm().transact(() -> jpaTm().saveNewOrUpdate(store.loadAsOfyEntity(ofyRegistrar))); diff --git a/core/src/test/java/google/registry/cron/CommitLogFanoutActionTest.java b/core/src/test/java/google/registry/cron/CommitLogFanoutActionTest.java index d88d18256..53e36707e 100644 --- a/core/src/test/java/google/registry/cron/CommitLogFanoutActionTest.java +++ b/core/src/test/java/google/registry/cron/CommitLogFanoutActionTest.java @@ -19,7 +19,7 @@ import static google.registry.testing.TaskQueueHelper.assertTasksEnqueued; import com.google.common.base.Joiner; import google.registry.model.ofy.CommitLogBucket; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.TaskQueueHelper.TaskMatcher; import google.registry.util.Retrier; import google.registry.util.TaskQueueUtils; @@ -36,8 +36,8 @@ class CommitLogFanoutActionTest { private static final String QUEUE = "the-queue"; @RegisterExtension - final AppEngineRule appEngineRule = - AppEngineRule.builder() + final AppEngineExtension appEngineRule = + AppEngineExtension.builder() .withDatastoreAndCloudSql() .withTaskQueue( Joiner.on('\n') diff --git a/core/src/test/java/google/registry/cron/TldFanoutActionTest.java b/core/src/test/java/google/registry/cron/TldFanoutActionTest.java index 264f803e1..78d5d010e 100644 --- a/core/src/test/java/google/registry/cron/TldFanoutActionTest.java +++ b/core/src/test/java/google/registry/cron/TldFanoutActionTest.java @@ -31,7 +31,7 @@ import com.google.common.collect.ImmutableListMultimap; import com.google.common.collect.ImmutableSet; import google.registry.model.registry.Registry; import google.registry.model.registry.Registry.TldType; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.FakeResponse; import google.registry.testing.TaskQueueHelper.TaskMatcher; import google.registry.util.Retrier; @@ -51,8 +51,8 @@ class TldFanoutActionTest { private final FakeResponse response = new FakeResponse(); @RegisterExtension - final AppEngineRule appEngine = - AppEngineRule.builder() + final AppEngineExtension appEngine = + AppEngineExtension.builder() .withDatastoreAndCloudSql() .withTaskQueue( Joiner.on('\n') diff --git a/core/src/test/java/google/registry/dns/DnsInjectionTest.java b/core/src/test/java/google/registry/dns/DnsInjectionTest.java index bafa1e2ca..2e3beb7ca 100644 --- a/core/src/test/java/google/registry/dns/DnsInjectionTest.java +++ b/core/src/test/java/google/registry/dns/DnsInjectionTest.java @@ -27,7 +27,7 @@ import static org.mockito.Mockito.when; import google.registry.model.ofy.Ofy; import google.registry.request.HttpException.NotFoundException; import google.registry.request.RequestModule; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.FakeClock; import google.registry.testing.InjectRule; import java.io.PrintWriter; @@ -43,8 +43,8 @@ import org.junit.jupiter.api.extension.RegisterExtension; public final class DnsInjectionTest { @RegisterExtension - public final AppEngineRule appEngine = - AppEngineRule.builder().withDatastoreAndCloudSql().withTaskQueue().build(); + public final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().withTaskQueue().build(); @RegisterExtension public final InjectRule inject = new InjectRule(); diff --git a/core/src/test/java/google/registry/dns/DnsQueueTest.java b/core/src/test/java/google/registry/dns/DnsQueueTest.java index 8bd15b2ae..3e6e751b7 100644 --- a/core/src/test/java/google/registry/dns/DnsQueueTest.java +++ b/core/src/test/java/google/registry/dns/DnsQueueTest.java @@ -20,7 +20,7 @@ import static google.registry.testing.TaskQueueHelper.assertNoTasksEnqueued; import static google.registry.testing.TaskQueueHelper.assertTasksEnqueued; import static org.junit.Assert.assertThrows; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.FakeClock; import google.registry.testing.TaskQueueHelper.TaskMatcher; import org.joda.time.DateTime; @@ -32,8 +32,8 @@ import org.junit.jupiter.api.extension.RegisterExtension; public class DnsQueueTest { @RegisterExtension - public final AppEngineRule appEngine = - AppEngineRule.builder().withDatastoreAndCloudSql().withTaskQueue().build(); + public final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().withTaskQueue().build(); private DnsQueue dnsQueue; private final FakeClock clock = new FakeClock(DateTime.parse("2010-01-01T10:00:00Z")); diff --git a/core/src/test/java/google/registry/dns/PublishDnsUpdatesActionTest.java b/core/src/test/java/google/registry/dns/PublishDnsUpdatesActionTest.java index b0d9d3a51..e265fdabf 100644 --- a/core/src/test/java/google/registry/dns/PublishDnsUpdatesActionTest.java +++ b/core/src/test/java/google/registry/dns/PublishDnsUpdatesActionTest.java @@ -38,7 +38,7 @@ import google.registry.model.ofy.Ofy; import google.registry.model.registry.Registry; import google.registry.request.HttpException.ServiceUnavailableException; import google.registry.request.lock.LockHandler; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.FakeClock; import google.registry.testing.FakeLockHandler; import google.registry.testing.InjectRule; @@ -52,8 +52,8 @@ import org.junit.jupiter.api.extension.RegisterExtension; public class PublishDnsUpdatesActionTest { @RegisterExtension - public final AppEngineRule appEngine = - AppEngineRule.builder().withDatastoreAndCloudSql().withTaskQueue().build(); + public final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().withTaskQueue().build(); @RegisterExtension public final InjectRule inject = new InjectRule(); private final FakeClock clock = new FakeClock(DateTime.parse("1971-01-01TZ")); diff --git a/core/src/test/java/google/registry/dns/ReadDnsQueueActionTest.java b/core/src/test/java/google/registry/dns/ReadDnsQueueActionTest.java index 8f7f57060..1dc625967 100644 --- a/core/src/test/java/google/registry/dns/ReadDnsQueueActionTest.java +++ b/core/src/test/java/google/registry/dns/ReadDnsQueueActionTest.java @@ -45,7 +45,7 @@ import com.google.common.net.InternetDomainName; import google.registry.dns.DnsConstants.TargetType; import google.registry.model.registry.Registry; import google.registry.model.registry.Registry.TldType; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.FakeClock; import google.registry.testing.TaskQueueHelper.TaskMatcher; import google.registry.util.Retrier; @@ -70,8 +70,8 @@ public class ReadDnsQueueActionTest { private FakeClock clock = new FakeClock(DateTime.parse("3000-01-01TZ")); @RegisterExtension - public final AppEngineRule appEngine = - AppEngineRule.builder() + public final AppEngineExtension appEngine = + AppEngineExtension.builder() .withDatastoreAndCloudSql() .withTaskQueue( Joiner.on('\n') diff --git a/core/src/test/java/google/registry/dns/RefreshDnsActionTest.java b/core/src/test/java/google/registry/dns/RefreshDnsActionTest.java index 9bcbba215..d1b3de277 100644 --- a/core/src/test/java/google/registry/dns/RefreshDnsActionTest.java +++ b/core/src/test/java/google/registry/dns/RefreshDnsActionTest.java @@ -28,7 +28,7 @@ import google.registry.dns.DnsConstants.TargetType; import google.registry.model.domain.DomainBase; import google.registry.request.HttpException.BadRequestException; import google.registry.request.HttpException.NotFoundException; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.FakeClock; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -38,8 +38,8 @@ import org.junit.jupiter.api.extension.RegisterExtension; public class RefreshDnsActionTest { @RegisterExtension - public final AppEngineRule appEngine = - AppEngineRule.builder().withDatastoreAndCloudSql().withTaskQueue().build(); + public final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().withTaskQueue().build(); private final DnsQueue dnsQueue = mock(DnsQueue.class); private final FakeClock clock = new FakeClock(); diff --git a/core/src/test/java/google/registry/dns/writer/clouddns/CloudDnsWriterTest.java b/core/src/test/java/google/registry/dns/writer/clouddns/CloudDnsWriterTest.java index 67baee799..656bf71f3 100644 --- a/core/src/test/java/google/registry/dns/writer/clouddns/CloudDnsWriterTest.java +++ b/core/src/test/java/google/registry/dns/writer/clouddns/CloudDnsWriterTest.java @@ -44,7 +44,7 @@ import google.registry.model.domain.secdns.DelegationSignerData; import google.registry.model.eppcommon.StatusValue; import google.registry.model.host.HostResource; import google.registry.persistence.VKey; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.util.Retrier; import google.registry.util.SystemClock; import google.registry.util.SystemSleeper; @@ -70,7 +70,8 @@ import org.mockito.quality.Strictness; public class CloudDnsWriterTest { @RegisterExtension - public final AppEngineRule appEngine = AppEngineRule.builder().withDatastoreAndCloudSql().build(); + public final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().build(); private static final Inet4Address IPv4 = (Inet4Address) InetAddresses.forString("127.0.0.1"); private static final Inet6Address IPv6 = (Inet6Address) InetAddresses.forString("::1"); diff --git a/core/src/test/java/google/registry/dns/writer/dnsupdate/DnsUpdateWriterTest.java b/core/src/test/java/google/registry/dns/writer/dnsupdate/DnsUpdateWriterTest.java index 1c96328bc..9b7358572 100644 --- a/core/src/test/java/google/registry/dns/writer/dnsupdate/DnsUpdateWriterTest.java +++ b/core/src/test/java/google/registry/dns/writer/dnsupdate/DnsUpdateWriterTest.java @@ -41,7 +41,7 @@ import google.registry.model.domain.secdns.DelegationSignerData; import google.registry.model.eppcommon.StatusValue; import google.registry.model.host.HostResource; import google.registry.model.ofy.Ofy; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.FakeClock; import google.registry.testing.InjectRule; import java.util.ArrayList; @@ -74,8 +74,8 @@ import org.xbill.DNS.Update; public class DnsUpdateWriterTest { @RegisterExtension - public final AppEngineRule appEngine = - AppEngineRule.builder().withDatastoreAndCloudSql().withTaskQueue().build(); + public final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().withTaskQueue().build(); @RegisterExtension public final InjectRule inject = new InjectRule(); diff --git a/core/src/test/java/google/registry/export/BackupDatastoreActionTest.java b/core/src/test/java/google/registry/export/BackupDatastoreActionTest.java index 344c739c3..da836ef06 100644 --- a/core/src/test/java/google/registry/export/BackupDatastoreActionTest.java +++ b/core/src/test/java/google/registry/export/BackupDatastoreActionTest.java @@ -24,7 +24,7 @@ import com.google.common.base.Joiner; import google.registry.export.datastore.DatastoreAdmin; import google.registry.export.datastore.DatastoreAdmin.Export; import google.registry.export.datastore.Operation; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.FakeResponse; import google.registry.testing.TaskQueueHelper.TaskMatcher; import org.junit.jupiter.api.BeforeEach; @@ -39,7 +39,7 @@ import org.mockito.junit.jupiter.MockitoExtension; public class BackupDatastoreActionTest { @RegisterExtension - public final AppEngineRule appEngine = AppEngineRule.builder().withTaskQueue().build(); + public final AppEngineExtension appEngine = AppEngineExtension.builder().withTaskQueue().build(); @Mock private DatastoreAdmin datastoreAdmin; @Mock private Export exportRequest; diff --git a/core/src/test/java/google/registry/export/BigqueryPollJobActionTest.java b/core/src/test/java/google/registry/export/BigqueryPollJobActionTest.java index 6db925875..8029eea37 100644 --- a/core/src/test/java/google/registry/export/BigqueryPollJobActionTest.java +++ b/core/src/test/java/google/registry/export/BigqueryPollJobActionTest.java @@ -39,7 +39,7 @@ import com.google.common.flogger.LoggerConfig; import google.registry.export.BigqueryPollJobAction.BigqueryPollJobEnqueuer; import google.registry.request.HttpException.BadRequestException; import google.registry.request.HttpException.NotModifiedException; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.FakeClock; import google.registry.testing.FakeSleeper; import google.registry.testing.TaskQueueHelper; @@ -60,8 +60,8 @@ import org.junit.jupiter.api.extension.RegisterExtension; public class BigqueryPollJobActionTest { @RegisterExtension - public final AppEngineRule appEngine = - AppEngineRule.builder().withDatastoreAndCloudSql().withTaskQueue().build(); + public final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().withTaskQueue().build(); private static final String PROJECT_ID = "project_id"; private static final String JOB_ID = "job_id"; diff --git a/core/src/test/java/google/registry/export/CheckBackupActionTest.java b/core/src/test/java/google/registry/export/CheckBackupActionTest.java index 4cd3853f3..670b85adb 100644 --- a/core/src/test/java/google/registry/export/CheckBackupActionTest.java +++ b/core/src/test/java/google/registry/export/CheckBackupActionTest.java @@ -35,7 +35,7 @@ import google.registry.request.Action.Method; import google.registry.request.HttpException.BadRequestException; import google.registry.request.HttpException.NoContentException; import google.registry.request.HttpException.NotModifiedException; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.FakeClock; import google.registry.testing.FakeResponse; import google.registry.testing.TaskQueueHelper.TaskMatcher; @@ -61,7 +61,7 @@ public class CheckBackupActionTest { private static final JsonFactory JSON_FACTORY = JacksonFactory.getDefaultInstance(); @RegisterExtension - public final AppEngineRule appEngine = AppEngineRule.builder().withTaskQueue().build(); + public final AppEngineExtension appEngine = AppEngineExtension.builder().withTaskQueue().build(); @Mock private DatastoreAdmin datastoreAdmin; @Mock private Get getNotFoundBackupProgressRequest; diff --git a/core/src/test/java/google/registry/export/ExportPremiumTermsActionTest.java b/core/src/test/java/google/registry/export/ExportPremiumTermsActionTest.java index aa5728797..44f5bd91e 100644 --- a/core/src/test/java/google/registry/export/ExportPremiumTermsActionTest.java +++ b/core/src/test/java/google/registry/export/ExportPremiumTermsActionTest.java @@ -41,7 +41,7 @@ import google.registry.model.registry.Registry; import google.registry.model.registry.label.PremiumList; import google.registry.request.Response; import google.registry.storage.drive.DriveConnection; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import java.io.IOException; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -58,7 +58,8 @@ public class ExportPremiumTermsActionTest { DISCLAIMER_WITH_NEWLINE + "0,USD 549.00\n" + "2048,USD 549.00\n"; @RegisterExtension - public final AppEngineRule appEngine = AppEngineRule.builder().withDatastoreAndCloudSql().build(); + public final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().build(); private final DriveConnection driveConnection = mock(DriveConnection.class); private final Response response = mock(Response.class); diff --git a/core/src/test/java/google/registry/export/ExportReservedTermsActionTest.java b/core/src/test/java/google/registry/export/ExportReservedTermsActionTest.java index 6f13bbc66..f1ae8f1a1 100644 --- a/core/src/test/java/google/registry/export/ExportReservedTermsActionTest.java +++ b/core/src/test/java/google/registry/export/ExportReservedTermsActionTest.java @@ -36,7 +36,7 @@ import google.registry.model.registry.Registry; import google.registry.model.registry.label.ReservedList; import google.registry.request.Response; import google.registry.storage.drive.DriveConnection; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import java.io.IOException; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -46,7 +46,8 @@ import org.junit.jupiter.api.extension.RegisterExtension; public class ExportReservedTermsActionTest { @RegisterExtension - public final AppEngineRule appEngine = AppEngineRule.builder().withDatastoreAndCloudSql().build(); + public final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().build(); private final DriveConnection driveConnection = mock(DriveConnection.class); private final Response response = mock(Response.class); diff --git a/core/src/test/java/google/registry/export/ExportUtilsTest.java b/core/src/test/java/google/registry/export/ExportUtilsTest.java index 347906ec9..79e69bb8e 100644 --- a/core/src/test/java/google/registry/export/ExportUtilsTest.java +++ b/core/src/test/java/google/registry/export/ExportUtilsTest.java @@ -21,7 +21,7 @@ import static google.registry.testing.DatastoreHelper.persistResource; import google.registry.model.registry.Registry; import google.registry.model.registry.label.ReservedList; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; @@ -29,7 +29,8 @@ import org.junit.jupiter.api.extension.RegisterExtension; class ExportUtilsTest { @RegisterExtension - public final AppEngineRule appEngine = AppEngineRule.builder().withDatastoreAndCloudSql().build(); + public final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().build(); @Test void test_exportReservedTerms() { diff --git a/core/src/test/java/google/registry/export/SyncGroupMembersActionTest.java b/core/src/test/java/google/registry/export/SyncGroupMembersActionTest.java index cdc8db96e..fc7428d0b 100644 --- a/core/src/test/java/google/registry/export/SyncGroupMembersActionTest.java +++ b/core/src/test/java/google/registry/export/SyncGroupMembersActionTest.java @@ -39,7 +39,7 @@ import google.registry.groups.GroupsConnection.Role; import google.registry.model.registrar.Registrar; import google.registry.model.registrar.RegistrarContact; import google.registry.request.Response; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.FakeClock; import google.registry.testing.FakeSleeper; import google.registry.testing.InjectRule; @@ -52,12 +52,13 @@ import org.junit.jupiter.api.extension.RegisterExtension; * Unit tests for {@link SyncGroupMembersAction}. * *

Note that this relies on the registrars NewRegistrar and TheRegistrar created by default in - * {@link AppEngineRule}. + * {@link AppEngineExtension}. */ public class SyncGroupMembersActionTest { @RegisterExtension - public final AppEngineRule appEngine = AppEngineRule.builder().withDatastoreAndCloudSql().build(); + public final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().build(); @RegisterExtension public final InjectRule inject = new InjectRule(); diff --git a/core/src/test/java/google/registry/export/UpdateSnapshotViewActionTest.java b/core/src/test/java/google/registry/export/UpdateSnapshotViewActionTest.java index d4d2f2f92..9fd95affd 100644 --- a/core/src/test/java/google/registry/export/UpdateSnapshotViewActionTest.java +++ b/core/src/test/java/google/registry/export/UpdateSnapshotViewActionTest.java @@ -37,7 +37,7 @@ import com.google.api.services.bigquery.model.Table; import com.google.common.collect.Iterables; import google.registry.bigquery.CheckedBigquery; import google.registry.request.HttpException.InternalServerErrorException; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.TaskQueueHelper.TaskMatcher; import java.io.IOException; import org.junit.jupiter.api.BeforeEach; @@ -50,7 +50,7 @@ import org.mockito.InOrder; public class UpdateSnapshotViewActionTest { @RegisterExtension - public final AppEngineRule appEngine = AppEngineRule.builder().withTaskQueue().build(); + public final AppEngineExtension appEngine = AppEngineExtension.builder().withTaskQueue().build(); private final CheckedBigquery checkedBigquery = mock(CheckedBigquery.class); private final Bigquery bigquery = mock(Bigquery.class); diff --git a/core/src/test/java/google/registry/export/UploadDatastoreBackupActionTest.java b/core/src/test/java/google/registry/export/UploadDatastoreBackupActionTest.java index 16c66c118..94b1f9f57 100644 --- a/core/src/test/java/google/registry/export/UploadDatastoreBackupActionTest.java +++ b/core/src/test/java/google/registry/export/UploadDatastoreBackupActionTest.java @@ -45,7 +45,7 @@ import com.google.common.collect.Iterables; import google.registry.bigquery.CheckedBigquery; import google.registry.export.BigqueryPollJobAction.BigqueryPollJobEnqueuer; import google.registry.request.HttpException.InternalServerErrorException; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.TaskQueueHelper.TaskMatcher; import java.io.IOException; import java.util.List; @@ -58,7 +58,7 @@ import org.mockito.ArgumentCaptor; public class UploadDatastoreBackupActionTest { @RegisterExtension - public final AppEngineRule appEngine = AppEngineRule.builder().withTaskQueue().build(); + public final AppEngineExtension appEngine = AppEngineExtension.builder().withTaskQueue().build(); private final CheckedBigquery checkedBigquery = mock(CheckedBigquery.class); private final Bigquery bigquery = mock(Bigquery.class); diff --git a/core/src/test/java/google/registry/export/sheet/SyncRegistrarsSheetActionTest.java b/core/src/test/java/google/registry/export/sheet/SyncRegistrarsSheetActionTest.java index e07204d9b..d5a508f8d 100644 --- a/core/src/test/java/google/registry/export/sheet/SyncRegistrarsSheetActionTest.java +++ b/core/src/test/java/google/registry/export/sheet/SyncRegistrarsSheetActionTest.java @@ -23,7 +23,7 @@ import static org.mockito.Mockito.verifyNoInteractions; import static org.mockito.Mockito.verifyNoMoreInteractions; import static org.mockito.Mockito.when; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.FakeLockHandler; import google.registry.testing.FakeResponse; import java.util.Optional; @@ -37,8 +37,8 @@ import org.junit.jupiter.api.extension.RegisterExtension; public class SyncRegistrarsSheetActionTest { @RegisterExtension - public final AppEngineRule appEngine = - AppEngineRule.builder().withDatastoreAndCloudSql().withTaskQueue().build(); + public final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().withTaskQueue().build(); private final FakeResponse response = new FakeResponse(); private final SyncRegistrarsSheet syncRegistrarsSheet = mock(SyncRegistrarsSheet.class); diff --git a/core/src/test/java/google/registry/export/sheet/SyncRegistrarsSheetTest.java b/core/src/test/java/google/registry/export/sheet/SyncRegistrarsSheetTest.java index 2b3d96b41..66c18ebbb 100644 --- a/core/src/test/java/google/registry/export/sheet/SyncRegistrarsSheetTest.java +++ b/core/src/test/java/google/registry/export/sheet/SyncRegistrarsSheetTest.java @@ -38,7 +38,7 @@ import google.registry.model.ofy.Ofy; import google.registry.model.registrar.Registrar; import google.registry.model.registrar.RegistrarAddress; import google.registry.model.registrar.RegistrarContact; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.DatastoreHelper; import google.registry.testing.FakeClock; import google.registry.testing.InjectRule; @@ -57,7 +57,8 @@ import org.mockito.junit.jupiter.MockitoExtension; public class SyncRegistrarsSheetTest { @RegisterExtension - public final AppEngineRule appEngine = AppEngineRule.builder().withDatastoreAndCloudSql().build(); + public final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().build(); @RegisterExtension public final InjectRule inject = new InjectRule(); diff --git a/core/src/test/java/google/registry/flows/CheckApiActionTest.java b/core/src/test/java/google/registry/flows/CheckApiActionTest.java index 14f2c1baa..627ab75d3 100644 --- a/core/src/test/java/google/registry/flows/CheckApiActionTest.java +++ b/core/src/test/java/google/registry/flows/CheckApiActionTest.java @@ -33,7 +33,7 @@ import google.registry.monitoring.whitebox.CheckApiMetric; import google.registry.monitoring.whitebox.CheckApiMetric.Availability; import google.registry.monitoring.whitebox.CheckApiMetric.Status; import google.registry.monitoring.whitebox.CheckApiMetric.Tier; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.FakeClock; import google.registry.testing.FakeResponse; import java.util.Map; @@ -55,7 +55,8 @@ class CheckApiActionTest { private static final DateTime START_TIME = DateTime.parse("2000-01-01T00:00:00.0Z"); @RegisterExtension - final AppEngineRule appEngine = AppEngineRule.builder().withDatastoreAndCloudSql().build(); + final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().build(); @Mock private CheckApiMetrics checkApiMetrics; @Captor private ArgumentCaptor metricCaptor; diff --git a/core/src/test/java/google/registry/flows/EppCommitLogsTest.java b/core/src/test/java/google/registry/flows/EppCommitLogsTest.java index cec165e6c..1d1a28556 100644 --- a/core/src/test/java/google/registry/flows/EppCommitLogsTest.java +++ b/core/src/test/java/google/registry/flows/EppCommitLogsTest.java @@ -30,7 +30,7 @@ import google.registry.flows.EppTestComponent.FakesAndMocksModule; import google.registry.model.domain.DomainBase; import google.registry.model.ofy.Ofy; import google.registry.monitoring.whitebox.EppMetric; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.EppLoader; import google.registry.testing.FakeClock; import google.registry.testing.FakeHttpSession; @@ -44,8 +44,8 @@ import org.junit.jupiter.api.extension.RegisterExtension; class EppCommitLogsTest { @RegisterExtension - final AppEngineRule appEngine = - AppEngineRule.builder().withDatastoreAndCloudSql().withTaskQueue().build(); + final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().withTaskQueue().build(); @RegisterExtension final InjectRule inject = new InjectRule(); diff --git a/core/src/test/java/google/registry/flows/EppControllerTest.java b/core/src/test/java/google/registry/flows/EppControllerTest.java index 2ac618020..acd632bc9 100644 --- a/core/src/test/java/google/registry/flows/EppControllerTest.java +++ b/core/src/test/java/google/registry/flows/EppControllerTest.java @@ -40,7 +40,7 @@ import google.registry.model.eppoutput.EppResponse; import google.registry.model.eppoutput.Result; import google.registry.model.eppoutput.Result.Code; import google.registry.monitoring.whitebox.EppMetric; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.FakeClock; import google.registry.util.Clock; import google.registry.xml.ValidationMode; @@ -67,7 +67,8 @@ import org.mockito.quality.Strictness; class EppControllerTest { @RegisterExtension - AppEngineRule appEngineRule = new AppEngineRule.Builder().withDatastoreAndCloudSql().build(); + AppEngineExtension appEngineRule = + new AppEngineExtension.Builder().withDatastoreAndCloudSql().build(); @Mock SessionMetadata sessionMetadata; @Mock TransportCredentials transportCredentials; diff --git a/core/src/test/java/google/registry/flows/EppLifecycleContactTest.java b/core/src/test/java/google/registry/flows/EppLifecycleContactTest.java index 84a3f8152..1a8172e7f 100644 --- a/core/src/test/java/google/registry/flows/EppLifecycleContactTest.java +++ b/core/src/test/java/google/registry/flows/EppLifecycleContactTest.java @@ -21,7 +21,7 @@ import static google.registry.model.eppoutput.Result.Code.SUCCESS_WITH_NO_MESSAG import static google.registry.testing.EppMetricSubject.assertThat; import com.google.common.collect.ImmutableMap; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; @@ -29,8 +29,8 @@ import org.junit.jupiter.api.extension.RegisterExtension; class EppLifecycleContactTest extends EppTestCase { @RegisterExtension - final AppEngineRule appEngine = - AppEngineRule.builder().withDatastoreAndCloudSql().withTaskQueue().build(); + final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().withTaskQueue().build(); @Test void testContactLifecycle() throws Exception { diff --git a/core/src/test/java/google/registry/flows/EppLifecycleDomainTest.java b/core/src/test/java/google/registry/flows/EppLifecycleDomainTest.java index 3a355309f..5641cdfdf 100644 --- a/core/src/test/java/google/registry/flows/EppLifecycleDomainTest.java +++ b/core/src/test/java/google/registry/flows/EppLifecycleDomainTest.java @@ -45,7 +45,7 @@ import google.registry.model.domain.DomainBase; import google.registry.model.registry.Registry; import google.registry.model.registry.Registry.TldState; import google.registry.model.reporting.HistoryEntry.Type; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import org.joda.money.Money; import org.joda.time.DateTime; import org.junit.jupiter.api.BeforeEach; @@ -62,8 +62,8 @@ class EppLifecycleDomainTest extends EppTestCase { "EXDATE", "2003-06-01T00:04:00Z"); @RegisterExtension - final AppEngineRule appEngine = - AppEngineRule.builder().withDatastoreAndCloudSql().withTaskQueue().build(); + final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().withTaskQueue().build(); @BeforeEach void beforeEach() { diff --git a/core/src/test/java/google/registry/flows/EppLifecycleHostTest.java b/core/src/test/java/google/registry/flows/EppLifecycleHostTest.java index feddd52d2..66f69daa2 100644 --- a/core/src/test/java/google/registry/flows/EppLifecycleHostTest.java +++ b/core/src/test/java/google/registry/flows/EppLifecycleHostTest.java @@ -26,7 +26,7 @@ import static google.registry.testing.HostResourceSubject.assertAboutHosts; import com.google.common.collect.ImmutableMap; import google.registry.model.domain.DomainBase; import google.registry.model.host.HostResource; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import org.joda.time.DateTime; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; @@ -35,8 +35,8 @@ import org.junit.jupiter.api.extension.RegisterExtension; class EppLifecycleHostTest extends EppTestCase { @RegisterExtension - final AppEngineRule appEngine = - AppEngineRule.builder().withDatastoreAndCloudSql().withTaskQueue().build(); + final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().withTaskQueue().build(); @Test void testLifecycle() throws Exception { diff --git a/core/src/test/java/google/registry/flows/EppLifecycleLoginTest.java b/core/src/test/java/google/registry/flows/EppLifecycleLoginTest.java index 2165777cf..f75d7a0d2 100644 --- a/core/src/test/java/google/registry/flows/EppLifecycleLoginTest.java +++ b/core/src/test/java/google/registry/flows/EppLifecycleLoginTest.java @@ -18,7 +18,7 @@ import static google.registry.model.eppoutput.Result.Code.SUCCESS; import static google.registry.model.eppoutput.Result.Code.SUCCESS_AND_CLOSE; import static google.registry.testing.EppMetricSubject.assertThat; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; @@ -26,8 +26,8 @@ import org.junit.jupiter.api.extension.RegisterExtension; class EppLifecycleLoginTest extends EppTestCase { @RegisterExtension - final AppEngineRule appEngine = - AppEngineRule.builder().withDatastoreAndCloudSql().withTaskQueue().build(); + final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().withTaskQueue().build(); @Test void testLoginAndLogout_recordsEppMetric() throws Exception { diff --git a/core/src/test/java/google/registry/flows/EppLoggedOutTest.java b/core/src/test/java/google/registry/flows/EppLoggedOutTest.java index 66f65253b..c8f0201b8 100644 --- a/core/src/test/java/google/registry/flows/EppLoggedOutTest.java +++ b/core/src/test/java/google/registry/flows/EppLoggedOutTest.java @@ -18,7 +18,7 @@ import static org.joda.time.DateTimeZone.UTC; import static org.joda.time.format.ISODateTimeFormat.dateTimeNoMillis; import com.google.common.collect.ImmutableMap; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import org.joda.time.DateTime; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; @@ -27,7 +27,8 @@ import org.junit.jupiter.api.extension.RegisterExtension; class EppLoggedOutTest extends EppTestCase { @RegisterExtension - final AppEngineRule appEngine = AppEngineRule.builder().withDatastoreAndCloudSql().build(); + final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().build(); @Test void testHello() throws Exception { diff --git a/core/src/test/java/google/registry/flows/EppLoginTlsTest.java b/core/src/test/java/google/registry/flows/EppLoginTlsTest.java index 9cc0806f7..83dfe8d97 100644 --- a/core/src/test/java/google/registry/flows/EppLoginTlsTest.java +++ b/core/src/test/java/google/registry/flows/EppLoginTlsTest.java @@ -19,7 +19,7 @@ import static google.registry.testing.DatastoreHelper.persistResource; import static org.joda.time.DateTimeZone.UTC; import com.google.common.collect.ImmutableMap; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.CertificateSamples; import java.util.Optional; import org.joda.time.DateTime; @@ -31,7 +31,8 @@ import org.junit.jupiter.api.extension.RegisterExtension; class EppLoginTlsTest extends EppTestCase { @RegisterExtension - final AppEngineRule appEngine = AppEngineRule.builder().withDatastoreAndCloudSql().build(); + final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().build(); void setClientCertificateHash(String clientCertificateHash) { setTransportCredentials( diff --git a/core/src/test/java/google/registry/flows/EppXxeAttackTest.java b/core/src/test/java/google/registry/flows/EppXxeAttackTest.java index cf790c7ea..e2fb52226 100644 --- a/core/src/test/java/google/registry/flows/EppXxeAttackTest.java +++ b/core/src/test/java/google/registry/flows/EppXxeAttackTest.java @@ -15,7 +15,7 @@ package google.registry.flows; import com.google.common.collect.ImmutableMap; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; @@ -23,7 +23,8 @@ import org.junit.jupiter.api.extension.RegisterExtension; class EppXxeAttackTest extends EppTestCase { @RegisterExtension - final AppEngineRule appEngine = AppEngineRule.builder().withDatastoreAndCloudSql().build(); + final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().build(); @Test void testRemoteXmlExternalEntity() throws Exception { diff --git a/core/src/test/java/google/registry/flows/ExtensionManagerTest.java b/core/src/test/java/google/registry/flows/ExtensionManagerTest.java index fc6ed51a2..6b140af67 100644 --- a/core/src/test/java/google/registry/flows/ExtensionManagerTest.java +++ b/core/src/test/java/google/registry/flows/ExtensionManagerTest.java @@ -35,7 +35,7 @@ import google.registry.model.domain.superuser.DomainTransferRequestSuperuserExte import google.registry.model.eppcommon.ProtocolDefinition.ServiceExtension; import google.registry.model.eppinput.EppInput; import google.registry.model.eppinput.EppInput.CommandExtension; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.util.TypeUtils; import java.util.logging.LogRecord; import org.junit.jupiter.api.Test; @@ -45,7 +45,8 @@ import org.junit.jupiter.api.extension.RegisterExtension; class ExtensionManagerTest { @RegisterExtension - final AppEngineRule appEngine = AppEngineRule.builder().withDatastoreAndCloudSql().build(); + final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().build(); @Test void testDuplicateExtensionsForbidden() { diff --git a/core/src/test/java/google/registry/flows/FlowRunnerTest.java b/core/src/test/java/google/registry/flows/FlowRunnerTest.java index 1c4bc5ba8..caf7775b8 100644 --- a/core/src/test/java/google/registry/flows/FlowRunnerTest.java +++ b/core/src/test/java/google/registry/flows/FlowRunnerTest.java @@ -33,7 +33,7 @@ import google.registry.model.eppcommon.Trid; import google.registry.model.eppoutput.EppOutput.ResponseOrGreeting; import google.registry.model.eppoutput.EppResponse; import google.registry.monitoring.whitebox.EppMetric; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.FakeClock; import google.registry.testing.FakeHttpSession; import java.util.List; @@ -46,7 +46,8 @@ import org.mockito.Mockito; /** Unit tests for {@link FlowRunner}. */ class FlowRunnerTest { - @RegisterExtension final AppEngineRule appEngineRule = new AppEngineRule.Builder().build(); + @RegisterExtension + final AppEngineExtension appEngineRule = new AppEngineExtension.Builder().build(); private final FlowRunner flowRunner = new FlowRunner(); private final EppMetric.Builder eppMetricBuilder = EppMetric.builderForRequest(new FakeClock()); diff --git a/core/src/test/java/google/registry/flows/FlowTestCase.java b/core/src/test/java/google/registry/flows/FlowTestCase.java index b1bafc52f..03c529df6 100644 --- a/core/src/test/java/google/registry/flows/FlowTestCase.java +++ b/core/src/test/java/google/registry/flows/FlowTestCase.java @@ -48,7 +48,7 @@ import google.registry.model.poll.PollMessage; import google.registry.model.reporting.HistoryEntry; import google.registry.model.tmch.ClaimsListShard.ClaimsListSingleton; import google.registry.monitoring.whitebox.EppMetric; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.EppLoader; import google.registry.testing.FakeClock; import google.registry.testing.FakeHttpSession; @@ -86,8 +86,8 @@ public abstract class FlowTestCase { } @RegisterExtension - final AppEngineRule appEngine = - AppEngineRule.builder().withDatastoreAndCloudSql().withTaskQueue().build(); + final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().withTaskQueue().build(); @RegisterExtension final InjectRule inject = new InjectRule(); diff --git a/core/src/test/java/google/registry/flows/TlsCredentialsTest.java b/core/src/test/java/google/registry/flows/TlsCredentialsTest.java index 1b52868d7..91a3e3629 100644 --- a/core/src/test/java/google/registry/flows/TlsCredentialsTest.java +++ b/core/src/test/java/google/registry/flows/TlsCredentialsTest.java @@ -24,7 +24,7 @@ import static org.mockito.Mockito.when; import google.registry.model.registrar.Registrar; import google.registry.request.HttpException.BadRequestException; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import java.util.Optional; import javax.servlet.http.HttpServletRequest; import org.joda.time.DateTime; @@ -35,7 +35,8 @@ import org.junit.jupiter.api.extension.RegisterExtension; final class TlsCredentialsTest { @RegisterExtension - final AppEngineRule appEngine = AppEngineRule.builder().withDatastoreAndCloudSql().build(); + final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().build(); @Test void testProvideClientCertificateHash() { diff --git a/core/src/test/java/google/registry/flows/contact/ContactTransferFlowTestCase.java b/core/src/test/java/google/registry/flows/contact/ContactTransferFlowTestCase.java index 73c7466e6..2c9fcef5f 100644 --- a/core/src/test/java/google/registry/flows/contact/ContactTransferFlowTestCase.java +++ b/core/src/test/java/google/registry/flows/contact/ContactTransferFlowTestCase.java @@ -25,7 +25,7 @@ import google.registry.model.EppResource; import google.registry.model.contact.ContactResource; import google.registry.model.registry.Registry; import google.registry.model.transfer.TransferStatus; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import org.joda.time.DateTime; import org.joda.time.Duration; import org.junit.jupiter.api.BeforeEach; @@ -58,8 +58,7 @@ abstract class ContactTransferFlowTestCase void beforeEachDomainTransferFlowTestCase() { // Registrar ClientZ is used in tests that need another registrar that definitely doesn't own // the resources in question. - persistResource( - AppEngineRule.makeRegistrar1().asBuilder().setClientId("ClientZ").build()); + persistResource(AppEngineExtension.makeRegistrar1().asBuilder().setClientId("ClientZ").build()); } static DomainBase persistWithPendingTransfer(DomainBase domain) { diff --git a/core/src/test/java/google/registry/flows/domain/DomainTransferQueryFlowTest.java b/core/src/test/java/google/registry/flows/domain/DomainTransferQueryFlowTest.java index d746054bc..fba20af6c 100644 --- a/core/src/test/java/google/registry/flows/domain/DomainTransferQueryFlowTest.java +++ b/core/src/test/java/google/registry/flows/domain/DomainTransferQueryFlowTest.java @@ -42,7 +42,7 @@ class DomainTransferQueryFlowTest extends DomainTransferFlowTestCase { @BeforeEach - void setUp() { + void beforeEach() { setEppInput("domain_transfer_query.xml"); setClientIdForFlow("NewRegistrar"); setupDomainWithPendingTransfer("example", "tld"); diff --git a/core/src/test/java/google/registry/flows/domain/token/AllocationTokenFlowUtilsTest.java b/core/src/test/java/google/registry/flows/domain/token/AllocationTokenFlowUtilsTest.java index 8eb73afd3..003ec2097 100644 --- a/core/src/test/java/google/registry/flows/domain/token/AllocationTokenFlowUtilsTest.java +++ b/core/src/test/java/google/registry/flows/domain/token/AllocationTokenFlowUtilsTest.java @@ -47,7 +47,7 @@ import google.registry.model.domain.token.AllocationToken; import google.registry.model.domain.token.AllocationToken.TokenStatus; import google.registry.model.registry.Registry; import google.registry.model.reporting.HistoryEntry; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import org.joda.time.DateTime; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -60,7 +60,8 @@ class AllocationTokenFlowUtilsTest { new AllocationTokenFlowUtils(new AllocationTokenCustomLogic()); @RegisterExtension - final AppEngineRule appEngine = AppEngineRule.builder().withDatastoreAndCloudSql().build(); + final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().build(); @BeforeEach void beforeEach() { diff --git a/core/src/test/java/google/registry/flows/host/HostFlowUtilsTest.java b/core/src/test/java/google/registry/flows/host/HostFlowUtilsTest.java index 8ff2c39c8..daab02625 100644 --- a/core/src/test/java/google/registry/flows/host/HostFlowUtilsTest.java +++ b/core/src/test/java/google/registry/flows/host/HostFlowUtilsTest.java @@ -25,7 +25,7 @@ import google.registry.flows.host.HostFlowUtils.HostNameNotPunyCodedException; import google.registry.flows.host.HostFlowUtils.HostNameTooLongException; import google.registry.flows.host.HostFlowUtils.HostNameTooShallowException; import google.registry.flows.host.HostFlowUtils.InvalidHostNameException; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; @@ -33,7 +33,8 @@ import org.junit.jupiter.api.extension.RegisterExtension; class HostFlowUtilsTest { @RegisterExtension - final AppEngineRule appEngine = AppEngineRule.builder().withDatastoreAndCloudSql().build(); + final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().build(); @Test void test_validExternalHostName_validates() throws Exception { diff --git a/core/src/test/java/google/registry/keyring/kms/KmsKeyringTest.java b/core/src/test/java/google/registry/keyring/kms/KmsKeyringTest.java index b8edd4050..2b147f7d7 100644 --- a/core/src/test/java/google/registry/keyring/kms/KmsKeyringTest.java +++ b/core/src/test/java/google/registry/keyring/kms/KmsKeyringTest.java @@ -21,7 +21,7 @@ import com.google.common.collect.ImmutableList; import google.registry.keyring.api.KeySerializer; import google.registry.model.server.KmsSecret; import google.registry.model.server.KmsSecretRevision; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.BouncyCastleProviderExtension; import org.bouncycastle.openpgp.PGPKeyPair; import org.bouncycastle.openpgp.PGPPrivateKey; @@ -37,7 +37,8 @@ class KmsKeyringTest { final BouncyCastleProviderExtension bouncy = new BouncyCastleProviderExtension(); @RegisterExtension - final AppEngineRule appEngine = AppEngineRule.builder().withDatastoreAndCloudSql().build(); + final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().build(); private KmsKeyring keyring; diff --git a/core/src/test/java/google/registry/keyring/kms/KmsUpdaterTest.java b/core/src/test/java/google/registry/keyring/kms/KmsUpdaterTest.java index eb6c29a14..21ef5341c 100644 --- a/core/src/test/java/google/registry/keyring/kms/KmsUpdaterTest.java +++ b/core/src/test/java/google/registry/keyring/kms/KmsUpdaterTest.java @@ -22,7 +22,7 @@ import com.googlecode.objectify.Key; import google.registry.keyring.api.KeySerializer; import google.registry.model.server.KmsSecret; import google.registry.model.server.KmsSecretRevision; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.BouncyCastleProviderExtension; import java.io.IOException; import org.bouncycastle.openpgp.PGPKeyPair; @@ -35,7 +35,8 @@ import org.junit.jupiter.api.extension.RegisterExtension; public class KmsUpdaterTest { @RegisterExtension - public final AppEngineRule appEngine = AppEngineRule.builder().withDatastoreAndCloudSql().build(); + public final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().build(); @RegisterExtension public final BouncyCastleProviderExtension bouncy = new BouncyCastleProviderExtension(); diff --git a/core/src/test/java/google/registry/mapreduce/inputs/ChildEntityInputTest.java b/core/src/test/java/google/registry/mapreduce/inputs/ChildEntityInputTest.java index c94bca929..d0259bf45 100644 --- a/core/src/test/java/google/registry/mapreduce/inputs/ChildEntityInputTest.java +++ b/core/src/test/java/google/registry/mapreduce/inputs/ChildEntityInputTest.java @@ -39,7 +39,7 @@ import google.registry.model.contact.ContactResource; import google.registry.model.domain.DomainBase; import google.registry.model.index.EppResourceIndex; import google.registry.model.reporting.HistoryEntry; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.ObjectInputStream; @@ -59,7 +59,8 @@ class ChildEntityInputTest { private static final DateTime now = DateTime.now(DateTimeZone.UTC); @RegisterExtension - final AppEngineRule appEngine = AppEngineRule.builder().withDatastoreAndCloudSql().build(); + final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().build(); private DomainBase domainA; private DomainBase domainB; diff --git a/core/src/test/java/google/registry/mapreduce/inputs/CommitLogManifestInputTest.java b/core/src/test/java/google/registry/mapreduce/inputs/CommitLogManifestInputTest.java index 099dc3e53..02147d5c2 100644 --- a/core/src/test/java/google/registry/mapreduce/inputs/CommitLogManifestInputTest.java +++ b/core/src/test/java/google/registry/mapreduce/inputs/CommitLogManifestInputTest.java @@ -22,7 +22,7 @@ import com.google.appengine.tools.mapreduce.InputReader; import com.googlecode.objectify.Key; import google.registry.model.ofy.CommitLogBucket; import google.registry.model.ofy.CommitLogManifest; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.DatastoreHelper; import java.util.ArrayList; import java.util.HashSet; @@ -45,7 +45,8 @@ final class CommitLogManifestInputTest { private static final DateTime DATE_TIME_NEW2 = DateTime.parse("2017-12-19T12:00Z"); @RegisterExtension - final AppEngineRule appEngine = AppEngineRule.builder().withDatastoreAndCloudSql().build(); + final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().build(); @Test void testInputOlderThan_allFound() throws Exception { diff --git a/core/src/test/java/google/registry/mapreduce/inputs/EppResourceInputsTest.java b/core/src/test/java/google/registry/mapreduce/inputs/EppResourceInputsTest.java index 1521eee40..6fe8b8ab3 100644 --- a/core/src/test/java/google/registry/mapreduce/inputs/EppResourceInputsTest.java +++ b/core/src/test/java/google/registry/mapreduce/inputs/EppResourceInputsTest.java @@ -36,7 +36,7 @@ import google.registry.model.contact.ContactResource; import google.registry.model.domain.DomainBase; import google.registry.model.host.HostResource; import google.registry.model.index.EppResourceIndex; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.ObjectInputStream; @@ -53,7 +53,8 @@ class EppResourceInputsTest { private static final double EPSILON = 0.0001; @RegisterExtension - final AppEngineRule appEngine = AppEngineRule.builder().withDatastoreAndCloudSql().build(); + final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().build(); @SuppressWarnings("unchecked") private T serializeAndDeserialize(T obj) throws Exception { diff --git a/core/src/test/java/google/registry/model/CreateAutoTimestampTest.java b/core/src/test/java/google/registry/model/CreateAutoTimestampTest.java index 2b6dc50a5..0db3b73e2 100644 --- a/core/src/test/java/google/registry/model/CreateAutoTimestampTest.java +++ b/core/src/test/java/google/registry/model/CreateAutoTimestampTest.java @@ -21,7 +21,7 @@ import static org.joda.time.DateTimeZone.UTC; import com.googlecode.objectify.annotation.Entity; import google.registry.model.common.CrossTldSingleton; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import org.joda.time.DateTime; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; @@ -30,8 +30,8 @@ import org.junit.jupiter.api.extension.RegisterExtension; public class CreateAutoTimestampTest { @RegisterExtension - public final AppEngineRule appEngine = - AppEngineRule.builder() + public final AppEngineExtension appEngine = + AppEngineExtension.builder() .withDatastoreAndCloudSql() .withOfyTestEntities(TestObject.class) .build(); diff --git a/core/src/test/java/google/registry/model/EntityTestCase.java b/core/src/test/java/google/registry/model/EntityTestCase.java index 188c828d7..94326ffdc 100644 --- a/core/src/test/java/google/registry/model/EntityTestCase.java +++ b/core/src/test/java/google/registry/model/EntityTestCase.java @@ -29,7 +29,7 @@ import com.googlecode.objectify.annotation.Serialize; import com.googlecode.objectify.cmd.Query; import google.registry.model.ofy.Ofy; import google.registry.persistence.VKey; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.FakeClock; import google.registry.testing.InjectRule; import google.registry.util.CidrAddressBlock; @@ -59,7 +59,7 @@ public abstract class EntityTestCase { protected FakeClock fakeClock = new FakeClock(DateTime.now(UTC)); - @RegisterExtension public final AppEngineRule appEngine; + @RegisterExtension public final AppEngineExtension appEngine; @RegisterExtension public InjectRule inject = new InjectRule(); @@ -69,7 +69,7 @@ public abstract class EntityTestCase { protected EntityTestCase(JpaEntityCoverageCheck jpaEntityCoverageCheck) { appEngine = - AppEngineRule.builder() + AppEngineExtension.builder() .withDatastoreAndCloudSql() .enableJpaEntityCoverageCheck(jpaEntityCoverageCheck == JpaEntityCoverageCheck.ENABLED) .withClock(fakeClock) diff --git a/core/src/test/java/google/registry/model/EppResourceUtilsTest.java b/core/src/test/java/google/registry/model/EppResourceUtilsTest.java index f1c600533..c0a60b6f2 100644 --- a/core/src/test/java/google/registry/model/EppResourceUtilsTest.java +++ b/core/src/test/java/google/registry/model/EppResourceUtilsTest.java @@ -25,7 +25,7 @@ import static org.joda.time.DateTimeZone.UTC; import google.registry.model.host.HostResource; import google.registry.model.ofy.Ofy; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.FakeClock; import google.registry.testing.InjectRule; import org.joda.time.DateTime; @@ -38,8 +38,8 @@ import org.junit.jupiter.api.extension.RegisterExtension; public class EppResourceUtilsTest { @RegisterExtension - public final AppEngineRule appEngine = - AppEngineRule.builder().withDatastoreAndCloudSql().withTaskQueue().build(); + public final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().withTaskQueue().build(); @RegisterExtension public final InjectRule inject = new InjectRule(); diff --git a/core/src/test/java/google/registry/model/ImmutableObjectTest.java b/core/src/test/java/google/registry/model/ImmutableObjectTest.java index ac25ee636..3cc1974a9 100644 --- a/core/src/test/java/google/registry/model/ImmutableObjectTest.java +++ b/core/src/test/java/google/registry/model/ImmutableObjectTest.java @@ -29,7 +29,7 @@ import com.google.common.collect.Iterables; import com.googlecode.objectify.Key; import com.googlecode.objectify.annotation.Entity; import com.googlecode.objectify.annotation.Id; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.util.CidrAddressBlock; import java.util.ArrayDeque; import java.util.Arrays; @@ -45,8 +45,8 @@ import org.junit.jupiter.api.extension.RegisterExtension; public class ImmutableObjectTest { @RegisterExtension - public final AppEngineRule appEngine = - AppEngineRule.builder() + public final AppEngineExtension appEngine = + AppEngineExtension.builder() .withDatastoreAndCloudSql() .withOfyTestEntities(ValueObject.class) .build(); diff --git a/core/src/test/java/google/registry/model/ModelUtilsTest.java b/core/src/test/java/google/registry/model/ModelUtilsTest.java index d20d61d5a..f57bc9ce3 100644 --- a/core/src/test/java/google/registry/model/ModelUtilsTest.java +++ b/core/src/test/java/google/registry/model/ModelUtilsTest.java @@ -18,7 +18,7 @@ import static com.google.common.truth.Truth.assertThat; import com.google.common.collect.ImmutableMap; import com.googlecode.objectify.annotation.Id; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import java.lang.reflect.Field; import java.util.Map; import org.junit.jupiter.api.BeforeEach; @@ -28,7 +28,8 @@ import org.junit.jupiter.api.extension.RegisterExtension; /** Unit tests for {@link ModelUtils}. */ public class ModelUtilsTest { - @RegisterExtension public AppEngineRule appEngineRule = new AppEngineRule.Builder().build(); + @RegisterExtension + public AppEngineExtension appEngineRule = new AppEngineExtension.Builder().build(); /** Test class for reflection methods. */ public static class TestClass extends ImmutableObject implements Buildable { diff --git a/core/src/test/java/google/registry/model/OteAccountBuilderTest.java b/core/src/test/java/google/registry/model/OteAccountBuilderTest.java index 21936820e..6fd247598 100644 --- a/core/src/test/java/google/registry/model/OteAccountBuilderTest.java +++ b/core/src/test/java/google/registry/model/OteAccountBuilderTest.java @@ -18,7 +18,7 @@ import static com.google.common.truth.Truth.assertThat; import static com.google.common.truth.Truth8.assertThat; import static google.registry.model.registry.Registry.TldState.GENERAL_AVAILABILITY; import static google.registry.model.registry.Registry.TldState.START_DATE_SUNRISE; -import static google.registry.testing.AppEngineRule.makeRegistrar1; +import static google.registry.testing.AppEngineExtension.makeRegistrar1; import static google.registry.testing.CertificateSamples.SAMPLE_CERT; import static google.registry.testing.CertificateSamples.SAMPLE_CERT_HASH; import static google.registry.testing.DatastoreHelper.createTld; @@ -33,7 +33,7 @@ import google.registry.model.registrar.Registrar; import google.registry.model.registrar.RegistrarContact; import google.registry.model.registry.Registry; import google.registry.model.registry.Registry.TldState; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.util.CidrAddressBlock; import google.registry.util.SystemClock; import org.joda.money.Money; @@ -47,7 +47,8 @@ import org.junit.jupiter.api.extension.RegisterExtension; public final class OteAccountBuilderTest { @RegisterExtension - public final AppEngineRule appEngine = AppEngineRule.builder().withDatastoreAndCloudSql().build(); + public final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().build(); @Test void testGetRegistrarToTldMap() { diff --git a/core/src/test/java/google/registry/model/OteStatsTest.java b/core/src/test/java/google/registry/model/OteStatsTest.java index 719085653..5e6ca0767 100644 --- a/core/src/test/java/google/registry/model/OteStatsTest.java +++ b/core/src/test/java/google/registry/model/OteStatsTest.java @@ -17,14 +17,15 @@ package google.registry.model; import static com.google.common.truth.Truth.assertThat; import google.registry.model.OteStats.StatType; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; public final class OteStatsTest { @RegisterExtension - public final AppEngineRule appEngine = AppEngineRule.builder().withDatastoreAndCloudSql().build(); + public final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().build(); @Test void testSuccess_allPass() throws Exception { diff --git a/core/src/test/java/google/registry/model/SchemaVersionTest.java b/core/src/test/java/google/registry/model/SchemaVersionTest.java index c6831e15a..dbd3936e8 100644 --- a/core/src/test/java/google/registry/model/SchemaVersionTest.java +++ b/core/src/test/java/google/registry/model/SchemaVersionTest.java @@ -14,7 +14,7 @@ package google.registry.model; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.GoldenFileTestHelper; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; @@ -27,7 +27,8 @@ import org.junit.jupiter.api.extension.RegisterExtension; public class SchemaVersionTest { @RegisterExtension - public final AppEngineRule appEngine = AppEngineRule.builder().withDatastoreAndCloudSql().build(); + public final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().build(); @Test void testGoldenSchemaFile() { diff --git a/core/src/test/java/google/registry/model/UpdateAutoTimestampTest.java b/core/src/test/java/google/registry/model/UpdateAutoTimestampTest.java index 4102b1b18..d8636b3b1 100644 --- a/core/src/test/java/google/registry/model/UpdateAutoTimestampTest.java +++ b/core/src/test/java/google/registry/model/UpdateAutoTimestampTest.java @@ -21,7 +21,7 @@ import static org.joda.time.DateTimeZone.UTC; import com.googlecode.objectify.annotation.Entity; import google.registry.model.common.CrossTldSingleton; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import org.joda.time.DateTime; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; @@ -30,8 +30,8 @@ import org.junit.jupiter.api.extension.RegisterExtension; public class UpdateAutoTimestampTest { @RegisterExtension - public final AppEngineRule appEngine = - AppEngineRule.builder() + public final AppEngineExtension appEngine = + AppEngineExtension.builder() .withDatastoreAndCloudSql() .withOfyTestEntities(UpdateAutoTimestampTestObject.class) .build(); diff --git a/core/src/test/java/google/registry/model/common/GaeUserIdConverterTest.java b/core/src/test/java/google/registry/model/common/GaeUserIdConverterTest.java index ed0dafd55..6e7a41797 100644 --- a/core/src/test/java/google/registry/model/common/GaeUserIdConverterTest.java +++ b/core/src/test/java/google/registry/model/common/GaeUserIdConverterTest.java @@ -18,7 +18,7 @@ import static com.google.common.truth.Truth.assertThat; import static google.registry.model.ofy.ObjectifyService.ofy; import static google.registry.persistence.transaction.TransactionManagerFactory.tm; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; @@ -27,7 +27,8 @@ import org.junit.jupiter.api.extension.RegisterExtension; public class GaeUserIdConverterTest { @RegisterExtension - public final AppEngineRule appEngine = AppEngineRule.builder().withDatastoreAndCloudSql().build(); + public final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().build(); @AfterEach void verifyNoLingeringEntities() { diff --git a/core/src/test/java/google/registry/model/contact/ContactCommandTest.java b/core/src/test/java/google/registry/model/contact/ContactCommandTest.java index 847b45f3b..3b941322e 100644 --- a/core/src/test/java/google/registry/model/contact/ContactCommandTest.java +++ b/core/src/test/java/google/registry/model/contact/ContactCommandTest.java @@ -20,7 +20,7 @@ import static google.registry.xml.ValidationMode.LENIENT; import static google.registry.xml.XmlTestUtils.assertXmlEquals; import static java.nio.charset.StandardCharsets.UTF_8; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.EppLoader; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; @@ -29,7 +29,8 @@ import org.junit.jupiter.api.extension.RegisterExtension; public class ContactCommandTest { @RegisterExtension - public final AppEngineRule appEngine = AppEngineRule.builder().withDatastoreAndCloudSql().build(); + public final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().build(); private void doXmlRoundtripTest(String inputFilename) throws Exception { EppLoader eppLoader = new EppLoader(this, inputFilename); diff --git a/core/src/test/java/google/registry/model/domain/GracePeriodTest.java b/core/src/test/java/google/registry/model/domain/GracePeriodTest.java index bc77a09b6..5d765ea8c 100644 --- a/core/src/test/java/google/registry/model/domain/GracePeriodTest.java +++ b/core/src/test/java/google/registry/model/domain/GracePeriodTest.java @@ -25,7 +25,7 @@ import google.registry.model.billing.BillingEvent.Recurring; import google.registry.model.domain.rgp.GracePeriodStatus; import google.registry.model.reporting.HistoryEntry; import google.registry.persistence.VKey; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import org.joda.money.CurrencyUnit; import org.joda.money.Money; import org.joda.time.DateTime; @@ -37,8 +37,8 @@ import org.junit.jupiter.api.extension.RegisterExtension; public class GracePeriodTest { @RegisterExtension - public final AppEngineRule appEngine = - AppEngineRule.builder() + public final AppEngineExtension appEngine = + AppEngineExtension.builder() .withDatastoreAndCloudSql() // Needed to be able to construct Keys. .build(); diff --git a/core/src/test/java/google/registry/model/ofy/CommitLogBucketTest.java b/core/src/test/java/google/registry/model/ofy/CommitLogBucketTest.java index ea4bc057e..49e3a88bb 100644 --- a/core/src/test/java/google/registry/model/ofy/CommitLogBucketTest.java +++ b/core/src/test/java/google/registry/model/ofy/CommitLogBucketTest.java @@ -25,7 +25,7 @@ import static org.junit.Assert.assertThrows; import com.google.common.base.Suppliers; import com.google.common.collect.ImmutableSet; import com.googlecode.objectify.annotation.Cache; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.InjectRule; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -35,7 +35,8 @@ import org.junit.jupiter.api.extension.RegisterExtension; public class CommitLogBucketTest { @RegisterExtension - public final AppEngineRule appEngine = AppEngineRule.builder().withDatastoreAndCloudSql().build(); + public final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().build(); @RegisterExtension public final InjectRule inject = new InjectRule(); private CommitLogBucket bucket; diff --git a/core/src/test/java/google/registry/model/ofy/CommitLogCheckpointTest.java b/core/src/test/java/google/registry/model/ofy/CommitLogCheckpointTest.java index e2ed10d09..dddcfb805 100644 --- a/core/src/test/java/google/registry/model/ofy/CommitLogCheckpointTest.java +++ b/core/src/test/java/google/registry/model/ofy/CommitLogCheckpointTest.java @@ -20,7 +20,7 @@ import static org.joda.time.DateTimeZone.UTC; import static org.junit.Assert.assertThrows; import com.google.common.collect.ImmutableMap; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import org.joda.time.DateTime; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; @@ -29,7 +29,8 @@ import org.junit.jupiter.api.extension.RegisterExtension; public class CommitLogCheckpointTest { @RegisterExtension - public final AppEngineRule appEngine = AppEngineRule.builder().withDatastoreAndCloudSql().build(); + public final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().build(); private static final DateTime T1 = START_OF_TIME; private static final DateTime T2 = START_OF_TIME.plusMillis(1); diff --git a/core/src/test/java/google/registry/model/ofy/CommitLogMutationTest.java b/core/src/test/java/google/registry/model/ofy/CommitLogMutationTest.java index 1c3a599c8..90b9ea233 100644 --- a/core/src/test/java/google/registry/model/ofy/CommitLogMutationTest.java +++ b/core/src/test/java/google/registry/model/ofy/CommitLogMutationTest.java @@ -25,7 +25,7 @@ import com.google.appengine.api.datastore.KeyFactory; import com.googlecode.objectify.Key; import google.registry.model.ImmutableObject; import google.registry.model.registry.Registry; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import org.joda.time.DateTime; import org.joda.time.DateTimeZone; import org.junit.jupiter.api.BeforeEach; @@ -36,7 +36,8 @@ import org.junit.jupiter.api.extension.RegisterExtension; public class CommitLogMutationTest { @RegisterExtension - public final AppEngineRule appEngine = AppEngineRule.builder().withDatastoreAndCloudSql().build(); + public final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().build(); private static final DateTime NOW = DateTime.now(DateTimeZone.UTC); diff --git a/core/src/test/java/google/registry/model/ofy/ObjectifyServiceTest.java b/core/src/test/java/google/registry/model/ofy/ObjectifyServiceTest.java index 77a7d1102..00dedd08e 100644 --- a/core/src/test/java/google/registry/model/ofy/ObjectifyServiceTest.java +++ b/core/src/test/java/google/registry/model/ofy/ObjectifyServiceTest.java @@ -14,7 +14,7 @@ package google.registry.model.ofy; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; @@ -22,7 +22,8 @@ import org.junit.jupiter.api.extension.RegisterExtension; public class ObjectifyServiceTest { @RegisterExtension - public final AppEngineRule appEngine = AppEngineRule.builder().withDatastoreAndCloudSql().build(); + public final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().build(); @Test void test_initOfy_canBeCalledTwice() { diff --git a/core/src/test/java/google/registry/model/ofy/OfyCommitLogTest.java b/core/src/test/java/google/registry/model/ofy/OfyCommitLogTest.java index 01e18aa68..eba2a60b5 100644 --- a/core/src/test/java/google/registry/model/ofy/OfyCommitLogTest.java +++ b/core/src/test/java/google/registry/model/ofy/OfyCommitLogTest.java @@ -30,7 +30,7 @@ import com.googlecode.objectify.annotation.Parent; import google.registry.model.BackupGroupRoot; import google.registry.model.ImmutableObject; import google.registry.model.common.EntityGroupRoot; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.FakeClock; import google.registry.testing.InjectRule; import google.registry.testing.TestObject.TestVirtualObject; @@ -43,8 +43,8 @@ import org.junit.jupiter.api.extension.RegisterExtension; public class OfyCommitLogTest { @RegisterExtension - public final AppEngineRule appEngine = - AppEngineRule.builder() + public final AppEngineExtension appEngine = + AppEngineExtension.builder() .withDatastoreAndCloudSql() .withOfyTestEntities(TestVirtualObject.class, Root.class, Child.class) .build(); diff --git a/core/src/test/java/google/registry/model/ofy/OfyTest.java b/core/src/test/java/google/registry/model/ofy/OfyTest.java index a7e041193..c52e0dc3a 100644 --- a/core/src/test/java/google/registry/model/ofy/OfyTest.java +++ b/core/src/test/java/google/registry/model/ofy/OfyTest.java @@ -45,7 +45,7 @@ import google.registry.model.contact.ContactResource; import google.registry.model.domain.DomainBase; import google.registry.model.eppcommon.Trid; import google.registry.model.reporting.HistoryEntry; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.DatastoreHelper; import google.registry.testing.FakeClock; import google.registry.util.SystemClock; @@ -60,7 +60,8 @@ import org.junit.jupiter.api.extension.RegisterExtension; public class OfyTest { @RegisterExtension - public final AppEngineRule appEngine = AppEngineRule.builder().withDatastoreAndCloudSql().build(); + public final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().build(); /** An entity to use in save and delete tests. */ private HistoryEntry someObject; diff --git a/core/src/test/java/google/registry/model/poll/PollMessageExternalKeyConverterTest.java b/core/src/test/java/google/registry/model/poll/PollMessageExternalKeyConverterTest.java index c586e5264..7f7340c5f 100644 --- a/core/src/test/java/google/registry/model/poll/PollMessageExternalKeyConverterTest.java +++ b/core/src/test/java/google/registry/model/poll/PollMessageExternalKeyConverterTest.java @@ -31,7 +31,7 @@ import google.registry.model.eppcommon.Trid; import google.registry.model.ofy.Ofy; import google.registry.model.poll.PollMessageExternalKeyConverter.PollMessageExternalKeyParseException; import google.registry.model.reporting.HistoryEntry; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.FakeClock; import google.registry.testing.InjectRule; import org.joda.time.DateTime; @@ -43,7 +43,8 @@ import org.junit.jupiter.api.extension.RegisterExtension; public class PollMessageExternalKeyConverterTest { @RegisterExtension - public final AppEngineRule appEngine = AppEngineRule.builder().withDatastoreAndCloudSql().build(); + public final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().build(); @RegisterExtension public InjectRule inject = new InjectRule(); diff --git a/core/src/test/java/google/registry/model/rde/RdeRevisionTest.java b/core/src/test/java/google/registry/model/rde/RdeRevisionTest.java index 769bb5904..6a71c6a71 100644 --- a/core/src/test/java/google/registry/model/rde/RdeRevisionTest.java +++ b/core/src/test/java/google/registry/model/rde/RdeRevisionTest.java @@ -23,7 +23,7 @@ import static google.registry.persistence.transaction.TransactionManagerFactory. import static org.junit.Assert.assertThrows; import com.google.common.base.VerifyException; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import org.joda.time.DateTime; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; @@ -32,7 +32,8 @@ import org.junit.jupiter.api.extension.RegisterExtension; public class RdeRevisionTest { @RegisterExtension - final AppEngineRule appEngine = AppEngineRule.builder().withDatastoreAndCloudSql().build(); + final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().build(); @Test void testGetNextRevision_objectDoesntExist_returnsZero() { diff --git a/core/src/test/java/google/registry/model/registrar/RegistrarTest.java b/core/src/test/java/google/registry/model/registrar/RegistrarTest.java index e851d7658..a9618b145 100644 --- a/core/src/test/java/google/registry/model/registrar/RegistrarTest.java +++ b/core/src/test/java/google/registry/model/registrar/RegistrarTest.java @@ -49,6 +49,7 @@ import org.junit.jupiter.api.Test; /** Unit tests for {@link Registrar}. */ class RegistrarTest extends EntityTestCase { + private Registrar registrar; private RegistrarContact abuseAdminContact; diff --git a/core/src/test/java/google/registry/model/registry/RegistriesTest.java b/core/src/test/java/google/registry/model/registry/RegistriesTest.java index 872621733..9440eb871 100644 --- a/core/src/test/java/google/registry/model/registry/RegistriesTest.java +++ b/core/src/test/java/google/registry/model/registry/RegistriesTest.java @@ -23,7 +23,7 @@ import static org.junit.Assert.assertThrows; import com.google.common.net.InternetDomainName; import google.registry.model.registry.Registry.TldType; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; @@ -31,7 +31,8 @@ import org.junit.jupiter.api.extension.RegisterExtension; class RegistriesTest { @RegisterExtension - final AppEngineRule appEngine = AppEngineRule.builder().withDatastoreAndCloudSql().build(); + final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().build(); private void initTestTlds() { createTlds("foo", "a.b.c"); // Test a multipart tld. diff --git a/core/src/test/java/google/registry/model/registry/label/GenrulePremiumListTest.java b/core/src/test/java/google/registry/model/registry/label/GenrulePremiumListTest.java index e31b5228a..3a3364b04 100644 --- a/core/src/test/java/google/registry/model/registry/label/GenrulePremiumListTest.java +++ b/core/src/test/java/google/registry/model/registry/label/GenrulePremiumListTest.java @@ -21,7 +21,7 @@ import com.google.common.flogger.FluentLogger; import com.google.common.io.Resources; import com.google.common.reflect.ClassPath; import com.google.common.reflect.ClassPath.ResourceInfo; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import java.net.URL; import java.util.List; import org.junit.jupiter.api.Test; @@ -34,7 +34,8 @@ class GenrulePremiumListTest { private static final String LISTS_DIRECTORY = "google/registry/config/files/premium/"; @RegisterExtension - final AppEngineRule appEngine = AppEngineRule.builder().withDatastoreAndCloudSql().build(); + final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().build(); @Test void testParse_allPremiumLists() throws Exception { diff --git a/core/src/test/java/google/registry/model/registry/label/GenruleReservedListTest.java b/core/src/test/java/google/registry/model/registry/label/GenruleReservedListTest.java index 0c56e7d24..e478ac7e0 100644 --- a/core/src/test/java/google/registry/model/registry/label/GenruleReservedListTest.java +++ b/core/src/test/java/google/registry/model/registry/label/GenruleReservedListTest.java @@ -21,7 +21,7 @@ import com.google.common.flogger.FluentLogger; import com.google.common.io.Resources; import com.google.common.reflect.ClassPath; import com.google.common.reflect.ClassPath.ResourceInfo; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import java.net.URL; import java.util.List; import org.junit.jupiter.api.Test; @@ -34,7 +34,8 @@ class GenruleReservedListTest { private static final String LISTS_DIRECTORY = "google/registry/config/files/reserved/"; @RegisterExtension - final AppEngineRule appEngine = AppEngineRule.builder().withDatastoreAndCloudSql().build(); + final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().build(); @Test void testParse_allReservedLists() throws Exception { diff --git a/core/src/test/java/google/registry/model/registry/label/PremiumListTest.java b/core/src/test/java/google/registry/model/registry/label/PremiumListTest.java index 047bc29c0..e8d30d50f 100644 --- a/core/src/test/java/google/registry/model/registry/label/PremiumListTest.java +++ b/core/src/test/java/google/registry/model/registry/label/PremiumListTest.java @@ -27,7 +27,7 @@ import com.google.common.collect.ImmutableList; import google.registry.model.registry.Registry; import google.registry.model.registry.label.PremiumList.PremiumListEntry; import google.registry.model.registry.label.PremiumList.PremiumListRevision; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import org.joda.money.Money; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -37,7 +37,8 @@ import org.junit.jupiter.api.extension.RegisterExtension; public class PremiumListTest { @RegisterExtension - public final AppEngineRule appEngine = AppEngineRule.builder().withDatastoreAndCloudSql().build(); + public final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().build(); @BeforeEach void before() { diff --git a/core/src/test/java/google/registry/model/registry/label/PremiumListUtilsTest.java b/core/src/test/java/google/registry/model/registry/label/PremiumListUtilsTest.java index 42a3d058f..2d60411ed 100644 --- a/core/src/test/java/google/registry/model/registry/label/PremiumListUtilsTest.java +++ b/core/src/test/java/google/registry/model/registry/label/PremiumListUtilsTest.java @@ -47,7 +47,7 @@ import google.registry.model.pricing.StaticPremiumListPricingEngine; import google.registry.model.registry.Registry; import google.registry.model.registry.label.PremiumList.PremiumListEntry; import google.registry.model.registry.label.PremiumList.PremiumListRevision; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.TestCacheExtension; import java.util.Map; import org.joda.money.Money; @@ -59,7 +59,8 @@ import org.junit.jupiter.api.extension.RegisterExtension; public class PremiumListUtilsTest { @RegisterExtension - public final AppEngineRule appEngine = AppEngineRule.builder().withDatastoreAndCloudSql().build(); + public final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().build(); // Set long persist times on caches so they can be tested (cache times default to 0 in tests). @RegisterExtension diff --git a/core/src/test/java/google/registry/model/registry/label/ReservedListTest.java b/core/src/test/java/google/registry/model/registry/label/ReservedListTest.java index 9ebb00ba0..632d2a23e 100644 --- a/core/src/test/java/google/registry/model/registry/label/ReservedListTest.java +++ b/core/src/test/java/google/registry/model/registry/label/ReservedListTest.java @@ -35,7 +35,7 @@ import com.google.common.collect.ImmutableSet; import google.registry.model.ofy.Ofy; import google.registry.model.registry.Registry; import google.registry.model.registry.label.ReservedList.ReservedListEntry; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.FakeClock; import google.registry.testing.InjectRule; import org.joda.time.DateTime; @@ -49,7 +49,8 @@ class ReservedListTest { @RegisterExtension final InjectRule inject = new InjectRule(); @RegisterExtension - final AppEngineRule appEngine = AppEngineRule.builder().withDatastoreAndCloudSql().build(); + final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().build(); private FakeClock clock = new FakeClock(DateTime.parse("2010-01-01T10:00:00Z")); diff --git a/core/src/test/java/google/registry/model/server/KmsSecretRevisionTest.java b/core/src/test/java/google/registry/model/server/KmsSecretRevisionTest.java index b578c140f..dadc74fdf 100644 --- a/core/src/test/java/google/registry/model/server/KmsSecretRevisionTest.java +++ b/core/src/test/java/google/registry/model/server/KmsSecretRevisionTest.java @@ -20,7 +20,7 @@ import static google.registry.testing.DatastoreHelper.persistResource; import static org.junit.Assert.assertThrows; import com.google.common.base.Strings; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; @@ -29,7 +29,8 @@ import org.junit.jupiter.api.extension.RegisterExtension; public class KmsSecretRevisionTest { @RegisterExtension - public final AppEngineRule appEngine = AppEngineRule.builder().withDatastoreAndCloudSql().build(); + public final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().build(); private KmsSecretRevision secretRevision; diff --git a/core/src/test/java/google/registry/model/server/KmsSecretTest.java b/core/src/test/java/google/registry/model/server/KmsSecretTest.java index 37208410b..501ce9066 100644 --- a/core/src/test/java/google/registry/model/server/KmsSecretTest.java +++ b/core/src/test/java/google/registry/model/server/KmsSecretTest.java @@ -18,7 +18,7 @@ import static com.google.common.truth.Truth.assertThat; import static google.registry.model.ofy.ObjectifyService.ofy; import static google.registry.testing.DatastoreHelper.persistResource; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; @@ -26,7 +26,8 @@ import org.junit.jupiter.api.extension.RegisterExtension; public class KmsSecretTest { @RegisterExtension - public final AppEngineRule appEngine = AppEngineRule.builder().withDatastoreAndCloudSql().build(); + public final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().build(); private KmsSecret secret; private KmsSecretRevision secretRevision; diff --git a/core/src/test/java/google/registry/model/server/LockTest.java b/core/src/test/java/google/registry/model/server/LockTest.java index 8ba75042f..b5e31e4d3 100644 --- a/core/src/test/java/google/registry/model/server/LockTest.java +++ b/core/src/test/java/google/registry/model/server/LockTest.java @@ -28,7 +28,7 @@ import static org.mockito.Mockito.when; import google.registry.model.ofy.Ofy; import google.registry.model.server.Lock.LockState; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.FakeClock; import google.registry.testing.InjectRule; import google.registry.util.RequestStatusChecker; @@ -51,8 +51,8 @@ public class LockTest { private LockMetrics origLockMetrics; @RegisterExtension - public final AppEngineRule appEngine = - AppEngineRule.builder().withDatastoreAndCloudSql().withClock(clock).build(); + public final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().withClock(clock).build(); @RegisterExtension public final InjectRule inject = new InjectRule(); diff --git a/core/src/test/java/google/registry/model/server/ServerSecretTest.java b/core/src/test/java/google/registry/model/server/ServerSecretTest.java index a052729a9..cc74780e1 100644 --- a/core/src/test/java/google/registry/model/server/ServerSecretTest.java +++ b/core/src/test/java/google/registry/model/server/ServerSecretTest.java @@ -18,7 +18,7 @@ import static com.google.common.truth.Truth.assertThat; import static google.registry.model.ofy.ObjectifyService.ofy; import google.registry.model.ofy.RequestCapturingAsyncDatastoreService; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import java.util.UUID; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -28,7 +28,8 @@ import org.junit.jupiter.api.extension.RegisterExtension; public class ServerSecretTest { @RegisterExtension - public final AppEngineRule appEngine = AppEngineRule.builder().withDatastoreAndCloudSql().build(); + public final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().build(); @BeforeEach void beforeEach() { diff --git a/core/src/test/java/google/registry/model/smd/SignedMarkRevocationListTest.java b/core/src/test/java/google/registry/model/smd/SignedMarkRevocationListTest.java index a9a0134c6..ddcd95954 100644 --- a/core/src/test/java/google/registry/model/smd/SignedMarkRevocationListTest.java +++ b/core/src/test/java/google/registry/model/smd/SignedMarkRevocationListTest.java @@ -23,7 +23,7 @@ import static org.joda.time.Duration.standardDays; import static org.junit.Assert.assertThrows; import com.google.common.collect.ImmutableMap; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.FakeClock; import org.joda.time.DateTime; import org.junit.jupiter.api.Test; @@ -33,7 +33,8 @@ import org.junit.jupiter.api.extension.RegisterExtension; public class SignedMarkRevocationListTest { @RegisterExtension - public final AppEngineRule appEngine = AppEngineRule.builder().withDatastoreAndCloudSql().build(); + public final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().build(); private final FakeClock clock = new FakeClock(DateTime.parse("2013-01-01T00:00:00Z")); diff --git a/core/src/test/java/google/registry/model/tmch/ClaimsListShardTest.java b/core/src/test/java/google/registry/model/tmch/ClaimsListShardTest.java index 3079b8879..547f2feeb 100644 --- a/core/src/test/java/google/registry/model/tmch/ClaimsListShardTest.java +++ b/core/src/test/java/google/registry/model/tmch/ClaimsListShardTest.java @@ -26,7 +26,7 @@ import com.google.common.collect.ImmutableMap; import com.googlecode.objectify.Key; import google.registry.model.tmch.ClaimsListShard.ClaimsListRevision; import google.registry.model.tmch.ClaimsListShard.UnshardedSaveException; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -38,7 +38,8 @@ import org.junit.jupiter.api.extension.RegisterExtension; public class ClaimsListShardTest { @RegisterExtension - public final AppEngineRule appEngine = AppEngineRule.builder().withDatastoreAndCloudSql().build(); + public final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().build(); private final int shardSize = 10; diff --git a/core/src/test/java/google/registry/model/tmch/TmchCrlTest.java b/core/src/test/java/google/registry/model/tmch/TmchCrlTest.java index 6ea28c71e..83d1bde55 100644 --- a/core/src/test/java/google/registry/model/tmch/TmchCrlTest.java +++ b/core/src/test/java/google/registry/model/tmch/TmchCrlTest.java @@ -16,7 +16,7 @@ package google.registry.model.tmch; import static com.google.common.truth.Truth.assertThat; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; @@ -24,7 +24,8 @@ import org.junit.jupiter.api.extension.RegisterExtension; public class TmchCrlTest { @RegisterExtension - public final AppEngineRule appEngine = AppEngineRule.builder().withDatastoreAndCloudSql().build(); + public final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().build(); @Test void testSuccess() { diff --git a/core/src/test/java/google/registry/model/transfer/TransferDataTest.java b/core/src/test/java/google/registry/model/transfer/TransferDataTest.java index 6c58cb3e4..2ea01fd4b 100644 --- a/core/src/test/java/google/registry/model/transfer/TransferDataTest.java +++ b/core/src/test/java/google/registry/model/transfer/TransferDataTest.java @@ -23,7 +23,7 @@ import google.registry.model.domain.Period; import google.registry.model.eppcommon.Trid; import google.registry.model.poll.PollMessage; import google.registry.persistence.VKey; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import org.joda.time.DateTime; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -33,7 +33,8 @@ import org.junit.jupiter.api.extension.RegisterExtension; public class TransferDataTest { @RegisterExtension - public final AppEngineRule appEngine = AppEngineRule.builder().withDatastoreAndCloudSql().build(); + public final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().build(); private final DateTime now = DateTime.now(UTC); diff --git a/core/src/test/java/google/registry/model/translators/CommitLogRevisionsTranslatorFactoryTest.java b/core/src/test/java/google/registry/model/translators/CommitLogRevisionsTranslatorFactoryTest.java index bd926eacb..5522ccdce 100644 --- a/core/src/test/java/google/registry/model/translators/CommitLogRevisionsTranslatorFactoryTest.java +++ b/core/src/test/java/google/registry/model/translators/CommitLogRevisionsTranslatorFactoryTest.java @@ -27,7 +27,7 @@ import com.googlecode.objectify.annotation.Entity; import google.registry.model.common.CrossTldSingleton; import google.registry.model.ofy.CommitLogManifest; import google.registry.model.ofy.Ofy; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.FakeClock; import google.registry.testing.InjectRule; import java.util.List; @@ -47,8 +47,8 @@ public class CommitLogRevisionsTranslatorFactoryTest { } @RegisterExtension - public final AppEngineRule appEngine = - AppEngineRule.builder() + public final AppEngineExtension appEngine = + AppEngineExtension.builder() .withDatastoreAndCloudSql() .withOfyTestEntities(TestObject.class) .build(); diff --git a/core/src/test/java/google/registry/model/translators/StatusValueAdapterTest.java b/core/src/test/java/google/registry/model/translators/StatusValueAdapterTest.java index 33526aed5..318c06216 100644 --- a/core/src/test/java/google/registry/model/translators/StatusValueAdapterTest.java +++ b/core/src/test/java/google/registry/model/translators/StatusValueAdapterTest.java @@ -28,7 +28,7 @@ import google.registry.model.eppoutput.EppOutput; import google.registry.model.eppoutput.EppResponse; import google.registry.model.host.HostCommand; import google.registry.model.host.HostInfoData; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.EppLoader; import google.registry.xml.ValidationMode; import org.junit.jupiter.api.Test; @@ -38,7 +38,8 @@ public class StatusValueAdapterTest { // Needed to create HostResources. @RegisterExtension - public AppEngineRule appEngine = new AppEngineRule.Builder().withDatastoreAndCloudSql().build(); + public AppEngineExtension appEngine = + new AppEngineExtension.Builder().withDatastoreAndCloudSql().build(); @Test void testMarshalling() throws Exception { diff --git a/core/src/test/java/google/registry/model/translators/VKeyTranslatorFactoryTest.java b/core/src/test/java/google/registry/model/translators/VKeyTranslatorFactoryTest.java index 79e08084e..0399d1080 100644 --- a/core/src/test/java/google/registry/model/translators/VKeyTranslatorFactoryTest.java +++ b/core/src/test/java/google/registry/model/translators/VKeyTranslatorFactoryTest.java @@ -25,14 +25,14 @@ import google.registry.model.ofy.CommitLogCheckpoint; import google.registry.model.ofy.CommitLogCheckpointRoot; import google.registry.model.reporting.HistoryEntry; import google.registry.persistence.VKey; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; public class VKeyTranslatorFactoryTest { @RegisterExtension - public final AppEngineRule appEngine = AppEngineRule.builder().withDatastore().build(); + public final AppEngineExtension appEngine = AppEngineExtension.builder().withDatastore().build(); VKeyTranslatorFactoryTest() {} diff --git a/core/src/test/java/google/registry/module/backend/BackendServletTest.java b/core/src/test/java/google/registry/module/backend/BackendServletTest.java index e74cedddb..096147b60 100644 --- a/core/src/test/java/google/registry/module/backend/BackendServletTest.java +++ b/core/src/test/java/google/registry/module/backend/BackendServletTest.java @@ -18,7 +18,7 @@ import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.junit.jupiter.api.Test; @@ -28,8 +28,8 @@ import org.junit.jupiter.api.extension.RegisterExtension; class BackendServletTest { @RegisterExtension - final AppEngineRule appEngine = - AppEngineRule.builder().withDatastoreAndCloudSql().withLocalModules().build(); + final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().withLocalModules().build(); private final HttpServletRequest req = mock(HttpServletRequest.class); private final HttpServletResponse rsp = mock(HttpServletResponse.class); diff --git a/core/src/test/java/google/registry/module/frontend/FrontendServletTest.java b/core/src/test/java/google/registry/module/frontend/FrontendServletTest.java index 6d2b72cd5..a35e8d918 100644 --- a/core/src/test/java/google/registry/module/frontend/FrontendServletTest.java +++ b/core/src/test/java/google/registry/module/frontend/FrontendServletTest.java @@ -18,7 +18,7 @@ import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.junit.jupiter.api.Test; @@ -28,8 +28,8 @@ import org.junit.jupiter.api.extension.RegisterExtension; class FrontendServletTest { @RegisterExtension - final AppEngineRule appEngine = - AppEngineRule.builder().withDatastoreAndCloudSql().withLocalModules().build(); + final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().withLocalModules().build(); private final HttpServletRequest req = mock(HttpServletRequest.class); private final HttpServletResponse rsp = mock(HttpServletResponse.class); diff --git a/core/src/test/java/google/registry/module/pubapi/PubApiServletTest.java b/core/src/test/java/google/registry/module/pubapi/PubApiServletTest.java index 5d013601e..699bd5c29 100644 --- a/core/src/test/java/google/registry/module/pubapi/PubApiServletTest.java +++ b/core/src/test/java/google/registry/module/pubapi/PubApiServletTest.java @@ -18,7 +18,7 @@ import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.junit.jupiter.api.Test; @@ -28,8 +28,8 @@ import org.junit.jupiter.api.extension.RegisterExtension; class PubApiServletTest { @RegisterExtension - final AppEngineRule appEngine = - AppEngineRule.builder().withDatastoreAndCloudSql().withLocalModules().build(); + final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().withLocalModules().build(); private final HttpServletRequest req = mock(HttpServletRequest.class); private final HttpServletResponse rsp = mock(HttpServletResponse.class); diff --git a/core/src/test/java/google/registry/monitoring/whitebox/EppMetricTest.java b/core/src/test/java/google/registry/monitoring/whitebox/EppMetricTest.java index 960218103..7f0570a19 100644 --- a/core/src/test/java/google/registry/monitoring/whitebox/EppMetricTest.java +++ b/core/src/test/java/google/registry/monitoring/whitebox/EppMetricTest.java @@ -19,7 +19,7 @@ import static google.registry.testing.DatastoreHelper.createTld; import static google.registry.testing.DatastoreHelper.createTlds; import com.google.common.collect.ImmutableSet; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.FakeClock; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; @@ -28,7 +28,8 @@ import org.junit.jupiter.api.extension.RegisterExtension; class EppMetricTest { @RegisterExtension - final AppEngineRule appEngine = AppEngineRule.builder().withDatastoreAndCloudSql().build(); + final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().build(); @Test void test_invalidTld_isRecordedAsInvalid() { diff --git a/core/src/test/java/google/registry/persistence/VKeyTest.java b/core/src/test/java/google/registry/persistence/VKeyTest.java index 1b8ef8e09..9ec3f55bd 100644 --- a/core/src/test/java/google/registry/persistence/VKeyTest.java +++ b/core/src/test/java/google/registry/persistence/VKeyTest.java @@ -16,7 +16,7 @@ package google.registry.persistence; import static com.google.common.truth.Truth.assertThat; import com.googlecode.objectify.Key; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.TestObject; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; @@ -25,8 +25,8 @@ import org.junit.jupiter.api.extension.RegisterExtension; class VKeyTest { @RegisterExtension - final AppEngineRule appEngineRule = - AppEngineRule.builder() + final AppEngineExtension appEngineRule = + AppEngineExtension.builder() .withDatastoreAndCloudSql() .withOfyTestEntities(TestObject.class) .build(); diff --git a/core/src/test/java/google/registry/persistence/converter/InetAddressSetConverterTest.java b/core/src/test/java/google/registry/persistence/converter/InetAddressSetConverterTest.java index 308015dda..203325def 100644 --- a/core/src/test/java/google/registry/persistence/converter/InetAddressSetConverterTest.java +++ b/core/src/test/java/google/registry/persistence/converter/InetAddressSetConverterTest.java @@ -22,7 +22,7 @@ import com.google.common.net.InetAddresses; import google.registry.model.ImmutableObject; import google.registry.persistence.VKey; import google.registry.schema.replay.EntityTest.EntityForTesting; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import java.net.InetAddress; import java.util.Set; import javax.annotation.Nullable; @@ -35,8 +35,8 @@ import org.junit.jupiter.api.extension.RegisterExtension; public class InetAddressSetConverterTest { @RegisterExtension - public final AppEngineRule appEngine = - AppEngineRule.builder() + public final AppEngineExtension appEngine = + AppEngineExtension.builder() .withDatastoreAndCloudSql() .withJpaUnitTestEntities(InetAddressSetTestEntity.class) .build(); diff --git a/core/src/test/java/google/registry/persistence/transaction/DummyJpaTransactionManagerTest.java b/core/src/test/java/google/registry/persistence/transaction/DummyJpaTransactionManagerTest.java index c0c9d3232..658100b7f 100644 --- a/core/src/test/java/google/registry/persistence/transaction/DummyJpaTransactionManagerTest.java +++ b/core/src/test/java/google/registry/persistence/transaction/DummyJpaTransactionManagerTest.java @@ -17,11 +17,15 @@ package google.registry.persistence.transaction; import static google.registry.persistence.transaction.TransactionManagerFactory.jpaTm; import static org.junit.Assert.assertThrows; +import google.registry.testing.AppEngineExtension; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.RegisterExtension; /** JUnit test for {@link DummyJpaTransactionManager} */ class DummyJpaTransactionManagerTest { + @RegisterExtension final AppEngineExtension appEngine = AppEngineExtension.builder().build(); + @Test void throwsExceptionWhenAnyMethodIsInvoked() { assertThrows(UnsupportedOperationException.class, () -> jpaTm().transact(() -> null)); diff --git a/core/src/test/java/google/registry/persistence/transaction/JpaEntityCoverage.java b/core/src/test/java/google/registry/persistence/transaction/JpaEntityCoverageExtension.java similarity index 88% rename from core/src/test/java/google/registry/persistence/transaction/JpaEntityCoverage.java rename to core/src/test/java/google/registry/persistence/transaction/JpaEntityCoverageExtension.java index 3d403c4e2..8993dddc4 100644 --- a/core/src/test/java/google/registry/persistence/transaction/JpaEntityCoverage.java +++ b/core/src/test/java/google/registry/persistence/transaction/JpaEntityCoverageExtension.java @@ -27,16 +27,17 @@ import java.sql.SQLException; import java.util.List; import java.util.Map; import java.util.Set; -import java.util.function.Supplier; import javax.persistence.DiscriminatorValue; import javax.persistence.Entity; -import org.junit.rules.ExternalResource; +import org.junit.jupiter.api.extension.AfterEachCallback; +import org.junit.jupiter.api.extension.BeforeEachCallback; +import org.junit.jupiter.api.extension.ExtensionContext; /** * Checks for JPA {@link Entity entities} that are declared in persistence.xml but not persisted in * integration tests. */ -public class JpaEntityCoverage extends ExternalResource { +public class JpaEntityCoverageExtension implements BeforeEachCallback, AfterEachCallback { // TODO(weiminyu): update this set when entities written to Cloud SQL and tests are added. private static final ImmutableSet IGNORE_ENTITIES = @@ -53,26 +54,19 @@ public class JpaEntityCoverage extends ExternalResource { // Map of test class name to boolean flag indicating if it tests any JPA entities. private static final Map testsJpaEntities = Maps.newHashMap(); - // Provides class name of the test being executed. - private final Supplier currTestClassNameSupplier; - - public JpaEntityCoverage(Supplier currTestClassNameSupplier) { - this.currTestClassNameSupplier = currTestClassNameSupplier; + @Override + public void beforeEach(ExtensionContext context) { + testsJpaEntities.putIfAbsent(context.getRequiredTestClass().getName(), false); } @Override - public void before() { - testsJpaEntities.putIfAbsent(currTestClassNameSupplier.get(), false); - } - - @Override - public void after() { + public void afterEach(ExtensionContext context) { ALL_JPA_ENTITIES.stream() - .filter(JpaEntityCoverage::isPersisted) + .filter(JpaEntityCoverageExtension::isPersisted) .forEach( entity -> { allCoveredJpaEntities.add(entity); - testsJpaEntities.put(currTestClassNameSupplier.get(), true); + testsJpaEntities.put(context.getRequiredTestClass().getName(), true); }); } diff --git a/core/src/test/java/google/registry/persistence/transaction/JpaTestRules.java b/core/src/test/java/google/registry/persistence/transaction/JpaTestRules.java index c02fc3489..2842d612f 100644 --- a/core/src/test/java/google/registry/persistence/transaction/JpaTestRules.java +++ b/core/src/test/java/google/registry/persistence/transaction/JpaTestRules.java @@ -33,10 +33,6 @@ import org.joda.time.DateTime; import org.junit.jupiter.api.extension.AfterEachCallback; import org.junit.jupiter.api.extension.BeforeEachCallback; import org.junit.jupiter.api.extension.ExtensionContext; -import org.junit.rules.RuleChain; -import org.junit.rules.TestRule; -import org.junit.runner.Description; -import org.junit.runners.model.Statement; /** * Holds specialized JUnit rules that start a test database server and provide {@link @@ -50,8 +46,8 @@ public class JpaTestRules { * Junit rule for integration tests with JPA framework, when the underlying database is populated * with the Nomulus Cloud SQL schema. */ - public static class JpaIntegrationTestRule extends JpaTransactionManagerRule { - private JpaIntegrationTestRule( + public static class JpaIntegrationTestExtension extends JpaTransactionManagerExtension { + private JpaIntegrationTestExtension( Clock clock, ImmutableList extraEntityClasses, ImmutableMap userProperties) { @@ -59,14 +55,11 @@ public class JpaTestRules { } } - private static final AssertionError EXCEPTION_OF_DISAPPROVAL = - new AssertionError("ಠ_ಠ Why are you writing new tests in JUnit 4?? ಠ_ಠ"); - /** * JUnit extension for unit tests with JPA framework, when the underlying database is populated by * the optional init script (which must not be the Nomulus Cloud SQL schema). */ - public static class JpaUnitTestExtension extends JpaTransactionManagerRule { + public static class JpaUnitTestExtension extends JpaTransactionManagerExtension { private JpaUnitTestExtension( Clock clock, Optional initScriptPath, @@ -74,81 +67,42 @@ public class JpaTestRules { ImmutableMap userProperties) { super(clock, initScriptPath, false, extraEntityClasses, userProperties); } - - @Override - public void before() { - throw EXCEPTION_OF_DISAPPROVAL; - } - - @Override - public void after() { - throw EXCEPTION_OF_DISAPPROVAL; - } - } - - /** - * Junit rule for member classes of {@link - * google.registry.schema.integration.SqlIntegrationTestSuite}. In addition to providing a - * database through {@link JpaIntegrationTestRule}, it also keeps track of the test coverage of - * the declare JPA entities (in persistence.xml). - * - *

It is enforced through tests that all test classes using this rule must be included in the - * {@code SqlIntegrationTestSuite}. For the sake of efficiency, end-to-end tests that mainly test - * non-database functionalities should not use this rule. - */ - public static final class JpaIntegrationWithCoverageRule implements TestRule { - private final RuleChain ruleChain; - - JpaIntegrationWithCoverageRule(JpaIntegrationTestRule integrationTestRule) { - TestCaseWatcher watcher = new TestCaseWatcher(); - this.ruleChain = - RuleChain.outerRule(watcher) - .around(integrationTestRule) - .around(new JpaEntityCoverage(watcher::getTestClass)); - } - - @Override - public Statement apply(Statement base, Description description) { - return ruleChain.apply(base, description); - } } /** * JUnit extension for member classes of {@link * google.registry.schema.integration.SqlIntegrationTestSuite}. In addition to providing a - * database through {@link JpaIntegrationTestRule}, it also keeps track of the test coverage of - * the declared JPA entities (in persistence.xml). Per-class statistics are stored in static + * database through {@link JpaIntegrationTestExtension}, it also keeps track of the test coverage + * of the declared JPA entities (in persistence.xml). Per-class statistics are stored in static * variables. The SqlIntegrationTestSuite inspects the cumulative statistics after all test * classes have run. */ public static final class JpaIntegrationWithCoverageExtension implements BeforeEachCallback, AfterEachCallback { - private String currentTestClassName = null; - private final JpaEntityCoverage jpaEntityCoverage = - new JpaEntityCoverage(() -> this.currentTestClassName); - private final JpaIntegrationTestRule integrationTestRule; - JpaIntegrationWithCoverageExtension(JpaIntegrationTestRule integrationTestRule) { + private final JpaEntityCoverageExtension jpaEntityCoverage = new JpaEntityCoverageExtension(); + private final JpaIntegrationTestExtension integrationTestRule; + + JpaIntegrationWithCoverageExtension(JpaIntegrationTestExtension integrationTestRule) { this.integrationTestRule = integrationTestRule; } @Override public void beforeEach(ExtensionContext context) throws Exception { - this.currentTestClassName = context.getRequiredTestClass().getName(); - integrationTestRule.beforeEach(null); - jpaEntityCoverage.before(); + integrationTestRule.beforeEach(context); + jpaEntityCoverage.beforeEach(context); } @Override - public void afterEach(ExtensionContext context) throws Exception { - jpaEntityCoverage.after(); - integrationTestRule.afterEach(null); - this.currentTestClassName = null; + public void afterEach(ExtensionContext context) { + jpaEntityCoverage.afterEach(context); + integrationTestRule.afterEach(context); } } /** Builder of test rules that provide {@link JpaTransactionManager}. */ public static class Builder { + private String initScript; private Clock clock; private List extraEntityClasses = new ArrayList(); @@ -177,7 +131,7 @@ public class JpaTestRules { } /** Adds the specified property to those used to initialize the transaction manager. */ - public Builder withProperty(String name, String value) { + Builder withProperty(String name, String value) { this.userProperties.put(name, value); return this; } @@ -188,31 +142,22 @@ public class JpaTestRules { *

SQL logging is very noisy and disabled by default. This method maybe useful when * troubleshooting a specific test. */ - public Builder withSqlLogging() { + Builder withSqlLogging() { withProperty(Environment.SHOW_SQL, "true"); return this; } - /** Builds a {@link JpaIntegrationTestRule} instance. */ - public JpaIntegrationTestRule buildIntegrationTestRule() { - return new JpaIntegrationTestRule( + /** Builds a {@link JpaIntegrationTestExtension} instance. */ + public JpaIntegrationTestExtension buildIntegrationTestRule() { + return new JpaIntegrationTestExtension( clock == null ? new FakeClock(DateTime.now(UTC)) : clock, ImmutableList.copyOf(extraEntityClasses), ImmutableMap.copyOf(userProperties)); } /** - * Builds a {@link RuleChain} around {@link JpaIntegrationTestRule} that also checks test - * coverage of JPA entity classes. - */ - public JpaIntegrationWithCoverageRule buildIntegrationWithCoverageRule() { - checkState(initScript == null, "Integration tests do not accept initScript"); - return new JpaIntegrationWithCoverageRule(buildIntegrationTestRule()); - } - - /** - * JUnit extension that adapts {@link JpaIntegrationTestRule} for JUnit 5 and also checks test - * coverage of JPA entity classes. + * JUnit extension that adapts {@link JpaIntegrationTestExtension} for JUnit 5 and also checks + * test coverage of JPA entity classes. */ public JpaIntegrationWithCoverageExtension buildIntegrationWithCoverageExtension() { checkState(initScript == null, "Integration tests do not accept initScript"); diff --git a/core/src/test/java/google/registry/persistence/transaction/JpaTransactionManagerRule.java b/core/src/test/java/google/registry/persistence/transaction/JpaTransactionManagerExtension.java similarity index 94% rename from core/src/test/java/google/registry/persistence/transaction/JpaTransactionManagerRule.java rename to core/src/test/java/google/registry/persistence/transaction/JpaTransactionManagerExtension.java index 3e47499c6..e92c664d3 100644 --- a/core/src/test/java/google/registry/persistence/transaction/JpaTransactionManagerRule.java +++ b/core/src/test/java/google/registry/persistence/transaction/JpaTransactionManagerExtension.java @@ -31,6 +31,7 @@ import google.registry.persistence.HibernateSchemaExporter; import google.registry.persistence.NomulusPostgreSql; import google.registry.persistence.PersistenceModule; import google.registry.persistence.PersistenceXmlUtility; +import google.registry.persistence.transaction.JpaTestRules.JpaIntegrationTestExtension; import google.registry.persistence.transaction.JpaTestRules.JpaUnitTestExtension; import google.registry.util.Clock; import java.io.File; @@ -59,23 +60,22 @@ import org.hibernate.jpa.boot.spi.Bootstrap; import org.junit.jupiter.api.extension.AfterEachCallback; import org.junit.jupiter.api.extension.BeforeEachCallback; import org.junit.jupiter.api.extension.ExtensionContext; -import org.junit.rules.ExternalResource; import org.testcontainers.containers.JdbcDatabaseContainer; import org.testcontainers.containers.PostgreSQLContainer; /** - * Base class of JUnit Rules to provision {@link JpaTransactionManagerImpl} backed by {@link - * PostgreSQLContainer}. This class is not for direct use. Use specialized subclasses, {@link - * google.registry.persistence.transaction.JpaTestRules.JpaIntegrationTestRule} or {@link - * JpaUnitTestExtension} as befits the use case. + * Base class of JUnit extensions to provision {@link JpaTransactionManagerImpl} backed by {@link + * PostgreSQLContainer}. + * + *

This class is not for direct use. Use the specialized subclasses {@link + * JpaIntegrationTestExtension} or {@link JpaUnitTestExtension} as befits the use case. * *

This rule also replaces the {@link JpaTransactionManagerImpl} provided by {@link * TransactionManagerFactory} with the {@link JpaTransactionManagerImpl} generated by the rule * itself, so that all SQL queries will be sent to the database instance created by {@link * PostgreSQLContainer} to achieve test purpose. */ -abstract class JpaTransactionManagerRule extends ExternalResource - implements BeforeEachCallback, AfterEachCallback { +abstract class JpaTransactionManagerExtension implements BeforeEachCallback, AfterEachCallback { private static final String DB_CLEANUP_SQL_PATH = "google/registry/persistence/transaction/cleanup_database.sql"; @@ -108,7 +108,7 @@ abstract class JpaTransactionManagerRule extends ExternalResource // false. private boolean includeNomulusSchema = true; - JpaTransactionManagerRule( + JpaTransactionManagerExtension( Clock clock, Optional initScriptPath, boolean includeNomulusSchema, @@ -122,7 +122,7 @@ abstract class JpaTransactionManagerRule extends ExternalResource this.entityHash = getOrmEntityHash(initScriptPath, extraEntityClasses); } - JpaTransactionManagerRule( + JpaTransactionManagerExtension( Clock clock, Optional initScriptPath, ImmutableList extraEntityClasses, @@ -169,8 +169,7 @@ abstract class JpaTransactionManagerRule extends ExternalResource File tempSqlFile = File.createTempFile("tempSqlFile", ".sql"); tempSqlFile.deleteOnExit(); exporter.export(extraEntityClasses, tempSqlFile); - executeSql( - new String(Files.readAllBytes(tempSqlFile.toPath()), StandardCharsets.UTF_8)); + executeSql(new String(Files.readAllBytes(tempSqlFile.toPath()), StandardCharsets.UTF_8)); } ImmutableMap properties = PersistenceModule.provideDefaultDatabaseConfigs(); @@ -215,16 +214,6 @@ abstract class JpaTransactionManagerRule extends ExternalResource cachedTm = null; } - @Override - protected void before() throws Exception { - beforeEach(null); - } - - @Override - protected void after() { - afterEach(null); - } - public JdbcDatabaseContainer getDatabase() { return database; } diff --git a/core/src/test/java/google/registry/persistence/transaction/JpaTransactionManagerRuleTest.java b/core/src/test/java/google/registry/persistence/transaction/JpaTransactionManagerRuleTest.java index 09541af03..ccf2d6b1f 100644 --- a/core/src/test/java/google/registry/persistence/transaction/JpaTransactionManagerRuleTest.java +++ b/core/src/test/java/google/registry/persistence/transaction/JpaTransactionManagerRuleTest.java @@ -28,7 +28,10 @@ import javax.persistence.PersistenceException; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; -/** JUnit test for {@link JpaTransactionManagerRule}, with {@link JpaUnitTestExtension} as proxy. */ +/** + * JUnit test for {@link JpaTransactionManagerExtension}, with {@link JpaUnitTestExtension} as + * proxy. + */ public class JpaTransactionManagerRuleTest { @RegisterExtension diff --git a/core/src/test/java/google/registry/persistence/transaction/TransactionManagerTest.java b/core/src/test/java/google/registry/persistence/transaction/TransactionManagerTest.java index 262859d97..813f90b5e 100644 --- a/core/src/test/java/google/registry/persistence/transaction/TransactionManagerTest.java +++ b/core/src/test/java/google/registry/persistence/transaction/TransactionManagerTest.java @@ -29,7 +29,7 @@ import google.registry.model.ImmutableObject; import google.registry.model.ofy.DatastoreTransactionManager; import google.registry.model.ofy.Ofy; import google.registry.persistence.VKey; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.DualDatabaseTest; import google.registry.testing.FakeClock; import google.registry.testing.InjectRule; @@ -60,8 +60,8 @@ public class TransactionManagerTest { @RegisterExtension public InjectRule inject = new InjectRule(); @RegisterExtension - public final AppEngineRule appEngine = - AppEngineRule.builder() + public final AppEngineExtension appEngine = + AppEngineExtension.builder() .withClock(fakeClock) .withDatastoreAndCloudSql() .withOfyTestEntities(TestEntity.class) diff --git a/core/src/test/java/google/registry/persistence/transaction/TransactionTest.java b/core/src/test/java/google/registry/persistence/transaction/TransactionTest.java index 6451dc741..66c3a8805 100644 --- a/core/src/test/java/google/registry/persistence/transaction/TransactionTest.java +++ b/core/src/test/java/google/registry/persistence/transaction/TransactionTest.java @@ -23,7 +23,7 @@ import com.googlecode.objectify.annotation.Entity; import com.googlecode.objectify.annotation.Id; import google.registry.model.ImmutableObject; import google.registry.persistence.VKey; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import java.io.ByteArrayOutputStream; import java.io.ObjectOutputStream; import java.io.StreamCorruptedException; @@ -34,8 +34,8 @@ import org.junit.jupiter.api.extension.RegisterExtension; public class TransactionTest { @RegisterExtension - public final AppEngineRule appEngine = - AppEngineRule.builder() + public final AppEngineExtension appEngine = + AppEngineExtension.builder() .withDatastoreAndCloudSql() .withOfyTestEntities(TestEntity.class) .withJpaUnitTestEntities(TestEntity.class) diff --git a/core/src/test/java/google/registry/pricing/PricingEngineProxyTest.java b/core/src/test/java/google/registry/pricing/PricingEngineProxyTest.java index 0132ae149..89110ef2e 100644 --- a/core/src/test/java/google/registry/pricing/PricingEngineProxyTest.java +++ b/core/src/test/java/google/registry/pricing/PricingEngineProxyTest.java @@ -28,7 +28,7 @@ import static org.junit.Assert.assertThrows; import com.google.common.collect.ImmutableSortedMap; import google.registry.model.registry.Registry; import google.registry.model.registry.label.PremiumList; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.FakeClock; import google.registry.util.Clock; import org.joda.money.Money; @@ -41,7 +41,8 @@ import org.junit.jupiter.api.extension.RegisterExtension; public class PricingEngineProxyTest { @RegisterExtension - public final AppEngineRule appEngine = AppEngineRule.builder().withDatastoreAndCloudSql().build(); + public final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().build(); private Clock clock; diff --git a/core/src/test/java/google/registry/rdap/RdapActionBaseTestCase.java b/core/src/test/java/google/registry/rdap/RdapActionBaseTestCase.java index 80bcc7212..a8c320ffd 100644 --- a/core/src/test/java/google/registry/rdap/RdapActionBaseTestCase.java +++ b/core/src/test/java/google/registry/rdap/RdapActionBaseTestCase.java @@ -30,7 +30,7 @@ import google.registry.request.Actions; import google.registry.request.auth.AuthLevel; import google.registry.request.auth.AuthResult; import google.registry.request.auth.UserAuthInfo; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.FakeClock; import google.registry.testing.FakeResponse; import google.registry.testing.InjectRule; @@ -46,7 +46,8 @@ import org.junit.jupiter.api.extension.RegisterExtension; abstract class RdapActionBaseTestCase { @RegisterExtension - public final AppEngineRule appEngine = AppEngineRule.builder().withDatastoreAndCloudSql().build(); + public final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().build(); @RegisterExtension public final InjectRule inject = new InjectRule(); diff --git a/core/src/test/java/google/registry/rdap/RdapJsonFormatterTest.java b/core/src/test/java/google/registry/rdap/RdapJsonFormatterTest.java index 7a2ac1626..bda33bee7 100644 --- a/core/src/test/java/google/registry/rdap/RdapJsonFormatterTest.java +++ b/core/src/test/java/google/registry/rdap/RdapJsonFormatterTest.java @@ -46,7 +46,7 @@ import google.registry.rdap.RdapObjectClasses.BoilerplateType; import google.registry.rdap.RdapObjectClasses.RdapEntity; import google.registry.rdap.RdapObjectClasses.ReplyPayloadBase; import google.registry.rdap.RdapObjectClasses.TopLevelReplyObject; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.FakeClock; import google.registry.testing.InjectRule; import org.joda.time.DateTime; @@ -58,7 +58,8 @@ import org.junit.jupiter.api.extension.RegisterExtension; class RdapJsonFormatterTest { @RegisterExtension - public final AppEngineRule appEngine = AppEngineRule.builder().withDatastoreAndCloudSql().build(); + public final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().build(); @RegisterExtension public final InjectRule inject = new InjectRule(); diff --git a/core/src/test/java/google/registry/rdap/UpdateRegistrarRdapBaseUrlsActionTest.java b/core/src/test/java/google/registry/rdap/UpdateRegistrarRdapBaseUrlsActionTest.java index a0f7ec348..d24da7c07 100644 --- a/core/src/test/java/google/registry/rdap/UpdateRegistrarRdapBaseUrlsActionTest.java +++ b/core/src/test/java/google/registry/rdap/UpdateRegistrarRdapBaseUrlsActionTest.java @@ -34,7 +34,7 @@ import google.registry.model.registrar.Registrar; import google.registry.model.registrar.RegistrarAddress; import google.registry.model.registry.Registry; import google.registry.model.registry.Registry.TldType; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import java.util.ArrayList; import java.util.List; import org.junit.jupiter.api.BeforeEach; @@ -76,8 +76,8 @@ public final class UpdateRegistrarRdapBaseUrlsActionTest { + "\"version\":\"1.0\"}"; @RegisterExtension - public AppEngineRule appEngineRule = - new AppEngineRule.Builder().withDatastoreAndCloudSql().build(); + public AppEngineExtension appEngineRule = + new AppEngineExtension.Builder().withDatastoreAndCloudSql().build(); private static class TestHttpTransport extends MockHttpTransport { private final ArrayList requestsSent = new ArrayList<>(); diff --git a/core/src/test/java/google/registry/rde/BrdaCopyActionTest.java b/core/src/test/java/google/registry/rde/BrdaCopyActionTest.java index f0062e4d4..7e3a15fb9 100644 --- a/core/src/test/java/google/registry/rde/BrdaCopyActionTest.java +++ b/core/src/test/java/google/registry/rde/BrdaCopyActionTest.java @@ -29,7 +29,7 @@ import com.google.common.io.CharStreams; import com.google.common.io.Files; import google.registry.gcs.GcsUtils; import google.registry.keyring.api.Keyring; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.BouncyCastleProviderExtension; import google.registry.testing.FakeKeyringModule; import google.registry.testing.GcsTestingUtils; @@ -65,7 +65,8 @@ public class BrdaCopyActionTest { public final BouncyCastleProviderExtension bouncy = new BouncyCastleProviderExtension(); @RegisterExtension - public final AppEngineRule appEngine = AppEngineRule.builder().withDatastoreAndCloudSql().build(); + public final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().build(); @RegisterExtension public final GpgSystemCommandExtension gpg = diff --git a/core/src/test/java/google/registry/rde/ContactResourceToXjcConverterTest.java b/core/src/test/java/google/registry/rde/ContactResourceToXjcConverterTest.java index 28a06bcf5..2ad0d0cb8 100644 --- a/core/src/test/java/google/registry/rde/ContactResourceToXjcConverterTest.java +++ b/core/src/test/java/google/registry/rde/ContactResourceToXjcConverterTest.java @@ -33,7 +33,7 @@ import google.registry.model.eppcommon.StatusValue; import google.registry.model.eppcommon.Trid; import google.registry.model.transfer.ContactTransferData; import google.registry.model.transfer.TransferStatus; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.xjc.contact.XjcContactPostalInfoEnumType; import google.registry.xjc.contact.XjcContactPostalInfoType; import google.registry.xjc.contact.XjcContactStatusType; @@ -60,7 +60,8 @@ import org.junit.jupiter.api.extension.RegisterExtension; public class ContactResourceToXjcConverterTest { @RegisterExtension - public final AppEngineRule appEngine = AppEngineRule.builder().withDatastoreAndCloudSql().build(); + public final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().build(); @BeforeEach void beforeEach() { diff --git a/core/src/test/java/google/registry/rde/DomainBaseToXjcConverterTest.java b/core/src/test/java/google/registry/rde/DomainBaseToXjcConverterTest.java index 62531db34..25c78486f 100644 --- a/core/src/test/java/google/registry/rde/DomainBaseToXjcConverterTest.java +++ b/core/src/test/java/google/registry/rde/DomainBaseToXjcConverterTest.java @@ -54,7 +54,7 @@ import google.registry.model.rde.RdeMode; import google.registry.model.reporting.HistoryEntry; import google.registry.model.transfer.DomainTransferData; import google.registry.model.transfer.TransferStatus; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.FakeClock; import google.registry.util.Idn; import google.registry.xjc.domain.XjcDomainStatusType; @@ -83,7 +83,8 @@ import org.junit.jupiter.api.extension.RegisterExtension; public class DomainBaseToXjcConverterTest { @RegisterExtension - public final AppEngineRule appEngine = AppEngineRule.builder().withDatastoreAndCloudSql().build(); + public final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().build(); private final DateTime now = DateTime.parse("2014-01-01T00:00:00Z"); private final FakeClock clock = new FakeClock(now); diff --git a/core/src/test/java/google/registry/rde/EscrowTaskRunnerTest.java b/core/src/test/java/google/registry/rde/EscrowTaskRunnerTest.java index df814ba7f..82a826ecf 100644 --- a/core/src/test/java/google/registry/rde/EscrowTaskRunnerTest.java +++ b/core/src/test/java/google/registry/rde/EscrowTaskRunnerTest.java @@ -30,7 +30,7 @@ import google.registry.model.registry.Registry; import google.registry.rde.EscrowTaskRunner.EscrowTask; import google.registry.request.HttpException.NoContentException; import google.registry.request.HttpException.ServiceUnavailableException; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.FakeClock; import google.registry.testing.FakeLockHandler; import org.joda.time.DateTime; @@ -44,8 +44,8 @@ import org.junit.jupiter.api.extension.RegisterExtension; public class EscrowTaskRunnerTest { @RegisterExtension - public final AppEngineRule appEngine = - AppEngineRule.builder().withDatastoreAndCloudSql().withTaskQueue().build(); + public final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().withTaskQueue().build(); private final EscrowTask task = mock(EscrowTask.class); private final FakeClock clock = new FakeClock(DateTime.parse("2000-01-01TZ")); diff --git a/core/src/test/java/google/registry/rde/HostResourceToXjcConverterTest.java b/core/src/test/java/google/registry/rde/HostResourceToXjcConverterTest.java index 57542fea9..7fcc6dbc2 100644 --- a/core/src/test/java/google/registry/rde/HostResourceToXjcConverterTest.java +++ b/core/src/test/java/google/registry/rde/HostResourceToXjcConverterTest.java @@ -26,7 +26,7 @@ import com.google.common.net.InetAddresses; import google.registry.model.domain.DomainBase; import google.registry.model.eppcommon.StatusValue; import google.registry.model.host.HostResource; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.xjc.host.XjcHostStatusType; import google.registry.xjc.host.XjcHostStatusValueType; import google.registry.xjc.rdehost.XjcRdeHost; @@ -46,7 +46,8 @@ import org.junit.jupiter.api.extension.RegisterExtension; public class HostResourceToXjcConverterTest { @RegisterExtension - public final AppEngineRule appEngine = AppEngineRule.builder().withDatastoreAndCloudSql().build(); + public final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().build(); @BeforeEach void beforeEach() { diff --git a/core/src/test/java/google/registry/rde/PendingDepositCheckerTest.java b/core/src/test/java/google/registry/rde/PendingDepositCheckerTest.java index a01fe2f1c..04aa57fc2 100644 --- a/core/src/test/java/google/registry/rde/PendingDepositCheckerTest.java +++ b/core/src/test/java/google/registry/rde/PendingDepositCheckerTest.java @@ -31,7 +31,7 @@ import google.registry.model.common.Cursor.CursorType; import google.registry.model.ofy.Ofy; import google.registry.model.registry.Registry; import google.registry.schema.cursor.CursorDao; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.FakeClock; import google.registry.testing.InjectRule; import org.joda.time.DateTime; @@ -45,7 +45,8 @@ public class PendingDepositCheckerTest { @RegisterExtension public final InjectRule inject = new InjectRule(); @RegisterExtension - public final AppEngineRule appEngine = AppEngineRule.builder().withDatastoreAndCloudSql().build(); + public final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().build(); private final FakeClock clock = new FakeClock(); private final PendingDepositChecker checker = new PendingDepositChecker(); diff --git a/core/src/test/java/google/registry/rde/RdeMarshallerTest.java b/core/src/test/java/google/registry/rde/RdeMarshallerTest.java index abc321708..39e56b1a8 100644 --- a/core/src/test/java/google/registry/rde/RdeMarshallerTest.java +++ b/core/src/test/java/google/registry/rde/RdeMarshallerTest.java @@ -18,7 +18,7 @@ import static com.google.common.truth.Truth.assertThat; import static google.registry.testing.DatastoreHelper.loadRegistrar; import static google.registry.xml.ValidationMode.STRICT; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.xml.XmlTestUtils; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; @@ -30,7 +30,8 @@ public class RdeMarshallerTest { "\n"; @RegisterExtension - public final AppEngineRule appEngine = AppEngineRule.builder().withDatastoreAndCloudSql().build(); + public final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().build(); @Test void testMarshalRegistrar_validData_producesXmlFragment() throws Exception { diff --git a/core/src/test/java/google/registry/rde/RdeReportActionTest.java b/core/src/test/java/google/registry/rde/RdeReportActionTest.java index 57a42cad0..748153517 100644 --- a/core/src/test/java/google/registry/rde/RdeReportActionTest.java +++ b/core/src/test/java/google/registry/rde/RdeReportActionTest.java @@ -49,7 +49,7 @@ import google.registry.model.common.Cursor; import google.registry.model.registry.Registry; import google.registry.request.HttpException.InternalServerErrorException; import google.registry.request.HttpException.NoContentException; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.BouncyCastleProviderExtension; import google.registry.testing.FakeClock; import google.registry.testing.FakeKeyringModule; @@ -80,7 +80,8 @@ public class RdeReportActionTest { public final BouncyCastleProviderExtension bouncy = new BouncyCastleProviderExtension(); @RegisterExtension - public final AppEngineRule appEngine = AppEngineRule.builder().withDatastoreAndCloudSql().build(); + public final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().build(); private final FakeResponse response = new FakeResponse(); private final EscrowTaskRunner runner = mock(EscrowTaskRunner.class); diff --git a/core/src/test/java/google/registry/rde/RdeStagingMapperTest.java b/core/src/test/java/google/registry/rde/RdeStagingMapperTest.java index a6e696a6b..605a207ca 100644 --- a/core/src/test/java/google/registry/rde/RdeStagingMapperTest.java +++ b/core/src/test/java/google/registry/rde/RdeStagingMapperTest.java @@ -26,7 +26,7 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSetMultimap; import google.registry.model.registrar.Registrar; import google.registry.model.registrar.Registrar.State; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.xml.ValidationMode; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -54,7 +54,8 @@ class RdeStagingMapperTest { ArgumentCaptor.forClass(DepositFragment.class); @RegisterExtension - AppEngineRule appEngineRule = AppEngineRule.builder().withDatastoreAndCloudSql().build(); + AppEngineExtension appEngineRule = + AppEngineExtension.builder().withDatastoreAndCloudSql().build(); private RdeStagingMapper rdeStagingMapper; diff --git a/core/src/test/java/google/registry/rde/RdeStagingReducerTest.java b/core/src/test/java/google/registry/rde/RdeStagingReducerTest.java index b787a32ad..60740c6ed 100644 --- a/core/src/test/java/google/registry/rde/RdeStagingReducerTest.java +++ b/core/src/test/java/google/registry/rde/RdeStagingReducerTest.java @@ -40,7 +40,7 @@ import google.registry.model.rde.RdeRevision; import google.registry.model.registry.Registry; import google.registry.request.RequestParameters; import google.registry.schema.cursor.CursorDao; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.FakeClock; import google.registry.testing.FakeKeyringModule; import google.registry.testing.FakeLockHandler; @@ -64,8 +64,8 @@ import org.junit.jupiter.api.extension.RegisterExtension; public class RdeStagingReducerTest { @RegisterExtension - AppEngineRule appEngineRule = - AppEngineRule.builder().withDatastoreAndCloudSql().withTaskQueue().build(); + AppEngineExtension appEngineRule = + AppEngineExtension.builder().withDatastoreAndCloudSql().withTaskQueue().build(); private static final String GCS_BUCKET = "test-rde-bucket"; private static final GcsService gcsService = GcsServiceFactory.createGcsService(); diff --git a/core/src/test/java/google/registry/rde/RdeUploadActionTest.java b/core/src/test/java/google/registry/rde/RdeUploadActionTest.java index fcf528841..072987433 100644 --- a/core/src/test/java/google/registry/rde/RdeUploadActionTest.java +++ b/core/src/test/java/google/registry/rde/RdeUploadActionTest.java @@ -63,7 +63,7 @@ import google.registry.model.registry.Registry; import google.registry.rde.JSchSshSession.JSchSshSessionFactory; import google.registry.request.HttpException.NoContentException; import google.registry.request.RequestParameters; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.BouncyCastleProviderExtension; import google.registry.testing.FakeClock; import google.registry.testing.FakeKeyringModule; @@ -126,8 +126,8 @@ public class RdeUploadActionTest { RdeTestData.loadBytes("pgp-private-keyring-escrow.asc")); @RegisterExtension - public final AppEngineRule appEngine = - AppEngineRule.builder().withDatastoreAndCloudSql().withTaskQueue().build(); + public final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().withTaskQueue().build(); private final FakeResponse response = new FakeResponse(); private final EscrowTaskRunner runner = mock(EscrowTaskRunner.class); diff --git a/core/src/test/java/google/registry/rde/RegistrarToXjcConverterTest.java b/core/src/test/java/google/registry/rde/RegistrarToXjcConverterTest.java index def31e749..dfd52757f 100644 --- a/core/src/test/java/google/registry/rde/RegistrarToXjcConverterTest.java +++ b/core/src/test/java/google/registry/rde/RegistrarToXjcConverterTest.java @@ -25,7 +25,7 @@ import google.registry.model.ofy.Ofy; import google.registry.model.registrar.Registrar; import google.registry.model.registrar.Registrar.State; import google.registry.model.registrar.RegistrarAddress; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.FakeClock; import google.registry.testing.InjectRule; import google.registry.xjc.rderegistrar.XjcRdeRegistrar; @@ -48,7 +48,8 @@ import org.junit.jupiter.api.extension.RegisterExtension; public class RegistrarToXjcConverterTest { @RegisterExtension - public final AppEngineRule appEngine = AppEngineRule.builder().withDatastoreAndCloudSql().build(); + public final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().build(); @RegisterExtension public final InjectRule inject = new InjectRule(); diff --git a/core/src/test/java/google/registry/reporting/billing/CopyDetailReportsActionTest.java b/core/src/test/java/google/registry/reporting/billing/CopyDetailReportsActionTest.java index 9c2d3fa1c..ba69ab42e 100644 --- a/core/src/test/java/google/registry/reporting/billing/CopyDetailReportsActionTest.java +++ b/core/src/test/java/google/registry/reporting/billing/CopyDetailReportsActionTest.java @@ -35,7 +35,7 @@ import com.google.appengine.tools.cloudstorage.GcsServiceFactory; import com.google.common.net.MediaType; import google.registry.gcs.GcsUtils; import google.registry.storage.drive.DriveConnection; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.FakeClock; import google.registry.testing.FakeResponse; import google.registry.testing.FakeSleeper; @@ -49,7 +49,8 @@ import org.junit.jupiter.api.extension.RegisterExtension; class CopyDetailReportsActionTest { @RegisterExtension - final AppEngineRule appEngine = AppEngineRule.builder().withDatastoreAndCloudSql().build(); + final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().build(); private final GcsService gcsService = GcsServiceFactory.createGcsService(); private final GcsUtils gcsUtils = new GcsUtils(gcsService, 1024); diff --git a/core/src/test/java/google/registry/reporting/billing/GenerateInvoicesActionTest.java b/core/src/test/java/google/registry/reporting/billing/GenerateInvoicesActionTest.java index 93c4a1802..c5813f833 100644 --- a/core/src/test/java/google/registry/reporting/billing/GenerateInvoicesActionTest.java +++ b/core/src/test/java/google/registry/reporting/billing/GenerateInvoicesActionTest.java @@ -31,7 +31,7 @@ import com.google.api.services.dataflow.model.LaunchTemplateParameters; import com.google.api.services.dataflow.model.LaunchTemplateResponse; import com.google.api.services.dataflow.model.RuntimeEnvironment; import com.google.common.collect.ImmutableMap; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.FakeResponse; import google.registry.testing.TaskQueueHelper.TaskMatcher; import java.io.IOException; @@ -44,7 +44,7 @@ import org.junit.jupiter.api.extension.RegisterExtension; class GenerateInvoicesActionTest { @RegisterExtension - final AppEngineRule appEngine = AppEngineRule.builder().withTaskQueue().build(); + final AppEngineExtension appEngine = AppEngineExtension.builder().withTaskQueue().build(); private Dataflow dataflow; private Projects projects; diff --git a/core/src/test/java/google/registry/reporting/billing/PublishInvoicesActionTest.java b/core/src/test/java/google/registry/reporting/billing/PublishInvoicesActionTest.java index b5b4c8886..701a8fb69 100644 --- a/core/src/test/java/google/registry/reporting/billing/PublishInvoicesActionTest.java +++ b/core/src/test/java/google/registry/reporting/billing/PublishInvoicesActionTest.java @@ -30,7 +30,7 @@ import com.google.api.services.dataflow.Dataflow.Projects.Jobs; import com.google.api.services.dataflow.Dataflow.Projects.Jobs.Get; import com.google.api.services.dataflow.model.Job; import com.google.common.net.MediaType; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.FakeResponse; import google.registry.testing.TaskQueueHelper.TaskMatcher; import java.io.IOException; @@ -50,7 +50,7 @@ class PublishInvoicesActionTest { private PublishInvoicesAction uploadAction; @RegisterExtension - final AppEngineRule appEngine = AppEngineRule.builder().withTaskQueue().build(); + final AppEngineExtension appEngine = AppEngineExtension.builder().withTaskQueue().build(); @BeforeEach void beforeEach() throws IOException { diff --git a/core/src/test/java/google/registry/reporting/icann/IcannHttpReporterTest.java b/core/src/test/java/google/registry/reporting/icann/IcannHttpReporterTest.java index f3ff338ce..2a852e18e 100644 --- a/core/src/test/java/google/registry/reporting/icann/IcannHttpReporterTest.java +++ b/core/src/test/java/google/registry/reporting/icann/IcannHttpReporterTest.java @@ -29,7 +29,7 @@ import com.google.api.client.testing.http.MockLowLevelHttpResponse; import com.google.api.client.util.Base64; import com.google.api.client.util.StringUtils; import com.google.common.io.ByteSource; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import java.io.IOException; import java.util.List; import java.util.Map; @@ -47,7 +47,8 @@ class IcannHttpReporterTest { private MockLowLevelHttpRequest mockRequest; @RegisterExtension - AppEngineRule appEngineRule = new AppEngineRule.Builder().withDatastoreAndCloudSql().build(); + AppEngineExtension appEngineRule = + new AppEngineExtension.Builder().withDatastoreAndCloudSql().build(); private MockHttpTransport createMockTransport(final ByteSource iirdeaResponse) { return new MockHttpTransport() { diff --git a/core/src/test/java/google/registry/reporting/icann/IcannReportingStagerTest.java b/core/src/test/java/google/registry/reporting/icann/IcannReportingStagerTest.java index 3870c1fef..67e68114d 100644 --- a/core/src/test/java/google/registry/reporting/icann/IcannReportingStagerTest.java +++ b/core/src/test/java/google/registry/reporting/icann/IcannReportingStagerTest.java @@ -33,7 +33,7 @@ import google.registry.bigquery.BigqueryConnection.DestinationTable; import google.registry.bigquery.BigqueryUtils.TableType; import google.registry.gcs.GcsUtils; import google.registry.reporting.icann.IcannReportingModule.ReportType; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.FakeResponse; import java.util.concurrent.Executor; import java.util.concurrent.TimeUnit; @@ -51,8 +51,8 @@ class IcannReportingStagerTest { private String subdir = "icann/monthly/2017-06"; @RegisterExtension - final AppEngineRule appEngine = - AppEngineRule.builder().withDatastoreAndCloudSql().withLocalModules().build(); + final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().withLocalModules().build(); private IcannReportingStager createStager() { IcannReportingStager action = new IcannReportingStager(); diff --git a/core/src/test/java/google/registry/reporting/icann/IcannReportingStagingActionTest.java b/core/src/test/java/google/registry/reporting/icann/IcannReportingStagingActionTest.java index 3d96225fe..1ba45a333 100644 --- a/core/src/test/java/google/registry/reporting/icann/IcannReportingStagingActionTest.java +++ b/core/src/test/java/google/registry/reporting/icann/IcannReportingStagingActionTest.java @@ -28,7 +28,7 @@ import com.google.common.collect.ImmutableSet; import google.registry.bigquery.BigqueryJobFailureException; import google.registry.reporting.icann.IcannReportingModule.ReportType; import google.registry.request.HttpException.BadRequestException; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.FakeClock; import google.registry.testing.FakeResponse; import google.registry.testing.FakeSleeper; @@ -53,8 +53,12 @@ class IcannReportingStagingActionTest { private IcannReportingStagingAction action; @RegisterExtension - final AppEngineRule appEngine = - AppEngineRule.builder().withDatastoreAndCloudSql().withLocalModules().withTaskQueue().build(); + final AppEngineExtension appEngine = + AppEngineExtension.builder() + .withDatastoreAndCloudSql() + .withLocalModules() + .withTaskQueue() + .build(); @BeforeEach void beforeEach() throws Exception { diff --git a/core/src/test/java/google/registry/reporting/icann/IcannReportingUploadActionTest.java b/core/src/test/java/google/registry/reporting/icann/IcannReportingUploadActionTest.java index a8cc85012..2e2766d6b 100644 --- a/core/src/test/java/google/registry/reporting/icann/IcannReportingUploadActionTest.java +++ b/core/src/test/java/google/registry/reporting/icann/IcannReportingUploadActionTest.java @@ -37,7 +37,7 @@ import google.registry.model.common.Cursor; import google.registry.model.common.Cursor.CursorType; import google.registry.model.registry.Registry; import google.registry.request.HttpException.ServiceUnavailableException; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.FakeClock; import google.registry.testing.FakeLockHandler; import google.registry.testing.FakeResponse; @@ -58,7 +58,8 @@ import org.junit.jupiter.api.extension.RegisterExtension; class IcannReportingUploadActionTest { @RegisterExtension - final AppEngineRule appEngine = AppEngineRule.builder().withDatastoreAndCloudSql().build(); + final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().build(); private static final byte[] PAYLOAD_SUCCESS = "test,csv\n13,37".getBytes(UTF_8); private static final byte[] PAYLOAD_FAIL = "ahah,csv\n12,34".getBytes(UTF_8); diff --git a/core/src/test/java/google/registry/reporting/spec11/GenerateSpec11ReportActionTest.java b/core/src/test/java/google/registry/reporting/spec11/GenerateSpec11ReportActionTest.java index fb702a8c7..d2ff9226c 100644 --- a/core/src/test/java/google/registry/reporting/spec11/GenerateSpec11ReportActionTest.java +++ b/core/src/test/java/google/registry/reporting/spec11/GenerateSpec11ReportActionTest.java @@ -31,7 +31,7 @@ import com.google.api.services.dataflow.model.LaunchTemplateResponse; import com.google.api.services.dataflow.model.RuntimeEnvironment; import com.google.common.collect.ImmutableMap; import com.google.common.net.MediaType; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.FakeResponse; import google.registry.testing.TaskQueueHelper.TaskMatcher; import java.io.IOException; @@ -44,7 +44,7 @@ import org.junit.jupiter.api.extension.RegisterExtension; class GenerateSpec11ReportActionTest { @RegisterExtension - final AppEngineRule appEngine = AppEngineRule.builder().withTaskQueue().build(); + final AppEngineExtension appEngine = AppEngineExtension.builder().withTaskQueue().build(); private FakeResponse response; private Dataflow dataflow; diff --git a/core/src/test/java/google/registry/reporting/spec11/Spec11EmailUtilsTest.java b/core/src/test/java/google/registry/reporting/spec11/Spec11EmailUtilsTest.java index 956d4c47a..ec0fdd1ec 100644 --- a/core/src/test/java/google/registry/reporting/spec11/Spec11EmailUtilsTest.java +++ b/core/src/test/java/google/registry/reporting/spec11/Spec11EmailUtilsTest.java @@ -38,7 +38,7 @@ import com.google.common.net.MediaType; import google.registry.model.domain.DomainBase; import google.registry.model.host.HostResource; import google.registry.reporting.spec11.soy.Spec11EmailSoyInfo; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.util.EmailMessage; import google.registry.util.SendEmailService; import java.util.LinkedHashSet; @@ -93,7 +93,8 @@ class Spec11EmailUtilsTest { + " notice, please contact abuse@test.com.

"; @RegisterExtension - final AppEngineRule appEngine = AppEngineRule.builder().withDatastoreAndCloudSql().build(); + final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().build(); private SendEmailService emailService; private Spec11EmailUtils emailUtils; @@ -309,7 +310,7 @@ class Spec11EmailUtilsTest { void testSuccess_useWhoisAbuseEmailIfAvailable() throws Exception { // if John Doe is the whois abuse contact, email them instead of the regular email persistResource( - AppEngineRule.makeRegistrarContact2() + AppEngineExtension.makeRegistrarContact2() .asBuilder() .setEmailAddress("johndoe@theregistrar.com") .setVisibleInDomainWhoisAsAbuse(true) diff --git a/core/src/test/java/google/registry/request/RequestHandlerTest.java b/core/src/test/java/google/registry/request/RequestHandlerTest.java index 73d0add5f..6169b0b2e 100644 --- a/core/src/test/java/google/registry/request/RequestHandlerTest.java +++ b/core/src/test/java/google/registry/request/RequestHandlerTest.java @@ -35,7 +35,7 @@ import google.registry.request.auth.AuthLevel; import google.registry.request.auth.AuthResult; import google.registry.request.auth.RequestAuthenticator; import google.registry.request.auth.UserAuthInfo; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.UserInfo; import java.io.PrintWriter; import java.io.StringWriter; @@ -51,8 +51,8 @@ import org.junit.jupiter.api.extension.RegisterExtension; public final class RequestHandlerTest { @RegisterExtension - final AppEngineRule appEngine = - AppEngineRule.builder() + final AppEngineExtension appEngine = + AppEngineExtension.builder() .withDatastoreAndCloudSql() .withUserService(UserInfo.create("test@example.com", "test@example.com")) .build(); diff --git a/core/src/test/java/google/registry/request/auth/AuthenticatedRegistrarAccessorTest.java b/core/src/test/java/google/registry/request/auth/AuthenticatedRegistrarAccessorTest.java index a441cc5ba..22c9c1878 100644 --- a/core/src/test/java/google/registry/request/auth/AuthenticatedRegistrarAccessorTest.java +++ b/core/src/test/java/google/registry/request/auth/AuthenticatedRegistrarAccessorTest.java @@ -17,7 +17,7 @@ package google.registry.request.auth; import static com.google.common.truth.Truth.assertThat; import static google.registry.request.auth.AuthenticatedRegistrarAccessor.Role.ADMIN; import static google.registry.request.auth.AuthenticatedRegistrarAccessor.Role.OWNER; -import static google.registry.testing.AppEngineRule.THE_REGISTRAR_GAE_USER_ID; +import static google.registry.testing.AppEngineExtension.THE_REGISTRAR_GAE_USER_ID; import static google.registry.testing.DatastoreHelper.loadRegistrar; import static google.registry.testing.DatastoreHelper.persistResource; import static google.registry.testing.LogsSubject.assertAboutLogs; @@ -37,7 +37,7 @@ import google.registry.groups.GroupsConnection; import google.registry.model.registrar.Registrar; import google.registry.model.registrar.Registrar.State; import google.registry.request.auth.AuthenticatedRegistrarAccessor.RegistrarAccessDeniedException; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.InjectRule; import java.util.Optional; import java.util.logging.Level; @@ -59,7 +59,8 @@ import org.mockito.quality.Strictness; class AuthenticatedRegistrarAccessorTest { @RegisterExtension - final AppEngineRule appEngine = AppEngineRule.builder().withDatastoreAndCloudSql().build(); + final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().build(); @RegisterExtension final InjectRule inject = new InjectRule(); diff --git a/core/src/test/java/google/registry/request/auth/LegacyAuthenticationMechanismTest.java b/core/src/test/java/google/registry/request/auth/LegacyAuthenticationMechanismTest.java index ccbe3a50c..293db8352 100644 --- a/core/src/test/java/google/registry/request/auth/LegacyAuthenticationMechanismTest.java +++ b/core/src/test/java/google/registry/request/auth/LegacyAuthenticationMechanismTest.java @@ -25,7 +25,7 @@ import static org.mockito.Mockito.when; import com.google.appengine.api.users.User; import com.google.appengine.api.users.UserService; import google.registry.security.XsrfTokenManager; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.FakeClock; import javax.servlet.http.HttpServletRequest; import org.junit.jupiter.api.AfterEach; @@ -43,7 +43,8 @@ import org.mockito.quality.Strictness; final class LegacyAuthenticationMechanismTest { @RegisterExtension - final AppEngineRule appEngine = AppEngineRule.builder().withDatastoreAndCloudSql().build(); + final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().build(); @Mock private UserService userService; @Mock private HttpServletRequest req; diff --git a/core/src/test/java/google/registry/request/auth/RequestAuthenticatorTest.java b/core/src/test/java/google/registry/request/auth/RequestAuthenticatorTest.java index 7d514d7c4..85bbe607f 100644 --- a/core/src/test/java/google/registry/request/auth/RequestAuthenticatorTest.java +++ b/core/src/test/java/google/registry/request/auth/RequestAuthenticatorTest.java @@ -30,7 +30,7 @@ import google.registry.request.auth.RequestAuthenticator.AuthMethod; import google.registry.request.auth.RequestAuthenticator.AuthSettings; import google.registry.request.auth.RequestAuthenticator.UserPolicy; import google.registry.security.XsrfTokenManager; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.FakeClock; import google.registry.testing.FakeOAuthService; import google.registry.testing.FakeUserService; @@ -43,7 +43,7 @@ import org.junit.jupiter.api.extension.RegisterExtension; /** Unit tests for {@link RequestAuthenticator}. */ class RequestAuthenticatorTest { - @RegisterExtension final AppEngineRule appEngine = AppEngineRule.builder().build(); + @RegisterExtension final AppEngineExtension appEngine = AppEngineExtension.builder().build(); private static final AuthSettings AUTH_NONE = AuthSettings.create( ImmutableList.of(AuthMethod.INTERNAL), diff --git a/core/src/test/java/google/registry/request/lock/LockHandlerImplTest.java b/core/src/test/java/google/registry/request/lock/LockHandlerImplTest.java index d0e231a0e..d9b3ce77d 100644 --- a/core/src/test/java/google/registry/request/lock/LockHandlerImplTest.java +++ b/core/src/test/java/google/registry/request/lock/LockHandlerImplTest.java @@ -21,7 +21,7 @@ import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import google.registry.model.server.Lock; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.FakeClock; import google.registry.util.RequestStatusCheckerImpl; import java.util.Optional; @@ -30,21 +30,17 @@ import java.util.concurrent.TimeoutException; import javax.annotation.Nullable; import org.joda.time.DateTime; import org.joda.time.Duration; -import org.junit.Before; -import org.junit.Rule; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.RegisterExtension; /** Unit tests for {@link LockHandler}. */ -@RunWith(JUnit4.class) -public final class LockHandlerImplTest { +final class LockHandlerImplTest { private static final Duration ONE_DAY = Duration.standardDays(1); private final FakeClock clock = new FakeClock(DateTime.parse("2001-08-29T12:20:00Z")); - @Rule public final AppEngineRule appEngine = AppEngineRule.builder().build(); + @RegisterExtension final AppEngineExtension appEngine = AppEngineExtension.builder().build(); private static class CountingCallable implements Callable { int numCalled = 0; @@ -87,11 +83,8 @@ public final class LockHandlerImplTest { return lockHandler.executeWithLocks(callable, "tld", ONE_DAY, "resourceName"); } - @Before public void setUp() { - } - @Test - public void testLockSucceeds() { + void testLockSucceeds() { Lock lock = mock(Lock.class); CountingCallable countingCallable = new CountingCallable(); assertThat(executeWithLocks(countingCallable, lock)).isTrue(); @@ -100,7 +93,7 @@ public final class LockHandlerImplTest { } @Test - public void testLockSucceeds_uncheckedException() { + void testLockSucceeds_uncheckedException() { Lock lock = mock(Lock.class); Exception expectedException = new RuntimeException("test"); RuntimeException exception = @@ -112,7 +105,7 @@ public final class LockHandlerImplTest { } @Test - public void testLockSucceeds_timeoutException() { + void testLockSucceeds_timeoutException() { Lock lock = mock(Lock.class); Exception expectedException = new TimeoutException("test"); RuntimeException thrown = @@ -129,7 +122,7 @@ public final class LockHandlerImplTest { } @Test - public void testLockSucceeds_checkedException() { + void testLockSucceeds_checkedException() { Lock lock = mock(Lock.class); Exception expectedException = new Exception("test"); RuntimeException exception = @@ -141,7 +134,7 @@ public final class LockHandlerImplTest { } @Test - public void testLockFailed() { + void testLockFailed() { Lock lock = null; CountingCallable countingCallable = new CountingCallable(); assertThat(executeWithLocks(countingCallable, lock)).isFalse(); diff --git a/core/src/test/java/google/registry/schema/cursor/CursorDaoTest.java b/core/src/test/java/google/registry/schema/cursor/CursorDaoTest.java index bb2dbe68a..9d2d3e17e 100644 --- a/core/src/test/java/google/registry/schema/cursor/CursorDaoTest.java +++ b/core/src/test/java/google/registry/schema/cursor/CursorDaoTest.java @@ -25,7 +25,7 @@ import com.google.common.collect.ImmutableSet; import com.google.common.testing.TestLogHandler; import google.registry.model.common.Cursor.CursorType; import google.registry.model.registry.Registry; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.FakeClock; import java.util.List; import java.util.logging.Level; @@ -42,8 +42,8 @@ public class CursorDaoTest { private final Logger loggerToIntercept = Logger.getLogger(CursorDao.class.getCanonicalName()); @RegisterExtension - public final AppEngineRule appEngine = - AppEngineRule.builder() + public final AppEngineExtension appEngine = + AppEngineExtension.builder() .withDatastoreAndCloudSql() .enableJpaEntityCoverageCheck(true) .withClock(fakeClock) diff --git a/core/src/test/java/google/registry/schema/integration/SqlIntegrationMembershipTest.java b/core/src/test/java/google/registry/schema/integration/SqlIntegrationMembershipTest.java deleted file mode 100644 index 8571000a0..000000000 --- a/core/src/test/java/google/registry/schema/integration/SqlIntegrationMembershipTest.java +++ /dev/null @@ -1,88 +0,0 @@ -// Copyright 2018 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.schema.integration; - -import com.google.common.collect.ImmutableSet; -import com.google.common.collect.Sets; -import com.google.common.collect.Sets.SetView; -import com.google.common.truth.Expect; -import google.registry.persistence.transaction.JpaTestRules.JpaIntegrationWithCoverageRule; -import io.github.classgraph.ClassGraph; -import io.github.classgraph.ScanResult; -import java.lang.reflect.Field; -import java.util.stream.Stream; -import org.junit.ClassRule; -import org.junit.Ignore; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; -import org.junit.runners.Suite.SuiteClasses; - -/** - * Verifies that {@link SqlIntegrationTestSuite} includes all integration tests for JPA entities and - * nothing else. The test suite is used in server/schema compatibility tests between releases. - * - *

All JPA entity test classes are expected to have a field with type {@link - * JpaIntegrationWithCoverageRule}. - */ -@RunWith(JUnit4.class) -public class SqlIntegrationMembershipTest { - - @ClassRule public static final Expect expect = Expect.create(); - - // TODO(shicong): Investigate another way to check the membership - @Test - @Ignore - public void sqlIntegrationMembershipComplete() { - ImmutableSet sqlDependentTests; - try (ScanResult scanResult = - new ClassGraph().enableAnnotationInfo().whitelistPackages("google.registry").scan()) { - sqlDependentTests = - scanResult.getClassesWithAnnotation(RunWith.class.getName()).stream() - .filter(clazz -> clazz.getSimpleName().endsWith("Test")) - .map(clazz -> clazz.loadClass()) - .filter(SqlIntegrationMembershipTest::isSqlDependent) - .map(Class::getName) - .collect(ImmutableSet.toImmutableSet()); - } - ImmutableSet declaredTests = - Stream.of(SqlIntegrationTestSuite.class.getAnnotation(SuiteClasses.class).value()) - .map(Class::getName) - .collect(ImmutableSet.toImmutableSet()); - SetView undeclaredTests = Sets.difference(sqlDependentTests, declaredTests); - expect - .withMessage( - "Undeclared sql-dependent tests found. " - + "Please add them to SqlIntegrationTestSuite.java.") - .that(undeclaredTests) - .isEmpty(); - SetView unnecessaryDeclarations = Sets.difference(declaredTests, sqlDependentTests); - expect - .withMessage("Found tests that should not be included in SqlIntegrationTestSuite.java.") - .that(unnecessaryDeclarations) - .isEmpty(); - } - - private static boolean isSqlDependent(Class testClass) { - for (Class clazz = testClass; clazz != null; clazz = clazz.getSuperclass()) { - if (Stream.of(clazz.getDeclaredFields()) - .map(Field::getType) - .anyMatch(JpaIntegrationWithCoverageRule.class::equals)) { - return true; - } - } - return false; - } -} diff --git a/core/src/test/java/google/registry/schema/integration/SqlIntegrationTestSuite.java b/core/src/test/java/google/registry/schema/integration/SqlIntegrationTestSuite.java index b6417e4ea..b75ebcefa 100644 --- a/core/src/test/java/google/registry/schema/integration/SqlIntegrationTestSuite.java +++ b/core/src/test/java/google/registry/schema/integration/SqlIntegrationTestSuite.java @@ -25,7 +25,7 @@ import google.registry.model.poll.PollMessageTest; import google.registry.model.registry.RegistryLockDaoTest; import google.registry.model.registry.label.ReservedListSqlDaoTest; import google.registry.model.reporting.Spec11ThreatMatchTest; -import google.registry.persistence.transaction.JpaEntityCoverage; +import google.registry.persistence.transaction.JpaEntityCoverageExtension; import google.registry.schema.cursor.CursorDaoTest; import google.registry.schema.integration.SqlIntegrationTestSuite.AfterSuiteTest; import google.registry.schema.integration.SqlIntegrationTestSuite.BeforeSuiteTest; @@ -33,6 +33,7 @@ import google.registry.schema.registrar.RegistrarDaoTest; import google.registry.schema.server.LockDaoTest; import google.registry.schema.tld.PremiumListDaoTest; import google.registry.schema.tmch.ClaimsListDaoTest; +import google.registry.testing.AppEngineExtension; import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; @@ -45,13 +46,9 @@ import org.junit.runner.RunWith; * server/schema compatibility tests between releases. * *

Suite members are typically DAO tests, which perform simple create/update/delete operations on - * JPA entities. Each member class must use the {@link - * google.registry.persistence.transaction.JpaTestRules.JpaIntegrationWithCoverageRule} (either - * directly or through a rule chain) and have at least one test method that persists a JPA entity - * declared in persistence.xml. - * - *

Membership of this suite is monitored by the checks in {@link #checkJpaEntityCoverage()} and - * {@link SqlIntegrationMembershipTest#sqlIntegrationMembershipComplete()}. + * JPA entities. Each member class must call {@link + * AppEngineExtension.Builder#enableJpaEntityCoverageCheck} and have at least one test method that + * persists a JPA entity declared in persistence.xml. * *

Note that with {@code JpaIntegrationWithCoverageRule}, each method starts with an empty * database. Therefore this is not the right place for verifying backward data compatibility in @@ -94,7 +91,7 @@ public class SqlIntegrationTestSuite { @BeforeAll // Not yet supported in JUnit 5. Called through BeforeSuiteTest. public static void initJpaEntityCoverage() { - JpaEntityCoverage.init(); + JpaEntityCoverageExtension.init(); } @AfterAll // Not yet supported in JUnit 5. Called through AfterSuiteTest. @@ -102,12 +99,12 @@ public class SqlIntegrationTestSuite { // TODO(weiminyu): collect both assertion errors like Truth's Expect does in JUnit 4. assert_() .withMessage("Tests are missing for the following JPA entities:") - .that(JpaEntityCoverage.getUncoveredEntities()) + .that(JpaEntityCoverageExtension.getUncoveredEntities()) .isEmpty(); assert_() .withMessage( "The following classes do not test JPA entities. Please remove them from this suite") - .that(JpaEntityCoverage.getIrrelevantTestClasses()) + .that(JpaEntityCoverageExtension.getIrrelevantTestClasses()) .isEmpty(); } diff --git a/core/src/test/java/google/registry/schema/replay/EntityTest.java b/core/src/test/java/google/registry/schema/replay/EntityTest.java index 86d5f5166..bc6c88a5f 100644 --- a/core/src/test/java/google/registry/schema/replay/EntityTest.java +++ b/core/src/test/java/google/registry/schema/replay/EntityTest.java @@ -26,8 +26,8 @@ import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; -import org.junit.Ignore; -import org.junit.Test; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; /** * Test to verify classes implement {@link SqlEntity} and {@link DatastoreEntity} when they should. @@ -35,8 +35,8 @@ import org.junit.Test; public class EntityTest { @Test - @Ignore("This won't be done until b/152410794 is done, since it requires many entity changes") - public void testSqlEntityPersistence() { + @Disabled("This won't be done until b/152410794 is done, since it requires many entity changes") + void testSqlEntityPersistence() { try (ScanResult scanResult = new ClassGraph().enableAnnotationInfo().whitelistPackages("google.registry").scan()) { // All javax.persistence entities must implement SqlEntity and vice versa diff --git a/core/src/test/java/google/registry/schema/tld/PremiumListDaoTest.java b/core/src/test/java/google/registry/schema/tld/PremiumListDaoTest.java index d8fb3a90f..fb0342a25 100644 --- a/core/src/test/java/google/registry/schema/tld/PremiumListDaoTest.java +++ b/core/src/test/java/google/registry/schema/tld/PremiumListDaoTest.java @@ -29,7 +29,7 @@ import com.google.common.collect.ImmutableMap; import com.googlecode.objectify.Key; import google.registry.model.registry.Registry; import google.registry.model.registry.label.PremiumList; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.FakeClock; import java.math.BigDecimal; import java.util.Optional; @@ -46,8 +46,8 @@ public class PremiumListDaoTest { private final FakeClock fakeClock = new FakeClock(); @RegisterExtension - public final AppEngineRule appEngine = - AppEngineRule.builder() + public final AppEngineExtension appEngine = + AppEngineExtension.builder() .withDatastoreAndCloudSql() .enableJpaEntityCoverageCheck(true) .withClock(fakeClock) diff --git a/core/src/test/java/google/registry/schema/tld/PremiumListUtilsTest.java b/core/src/test/java/google/registry/schema/tld/PremiumListUtilsTest.java index 419d9aff2..d6eca9754 100644 --- a/core/src/test/java/google/registry/schema/tld/PremiumListUtilsTest.java +++ b/core/src/test/java/google/registry/schema/tld/PremiumListUtilsTest.java @@ -19,22 +19,20 @@ import static google.registry.schema.tld.PremiumListUtils.parseToPremiumList; import static org.junit.Assert.assertThrows; import google.registry.model.registry.label.PremiumList; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import java.math.BigDecimal; -import org.junit.Rule; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.RegisterExtension; /** Unit tests for {@link PremiumListUtils}. */ -@RunWith(JUnit4.class) -public class PremiumListUtilsTest { +class PremiumListUtilsTest { - @Rule - public final AppEngineRule appEngine = AppEngineRule.builder().withDatastoreAndCloudSql().build(); + @RegisterExtension + final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().build(); @Test - public void parseInputToPremiumList_works() { + void parseInputToPremiumList_works() { PremiumList premiumList = parseToPremiumList("testlist", "foo,USD 99.50\n" + "bar,USD 30\n" + "baz,USD 10\n"); assertThat(premiumList.getName()).isEqualTo("testlist"); @@ -43,7 +41,7 @@ public class PremiumListUtilsTest { } @Test - public void parseInputToPremiumList_throwsOnInconsistentCurrencies() { + void parseInputToPremiumList_throwsOnInconsistentCurrencies() { IllegalArgumentException thrown = assertThrows( IllegalArgumentException.class, diff --git a/core/src/test/java/google/registry/security/JsonHttpTest.java b/core/src/test/java/google/registry/security/JsonHttpTest.java index 4a78fac1b..a752365fc 100644 --- a/core/src/test/java/google/registry/security/JsonHttpTest.java +++ b/core/src/test/java/google/registry/security/JsonHttpTest.java @@ -32,19 +32,16 @@ import java.io.StringReader; import java.io.StringWriter; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; +import org.junit.jupiter.api.Test; /** Unit tests for {@link JsonHttp}. */ -@RunWith(JUnit4.class) -public class JsonHttpTest { +class JsonHttpTest { private final HttpServletRequest req = mock(HttpServletRequest.class); private final HttpServletResponse rsp = mock(HttpServletResponse.class); @Test - public void testRead_postMethod_works() throws Exception { + void testRead_postMethod_works() throws Exception { when(req.getMethod()).thenReturn("POST"); when(req.getContentType()).thenReturn(JSON_UTF_8.toString()); when(req.getReader()).thenReturn(new BufferedReader(new StringReader("{\"k\":\"v\"}"))); @@ -52,7 +49,7 @@ public class JsonHttpTest { } @Test - public void testRead_putMethod_works() throws Exception { + void testRead_putMethod_works() throws Exception { when(req.getMethod()).thenReturn("PUT"); when(req.getContentType()).thenReturn(JSON_UTF_8.toString()); when(req.getReader()).thenReturn(new BufferedReader(new StringReader("{\"k\":\"v\"}"))); @@ -60,7 +57,7 @@ public class JsonHttpTest { } @Test - public void testRead_getMethod_notAllowed() throws Exception { + void testRead_getMethod_notAllowed() throws Exception { when(req.getMethod()).thenReturn("GET"); when(req.getContentType()).thenReturn(JSON_UTF_8.toString()); when(req.getReader()).thenReturn(new BufferedReader(new StringReader("{}"))); @@ -68,7 +65,7 @@ public class JsonHttpTest { } @Test - public void testRead_textPlainContentType_notAllowed() throws Exception { + void testRead_textPlainContentType_notAllowed() throws Exception { when(req.getMethod()).thenReturn("POST"); when(req.getContentType()).thenReturn(PLAIN_TEXT_UTF_8.toString()); when(req.getReader()).thenReturn(new BufferedReader(new StringReader("{\"k\":\"v\"}"))); @@ -76,7 +73,7 @@ public class JsonHttpTest { } @Test - public void testRead_jsonContentTypeWithoutCharsetParameter_allowed() throws Exception { + void testRead_jsonContentTypeWithoutCharsetParameter_allowed() throws Exception { when(req.getMethod()).thenReturn("POST"); when(req.getContentType()).thenReturn(JSON_UTF_8.withoutParameters().toString()); when(req.getReader()).thenReturn(new BufferedReader(new StringReader("{\"k\":\"v\"}"))); @@ -84,7 +81,7 @@ public class JsonHttpTest { } @Test - public void testRead_jsonContentTypeWithWeirdCharsetParameter_notAllowed() throws Exception { + void testRead_jsonContentTypeWithWeirdCharsetParameter_notAllowed() throws Exception { when(req.getMethod()).thenReturn("POST"); when(req.getContentType()).thenReturn(JSON_UTF_8.withCharset(UTF_16).toString()); when(req.getReader()).thenReturn(new BufferedReader(new StringReader("{\"k\":\"v\"}"))); @@ -92,7 +89,7 @@ public class JsonHttpTest { } @Test - public void testRead_emptyJson_notAllowed() throws Exception { + void testRead_emptyJson_notAllowed() throws Exception { when(req.getMethod()).thenReturn("POST"); when(req.getContentType()).thenReturn(JSON_UTF_8.toString()); when(req.getReader()).thenReturn(new BufferedReader(new StringReader(""))); @@ -100,7 +97,7 @@ public class JsonHttpTest { } @Test - public void testRead_nonObjectJson_notAllowed() throws Exception { + void testRead_nonObjectJson_notAllowed() throws Exception { when(req.getMethod()).thenReturn("POST"); when(req.getContentType()).thenReturn(JSON_UTF_8.toString()); when(req.getReader()).thenReturn(new BufferedReader(new StringReader("123"))); @@ -108,7 +105,7 @@ public class JsonHttpTest { } @Test - public void testRead_nullJson_notAllowed() throws Exception { + void testRead_nullJson_notAllowed() throws Exception { when(req.getMethod()).thenReturn("POST"); when(req.getContentType()).thenReturn(JSON_UTF_8.toString()); when(req.getReader()).thenReturn(new BufferedReader(new StringReader("null"))); @@ -116,7 +113,7 @@ public class JsonHttpTest { } @Test - public void testWrite() throws Exception { + void testWrite() throws Exception { StringWriter writer = new StringWriter(); when(rsp.getWriter()).thenReturn(new PrintWriter(writer)); JsonHttp.write(rsp, ImmutableMap.of("k", "v")); diff --git a/core/src/test/java/google/registry/security/XsrfTokenManagerTest.java b/core/src/test/java/google/registry/security/XsrfTokenManagerTest.java index 7e3a77fbf..2b36744ec 100644 --- a/core/src/test/java/google/registry/security/XsrfTokenManagerTest.java +++ b/core/src/test/java/google/registry/security/XsrfTokenManagerTest.java @@ -19,26 +19,23 @@ import static google.registry.util.DateTimeUtils.START_OF_TIME; import com.google.appengine.api.users.User; import com.google.common.base.Splitter; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.FakeClock; import google.registry.testing.FakeUserService; import google.registry.testing.InjectRule; import org.joda.time.Duration; -import org.junit.Before; -import org.junit.Rule; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.RegisterExtension; /** Tests for {@link XsrfTokenManager}. */ -@RunWith(JUnit4.class) -public class XsrfTokenManagerTest { +class XsrfTokenManagerTest { - @Rule - public final AppEngineRule appEngine = AppEngineRule.builder().withDatastoreAndCloudSql().build(); + @RegisterExtension + final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().build(); - @Rule - public InjectRule inject = new InjectRule(); + @RegisterExtension InjectRule inject = new InjectRule(); private final User testUser = new User("test@example.com", "test@example.com"); private final FakeClock clock = new FakeClock(START_OF_TIME); @@ -47,34 +44,34 @@ public class XsrfTokenManagerTest { private String token; - @Before - public void init() { + @BeforeEach + void beforeEach() { userService.setUser(testUser, false); token = xsrfTokenManager.generateToken(testUser.getEmail()); } @Test - public void testValidate_validToken() { + void testValidate_validToken() { assertThat(xsrfTokenManager.validateToken(token)).isTrue(); } @Test - public void testValidate_tokenWithMissingParts() { + void testValidate_tokenWithMissingParts() { assertThat(xsrfTokenManager.validateToken("1:123")).isFalse(); } @Test - public void testValidate_tokenWithBadVersion() { + void testValidate_tokenWithBadVersion() { assertThat(xsrfTokenManager.validateToken("2:123:base64")).isFalse(); } @Test - public void testValidate_tokenWithBadNumberTimestamp() { + void testValidate_tokenWithBadNumberTimestamp() { assertThat(xsrfTokenManager.validateToken("1:notanumber:base64")).isFalse(); } @Test - public void testValidate_tokenExpiresAfterOneDay() { + void testValidate_tokenExpiresAfterOneDay() { clock.advanceBy(Duration.standardDays(1)); assertThat(xsrfTokenManager.validateToken(token)).isTrue(); clock.advanceOneMilli(); @@ -82,14 +79,14 @@ public class XsrfTokenManagerTest { } @Test - public void testValidate_tokenTimestampTamperedWith() { + void testValidate_tokenTimestampTamperedWith() { String encodedPart = Splitter.on(':').splitToList(token).get(2); long fakeTimestamp = clock.nowUtc().plusMillis(1).getMillis(); assertThat(xsrfTokenManager.validateToken("1:" + fakeTimestamp + ":" + encodedPart)).isFalse(); } @Test - public void testValidate_tokenForDifferentUser() { + void testValidate_tokenForDifferentUser() { String otherToken = xsrfTokenManager.generateToken("eve@example.com"); assertThat(xsrfTokenManager.validateToken(otherToken)).isFalse(); } diff --git a/core/src/test/java/google/registry/server/RegistryTestServerMain.java b/core/src/test/java/google/registry/server/RegistryTestServerMain.java index b70a635fe..7aa562275 100644 --- a/core/src/test/java/google/registry/server/RegistryTestServerMain.java +++ b/core/src/test/java/google/registry/server/RegistryTestServerMain.java @@ -19,13 +19,11 @@ import com.beust.jcommander.Parameter; import com.beust.jcommander.Parameters; import com.google.common.collect.ImmutableList; import com.google.common.net.HostAndPort; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.UserInfo; import google.registry.tools.params.HostAndPortParameter; import google.registry.ui.ConsoleDebug; import java.util.List; -import org.junit.runner.Description; -import org.junit.runners.model.Statement; /** Command-line interface for {@link RegistryTestServer}. */ @Parameters(separators = " =", commandDescription = "Runs web development server.") @@ -62,7 +60,7 @@ public final class RegistryTestServerMain { @Parameter( names = "--login_user_id", description = "GAE User ID for App Engine Local User Service.") - private String loginUserId = AppEngineRule.MARLA_SINGER_GAE_USER_ID; + private String loginUserId = AppEngineExtension.MARLA_SINGER_GAE_USER_ID; @Parameter( names = "--login_is_admin", @@ -134,40 +132,37 @@ public final class RegistryTestServerMain { LIGHT_PURPLE, ORANGE, PINK, RESET); final RegistryTestServer server = new RegistryTestServer(address); - Statement runner = - new Statement() { - @Override - public void evaluate() throws InterruptedException { - System.out.printf("%sLoading Datastore fixtures...%s\n", BLUE, RESET); - for (Fixture fixture : fixtures) { - fixture.load(); - } - System.out.printf("%sStarting Jetty6 HTTP Server...%s\n", BLUE, RESET); - server.start(); - System.out.printf("%sListening on: %s%s\n", PURPLE, server.getUrl("/"), RESET); - try { - while (true) { - server.process(); - } - } finally { - server.stop(); - } - } - }; System.out.printf("%sLoading SQL fixtures and AppEngineRule...%s\n", BLUE, RESET); - AppEngineRule.builder() - .withDatastoreAndCloudSql() - .withUrlFetch() - .withTaskQueue() - .withLocalModules() - .withUserService( - loginIsAdmin - ? UserInfo.createAdmin(loginEmail, loginUserId) - : UserInfo.create(loginEmail, loginUserId)) - .build() - .apply(runner, Description.EMPTY) - .evaluate(); + AppEngineExtension appEngine = + AppEngineExtension.builder() + .withDatastoreAndCloudSql() + .withUrlFetch() + .withTaskQueue() + .withLocalModules() + .withUserService( + loginIsAdmin + ? UserInfo.createAdmin(loginEmail, loginUserId) + : UserInfo.create(loginEmail, loginUserId)) + .build(); + appEngine.setUp(); + System.out.printf("%sLoading Datastore fixtures...%s\n", BLUE, RESET); + for (Fixture fixture : fixtures) { + fixture.load(); + } + System.out.printf("%sStarting Jetty6 HTTP Server...%s\n", BLUE, RESET); + server.start(); + System.out.printf("%sListening on: %s%s\n", PURPLE, server.getUrl("/"), RESET); + try { + // This infinite loop is terminated when the user presses Ctrl-C. + //noinspection InfiniteLoopStatement + while (true) { + server.process(); + } + } finally { + server.stop(); + appEngine.tearDown(); + } } private RegistryTestServerMain() {} diff --git a/core/src/test/java/google/registry/storage/drive/DriveConnectionTest.java b/core/src/test/java/google/registry/storage/drive/DriveConnectionTest.java index d7a00f5df..180ab5f3e 100644 --- a/core/src/test/java/google/registry/storage/drive/DriveConnectionTest.java +++ b/core/src/test/java/google/registry/storage/drive/DriveConnectionTest.java @@ -38,15 +38,13 @@ import com.google.common.collect.ImmutableList; import com.google.common.net.MediaType; import java.util.Arrays; import java.util.List; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; import org.mockito.ArgumentMatcher; -/** Tests for {@link DriveConnection}.*/ -@RunWith(JUnit4.class) -public class DriveConnectionTest { +/** Tests for {@link DriveConnection}. */ +class DriveConnectionTest { + private final Drive drive = mock(Drive.class); private final Files files = mock(Files.class); private final Children children = mock(Children.class); @@ -56,8 +54,8 @@ public class DriveConnectionTest { private static final byte[] DATA = {1, 2, 3}; ChildList childList; - DriveConnection driveConnection; - List allChildren; + private DriveConnection driveConnection; + private List allChildren; private ArgumentMatcher hasByteArrayContent(final byte[] data) { return arg -> { @@ -69,8 +67,8 @@ public class DriveConnectionTest { }; } - @Before - public void init() throws Exception { + @BeforeEach + void beforeEach() throws Exception { driveConnection = new DriveConnection(); driveConnection.drive = drive; when(drive.files()).thenReturn(files); @@ -100,7 +98,7 @@ public class DriveConnectionTest { } @Test - public void testCreateFileAtRoot() throws Exception { + void testCreateFileAtRoot() throws Exception { when(files.insert( eq(new File().setTitle("title").setMimeType("image/gif")), argThat(hasByteArrayContent(DATA)))) @@ -109,7 +107,7 @@ public class DriveConnectionTest { } @Test - public void testCreateFileInFolder() throws Exception { + void testCreateFileInFolder() throws Exception { when(files.insert( eq( new File() @@ -122,28 +120,27 @@ public class DriveConnectionTest { } @Test - public void testCreateFolderAtRoot() throws Exception { - when(files.insert(new File() - .setTitle("title") - .setMimeType("application/vnd.google-apps.folder"))) - .thenReturn(insert); + void testCreateFolderAtRoot() throws Exception { + when(files.insert( + new File().setTitle("title").setMimeType("application/vnd.google-apps.folder"))) + .thenReturn(insert); assertThat(driveConnection.createFolder("title", null)).isEqualTo("id"); } @Test - public void testCreateFolderInFolder() throws Exception { - when(files.insert(new File() - .setTitle("title") - .setMimeType("application/vnd.google-apps.folder") - .setParents(ImmutableList.of(new ParentReference().setId("parent"))))) - .thenReturn(insert); + void testCreateFolderInFolder() throws Exception { + when(files.insert( + new File() + .setTitle("title") + .setMimeType("application/vnd.google-apps.folder") + .setParents(ImmutableList.of(new ParentReference().setId("parent"))))) + .thenReturn(insert); assertThat(driveConnection.createFolder("title", "parent")).isEqualTo("id"); } @Test - public void testListFiles_noQueryWithPagination() throws Exception { - assertThat(driveConnection.listFiles("driveFolderId")) - .containsExactlyElementsIn(allChildren); + void testListFiles_noQueryWithPagination() throws Exception { + assertThat(driveConnection.listFiles("driveFolderId")).containsExactlyElementsIn(allChildren); verify(childrenList).setPageToken("page2"); verify(childrenList).setPageToken(null); verify(childrenList, times(0)).setQ(anyString()); @@ -151,7 +148,7 @@ public class DriveConnectionTest { } @Test - public void testListFiles_withQueryAndPagination() throws Exception { + void testListFiles_withQueryAndPagination() throws Exception { assertThat(driveConnection.listFiles("driveFolderId", "sampleQuery")) .containsExactlyElementsIn(allChildren); verify(childrenList).setPageToken("page2"); @@ -161,7 +158,7 @@ public class DriveConnectionTest { } @Test - public void testCreateOrUpdateFile_succeedsForNewFile() throws Exception { + void testCreateOrUpdateFile_succeedsForNewFile() throws Exception { when(files.insert( eq( new File() @@ -172,39 +169,37 @@ public class DriveConnectionTest { .thenReturn(insert); ChildList emptyChildList = new ChildList().setItems(ImmutableList.of()).setNextPageToken(null); when(childrenList.execute()).thenReturn(emptyChildList); - assertThat(driveConnection.createOrUpdateFile( - "title", - MediaType.WEBM_VIDEO, - "driveFolderId", - DATA)) + assertThat( + driveConnection.createOrUpdateFile( + "title", MediaType.WEBM_VIDEO, "driveFolderId", DATA)) .isEqualTo("id"); } @Test - public void testCreateOrUpdateFile_succeedsForUpdatingFile() throws Exception { + void testCreateOrUpdateFile_succeedsForUpdatingFile() throws Exception { when(files.update( eq("id"), eq(new File().setTitle("title")), argThat(hasByteArrayContent(DATA)))) .thenReturn(update); - ChildList childList = new ChildList() - .setItems(ImmutableList.of(new ChildReference().setId("id"))) - .setNextPageToken(null); + ChildList childList = + new ChildList() + .setItems(ImmutableList.of(new ChildReference().setId("id"))) + .setNextPageToken(null); when(childrenList.execute()).thenReturn(childList); - assertThat(driveConnection.createOrUpdateFile( - "title", - MediaType.WEBM_VIDEO, - "driveFolderId", - DATA)) + assertThat( + driveConnection.createOrUpdateFile( + "title", MediaType.WEBM_VIDEO, "driveFolderId", DATA)) .isEqualTo("id"); } @Test - public void testCreateOrUpdateFile_throwsExceptionWhenMultipleFilesWithNameAlreadyExist() + void testCreateOrUpdateFile_throwsExceptionWhenMultipleFilesWithNameAlreadyExist() throws Exception { - ChildList childList = new ChildList() - .setItems(ImmutableList.of( - new ChildReference().setId("id1"), - new ChildReference().setId("id2"))) - .setNextPageToken(null); + ChildList childList = + new ChildList() + .setItems( + ImmutableList.of( + new ChildReference().setId("id1"), new ChildReference().setId("id2"))) + .setNextPageToken(null); when(childrenList.execute()).thenReturn(childList); IllegalStateException thrown = assertThrows( @@ -220,7 +215,7 @@ public class DriveConnectionTest { } @Test - public void testUpdateFile_succeeds() throws Exception { + void testUpdateFile_succeeds() throws Exception { when(files.update( eq("id"), eq(new File().setTitle("title")), argThat(hasByteArrayContent(DATA)))) .thenReturn(update); diff --git a/core/src/test/java/google/registry/testing/AppEngineRule.java b/core/src/test/java/google/registry/testing/AppEngineExtension.java similarity index 75% rename from core/src/test/java/google/registry/testing/AppEngineRule.java rename to core/src/test/java/google/registry/testing/AppEngineExtension.java index c72d031b4..0f2d5f190 100644 --- a/core/src/test/java/google/registry/testing/AppEngineRule.java +++ b/core/src/test/java/google/registry/testing/AppEngineExtension.java @@ -15,12 +15,16 @@ package google.registry.testing; import static com.google.common.base.Preconditions.checkState; +import static com.google.common.io.Files.asCharSink; import static com.google.common.truth.Truth.assertWithMessage; import static google.registry.testing.DatastoreHelper.persistSimpleResources; import static google.registry.testing.DualDatabaseTestInvocationContextProvider.injectTmForDualDatabaseTest; import static google.registry.testing.DualDatabaseTestInvocationContextProvider.restoreTmAfterDualDatabaseTest; +import static google.registry.util.PreconditionsUtils.checkArgumentNotNull; import static google.registry.util.ResourceUtils.readResourceUtf8; import static java.nio.charset.StandardCharsets.UTF_8; +import static java.nio.file.Files.walk; +import static java.util.Comparator.reverseOrder; import static org.json.XML.toJSONObject; import com.google.appengine.tools.development.testing.LocalDatastoreServiceTestConfig; @@ -45,19 +49,20 @@ import google.registry.model.registrar.Registrar.State; import google.registry.model.registrar.RegistrarAddress; import google.registry.model.registrar.RegistrarContact; import google.registry.persistence.transaction.JpaTestRules; -import google.registry.persistence.transaction.JpaTestRules.JpaIntegrationTestRule; +import google.registry.persistence.transaction.JpaTestRules.JpaIntegrationTestExtension; import google.registry.persistence.transaction.JpaTestRules.JpaIntegrationWithCoverageExtension; -import google.registry.persistence.transaction.JpaTestRules.JpaIntegrationWithCoverageRule; import google.registry.persistence.transaction.JpaTestRules.JpaUnitTestExtension; import google.registry.util.Clock; import java.io.ByteArrayInputStream; import java.io.File; import java.io.IOException; +import java.nio.file.Path; import java.util.HashSet; import java.util.List; import java.util.Optional; import java.util.Set; import java.util.logging.LogManager; +import java.util.stream.Stream; import javax.annotation.Nullable; import org.json.JSONArray; import org.json.JSONException; @@ -65,28 +70,17 @@ import org.json.JSONObject; import org.junit.jupiter.api.extension.AfterEachCallback; import org.junit.jupiter.api.extension.BeforeEachCallback; import org.junit.jupiter.api.extension.ExtensionContext; -import org.junit.rules.ExternalResource; -import org.junit.rules.TemporaryFolder; -import org.junit.runner.Description; -import org.junit.runners.model.Statement; +import org.junit.jupiter.api.io.TempDir; /** - * JUnit Rule for managing the App Engine testing environment. + * JUnit extension for managing the App Engine testing environment. * *

Generally you'll want to configure the environment using only the services you need (because * each service is expensive to create). * - *

This rule also resets global Objectify for the current thread. - * - *

This class works with both JUnit 4 and JUnit 5. With JUnit 4, the test runner calls {@link - * #apply(Statement, Description)}, which in turns calls {@link #before()} on entry and {@link - * #after()} on exit. With JUnit 5, the test runner calls {@link #beforeEach(ExtensionContext)} and - * {@link #afterEach(ExtensionContext)}. - * - * @see org.junit.rules.ExternalResource + *

This extension also resets global Objectify for the current thread. */ -public final class AppEngineRule extends ExternalResource - implements BeforeEachCallback, AfterEachCallback { +public final class AppEngineExtension implements BeforeEachCallback, AfterEachCallback { public static final String NEW_REGISTRAR_GAE_USER_ID = "666"; public static final String THE_REGISTRAR_GAE_USER_ID = "31337"; @@ -100,27 +94,32 @@ public final class AppEngineRule extends ExternalResource readResourceUtf8("google/registry/env/common/default/WEB-INF/queue.xml"); /** A parsed version of the indexes used in the prod code. */ - private static final Set MANUAL_INDEXES = getIndexXmlStrings( - readResourceUtf8( - "google/registry/env/common/default/WEB-INF/datastore-indexes.xml")); + private static final Set MANUAL_INDEXES = + getIndexXmlStrings( + readResourceUtf8("google/registry/env/common/default/WEB-INF/datastore-indexes.xml")); private static final String LOGGING_PROPERTIES = - readResourceUtf8(AppEngineRule.class, "logging.properties"); + readResourceUtf8(AppEngineExtension.class, "logging.properties"); private LocalServiceTestHelper helper; - /** A rule-within-a-rule to provide a temporary folder for AppEngineRule's internal temp files. */ - TemporaryFolder temporaryFolder = new TemporaryFolder(); - /** - * Sets up a SQL database when running on JUnit 5. This is for test classes that are not member of - * the {@code SqlIntegrationTestSuite}. + * A temporary directory for AppEngineRule's internal temp files that is different for each test. + * + *

Note that we can't use {@link TempDir} here because that only works in test classes, not + * extensions. */ - private JpaIntegrationTestRule jpaIntegrationTestRule = null; + File tmpDir; /** - * Sets up a SQL database when running on JUnit 5 and records the JPA entities tested by each test - * class. This is for {@code SqlIntegrationTestSuite} members. + * Sets up a SQL database. This is for test classes that are not a member of the {@code + * SqlIntegrationTestSuite}. + */ + private JpaIntegrationTestExtension jpaIntegrationTestRule = null; + + /** + * Sets up a SQL database and records the JPA entities tested by each test class. This is for + * {@code SqlIntegrationTestSuite} members. */ private JpaIntegrationWithCoverageExtension jpaIntegrationWithCoverageExtension = null; @@ -144,16 +143,17 @@ public final class AppEngineRule extends ExternalResource private ImmutableList> ofyTestEntities; private ImmutableList> jpaTestEntities; - /** Builder for {@link AppEngineRule}. */ + /** Builder for {@link AppEngineExtension}. */ public static class Builder { - private AppEngineRule rule = new AppEngineRule(); + private AppEngineExtension rule = new AppEngineExtension(); private ImmutableList.Builder> ofyTestEntities = new ImmutableList.Builder<>(); private ImmutableList.Builder> jpaTestEntities = new ImmutableList.Builder<>(); /** Turn on the Datastore service and the Cloud SQL service. */ public Builder withDatastoreAndCloudSql() { - rule.withDatastore = rule.withCloudSql = true; + rule.withDatastore = true; + rule.withCloudSql = true; return this; } @@ -223,7 +223,7 @@ public final class AppEngineRule extends ExternalResource * ObjectifyService} instances for each test (class), the setup overhead would rise * significantly. * - * @see AppEngineRule#register(Class) + * @see AppEngineExtension#register(Class) */ @SafeVarargs public final Builder withOfyTestEntities(Class... entities) { @@ -237,7 +237,7 @@ public final class AppEngineRule extends ExternalResource return this; } - public AppEngineRule build() { + public AppEngineExtension build() { checkState( !rule.enableJpaEntityCoverageCheck || rule.withCloudSql, "withJpaEntityCoverageCheck enabled without Cloud SQL"); @@ -263,20 +263,22 @@ public final class AppEngineRule extends ExternalResource .setState(State.ACTIVE) .setIcannReferralEmail("lol@sloth.test") .setUrl("http://my.fake.url") - .setInternationalizedAddress(new RegistrarAddress.Builder() - .setStreet(ImmutableList.of("123 Example Boulevard")) - .setCity("Williamsburg") - .setState("NY") - .setZip("11211") - .setCountryCode("US") - .build()) - .setLocalizedAddress(new RegistrarAddress.Builder() - .setStreet(ImmutableList.of("123 Example B\u0151ulevard")) - .setCity("Williamsburg") - .setState("NY") - .setZip("11211") - .setCountryCode("US") - .build()) + .setInternationalizedAddress( + new RegistrarAddress.Builder() + .setStreet(ImmutableList.of("123 Example Boulevard")) + .setCity("Williamsburg") + .setState("NY") + .setZip("11211") + .setCountryCode("US") + .build()) + .setLocalizedAddress( + new RegistrarAddress.Builder() + .setStreet(ImmutableList.of("123 Example B\u0151ulevard")) + .setCity("Williamsburg") + .setState("NY") + .setZip("11211") + .setCountryCode("US") + .build()) .setPhoneNumber("+1.3334445555") .setPhonePasscode("12345") .setContactsRequireSyncing(true); @@ -311,8 +313,8 @@ public final class AppEngineRule extends ExternalResource } /** - * Public factory for first RegistrarContact to allow comparison - * against stored value in unit tests. + * Public factory for first RegistrarContact to allow comparison against stored value in unit + * tests. */ public static RegistrarContact makeRegistrarContact1() { return new RegistrarContact.Builder() @@ -327,8 +329,8 @@ public final class AppEngineRule extends ExternalResource } /** - * Public factory for second RegistrarContact to allow comparison - * against stored value in unit tests. + * Public factory for second RegistrarContact to allow comparison against stored value in unit + * tests. */ public static RegistrarContact makeRegistrarContact2() { return new RegistrarContact.Builder() @@ -355,10 +357,11 @@ public final class AppEngineRule extends ExternalResource .build(); } - /** Called before every test method. JUnit 5 only. */ + /** Called before every test method. */ @Override public void beforeEach(ExtensionContext context) throws Exception { - before(); + checkArgumentNotNull(context, "The ExtensionContext must not be null"); + setUp(); if (withCloudSql) { JpaTestRules.Builder builder = new JpaTestRules.Builder(); if (clock != null) { @@ -383,82 +386,49 @@ public final class AppEngineRule extends ExternalResource } } - /** Called after each test method. JUnit 5 only. */ - @Override - public void afterEach(ExtensionContext context) throws Exception { - if (withCloudSql) { - if (enableJpaEntityCoverageCheck) { - jpaIntegrationWithCoverageExtension.afterEach(context); - } else if (withJpaUnitTest) { - jpaUnitTestRule.afterEach(context); - } else { - jpaIntegrationTestRule.afterEach(context); - } - } - after(); - if (isWithDatastoreAndCloudSql()) { - restoreTmAfterDualDatabaseTest(context); - } - } - /** - * Hack to make sure AppEngineRule is always wrapped in a {@link JpaIntegrationWithCoverageRule}. - * JUnit 4 only. + * Prepares the fake App Engine environment for use. + * + *

This should only be called from a non-test context, e.g. {@link + * google.registry.server.RegistryTestServerMain}, as it doesn't do any of the setup that requires + * the existence of an {@link ExtensionContext}, which is only available from inside the JUnit + * runner. */ - // Note: Even with @EnableRuleMigrationSupport, JUnit5 runner does not call this method. - // Note 2: Do not migrate members of SqlIntegrationTestSuite to JUnit5 individually. - // TODO(weiminyu): migrate SqlIntegrationTestSuite in one go. - @Override - public Statement apply(Statement base, Description description) { - Statement statement = base; - if (withCloudSql) { - JpaTestRules.Builder builder = new JpaTestRules.Builder(); - if (clock != null) { - builder.withClock(clock); - } - checkState( - !enableJpaEntityCoverageCheck, - "JUnit4 tests must not enable withJpaEntityCoverageCheck."); - statement = builder.buildIntegrationTestRule().apply(base, description); - } - return super.apply(statement, description); - } - - @Override - protected void before() throws IOException { + public void setUp() throws Exception { + tmpDir = Files.createTempDir(); setupLogging(); - temporaryFolder.create(); Set configs = new HashSet<>(); if (withUrlFetch) { configs.add(new LocalURLFetchServiceTestConfig()); } if (withDatastore) { - configs.add(new LocalDatastoreServiceTestConfig() - // We need to set this to allow cross entity group transactions. - .setApplyAllHighRepJobPolicy() - // This causes unit tests to write a file containing any indexes the test required. We - // can use that file below to make sure we have the right indexes in our prod code. - .setNoIndexAutoGen(false)); - // This forces app engine to write the generated indexes to a usable location. - System.setProperty("appengine.generated.dir", temporaryFolder.getRoot().getAbsolutePath()); + configs.add( + new LocalDatastoreServiceTestConfig() + // We need to set this to allow cross entity group transactions. + .setApplyAllHighRepJobPolicy() + // This causes unit tests to write a file containing any indexes the test required. We + // can use that file below to make sure we have the right indexes in our prod code. + .setNoIndexAutoGen(false)); + // This forces App Engine to write the generated indexes to a usable location. + System.setProperty("appengine.generated.dir", tmpDir.getAbsolutePath()); } if (withLocalModules) { - configs.add(new LocalModulesServiceTestConfig() - .addBasicScalingModuleVersion("default", "1", 1) - .addBasicScalingModuleVersion("tools", "1", 1) - .addBasicScalingModuleVersion("backend", "1", 1)); + configs.add( + new LocalModulesServiceTestConfig() + .addBasicScalingModuleVersion("default", "1", 1) + .addBasicScalingModuleVersion("tools", "1", 1) + .addBasicScalingModuleVersion("backend", "1", 1)); } if (withTaskQueue) { - File queueFile = temporaryFolder.newFile("queue.xml"); - Files.asCharSink(queueFile, UTF_8).write(taskQueueXml); - configs.add(new LocalTaskQueueTestConfig() - .setQueueXmlPath(queueFile.getAbsolutePath())); + File queueFile = new File(tmpDir, "queue.xml"); + asCharSink(queueFile, UTF_8).write(taskQueueXml); + configs.add(new LocalTaskQueueTestConfig().setQueueXmlPath(queueFile.getAbsolutePath())); } if (withUserService) { configs.add(new LocalUserServiceTestConfig()); } - helper = new LocalServiceTestHelper(configs.toArray(new LocalServiceTestConfig[]{})); + helper = new LocalServiceTestHelper(configs.toArray(new LocalServiceTestConfig[] {})); if (withUserService) { // Set top-level properties on LocalServiceTestConfig for user login. @@ -491,19 +461,48 @@ public final class AppEngineRule extends ExternalResource if (!withoutCannedData) { loadInitialData(); } - this.ofyTestEntities.forEach(AppEngineRule::register); + this.ofyTestEntities.forEach(AppEngineExtension::register); } } + /** Called after each test method. */ @Override - protected void after() { + public void afterEach(ExtensionContext context) throws Exception { + checkArgumentNotNull(context, "The ExtensionContext must not be null"); + try { + if (withCloudSql) { + if (enableJpaEntityCoverageCheck) { + jpaIntegrationWithCoverageExtension.afterEach(context); + } else if (withJpaUnitTest) { + jpaUnitTestRule.afterEach(context); + } else { + jpaIntegrationTestRule.afterEach(context); + } + } + tearDown(); + } finally { + if (isWithDatastoreAndCloudSql()) { + restoreTmAfterDualDatabaseTest(context); + } + } + } + + /** + * Tears down the fake App Engine environment after use. + * + *

This should only be called from a non-test context, e.g. {@link + * google.registry.server.RegistryTestServerMain}, as it doesn't do any of the setup that requires + * the existence of an {@link ExtensionContext}, which is only available from inside the JUnit + * runner. + */ + public void tearDown() throws Exception { // Resets Objectify. Although it would seem more obvious to do this at the start of a request // instead of at the end, this is more consistent with what ObjectifyFilter does in real code. ObjectifyFilter.complete(); helper.tearDown(); helper = null; // Test that Datastore didn't need any indexes we don't have listed in our index file. - File indexFile = new File(temporaryFolder.getRoot(), "datastore-indexes-auto.xml"); + File indexFile = new File(tmpDir, "datastore-indexes-auto.xml"); try { if (!indexFile.exists()) { return; @@ -520,10 +519,13 @@ public final class AppEngineRule extends ExternalResource } catch (IOException e) { throw new RuntimeException(e); } finally { - temporaryFolder.delete(); + // Delete the temp directory's contents and then the temp directory itself. + try (Stream filesToDelete = walk(tmpDir.toPath())) { + filesToDelete.sorted(reverseOrder()).map(Path::toFile).forEach(File::delete); + } + // Clean up environment setting left behind by AppEngine test instance. + ApiProxy.setEnvironmentForCurrentThread(null); } - // Clean up environment setting left behind by AppEngine test instance. - ApiProxy.setEnvironmentForCurrentThread(null); } /** @@ -584,7 +586,7 @@ public final class AppEngineRule extends ExternalResource for (int i = 0; i < ((JSONArray) object).length(); ++i) { builder.add(((JSONArray) object).getJSONObject(i)); } - } else if (object instanceof JSONObject){ + } else if (object instanceof JSONObject) { // When there's only a single entry it won't be wrapped in an array. builder.add((JSONObject) object); } @@ -594,15 +596,15 @@ public final class AppEngineRule extends ExternalResource /** Turn a JSON representation of an index into xml. */ private static String getIndexXmlString(JSONObject source) throws JSONException { StringBuilder builder = new StringBuilder(); - builder.append(String.format( - "\n", - source.getString("kind"), - source.get("ancestor").toString())); + builder.append( + String.format( + "\n", + source.getString("kind"), source.get("ancestor").toString())); for (JSONObject property : getJsonAsArray(source.get("property"))) { - builder.append(String.format( - " \n", - property.getString("name"), - property.getString("direction"))); + builder.append( + String.format( + " \n", + property.getString("name"), property.getString("direction"))); } return builder.append("").toString(); } diff --git a/core/src/test/java/google/registry/testing/AppEngineRuleTest.java b/core/src/test/java/google/registry/testing/AppEngineExtensionTest.java similarity index 65% rename from core/src/test/java/google/registry/testing/AppEngineRuleTest.java rename to core/src/test/java/google/registry/testing/AppEngineExtensionTest.java index 87f32ddd2..396a03694 100644 --- a/core/src/test/java/google/registry/testing/AppEngineRuleTest.java +++ b/core/src/test/java/google/registry/testing/AppEngineExtensionTest.java @@ -14,6 +14,7 @@ package google.registry.testing; +import static com.google.common.io.Files.asCharSink; import static com.google.common.truth.Truth.assertWithMessage; import static google.registry.util.CollectionUtils.entriesToImmutableMap; import static java.nio.charset.StandardCharsets.UTF_8; @@ -31,19 +32,16 @@ import java.io.File; import java.io.IOException; import java.util.Collection; import java.util.Map; -import org.junit.Before; -import org.junit.Rule; -import org.junit.Test; -import org.junit.rules.TemporaryFolder; -import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.RegisterExtension; /** - * Unit tests for {@link google.registry.testing.AppEngineRule}. Tests focus on Datastoe-related - * assertions made during teardown checks. + * Unit tests for {@link AppEngineExtension}. + * + *

Tests focus on Datastore-related assertions made during teardown checks. */ -@RunWith(JUnit4.class) -public class AppEngineRuleTest { +class AppEngineExtensionTest { // An arbitrary index in google/registry/env/common/default/WEB-INF/datastore-indexes.xml private static final String DECLARED_INDEX = @@ -56,68 +54,72 @@ public class AppEngineRuleTest { " ", " ", ""); + private static final String UNDECLARED_INDEX = DECLARED_INDEX.replace("ContactResource", "NoSuchResource"); - @Rule public TemporaryFolder temporaryFolder = new TemporaryFolder(); + private final AppEngineExtension appEngineRule = + AppEngineExtension.builder().withDatastoreAndCloudSql().build(); - private final AppEngineRule appEngineRule = - AppEngineRule.builder().withDatastoreAndCloudSql().build(); + @RegisterExtension + final ContextCapturingMetaExtension context = new ContextCapturingMetaExtension(); - @Before - public void setupAppEngineRule() throws Exception { - appEngineRule.temporaryFolder = temporaryFolder; - appEngineRule.before(); + @BeforeEach + void beforeEach() throws Exception { + appEngineRule.beforeEach(context.getContext()); } @Test - public void testTeardown_successNoAutoIndexFile() { - appEngineRule.after(); + void testTeardown_successNoAutoIndexFile() throws Exception { + appEngineRule.afterEach(context.getContext()); } @Test - public void testTeardown_successEmptyAutoIndexFile() throws Exception { + void testTeardown_successEmptyAutoIndexFile() throws Exception { writeAutoIndexFile(""); - appEngineRule.after(); + appEngineRule.afterEach(context.getContext()); } @Test - public void testTeardown_successWhiteSpacesOnlyAutoIndexFile() throws Exception { + void testTeardown_successWhiteSpacesOnlyAutoIndexFile() throws Exception { writeAutoIndexFile(" "); - appEngineRule.after(); + appEngineRule.afterEach(context.getContext()); } @Test - public void testTeardown_successOnlyDeclaredIndexesUsed() throws Exception { + void testTeardown_successOnlyDeclaredIndexesUsed() throws Exception { writeAutoIndexFile(DECLARED_INDEX); - appEngineRule.after(); + appEngineRule.afterEach(context.getContext()); } @Test - public void testTeardown_failureUndeclaredIndexesUsed() throws Exception { + void testTeardown_failureUndeclaredIndexesUsed() throws Exception { writeAutoIndexFile(UNDECLARED_INDEX); - assertThrows(AssertionError.class, () -> appEngineRule.after()); + assertThrows(AssertionError.class, () -> appEngineRule.afterEach(context.getContext())); } @Test - public void testRegisterOfyEntities_failure() { - AppEngineRule appEngineRule = - AppEngineRule.builder() + void testRegisterOfyEntities_failure() throws Exception { + AppEngineExtension appEngineRule = + AppEngineExtension.builder() .withDatastoreAndCloudSql() - .withOfyTestEntities(google.registry.testing.TestObject.class, TestObject.class) + .withOfyTestEntities( + google.registry.testing.TestObject.class, AppEngineExtensionTestObject.class) .build(); String expectedErrorMessage = String.format( "Cannot register %s. The Kind %s is already registered with %s", - TestObject.class.getName(), + AppEngineExtensionTestObject.class.getName(), "TestObject", google.registry.testing.TestObject.class.getName()); - assertThrows(expectedErrorMessage, IllegalStateException.class, appEngineRule::before); - appEngineRule.after(); + assertThrows( + expectedErrorMessage, + IllegalStateException.class, + () -> appEngineRule.beforeEach(context.getContext())); } @Test - public void testOfyEntities_uniqueKinds() { + void testOfyEntities_uniqueKinds() { try (ScanResult scanResult = new ClassGraph() .enableAnnotationInfo() @@ -126,7 +128,8 @@ public class AppEngineRuleTest { .scan()) { Multimap> kindToEntityMultiMap = scanResult.getClassesWithAnnotation(Entity.class.getName()).stream() - .filter(clazz -> !clazz.getName().equals(TestObject.class.getName())) + .filter( + clazz -> !clazz.getName().equals(AppEngineExtensionTestObject.class.getName())) .map(clazz -> clazz.loadClass()) .collect( Multimaps.toMultimap( @@ -146,11 +149,9 @@ public class AppEngineRuleTest { } private void writeAutoIndexFile(String content) throws IOException { - com.google.common.io.Files.asCharSink( - new File(temporaryFolder.getRoot(), "datastore-indexes-auto.xml"), UTF_8) - .write(content); + asCharSink(new File(appEngineRule.tmpDir, "datastore-indexes-auto.xml"), UTF_8).write(content); } @Entity - private static final class TestObject {} + private static final class AppEngineExtensionTestObject {} } diff --git a/core/src/test/java/google/registry/testing/ContextCapturingMetaExtension.java b/core/src/test/java/google/registry/testing/ContextCapturingMetaExtension.java new file mode 100644 index 000000000..46d048360 --- /dev/null +++ b/core/src/test/java/google/registry/testing/ContextCapturingMetaExtension.java @@ -0,0 +1,41 @@ +// Copyright 2020 The Nomulus Authors. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package google.registry.testing; + +import org.junit.jupiter.api.extension.BeforeEachCallback; +import org.junit.jupiter.api.extension.ExtensionContext; + +/** + * A JUnit extension that captures the {@link ExtensionContext} when {@link + * BeforeEachCallback#beforeEach(ExtensionContext)} is called. + * + *

This is useful when writing tests of JUnit extensions themselves (very meta), i.e., when you + * want to be able to control the lifecycle of another extension yourself by manually calling the + * before/after callbacks, and need the {@link ExtensionContext} instance to pass to those + * callbacks. + */ +public class ContextCapturingMetaExtension implements BeforeEachCallback { + + private ExtensionContext context; + + @Override + public void beforeEach(ExtensionContext context) throws Exception { + this.context = context; + } + + public ExtensionContext getContext() { + return this.context; + } +} diff --git a/core/src/test/java/google/registry/testing/DatastoreEntityExtension.java b/core/src/test/java/google/registry/testing/DatastoreEntityExtension.java index 6de5092f5..a18ebda1f 100644 --- a/core/src/test/java/google/registry/testing/DatastoreEntityExtension.java +++ b/core/src/test/java/google/registry/testing/DatastoreEntityExtension.java @@ -20,7 +20,6 @@ import java.util.Map; import org.junit.jupiter.api.extension.AfterEachCallback; import org.junit.jupiter.api.extension.BeforeEachCallback; import org.junit.jupiter.api.extension.ExtensionContext; -import org.junit.rules.ExternalResource; import org.testcontainers.shaded.com.google.common.collect.ImmutableMap; /** @@ -34,8 +33,7 @@ import org.testcontainers.shaded.com.google.common.collect.ImmutableMap; * href="https://junit.org/junit5/docs/current/user-guide/#extensions-registration-programmatic"> * JUnit 5 User Guide for details of extension ordering. */ -public class DatastoreEntityExtension extends ExternalResource - implements BeforeEachCallback, AfterEachCallback { +public class DatastoreEntityExtension implements BeforeEachCallback, AfterEachCallback { private static final Environment PLACEHOLDER_ENV = new PlaceholderEnvironment(); @@ -50,16 +48,6 @@ public class DatastoreEntityExtension extends ExternalResource ApiProxy.setEnvironmentForCurrentThread(null); } - @Override - protected void before() { - beforeEach(null); - } - - @Override - protected void after() { - afterEach(null); - } - private static final class PlaceholderEnvironment implements Environment { @Override diff --git a/core/src/test/java/google/registry/testing/DualDatabaseTestInvocationContextProvider.java b/core/src/test/java/google/registry/testing/DualDatabaseTestInvocationContextProvider.java index 7a6b268d8..c7db28812 100644 --- a/core/src/test/java/google/registry/testing/DualDatabaseTestInvocationContextProvider.java +++ b/core/src/test/java/google/registry/testing/DualDatabaseTestInvocationContextProvider.java @@ -38,6 +38,7 @@ import org.junit.jupiter.api.extension.TestTemplateInvocationContextProvider; * Datastore and PostgresQL respectively. */ class DualDatabaseTestInvocationContextProvider implements TestTemplateInvocationContextProvider { + private static final Namespace NAMESPACE = Namespace.create(DualDatabaseTestInvocationContextProvider.class); private static final String INJECTED_TM_SUPPLIER_KEY = "injected_tm_supplier_key"; @@ -84,14 +85,15 @@ class DualDatabaseTestInvocationContextProvider implements TestTemplateInvocatio throws Exception { List appEngineRuleFields = Stream.of(testInstance.getClass().getFields()) - .filter(field -> field.getType().isAssignableFrom(AppEngineRule.class)) + .filter(field -> field.getType().isAssignableFrom(AppEngineExtension.class)) .collect(toImmutableList()); if (appEngineRuleFields.size() != 1) { throw new IllegalStateException( "@DualDatabaseTest test must have only 1 AppEngineRule field"); } appEngineRuleFields.get(0).setAccessible(true); - AppEngineRule appEngineRule = (AppEngineRule) appEngineRuleFields.get(0).get(testInstance); + AppEngineExtension appEngineRule = + (AppEngineExtension) appEngineRuleFields.get(0).get(testInstance); if (!appEngineRule.isWithDatastoreAndCloudSql()) { throw new IllegalStateException( "AppEngineRule in @DualDatabaseTest test must set withDatastoreAndCloudSql()"); diff --git a/core/src/test/java/google/registry/testing/DualDatabaseTestInvocationContextProviderTest.java b/core/src/test/java/google/registry/testing/DualDatabaseTestInvocationContextProviderTest.java index 40cdd8fe0..ef71f8853 100644 --- a/core/src/test/java/google/registry/testing/DualDatabaseTestInvocationContextProviderTest.java +++ b/core/src/test/java/google/registry/testing/DualDatabaseTestInvocationContextProviderTest.java @@ -34,7 +34,8 @@ public class DualDatabaseTestInvocationContextProviderTest { private static int postgresqlTestCounter = 0; @RegisterExtension - public final AppEngineRule appEngine = AppEngineRule.builder().withDatastoreAndCloudSql().build(); + public final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().build(); @TestTemplate void testToUseTransactionManager() { diff --git a/core/src/test/java/google/registry/testing/InjectRule.java b/core/src/test/java/google/registry/testing/InjectRule.java index 71c4ba2b0..3fffb31d7 100644 --- a/core/src/test/java/google/registry/testing/InjectRule.java +++ b/core/src/test/java/google/registry/testing/InjectRule.java @@ -24,10 +24,9 @@ import java.util.Set; import javax.annotation.Nullable; import org.junit.jupiter.api.extension.AfterEachCallback; import org.junit.jupiter.api.extension.ExtensionContext; -import org.junit.rules.ExternalResource; /** - * JUnit Rule for overriding {@code private static} fields during a test. + * JUnit extension for overriding {@code private static} fields during a test. * *

This rule uses reflection to change the value of a field while your test is running and then * restore it to its original value after it's done (even if the test fails). The injection will @@ -88,7 +87,7 @@ import org.junit.rules.ExternalResource; * @see google.registry.util.NonFinalForTesting * @see org.junit.rules.ExternalResource */ -public class InjectRule extends ExternalResource implements AfterEachCallback { +public class InjectRule implements AfterEachCallback { private static class Change { private final Field field; @@ -144,12 +143,7 @@ public class InjectRule extends ExternalResource implements AfterEachCallback { } @Override - public void afterEach(ExtensionContext context) throws Exception { - after(); - } - - @Override - protected void after() { + public void afterEach(ExtensionContext context) { RuntimeException thrown = null; for (Change change : changes) { try { diff --git a/core/src/test/java/google/registry/testing/SqlHelper.java b/core/src/test/java/google/registry/testing/SqlHelper.java index 52136e76e..59bd10d3b 100644 --- a/core/src/test/java/google/registry/testing/SqlHelper.java +++ b/core/src/test/java/google/registry/testing/SqlHelper.java @@ -16,7 +16,7 @@ package google.registry.testing; import static com.google.common.truth.Truth.assertThat; import static google.registry.persistence.transaction.TransactionManagerFactory.jpaTm; -import static google.registry.testing.AppEngineRule.makeRegistrar1; +import static google.registry.testing.AppEngineExtension.makeRegistrar1; import static org.junit.Assert.assertThrows; import com.google.common.base.Throwables; diff --git a/core/src/test/java/google/registry/testing/UserInfo.java b/core/src/test/java/google/registry/testing/UserInfo.java index f13d55b60..7000a55eb 100644 --- a/core/src/test/java/google/registry/testing/UserInfo.java +++ b/core/src/test/java/google/registry/testing/UserInfo.java @@ -16,7 +16,9 @@ package google.registry.testing; import com.google.auto.value.AutoValue; -/** Container for values passed to {@link AppEngineRule} to set the logged in user for tests. */ +/** + * Container for values passed to {@link AppEngineExtension} to set the logged in user for tests. + */ @AutoValue public abstract class UserInfo { diff --git a/core/src/test/java/google/registry/testing/mapreduce/MapreduceTestCase.java b/core/src/test/java/google/registry/testing/mapreduce/MapreduceTestCase.java index 639f7247a..bf2d97784 100644 --- a/core/src/test/java/google/registry/testing/mapreduce/MapreduceTestCase.java +++ b/core/src/test/java/google/registry/testing/mapreduce/MapreduceTestCase.java @@ -34,7 +34,7 @@ import com.google.common.base.CharMatcher; import com.google.common.base.Splitter; import com.google.common.flogger.FluentLogger; import google.registry.mapreduce.MapreduceRunner; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.FakeClock; import google.registry.util.AppEngineServiceUtils; import google.registry.util.AppEngineServiceUtilsImpl; @@ -83,8 +83,12 @@ public abstract class MapreduceTestCase { private LocalTaskQueue taskQueue; @RegisterExtension - public final AppEngineRule appEngine = - AppEngineRule.builder().withDatastoreAndCloudSql().withLocalModules().withTaskQueue().build(); + public final AppEngineExtension appEngine = + AppEngineExtension.builder() + .withDatastoreAndCloudSql() + .withLocalModules() + .withTaskQueue() + .build(); private AppEngineServiceUtils appEngineServiceUtils; diff --git a/core/src/test/java/google/registry/tldconfig/idn/IdnLabelValidatorTest.java b/core/src/test/java/google/registry/tldconfig/idn/IdnLabelValidatorTest.java index 2ec2610cc..571716286 100644 --- a/core/src/test/java/google/registry/tldconfig/idn/IdnLabelValidatorTest.java +++ b/core/src/test/java/google/registry/tldconfig/idn/IdnLabelValidatorTest.java @@ -18,13 +18,10 @@ import static com.google.common.truth.Truth8.assertThat; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; +import org.junit.jupiter.api.Test; /** Unit tests for {@link IdnLabelValidator}. */ -@RunWith(JUnit4.class) -public class IdnLabelValidatorTest { +class IdnLabelValidatorTest { private IdnLabelValidator idnLabelValidator = IdnLabelValidator.createDefaultIdnLabelValidator(); @@ -86,22 +83,22 @@ public class IdnLabelValidatorTest { } @Test - public void testMinna() { + void testMinna() { doJapaneseLanguageTests("xn--q9jyb4c"); } @Test - public void testFoo() { + void testFoo() { doJapaneseLanguageTests("foo"); } @Test - public void testSoy() { + void testSoy() { doJapaneseLanguageTests("soy"); } @Test - public void testOverridenTables() { + void testOverridenTables() { // Set .tld to have only the extended latin table and not japanese. idnLabelValidator = new IdnLabelValidator( diff --git a/core/src/test/java/google/registry/tldconfig/idn/IdnTableTest.java b/core/src/test/java/google/registry/tldconfig/idn/IdnTableTest.java index 51109d1f5..3fa902fb9 100644 --- a/core/src/test/java/google/registry/tldconfig/idn/IdnTableTest.java +++ b/core/src/test/java/google/registry/tldconfig/idn/IdnTableTest.java @@ -20,15 +20,13 @@ import static org.junit.Assert.assertThrows; import com.google.common.collect.ImmutableList; import java.net.URI; import java.util.Optional; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; +import org.junit.jupiter.api.Test; /** Unit tests for {@link IdnTable}. */ -@RunWith(JUnit4.class) -public class IdnTableTest { +class IdnTableTest { + @Test - public void testDigits() { + void testDigits() { ImmutableList of = ImmutableList.of( "# URL: https://love.example/lolcatattack.txt", "# Policy: https://love.example/policy.html", @@ -49,7 +47,7 @@ public class IdnTableTest { } @Test - public void testIgnoreCommentAndEmptyLines() { + void testIgnoreCommentAndEmptyLines() { IdnTable idnTable = IdnTable.createFrom("lolcatattack", ImmutableList.of( "# URL: https://love.example/lolcatattack.txt", "# Policy: https://love.example/policy.html", @@ -70,7 +68,7 @@ public class IdnTableTest { } @Test - public void testSurrogates() { + void testSurrogates() { IdnTable idnTable = IdnTable.createFrom( "lolcatattack", @@ -92,7 +90,7 @@ public class IdnTableTest { } @Test - public void testSpecialComments_getParsed() { + void testSpecialComments_getParsed() { ImmutableList of = ImmutableList.of( "# URL: https://love.example/lolcatattack.txt", @@ -104,7 +102,7 @@ public class IdnTableTest { } @Test - public void testMissingUrl_throwsNpe() { + void testMissingUrl_throwsNpe() { ImmutableList of = ImmutableList.of("# Policy: https://love.example/policy.html"); NullPointerException thrown = assertThrows( @@ -113,7 +111,7 @@ public class IdnTableTest { } @Test - public void testMissingPolicy_throwsNpe() { + void testMissingPolicy_throwsNpe() { ImmutableList of = ImmutableList.of("# URL: https://love.example/sloth.txt"); NullPointerException thrown = assertThrows( diff --git a/core/src/test/java/google/registry/tmch/LordnTaskUtilsTest.java b/core/src/test/java/google/registry/tmch/LordnTaskUtilsTest.java index e7e321d1e..cdd8c4302 100644 --- a/core/src/test/java/google/registry/tmch/LordnTaskUtilsTest.java +++ b/core/src/test/java/google/registry/tmch/LordnTaskUtilsTest.java @@ -28,7 +28,7 @@ import google.registry.model.domain.DomainBase; import google.registry.model.domain.launch.LaunchNotice; import google.registry.model.ofy.Ofy; import google.registry.model.registrar.Registrar.Type; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.FakeClock; import google.registry.testing.InjectRule; import google.registry.testing.TaskQueueHelper.TaskMatcher; @@ -44,8 +44,8 @@ public class LordnTaskUtilsTest { private static final Clock clock = new FakeClock(DateTime.parse("2010-05-01T10:11:12Z")); @RegisterExtension - public final AppEngineRule appEngine = - AppEngineRule.builder().withDatastoreAndCloudSql().withTaskQueue().build(); + public final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().withTaskQueue().build(); @RegisterExtension public final InjectRule inject = new InjectRule(); diff --git a/core/src/test/java/google/registry/tmch/NordnUploadActionTest.java b/core/src/test/java/google/registry/tmch/NordnUploadActionTest.java index f42acd0d0..003272b6a 100644 --- a/core/src/test/java/google/registry/tmch/NordnUploadActionTest.java +++ b/core/src/test/java/google/registry/tmch/NordnUploadActionTest.java @@ -54,7 +54,7 @@ import google.registry.model.domain.DomainBase; import google.registry.model.domain.launch.LaunchNotice; import google.registry.model.ofy.Ofy; import google.registry.model.registry.Registry; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.FakeClock; import google.registry.testing.FakeSleeper; import google.registry.testing.InjectRule; @@ -97,8 +97,8 @@ class NordnUploadActionTest { private static final String LOCATION_URL = "http://trololol"; @RegisterExtension - public final AppEngineRule appEngine = - AppEngineRule.builder().withDatastoreAndCloudSql().withTaskQueue().build(); + public final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().withTaskQueue().build(); @RegisterExtension public final InjectRule inject = new InjectRule(); diff --git a/core/src/test/java/google/registry/tmch/NordnVerifyActionTest.java b/core/src/test/java/google/registry/tmch/NordnVerifyActionTest.java index 80b792b74..27f55d19a 100644 --- a/core/src/test/java/google/registry/tmch/NordnVerifyActionTest.java +++ b/core/src/test/java/google/registry/tmch/NordnVerifyActionTest.java @@ -34,7 +34,7 @@ import com.google.appengine.api.urlfetch.HTTPResponse; import com.google.appengine.api.urlfetch.URLFetchService; import google.registry.model.registry.Registry; import google.registry.request.HttpException.ConflictException; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.FakeResponse; import java.net.URL; import java.util.Optional; @@ -78,8 +78,8 @@ class NordnVerifyActionTest { + "bogpog,4611\n"; @RegisterExtension - public final AppEngineRule appEngine = - AppEngineRule.builder().withDatastoreAndCloudSql().withTaskQueue().build(); + public final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().withTaskQueue().build(); @Mock private URLFetchService fetchService; @Mock private HTTPResponse httpResponse; diff --git a/core/src/test/java/google/registry/tmch/SmdrlCsvParserTest.java b/core/src/test/java/google/registry/tmch/SmdrlCsvParserTest.java index 08c5ae5ae..b8a9090f0 100644 --- a/core/src/test/java/google/registry/tmch/SmdrlCsvParserTest.java +++ b/core/src/test/java/google/registry/tmch/SmdrlCsvParserTest.java @@ -23,7 +23,7 @@ import static org.junit.Assert.assertThrows; import com.google.common.collect.ImmutableList; import com.google.common.io.CharSource; import google.registry.model.smd.SignedMarkRevocationList; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.FakeClock; import org.joda.time.DateTime; import org.junit.jupiter.api.Test; @@ -32,7 +32,8 @@ import org.junit.jupiter.api.extension.RegisterExtension; /** Unit tests for {@link SmdrlCsvParser}. */ class SmdrlCsvParserTest { - @RegisterExtension public final AppEngineRule appEngine = AppEngineRule.builder().build(); + @RegisterExtension + public final AppEngineExtension appEngine = AppEngineExtension.builder().build(); private final FakeClock clock = new FakeClock(); diff --git a/core/src/test/java/google/registry/tmch/TmchActionTestCase.java b/core/src/test/java/google/registry/tmch/TmchActionTestCase.java index d94eaabda..ce4688a6e 100644 --- a/core/src/test/java/google/registry/tmch/TmchActionTestCase.java +++ b/core/src/test/java/google/registry/tmch/TmchActionTestCase.java @@ -21,7 +21,7 @@ import static org.mockito.Mockito.when; import com.google.appengine.api.urlfetch.HTTPRequest; import com.google.appengine.api.urlfetch.HTTPResponse; import com.google.appengine.api.urlfetch.URLFetchService; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.BouncyCastleProviderExtension; import google.registry.testing.FakeClock; import org.junit.jupiter.api.BeforeEach; @@ -40,7 +40,8 @@ abstract class TmchActionTestCase { static final String MARKSDB_URL = "http://127.0.0.1/love"; @RegisterExtension - public final AppEngineRule appEngine = AppEngineRule.builder().withDatastoreAndCloudSql().build(); + public final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().build(); @RegisterExtension public final BouncyCastleProviderExtension bouncy = new BouncyCastleProviderExtension(); diff --git a/core/src/test/java/google/registry/tmch/TmchCertificateAuthorityTest.java b/core/src/test/java/google/registry/tmch/TmchCertificateAuthorityTest.java index c02e80765..462753931 100644 --- a/core/src/test/java/google/registry/tmch/TmchCertificateAuthorityTest.java +++ b/core/src/test/java/google/registry/tmch/TmchCertificateAuthorityTest.java @@ -23,7 +23,7 @@ import static google.registry.util.X509Utils.loadCertificate; import static org.junit.Assert.assertThrows; import google.registry.model.tmch.TmchCrl; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.FakeClock; import java.security.SignatureException; import java.security.cert.CertificateExpiredException; @@ -40,7 +40,8 @@ class TmchCertificateAuthorityTest { private static final String REVOKED_TEST_CERTIFICATE = loadFile("icann-tmch-test-revoked.crt"); @RegisterExtension - public final AppEngineRule appEngine = AppEngineRule.builder().withDatastoreAndCloudSql().build(); + public final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().build(); private FakeClock clock = new FakeClock(DateTime.parse("2014-01-01T00:00:00Z")); diff --git a/core/src/test/java/google/registry/tmch/TmchTestDataExpirationTest.java b/core/src/test/java/google/registry/tmch/TmchTestDataExpirationTest.java index c16d85843..3a7b11052 100644 --- a/core/src/test/java/google/registry/tmch/TmchTestDataExpirationTest.java +++ b/core/src/test/java/google/registry/tmch/TmchTestDataExpirationTest.java @@ -22,7 +22,7 @@ import google.registry.config.RegistryConfig.ConfigModule.TmchCaMode; import google.registry.flows.EppException; import google.registry.flows.domain.DomainFlowTmchUtils; import google.registry.model.smd.EncodedSignedMark; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.util.ResourceUtils; import google.registry.util.SystemClock; import java.nio.file.Path; @@ -34,7 +34,8 @@ import org.junit.jupiter.api.extension.RegisterExtension; class TmchTestDataExpirationTest { @RegisterExtension - public final AppEngineRule appEngine = AppEngineRule.builder().withDatastoreAndCloudSql().build(); + public final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().build(); private static final FluentLogger logger = FluentLogger.forEnclosingClass(); diff --git a/core/src/test/java/google/registry/tmch/TmchXmlSignatureTest.java b/core/src/test/java/google/registry/tmch/TmchXmlSignatureTest.java index 7befe34f4..b3ce45db1 100644 --- a/core/src/test/java/google/registry/tmch/TmchXmlSignatureTest.java +++ b/core/src/test/java/google/registry/tmch/TmchXmlSignatureTest.java @@ -19,7 +19,7 @@ import static google.registry.tmch.TmchTestData.loadSmd; import static org.junit.Assert.assertThrows; import google.registry.config.RegistryConfig.ConfigModule.TmchCaMode; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.FakeClock; import google.registry.testing.InjectRule; import google.registry.tmch.TmchXmlSignature.CertificateSignatureException; @@ -40,7 +40,8 @@ import org.junit.jupiter.api.extension.RegisterExtension; class TmchXmlSignatureTest { @RegisterExtension - public final AppEngineRule appEngine = AppEngineRule.builder().withDatastoreAndCloudSql().build(); + public final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().build(); @RegisterExtension public final InjectRule inject = new InjectRule(); diff --git a/core/src/test/java/google/registry/tools/CommandTestCase.java b/core/src/test/java/google/registry/tools/CommandTestCase.java index d6d873b86..88ae2deb8 100644 --- a/core/src/test/java/google/registry/tools/CommandTestCase.java +++ b/core/src/test/java/google/registry/tools/CommandTestCase.java @@ -29,7 +29,7 @@ import com.google.common.collect.ObjectArrays; import com.google.common.io.Files; import com.google.common.reflect.TypeToken; import google.registry.model.poll.PollMessage; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.CertificateSamples; import google.registry.testing.FakeClock; import google.registry.testing.SystemPropertyExtension; @@ -69,8 +69,8 @@ public abstract class CommandTestCase { public final FakeClock fakeClock = new FakeClock(); @RegisterExtension - public final AppEngineRule appEngine = - AppEngineRule.builder() + public final AppEngineExtension appEngine = + AppEngineExtension.builder() .withDatastoreAndCloudSql() .withClock(fakeClock) .withTaskQueue() diff --git a/core/src/test/java/google/registry/tools/DomainLockUtilsTest.java b/core/src/test/java/google/registry/tools/DomainLockUtilsTest.java index 043fe96fa..59d128788 100644 --- a/core/src/test/java/google/registry/tools/DomainLockUtilsTest.java +++ b/core/src/test/java/google/registry/tools/DomainLockUtilsTest.java @@ -45,7 +45,7 @@ import google.registry.model.host.HostResource; import google.registry.model.registry.Registry; import google.registry.model.reporting.HistoryEntry; import google.registry.schema.domain.RegistryLock; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.DatastoreHelper; import google.registry.testing.DeterministicStringGenerator; import google.registry.testing.FakeClock; @@ -73,8 +73,8 @@ public final class DomainLockUtilsTest { private DomainLockUtils domainLockUtils; @RegisterExtension - public final AppEngineRule appEngineRule = - AppEngineRule.builder() + public final AppEngineExtension appEngineRule = + AppEngineExtension.builder() .withDatastoreAndCloudSql() .withClock(clock) .withTaskQueue() @@ -281,8 +281,8 @@ public final class DomainLockUtilsTest { // in the case of inconsistencies / errors, admins should have the ability to override // whatever statuses exist on the domain persistResource(domain.asBuilder().setStatusValues(REGISTRY_LOCK_STATUSES).build()); - RegistryLock resultLock = domainLockUtils - .administrativelyApplyLock(DOMAIN_NAME, "TheRegistrar", POC_ID, true); + RegistryLock resultLock = + domainLockUtils.administrativelyApplyLock(DOMAIN_NAME, "TheRegistrar", POC_ID, true); verifyProperlyLockedDomain(true); assertThat(resultLock.getLockCompletionTimestamp()).isEqualTo(Optional.of(clock.nowUtc())); } @@ -291,18 +291,19 @@ public final class DomainLockUtilsTest { void testSuccess_adminCanLockUnlockedDomain_withSavedLock() { // in the case of inconsistencies / errors, admins should have the ability to override // what the RegistryLock table says - SqlHelper.saveRegistryLock(new RegistryLock.Builder() - .setLockCompletionTimestamp(clock.nowUtc()) - .setDomainName(DOMAIN_NAME) - .setVerificationCode("hi") - .setRegistrarId("TheRegistrar") - .setRepoId(domain.getRepoId()) - .isSuperuser(false) - .setRegistrarPocId(POC_ID) - .build()); + SqlHelper.saveRegistryLock( + new RegistryLock.Builder() + .setLockCompletionTimestamp(clock.nowUtc()) + .setDomainName(DOMAIN_NAME) + .setVerificationCode("hi") + .setRegistrarId("TheRegistrar") + .setRepoId(domain.getRepoId()) + .isSuperuser(false) + .setRegistrarPocId(POC_ID) + .build()); clock.advanceOneMilli(); - RegistryLock resultLock = domainLockUtils - .administrativelyApplyLock(DOMAIN_NAME, "TheRegistrar", POC_ID, true); + RegistryLock resultLock = + domainLockUtils.administrativelyApplyLock(DOMAIN_NAME, "TheRegistrar", POC_ID, true); verifyProperlyLockedDomain(true); assertThat(resultLock.getLockCompletionTimestamp()).isEqualTo(Optional.of(clock.nowUtc())); } diff --git a/core/src/test/java/google/registry/tools/EntityWrapperTest.java b/core/src/test/java/google/registry/tools/EntityWrapperTest.java index bf2b76979..85494c6ad 100644 --- a/core/src/test/java/google/registry/tools/EntityWrapperTest.java +++ b/core/src/test/java/google/registry/tools/EntityWrapperTest.java @@ -21,7 +21,7 @@ import com.google.appengine.api.datastore.EntityTranslator; import com.google.common.collect.ImmutableList; import com.google.storage.onestore.v3.OnestoreEntity.EntityProto; import com.google.storage.onestore.v3.OnestoreEntity.Property; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; @@ -32,7 +32,8 @@ public final class EntityWrapperTest { private static final int ARBITRARY_KEY_ID = 1001; @RegisterExtension - public final AppEngineRule appEngine = AppEngineRule.builder().withDatastoreAndCloudSql().build(); + public final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().build(); @Test void testEquals() { diff --git a/core/src/test/java/google/registry/tools/EppLifecycleToolsTest.java b/core/src/test/java/google/registry/tools/EppLifecycleToolsTest.java index 4a247667e..3fa7b0cb4 100644 --- a/core/src/test/java/google/registry/tools/EppLifecycleToolsTest.java +++ b/core/src/test/java/google/registry/tools/EppLifecycleToolsTest.java @@ -27,7 +27,7 @@ import google.registry.model.billing.BillingEvent; import google.registry.model.billing.BillingEvent.Reason; import google.registry.model.domain.DomainBase; import google.registry.model.reporting.HistoryEntry.Type; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.util.Clock; import java.util.List; import org.joda.money.Money; @@ -40,8 +40,8 @@ import org.junit.jupiter.api.extension.RegisterExtension; class EppLifecycleToolsTest extends EppTestCase { @RegisterExtension - final AppEngineRule appEngine = - AppEngineRule.builder().withDatastoreAndCloudSql().withTaskQueue().build(); + final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().withTaskQueue().build(); @BeforeEach void beforeEach() { diff --git a/core/src/test/java/google/registry/tools/LevelDbFileBuilderTest.java b/core/src/test/java/google/registry/tools/LevelDbFileBuilderTest.java index 9daf61e1c..c3abc4384 100644 --- a/core/src/test/java/google/registry/tools/LevelDbFileBuilderTest.java +++ b/core/src/test/java/google/registry/tools/LevelDbFileBuilderTest.java @@ -23,7 +23,7 @@ import com.google.appengine.api.datastore.EntityTranslator; import com.google.common.collect.ImmutableList; import com.google.storage.onestore.v3.OnestoreEntity.EntityProto; import google.registry.model.contact.ContactResource; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.DatastoreHelper; import google.registry.tools.EntityWrapper.Property; import java.io.File; @@ -41,7 +41,8 @@ public class LevelDbFileBuilderTest { @TempDir Path tmpDir; @RegisterExtension - public final AppEngineRule appEngine = AppEngineRule.builder().withDatastoreAndCloudSql().build(); + public final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().build(); @Test void testSingleRecordWrites() throws IOException { diff --git a/core/src/test/java/google/registry/tools/MutatingCommandTest.java b/core/src/test/java/google/registry/tools/MutatingCommandTest.java index 570ab36e3..c9ec15c0c 100644 --- a/core/src/test/java/google/registry/tools/MutatingCommandTest.java +++ b/core/src/test/java/google/registry/tools/MutatingCommandTest.java @@ -26,7 +26,7 @@ import static org.junit.Assert.assertThrows; import google.registry.model.host.HostResource; import google.registry.model.registrar.Registrar; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import java.util.Arrays; import org.joda.time.DateTime; import org.junit.jupiter.api.BeforeEach; @@ -37,7 +37,8 @@ import org.junit.jupiter.api.extension.RegisterExtension; public class MutatingCommandTest { @RegisterExtension - public final AppEngineRule appEngine = AppEngineRule.builder().withDatastoreAndCloudSql().build(); + public final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().build(); private Registrar registrar1; private Registrar registrar2; diff --git a/core/src/test/java/google/registry/tools/RecordAccumulatorTest.java b/core/src/test/java/google/registry/tools/RecordAccumulatorTest.java index 3fb685123..31388d253 100644 --- a/core/src/test/java/google/registry/tools/RecordAccumulatorTest.java +++ b/core/src/test/java/google/registry/tools/RecordAccumulatorTest.java @@ -17,7 +17,7 @@ package google.registry.tools; import static com.google.common.truth.Truth.assertThat; import com.google.common.collect.ImmutableSet; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.tools.EntityWrapper.Property; import java.io.File; import java.io.IOException; @@ -33,7 +33,8 @@ public class RecordAccumulatorTest { @TempDir public File tmpDir; @RegisterExtension - public final AppEngineRule appEngine = AppEngineRule.builder().withDatastoreAndCloudSql().build(); + public final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().build(); @Test void testReadDirectory() throws IOException { diff --git a/core/src/test/java/google/registry/tools/RegistryToolTest.java b/core/src/test/java/google/registry/tools/RegistryToolTest.java index aa6ac623f..ef34848d5 100644 --- a/core/src/test/java/google/registry/tools/RegistryToolTest.java +++ b/core/src/test/java/google/registry/tools/RegistryToolTest.java @@ -18,7 +18,7 @@ import static com.google.common.truth.Truth.assertThat; import static java.nio.charset.StandardCharsets.UTF_8; import static org.junit.Assert.assertThrows; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import java.io.ByteArrayOutputStream; import java.io.PrintStream; import java.util.concurrent.locks.ReentrantLock; @@ -31,7 +31,8 @@ import org.junit.jupiter.api.extension.RegisterExtension; public class RegistryToolTest { @RegisterExtension - public final AppEngineRule appEngine = AppEngineRule.builder().withDatastoreAndCloudSql().build(); + public final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().build(); // Lock for stdout/stderr. Note that this is static: since we're dealing with globals, we need // to lock for the entire JVM. diff --git a/core/src/test/java/google/registry/tools/UpdateRegistrarCommandTest.java b/core/src/test/java/google/registry/tools/UpdateRegistrarCommandTest.java index 80c2f59b9..65ab5cb17 100644 --- a/core/src/test/java/google/registry/tools/UpdateRegistrarCommandTest.java +++ b/core/src/test/java/google/registry/tools/UpdateRegistrarCommandTest.java @@ -34,7 +34,7 @@ import google.registry.model.registrar.Registrar; import google.registry.model.registrar.Registrar.State; import google.registry.model.registrar.Registrar.Type; import google.registry.persistence.VKey; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.util.CidrAddressBlock; import java.util.Optional; import org.joda.money.CurrencyUnit; @@ -867,7 +867,7 @@ class UpdateRegistrarCommandTest extends CommandTestCase private void persistWhoisAbuseContact() { persistResource( - AppEngineRule.makeRegistrarContact1() + AppEngineExtension.makeRegistrarContact1() .asBuilder() .setVisibleInDomainWhoisAsAbuse(true) .build()); diff --git a/core/src/test/java/google/registry/tools/server/CreateGroupsActionTest.java b/core/src/test/java/google/registry/tools/server/CreateGroupsActionTest.java index eed99634a..d5e130957 100644 --- a/core/src/test/java/google/registry/tools/server/CreateGroupsActionTest.java +++ b/core/src/test/java/google/registry/tools/server/CreateGroupsActionTest.java @@ -27,7 +27,7 @@ import google.registry.groups.GroupsConnection.Role; import google.registry.request.HttpException.BadRequestException; import google.registry.request.HttpException.InternalServerErrorException; import google.registry.request.Response; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.InjectRule; import java.util.Optional; import org.junit.jupiter.api.Test; @@ -37,7 +37,8 @@ import org.junit.jupiter.api.extension.RegisterExtension; class CreateGroupsActionTest { @RegisterExtension - final AppEngineRule appEngine = AppEngineRule.builder().withDatastoreAndCloudSql().build(); + final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().build(); @RegisterExtension final InjectRule inject = new InjectRule(); diff --git a/core/src/test/java/google/registry/tools/server/CreatePremiumListActionTest.java b/core/src/test/java/google/registry/tools/server/CreatePremiumListActionTest.java index a12612911..9c2c19e82 100644 --- a/core/src/test/java/google/registry/tools/server/CreatePremiumListActionTest.java +++ b/core/src/test/java/google/registry/tools/server/CreatePremiumListActionTest.java @@ -24,7 +24,7 @@ import static javax.servlet.http.HttpServletResponse.SC_OK; import google.registry.model.registry.Registry; import google.registry.model.registry.label.PremiumList; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.FakeJsonResponse; import org.joda.money.Money; import org.junit.jupiter.api.BeforeEach; @@ -37,7 +37,8 @@ import org.junit.jupiter.api.extension.RegisterExtension; public class CreatePremiumListActionTest { @RegisterExtension - public final AppEngineRule appEngine = AppEngineRule.builder().withDatastoreAndCloudSql().build(); + public final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().build(); private CreatePremiumListAction action; private FakeJsonResponse response; diff --git a/core/src/test/java/google/registry/tools/server/DeleteEntityActionTest.java b/core/src/test/java/google/registry/tools/server/DeleteEntityActionTest.java index 3475318cc..8a4eaed6e 100644 --- a/core/src/test/java/google/registry/tools/server/DeleteEntityActionTest.java +++ b/core/src/test/java/google/registry/tools/server/DeleteEntityActionTest.java @@ -24,7 +24,7 @@ import com.google.appengine.api.datastore.Entity; import com.google.appengine.api.datastore.KeyFactory; import google.registry.model.registry.label.ReservedList; import google.registry.request.HttpException.BadRequestException; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.FakeResponse; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; @@ -33,7 +33,8 @@ import org.junit.jupiter.api.extension.RegisterExtension; class DeleteEntityActionTest { @RegisterExtension - final AppEngineRule appEngine = AppEngineRule.builder().withDatastoreAndCloudSql().build(); + final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().build(); private FakeResponse response = new FakeResponse(); diff --git a/core/src/test/java/google/registry/tools/server/ListActionTestCase.java b/core/src/test/java/google/registry/tools/server/ListActionTestCase.java index db61df62a..759b4aadc 100644 --- a/core/src/test/java/google/registry/tools/server/ListActionTestCase.java +++ b/core/src/test/java/google/registry/tools/server/ListActionTestCase.java @@ -17,7 +17,7 @@ package google.registry.tools.server; import static com.google.common.truth.Truth.assertThat; import static javax.servlet.http.HttpServletResponse.SC_OK; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.FakeJsonResponse; import java.util.List; import java.util.Optional; @@ -30,7 +30,8 @@ import org.junit.jupiter.api.extension.RegisterExtension; public class ListActionTestCase { @RegisterExtension - public final AppEngineRule appEngine = AppEngineRule.builder().withDatastoreAndCloudSql().build(); + public final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().build(); private FakeJsonResponse response; diff --git a/core/src/test/java/google/registry/tools/server/UpdatePremiumListActionTest.java b/core/src/test/java/google/registry/tools/server/UpdatePremiumListActionTest.java index c357c7a89..94ca8f0f3 100644 --- a/core/src/test/java/google/registry/tools/server/UpdatePremiumListActionTest.java +++ b/core/src/test/java/google/registry/tools/server/UpdatePremiumListActionTest.java @@ -27,7 +27,7 @@ import static javax.servlet.http.HttpServletResponse.SC_OK; import google.registry.model.registry.Registry; import google.registry.model.registry.label.PremiumList; import google.registry.schema.tld.PremiumListDao; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.DatastoreHelper; import google.registry.testing.FakeJsonResponse; import java.math.BigDecimal; @@ -40,7 +40,8 @@ import org.junit.jupiter.api.extension.RegisterExtension; class UpdatePremiumListActionTest { @RegisterExtension - final AppEngineRule appEngine = AppEngineRule.builder().withDatastoreAndCloudSql().build(); + final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().build(); private UpdatePremiumListAction action; private FakeJsonResponse response; diff --git a/core/src/test/java/google/registry/tools/server/VerifyOteActionTest.java b/core/src/test/java/google/registry/tools/server/VerifyOteActionTest.java index 7542432c7..c49995601 100644 --- a/core/src/test/java/google/registry/tools/server/VerifyOteActionTest.java +++ b/core/src/test/java/google/registry/tools/server/VerifyOteActionTest.java @@ -19,7 +19,7 @@ import static com.google.common.truth.Truth.assertThat; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import google.registry.model.OteStatsTestHelper; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import java.util.Map; import java.util.regex.Pattern; import org.junit.jupiter.api.Test; @@ -29,7 +29,8 @@ import org.junit.jupiter.api.extension.RegisterExtension; class VerifyOteActionTest { @RegisterExtension - final AppEngineRule appEngine = AppEngineRule.builder().withDatastoreAndCloudSql().build(); + final AppEngineExtension appEngine = + AppEngineExtension.builder().withDatastoreAndCloudSql().build(); private final VerifyOteAction action = new VerifyOteAction(); diff --git a/core/src/test/java/google/registry/ui/forms/FormFieldExceptionTest.java b/core/src/test/java/google/registry/ui/forms/FormFieldExceptionTest.java index 755f91ffb..fc389133c 100644 --- a/core/src/test/java/google/registry/ui/forms/FormFieldExceptionTest.java +++ b/core/src/test/java/google/registry/ui/forms/FormFieldExceptionTest.java @@ -18,15 +18,13 @@ import static com.google.common.truth.Truth.assertThat; import static org.junit.Assert.assertThrows; import com.google.common.testing.NullPointerTester; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; +import org.junit.jupiter.api.Test; /** Unit tests for {@link FormFieldException}. */ -@RunWith(JUnit4.class) -public class FormFieldExceptionTest { +class FormFieldExceptionTest { + @Test - public void testGetFieldName_multiplePropagations_joinsUsingJsonNotation() { + void testGetFieldName_multiplePropagations_joinsUsingJsonNotation() { assertThat( new FormFieldException("This field is required.") .propagate("attack") @@ -38,7 +36,7 @@ public class FormFieldExceptionTest { } @Test - public void testGetFieldName_singlePropagations_noFancyJoining() { + void testGetFieldName_singlePropagations_noFancyJoining() { assertThat( new FormFieldException("This field is required.") .propagate("cat") @@ -47,14 +45,14 @@ public class FormFieldExceptionTest { } @Test - public void testGetFieldName_noPropagations_throwsIse() { + void testGetFieldName_noPropagations_throwsIse() { assertThrows( IllegalStateException.class, () -> new FormFieldException("This field is required.").getFieldName()); } @Test - public void testNullness() { + void testNullness() { NullPointerTester tester = new NullPointerTester() .setDefault(FormField.class, FormField.named("love").build()); tester.testAllPublicConstructors(FormFieldException.class); diff --git a/core/src/test/java/google/registry/ui/forms/FormFieldTest.java b/core/src/test/java/google/registry/ui/forms/FormFieldTest.java index 071afde54..0e504156a 100644 --- a/core/src/test/java/google/registry/ui/forms/FormFieldTest.java +++ b/core/src/test/java/google/registry/ui/forms/FormFieldTest.java @@ -34,45 +34,45 @@ import com.google.re2j.Pattern; import java.util.List; import java.util.Set; import java.util.function.Function; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; +import org.junit.jupiter.api.Test; /** Unit tests for {@link FormField}. */ -@RunWith(JUnit4.class) -public class FormFieldTest { +class FormFieldTest { - private enum ICanHazEnum { LOL, CAT } + private enum ICanHazEnum { + LOL, + CAT + } @Test - public void testConvert_nullString_notPresent() { + void testConvert_nullString_notPresent() { assertThat(FormField.named("lol").build().convert(null)).isEmpty(); } @Test - public void testConvert_emptyString_returnsEmpty() { + void testConvert_emptyString_returnsEmpty() { assertThat(FormField.named("lol").build().convert("").get()).isEmpty(); } @Test - public void testWithDefault_hasValue_returnsValue() { + void testWithDefault_hasValue_returnsValue() { assertThat(FormField.named("lol").withDefault("default").build().convert("return me!")) .hasValue("return me!"); } @Test - public void testWithDefault_nullValue_returnsDefault() { + void testWithDefault_nullValue_returnsDefault() { assertThat(FormField.named("lol").withDefault("default").build().convert(null)) .hasValue("default"); } @Test - public void testEmptyToNull_emptyString_notPresent() { + void testEmptyToNull_emptyString_notPresent() { assertThat(FormField.named("lol").emptyToNull().build().convert("")).isEmpty(); } @Test - public void testEmptyToNullRequired_emptyString_throwsFfe() { + void testEmptyToNullRequired_emptyString_throwsFfe() { FormFieldException thrown = assertThrows( FormFieldException.class, @@ -81,18 +81,18 @@ public class FormFieldTest { } @Test - public void testEmptyToNull_typeMismatch() { + void testEmptyToNull_typeMismatch() { assertThrows( IllegalStateException.class, () -> FormField.named("lol", Object.class).emptyToNull()); } @Test - public void testNamedLong() { + void testNamedLong() { assertThat(FormField.named("lol", Long.class).build().convert(666L)).hasValue(666L); } @Test - public void testUppercased() { + void testUppercased() { FormField field = FormField.named("lol").uppercased().build(); assertThat(field.convert(null)).isEmpty(); assertThat(field.convert("foo")).hasValue("FOO"); @@ -100,7 +100,7 @@ public class FormFieldTest { } @Test - public void testLowercased() { + void testLowercased() { FormField field = FormField.named("lol").lowercased().build(); assertThat(field.convert(null)).isEmpty(); assertThat(field.convert("foo")).hasValue("foo"); @@ -108,43 +108,40 @@ public class FormFieldTest { } @Test - public void testIn_passesThroughNull() { - FormField field = FormField.named("lol") - .in(ImmutableSet.of("foo", "bar")) - .build(); + void testIn_passesThroughNull() { + FormField field = + FormField.named("lol").in(ImmutableSet.of("foo", "bar")).build(); assertThat(field.convert(null)).isEmpty(); } @Test - public void testIn_valueIsContainedInSet() { - FormField field = FormField.named("lol") - .in(ImmutableSet.of("foo", "bar")) - .build(); + void testIn_valueIsContainedInSet() { + FormField field = + FormField.named("lol").in(ImmutableSet.of("foo", "bar")).build(); assertThat(field.convert("foo")).hasValue("foo"); assertThat(field.convert("bar")).hasValue("bar"); } @Test - public void testIn_valueMissingFromSet() { - FormField field = FormField.named("lol") - .in(ImmutableSet.of("foo", "bar")) - .build(); + void testIn_valueMissingFromSet() { + FormField field = + FormField.named("lol").in(ImmutableSet.of("foo", "bar")).build(); FormFieldException thrown = assertThrows(FormFieldException.class, () -> field.convert("omfg")); assertThat(thrown, equalTo(new FormFieldException("Unrecognized value.").propagate("lol"))); } @Test - public void testRange_hasLowerBound_nullValue_passesThrough() { + void testRange_hasLowerBound_nullValue_passesThrough() { assertThat(FormField.named("lol").range(atLeast(5)).build().convert(null)).isEmpty(); } @Test - public void testRange_minimum_stringLengthEqualToMinimum_doesNothing() { + void testRange_minimum_stringLengthEqualToMinimum_doesNothing() { assertThat(FormField.named("lol").range(atLeast(5)).build().convert("hello")).hasValue("hello"); } @Test - public void testRange_minimum_stringLengthShorterThanMinimum_throwsFfe() { + void testRange_minimum_stringLengthShorterThanMinimum_throwsFfe() { FormFieldException thrown = assertThrows( FormFieldException.class, @@ -153,17 +150,17 @@ public class FormFieldTest { } @Test - public void testRange_noLowerBound_nullValue_passThrough() { + void testRange_noLowerBound_nullValue_passThrough() { assertThat(FormField.named("lol").range(atMost(5)).build().convert(null)).isEmpty(); } @Test - public void testRange_maximum_stringLengthEqualToMaximum_doesNothing() { + void testRange_maximum_stringLengthEqualToMaximum_doesNothing() { assertThat(FormField.named("lol").range(atMost(5)).build().convert("hello")).hasValue("hello"); } @Test - public void testRange_maximum_stringLengthShorterThanMaximum_throwsFfe() { + void testRange_maximum_stringLengthShorterThanMaximum_throwsFfe() { FormFieldException thrown = assertThrows( FormFieldException.class, @@ -172,7 +169,7 @@ public class FormFieldTest { } @Test - public void testRange_numericTypes() { + void testRange_numericTypes() { FormField.named("lol", Byte.class).range(closed(5, 10)).build().convert((byte) 7); FormField.named("lol", Short.class).range(closed(5, 10)).build().convert((short) 7); FormField.named("lol", Integer.class).range(closed(5, 10)).build().convert(7); @@ -182,19 +179,19 @@ public class FormFieldTest { } @Test - public void testRange_typeMismatch() { + void testRange_typeMismatch() { assertThrows( IllegalStateException.class, () -> FormField.named("lol", Object.class).range(atMost(5))); } @Test - public void testMatches_matches_doesNothing() { + void testMatches_matches_doesNothing() { assertThat(FormField.named("lol").matches(Pattern.compile("[a-z]+")).build().convert("abc")) .hasValue("abc"); } @Test - public void testMatches_mismatch_throwsFfeAndShowsDefaultErrorMessageWithPattern() { + void testMatches_mismatch_throwsFfeAndShowsDefaultErrorMessageWithPattern() { FormFieldException thrown = assertThrows( FormFieldException.class, @@ -208,14 +205,14 @@ public class FormFieldTest { } @Test - public void testMatches_typeMismatch() { + void testMatches_typeMismatch() { assertThrows( IllegalStateException.class, () -> FormField.named("lol", Object.class).matches(Pattern.compile("."))); } @Test - public void testRetains() { + void testRetains() { assertThat( FormField.named("lol") .retains(CharMatcher.anyOf("0123456789")) @@ -225,7 +222,7 @@ public class FormFieldTest { } @Test - public void testCast() { + void testCast() { assertThat( FormField.named("lol") .transform(Integer.class, Integer::parseInt) @@ -235,7 +232,7 @@ public class FormFieldTest { } @Test - public void testCast_twice() { + void testCast_twice() { assertThat( FormField.named("lol") .transform(Object.class, Integer::parseInt) @@ -246,18 +243,17 @@ public class FormFieldTest { } @Test - public void testAsList_null_notPresent() { + void testAsList_null_notPresent() { assertThat(FormField.named("lol").asList().build().convert(null)).isEmpty(); } @Test - public void testAsList_empty_returnsEmpty() { - assertThat(FormField.named("lol").asList().build().convert(ImmutableList.of()).get()) - .isEmpty(); + void testAsList_empty_returnsEmpty() { + assertThat(FormField.named("lol").asList().build().convert(ImmutableList.of()).get()).isEmpty(); } @Test - public void testAsListEmptyToNullRequired_empty_throwsFfe() { + void testAsListEmptyToNullRequired_empty_throwsFfe() { FormFieldException thrown = assertThrows( FormFieldException.class, @@ -272,38 +268,31 @@ public class FormFieldTest { } @Test - public void testListEmptyToNull_empty_notPresent() { - assertThat(FormField.named("lol") - .asList() - .emptyToNull() - .build() - .convert(ImmutableList.of())) + void testListEmptyToNull_empty_notPresent() { + assertThat(FormField.named("lol").asList().emptyToNull().build().convert(ImmutableList.of())) .isEmpty(); } @Test - public void testAsEnum() { - FormField omgField = FormField.named("omg") - .asEnum(ICanHazEnum.class) - .build(); + void testAsEnum() { + FormField omgField = + FormField.named("omg").asEnum(ICanHazEnum.class).build(); assertThat(omgField.convert("LOL").get()).isEqualTo(ICanHazEnum.LOL); assertThat(omgField.convert("CAT").get()).isEqualTo(ICanHazEnum.CAT); } @Test - public void testAsEnum_lowercase_works() { - FormField omgField = FormField.named("omg") - .asEnum(ICanHazEnum.class) - .build(); + void testAsEnum_lowercase_works() { + FormField omgField = + FormField.named("omg").asEnum(ICanHazEnum.class).build(); assertThat(omgField.convert("lol").get()).isEqualTo(ICanHazEnum.LOL); assertThat(omgField.convert("cat").get()).isEqualTo(ICanHazEnum.CAT); } @Test - public void testAsEnum_badInput_throwsFfe() { - FormField omgField = FormField.named("omg") - .asEnum(ICanHazEnum.class) - .build(); + void testAsEnum_badInput_throwsFfe() { + FormField omgField = + FormField.named("omg").asEnum(ICanHazEnum.class).build(); FormFieldException thrown = assertThrows(FormFieldException.class, () -> omgField.convert("helo")); assertThat( @@ -313,64 +302,65 @@ public class FormFieldTest { } @Test - public void testSplitList() { - FormField> field = FormField.named("lol") - .asList(Splitter.on(',').omitEmptyStrings()) - .build(); - assertThat(field.convert("oh,my,goth").get()) - .containsExactly("oh", "my", "goth") - .inOrder(); + void testSplitList() { + FormField> field = + FormField.named("lol").asList(Splitter.on(',').omitEmptyStrings()).build(); + assertThat(field.convert("oh,my,goth").get()).containsExactly("oh", "my", "goth").inOrder(); assertThat(field.convert("").get()).isEmpty(); assertThat(field.convert(null)).isEmpty(); } @Test - public void testSplitSet() { - FormField> field = FormField.named("lol") - .uppercased() - .asSet(Splitter.on(',').omitEmptyStrings()) - .build(); - assertThat(field.convert("oh,my,goth").get()) - .containsExactly("OH", "MY", "GOTH") - .inOrder(); + void testSplitSet() { + FormField> field = + FormField.named("lol").uppercased().asSet(Splitter.on(',').omitEmptyStrings()).build(); + assertThat(field.convert("oh,my,goth").get()).containsExactly("OH", "MY", "GOTH").inOrder(); assertThat(field.convert("").get()).isEmpty(); assertThat(field.convert(null)).isEmpty(); } @Test - public void testAsList() { + void testAsList() { assertThat( - FormField.named("lol").asList().build().convert(ImmutableList.of("lol", "cat", "")).get()) - .containsExactly("lol", "cat", "").inOrder(); + FormField.named("lol") + .asList() + .build() + .convert(ImmutableList.of("lol", "cat", "")) + .get()) + .containsExactly("lol", "cat", "") + .inOrder(); } @Test - public void testAsList_trimmedEmptyToNullOnItems() { - assertThat(FormField.named("lol") - .trimmed() - .emptyToNull() - .matches(Pattern.compile("[a-z]+")) - .asList() - .range(closed(1, 2)) - .build() - .convert(ImmutableList.of("lol\n", "\tcat ")) - .get()) - .containsExactly("lol", "cat").inOrder(); + void testAsList_trimmedEmptyToNullOnItems() { + assertThat( + FormField.named("lol") + .trimmed() + .emptyToNull() + .matches(Pattern.compile("[a-z]+")) + .asList() + .range(closed(1, 2)) + .build() + .convert(ImmutableList.of("lol\n", "\tcat ")) + .get()) + .containsExactly("lol", "cat") + .inOrder(); } @Test - public void testAsList_nullElements_getIgnored() { - assertThat(FormField.named("lol") - .emptyToNull() - .asList() - .build() - .convert(ImmutableList.of("omg", "")) - .get()) - .containsExactly("omg"); + void testAsList_nullElements_getIgnored() { + assertThat( + FormField.named("lol") + .emptyToNull() + .asList() + .build() + .convert(ImmutableList.of("omg", "")) + .get()) + .containsExactly("omg"); } @Test - public void testAsListRequiredElements_nullElement_throwsFfeWithIndex() { + void testAsListRequiredElements_nullElement_throwsFfeWithIndex() { FormFieldException thrown = assertThrows( FormFieldException.class, @@ -387,7 +377,7 @@ public class FormFieldTest { } @Test - public void testMapAsListRequiredElements_nullElement_throwsFfeWithIndexAndKey() { + void testMapAsListRequiredElements_nullElement_throwsFfeWithIndexAndKey() { FormFieldException thrown = assertThrows( FormFieldException.class, @@ -415,13 +405,13 @@ public class FormFieldTest { } @Test - public void testAsListTrimmed_typeMismatch() { + void testAsListTrimmed_typeMismatch() { FormField.named("lol").trimmed().asList(); assertThrows(IllegalStateException.class, () -> FormField.named("lol").asList().trimmed()); } @Test - public void testAsMatrix() { + void testAsMatrix() { assertThat( FormField.named("lol", Integer.class) .transform(input -> input * 2) @@ -438,30 +428,31 @@ public class FormFieldTest { ImmutableList.of(4, 6), ImmutableList.of(4, 8)) .inOrder(); - } - - @Test - public void testAsSet() { - assertThat(FormField.named("lol") - .asSet() - .build() - .convert(ImmutableList.of("lol", "cat", "cat")) - .get()) - .containsExactly("lol", "cat"); } @Test - public void testTrimmed() { + void testAsSet() { + assertThat( + FormField.named("lol") + .asSet() + .build() + .convert(ImmutableList.of("lol", "cat", "cat")) + .get()) + .containsExactly("lol", "cat"); + } + + @Test + void testTrimmed() { assertThat(FormField.named("lol").trimmed().build().convert(" \thello \t\n")).hasValue("hello"); } @Test - public void testTrimmed_typeMismatch() { + void testTrimmed_typeMismatch() { assertThrows(IllegalStateException.class, () -> FormField.named("lol", Object.class).trimmed()); } @Test - public void testAsBuilder() { + void testAsBuilder() { FormField field = FormField.named("omg").uppercased().build(); assertThat(field.name()).isEqualTo("omg"); assertThat(field.convert("hello")).hasValue("HELLO"); @@ -471,7 +462,7 @@ public class FormFieldTest { } @Test - public void testAsBuilderNamed() { + void testAsBuilderNamed() { FormField field = FormField.named("omg").uppercased().build(); assertThat(field.name()).isEqualTo("omg"); assertThat(field.convert("hello")).hasValue("HELLO"); @@ -481,7 +472,7 @@ public class FormFieldTest { } @Test - public void testNullness() { + void testNullness() { NullPointerTester tester = new NullPointerTester() .setDefault(Class.class, Object.class) diff --git a/core/src/test/java/google/registry/ui/forms/FormFieldsTest.java b/core/src/test/java/google/registry/ui/forms/FormFieldsTest.java index b16a7b887..4918ab0e6 100644 --- a/core/src/test/java/google/registry/ui/forms/FormFieldsTest.java +++ b/core/src/test/java/google/registry/ui/forms/FormFieldsTest.java @@ -21,31 +21,28 @@ import static org.hamcrest.Matchers.equalTo; import static org.junit.Assert.assertThrows; import com.google.common.testing.NullPointerTester; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; +import org.junit.jupiter.api.Test; /** Unit tests for {@link FormFields}. */ -@RunWith(JUnit4.class) -public class FormFieldsTest { +class FormFieldsTest { @Test - public void testXsToken_collapsesAndTrimsWhitespace() { + void testXsToken_collapsesAndTrimsWhitespace() { assertThat(FormFields.XS_TOKEN.convert(" hello \r\n\t there\n")).hasValue("hello there"); } @Test - public void testXsNormalizedString_extraSpaces_doesntCare() { + void testXsNormalizedString_extraSpaces_doesntCare() { assertThat(FormFields.XS_NORMALIZED_STRING.convert("hello there")).hasValue("hello there"); } @Test - public void testXsNormalizedString_sideSpaces_doesntCare() { + void testXsNormalizedString_sideSpaces_doesntCare() { assertThat(FormFields.XS_NORMALIZED_STRING.convert(" hello there ")).hasValue(" hello there "); } @Test - public void testXsNormalizedString_containsNonSpaceWhitespace_fails() { + void testXsNormalizedString_containsNonSpaceWhitespace_fails() { FormFieldException thrown = assertThrows( FormFieldException.class, @@ -58,18 +55,18 @@ public class FormFieldsTest { } @Test - public void testXsEppE164PhoneNumber_nanpaNumber_validates() { + void testXsEppE164PhoneNumber_nanpaNumber_validates() { assertThat(FormFields.XS_NORMALIZED_STRING.convert("+1.2125650000")).hasValue("+1.2125650000"); } @Test - public void testXsEppE164PhoneNumber_londonNumber_validates() { + void testXsEppE164PhoneNumber_londonNumber_validates() { assertThat(FormFields.XS_NORMALIZED_STRING.convert("+44.2011112222")) .hasValue("+44.2011112222"); } @Test - public void testXsEppE164PhoneNumber_localizedNumber_fails() { + void testXsEppE164PhoneNumber_localizedNumber_fails() { FormFieldException thrown = assertThrows( FormFieldException.class, () -> FormFields.PHONE_NUMBER.convert("(212) 565-0000")); @@ -79,34 +76,34 @@ public class FormFieldsTest { } @Test - public void testXsEppE164PhoneNumber_appliesXsTokenTransform() { + void testXsEppE164PhoneNumber_appliesXsTokenTransform() { assertThat(FormFields.PHONE_NUMBER.convert(" +1.2125650000 \r")).hasValue("+1.2125650000"); } @Test - public void testXsEppRoid_correctSyntax_validates() { + void testXsEppRoid_correctSyntax_validates() { assertThat(FormFields.ROID.convert("SH8013-REP")).hasValue("SH8013-REP"); } @Test - public void testXsEppRoid_lowerCase_validates() { + void testXsEppRoid_lowerCase_validates() { assertThat(FormFields.ROID.convert("sh8013-rep")).hasValue("sh8013-rep"); } @Test - public void testXsEppRoid_missingHyphen_fails() { + void testXsEppRoid_missingHyphen_fails() { FormFieldException thrown = assertThrows(FormFieldException.class, () -> FormFields.ROID.convert("SH8013REP")); assertThat(thrown).hasMessageThat().contains("Please enter a valid EPP ROID, e.g. SH8013-REP"); } @Test - public void testXsEppRoid_appliesXsTokenTransform() { + void testXsEppRoid_appliesXsTokenTransform() { assertThat(FormFields.ROID.convert("\n FOO-BAR \r")).hasValue("FOO-BAR"); } @Test - public void testNullness() { + void testNullness() { new NullPointerTester().testAllPublicStaticMethods(FormFields.class); } } diff --git a/core/src/test/java/google/registry/ui/server/ActionMembershipTest.java b/core/src/test/java/google/registry/ui/server/ActionMembershipTest.java index 080ea9caa..0f71b0b5d 100644 --- a/core/src/test/java/google/registry/ui/server/ActionMembershipTest.java +++ b/core/src/test/java/google/registry/ui/server/ActionMembershipTest.java @@ -23,15 +23,13 @@ import google.registry.ui.server.registrar.HtmlAction; import google.registry.ui.server.registrar.JsonGetAction; import io.github.classgraph.ClassGraph; import io.github.classgraph.ScanResult; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; +import org.junit.jupiter.api.Test; -@RunWith(JUnit4.class) -public final class ActionMembershipTest { +/** Unit tests of action membership. */ +final class ActionMembershipTest { @Test - public void testAllActionsEitherHtmlOrJson() { + void testAllActionsEitherHtmlOrJson() { // All UI actions should serve valid HTML or JSON. There are three valid options: // 1. Extending HtmlAction to signal that we are serving an HTML page // 2. Extending JsonAction to show that we are serving JSON POST requests diff --git a/core/src/test/java/google/registry/ui/server/RegistrarFormFieldsTest.java b/core/src/test/java/google/registry/ui/server/RegistrarFormFieldsTest.java index 320a4bccb..faae2df22 100644 --- a/core/src/test/java/google/registry/ui/server/RegistrarFormFieldsTest.java +++ b/core/src/test/java/google/registry/ui/server/RegistrarFormFieldsTest.java @@ -21,21 +21,19 @@ import static org.junit.Assert.assertThrows; import google.registry.testing.CertificateSamples; import google.registry.ui.forms.FormFieldException; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; +import org.junit.jupiter.api.Test; /** Unit tests for {@link RegistrarFormFields}. */ -@RunWith(JUnit4.class) -public class RegistrarFormFieldsTest { +class RegistrarFormFieldsTest { + @Test - public void testValidCertificate_doesntThrowError() { + void testValidCertificate_doesntThrowError() { assertThat(RegistrarFormFields.CLIENT_CERTIFICATE_FIELD.convert(CertificateSamples.SAMPLE_CERT)) .hasValue(CertificateSamples.SAMPLE_CERT); } @Test - public void testBadCertificate_throwsFfe() { + void testBadCertificate_throwsFfe() { FormFieldException thrown = assertThrows( FormFieldException.class, @@ -48,7 +46,7 @@ public class RegistrarFormFieldsTest { } @Test - public void testValidCertificateHash_doesntThrowError() { + void testValidCertificateHash_doesntThrowError() { assertThat( RegistrarFormFields.CLIENT_CERTIFICATE_HASH_FIELD.convert( CertificateSamples.SAMPLE_CERT_HASH)) @@ -56,7 +54,7 @@ public class RegistrarFormFieldsTest { } @Test - public void testBadCertificateHash_throwsFfe() { + void testBadCertificateHash_throwsFfe() { FormFieldException thrown = assertThrows( FormFieldException.class, diff --git a/core/src/test/java/google/registry/ui/server/SendEmailUtilsTest.java b/core/src/test/java/google/registry/ui/server/SendEmailUtilsTest.java index e54cea540..8ef57c614 100644 --- a/core/src/test/java/google/registry/ui/server/SendEmailUtilsTest.java +++ b/core/src/test/java/google/registry/ui/server/SendEmailUtilsTest.java @@ -26,14 +26,11 @@ import google.registry.util.EmailMessage; import google.registry.util.SendEmailService; import javax.mail.MessagingException; import javax.mail.internet.InternetAddress; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; +import org.junit.jupiter.api.Test; import org.mockito.ArgumentCaptor; /** Unit tests for {@link SendEmailUtils}. */ -@RunWith(JUnit4.class) -public class SendEmailUtilsTest { +class SendEmailUtilsTest { private final SendEmailService emailService = mock(SendEmailService.class); private SendEmailUtils sendEmailUtils; @@ -48,7 +45,7 @@ public class SendEmailUtilsTest { } @Test - public void testSuccess_sendToOneAddress() throws Exception { + void testSuccess_sendToOneAddress() throws Exception { setRecipients(ImmutableList.of("johnny@fakesite.tld")); assertThat(sendEmailUtils.hasRecipients()).isTrue(); assertThat( @@ -60,7 +57,7 @@ public class SendEmailUtilsTest { } @Test - public void testSuccess_sendToMultipleAddresses() throws Exception { + void testSuccess_sendToMultipleAddresses() throws Exception { setRecipients(ImmutableList.of("foo@example.com", "bar@example.com")); assertThat(sendEmailUtils.hasRecipients()).isTrue(); assertThat( @@ -72,7 +69,7 @@ public class SendEmailUtilsTest { } @Test - public void testSuccess_ignoresMalformedEmailAddress() throws Exception { + void testSuccess_ignoresMalformedEmailAddress() throws Exception { setRecipients(ImmutableList.of("foo@example.com", "1iñvalidemail")); assertThat(sendEmailUtils.hasRecipients()).isTrue(); assertThat( @@ -84,7 +81,7 @@ public class SendEmailUtilsTest { } @Test - public void testFailure_noAddresses() throws Exception { + void testFailure_noAddresses() throws Exception { setRecipients(ImmutableList.of()); assertThat(sendEmailUtils.hasRecipients()).isFalse(); assertThat( @@ -96,7 +93,7 @@ public class SendEmailUtilsTest { } @Test - public void testFailure_onlyGivenMalformedAddress() throws Exception { + void testFailure_onlyGivenMalformedAddress() throws Exception { setRecipients(ImmutableList.of("1iñvalidemail")); assertThat(sendEmailUtils.hasRecipients()).isTrue(); assertThat( @@ -108,7 +105,7 @@ public class SendEmailUtilsTest { } @Test - public void testFailure_exceptionThrownDuringSend() throws Exception { + void testFailure_exceptionThrownDuringSend() throws Exception { setRecipients(ImmutableList.of("foo@example.com")); assertThat(sendEmailUtils.hasRecipients()).isTrue(); doThrow(new RuntimeException(new MessagingException("expected"))) @@ -123,7 +120,7 @@ public class SendEmailUtilsTest { } @Test - public void testAdditionalRecipients() throws Exception { + void testAdditionalRecipients() throws Exception { setRecipients(ImmutableList.of("foo@example.com")); assertThat(sendEmailUtils.hasRecipients()).isTrue(); assertThat( @@ -136,7 +133,7 @@ public class SendEmailUtilsTest { } @Test - public void testOnlyAdditionalRecipients() throws Exception { + void testOnlyAdditionalRecipients() throws Exception { setRecipients(ImmutableList.of()); assertThat(sendEmailUtils.hasRecipients()).isFalse(); assertThat( diff --git a/core/src/test/java/google/registry/ui/server/registrar/ConsoleOteSetupActionTest.java b/core/src/test/java/google/registry/ui/server/registrar/ConsoleOteSetupActionTest.java index 003dba3a4..23ebb4a70 100644 --- a/core/src/test/java/google/registry/ui/server/registrar/ConsoleOteSetupActionTest.java +++ b/core/src/test/java/google/registry/ui/server/registrar/ConsoleOteSetupActionTest.java @@ -37,7 +37,7 @@ import google.registry.request.auth.AuthResult; import google.registry.request.auth.AuthenticatedRegistrarAccessor; import google.registry.request.auth.UserAuthInfo; import google.registry.security.XsrfTokenManager; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.DeterministicStringGenerator; import google.registry.testing.FakeClock; import google.registry.testing.FakeResponse; @@ -62,8 +62,8 @@ import org.mockito.junit.jupiter.MockitoExtension; public final class ConsoleOteSetupActionTest { @RegisterExtension - public final AppEngineRule appEngineRule = - AppEngineRule.builder().withDatastoreAndCloudSql().build(); + public final AppEngineExtension appEngineRule = + AppEngineExtension.builder().withDatastoreAndCloudSql().build(); @RegisterExtension @Order(value = Integer.MAX_VALUE) diff --git a/core/src/test/java/google/registry/ui/server/registrar/ConsoleRegistrarCreatorActionTest.java b/core/src/test/java/google/registry/ui/server/registrar/ConsoleRegistrarCreatorActionTest.java index 4c17625bc..ed2238289 100644 --- a/core/src/test/java/google/registry/ui/server/registrar/ConsoleRegistrarCreatorActionTest.java +++ b/core/src/test/java/google/registry/ui/server/registrar/ConsoleRegistrarCreatorActionTest.java @@ -38,7 +38,7 @@ import google.registry.request.auth.AuthResult; import google.registry.request.auth.AuthenticatedRegistrarAccessor; import google.registry.request.auth.UserAuthInfo; import google.registry.security.XsrfTokenManager; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.DeterministicStringGenerator; import google.registry.testing.FakeClock; import google.registry.testing.FakeResponse; @@ -63,7 +63,8 @@ import org.mockito.junit.jupiter.MockitoExtension; final class ConsoleRegistrarCreatorActionTest { @RegisterExtension - final AppEngineRule appEngineRule = AppEngineRule.builder().withDatastoreAndCloudSql().build(); + final AppEngineExtension appEngineRule = + AppEngineExtension.builder().withDatastoreAndCloudSql().build(); @RegisterExtension @Order(value = Integer.MAX_VALUE) diff --git a/core/src/test/java/google/registry/ui/server/registrar/ConsoleUiActionTest.java b/core/src/test/java/google/registry/ui/server/registrar/ConsoleUiActionTest.java index 8167265f9..7cfde5605 100644 --- a/core/src/test/java/google/registry/ui/server/registrar/ConsoleUiActionTest.java +++ b/core/src/test/java/google/registry/ui/server/registrar/ConsoleUiActionTest.java @@ -34,26 +34,23 @@ import google.registry.request.auth.AuthResult; import google.registry.request.auth.AuthenticatedRegistrarAccessor; import google.registry.request.auth.UserAuthInfo; import google.registry.security.XsrfTokenManager; -import google.registry.testing.AppEngineRule; +import google.registry.testing.AppEngineExtension; import google.registry.testing.FakeClock; import google.registry.testing.FakeResponse; import google.registry.testing.UserInfo; import java.util.Optional; import javax.servlet.http.HttpServletRequest; -import org.junit.After; -import org.junit.Before; -import org.junit.Rule; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.RegisterExtension; /** Unit tests for {@link ConsoleUiAction}. */ -@RunWith(JUnit4.class) -public class ConsoleUiActionTest { +class ConsoleUiActionTest { - @Rule - public final AppEngineRule appEngineRule = - AppEngineRule.builder() + @RegisterExtension + final AppEngineExtension appEngineExtension = + AppEngineExtension.builder() .withDatastoreAndCloudSql() .withUserService(UserInfo.create("marla.singer@example.com", "12345")) .build(); @@ -63,8 +60,8 @@ public class ConsoleUiActionTest { private final ConsoleUiAction action = new ConsoleUiAction(); private final User user = new User("marla.singer@example.com", "gmail.com", "12345"); - @Before - public void setUp() { + @BeforeEach + void beforeEach() { action.enabled = true; action.logoFilename = "logo.png"; action.productName = "Nomulus"; @@ -93,47 +90,47 @@ public class ConsoleUiActionTest { RegistrarConsoleMetrics.consoleRequestMetric.reset(); } - @After - public void tearDown() { + @AfterEach + void afterEach() { assertThat(RegistrarConsoleMetrics.consoleRequestMetric).hasNoOtherValues(); } - public void assertMetric(String clientId, String explicitClientId, String roles, String status) { + void assertMetric(String clientId, String explicitClientId, String roles, String status) { assertThat(RegistrarConsoleMetrics.consoleRequestMetric) .hasValueForLabels(1, clientId, explicitClientId, roles, status); RegistrarConsoleMetrics.consoleRequestMetric.reset(clientId, explicitClientId, roles, status); } @Test - public void testWebPage_disallowsIframe() { + void testWebPage_disallowsIframe() { action.run(); assertThat(response.getHeaders()).containsEntry("X-Frame-Options", "SAMEORIGIN"); assertMetric("TheRegistrar", "false", "[OWNER]", "SUCCESS"); } @Test - public void testWebPage_setsHtmlUtf8ContentType() { + void testWebPage_setsHtmlUtf8ContentType() { action.run(); assertThat(response.getContentType()).isEqualTo(MediaType.HTML_UTF_8); assertMetric("TheRegistrar", "false", "[OWNER]", "SUCCESS"); } @Test - public void testWebPage_containsUserNickname() { + void testWebPage_containsUserNickname() { action.run(); assertThat(response.getPayload()).contains("marla.singer"); assertMetric("TheRegistrar", "false", "[OWNER]", "SUCCESS"); } @Test - public void testWebPage_containsGoogleAnalyticsId() { + void testWebPage_containsGoogleAnalyticsId() { action.run(); assertThat(response.getPayload()).contains("gtag('config', 'sampleId')"); assertMetric("TheRegistrar", "false", "[OWNER]", "SUCCESS"); } @Test - public void testUserHasAccessAsTheRegistrar_showsRegistrarConsole() { + void testUserHasAccessAsTheRegistrar_showsRegistrarConsole() { action.run(); assertThat(response.getPayload()).contains("Registrar Console"); assertThat(response.getPayload()).contains("reg-content-and-footer"); @@ -141,7 +138,7 @@ public class ConsoleUiActionTest { } @Test - public void testConsoleDisabled_showsDisabledPage() { + void testConsoleDisabled_showsDisabledPage() { action.enabled = false; action.run(); assertThat(response.getPayload()).contains("

Console is disabled

"); @@ -149,7 +146,7 @@ public class ConsoleUiActionTest { } @Test - public void testUserDoesntHaveAccessToAnyRegistrar_showsWhoAreYouPage() { + void testUserDoesntHaveAccessToAnyRegistrar_showsWhoAreYouPage() { action.registrarAccessor = AuthenticatedRegistrarAccessor.createForTesting(ImmutableSetMultimap.of()); action.run(); @@ -160,7 +157,7 @@ public class ConsoleUiActionTest { } @Test - public void testNoUser_redirect() { + void testNoUser_redirect() { when(request.getRequestURI()).thenReturn("/test"); action.authResult = AuthResult.NOT_AUTHENTICATED; action.run(); @@ -169,7 +166,7 @@ public class ConsoleUiActionTest { } @Test - public void testNoUserInformationAtAll_redirectToRoot() { + void testNoUserInformationAtAll_redirectToRoot() { when(request.getRequestURI()).thenThrow(new IllegalArgumentException()); action.authResult = AuthResult.NOT_AUTHENTICATED; action.run(); @@ -178,7 +175,7 @@ public class ConsoleUiActionTest { } @Test - public void testSettingClientId_notAllowed_showsNeedPermissionPage() { + void testSettingClientId_notAllowed_showsNeedPermissionPage() { // Behaves the same way if fakeRegistrar exists, but we don't have access to it action.paramClientId = Optional.of("fakeRegistrar"); action.run(); @@ -189,7 +186,7 @@ public class ConsoleUiActionTest { } @Test - public void testSettingClientId_allowed_showsRegistrarConsole() { + void testSettingClientId_allowed_showsRegistrarConsole() { action.paramClientId = Optional.of("NewRegistrar"); action.run(); assertThat(response.getPayload()).contains("Registrar Console"); @@ -199,7 +196,7 @@ public class ConsoleUiActionTest { } @Test - public void testUserHasAccessAsTheRegistrar_showsClientIdChooser() { + void testUserHasAccessAsTheRegistrar_showsClientIdChooser() { action.run(); assertThat(response.getPayload()).contains("