From fbe0f4e0f22eaf39d41a9e1b9768c8f0605d1787 Mon Sep 17 00:00:00 2001 From: Lai Jiang Date: Thu, 29 Feb 2024 14:02:02 -0500 Subject: [PATCH] Do not use shaded dependencies from testcontainers (#2343) Also fixed a flaky test where it depends on the current date. On a leap day, now + 1 year - 1 year results in 2/28 instead of 2/29. --- config/presubmits.py | 6 ++++++ .../google/registry/model/billing/BillingRecurrence.java | 4 +++- .../registry/batch/CheckBulkComplianceActionTest.java | 2 +- .../java/google/registry/bsa/BsaDownloadFunctionalTest.java | 2 +- .../google/registry/bsa/api/JsonSerializationsTest.java | 2 +- .../test/java/google/registry/flows/EppLoginTlsTest.java | 6 +++--- .../test/java/google/registry/groups/GmailClientTest.java | 2 +- .../java/google/registry/model/billing/BillingBaseTest.java | 2 +- .../java/google/registry/model/domain/DomainSqlTest.java | 2 +- .../registry/model/domain/token/BulkPricingPackageTest.java | 2 +- .../privileges/secretmanager/FakeSecretManagerClient.java | 2 +- .../java/google/registry/tools/ConfigureTldCommandTest.java | 2 +- .../registry/tools/CreateBulkPricingPackageCommandTest.java | 2 +- .../java/google/registry/tools/RenewDomainCommandTest.java | 2 +- .../registry/tools/UpdateBulkPricingPackageCommandTest.java | 2 +- 15 files changed, 24 insertions(+), 16 deletions(-) diff --git a/config/presubmits.py b/config/presubmits.py index f225eaf32..17a7adaa5 100644 --- a/config/presubmits.py +++ b/config/presubmits.py @@ -172,6 +172,12 @@ PRESUBMITS = { {"/node_modules/", "google/registry/ui/js/util.js", "registrar_bin."}, ): "JavaScript files should not include console logging.", + PresubmitCheck( + r"org\.testcontainers\.shaded\.", + "java", + {"/node_modules/"}, + ): + "Do not use shaded dependencies from testcontainers.", } # Note that this regex only works for one kind of Flyway file. If we want to diff --git a/core/src/main/java/google/registry/model/billing/BillingRecurrence.java b/core/src/main/java/google/registry/model/billing/BillingRecurrence.java index ad417b727..bdefb26b1 100644 --- a/core/src/main/java/google/registry/model/billing/BillingRecurrence.java +++ b/core/src/main/java/google/registry/model/billing/BillingRecurrence.java @@ -181,7 +181,9 @@ public class BillingRecurrence extends BillingBase { checkNotNull(instance.reason); // Don't require recurrenceLastExpansion to be individually set on every new Recurrence. // The correct default value if not otherwise set is the event time of the recurrence minus - // 1 year. + // 1 year. This operation is leap-year safe as a billing event created on 2/29 will have its + // event time on 2/28 next year, and therefore the last expansion time on 2/28 this year. This + // ensures that it will be expanded on 2/28 next year and included in the February invoice. instance.recurrenceLastExpansion = Optional.ofNullable(instance.recurrenceLastExpansion) .orElse(instance.eventTime.minusYears(1)); diff --git a/core/src/test/java/google/registry/batch/CheckBulkComplianceActionTest.java b/core/src/test/java/google/registry/batch/CheckBulkComplianceActionTest.java index 6f93a1868..0943ae507 100644 --- a/core/src/test/java/google/registry/batch/CheckBulkComplianceActionTest.java +++ b/core/src/test/java/google/registry/batch/CheckBulkComplianceActionTest.java @@ -27,6 +27,7 @@ import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyNoInteractions; import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableSet; import com.google.common.testing.TestLogHandler; import google.registry.groups.GmailClient; import google.registry.model.billing.BillingBase.RenewalPriceBehavior; @@ -52,7 +53,6 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; import org.mockito.ArgumentCaptor; -import org.testcontainers.shaded.com.google.common.collect.ImmutableSet; /** Unit tests for {@link CheckBulkComplianceAction}. */ public class CheckBulkComplianceActionTest { diff --git a/core/src/test/java/google/registry/bsa/BsaDownloadFunctionalTest.java b/core/src/test/java/google/registry/bsa/BsaDownloadFunctionalTest.java index e58e6d468..bca218f01 100644 --- a/core/src/test/java/google/registry/bsa/BsaDownloadFunctionalTest.java +++ b/core/src/test/java/google/registry/bsa/BsaDownloadFunctionalTest.java @@ -31,6 +31,7 @@ import static org.mockito.Mockito.when; import com.google.cloud.storage.contrib.nio.testing.LocalStorageHelper; import com.google.common.base.Joiner; +import com.google.common.collect.ImmutableList; import google.registry.bsa.BlockListFetcher.LazyBlockList; import google.registry.bsa.api.BsaReportSender; import google.registry.gcs.GcsUtils; @@ -56,7 +57,6 @@ import org.mockito.Mock; import org.mockito.invocation.InvocationOnMock; import org.mockito.junit.jupiter.MockitoExtension; import org.mockito.stubbing.Answer; -import org.testcontainers.shaded.com.google.common.collect.ImmutableList; /** Functional tests of BSA block list download and processing. */ @ExtendWith(MockitoExtension.class) diff --git a/core/src/test/java/google/registry/bsa/api/JsonSerializationsTest.java b/core/src/test/java/google/registry/bsa/api/JsonSerializationsTest.java index 5808601b7..5e6f97b4d 100644 --- a/core/src/test/java/google/registry/bsa/api/JsonSerializationsTest.java +++ b/core/src/test/java/google/registry/bsa/api/JsonSerializationsTest.java @@ -20,11 +20,11 @@ import static google.registry.bsa.api.JsonSerializations.toInProgressOrdersRepor import static google.registry.bsa.api.JsonSerializations.toUnblockableDomainsReport; import com.google.common.base.Joiner; +import com.google.common.collect.ImmutableList; import google.registry.bsa.api.BlockOrder.OrderType; import google.registry.bsa.api.UnblockableDomain.Reason; import java.util.stream.Stream; import org.junit.jupiter.api.Test; -import org.testcontainers.shaded.com.google.common.collect.ImmutableList; /** Unit tests for {@link JsonSerializations}. */ class JsonSerializationsTest { diff --git a/core/src/test/java/google/registry/flows/EppLoginTlsTest.java b/core/src/test/java/google/registry/flows/EppLoginTlsTest.java index a14d4eaa2..9a3da248c 100644 --- a/core/src/test/java/google/registry/flows/EppLoginTlsTest.java +++ b/core/src/test/java/google/registry/flows/EppLoginTlsTest.java @@ -33,14 +33,14 @@ import google.registry.util.SelfSignedCaCertificate; import java.io.StringWriter; import java.security.cert.X509Certificate; import java.util.Optional; +import org.bouncycastle.openssl.jcajce.JcaMiscPEMGenerator; +import org.bouncycastle.util.io.pem.PemObjectGenerator; +import org.bouncycastle.util.io.pem.PemWriter; import org.joda.time.DateTime; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Order; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; -import org.testcontainers.shaded.org.bouncycastle.openssl.jcajce.JcaMiscPEMGenerator; -import org.testcontainers.shaded.org.bouncycastle.util.io.pem.PemObjectGenerator; -import org.testcontainers.shaded.org.bouncycastle.util.io.pem.PemWriter; /** Test logging in with TLS credentials. */ class EppLoginTlsTest extends EppTestCase { diff --git a/core/src/test/java/google/registry/groups/GmailClientTest.java b/core/src/test/java/google/registry/groups/GmailClientTest.java index 1014602cd..f8369e145 100644 --- a/core/src/test/java/google/registry/groups/GmailClientTest.java +++ b/core/src/test/java/google/registry/groups/GmailClientTest.java @@ -33,6 +33,7 @@ import com.google.api.services.gmail.Gmail.Users; import com.google.api.services.gmail.Gmail.Users.Messages; import com.google.api.services.gmail.Gmail.Users.Messages.Send; import com.google.api.services.gmail.model.Message; +import com.google.common.collect.ImmutableList; import google.registry.groups.GmailClient.RetriableGmailExceptionPredicate; import google.registry.util.EmailMessage; import google.registry.util.EmailMessage.Attachment; @@ -50,7 +51,6 @@ import org.mockito.Mock; import org.mockito.invocation.InvocationOnMock; import org.mockito.junit.jupiter.MockitoExtension; import org.mockito.stubbing.Answer; -import org.testcontainers.shaded.com.google.common.collect.ImmutableList; /** Unit tests for {@link GmailClient}. */ @ExtendWith(MockitoExtension.class) diff --git a/core/src/test/java/google/registry/model/billing/BillingBaseTest.java b/core/src/test/java/google/registry/model/billing/BillingBaseTest.java index 31912fdeb..4724efdce 100644 --- a/core/src/test/java/google/registry/model/billing/BillingBaseTest.java +++ b/core/src/test/java/google/registry/model/billing/BillingBaseTest.java @@ -51,7 +51,7 @@ import org.junit.jupiter.api.Test; /** Unit tests for {@link BillingBase}. */ public class BillingBaseTest extends EntityTestCase { - private final DateTime now = DateTime.now(UTC); + private final DateTime now = DateTime.parse("2012-01-23T22:33:44Z"); BillingBaseTest() { super(JpaEntityCoverageCheck.ENABLED); diff --git a/core/src/test/java/google/registry/model/domain/DomainSqlTest.java b/core/src/test/java/google/registry/model/domain/DomainSqlTest.java index fac773cec..66396a037 100644 --- a/core/src/test/java/google/registry/model/domain/DomainSqlTest.java +++ b/core/src/test/java/google/registry/model/domain/DomainSqlTest.java @@ -31,6 +31,7 @@ import static google.registry.util.DateTimeUtils.END_OF_TIME; import static google.registry.util.DateTimeUtils.START_OF_TIME; import static org.joda.time.DateTimeZone.UTC; +import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; import com.google.common.collect.ImmutableSortedMap; import com.google.common.collect.Sets; @@ -57,7 +58,6 @@ import org.joda.time.DateTime; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; -import org.testcontainers.shaded.com.google.common.collect.ImmutableList; /** Verify that we can store/retrieve Domain objects from a SQL database. */ public class DomainSqlTest { diff --git a/core/src/test/java/google/registry/model/domain/token/BulkPricingPackageTest.java b/core/src/test/java/google/registry/model/domain/token/BulkPricingPackageTest.java index d733b1fe4..99fc4479f 100644 --- a/core/src/test/java/google/registry/model/domain/token/BulkPricingPackageTest.java +++ b/core/src/test/java/google/registry/model/domain/token/BulkPricingPackageTest.java @@ -21,6 +21,7 @@ import static google.registry.testing.DatabaseHelper.createTld; import static google.registry.testing.DatabaseHelper.persistResource; import static org.junit.jupiter.api.Assertions.assertThrows; +import com.google.common.collect.ImmutableSet; import google.registry.model.EntityTestCase; import google.registry.model.billing.BillingBase.RenewalPriceBehavior; import google.registry.model.domain.fee.FeeQueryCommandExtensionItem.CommandName; @@ -30,7 +31,6 @@ import org.joda.money.Money; import org.joda.time.DateTime; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.testcontainers.shaded.com.google.common.collect.ImmutableSet; /** Unit tests for {@link BulkPricingPackage}. */ public class BulkPricingPackageTest extends EntityTestCase { diff --git a/core/src/test/java/google/registry/privileges/secretmanager/FakeSecretManagerClient.java b/core/src/test/java/google/registry/privileges/secretmanager/FakeSecretManagerClient.java index 6880236eb..580582462 100644 --- a/core/src/test/java/google/registry/privileges/secretmanager/FakeSecretManagerClient.java +++ b/core/src/test/java/google/registry/privileges/secretmanager/FakeSecretManagerClient.java @@ -17,12 +17,12 @@ package google.registry.privileges.secretmanager; import static com.google.common.base.Preconditions.checkNotNull; import com.google.cloud.secretmanager.v1.SecretVersion.State; +import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; import java.util.ArrayList; import java.util.HashMap; import java.util.Optional; import javax.inject.Inject; -import org.testcontainers.shaded.com.google.common.collect.ImmutableList; /** Implements {@link SecretManagerClient} for tests. */ public class FakeSecretManagerClient implements SecretManagerClient { diff --git a/core/src/test/java/google/registry/tools/ConfigureTldCommandTest.java b/core/src/test/java/google/registry/tools/ConfigureTldCommandTest.java index 58ab13c27..76b749c32 100644 --- a/core/src/test/java/google/registry/tools/ConfigureTldCommandTest.java +++ b/core/src/test/java/google/registry/tools/ConfigureTldCommandTest.java @@ -39,6 +39,7 @@ import com.fasterxml.jackson.databind.exc.InvalidFormatException; import com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException; import com.google.common.base.Ascii; import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; import com.google.common.collect.ImmutableSortedMap; import com.google.common.io.Files; @@ -57,7 +58,6 @@ import org.joda.time.DateTime; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; -import org.testcontainers.shaded.com.google.common.collect.ImmutableMap; /** Unit tests for {@link ConfigureTldCommand} */ public class ConfigureTldCommandTest extends CommandTestCase { diff --git a/core/src/test/java/google/registry/tools/CreateBulkPricingPackageCommandTest.java b/core/src/test/java/google/registry/tools/CreateBulkPricingPackageCommandTest.java index ac017b46b..30eb453c1 100644 --- a/core/src/test/java/google/registry/tools/CreateBulkPricingPackageCommandTest.java +++ b/core/src/test/java/google/registry/tools/CreateBulkPricingPackageCommandTest.java @@ -21,6 +21,7 @@ import static google.registry.testing.DatabaseHelper.persistResource; import static google.registry.util.DateTimeUtils.END_OF_TIME; import static org.junit.jupiter.api.Assertions.assertThrows; +import com.google.common.collect.ImmutableSet; import google.registry.model.billing.BillingBase.RenewalPriceBehavior; import google.registry.model.domain.fee.FeeQueryCommandExtensionItem.CommandName; import google.registry.model.domain.token.AllocationToken; @@ -31,7 +32,6 @@ import org.joda.money.CurrencyUnit; import org.joda.money.Money; import org.joda.time.DateTime; import org.junit.jupiter.api.Test; -import org.testcontainers.shaded.com.google.common.collect.ImmutableSet; /** Unit tests for {@link CreateBulkPricingPackageCommand}. */ public class CreateBulkPricingPackageCommandTest diff --git a/core/src/test/java/google/registry/tools/RenewDomainCommandTest.java b/core/src/test/java/google/registry/tools/RenewDomainCommandTest.java index 3ff123c64..3fece1d76 100644 --- a/core/src/test/java/google/registry/tools/RenewDomainCommandTest.java +++ b/core/src/test/java/google/registry/tools/RenewDomainCommandTest.java @@ -22,6 +22,7 @@ import static google.registry.testing.DatabaseHelper.persistResource; import static org.junit.jupiter.api.Assertions.assertThrows; import com.beust.jcommander.ParameterException; +import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import google.registry.model.domain.Domain; import google.registry.model.registrar.Registrar; @@ -30,7 +31,6 @@ import java.util.List; import org.joda.time.DateTime; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.testcontainers.shaded.com.google.common.collect.ImmutableList; /** Unit tests for {@link RenewDomainCommand}. */ public class RenewDomainCommandTest extends EppToolCommandTestCase { diff --git a/core/src/test/java/google/registry/tools/UpdateBulkPricingPackageCommandTest.java b/core/src/test/java/google/registry/tools/UpdateBulkPricingPackageCommandTest.java index c9337d33c..4f58a3cf1 100644 --- a/core/src/test/java/google/registry/tools/UpdateBulkPricingPackageCommandTest.java +++ b/core/src/test/java/google/registry/tools/UpdateBulkPricingPackageCommandTest.java @@ -19,6 +19,7 @@ import static google.registry.persistence.transaction.TransactionManagerFactory. import static google.registry.testing.DatabaseHelper.persistResource; import static org.junit.jupiter.api.Assertions.assertThrows; +import com.google.common.collect.ImmutableSet; import com.google.common.truth.Truth; import google.registry.model.billing.BillingBase.RenewalPriceBehavior; import google.registry.model.domain.fee.FeeQueryCommandExtensionItem.CommandName; @@ -31,7 +32,6 @@ import org.joda.money.Money; import org.joda.time.DateTime; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.testcontainers.shaded.com.google.common.collect.ImmutableSet; /** Unit tests for {@link UpdateBulkPricingPackageCommand}. */ public class UpdateBulkPricingPackageCommandTest