Skip to content

Commit 84491fd

Browse files
authored
Don't allow underscores in TLD ROID suffixes (#2913)
Per ICANN it's a disallowed character.
1 parent 0519e2f commit 84491fd

File tree

8 files changed

+26
-18
lines changed

8 files changed

+26
-18
lines changed

core/src/main/java/google/registry/model/tld/Tld.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1034,12 +1034,13 @@ public Builder setEapFeeSchedule(ImmutableSortedMap<DateTime, Money> eapFeeSched
10341034
return this;
10351035
}
10361036

1037-
public static final Pattern ROID_SUFFIX_PATTERN = Pattern.compile("^[A-Z\\d_]{1,8}$");
1037+
public static final Pattern ROID_SUFFIX_PATTERN = Pattern.compile("^[A-Z\\d]{1,8}$");
10381038

10391039
public Builder setRoidSuffix(String roidSuffix) {
10401040
checkArgument(
10411041
ROID_SUFFIX_PATTERN.matcher(roidSuffix).matches(),
1042-
"ROID suffix must be in format %s",
1042+
"ROID suffix %s must be in format %s",
1043+
roidSuffix,
10431044
ROID_SUFFIX_PATTERN.pattern());
10441045
getInstance().roidSuffix = roidSuffix;
10451046
return this;

core/src/test/java/google/registry/beam/billing/InvoicingPipelineTest.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -335,7 +335,7 @@ void testSuccess_readFromCloudSqlMissingPAK() throws Exception {
335335
.build();
336336
persistResource(registrar);
337337
Tld test =
338-
newTld("test", "_TEST", ImmutableSortedMap.of(START_OF_TIME, GENERAL_AVAILABILITY))
338+
newTld("test", "TEST", ImmutableSortedMap.of(START_OF_TIME, GENERAL_AVAILABILITY))
339339
.asBuilder()
340340
.setInvoicingEnabled(true)
341341
.build();
@@ -391,7 +391,7 @@ void testSuccess_makeCloudSqlQuery() throws Exception {
391391
// Test that comments are removed from the .sql file correctly
392392
assertThat(InvoicingPipeline.makeCloudSqlQuery("2017-10"))
393393
.isEqualTo(
394-
"""
394+
"""
395395
396396
SELECT b, r FROM BillingEvent b
397397
JOIN Registrar r ON b.clientId = r.registrarId
@@ -449,13 +449,13 @@ private static void setupCloudSql() {
449449
persistResource(registrar3);
450450

451451
Tld test =
452-
newTld("test", "_TEST", ImmutableSortedMap.of(START_OF_TIME, GENERAL_AVAILABILITY))
452+
newTld("test", "TEST", ImmutableSortedMap.of(START_OF_TIME, GENERAL_AVAILABILITY))
453453
.asBuilder()
454454
.setInvoicingEnabled(true)
455455
.build();
456456
persistResource(test);
457457
Tld hello =
458-
newTld("hello", "_HELLO", ImmutableSortedMap.of(START_OF_TIME, GENERAL_AVAILABILITY))
458+
newTld("hello", "HELLO", ImmutableSortedMap.of(START_OF_TIME, GENERAL_AVAILABILITY))
459459
.asBuilder()
460460
.setInvoicingEnabled(true)
461461
.build();

core/src/test/java/google/registry/beam/common/RegistryJpaReadTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@ void readWithStringTypedQuery() {
163163
}
164164

165165
private void setupForJoinQuery() {
166-
Tld registry = newTld("com", "ABCD_APP");
166+
Tld registry = newTld("com", "ABCDAPP");
167167
Registrar registrar =
168168
makeRegistrar1()
169169
.asBuilder()

core/src/test/java/google/registry/model/tld/TldTest.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -751,7 +751,9 @@ void testFailure_roidSuffixTooLong() {
751751
assertThrows(
752752
IllegalArgumentException.class,
753753
() -> Tld.get("tld").asBuilder().setRoidSuffix("123456789"));
754-
assertThat(e).hasMessageThat().isEqualTo("ROID suffix must be in format ^[A-Z\\d_]{1,8}$");
754+
assertThat(e)
755+
.hasMessageThat()
756+
.isEqualTo("ROID suffix 123456789 must be in format ^[A-Z\\d]{1,8}$");
755757
}
756758

757759
@Test
@@ -766,6 +768,12 @@ void testFailure_roidSuffixContainsInvalidCharacters() {
766768
IllegalArgumentException.class, () -> Tld.get("tld").asBuilder().setRoidSuffix("ABC-DEF"));
767769
}
768770

771+
@Test
772+
void testFailure_roidSuffixContainsUnderscores() {
773+
assertThrows(
774+
IllegalArgumentException.class, () -> Tld.get("tld").asBuilder().setRoidSuffix("ABC_DEF"));
775+
}
776+
769777
@Test
770778
void testSuccess_setDefaultPromoTokens() {
771779
Tld registry = Tld.get("tld");

core/src/test/java/google/registry/rdap/RdapDomainActionTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -246,7 +246,7 @@ void testMultilevelDomain_works() {
246246
.isEqualTo(
247247
addDomainBoilerplateNotices(
248248
jsonFileBuilder()
249-
.addDomain("cat.1.tld", "D-1_TLD")
249+
.addDomain("cat.1.tld", "D-1TLD")
250250
.addNameserver("ns1.cat.lol", "2-ROID")
251251
.addNameserver("ns2.cat.lol", "4-ROID")
252252
.addRegistrar("Multilevel Registrar")

core/src/test/java/google/registry/rdap/RdapDomainSearchActionTest.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -732,7 +732,7 @@ void testDomainMatch_cat_1_test_found() {
732732
RequestType.NAME,
733733
"cat.1.test",
734734
jsonFileBuilder()
735-
.addDomain("cat.1.test", "1B-1_TEST")
735+
.addDomain("cat.1.test", "1B-1TEST")
736736
.addRegistrar("1.test")
737737
.addNameserver("ns1.cat.1.test", "17-ROID")
738738
.addNameserver("ns2.cat.2.test", "19-ROID")
@@ -746,7 +746,7 @@ void testDomainMatch_castar_1_test_found() {
746746
RequestType.NAME,
747747
"ca*.1.test",
748748
jsonFileBuilder()
749-
.addDomain("cat.1.test", "1B-1_TEST")
749+
.addDomain("cat.1.test", "1B-1TEST")
750750
.addRegistrar("1.test")
751751
.addNameserver("ns1.cat.1.test", "17-ROID")
752752
.addNameserver("ns2.cat.2.test", "19-ROID")
@@ -822,7 +822,7 @@ void testDomainMatch_cat_star_found_sql() {
822822
.that(generateActualJson(RequestType.NAME, "cat.*"))
823823
.isEqualTo(
824824
jsonFileBuilder()
825-
.addDomain("cat.1.test", "1B-1_TEST")
825+
.addDomain("cat.1.test", "1B-1TEST")
826826
.addDomain("cat.example", "F-EXAMPLE")
827827
.addDomain("cat.lol", "6-LOL")
828828
.addDomain("cat.みんな", "15-Q9JYB4C")
@@ -860,7 +860,7 @@ void testDomainMatch_catstar_found_sql() {
860860
.that(generateActualJson(RequestType.NAME, "cat*"))
861861
.isEqualTo(
862862
jsonFileBuilder()
863-
.addDomain("cat.1.test", "1B-1_TEST")
863+
.addDomain("cat.1.test", "1B-1TEST")
864864
.addDomain("cat.example", "F-EXAMPLE")
865865
.addDomain("cat.lol", "6-LOL")
866866
.addDomain("cat.みんな", "15-Q9JYB4C")
@@ -1284,7 +1284,7 @@ void testNameserverMatch_ns1_cat_1_test_found() {
12841284
RequestType.NS_LDH_NAME,
12851285
"ns1.cat.1.test",
12861286
jsonFileBuilder()
1287-
.addDomain("cat.1.test", "1B-1_TEST")
1287+
.addDomain("cat.1.test", "1B-1TEST")
12881288
.addRegistrar("1.test")
12891289
.addNameserver("ns1.cat.1.test", "17-ROID")
12901290
.addNameserver("ns2.cat.2.test", "19-ROID")
@@ -1298,7 +1298,7 @@ void testNameserverMatch_nsstar_cat_1_test_found() {
12981298
RequestType.NS_LDH_NAME,
12991299
"ns*.cat.1.test",
13001300
jsonFileBuilder()
1301-
.addDomain("cat.1.test", "1B-1_TEST")
1301+
.addDomain("cat.1.test", "1B-1TEST")
13021302
.addRegistrar("1.test")
13031303
.addNameserver("ns1.cat.1.test", "17-ROID")
13041304
.addNameserver("ns2.cat.2.test", "19-ROID")

core/src/test/java/google/registry/testing/DatabaseHelper.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -420,8 +420,7 @@ public static Tld createTld(String tld, TldState tldState) {
420420
public static Tld createTld(String tld, ImmutableSortedMap<DateTime, TldState> tldStates) {
421421
// Coerce the TLD string into a valid ROID suffix.
422422
String roidSuffix =
423-
Ascii.toUpperCase(tld.replaceFirst(ACE_PREFIX_REGEX, "").replace('.', '_'))
424-
.replace('-', '_');
423+
Ascii.toUpperCase(tld.replaceFirst(ACE_PREFIX_REGEX, "").replace(".", "")).replace("-", "");
425424
return createTld(
426425
tld, roidSuffix.length() > 8 ? roidSuffix.substring(0, 8) : roidSuffix, tldStates);
427426
}

core/src/test/java/google/registry/tools/ConfigureTldCommandTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -368,7 +368,7 @@ void testFailure_invalidRoidSuffix() throws Exception {
368368
"TLDSTR", name, "TLDUNICODE", name, "ROIDSUFFIX", "TLLLLLLLLLLLLLLLLLLLLLLD")));
369369
IllegalArgumentException thrown =
370370
assertThrows(IllegalArgumentException.class, () -> runCommandForced("--input=" + tldFile));
371-
assertThat(thrown.getMessage()).isEqualTo("ROID suffix must be in format ^[A-Z\\d_]{1,8}$");
371+
assertThat(thrown.getMessage()).isEqualTo("ROID suffix must be in format ^[A-Z\\d]{1,8}$");
372372
}
373373

374374
@Test

0 commit comments

Comments
 (0)