1717import static com .google .common .truth .Truth .assertThat ;
1818import static google .registry .testing .DatabaseHelper .createTld ;
1919import static google .registry .testing .DatabaseHelper .persistResource ;
20+ import static google .registry .testing .FullFieldsTestEntityHelper .makeAndPersistHost ;
21+ import static google .registry .testing .FullFieldsTestEntityHelper .makePunycodedHost ;
2022import static google .registry .testing .FullFieldsTestEntityHelper .makeRegistrar ;
2123import static google .registry .testing .GsonSubject .assertAboutJson ;
2224import static org .mockito .Mockito .verify ;
2729import google .registry .rdap .RdapMetrics .WildcardType ;
2830import google .registry .rdap .RdapSearchResults .IncompletenessWarningType ;
2931import google .registry .request .Action ;
30- import google .registry .testing .FullFieldsTestEntityHelper ;
3132import java .util .Optional ;
3233import org .junit .jupiter .api .BeforeEach ;
3334import org .junit .jupiter .api .Test ;
@@ -43,29 +44,25 @@ class RdapNameserverActionTest extends RdapActionBaseTestCase<RdapNameserverActi
4344 void beforeEach () {
4445 // normal
4546 createTld ("lol" );
46- FullFieldsTestEntityHelper .makeAndPersistHost (
47- "ns1.cat.lol" , "1.2.3.4" , clock .nowUtc ().minusYears (1 ));
47+ makeAndPersistHost ("ns1.cat.lol" , "1.2.3.4" , clock .nowUtc ().minusYears (1 ));
4848 // idn
4949 createTld ("xn--q9jyb4c" );
50- FullFieldsTestEntityHelper . makeAndPersistHost (
50+ makeAndPersistHost (
5151 "ns1.cat.xn--q9jyb4c" , "bad:f00d:cafe:0:0:0:15:beef" , clock .nowUtc ().minusYears (1 ));
5252 // multilevel
5353 createTld ("1.tld" );
54- FullFieldsTestEntityHelper .makeAndPersistHost (
55- "ns1.domain.1.tld" , "5.6.7.8" , clock .nowUtc ().minusYears (1 ));
54+ makeAndPersistHost ("ns1.domain.1.tld" , "5.6.7.8" , clock .nowUtc ().minusYears (1 ));
5655 // deleted
5756 persistResource (
58- FullFieldsTestEntityHelper .makeAndPersistHost (
59- "nsdeleted.cat.lol" , "1.2.3.4" , clock .nowUtc ().minusYears (1 ))
57+ makeAndPersistHost ("nsdeleted.cat.lol" , "1.2.3.4" , clock .nowUtc ().minusYears (1 ))
6058 .asBuilder ()
6159 .setDeletionTime (clock .nowUtc ().minusMonths (1 ))
6260 .build ());
6361 // other registrar
6462 persistResource (
6563 makeRegistrar ("otherregistrar" , "Yes Virginia <script>" , Registrar .State .ACTIVE , 102L ));
6664 // external
67- FullFieldsTestEntityHelper .makeAndPersistHost (
68- "ns1.domain.external" , "9.10.11.12" , clock .nowUtc ().minusYears (1 ));
65+ makeAndPersistHost ("ns1.domain.external" , "9.10.11.12" , clock .nowUtc ().minusYears (1 ));
6966 }
7067
7168 @ Test
@@ -80,6 +77,14 @@ void testInvalidNameserver_returns400() {
8077 assertThat (response .getStatus ()).isEqualTo (400 );
8178 }
8279
80+ @ Test
81+ void testInvalidNameserver_domainWithHyphenOn3And4_returns400 () {
82+ assertAboutJson ()
83+ .that (generateActualJson ("ns1.zz--main-2166.lol" ))
84+ .isEqualTo (generateExpectedJsonError ("Not a valid nameserver" , 400 ));
85+ assertThat (response .getStatus ()).isEqualTo (400 );
86+ }
87+
8388 @ Test
8489 void testUnknownNameserver_returns404 () {
8590 assertAboutJson ()
@@ -101,6 +106,21 @@ void testValidNameserver_works() {
101106 assertThat (response .getStatus ()).isEqualTo (200 );
102107 }
103108
109+ @ Test
110+ void testNameserver_tldTithHyphenOn3And4_works () {
111+ createTld ("zz--main-2166" );
112+ persistResource (makePunycodedHost ("ns1.cat.zz--main-2166" , "1.2.3.4" , null , "TheRegistrar" ));
113+ assertAboutJson ()
114+ .that (generateActualJson ("ns1.cat.zz--main-2166" ))
115+ .isEqualTo (
116+ addPermanentBoilerplateNotices (
117+ jsonFileBuilder ()
118+ .addNameserver ("ns1.cat.zz--main-2166" , "ns1.cat.zz--main-2166" , "F-ROID" )
119+ .putAll ("ADDRESSTYPE" , "v4" , "ADDRESS" , "1.2.3.4" , "STATUS" , "active" )
120+ .load ("rdap_host.json" )));
121+ assertThat (response .getStatus ()).isEqualTo (200 );
122+ }
123+
104124 @ Test
105125 void testTrailingDot_getsIgnored () {
106126 assertAboutJson ()
0 commit comments