From eb80559b2816fadb4ba4ac03644a7fcbca11a88a Mon Sep 17 00:00:00 2001 From: Michael Muller Date: Mon, 22 Feb 2021 13:42:20 -0500 Subject: [PATCH] Fix ContactTransferData SQL loads (#967) * Fix ContactTransferData SQL loads ContactTransferData is currently loaded back from SQL as an unspecialized TransferData object. Replace it with the ContactTransferData object that we use it to reconstitute. It's likely that this could be done more straightforwardly with a schema change. * Changes requested in review --- .../registry/model/poll/PollMessage.java | 25 +++++++++++-------- .../ContactTransferApproveFlowTest.java | 7 ++++++ 2 files changed, 21 insertions(+), 11 deletions(-) diff --git a/core/src/main/java/google/registry/model/poll/PollMessage.java b/core/src/main/java/google/registry/model/poll/PollMessage.java index 76625581f..edc91594d 100644 --- a/core/src/main/java/google/registry/model/poll/PollMessage.java +++ b/core/src/main/java/google/registry/model/poll/PollMessage.java @@ -406,17 +406,20 @@ public abstract class PollMessage extends ImmutableObject pendingActionNotificationResponse.processedDate)); } if (contactId != null && transferResponse != null) { - contactTransferResponses = - ImmutableList.of( - new ContactTransferResponse.Builder() - .setContactId(contactId) - .setGainingClientId(transferResponse.getGainingClientId()) - .setLosingClientId(transferResponse.getLosingClientId()) - .setTransferStatus(transferResponse.getTransferStatus()) - .setTransferRequestTime(transferResponse.getTransferRequestTime()) - .setPendingTransferExpirationTime( - transferResponse.getPendingTransferExpirationTime()) - .build()); + // The transferResponse is currently an unspecialized TransferResponse instance, create a + // ContactTransferResponse so that the value is consistently specialized and store it in the + // list representation for datastore. + transferResponse = + new ContactTransferResponse.Builder() + .setContactId(contactId) + .setGainingClientId(transferResponse.getGainingClientId()) + .setLosingClientId(transferResponse.getLosingClientId()) + .setTransferStatus(transferResponse.getTransferStatus()) + .setTransferRequestTime(transferResponse.getTransferRequestTime()) + .setPendingTransferExpirationTime( + transferResponse.getPendingTransferExpirationTime()) + .build(); + contactTransferResponses = ImmutableList.of((ContactTransferResponse) transferResponse); } } diff --git a/core/src/test/java/google/registry/flows/contact/ContactTransferApproveFlowTest.java b/core/src/test/java/google/registry/flows/contact/ContactTransferApproveFlowTest.java index 35d00b4df..c519dae15 100644 --- a/core/src/test/java/google/registry/flows/contact/ContactTransferApproveFlowTest.java +++ b/core/src/test/java/google/registry/flows/contact/ContactTransferApproveFlowTest.java @@ -41,14 +41,21 @@ import google.registry.model.transfer.TransferData; import google.registry.model.transfer.TransferResponse; import google.registry.model.transfer.TransferStatus; import google.registry.testing.DualDatabaseTest; +import google.registry.testing.ReplayExtension; import google.registry.testing.TestOfyAndSql; import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Order; +import org.junit.jupiter.api.extension.RegisterExtension; /** Unit tests for {@link ContactTransferApproveFlow}. */ @DualDatabaseTest class ContactTransferApproveFlowTest extends ContactTransferFlowTestCase { + @Order(value = Order.DEFAULT - 2) + @RegisterExtension + final ReplayExtension replayExtension = ReplayExtension.createWithCompare(clock); + @BeforeEach void setUp() { setEppInput("contact_transfer_approve.xml");