1
0
mirror of https://github.com/google/nomulus synced 2025-12-23 06:15:42 +00:00

Make nomulus update_recurrence command only fail on pending transfers (#2605)

It was failing when any kind of transfer data was present, even completed
transfer data. Note that completed transfer data persists on a domain
indefinitely until/unless a new transfer is requested.

BUG= http://b/377328244
This commit is contained in:
Ben McIlwain
2024-11-04 16:16:11 -05:00
committed by GitHub
parent 332f491ac7
commit 5603b91526
2 changed files with 24 additions and 1 deletions

View File

@@ -30,6 +30,7 @@ import google.registry.model.domain.Domain;
import google.registry.model.domain.DomainHistory; import google.registry.model.domain.DomainHistory;
import google.registry.model.reporting.HistoryEntry; import google.registry.model.reporting.HistoryEntry;
import google.registry.model.reporting.HistoryEntry.HistoryEntryId; import google.registry.model.reporting.HistoryEntry.HistoryEntryId;
import google.registry.model.transfer.TransferStatus;
import java.util.List; import java.util.List;
import java.util.Optional; import java.util.Optional;
import javax.annotation.Nullable; import javax.annotation.Nullable;
@@ -174,7 +175,8 @@ public class UpdateRecurrenceCommand extends ConfirmingCommand {
"Domain %s has already had a deletion time set", "Domain %s has already had a deletion time set",
domainName); domainName);
checkArgument( checkArgument(
domain.getTransferData().isEmpty(), domain.getTransferData().isEmpty()
|| domain.getTransferData().getTransferStatus() != TransferStatus.PENDING,
"Domain %s has a pending transfer: %s", "Domain %s has a pending transfer: %s",
domainName, domainName,
domain.getTransferData()); domain.getTransferData());

View File

@@ -33,6 +33,8 @@ import google.registry.model.billing.BillingRecurrence;
import google.registry.model.domain.Domain; import google.registry.model.domain.Domain;
import google.registry.model.domain.DomainHistory; import google.registry.model.domain.DomainHistory;
import google.registry.model.reporting.HistoryEntry; import google.registry.model.reporting.HistoryEntry;
import google.registry.model.transfer.DomainTransferData;
import google.registry.model.transfer.TransferStatus;
import java.util.Optional; import java.util.Optional;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import org.joda.money.CurrencyUnit; import org.joda.money.CurrencyUnit;
@@ -121,6 +123,25 @@ public class UpdateRecurrenceCommandTest extends CommandTestCase<UpdateRecurrenc
Money.of(CurrencyUnit.USD, 9001)); Money.of(CurrencyUnit.USD, 9001));
} }
@Test
void testSuccess_completedTransfer() throws Exception {
Domain domain = persistDomain();
domain =
persistResource(
domain
.asBuilder()
.setTransferData(
new DomainTransferData.Builder()
.setTransferStatus(TransferStatus.CLIENT_APPROVED)
.setPendingTransferExpirationTime(fakeClock.nowUtc().minusDays(8))
.build())
.build());
BillingRecurrence billingRecurrence = loadByKey(domain.getAutorenewBillingEvent());
runCommandForced("domain.tld", "--renewal_price_behavior", "NONPREMIUM");
assertNewBillingEventAndHistory(
billingRecurrence.getId(), RenewalPriceBehavior.NONPREMIUM, null);
}
@Test @Test
void testFailure_nonexistentDomain() { void testFailure_nonexistentDomain() {
assertThrows( assertThrows(