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");