Revise RDAP domain action tests to check results more completely

Also fixed a bug discovered as a result of the more complete testing!

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=171156304
This commit is contained in:
mountford 2017-10-05 08:27:35 -07:00 committed by jianglai
parent 373e174deb
commit 07e5536988
18 changed files with 1920 additions and 279 deletions

View file

@ -210,8 +210,10 @@ public class RdapDomainSearchAction extends RdapActionBase {
}
// Query the domains directly, rather than the foreign keys, because then we have an index on
// TLD if we need it.
int numFetched = 0;
for (DomainResource domain :
query.limit(RESULT_SET_SIZE_SCALING_FACTOR * rdapResultSetMaxSize)) {
numFetched++;
if (EppResourceUtils.isActive(domain, now)) {
if (domainList.size() >= rdapResultSetMaxSize) {
return makeSearchResults(
@ -220,7 +222,13 @@ public class RdapDomainSearchAction extends RdapActionBase {
domainList.add(domain);
}
}
return makeSearchResults(domainList, now);
return makeSearchResults(
domainList,
((numFetched == RESULT_SET_SIZE_SCALING_FACTOR * rdapResultSetMaxSize)
&& (domainList.size() < rdapResultSetMaxSize))
? IncompletenessWarningType.MIGHT_BE_INCOMPLETE
: IncompletenessWarningType.NONE,
now);
}
}

View file

@ -18,6 +18,7 @@ java_library(
"//java/google/registry/request",
"//java/google/registry/request/auth",
"//java/google/registry/ui/server/registrar",
"//java/google/registry/util",
"//javatests/google/registry/testing",
"//third_party/java/objectify:objectify-v4_1",
"@com_google_appengine_api_1_0_sdk//:testonly",

View file

@ -53,6 +53,7 @@ import java.util.Map;
import javax.annotation.Nullable;
import javax.servlet.http.HttpServletRequest;
import org.joda.time.DateTime;
import org.json.simple.JSONObject;
import org.json.simple.JSONValue;
import org.junit.Before;
import org.junit.Ignore;
@ -264,6 +265,14 @@ public class RdapDomainActionTest {
substitutionsBuilder.put("PUNYCODENAME", (punycodeName == null) ? name : punycodeName);
substitutionsBuilder.put("HANDLE", handle);
substitutionsBuilder.put("TYPE", "domain name");
substitutionsBuilder.put("NAMESERVER1ROID", "8-ROID");
substitutionsBuilder.put("NAMESERVER1NAME", "ns1.cat.lol");
substitutionsBuilder.put("NAMESERVER1PUNYCODENAME", "ns1.cat.lol");
substitutionsBuilder.put("NAMESERVER1ADDRESS", "1.2.3.4");
substitutionsBuilder.put("NAMESERVER2ROID", "A-ROID");
substitutionsBuilder.put("NAMESERVER2NAME", "ns2.cat.lol");
substitutionsBuilder.put("NAMESERVER2PUNYCODENAME", "ns2.cat.lol");
substitutionsBuilder.put("NAMESERVER2ADDRESS", "bad:f00d:cafe::15:beef");
if (contactRoids != null) {
for (int i = 0; i < contactRoids.size(); i++) {
substitutionsBuilder.put("CONTACT" + (i + 1) + "ROID", contactRoids.get(i));
@ -297,7 +306,7 @@ public class RdapDomainActionTest {
: RdapTestHelper.ContactNoticeType.NONE,
map.get("notices"));
RdapTestHelper.addDomainBoilerplateRemarks(builder, false, map.get("remarks"));
obj = builder.build();
obj = new JSONObject(builder.build());
}
return obj;
}
@ -471,7 +480,7 @@ public class RdapDomainActionTest {
generateExpectedJsonWithTopLevelEntries(
"cat.1.tld",
null,
"1D-1.TLD",
"1D-1_TLD",
ImmutableList.of("19-ROID", "1B-ROID", "17-ROID"),
"rdap_domain.json"));
assertThat(response.getStatus()).isEqualTo(200);

View file

@ -39,19 +39,19 @@
"active",
"associated"
],
"handle": "8-ROID",
"handle": "%NAMESERVER1ROID%",
"links": [
{
"href": "https://example.com/rdap/nameserver/ns1.cat.lol",
"href": "https://example.com/rdap/nameserver/%NAMESERVER1NAME%",
"type": "application/rdap+json",
"rel": "self",
"value": "https://example.com/rdap/nameserver/ns1.cat.lol"
"value": "https://example.com/rdap/nameserver/%NAMESERVER1NAME%"
}
],
"ldhName": "ns1.cat.lol",
"ldhName": "%NAMESERVER1NAME%",
"ipAddresses": {
"v4": [
"1.2.3.4"
"%NAMESERVER1ADDRESS%"
]
},
"events": [
@ -72,19 +72,19 @@
"active",
"associated"
],
"handle": "A-ROID",
"handle": "%NAMESERVER2ROID%",
"links": [
{
"href": "https://example.com/rdap/nameserver/ns2.cat.lol",
"href": "https://example.com/rdap/nameserver/%NAMESERVER2NAME%",
"type": "application/rdap+json",
"rel": "self",
"value": "https://example.com/rdap/nameserver/ns2.cat.lol"
"value": "https://example.com/rdap/nameserver/%NAMESERVER2NAME%"
}
],
"ldhName": "ns2.cat.lol",
"ldhName": "%NAMESERVER2NAME%",
"ipAddresses": {
"v6": [
"bad:f00d:cafe::15:beef"
"%NAMESERVER2ADDRESS%"
]
},
"events": [

View file

@ -0,0 +1,387 @@
{
"status": [
"client delete prohibited",
"client renew prohibited",
"client transfer prohibited",
"server update prohibited"
],
"handle": "%HANDLE%",
"links": [
{
"href": "https://example.com/rdap/domain/%NAME%",
"type": "application/rdap+json",
"rel": "self",
"value": "https://example.com/rdap/domain/%NAME%"
}
],
"events": [
{
"eventAction": "registration",
"eventActor": "foo",
"eventDate": "2000-01-01T00:00:00.000Z"
},
{
"eventAction": "expiration",
"eventDate": "2110-10-08T00:44:59.000Z"
},
{
"eventAction": "last changed",
"eventDate": "2009-05-29T20:13:00.000Z"
},
{
"eventAction": "last update of RDAP database",
"eventDate": "2000-01-01T00:00:00.000Z"
}
],
"nameservers": [
{
"status": [
"active",
"associated"
],
"handle": "%NAMESERVER1ROID%",
"links": [
{
"href": "https://example.com/rdap/nameserver/%NAMESERVER1NAME%",
"type": "application/rdap+json",
"rel": "self",
"value": "https://example.com/rdap/nameserver/%NAMESERVER1NAME%"
}
],
"ldhName": "%NAMESERVER1NAME%",
"ipAddresses": {
"v4": [
"%NAMESERVER1ADDRESS%"
]
},
"events": [
{
"eventAction": "registration",
"eventActor": "foo",
"eventDate": "1999-01-01T00:00:00.000Z"
},
{
"eventAction": "last update of RDAP database",
"eventDate": "2000-01-01T00:00:00.000Z"
}
],
"objectClassName": "nameserver"
},
{
"status": [
"active",
"associated"
],
"handle": "%NAMESERVER2ROID%",
"links": [
{
"href": "https://example.com/rdap/nameserver/%NAMESERVER2NAME%",
"type": "application/rdap+json",
"rel": "self",
"value": "https://example.com/rdap/nameserver/%NAMESERVER2NAME%"
}
],
"ldhName": "%NAMESERVER2NAME%",
"ipAddresses": {
"v6": [
"%NAMESERVER2ADDRESS%"
]
},
"events": [
{
"eventAction": "registration",
"eventActor": "foo",
"eventDate": "1998-01-01T00:00:00.000Z"
},
{
"eventAction": "last update of RDAP database",
"eventDate": "2000-01-01T00:00:00.000Z"
}
],
"objectClassName": "nameserver"
}
],
"ldhName": "%NAME%",
"entities": [
{
"status": [
"active",
"associated"
],
"handle": "%CONTACT1ROID%",
"roles": [
"administrative"
],
"links": [
{
"href": "https://example.com/rdap/entity/%CONTACT1ROID%",
"type": "application/rdap+json",
"rel": "self",
"value": "https://example.com/rdap/entity/%CONTACT1ROID%"
}
],
"events": [
{
"eventAction": "registration",
"eventActor": "foo",
"eventDate": "1998-01-01T00:00:00.000Z"
},
{
"eventAction": "last update of RDAP database",
"eventDate": "2000-01-01T00:00:00.000Z"
}
],
"objectClassName": "entity",
"vcardArray": [
"vcard",
[
[
"version",
{},
"text",
"4.0"
],
[
"fn",
{},
"text",
"Sieglinde"
],
[
"org",
{},
"text",
"GOOGLE INCORPORATED <script>"
],
[
"adr",
{},
"text",
[
"",
"",
"123 Example Boulevard <script>",
"KOKOMO",
"BM",
"31337",
"United States"
]
],
[
"tel",
{
"type": [
"voice"
]
},
"uri",
"tel:+1.2126660420"
],
[
"tel",
{
"type": [
"fax"
]
},
"uri",
"tel:+1.2126660420"
],
[
"email",
{},
"text",
"sieglinde@cat2.lol"
]
]
]
},
{
"status": [
"active",
"associated"
],
"handle": "%CONTACT2ROID%",
"roles": [
"technical"
],
"links": [
{
"href": "https://example.com/rdap/entity/%CONTACT2ROID%",
"type": "application/rdap+json",
"rel": "self",
"value": "https://example.com/rdap/entity/%CONTACT2ROID%"
}
],
"events": [
{
"eventAction": "registration",
"eventActor": "foo",
"eventDate": "1997-01-01T00:00:00.000Z"
},
{
"eventAction": "last update of RDAP database",
"eventDate": "2000-01-01T00:00:00.000Z"
}
],
"objectClassName": "entity",
"vcardArray": [
"vcard",
[
[
"version",
{},
"text",
"4.0"
],
[
"fn",
{},
"text",
"Siegfried"
],
[
"org",
{},
"text",
"GOOGLE INCORPORATED <script>"
],
[
"adr",
{},
"text",
[
"",
"",
"123 Example Boulevard <script>",
"KOKOMO",
"BM",
"31337",
"United States"
]
],
[
"tel",
{
"type": [
"voice"
]
},
"uri",
"tel:+1.2126660420"
],
[
"tel",
{
"type": [
"fax"
]
},
"uri",
"tel:+1.2126660420"
],
[
"email",
{},
"text",
"siegfried@cat2.lol"
]
]
]
},
{
"status": [
"active",
"associated"
],
"handle": "%CONTACT3ROID%",
"roles": [
"registrant"
],
"links": [
{
"href": "https://example.com/rdap/entity/%CONTACT3ROID%",
"type": "application/rdap+json",
"rel": "self",
"value": "https://example.com/rdap/entity/%CONTACT3ROID%"
}
],
"events": [
{
"eventAction": "registration",
"eventActor": "foo",
"eventDate": "1999-01-01T00:00:00.000Z"
},
{
"eventAction": "last update of RDAP database",
"eventDate": "2000-01-01T00:00:00.000Z"
}
],
"objectClassName": "entity",
"vcardArray": [
"vcard",
[
[
"version",
{},
"text",
"4.0"
],
[
"fn",
{},
"text",
"Siegmund"
],
[
"org",
{},
"text",
"GOOGLE INCORPORATED <script>"
],
[
"adr",
{},
"text",
[
"",
"",
"123 Example Boulevard <script>",
"KOKOMO",
"BM",
"31337",
"United States"
]
],
[
"tel",
{
"type": [
"voice"
]
},
"uri",
"tel:+1.2126660420"
],
[
"tel",
{
"type": [
"fax"
]
},
"uri",
"tel:+1.2126660420"
],
[
"email",
{},
"text",
"siegmund@cat2.lol"
]
]
]
}
],
"objectClassName": "domain"
}

View file

@ -0,0 +1,393 @@
{
"status": [
"client delete prohibited",
"client renew prohibited",
"client transfer prohibited",
"removed",
"server update prohibited"
],
"handle": "%HANDLE%",
"links": [
{
"href": "https://example.com/rdap/domain/%NAME%",
"type": "application/rdap+json",
"rel": "self",
"value": "https://example.com/rdap/domain/%NAME%"
}
],
"events": [
{
"eventAction": "registration",
"eventActor": "foo",
"eventDate": "1999-01-01T00:00:00.000Z"
},
{
"eventAction": "deletion",
"eventActor": "foo",
"eventDate": "1999-07-01T00:00:00.000Z"
},
{
"eventAction": "expiration",
"eventDate": "2110-10-08T00:44:59.000Z"
},
{
"eventAction": "last changed",
"eventDate": "2009-05-29T20:13:00.000Z"
},
{
"eventAction": "last update of RDAP database",
"eventDate": "2000-01-01T00:00:00.000Z"
}
],
"nameservers": [
{
"status": [
"active",
"associated"
],
"handle": "%NAMESERVER1ROID%",
"links": [
{
"href": "https://example.com/rdap/nameserver/%NAMESERVER1NAME%",
"type": "application/rdap+json",
"rel": "self",
"value": "https://example.com/rdap/nameserver/%NAMESERVER1NAME%"
}
],
"ldhName": "%NAMESERVER1NAME%",
"ipAddresses": {
"v4": [
"%NAMESERVER1ADDRESS%"
]
},
"events": [
{
"eventAction": "registration",
"eventActor": "foo",
"eventDate": "1999-01-01T00:00:00.000Z"
},
{
"eventAction": "last update of RDAP database",
"eventDate": "2000-01-01T00:00:00.000Z"
}
],
"objectClassName": "nameserver"
},
{
"status": [
"active",
"associated"
],
"handle": "%NAMESERVER2ROID%",
"links": [
{
"href": "https://example.com/rdap/nameserver/%NAMESERVER2NAME%",
"type": "application/rdap+json",
"rel": "self",
"value": "https://example.com/rdap/nameserver/%NAMESERVER2NAME%"
}
],
"ldhName": "%NAMESERVER2NAME%",
"ipAddresses": {
"v6": [
"%NAMESERVER2ADDRESS%"
]
},
"events": [
{
"eventAction": "registration",
"eventActor": "foo",
"eventDate": "1998-01-01T00:00:00.000Z"
},
{
"eventAction": "last update of RDAP database",
"eventDate": "2000-01-01T00:00:00.000Z"
}
],
"objectClassName": "nameserver"
}
],
"ldhName": "%NAME%",
"entities": [
{
"status": [
"active",
"associated"
],
"handle": "%CONTACT1ROID%",
"roles": [
"administrative"
],
"links": [
{
"href": "https://example.com/rdap/entity/%CONTACT1ROID%",
"type": "application/rdap+json",
"rel": "self",
"value": "https://example.com/rdap/entity/%CONTACT1ROID%"
}
],
"events": [
{
"eventAction": "registration",
"eventActor": "foo",
"eventDate": "1998-01-01T00:00:00.000Z"
},
{
"eventAction": "last update of RDAP database",
"eventDate": "2000-01-01T00:00:00.000Z"
}
],
"objectClassName": "entity",
"vcardArray": [
"vcard",
[
[
"version",
{},
"text",
"4.0"
],
[
"fn",
{},
"text",
"Santa Claus"
],
[
"org",
{},
"text",
"GOOGLE INCORPORATED <script>"
],
[
"adr",
{},
"text",
[
"",
"",
"123 Example Boulevard <script>",
"KOKOMO",
"BM",
"31337",
"United States"
]
],
[
"tel",
{
"type": [
"voice"
]
},
"uri",
"tel:+1.2126660420"
],
[
"tel",
{
"type": [
"fax"
]
},
"uri",
"tel:+1.2126660420"
],
[
"email",
{},
"text",
"BOFH@cat.lol"
]
]
]
},
{
"status": [
"active",
"associated"
],
"handle": "%CONTACT2ROID%",
"roles": [
"technical"
],
"links": [
{
"href": "https://example.com/rdap/entity/%CONTACT2ROID%",
"type": "application/rdap+json",
"rel": "self",
"value": "https://example.com/rdap/entity/%CONTACT2ROID%"
}
],
"events": [
{
"eventAction": "registration",
"eventActor": "foo",
"eventDate": "1997-01-01T00:00:00.000Z"
},
{
"eventAction": "last update of RDAP database",
"eventDate": "2000-01-01T00:00:00.000Z"
}
],
"objectClassName": "entity",
"vcardArray": [
"vcard",
[
[
"version",
{},
"text",
"4.0"
],
[
"fn",
{},
"text",
"The Raven"
],
[
"org",
{},
"text",
"GOOGLE INCORPORATED <script>"
],
[
"adr",
{},
"text",
[
"",
"",
"123 Example Boulevard <script>",
"KOKOMO",
"BM",
"31337",
"United States"
]
],
[
"tel",
{
"type": [
"voice"
]
},
"uri",
"tel:+1.2126660420"
],
[
"tel",
{
"type": [
"fax"
]
},
"uri",
"tel:+1.2126660420"
],
[
"email",
{},
"text",
"bog@cat.lol"
]
]
]
},
{
"status": [
"active",
"associated"
],
"handle": "%CONTACT3ROID%",
"roles": [
"registrant"
],
"links": [
{
"href": "https://example.com/rdap/entity/%CONTACT3ROID%",
"type": "application/rdap+json",
"rel": "self",
"value": "https://example.com/rdap/entity/%CONTACT3ROID%"
}
],
"events": [
{
"eventAction": "registration",
"eventActor": "foo",
"eventDate": "1999-01-01T00:00:00.000Z"
},
{
"eventAction": "last update of RDAP database",
"eventDate": "2000-01-01T00:00:00.000Z"
}
],
"objectClassName": "entity",
"vcardArray": [
"vcard",
[
[
"version",
{},
"text",
"4.0"
],
[
"fn",
{},
"text",
"Goblin Market"
],
[
"org",
{},
"text",
"GOOGLE INCORPORATED <script>"
],
[
"adr",
{},
"text",
[
"",
"",
"123 Example Boulevard <script>",
"KOKOMO",
"BM",
"31337",
"United States"
]
],
[
"tel",
{
"type": [
"voice"
]
},
"uri",
"tel:+1.2126660420"
],
[
"tel",
{
"type": [
"fax"
]
},
"uri",
"tel:+1.2126660420"
],
[
"email",
{},
"text",
"lol@cat.lol"
]
]
]
}
],
"objectClassName": "domain"
}

View file

@ -39,19 +39,19 @@
"active",
"associated"
],
"handle": "8-ROID",
"handle": "%NAMESERVER1ROID%",
"links": [
{
"href": "https://example.com/rdap/nameserver/ns1.cat.lol",
"href": "https://example.com/rdap/nameserver/%NAMESERVER1NAME%",
"type": "application/rdap+json",
"rel": "self",
"value": "https://example.com/rdap/nameserver/ns1.cat.lol"
"value": "https://example.com/rdap/nameserver/%NAMESERVER1NAME%"
}
],
"ldhName": "ns1.cat.lol",
"ldhName": "%NAMESERVER1NAME%",
"ipAddresses": {
"v4": [
"1.2.3.4"
"%NAMESERVER1ADDRESS%"
]
},
"events": [
@ -72,19 +72,19 @@
"active",
"associated"
],
"handle": "A-ROID",
"handle": "%NAMESERVER2ROID%",
"links": [
{
"href": "https://example.com/rdap/nameserver/ns2.cat.lol",
"href": "https://example.com/rdap/nameserver/%NAMESERVER2NAME%",
"type": "application/rdap+json",
"rel": "self",
"value": "https://example.com/rdap/nameserver/ns2.cat.lol"
"value": "https://example.com/rdap/nameserver/%NAMESERVER2NAME%"
}
],
"ldhName": "ns2.cat.lol",
"ldhName": "%NAMESERVER2NAME%",
"ipAddresses": {
"v6": [
"bad:f00d:cafe::15:beef"
"%NAMESERVER2ADDRESS%"
]
},
"events": [

View file

@ -39,19 +39,19 @@
"active",
"associated"
],
"handle": "8-ROID",
"handle": "%NAMESERVER1ROID%",
"links": [
{
"href": "https://example.com/rdap/nameserver/ns1.cat.lol",
"href": "https://example.com/rdap/nameserver/%NAMESERVER1NAME%",
"type": "application/rdap+json",
"rel": "self",
"value": "https://example.com/rdap/nameserver/ns1.cat.lol"
"value": "https://example.com/rdap/nameserver/%NAMESERVER1NAME%"
}
],
"ldhName": "ns1.cat.lol",
"ldhName": "%NAMESERVER1NAME%",
"ipAddresses": {
"v4": [
"1.2.3.4"
"%NAMESERVER1ADDRESS%"
]
},
"events": [
@ -72,19 +72,19 @@
"active",
"associated"
],
"handle": "A-ROID",
"handle": "%NAMESERVER2ROID%",
"links": [
{
"href": "https://example.com/rdap/nameserver/ns2.cat.lol",
"href": "https://example.com/rdap/nameserver/%NAMESERVER2NAME%",
"type": "application/rdap+json",
"rel": "self",
"value": "https://example.com/rdap/nameserver/ns2.cat.lol"
"value": "https://example.com/rdap/nameserver/%NAMESERVER2NAME%"
}
],
"ldhName": "ns2.cat.lol",
"ldhName": "%NAMESERVER2NAME%",
"ipAddresses": {
"v6": [
"bad:f00d:cafe::15:beef"
"%NAMESERVER2ADDRESS%"
]
},
"events": [

View file

@ -40,19 +40,21 @@
"active",
"associated"
],
"handle": "8-ROID",
"handle": "%NAMESERVER1ROID%",
"links": [
{
"href": "https://example.com/rdap/nameserver/ns1.cat.lol",
"href":
"https://example.com/rdap/nameserver/%NAMESERVER1PUNYCODENAME%",
"type": "application/rdap+json",
"rel": "self",
"value": "https://example.com/rdap/nameserver/ns1.cat.lol"
"value":
"https://example.com/rdap/nameserver/%NAMESERVER1PUNYCODENAME%"
}
],
"ldhName": "ns1.cat.lol",
"ldhName": "%NAMESERVER1PUNYCODENAME%",
"ipAddresses": {
"v4": [
"1.2.3.4"
"%NAMESERVER1ADDRESS%"
]
},
"events": [
@ -73,19 +75,21 @@
"active",
"associated"
],
"handle": "A-ROID",
"handle": "%NAMESERVER2ROID%",
"links": [
{
"href": "https://example.com/rdap/nameserver/ns2.cat.lol",
"href":
"https://example.com/rdap/nameserver/%NAMESERVER2PUNYCODENAME%",
"type": "application/rdap+json",
"rel": "self",
"value": "https://example.com/rdap/nameserver/ns2.cat.lol"
"value":
"https://example.com/rdap/nameserver/%NAMESERVER2PUNYCODENAME%"
}
],
"ldhName": "ns2.cat.lol",
"ldhName": "%NAMESERVER2PUNYCODENAME%",
"ipAddresses": {
"v6": [
"bad:f00d:cafe::15:beef"
"%NAMESERVER2ADDRESS%"
]
},
"events": [

View file

@ -0,0 +1,118 @@
{
"status": [
"client delete prohibited",
"client renew prohibited",
"client transfer prohibited",
"server update prohibited"
],
"handle": "%HANDLE%",
"links": [
{
"href": "https://example.com/rdap/domain/%PUNYCODENAME%",
"type": "application/rdap+json",
"rel": "self",
"value": "https://example.com/rdap/domain/%PUNYCODENAME%"
}
],
"events": [
{
"eventAction": "registration",
"eventActor": "foo",
"eventDate": "2000-01-01T00:00:00.000Z"
},
{
"eventAction": "expiration",
"eventDate": "2110-10-08T00:44:59.000Z"
},
{
"eventAction": "last changed",
"eventDate": "2009-05-29T20:13:00.000Z"
},
{
"eventAction": "last update of RDAP database",
"eventDate": "2000-01-01T00:00:00.000Z"
}
],
"nameservers": [
{
"status": [
"active",
"associated"
],
"handle": "%NAMESERVER1ROID%",
"links": [
{
"href": "https://example.com/rdap/nameserver/%NAMESERVER1PUNYCODENAME%",
"type": "application/rdap+json",
"rel": "self",
"value": "https://example.com/rdap/nameserver/%NAMESERVER1PUNYCODENAME%"
}
],
"ldhName": "%NAMESERVER1PUNYCODENAME%",
"unicodeName": "%NAMESERVER1NAME%",
"ipAddresses": {
"v4": [
"%NAMESERVER1ADDRESS%"
]
},
"events": [
{
"eventAction": "registration",
"eventActor": "foo",
"eventDate": "1999-01-01T00:00:00.000Z"
},
{
"eventAction": "last update of RDAP database",
"eventDate": "2000-01-01T00:00:00.000Z"
}
],
"objectClassName": "nameserver"
},
{
"status": [
"active",
"associated"
],
"handle": "%NAMESERVER2ROID%",
"links": [
{
"href": "https://example.com/rdap/nameserver/%NAMESERVER2PUNYCODENAME%",
"type": "application/rdap+json",
"rel": "self",
"value": "https://example.com/rdap/nameserver/%NAMESERVER2PUNYCODENAME%"
}
],
"ldhName": "%NAMESERVER2PUNYCODENAME%",
"unicodeName": "%NAMESERVER2NAME%",
"ipAddresses": {
"v6": [
"%NAMESERVER2ADDRESS%"
]
},
"events": [
{
"eventAction": "registration",
"eventActor": "foo",
"eventDate": "1998-01-01T00:00:00.000Z"
},
{
"eventAction": "last update of RDAP database",
"eventDate": "2000-01-01T00:00:00.000Z"
}
],
"objectClassName": "nameserver"
}
],
"ldhName": "%PUNYCODENAME%",
"unicodeName": "%NAME%",
"objectClassName": "domain",
"remarks": [
{
"title": "Contacts Hidden",
"description": [
"Domain contacts are visible only to the owning registrar."
],
"type": "object truncated due to unexplainable reasons"
}
]
}

View file

@ -0,0 +1,188 @@
{
"domainSearchResults": [
{
"status": [
"client delete prohibited",
"client renew prohibited",
"client transfer prohibited",
"server update prohibited"
],
"handle": "%DOMAINHANDLE1%",
"links": [
{
"href": "https://example.com/rdap/domain/%DOMAINNAME1%",
"type": "application/rdap+json",
"rel": "self",
"value": "https://example.com/rdap/domain/%DOMAINNAME1%"
}
],
"ldhName": "%DOMAINNAME1%",
"objectClassName": "domain",
"remarks": [
{
"title": "Incomplete Data",
"description": [
"Summary data only. For complete data, send a specific query for the object."
],
"type": "object truncated due to unexplainable reasons"
}
]
},
{
"status": [
"client delete prohibited",
"client renew prohibited",
"client transfer prohibited",
"server update prohibited"
],
"handle": "%DOMAINHANDLE2%",
"links": [
{
"href": "https://example.com/rdap/domain/%DOMAINNAME2%",
"type": "application/rdap+json",
"rel": "self",
"value": "https://example.com/rdap/domain/%DOMAINNAME2%"
}
],
"ldhName": "%DOMAINNAME2%",
"objectClassName": "domain",
"remarks": [
{
"title": "Incomplete Data",
"description": [
"Summary data only. For complete data, send a specific query for the object."
],
"type": "object truncated due to unexplainable reasons"
}
]
},
{
"status": [
"client delete prohibited",
"client renew prohibited",
"client transfer prohibited",
"server update prohibited"
],
"handle": "%DOMAINHANDLE3%",
"links": [
{
"href": "https://example.com/rdap/domain/%DOMAINNAME3%",
"type": "application/rdap+json",
"rel": "self",
"value": "https://example.com/rdap/domain/%DOMAINNAME3%"
}
],
"ldhName": "%DOMAINNAME3%",
"objectClassName": "domain",
"remarks": [
{
"title": "Incomplete Data",
"description": [
"Summary data only. For complete data, send a specific query for the object."
],
"type": "object truncated due to unexplainable reasons"
}
]
},
{
"status": [
"client delete prohibited",
"client renew prohibited",
"client transfer prohibited",
"server update prohibited"
],
"handle": "%DOMAINHANDLE4%",
"links": [
{
"href": "https://example.com/rdap/domain/%DOMAINPUNYCODENAME4%",
"type": "application/rdap+json",
"rel": "self",
"value": "https://example.com/rdap/domain/%DOMAINPUNYCODENAME4%"
}
],
"ldhName": "%DOMAINPUNYCODENAME4%",
"unicodeName": "%DOMAINNAME4%",
"objectClassName": "domain",
"remarks": [
{
"title": "Incomplete Data",
"description": [
"Summary data only. For complete data, send a specific query for the object."
],
"type": "object truncated due to unexplainable reasons"
}
]
}
],
"rdapConformance": [
"rdap_level_0"
],
"notices" :
[
{
"title" : "RDAP Terms of Service",
"description" :
[
"By querying our Domain Database, you are agreeing to comply with these terms so please read them carefully.",
"Any information provided is 'as is' without any guarantee of accuracy.",
"Please do not misuse the Domain Database. It is intended solely for query-based access.",
"Don't use the Domain Database to allow, enable, or otherwise support the transmission of mass unsolicited, commercial advertising or solicitations.",
"Don't access our Domain Database through the use of high volume, automated electronic processes that send queries or data to the systems of any ICANN-accredited registrar.",
"You may only use the information contained in the Domain Database for lawful purposes.",
"Do not compile, repackage, disseminate, or otherwise use the information contained in the Domain Database in its entirety, or in any substantial portion, without our prior written permission.",
"We may retain certain details about queries to our Domain Database for the purposes of detecting and preventing misuse.",
"We reserve the right to restrict or deny your access to the database if we suspect that you have failed to comply with these terms.",
"We reserve the right to modify this agreement at any time."
],
"links" :
[
{
"value" : "https://example.com/rdap/help/tos",
"rel" : "alternate",
"href" : "https://www.registry.tld/about/rdap/tos.html",
"type" : "text/html"
}
]
}
],
"remarks" :
[
{
"description" :
[
"This response conforms to the RDAP Operational Profile for gTLD Registries and Registrars version 1.0"
]
},
{
"title" : "EPP Status Codes",
"description" :
[
"For more information on domain status codes, please visit https://icann.org/epp"
],
"links" :
[
{
"value" : "https://icann.org/epp",
"rel" : "alternate",
"href" : "https://icann.org/epp",
"type" : "text/html"
}
]
},
{
"description" :
[
"URL of the ICANN Whois Inaccuracy Complaint Form: https://www.icann.org/wicf"
],
"links" :
[
{
"value" : "https://www.icann.org/wicf",
"rel" : "alternate",
"href" : "https://www.icann.org/wicf",
"type" : "text/html"
}
]
}
]
}

View file

@ -0,0 +1,196 @@
{
"domainSearchResults": [
{
"status": [
"client delete prohibited",
"client renew prohibited",
"client transfer prohibited",
"server update prohibited"
],
"handle": "%DOMAINHANDLE1%",
"links": [
{
"href": "https://example.com/rdap/domain/%DOMAINPUNYCODENAME1%",
"type": "application/rdap+json",
"rel": "self",
"value": "https://example.com/rdap/domain/%DOMAINPUNYCODENAME1%"
}
],
"ldhName": "%DOMAINPUNYCODENAME1%",
"objectClassName": "domain",
"remarks": [
{
"title": "Incomplete Data",
"description": [
"Summary data only. For complete data, send a specific query for the object."
],
"type": "object truncated due to unexplainable reasons"
}
]
},
{
"status": [
"client delete prohibited",
"client renew prohibited",
"client transfer prohibited",
"server update prohibited"
],
"handle": "%DOMAINHANDLE2%",
"links": [
{
"href": "https://example.com/rdap/domain/%DOMAINPUNYCODENAME2%",
"type": "application/rdap+json",
"rel": "self",
"value": "https://example.com/rdap/domain/%DOMAINPUNYCODENAME2%"
}
],
"ldhName": "%DOMAINPUNYCODENAME2%",
"objectClassName": "domain",
"remarks": [
{
"title": "Incomplete Data",
"description": [
"Summary data only. For complete data, send a specific query for the object."
],
"type": "object truncated due to unexplainable reasons"
}
]
},
{
"status": [
"client delete prohibited",
"client renew prohibited",
"client transfer prohibited",
"server update prohibited"
],
"handle": "%DOMAINHANDLE3%",
"links": [
{
"href": "https://example.com/rdap/domain/%DOMAINPUNYCODENAME3%",
"type": "application/rdap+json",
"rel": "self",
"value": "https://example.com/rdap/domain/%DOMAINPUNYCODENAME3%"
}
],
"ldhName": "%DOMAINPUNYCODENAME3%",
"objectClassName": "domain",
"remarks": [
{
"title": "Incomplete Data",
"description": [
"Summary data only. For complete data, send a specific query for the object."
],
"type": "object truncated due to unexplainable reasons"
}
]
},
{
"status": [
"client delete prohibited",
"client renew prohibited",
"client transfer prohibited",
"server update prohibited"
],
"handle": "%DOMAINHANDLE4%",
"links": [
{
"href": "https://example.com/rdap/domain/%DOMAINPUNYCODENAME4%",
"type": "application/rdap+json",
"rel": "self",
"value": "https://example.com/rdap/domain/%DOMAINPUNYCODENAME4%"
}
],
"ldhName": "%DOMAINPUNYCODENAME4%",
"unicodeName": "%DOMAINNAME4%",
"objectClassName": "domain",
"remarks": [
{
"title": "Incomplete Data",
"description": [
"Summary data only. For complete data, send a specific query for the object."
],
"type": "object truncated due to unexplainable reasons"
}
]
}
],
"rdapConformance": [
"rdap_level_0"
],
"notices" :
[
{
"title" : "Search Policy",
"type" : "result set truncated due to unexplainable reasons",
"description" :
[
"Search results per query are limited."
]
},
{
"title" : "RDAP Terms of Service",
"description" :
[
"By querying our Domain Database, you are agreeing to comply with these terms so please read them carefully.",
"Any information provided is 'as is' without any guarantee of accuracy.",
"Please do not misuse the Domain Database. It is intended solely for query-based access.",
"Don't use the Domain Database to allow, enable, or otherwise support the transmission of mass unsolicited, commercial advertising or solicitations.",
"Don't access our Domain Database through the use of high volume, automated electronic processes that send queries or data to the systems of any ICANN-accredited registrar.",
"You may only use the information contained in the Domain Database for lawful purposes.",
"Do not compile, repackage, disseminate, or otherwise use the information contained in the Domain Database in its entirety, or in any substantial portion, without our prior written permission.",
"We may retain certain details about queries to our Domain Database for the purposes of detecting and preventing misuse.",
"We reserve the right to restrict or deny your access to the database if we suspect that you have failed to comply with these terms.",
"We reserve the right to modify this agreement at any time."
],
"links" :
[
{
"value" : "https://example.com/rdap/help/tos",
"rel" : "alternate",
"href" : "https://www.registry.tld/about/rdap/tos.html",
"type" : "text/html"
}
]
}
],
"remarks" :
[
{
"description" :
[
"This response conforms to the RDAP Operational Profile for gTLD Registries and Registrars version 1.0"
]
},
{
"title" : "EPP Status Codes",
"description" :
[
"For more information on domain status codes, please visit https://icann.org/epp"
],
"links" :
[
{
"value" : "https://icann.org/epp",
"rel" : "alternate",
"href" : "https://icann.org/epp",
"type" : "text/html"
}
]
},
{
"description" :
[
"URL of the ICANN Whois Inaccuracy Complaint Form: https://www.icann.org/wicf"
],
"links" :
[
{
"value" : "https://www.icann.org/wicf",
"rel" : "alternate",
"href" : "https://www.icann.org/wicf",
"type" : "text/html"
}
]
}
]
}

View file

@ -7,16 +7,16 @@
"client transfer prohibited",
"server update prohibited"
],
"handle": "21-EXAMPLE",
"handle": "%DOMAINHANDLE1%",
"links": [
{
"href": "https://example.com/rdap/domain/cat.example",
"href": "https://example.com/rdap/domain/%DOMAINNAME1%",
"type": "application/rdap+json",
"rel": "self",
"value": "https://example.com/rdap/domain/cat.example"
"value": "https://example.com/rdap/domain/%DOMAINNAME1%"
}
],
"ldhName": "cat.example",
"ldhName": "%DOMAINNAME1%",
"objectClassName": "domain",
"remarks": [
{
@ -35,16 +35,16 @@
"client transfer prohibited",
"server update prohibited"
],
"handle": "C-LOL",
"handle": "%DOMAINHANDLE2%",
"links": [
{
"href": "https://example.com/rdap/domain/cat.lol",
"href": "https://example.com/rdap/domain/%DOMAINNAME2%",
"type": "application/rdap+json",
"rel": "self",
"value": "https://example.com/rdap/domain/cat.lol"
"value": "https://example.com/rdap/domain/%DOMAINNAME2%"
}
],
"ldhName": "cat.lol",
"ldhName": "%DOMAINNAME2%",
"objectClassName": "domain",
"remarks": [
{

View file

@ -0,0 +1,181 @@
{
"domainSearchResults":
[
{
"handle":"%DOMAINHANDLE1%",
"links":
[
{
"rel":"self",
"href":"https://example.com/rdap/domain/%DOMAINNAME1%",
"value":"https://example.com/rdap/domain/%DOMAINNAME1%",
"type":"application/rdap+json"
}
],
"ldhName":"%DOMAINNAME1%",
"status":
[
"client delete prohibited",
"client renew prohibited",
"client transfer prohibited",
"server update prohibited"
],
"remarks":
[
{
"description":
[
"Summary data only. For complete data, send a specific query for the object."
],
"title":"Incomplete Data",
"type":"object truncated due to unexplainable reasons"
}
],
"objectClassName":"domain"
},
{
"handle":"%DOMAINHANDLE2%",
"links":
[
{
"rel":"self",
"href":"https://example.com/rdap/domain/%DOMAINNAME2%",
"value":"https://example.com/rdap/domain/%DOMAINNAME2%",
"type":"application/rdap+json"
}
],
"ldhName":"%DOMAINNAME2%",
"status":
[
"client delete prohibited",
"client renew prohibited",
"client transfer prohibited",
"server update prohibited"
],
"remarks":
[
{
"description":
[
"Summary data only. For complete data, send a specific query for the object."
],
"title":"Incomplete Data",
"type":"object truncated due to unexplainable reasons"
}
],
"objectClassName":"domain"
},
{
"handle":"%DOMAINHANDLE3%",
"links":
[
{
"rel":"self",
"href":"https://example.com/rdap/domain/%DOMAINNAME3%",
"value":"https://example.com/rdap/domain/%DOMAINNAME3%",
"type":"application/rdap+json"
}
],
"ldhName":"%DOMAINNAME3%",
"status":
[
"client delete prohibited",
"client renew prohibited",
"client transfer prohibited",
"server update prohibited"
],
"remarks":
[
{
"description":
[
"Summary data only. For complete data, send a specific query for the object."
],
"title":"Incomplete Data",
"type":"object truncated due to unexplainable reasons"
}
],
"objectClassName":"domain"
}
],
"remarks":
[
{
"description":
[
"This response conforms to the RDAP Operational Profile for gTLD Registries and Registrars version 1.0"
]
},
{
"description":
[
"For more information on domain status codes, please visit https://icann.org/epp"
],
"links":
[
{
"rel":"alternate",
"href":"https://icann.org/epp",
"value":"https://icann.org/epp",
"type":"text/html"
}
],
"title":"EPP Status Codes"
},
{
"description":
[
"URL of the ICANN Whois Inaccuracy Complaint Form: https://www.icann.org/wicf"
],
"links":
[
{
"rel":"alternate",
"href":"https://www.icann.org/wicf",
"value":"https://www.icann.org/wicf",
"type":"text/html"
}
]
}
],
"notices":
[
{
"description":
[
"Search results may contain incomplete information due to first-stage query limits."
],
"title":"Search Policy",
"type":"result set truncated due to unexplainable reasons"
},
{
"description":
[
"By querying our Domain Database, you are agreeing to comply with these terms so please read them carefully.",
"Any information provided is 'as is' without any guarantee of accuracy.",
"Please do not misuse the Domain Database. It is intended solely for query-based access.",
"Don't use the Domain Database to allow, enable, or otherwise support the transmission of mass unsolicited, commercial advertising or solicitations.",
"Don't access our Domain Database through the use of high volume, automated electronic processes that send queries or data to the systems of any ICANN-accredited registrar.",
"You may only use the information contained in the Domain Database for lawful purposes.",
"Do not compile, repackage, disseminate, or otherwise use the information contained in the Domain Database in its entirety, or in any substantial portion, without our prior written permission.",
"We may retain certain details about queries to our Domain Database for the purposes of detecting and preventing misuse.",
"We reserve the right to restrict or deny your access to the database if we suspect that you have failed to comply with these terms.",
"We reserve the right to modify this agreement at any time."
],
"links":
[
{
"rel":"alternate",
"href":"https://www.registry.tld/about/rdap/tos.html",
"value":"https://example.com/rdap/help/tos",
"type":"text/html"
}
],
"title":"RDAP Terms of Service"
}
],
"rdapConformance":
[
"rdap_level_0"
]
}

View file

@ -1,7 +1,7 @@
{
"domainSearchResults":[
{
"ldhName":"domain1.lol",
"ldhName":"%DOMAINNAME1%",
"status":[
"client delete prohibited",
"client renew prohibited",
@ -17,19 +17,19 @@
]
}
],
"handle":"13C5-LOL",
"handle":"%DOMAINHANDLE1%",
"links":[
{
"value":"https://example.com/rdap/domain/domain1.lol",
"value":"https://example.com/rdap/domain/%DOMAINNAME1%",
"type":"application/rdap+json",
"rel":"self",
"href":"https://example.com/rdap/domain/domain1.lol"
"href":"https://example.com/rdap/domain/%DOMAINNAME1%"
}
],
"objectClassName":"domain"
},
{
"ldhName":"domain2.lol",
"ldhName":"%DOMAINNAME2%",
"status":[
"client delete prohibited",
"client renew prohibited",
@ -45,13 +45,13 @@
]
}
],
"handle":"13C6-LOL",
"handle":"%DOMAINHANDLE2%",
"links":[
{
"value":"https://example.com/rdap/domain/domain2.lol",
"value":"https://example.com/rdap/domain/%DOMAINNAME2%",
"type":"application/rdap+json",
"rel":"self",
"href":"https://example.com/rdap/domain/domain2.lol"
"href":"https://example.com/rdap/domain/%DOMAINNAME2%"
}
],
"objectClassName":"domain"

View file

@ -414,7 +414,10 @@ public class DatastoreHelper {
}
public static void createTld(String tld, ImmutableSortedMap<DateTime, TldState> tldStates) {
createTld(tld, Ascii.toUpperCase(tld.replaceFirst(ACE_PREFIX_REGEX, "")), tldStates);
createTld(
tld,
Ascii.toUpperCase(tld.replaceFirst(ACE_PREFIX_REGEX, "").replace('.', '_')),
tldStates);
}
public static void createTld(