RDAP: Add boilerplate entries required by ICANN RDAP Profile

The ICANN RDAP Profile (dated 3 December 2015) requires certain boilerplate entries at the top level of the JSON object. Specifically:

1.4.4. The terms of service of the RDAP service MUST be specified in the
notices object in the topmost JSON object of the response. The notices
object MUST contain a links object [RFC7483]. The links object MUST
contain an URL of the contracted party providing the RDAP service.

1.4.10. An RDAP response MUST contain a remarks member with a description
containing the string “This response conforms to the RDAP Operational
Profile for gTLD Registries and Registrars version 1.0”.

1.5.18. A domain name RDAP response MUST contain a remarks member with
a title “EPP Status Codes”, a description containing the string “For
more information on domain status codes, please visit
https://icann.org/epp” and a links member with the
https://icann.org/epp URL.

1.5.20. A domain name RDAP response MUST contain a remarks member with
a title “Whois Inaccuracy Complaint Form”, a description containing
the string “URL of the ICANN Whois Inaccuracy Complaint Form:
https://www.icann.org/wicf” and a links member with the
https://www.icann.org/wicf URL.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=116389950
This commit is contained in:
mountford 2016-03-04 12:36:00 -08:00 committed by Justine Tunney
parent 363c812d10
commit ab26b288c1
29 changed files with 804 additions and 90 deletions

View file

@ -19,9 +19,12 @@ import static com.google.common.truth.Truth.assertThat;
import static com.google.domain.registry.request.Action.Method.GET;
import static com.google.domain.registry.request.Action.Method.HEAD;
import static com.google.domain.registry.testing.DatastoreHelper.createTld;
import static com.google.domain.registry.testing.TestDataHelper.loadFileWithSubstitutions;
import com.google.common.collect.ImmutableMap;
import com.google.domain.registry.model.ofy.Ofy;
import com.google.domain.registry.rdap.RdapJsonFormatter.BoilerplateType;
import com.google.domain.registry.request.HttpException;
import com.google.domain.registry.testing.AppEngineRule;
import com.google.domain.registry.testing.FakeClock;
import com.google.domain.registry.testing.FakeResponse;
@ -68,14 +71,22 @@ public class RdapActionBaseTest {
}
@Override
public ImmutableMap<String, Object> getJsonObjectForResource(String searchString) {
if (searchString.equals("IllegalArgumentException")) {
public ImmutableMap<String, Object> getJsonObjectForResource(
String pathSearchString, boolean isHeadRequest, String linkBase) throws HttpException {
if (pathSearchString.equals("IllegalArgumentException")) {
throw new IllegalArgumentException();
}
if (searchString.equals("RuntimeException")) {
if (pathSearchString.equals("RuntimeException")) {
throw new RuntimeException();
}
return ImmutableMap.<String, Object>of("key", "value");
ImmutableMap.Builder<String, Object> builder = ImmutableMap.builder();
builder.put("key", "value");
RdapJsonFormatter.addTopLevelEntries(
builder,
BoilerplateType.OTHER,
null,
"http://myserver.google.com/");
return builder.build();
}
}
@ -92,6 +103,7 @@ public class RdapActionBaseTest {
private Object generateActualJson(String domainName) {
action.requestPath = RdapTestAction.PATH + domainName;
action.requestMethod = GET;
action.rdapLinkBase = "http://myserver.google.com/";
action.run();
return JSONValue.parse(response.getPayload());
}
@ -99,6 +111,7 @@ public class RdapActionBaseTest {
private String generateHeadPayload(String domainName) {
action.requestPath = RdapTestAction.PATH + domainName;
action.requestMethod = HEAD;
action.rdapLinkBase = "http://myserver.google.com/";
action.run();
return response.getPayload();
}
@ -124,7 +137,7 @@ public class RdapActionBaseTest {
@Test
public void testValidName_works() throws Exception {
assertThat(generateActualJson("no.thing")).isEqualTo(JSONValue.parse(
"{\"rdapConformance\":[\"rdap_level_0\"], \"key\":\"value\"}"));
loadFileWithSubstitutions(this.getClass(), "rdapjson_toplevel.json", null)));
assertThat(response.getStatus()).isEqualTo(200);
}