Enforce abuse WHOIS contact for REAL registrars when adding TLDs

We do not enforce this for non-REAL registrars or in any environment other than UNITTEST or PRODUCTION. This is similar but separate to [] since we can add allowed TLDs in either location.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=239510275
This commit is contained in:
gbrodman 2019-03-20 17:30:46 -07:00 committed by jianglai
parent 2a18e705a2
commit 4544aa1efe
6 changed files with 210 additions and 12 deletions

View file

@ -163,10 +163,11 @@ public class CreateRegistrarCommandTest extends CommandTestCase<CreateRegistrarC
}
@Test
public void testSuccess_allowedTlds() throws Exception {
public void testSuccess_allowedTldsInNonProductionEnvironment() throws Exception {
createTlds("xn--q9jyb4c", "foobar");
runCommandForced(
runCommandInEnvironment(
RegistryToolEnvironment.SANDBOX,
"--name=blobio",
"--password=some_password",
"--registrar_type=REAL",
@ -180,6 +181,34 @@ public class CreateRegistrarCommandTest extends CommandTestCase<CreateRegistrarC
"--state MA",
"--zip 00351",
"--cc US",
"--force",
"clientz");
Optional<Registrar> registrar = Registrar.loadByClientId("clientz");
assertThat(registrar).isPresent();
assertThat(registrar.get().getAllowedTlds()).containsExactly("xn--q9jyb4c", "foobar");
}
@Test
public void testSuccess_allowedTldsInPDT() throws Exception {
createTlds("xn--q9jyb4c", "foobar");
runCommandInEnvironment(
RegistryToolEnvironment.PRODUCTION,
"--name=blobio",
"--password=some_password",
"--registrar_type=PDT",
"--iana_id=9995",
"--allowed_tlds=xn--q9jyb4c,foobar",
"--billing_account_map=USD=123abc",
"--passcode=01234",
"--icann_referral_email=foo@bar.test",
"--street=\"123 Fake St\"",
"--city Fakington",
"--state MA",
"--zip 00351",
"--cc US",
"--force",
"clientz");
Optional<Registrar> registrar = Registrar.loadByClientId("clientz");
@ -468,7 +497,8 @@ public class CreateRegistrarCommandTest extends CommandTestCase<CreateRegistrarC
assertThrows(
IllegalArgumentException.class,
() ->
runCommandForced(
runCommandInEnvironment(
RegistryToolEnvironment.SANDBOX,
"--name=blobio",
"--password=some_password",
"--registrar_type=REAL",
@ -482,6 +512,7 @@ public class CreateRegistrarCommandTest extends CommandTestCase<CreateRegistrarC
"--state MA",
"--zip 00351",
"--cc US",
"--force",
"clientz"));
assertThat(thrown).hasMessageThat().contains("USD");
}
@ -884,6 +915,32 @@ public class CreateRegistrarCommandTest extends CommandTestCase<CreateRegistrarC
"clientz"));
}
@Test
public void testFailure_allowedTldsInRealWithoutAbuseContact() {
createTlds("xn--q9jyb4c", "foobar");
IllegalArgumentException thrown =
assertThrows(
IllegalArgumentException.class,
() ->
runCommandInEnvironment(
RegistryToolEnvironment.PRODUCTION,
"--name=blobio",
"--password=some_password",
"--registrar_type=REAL",
"--iana_id=8",
"--allowed_tlds=foobar",
"--passcode=01234",
"--icann_referral_email=foo@bar.test",
"--street=\"123 Fake St\"",
"--city Fakington",
"--state MA",
"--zip 00351",
"--cc US",
"--force",
"clientz"));
assertThat(thrown).hasMessageThat().startsWith("Cannot add allowed TLDs");
}
@Test
public void testFailure_invalidIpWhitelistFlag() {
assertThrows(

View file

@ -32,6 +32,7 @@ import com.google.common.collect.ImmutableSet;
import google.registry.model.registrar.Registrar;
import google.registry.model.registrar.Registrar.State;
import google.registry.model.registrar.Registrar.Type;
import google.registry.testing.AppEngineRule;
import google.registry.util.CidrAddressBlock;
import java.util.Optional;
import org.joda.money.CurrencyUnit;
@ -86,43 +87,94 @@ public class UpdateRegistrarCommandTest extends CommandTestCase<UpdateRegistrarC
@Test
public void testSuccess_allowedTlds() throws Exception {
persistWhoisAbuseContact();
createTlds("xn--q9jyb4c", "foobar");
persistResource(
loadRegistrar("NewRegistrar")
.asBuilder()
.setAllowedTlds(ImmutableSet.of("xn--q9jyb4c"))
.build());
runCommand("--allowed_tlds=xn--q9jyb4c,foobar", "--force", "NewRegistrar");
runCommandInEnvironment(
RegistryToolEnvironment.PRODUCTION,
"--allowed_tlds=xn--q9jyb4c,foobar",
"--force",
"NewRegistrar");
assertThat(loadRegistrar("NewRegistrar").getAllowedTlds())
.containsExactly("xn--q9jyb4c", "foobar");
}
@Test
public void testSuccess_addAllowedTlds() throws Exception {
persistWhoisAbuseContact();
createTlds("xn--q9jyb4c", "foo", "bar");
persistResource(
loadRegistrar("NewRegistrar")
.asBuilder()
.setAllowedTlds(ImmutableSet.of("xn--q9jyb4c"))
.build());
runCommand("--add_allowed_tlds=foo,bar", "--force", "NewRegistrar");
runCommandInEnvironment(
RegistryToolEnvironment.PRODUCTION,
"--add_allowed_tlds=foo,bar",
"--force",
"NewRegistrar");
assertThat(loadRegistrar("NewRegistrar").getAllowedTlds())
.containsExactly("xn--q9jyb4c", "foo", "bar");
}
@Test
public void testSuccess_addAllowedTldsWithDupes() throws Exception {
persistWhoisAbuseContact();
createTlds("xn--q9jyb4c", "foo", "bar");
persistResource(
loadRegistrar("NewRegistrar")
.asBuilder()
.setAllowedTlds(ImmutableSet.of("xn--q9jyb4c"))
.build());
runCommand("--add_allowed_tlds=xn--q9jyb4c,foo,bar", "--force", "NewRegistrar");
runCommandInEnvironment(
RegistryToolEnvironment.PRODUCTION,
"--add_allowed_tlds=xn--q9jyb4c,foo,bar",
"--force",
"NewRegistrar");
assertThat(loadRegistrar("NewRegistrar").getAllowedTlds())
.isEqualTo(ImmutableSet.of("xn--q9jyb4c", "foo", "bar"));
}
@Test
public void testSuccess_allowedTldsInNonProductionEnvironment() throws Exception {
createTlds("xn--q9jyb4c", "foobar");
persistResource(
loadRegistrar("NewRegistrar")
.asBuilder()
.setAllowedTlds(ImmutableSet.of("xn--q9jyb4c"))
.build());
runCommandInEnvironment(
RegistryToolEnvironment.SANDBOX,
"--allowed_tlds=xn--q9jyb4c,foobar",
"--force",
"NewRegistrar");
assertThat(loadRegistrar("NewRegistrar").getAllowedTlds())
.containsExactly("xn--q9jyb4c", "foobar");
}
@Test
public void testSuccess_allowedTldsInPdtRegistrar() throws Exception {
createTlds("xn--q9jyb4c", "foobar");
persistResource(
loadRegistrar("NewRegistrar")
.asBuilder()
.setType(Type.PDT)
.setIanaIdentifier(9995L)
.setAllowedTlds(ImmutableSet.of("xn--q9jyb4c"))
.build());
runCommandInEnvironment(
RegistryToolEnvironment.PRODUCTION,
"--allowed_tlds=xn--q9jyb4c,foobar",
"--force",
"NewRegistrar");
assertThat(loadRegistrar("NewRegistrar").getAllowedTlds())
.containsExactly("xn--q9jyb4c", "foobar");
}
@Test
public void testSuccess_ipWhitelist() throws Exception {
assertThat(loadRegistrar("NewRegistrar").getIpAddressWhitelist()).isEmpty();
@ -531,6 +583,36 @@ public class UpdateRegistrarCommandTest extends CommandTestCase<UpdateRegistrarC
runCommand("--allowed_tlds=bar", "--add_allowed_tlds=foo", "--force", "NewRegistrar"));
}
@Test
public void testFailure_setAllowedTldsWithoutAbuseContact() {
createTlds("bar");
IllegalArgumentException thrown =
assertThrows(
IllegalArgumentException.class,
() ->
runCommandInEnvironment(
RegistryToolEnvironment.PRODUCTION,
"--allowed_tlds=bar",
"--force",
"TheRegistrar"));
assertThat(thrown).hasMessageThat().startsWith("Cannot modify allowed TLDs");
}
@Test
public void testFailure_addAllowedTldsWithoutAbuseContact() {
createTlds("bar");
IllegalArgumentException thrown =
assertThrows(
IllegalArgumentException.class,
() ->
runCommandInEnvironment(
RegistryToolEnvironment.PRODUCTION,
"--add_allowed_tlds=bar",
"--force",
"TheRegistrar"));
assertThat(thrown).hasMessageThat().startsWith("Cannot modify allowed TLDs");
}
@Test
public void testFailure_invalidIpWhitelist() {
assertThrows(
@ -732,4 +814,12 @@ public class UpdateRegistrarCommandTest extends CommandTestCase<UpdateRegistrarC
runCommand("--po_number=null", "--force", "NewRegistrar");
assertThat(loadRegistrar("NewRegistrar").getPoNumber()).isEmpty();
}
private void persistWhoisAbuseContact() {
persistResource(
AppEngineRule.makeRegistrarContact1()
.asBuilder()
.setVisibleInDomainWhoisAsAbuse(true)
.build());
}
}