Restrict domain transfer periods to 1 year

It turns out that this ICANN policy appears to prohibit transfers with
registration extensions other than 1 year (section A.8):
https://www.icann.org/resources/pages/policy-2012-03-07-en

This is backed up by the practical fact that we've never seen a registrar
request a transfer for any period other than one year.

And removing the support for multi-year transfers vastly simplifies
transfer logic and eliminates a bunch of annoying corner cases.  Users
still can achieve the same thing by doing a 1-year transfer plus a
manual renewal afterwards for the remainder of the desired extension.

This change leaves in place lots of infrastructure to support multi-year
transfers that is now obsolete (e.g. TransferData.extendedRegistrationYears).
This should all be cleaned up, but it's a lower priority than fixing the
gap itself and insulating ourselves against needing to handle any real
multi-year transfer case.  Once this CL goes in, we can start ignoring
extendedRegistrationYears entirely because it'll always be 1 year, which
makes the cleanup process easier.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=150212864
This commit is contained in:
nickfelt 2017-03-15 10:56:18 -07:00 committed by Ben McIlwain
parent 852f1afb6c
commit f28104ad03
13 changed files with 97 additions and 42 deletions

View file

@ -373,7 +373,8 @@ public class EppLifecycleDomainTest extends EppTestCase {
}
@Test
public void testIgnoredTransferDuringAutoRenewPeriod_succeeds() throws Exception {
public void testTransfer_autoRenewGraceActive_onlyAtAutomaticTransferTime_getsSubsumed()
throws Exception {
// Register the domain as the first registrar.
assertCommandAndResponse("login_valid.xml", "login_response.xml");
createFakesite();
@ -382,8 +383,8 @@ public class EppLifecycleDomainTest extends EppTestCase {
// Request a transfer of the domain to the second registrar.
assertCommandAndResponse("login2_valid.xml", "login_response.xml");
assertCommandAndResponse(
"domain_transfer_request_2_years.xml",
"domain_transfer_response_2_years.xml",
"domain_transfer_request.xml",
"domain_transfer_response.xml",
DateTime.parse("2002-05-30T00:00:00Z"));
assertCommandAndResponse("logout.xml", "logout_response.xml");
@ -402,7 +403,8 @@ public class EppLifecycleDomainTest extends EppTestCase {
// Log back in as the second registrar and verify transfer details.
assertCommandAndResponse("login2_valid.xml", "login_response.xml");
// Verify that domain is in the transfer period now with expiration date two years out.
// Verify that domain is in the transfer period now with expiration date still one year out,
// since the transfer should subsume the autorenew that happened during the transfer window.
assertCommandAndResponse(
"domain_info_fakesite.xml",
"domain_info_response_fakesite_transfer_period.xml",
@ -425,8 +427,8 @@ public class EppLifecycleDomainTest extends EppTestCase {
// Request a transfer of the domain to the second registrar.
assertCommandAndResponse("login2_valid.xml", "login_response.xml");
assertCommandAndResponse(
"domain_transfer_request_2_years.xml",
"domain_transfer_response_2_years.xml",
"domain_transfer_request.xml",
"domain_transfer_response.xml",
DateTime.parse("2002-05-30T00:00:00Z"));
assertCommandAndResponse("logout.xml", "logout_response.xml");
@ -464,8 +466,8 @@ public class EppLifecycleDomainTest extends EppTestCase {
// Request a transfer of the domain to the second registrar.
assertCommandAndResponse("login2_valid.xml", "login_response.xml");
assertCommandAndResponse(
"domain_transfer_request_2_years.xml",
"domain_transfer_response_2_years.xml",
"domain_transfer_request.xml",
"domain_transfer_response.xml",
DateTime.parse("2002-05-30T00:00:00Z"));
assertCommandAndResponse("logout.xml", "logout_response.xml");