From c7e61929291c8d5a3932bdebd7ab6e2e30678c35 Mon Sep 17 00:00:00 2001 From: Michael Muller Date: Fri, 4 Dec 2020 14:15:24 -0500 Subject: [PATCH] Add replay extension to more domain tests (#893) * Add replay extension to more domain tests Add replay to DomainRenewFlowTest and DomainUpdateFlowTest. * Formatting fix --- .../flows/domain/DomainRenewFlowTest.java | 112 ++++++++++++------ .../flows/domain/DomainUpdateFlowTest.java | 9 ++ 2 files changed, 85 insertions(+), 36 deletions(-) diff --git a/core/src/test/java/google/registry/flows/domain/DomainRenewFlowTest.java b/core/src/test/java/google/registry/flows/domain/DomainRenewFlowTest.java index 4ab6709fe..4344ad5a4 100644 --- a/core/src/test/java/google/registry/flows/domain/DomainRenewFlowTest.java +++ b/core/src/test/java/google/registry/flows/domain/DomainRenewFlowTest.java @@ -26,6 +26,7 @@ import static google.registry.testing.DatabaseHelper.newDomainBase; import static google.registry.testing.DatabaseHelper.persistActiveDomain; import static google.registry.testing.DatabaseHelper.persistDeletedDomain; import static google.registry.testing.DatabaseHelper.persistResource; +import static google.registry.testing.DatabaseHelper.persistResources; import static google.registry.testing.DomainBaseSubject.assertAboutDomains; import static google.registry.testing.EppExceptionSubject.assertAboutEppExceptions; import static google.registry.testing.HistoryEntrySubject.assertAboutHistoryEntries; @@ -69,12 +70,17 @@ import google.registry.model.registry.Registry; import google.registry.model.reporting.DomainTransactionRecord; import google.registry.model.reporting.DomainTransactionRecord.TransactionReportField; import google.registry.model.reporting.HistoryEntry; +import google.registry.testing.ReplayExtension; import java.util.Map; import org.joda.money.Money; import org.joda.time.DateTime; import org.joda.time.Duration; import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Order; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.BeforeEachCallback; +import org.junit.jupiter.api.extension.ExtensionContext; +import org.junit.jupiter.api.extension.RegisterExtension; /** Unit tests for {@link DomainRenewFlow}. */ class DomainRenewFlowTest extends ResourceFlowTestCase { @@ -96,50 +102,66 @@ class DomainRenewFlowTest extends ResourceFlowTestCase { + try { + HistoryEntry historyEntryDomainCreate = + new HistoryEntry.Builder() + .setParent(domain) + .setType(HistoryEntry.Type.DOMAIN_CREATE) + .setModificationTime(clock.nowUtc()) + .build(); + BillingEvent.Recurring autorenewEvent = + new BillingEvent.Recurring.Builder() + .setReason(Reason.RENEW) + .setFlags(ImmutableSet.of(Flag.AUTO_RENEW)) + .setTargetId(getUniqueIdFromCommand()) + .setClientId("TheRegistrar") + .setEventTime(expirationTime) + .setRecurrenceEndTime(END_OF_TIME) + .setParent(historyEntryDomainCreate) + .build(); + PollMessage.Autorenew autorenewPollMessage = + new PollMessage.Autorenew.Builder() + .setTargetId(getUniqueIdFromCommand()) + .setClientId("TheRegistrar") + .setEventTime(expirationTime) + .setAutorenewEndTime(END_OF_TIME) + .setMsg("Domain was auto-renewed.") + .setParent(historyEntryDomainCreate) + .build(); + DomainBase newDomain = + domain + .asBuilder() + .setRegistrationExpirationTime(expirationTime) + .setStatusValues(ImmutableSet.copyOf(statusValues)) + .setAutorenewBillingEvent(autorenewEvent.createVKey()) + .setAutorenewPollMessage(autorenewPollMessage.createVKey()) + .build(); + persistResources( + ImmutableSet.of( + historyEntryDomainCreate, autorenewEvent, + autorenewPollMessage, newDomain)); + } catch (Exception e) { + throw new RuntimeException("Error persisting domain", e); + } + }); clock.advanceOneMilli(); } @@ -255,6 +277,7 @@ class DomainRenewFlowTest extends ResourceFlowTestCaseThis has to happen first, we'll get timestamp inversions if we try to set the clock after + * these objects are created. + */ + class SetClockExtension implements BeforeEachCallback { + @Override + public void beforeEach(ExtensionContext context) { + // we have to go far enough back before the expiration time so that the clock advances we do + // after each persist don't move us into a grace period. The current value is likely beyond + // what is necessary, but this doesn't hurt. + clock.setTo(expirationTime.minusMillis(20)); + } + } } diff --git a/core/src/test/java/google/registry/flows/domain/DomainUpdateFlowTest.java b/core/src/test/java/google/registry/flows/domain/DomainUpdateFlowTest.java index 0d077d21c..253a98259 100644 --- a/core/src/test/java/google/registry/flows/domain/DomainUpdateFlowTest.java +++ b/core/src/test/java/google/registry/flows/domain/DomainUpdateFlowTest.java @@ -90,11 +90,14 @@ import google.registry.model.host.HostResource; import google.registry.model.registry.Registry; import google.registry.model.reporting.HistoryEntry; import google.registry.persistence.VKey; +import google.registry.testing.ReplayExtension; import java.util.Optional; import org.joda.money.Money; 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; /** Unit tests for {@link DomainUpdateFlow}. */ class DomainUpdateFlowTest extends ResourceFlowTestCase { @@ -112,6 +115,10 @@ class DomainUpdateFlowTest extends ResourceFlowTestCase