diff --git a/core/src/main/java/google/registry/flows/domain/DomainPricingLogic.java b/core/src/main/java/google/registry/flows/domain/DomainPricingLogic.java index 55d4fb8ba..4f22cc621 100644 --- a/core/src/main/java/google/registry/flows/domain/DomainPricingLogic.java +++ b/core/src/main/java/google/registry/flows/domain/DomainPricingLogic.java @@ -287,6 +287,9 @@ public final class DomainPricingLogic { || token.getRenewalPriceBehavior().equals(RenewalPriceBehavior.NONPREMIUM)) { return tld.getStandardRenewCost(dateTime).multipliedBy(years); } + if (token.getRenewalPriceBehavior().equals(RenewalPriceBehavior.SPECIFIED)) { + return token.getRenewalPrice().get(); + } } return getDomainCostWithDiscount( domainPrices.isPremium(), diff --git a/core/src/test/java/google/registry/flows/domain/DomainPricingLogicTest.java b/core/src/test/java/google/registry/flows/domain/DomainPricingLogicTest.java index c676539e8..c0c6dd741 100644 --- a/core/src/test/java/google/registry/flows/domain/DomainPricingLogicTest.java +++ b/core/src/test/java/google/registry/flows/domain/DomainPricingLogicTest.java @@ -1242,4 +1242,23 @@ public class DomainPricingLogicTest { .addFeeOrCredit(Fee.create(new BigDecimal("120.00"), CREATE, true)) .build()); } + + @Test + void testDomainRenewPrice_specifiedToken() throws Exception { + AllocationToken allocationToken = + persistResource( + new AllocationToken.Builder() + .setToken("abc123") + .setTokenType(SINGLE_USE) + .setDomainName("premium.example") + .setRenewalPriceBehavior(SPECIFIED) + .setRenewalPrice(Money.of(USD, 5)) + .build()); + assertThat( + domainPricingLogic + .getRenewPrice( + tld, "premium.example", clock.nowUtc(), 1, null, Optional.of(allocationToken)) + .getRenewCost()) + .isEqualTo(Money.of(USD, 5)); + } }