mirror of
https://github.com/google/nomulus.git
synced 2025-05-15 08:57:12 +02:00
Centralize RDAP test initialization and login
All RDAP actions inherit from a common RdapActionBase class. All RDAP search actions inherit from a comman RdapSearchActionBase class, which inherits from RdapActionBase Each of the base classes has @Before initialization needed for the tests, as well as utility functions (such as login and logout). Currently, these were copied in all test classes. Instead, we created a similar test inheritance tree to centralize the initialization and place common utility functions. This way, the @Before of every test only needs to initialize the variables new to the specific action, making the code somewhat clearer. ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=217856844
This commit is contained in:
parent
b254269d2f
commit
3a3b0b738a
45 changed files with 456 additions and 758 deletions
|
@ -49,6 +49,7 @@ import google.registry.request.Response;
|
|||
import google.registry.request.auth.AuthResult;
|
||||
import google.registry.request.auth.UserAuthInfo;
|
||||
import google.registry.ui.server.registrar.AuthenticatedRegistrarAccessor;
|
||||
import google.registry.util.Clock;
|
||||
import java.io.IOException;
|
||||
import java.net.URI;
|
||||
import java.net.URISyntaxException;
|
||||
|
@ -87,6 +88,7 @@ public abstract class RdapActionBase implements Runnable {
|
|||
}
|
||||
|
||||
@Inject Response response;
|
||||
@Inject Clock clock;
|
||||
@Inject @RequestMethod Action.Method requestMethod;
|
||||
@Inject @RequestPath String requestPath;
|
||||
@Inject @FullServletPath String fullServletPath;
|
||||
|
|
|
@ -29,7 +29,6 @@ import google.registry.request.Action;
|
|||
import google.registry.request.HttpException.BadRequestException;
|
||||
import google.registry.request.HttpException.NotFoundException;
|
||||
import google.registry.request.auth.Auth;
|
||||
import google.registry.util.Clock;
|
||||
import javax.inject.Inject;
|
||||
import org.joda.time.DateTime;
|
||||
|
||||
|
@ -44,8 +43,7 @@ public class RdapDomainAction extends RdapActionBase {
|
|||
|
||||
public static final String PATH = "/rdap/domain/";
|
||||
|
||||
@Inject Clock clock;
|
||||
@Inject RdapDomainAction() {}
|
||||
@Inject public RdapDomainAction() {}
|
||||
|
||||
@Override
|
||||
public String getHumanReadableObjectTypeName() {
|
||||
|
|
|
@ -45,7 +45,6 @@ import google.registry.request.HttpException.NotFoundException;
|
|||
import google.registry.request.HttpException.UnprocessableEntityException;
|
||||
import google.registry.request.Parameter;
|
||||
import google.registry.request.auth.Auth;
|
||||
import google.registry.util.Clock;
|
||||
import google.registry.util.Idn;
|
||||
import google.registry.util.NonFinalForTesting;
|
||||
import java.net.InetAddress;
|
||||
|
@ -83,11 +82,10 @@ public class RdapDomainSearchAction extends RdapSearchActionBase {
|
|||
|
||||
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
|
||||
|
||||
@Inject Clock clock;
|
||||
@Inject @Parameter("name") Optional<String> nameParam;
|
||||
@Inject @Parameter("nsLdhName") Optional<String> nsLdhNameParam;
|
||||
@Inject @Parameter("nsIp") Optional<String> nsIpParam;
|
||||
@Inject RdapDomainSearchAction() {}
|
||||
@Inject public RdapDomainSearchAction() {}
|
||||
|
||||
@Override
|
||||
public String getHumanReadableObjectTypeName() {
|
||||
|
|
|
@ -31,7 +31,6 @@ import google.registry.request.Action;
|
|||
import google.registry.request.HttpException.BadRequestException;
|
||||
import google.registry.request.HttpException.NotFoundException;
|
||||
import google.registry.request.auth.Auth;
|
||||
import google.registry.util.Clock;
|
||||
import java.util.Optional;
|
||||
import javax.inject.Inject;
|
||||
import org.joda.time.DateTime;
|
||||
|
@ -58,8 +57,7 @@ public class RdapEntityAction extends RdapActionBase {
|
|||
|
||||
private static final Pattern ROID_PATTERN = Pattern.compile("[-_.a-zA-Z0-9]+");
|
||||
|
||||
@Inject Clock clock;
|
||||
@Inject RdapEntityAction() {}
|
||||
@Inject public RdapEntityAction() {}
|
||||
|
||||
@Override
|
||||
public String getHumanReadableObjectTypeName() {
|
||||
|
|
|
@ -39,7 +39,6 @@ import google.registry.request.HttpException.NotFoundException;
|
|||
import google.registry.request.HttpException.UnprocessableEntityException;
|
||||
import google.registry.request.Parameter;
|
||||
import google.registry.request.auth.Auth;
|
||||
import google.registry.util.Clock;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
|
@ -84,11 +83,10 @@ public class RdapEntitySearchAction extends RdapSearchActionBase {
|
|||
|
||||
public static final String PATH = "/rdap/entities";
|
||||
|
||||
@Inject Clock clock;
|
||||
@Inject @Parameter("fn") Optional<String> fnParam;
|
||||
@Inject @Parameter("handle") Optional<String> handleParam;
|
||||
@Inject @Parameter("subtype") Optional<String> subtypeParam;
|
||||
@Inject RdapEntitySearchAction() {}
|
||||
@Inject public RdapEntitySearchAction() {}
|
||||
|
||||
private enum QueryType {
|
||||
FULL_NAME,
|
||||
|
|
|
@ -23,7 +23,6 @@ import google.registry.rdap.RdapJsonFormatter.BoilerplateType;
|
|||
import google.registry.rdap.RdapMetrics.EndpointType;
|
||||
import google.registry.request.Action;
|
||||
import google.registry.request.auth.Auth;
|
||||
import google.registry.util.Clock;
|
||||
import javax.inject.Inject;
|
||||
|
||||
/** RDAP (new WHOIS) action for help requests. */
|
||||
|
@ -37,8 +36,7 @@ public class RdapHelpAction extends RdapActionBase {
|
|||
|
||||
public static final String PATH = "/rdap/help";
|
||||
|
||||
@Inject Clock clock;
|
||||
@Inject RdapHelpAction() {}
|
||||
@Inject public RdapHelpAction() {}
|
||||
|
||||
@Override
|
||||
public String getHumanReadableObjectTypeName() {
|
||||
|
|
|
@ -29,7 +29,6 @@ import com.google.common.collect.ImmutableSet;
|
|||
import com.google.common.collect.Maps;
|
||||
import com.google.common.collect.Ordering;
|
||||
import com.google.common.collect.Streams;
|
||||
import com.google.common.flogger.FluentLogger;
|
||||
import com.google.common.net.InetAddresses;
|
||||
import com.googlecode.objectify.Key;
|
||||
import google.registry.config.RdapNoticeDescriptor;
|
||||
|
@ -83,8 +82,6 @@ public class RdapJsonFormatter {
|
|||
@Inject @Config("rdapHelpMap") ImmutableMap<String, RdapNoticeDescriptor> rdapHelpMap;
|
||||
@Inject RdapJsonFormatter() {}
|
||||
|
||||
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
|
||||
|
||||
/**
|
||||
* What type of data to generate. Summary data includes only information about the object itself,
|
||||
* while full data includes associated items (e.g. for domains, full data includes the hosts,
|
||||
|
|
|
@ -29,7 +29,6 @@ import google.registry.request.Action;
|
|||
import google.registry.request.HttpException.BadRequestException;
|
||||
import google.registry.request.HttpException.NotFoundException;
|
||||
import google.registry.request.auth.Auth;
|
||||
import google.registry.util.Clock;
|
||||
import javax.inject.Inject;
|
||||
import org.joda.time.DateTime;
|
||||
|
||||
|
@ -44,8 +43,7 @@ public class RdapNameserverAction extends RdapActionBase {
|
|||
|
||||
public static final String PATH = "/rdap/nameserver/";
|
||||
|
||||
@Inject Clock clock;
|
||||
@Inject RdapNameserverAction() {}
|
||||
@Inject public RdapNameserverAction() {}
|
||||
|
||||
@Override
|
||||
public String getHumanReadableObjectTypeName() {
|
||||
|
|
|
@ -38,7 +38,6 @@ import google.registry.request.HttpException.NotFoundException;
|
|||
import google.registry.request.HttpException.UnprocessableEntityException;
|
||||
import google.registry.request.Parameter;
|
||||
import google.registry.request.auth.Auth;
|
||||
import google.registry.util.Clock;
|
||||
import google.registry.util.Idn;
|
||||
import java.net.InetAddress;
|
||||
import java.util.ArrayList;
|
||||
|
@ -66,10 +65,9 @@ public class RdapNameserverSearchAction extends RdapSearchActionBase {
|
|||
|
||||
public static final String PATH = "/rdap/nameservers";
|
||||
|
||||
@Inject Clock clock;
|
||||
@Inject @Parameter("name") Optional<String> nameParam;
|
||||
@Inject @Parameter("ip") Optional<String> ipParam;
|
||||
@Inject RdapNameserverSearchAction() {}
|
||||
@Inject public RdapNameserverSearchAction() {}
|
||||
|
||||
@Override
|
||||
public String getHumanReadableObjectTypeName() {
|
||||
|
|
136
javatests/google/registry/rdap/RdapActionBaseTestCase.java
Normal file
136
javatests/google/registry/rdap/RdapActionBaseTestCase.java
Normal file
|
@ -0,0 +1,136 @@
|
|||
// Copyright 2018 The Nomulus Authors. All Rights Reserved.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
package google.registry.rdap;
|
||||
|
||||
import static google.registry.rdap.RdapAuthorization.Role.ADMINISTRATOR;
|
||||
import static google.registry.rdap.RdapAuthorization.Role.PUBLIC;
|
||||
import static google.registry.rdap.RdapAuthorization.Role.REGISTRAR;
|
||||
import static google.registry.request.Action.Method.GET;
|
||||
import static google.registry.request.Action.Method.HEAD;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import com.google.appengine.api.users.User;
|
||||
import google.registry.model.ofy.Ofy;
|
||||
import google.registry.request.Action;
|
||||
import google.registry.request.HttpException.ForbiddenException;
|
||||
import google.registry.request.auth.AuthLevel;
|
||||
import google.registry.request.auth.AuthResult;
|
||||
import google.registry.request.auth.UserAuthInfo;
|
||||
import google.registry.testing.AppEngineRule;
|
||||
import google.registry.testing.FakeClock;
|
||||
import google.registry.testing.FakeResponse;
|
||||
import google.registry.testing.InjectRule;
|
||||
import google.registry.ui.server.registrar.AuthenticatedRegistrarAccessor;
|
||||
import google.registry.util.TypeUtils;
|
||||
import java.util.Optional;
|
||||
import org.joda.time.DateTime;
|
||||
import org.json.simple.JSONValue;
|
||||
import org.junit.Before;
|
||||
import org.junit.Rule;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.junit.runners.JUnit4;
|
||||
|
||||
/** Common unit test code for actions inheriting {@link RdapActionBase}. */
|
||||
@RunWith(JUnit4.class)
|
||||
public class RdapActionBaseTestCase<A extends RdapActionBase> {
|
||||
|
||||
@Rule
|
||||
public final AppEngineRule appEngine = AppEngineRule.builder()
|
||||
.withDatastore()
|
||||
.build();
|
||||
|
||||
@Rule
|
||||
public final InjectRule inject = new InjectRule();
|
||||
|
||||
protected static final AuthResult AUTH_RESULT =
|
||||
AuthResult.create(
|
||||
AuthLevel.USER,
|
||||
UserAuthInfo.create(new User("rdap.user@user.com", "gmail.com", "12345"), false));
|
||||
|
||||
protected static final AuthResult AUTH_RESULT_ADMIN =
|
||||
AuthResult.create(
|
||||
AuthLevel.USER,
|
||||
UserAuthInfo.create(new User("rdap.admin@google.com", "gmail.com", "12345"), true));
|
||||
|
||||
protected final AuthenticatedRegistrarAccessor registrarAccessor =
|
||||
mock(AuthenticatedRegistrarAccessor.class);
|
||||
|
||||
protected FakeResponse response = new FakeResponse();
|
||||
protected final FakeClock clock = new FakeClock(DateTime.parse("2000-01-01TZ"));
|
||||
protected final RdapMetrics rdapMetrics = mock(RdapMetrics.class);
|
||||
|
||||
protected RdapAuthorization.Role metricRole = PUBLIC;
|
||||
protected A action;
|
||||
|
||||
protected final String actionPath;
|
||||
protected final Class<A> rdapActionClass;
|
||||
|
||||
protected RdapActionBaseTestCase(Class<A> rdapActionClass, String actionPath) {
|
||||
this.rdapActionClass = rdapActionClass;
|
||||
this.actionPath = actionPath;
|
||||
}
|
||||
|
||||
@Before
|
||||
public void baseSetUp() {
|
||||
inject.setStaticField(Ofy.class, "clock", clock);
|
||||
action = TypeUtils.instantiate(rdapActionClass);
|
||||
action.registrarAccessor = registrarAccessor;
|
||||
action.clock = clock;
|
||||
action.authResult = AUTH_RESULT;
|
||||
action.includeDeletedParam = Optional.empty();
|
||||
action.registrarParam = Optional.empty();
|
||||
action.formatOutputParam = Optional.empty();
|
||||
action.response = response;
|
||||
action.rdapJsonFormatter = RdapTestHelper.getTestRdapJsonFormatter();
|
||||
action.rdapMetrics = rdapMetrics;
|
||||
action.requestMethod = Action.Method.GET;
|
||||
action.fullServletPath = "https://example.tld/rdap";
|
||||
action.rdapWhoisServer = null;
|
||||
}
|
||||
|
||||
protected void login(String clientId) {
|
||||
when(registrarAccessor.guessClientId()).thenReturn(clientId);
|
||||
action.authResult = AUTH_RESULT;
|
||||
metricRole = REGISTRAR;
|
||||
}
|
||||
|
||||
protected void logout() {
|
||||
when(registrarAccessor.guessClientId()).thenThrow(new ForbiddenException("not logged in"));
|
||||
action.authResult = AUTH_RESULT;
|
||||
metricRole = PUBLIC;
|
||||
}
|
||||
|
||||
protected void loginAsAdmin() {
|
||||
when(registrarAccessor.guessClientId()).thenReturn("irrelevant");
|
||||
action.authResult = AUTH_RESULT_ADMIN;
|
||||
metricRole = ADMINISTRATOR;
|
||||
}
|
||||
|
||||
protected Object generateActualJson(String domainName) {
|
||||
action.requestPath = actionPath + domainName;
|
||||
action.requestMethod = GET;
|
||||
action.run();
|
||||
return JSONValue.parse(response.getPayload());
|
||||
}
|
||||
|
||||
protected String generateHeadPayload(String domainName) {
|
||||
action.requestPath = actionPath + domainName;
|
||||
action.fullServletPath = "http://myserver.example.com" + actionPath;
|
||||
action.requestMethod = HEAD;
|
||||
action.run();
|
||||
return response.getPayload();
|
||||
}
|
||||
}
|
|
@ -25,11 +25,8 @@ import static google.registry.testing.FullFieldsTestEntityHelper.makeHistoryEntr
|
|||
import static google.registry.testing.FullFieldsTestEntityHelper.makeRegistrar;
|
||||
import static google.registry.testing.FullFieldsTestEntityHelper.makeRegistrarContacts;
|
||||
import static google.registry.testing.TestDataHelper.loadFile;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import com.google.appengine.api.users.User;
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
|
@ -37,7 +34,6 @@ import google.registry.model.contact.ContactResource;
|
|||
import google.registry.model.domain.DomainBase;
|
||||
import google.registry.model.domain.Period;
|
||||
import google.registry.model.host.HostResource;
|
||||
import google.registry.model.ofy.Ofy;
|
||||
import google.registry.model.registrar.Registrar;
|
||||
import google.registry.model.registry.Registry;
|
||||
import google.registry.model.reporting.HistoryEntry;
|
||||
|
@ -46,61 +42,28 @@ import google.registry.rdap.RdapMetrics.SearchType;
|
|||
import google.registry.rdap.RdapMetrics.WildcardType;
|
||||
import google.registry.rdap.RdapSearchResults.IncompletenessWarningType;
|
||||
import google.registry.request.Action;
|
||||
import google.registry.request.auth.AuthLevel;
|
||||
import google.registry.request.auth.AuthResult;
|
||||
import google.registry.request.auth.UserAuthInfo;
|
||||
import google.registry.testing.AppEngineRule;
|
||||
import google.registry.testing.FakeClock;
|
||||
import google.registry.testing.FakeResponse;
|
||||
import google.registry.testing.InjectRule;
|
||||
import google.registry.ui.server.registrar.AuthenticatedRegistrarAccessor;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
import javax.annotation.Nullable;
|
||||
import org.joda.time.DateTime;
|
||||
import org.json.simple.JSONObject;
|
||||
import org.json.simple.JSONValue;
|
||||
import org.junit.Before;
|
||||
import org.junit.Ignore;
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.junit.runners.JUnit4;
|
||||
|
||||
/** Unit tests for {@link RdapDomainAction}. */
|
||||
@RunWith(JUnit4.class)
|
||||
public class RdapDomainActionTest {
|
||||
public class RdapDomainActionTest extends RdapActionBaseTestCase<RdapDomainAction> {
|
||||
|
||||
@Rule
|
||||
public final AppEngineRule appEngine = AppEngineRule.builder()
|
||||
.withDatastore()
|
||||
.build();
|
||||
|
||||
@Rule
|
||||
public final InjectRule inject = new InjectRule();
|
||||
|
||||
private final FakeResponse response = new FakeResponse();
|
||||
private final FakeClock clock = new FakeClock(DateTime.parse("2000-01-01TZ"));
|
||||
private final AuthenticatedRegistrarAccessor registrarAccessor =
|
||||
mock(AuthenticatedRegistrarAccessor.class);
|
||||
private final RdapMetrics rdapMetrics = mock(RdapMetrics.class);
|
||||
|
||||
private RdapDomainAction action;
|
||||
|
||||
private static final AuthResult AUTH_RESULT =
|
||||
AuthResult.create(
|
||||
AuthLevel.USER,
|
||||
UserAuthInfo.create(new User("rdap.user@user.com", "gmail.com", "12345"), false));
|
||||
|
||||
private static final AuthResult AUTH_RESULT_ADMIN =
|
||||
AuthResult.create(
|
||||
AuthLevel.USER,
|
||||
UserAuthInfo.create(new User("rdap.user@google.com", "gmail.com", "12345"), true));
|
||||
public RdapDomainActionTest() {
|
||||
super(RdapDomainAction.class, RdapDomainAction.PATH);
|
||||
}
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
inject.setStaticField(Ofy.class, "clock", clock);
|
||||
// lol
|
||||
createTld("lol");
|
||||
Registrar registrarLol = persistResource(makeRegistrar(
|
||||
|
@ -265,35 +228,6 @@ public class RdapDomainActionTest {
|
|||
Period.create(1, Period.Unit.YEARS),
|
||||
"deleted",
|
||||
clock.nowUtc().minusMonths(6)));
|
||||
|
||||
action = new RdapDomainAction();
|
||||
action.clock = clock;
|
||||
action.requestMethod = Action.Method.GET;
|
||||
action.fullServletPath = "https://example.com/rdap";
|
||||
action.response = response;
|
||||
action.registrarParam = Optional.empty();
|
||||
action.includeDeletedParam = Optional.empty();
|
||||
action.formatOutputParam = Optional.empty();
|
||||
action.rdapJsonFormatter = RdapTestHelper.getTestRdapJsonFormatter();
|
||||
action.rdapWhoisServer = null;
|
||||
action.registrarAccessor = registrarAccessor;
|
||||
action.authResult = AUTH_RESULT;
|
||||
action.rdapMetrics = rdapMetrics;
|
||||
}
|
||||
|
||||
private void login(String clientId) {
|
||||
when(registrarAccessor.guessClientId()).thenReturn(clientId);
|
||||
}
|
||||
|
||||
private void loginAsAdmin() {
|
||||
when(registrarAccessor.guessClientId()).thenReturn("irrelevant");
|
||||
action.authResult = AUTH_RESULT_ADMIN;
|
||||
}
|
||||
|
||||
private Object generateActualJson(String domainName) {
|
||||
action.requestPath = RdapDomainAction.PATH + domainName;
|
||||
action.run();
|
||||
return JSONValue.parse(response.getPayload());
|
||||
}
|
||||
|
||||
private Object generateExpectedJson(
|
||||
|
@ -400,7 +334,7 @@ public class RdapDomainActionTest {
|
|||
builder,
|
||||
false,
|
||||
RdapTestHelper.createNotices(
|
||||
"https://example.com/rdap/",
|
||||
"https://example.tld/rdap/",
|
||||
(contactRoids == null)
|
||||
? RdapTestHelper.ContactNoticeType.DOMAIN
|
||||
: RdapTestHelper.ContactNoticeType.NONE,
|
||||
|
|
|
@ -16,8 +16,6 @@ package google.registry.rdap;
|
|||
|
||||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
import static google.registry.rdap.RdapAuthorization.Role.ADMINISTRATOR;
|
||||
import static google.registry.rdap.RdapAuthorization.Role.REGISTRAR;
|
||||
import static google.registry.request.Action.Method.POST;
|
||||
import static google.registry.testing.DatastoreHelper.createTld;
|
||||
import static google.registry.testing.DatastoreHelper.persistDomainAsDeleted;
|
||||
|
@ -31,10 +29,7 @@ import static google.registry.testing.FullFieldsTestEntityHelper.makeHistoryEntr
|
|||
import static google.registry.testing.FullFieldsTestEntityHelper.makeRegistrar;
|
||||
import static google.registry.testing.FullFieldsTestEntityHelper.makeRegistrarContacts;
|
||||
import static google.registry.testing.TestDataHelper.loadFile;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import com.google.appengine.api.users.User;
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import com.google.common.collect.ImmutableListMultimap;
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
|
@ -46,7 +41,6 @@ import google.registry.model.contact.ContactResource;
|
|||
import google.registry.model.domain.DomainResource;
|
||||
import google.registry.model.domain.Period;
|
||||
import google.registry.model.host.HostResource;
|
||||
import google.registry.model.ofy.Ofy;
|
||||
import google.registry.model.registrar.Registrar;
|
||||
import google.registry.model.registry.Registry;
|
||||
import google.registry.model.reporting.HistoryEntry;
|
||||
|
@ -54,15 +48,7 @@ import google.registry.rdap.RdapMetrics.EndpointType;
|
|||
import google.registry.rdap.RdapMetrics.SearchType;
|
||||
import google.registry.rdap.RdapMetrics.WildcardType;
|
||||
import google.registry.rdap.RdapSearchResults.IncompletenessWarningType;
|
||||
import google.registry.request.Action;
|
||||
import google.registry.request.auth.AuthLevel;
|
||||
import google.registry.request.auth.AuthResult;
|
||||
import google.registry.request.auth.UserAuthInfo;
|
||||
import google.registry.testing.AppEngineRule;
|
||||
import google.registry.testing.FakeClock;
|
||||
import google.registry.testing.FakeResponse;
|
||||
import google.registry.testing.InjectRule;
|
||||
import google.registry.ui.server.registrar.AuthenticatedRegistrarAccessor;
|
||||
import google.registry.util.Idn;
|
||||
import java.net.IDN;
|
||||
import java.net.URLDecoder;
|
||||
|
@ -71,42 +57,22 @@ import java.util.List;
|
|||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
import javax.annotation.Nullable;
|
||||
import org.joda.time.DateTime;
|
||||
import org.json.simple.JSONArray;
|
||||
import org.json.simple.JSONObject;
|
||||
import org.json.simple.JSONValue;
|
||||
import org.junit.Before;
|
||||
import org.junit.Ignore;
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.junit.runners.JUnit4;
|
||||
|
||||
/** Unit tests for {@link RdapDomainSearchAction}. */
|
||||
@RunWith(JUnit4.class)
|
||||
public class RdapDomainSearchActionTest extends RdapSearchActionTestCase {
|
||||
public class RdapDomainSearchActionTest extends RdapSearchActionTestCase<RdapDomainSearchAction> {
|
||||
|
||||
@Rule public final AppEngineRule appEngine = AppEngineRule.builder().withDatastore().build();
|
||||
|
||||
@Rule public final InjectRule inject = new InjectRule();
|
||||
|
||||
private final FakeClock clock = new FakeClock(DateTime.parse("2000-01-01T00:00:00Z"));
|
||||
private final AuthenticatedRegistrarAccessor registrarAccessor =
|
||||
mock(AuthenticatedRegistrarAccessor.class);
|
||||
private final RdapDomainSearchAction action = new RdapDomainSearchAction();
|
||||
|
||||
private static final AuthResult AUTH_RESULT =
|
||||
AuthResult.create(
|
||||
AuthLevel.USER,
|
||||
UserAuthInfo.create(new User("rdap.user@user.com", "gmail.com", "12345"), false));
|
||||
|
||||
private static final AuthResult AUTH_RESULT_ADMIN =
|
||||
AuthResult.create(
|
||||
AuthLevel.USER,
|
||||
UserAuthInfo.create(new User("rdap.user@google.com", "gmail.com", "12345"), true));
|
||||
|
||||
|
||||
private FakeResponse response = new FakeResponse();
|
||||
public RdapDomainSearchActionTest() {
|
||||
super(RdapDomainSearchAction.class, RdapDomainSearchAction.PATH);
|
||||
}
|
||||
|
||||
private Registrar registrar;
|
||||
private DomainResource domainCatLol;
|
||||
|
@ -131,6 +97,7 @@ public class RdapDomainSearchActionTest extends RdapSearchActionTestCase {
|
|||
private Object generateActualJson(
|
||||
RequestType requestType, String paramValue, String cursor) {
|
||||
action.requestPath = RdapDomainSearchAction.PATH;
|
||||
action.requestMethod = POST;
|
||||
String requestTypeParam = null;
|
||||
switch (requestType) {
|
||||
case NAME:
|
||||
|
@ -180,7 +147,6 @@ public class RdapDomainSearchActionTest extends RdapSearchActionTestCase {
|
|||
@Before
|
||||
public void setUp() {
|
||||
RdapDomainSearchAction.maxNameserversInFirstStage = 40;
|
||||
inject.setStaticField(Ofy.class, "clock", clock);
|
||||
|
||||
// cat.lol and cat2.lol
|
||||
createTld("lol");
|
||||
|
@ -394,34 +360,7 @@ public class RdapDomainSearchActionTest extends RdapSearchActionTestCase {
|
|||
"created",
|
||||
clock.nowUtc()));
|
||||
|
||||
action.clock = clock;
|
||||
action.requestMethod = Action.Method.GET;
|
||||
action.fullServletPath = "https://example.com/rdap";
|
||||
action.requestUrl = "https://example.com/rdap/domains";
|
||||
action.parameterMap = ImmutableListMultimap.of();
|
||||
action.requestMethod = POST;
|
||||
action.response = response;
|
||||
action.registrarParam = Optional.empty();
|
||||
action.includeDeletedParam = Optional.empty();
|
||||
action.formatOutputParam = Optional.empty();
|
||||
action.rdapJsonFormatter = RdapTestHelper.getTestRdapJsonFormatter();
|
||||
action.rdapWhoisServer = null;
|
||||
action.registrarAccessor = registrarAccessor;
|
||||
action.authResult = AUTH_RESULT;
|
||||
action.rdapMetrics = rdapMetrics;
|
||||
action.cursorTokenParam = Optional.empty();
|
||||
action.rdapResultSetMaxSize = 4;
|
||||
}
|
||||
|
||||
private void login(String clientId) {
|
||||
when(registrarAccessor.guessClientId()).thenReturn(clientId);
|
||||
metricRole = REGISTRAR;
|
||||
}
|
||||
|
||||
private void loginAsAdmin() {
|
||||
when(registrarAccessor.guessClientId()).thenReturn("irrelevant");
|
||||
action.authResult = AUTH_RESULT_ADMIN;
|
||||
metricRole = ADMINISTRATOR;
|
||||
}
|
||||
|
||||
private Object generateExpectedJsonForTwoDomains() {
|
||||
|
@ -562,7 +501,7 @@ public class RdapDomainSearchActionTest extends RdapSearchActionTestCase {
|
|||
builder.put("domainSearchResults", ImmutableList.of(obj));
|
||||
builder.put("rdapConformance", ImmutableList.of("rdap_level_0"));
|
||||
RdapTestHelper.addDomainBoilerplateNotices(
|
||||
builder, RdapTestHelper.createNotices("https://example.com/rdap/"));
|
||||
builder, RdapTestHelper.createNotices("https://example.tld/rdap/"));
|
||||
return new JSONObject(builder.build());
|
||||
}
|
||||
|
||||
|
|
|
@ -25,61 +25,35 @@ import static google.registry.testing.FullFieldsTestEntityHelper.makeHostResourc
|
|||
import static google.registry.testing.FullFieldsTestEntityHelper.makeRegistrar;
|
||||
import static google.registry.testing.FullFieldsTestEntityHelper.makeRegistrarContacts;
|
||||
import static google.registry.testing.TestDataHelper.loadFile;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import com.google.appengine.api.users.User;
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import google.registry.model.contact.ContactResource;
|
||||
import google.registry.model.host.HostResource;
|
||||
import google.registry.model.ofy.Ofy;
|
||||
import google.registry.model.registrar.Registrar;
|
||||
import google.registry.rdap.RdapMetrics.EndpointType;
|
||||
import google.registry.rdap.RdapMetrics.SearchType;
|
||||
import google.registry.rdap.RdapMetrics.WildcardType;
|
||||
import google.registry.rdap.RdapSearchResults.IncompletenessWarningType;
|
||||
import google.registry.request.Action;
|
||||
import google.registry.request.auth.AuthLevel;
|
||||
import google.registry.request.auth.AuthResult;
|
||||
import google.registry.request.auth.UserAuthInfo;
|
||||
import google.registry.testing.AppEngineRule;
|
||||
import google.registry.testing.FakeClock;
|
||||
import google.registry.testing.FakeResponse;
|
||||
import google.registry.testing.InjectRule;
|
||||
import google.registry.ui.server.registrar.AuthenticatedRegistrarAccessor;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
import javax.annotation.Nullable;
|
||||
import org.joda.time.DateTime;
|
||||
import org.json.simple.JSONValue;
|
||||
import org.junit.Before;
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.junit.runners.JUnit4;
|
||||
|
||||
/** Unit tests for {@link RdapEntityAction}. */
|
||||
@RunWith(JUnit4.class)
|
||||
public class RdapEntityActionTest {
|
||||
public class RdapEntityActionTest extends RdapActionBaseTestCase<RdapEntityAction> {
|
||||
|
||||
@Rule
|
||||
public final AppEngineRule appEngine = AppEngineRule.builder()
|
||||
.withDatastore()
|
||||
.build();
|
||||
|
||||
@Rule
|
||||
public final InjectRule inject = new InjectRule();
|
||||
|
||||
private final FakeResponse response = new FakeResponse();
|
||||
private final FakeClock clock = new FakeClock(DateTime.parse("2000-01-01TZ"));
|
||||
private final AuthenticatedRegistrarAccessor registrarAccessor =
|
||||
mock(AuthenticatedRegistrarAccessor.class);
|
||||
private final RdapMetrics rdapMetrics = mock(RdapMetrics.class);
|
||||
|
||||
private RdapEntityAction action;
|
||||
public RdapEntityActionTest() {
|
||||
super(RdapEntityAction.class, RdapEntityAction.PATH);
|
||||
}
|
||||
|
||||
private Registrar registrarLol;
|
||||
private ContactResource registrant;
|
||||
|
@ -88,19 +62,8 @@ public class RdapEntityActionTest {
|
|||
private ContactResource disconnectedContact;
|
||||
private ContactResource deletedContact;
|
||||
|
||||
private static final AuthResult AUTH_RESULT =
|
||||
AuthResult.create(
|
||||
AuthLevel.USER,
|
||||
UserAuthInfo.create(new User("rdap.user@user.com", "gmail.com", "12345"), false));
|
||||
|
||||
private static final AuthResult AUTH_RESULT_ADMIN =
|
||||
AuthResult.create(
|
||||
AuthLevel.USER,
|
||||
UserAuthInfo.create(new User("rdap.user@google.com", "gmail.com", "12345"), true));
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
inject.setStaticField(Ofy.class, "clock", clock);
|
||||
// lol
|
||||
createTld("lol");
|
||||
registrarLol = persistResource(makeRegistrar(
|
||||
|
@ -167,34 +130,6 @@ public class RdapEntityActionTest {
|
|||
clock.nowUtc().minusYears(1),
|
||||
registrarLol,
|
||||
clock.nowUtc().minusMonths(6));
|
||||
action = new RdapEntityAction();
|
||||
action.clock = clock;
|
||||
action.requestMethod = Action.Method.GET;
|
||||
action.fullServletPath = "https://example.com/rdap";
|
||||
action.response = response;
|
||||
action.registrarParam = Optional.empty();
|
||||
action.includeDeletedParam = Optional.empty();
|
||||
action.formatOutputParam = Optional.empty();
|
||||
action.rdapJsonFormatter = RdapTestHelper.getTestRdapJsonFormatter();
|
||||
action.rdapWhoisServer = null;
|
||||
action.registrarAccessor = registrarAccessor;
|
||||
action.authResult = AUTH_RESULT;
|
||||
action.rdapMetrics = rdapMetrics;
|
||||
}
|
||||
|
||||
private void login(String registrar) {
|
||||
when(registrarAccessor.guessClientId()).thenReturn(registrar);
|
||||
}
|
||||
|
||||
private void loginAsAdmin() {
|
||||
action.authResult = AUTH_RESULT_ADMIN;
|
||||
when(registrarAccessor.guessClientId()).thenReturn("irrelevant");
|
||||
}
|
||||
|
||||
private Object generateActualJson(String name) {
|
||||
action.requestPath = RdapEntityAction.PATH + name;
|
||||
action.run();
|
||||
return JSONValue.parse(response.getPayload());
|
||||
}
|
||||
|
||||
private Object generateExpectedJson(String handle, String expectedOutputFile) {
|
||||
|
@ -262,7 +197,7 @@ public class RdapEntityActionTest {
|
|||
RdapTestHelper.addNonDomainBoilerplateNotices(
|
||||
builder,
|
||||
RdapTestHelper.createNotices(
|
||||
"https://example.com/rdap/",
|
||||
"https://example.tld/rdap/",
|
||||
addNoPersonalDataRemark
|
||||
? RdapTestHelper.ContactNoticeType.CONTACT
|
||||
: RdapTestHelper.ContactNoticeType.NONE,
|
||||
|
|
|
@ -16,8 +16,6 @@ package google.registry.rdap;
|
|||
|
||||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
import static google.registry.rdap.RdapAuthorization.Role.ADMINISTRATOR;
|
||||
import static google.registry.rdap.RdapAuthorization.Role.REGISTRAR;
|
||||
import static google.registry.request.Action.Method.GET;
|
||||
import static google.registry.testing.DatastoreHelper.createTld;
|
||||
import static google.registry.testing.DatastoreHelper.persistResource;
|
||||
|
@ -30,64 +28,44 @@ import static google.registry.testing.FullFieldsTestEntityHelper.makeHistoryEntr
|
|||
import static google.registry.testing.FullFieldsTestEntityHelper.makeRegistrar;
|
||||
import static google.registry.testing.FullFieldsTestEntityHelper.makeRegistrarContacts;
|
||||
import static google.registry.testing.TestDataHelper.loadFile;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import com.google.appengine.api.users.User;
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import com.google.common.collect.ImmutableListMultimap;
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
import google.registry.model.ImmutableObject;
|
||||
import google.registry.model.contact.ContactResource;
|
||||
import google.registry.model.ofy.Ofy;
|
||||
import google.registry.model.registrar.Registrar;
|
||||
import google.registry.model.reporting.HistoryEntry;
|
||||
import google.registry.rdap.RdapMetrics.EndpointType;
|
||||
import google.registry.rdap.RdapMetrics.SearchType;
|
||||
import google.registry.rdap.RdapSearchResults.IncompletenessWarningType;
|
||||
import google.registry.request.Action;
|
||||
import google.registry.request.auth.AuthLevel;
|
||||
import google.registry.request.auth.AuthResult;
|
||||
import google.registry.request.auth.UserAuthInfo;
|
||||
import google.registry.testing.AppEngineRule;
|
||||
import google.registry.testing.FakeClock;
|
||||
import google.registry.testing.FakeResponse;
|
||||
import google.registry.testing.InjectRule;
|
||||
import google.registry.ui.server.registrar.AuthenticatedRegistrarAccessor;
|
||||
import java.net.URLDecoder;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
import javax.annotation.Nullable;
|
||||
import org.joda.time.DateTime;
|
||||
import org.json.simple.JSONArray;
|
||||
import org.json.simple.JSONObject;
|
||||
import org.json.simple.JSONValue;
|
||||
import org.junit.Before;
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.junit.runners.JUnit4;
|
||||
|
||||
/** Unit tests for {@link RdapEntitySearchAction}. */
|
||||
@RunWith(JUnit4.class)
|
||||
public class RdapEntitySearchActionTest extends RdapSearchActionTestCase {
|
||||
public class RdapEntitySearchActionTest extends RdapSearchActionTestCase<RdapEntitySearchAction> {
|
||||
|
||||
@Rule public final AppEngineRule appEngine = AppEngineRule.builder().withDatastore().build();
|
||||
@Rule public final InjectRule inject = new InjectRule();
|
||||
public RdapEntitySearchActionTest() {
|
||||
super(RdapEntitySearchAction.class, RdapEntitySearchAction.PATH);
|
||||
}
|
||||
|
||||
private enum QueryType {
|
||||
FULL_NAME,
|
||||
HANDLE
|
||||
}
|
||||
|
||||
private final FakeClock clock = new FakeClock(DateTime.parse("2000-01-01T00:00:00Z"));
|
||||
private final AuthenticatedRegistrarAccessor registrarAccessor =
|
||||
mock(AuthenticatedRegistrarAccessor.class);
|
||||
private final RdapEntitySearchAction action = new RdapEntitySearchAction();
|
||||
|
||||
private FakeResponse response = new FakeResponse();
|
||||
|
||||
private Registrar registrarDeleted;
|
||||
private Registrar registrarInactive;
|
||||
private Registrar registrarTest;
|
||||
|
@ -128,20 +106,8 @@ public class RdapEntitySearchActionTest extends RdapSearchActionTestCase {
|
|||
return JSONValue.parse(response.getPayload());
|
||||
}
|
||||
|
||||
private static final AuthResult AUTH_RESULT =
|
||||
AuthResult.create(
|
||||
AuthLevel.USER,
|
||||
UserAuthInfo.create(new User("rdap.user@user.com", "gmail.com", "12345"), false));
|
||||
|
||||
private static final AuthResult AUTH_RESULT_ADMIN =
|
||||
AuthResult.create(
|
||||
AuthLevel.USER,
|
||||
UserAuthInfo.create(new User("rdap.user@google.com", "gmail.com", "12345"), true));
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
inject.setStaticField(Ofy.class, "clock", clock);
|
||||
|
||||
createTld("tld");
|
||||
|
||||
// deleted
|
||||
|
@ -187,37 +153,9 @@ public class RdapEntitySearchActionTest extends RdapSearchActionTestCase {
|
|||
registrarDeleted,
|
||||
clock.nowUtc().minusMonths(6));
|
||||
|
||||
action.clock = clock;
|
||||
action.requestMethod = Action.Method.GET;
|
||||
action.fullServletPath = "https://example.com/rdap";
|
||||
action.requestUrl = "https://example.com/rdap/entities";
|
||||
action.requestPath = RdapEntitySearchAction.PATH;
|
||||
action.parameterMap = ImmutableListMultimap.of();
|
||||
action.response = response;
|
||||
action.rdapJsonFormatter = RdapTestHelper.getTestRdapJsonFormatter();
|
||||
action.rdapResultSetMaxSize = 4;
|
||||
action.rdapWhoisServer = null;
|
||||
action.fnParam = Optional.empty();
|
||||
action.handleParam = Optional.empty();
|
||||
action.subtypeParam = Optional.empty();
|
||||
action.registrarParam = Optional.empty();
|
||||
action.includeDeletedParam = Optional.empty();
|
||||
action.formatOutputParam = Optional.empty();
|
||||
action.registrarAccessor = registrarAccessor;
|
||||
action.authResult = AUTH_RESULT;
|
||||
action.rdapMetrics = rdapMetrics;
|
||||
action.cursorTokenParam = Optional.empty();
|
||||
}
|
||||
|
||||
private void login(String registrar) {
|
||||
when(registrarAccessor.guessClientId()).thenReturn(registrar);
|
||||
metricRole = REGISTRAR;
|
||||
}
|
||||
|
||||
private void loginAsAdmin() {
|
||||
action.authResult = AUTH_RESULT_ADMIN;
|
||||
when(registrarAccessor.guessClientId()).thenReturn("irrelevant");
|
||||
metricRole = ADMINISTRATOR;
|
||||
}
|
||||
|
||||
private Object generateExpectedJson(String expectedOutputFile) {
|
||||
|
@ -269,7 +207,7 @@ public class RdapEntitySearchActionTest extends RdapSearchActionTestCase {
|
|||
builder.put("entitySearchResults", ImmutableList.of(obj));
|
||||
builder.put("rdapConformance", ImmutableList.of("rdap_level_0"));
|
||||
RdapTestHelper.addNonDomainBoilerplateNotices(
|
||||
builder, RdapTestHelper.createNotices("https://example.com/rdap/"));
|
||||
builder, RdapTestHelper.createNotices("https://example.tld/rdap/"));
|
||||
return new JSONObject(builder.build());
|
||||
}
|
||||
|
||||
|
|
|
@ -16,73 +16,22 @@ package google.registry.rdap;
|
|||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
import static google.registry.testing.TestDataHelper.loadFile;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.verify;
|
||||
|
||||
import com.google.appengine.api.users.User;
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
import google.registry.model.ofy.Ofy;
|
||||
import google.registry.rdap.RdapMetrics.EndpointType;
|
||||
import google.registry.rdap.RdapMetrics.SearchType;
|
||||
import google.registry.rdap.RdapMetrics.WildcardType;
|
||||
import google.registry.rdap.RdapSearchResults.IncompletenessWarningType;
|
||||
import google.registry.request.Action;
|
||||
import google.registry.request.auth.AuthLevel;
|
||||
import google.registry.request.auth.AuthResult;
|
||||
import google.registry.request.auth.UserAuthInfo;
|
||||
import google.registry.testing.FakeClock;
|
||||
import google.registry.testing.FakeResponse;
|
||||
import google.registry.testing.InjectRule;
|
||||
import google.registry.ui.server.registrar.AuthenticatedRegistrarAccessor;
|
||||
import java.util.Optional;
|
||||
import org.joda.time.DateTime;
|
||||
import org.json.simple.JSONValue;
|
||||
import org.junit.Before;
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.junit.runners.JUnit4;
|
||||
|
||||
/** Unit tests for {@link RdapHelpAction}. */
|
||||
@RunWith(JUnit4.class)
|
||||
public class RdapHelpActionTest {
|
||||
public class RdapHelpActionTest extends RdapActionBaseTestCase<RdapHelpAction> {
|
||||
|
||||
@Rule
|
||||
public final InjectRule inject = new InjectRule();
|
||||
|
||||
private final FakeResponse response = new FakeResponse();
|
||||
private final FakeClock clock = new FakeClock(DateTime.parse("2000-01-01TZ"));
|
||||
private final AuthenticatedRegistrarAccessor registrarAccessor =
|
||||
mock(AuthenticatedRegistrarAccessor.class);
|
||||
private final User user = new User("rdap.user@example.com", "gmail.com", "12345");
|
||||
private final UserAuthInfo userAuthInfo = UserAuthInfo.create(user, false);
|
||||
private final RdapMetrics rdapMetrics = mock(RdapMetrics.class);
|
||||
|
||||
private RdapHelpAction action;
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
inject.setStaticField(Ofy.class, "clock", clock);
|
||||
|
||||
action = new RdapHelpAction();
|
||||
action.clock = clock;
|
||||
action.fullServletPath = "https://example.tld/rdap";
|
||||
action.requestMethod = Action.Method.GET;
|
||||
action.registrarAccessor = registrarAccessor;
|
||||
action.authResult = AuthResult.create(AuthLevel.USER, userAuthInfo);
|
||||
action.includeDeletedParam = Optional.empty();
|
||||
action.registrarParam = Optional.empty();
|
||||
action.formatOutputParam = Optional.empty();
|
||||
action.response = response;
|
||||
action.rdapJsonFormatter = RdapTestHelper.getTestRdapJsonFormatter();
|
||||
action.rdapWhoisServer = null;
|
||||
action.rdapMetrics = rdapMetrics;
|
||||
}
|
||||
|
||||
private Object generateActualJson(String helpPath) {
|
||||
action.requestPath = RdapHelpAction.PATH + helpPath;
|
||||
action.run();
|
||||
return JSONValue.parse(response.getPayload());
|
||||
public RdapHelpActionTest() {
|
||||
super(RdapHelpAction.class, RdapHelpAction.PATH);
|
||||
}
|
||||
|
||||
private Object generateExpectedJson(String name, String expectedOutputFile) {
|
||||
|
|
|
@ -20,72 +20,36 @@ import static google.registry.testing.DatastoreHelper.persistResource;
|
|||
import static google.registry.testing.FullFieldsTestEntityHelper.makeAndPersistHostResource;
|
||||
import static google.registry.testing.FullFieldsTestEntityHelper.makeRegistrar;
|
||||
import static google.registry.testing.TestDataHelper.loadFile;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import com.google.appengine.api.users.User;
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import google.registry.model.ofy.Ofy;
|
||||
import google.registry.model.registrar.Registrar;
|
||||
import google.registry.rdap.RdapMetrics.EndpointType;
|
||||
import google.registry.rdap.RdapMetrics.SearchType;
|
||||
import google.registry.rdap.RdapMetrics.WildcardType;
|
||||
import google.registry.rdap.RdapSearchResults.IncompletenessWarningType;
|
||||
import google.registry.request.Action;
|
||||
import google.registry.request.HttpException.ForbiddenException;
|
||||
import google.registry.request.auth.AuthLevel;
|
||||
import google.registry.request.auth.AuthResult;
|
||||
import google.registry.request.auth.UserAuthInfo;
|
||||
import google.registry.testing.AppEngineRule;
|
||||
import google.registry.testing.FakeClock;
|
||||
import google.registry.testing.FakeResponse;
|
||||
import google.registry.testing.InjectRule;
|
||||
import google.registry.ui.server.registrar.AuthenticatedRegistrarAccessor;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
import javax.annotation.Nullable;
|
||||
import org.joda.time.DateTime;
|
||||
import org.json.simple.JSONValue;
|
||||
import org.junit.Before;
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.junit.runners.JUnit4;
|
||||
|
||||
/** Unit tests for {@link RdapNameserverAction}. */
|
||||
@RunWith(JUnit4.class)
|
||||
public class RdapNameserverActionTest {
|
||||
public class RdapNameserverActionTest extends RdapActionBaseTestCase<RdapNameserverAction> {
|
||||
|
||||
@Rule
|
||||
public final AppEngineRule appEngine = AppEngineRule.builder()
|
||||
.withDatastore()
|
||||
.build();
|
||||
|
||||
@Rule
|
||||
public final InjectRule inject = new InjectRule();
|
||||
|
||||
private final FakeResponse response = new FakeResponse();
|
||||
private final FakeClock clock = new FakeClock(DateTime.parse("2000-01-01TZ"));
|
||||
private final AuthenticatedRegistrarAccessor registrarAccessor =
|
||||
mock(AuthenticatedRegistrarAccessor.class);
|
||||
private final RdapMetrics rdapMetrics = mock(RdapMetrics.class);
|
||||
|
||||
private static final AuthResult AUTH_RESULT =
|
||||
AuthResult.create(
|
||||
AuthLevel.USER,
|
||||
UserAuthInfo.create(new User("rdap.user@user.com", "gmail.com", "12345"), false));
|
||||
|
||||
private static final AuthResult AUTH_RESULT_ADMIN =
|
||||
AuthResult.create(
|
||||
AuthLevel.USER,
|
||||
UserAuthInfo.create(new User("rdap.user@google.com", "gmail.com", "12345"), true));
|
||||
public RdapNameserverActionTest() {
|
||||
super(RdapNameserverAction.class, RdapNameserverAction.PATH);
|
||||
}
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
inject.setStaticField(Ofy.class, "clock", clock);
|
||||
// normal
|
||||
createTld("lol");
|
||||
makeAndPersistHostResource(
|
||||
|
@ -111,43 +75,6 @@ public class RdapNameserverActionTest {
|
|||
makeAndPersistHostResource("ns1.domain.external", "9.10.11.12", clock.nowUtc().minusYears(1));
|
||||
}
|
||||
|
||||
private RdapNameserverAction newRdapNameserverAction(
|
||||
String input, Optional<String> desiredRegistrar, Optional<Boolean> includeDeleted) {
|
||||
return newRdapNameserverAction(input, desiredRegistrar, includeDeleted, AUTH_RESULT);
|
||||
}
|
||||
|
||||
private RdapNameserverAction newRdapNameserverAction(
|
||||
String input,
|
||||
Optional<String> desiredRegistrar,
|
||||
Optional<Boolean> includeDeleted,
|
||||
AuthResult authResult) {
|
||||
RdapNameserverAction action = new RdapNameserverAction();
|
||||
action.clock = clock;
|
||||
action.requestMethod = Action.Method.GET;
|
||||
action.fullServletPath = "https://example.tld/rdap";
|
||||
action.response = response;
|
||||
action.requestPath = RdapNameserverAction.PATH.concat(input);
|
||||
action.registrarParam = desiredRegistrar;
|
||||
action.includeDeletedParam = includeDeleted;
|
||||
action.formatOutputParam = Optional.empty();
|
||||
action.rdapJsonFormatter = RdapTestHelper.getTestRdapJsonFormatter();
|
||||
action.rdapWhoisServer = null;
|
||||
action.authResult = authResult;
|
||||
action.registrarAccessor = registrarAccessor;
|
||||
action.rdapMetrics = rdapMetrics;
|
||||
return action;
|
||||
}
|
||||
|
||||
private Object generateActualJson(String name) {
|
||||
return generateActualJson(name, Optional.empty(), Optional.empty());
|
||||
}
|
||||
|
||||
private Object generateActualJson(
|
||||
String name, Optional<String> desiredRegistrar, Optional<Boolean> includeDeleted) {
|
||||
newRdapNameserverAction(name, desiredRegistrar, includeDeleted).run();
|
||||
return JSONValue.parse(response.getPayload());
|
||||
}
|
||||
|
||||
private Object generateExpectedJson(
|
||||
String name,
|
||||
@Nullable ImmutableMap<String, String> otherSubstitutions,
|
||||
|
@ -328,9 +255,8 @@ public class RdapNameserverActionTest {
|
|||
|
||||
@Test
|
||||
public void testNameserver_found_sameRegistrarRequested() {
|
||||
assertThat(
|
||||
generateActualJson(
|
||||
"ns1.cat.lol", Optional.of("TheRegistrar"), Optional.empty()))
|
||||
action.registrarParam = Optional.of("TheRegistrar");
|
||||
assertThat(generateActualJson("ns1.cat.lol"))
|
||||
.isEqualTo(
|
||||
generateExpectedJsonWithTopLevelEntries(
|
||||
"ns1.cat.lol",
|
||||
|
@ -345,7 +271,9 @@ public class RdapNameserverActionTest {
|
|||
|
||||
@Test
|
||||
public void testNameserver_notFound_differentRegistrarRequested() {
|
||||
generateActualJson("ns1.cat.lol", Optional.of("otherregistrar"), Optional.of(false));
|
||||
action.registrarParam = Optional.of("otherregistrar");
|
||||
action.includeDeletedParam = Optional.of(false);
|
||||
generateActualJson("ns1.cat.lol");
|
||||
assertThat(response.getStatus()).isEqualTo(404);
|
||||
}
|
||||
|
||||
|
@ -357,29 +285,32 @@ public class RdapNameserverActionTest {
|
|||
|
||||
@Test
|
||||
public void testDeletedNameserver_notFound_includeDeletedSetFalse() {
|
||||
generateActualJson("nsdeleted.cat.lol", Optional.empty(), Optional.of(false));
|
||||
action.includeDeletedParam = Optional.of(false);
|
||||
generateActualJson("nsdeleted.cat.lol");
|
||||
assertThat(response.getStatus()).isEqualTo(404);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDeletedNameserver_notFound_notLoggedIn() {
|
||||
when(registrarAccessor.guessClientId()).thenThrow(new ForbiddenException("blah"));
|
||||
generateActualJson("nsdeleted.cat.lol", Optional.empty(), Optional.of(true));
|
||||
logout();
|
||||
action.includeDeletedParam = Optional.of(true);
|
||||
generateActualJson("nsdeleted.cat.lol");
|
||||
assertThat(response.getStatus()).isEqualTo(404);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDeletedNameserver_notFound_loggedInAsDifferentRegistrar() {
|
||||
when(registrarAccessor.guessClientId()).thenReturn("otherregistrar");
|
||||
generateActualJson("nsdeleted.cat.lol", Optional.empty(), Optional.of(true));
|
||||
login("otherregistrar");
|
||||
action.includeDeletedParam = Optional.of(true);
|
||||
generateActualJson("nsdeleted.cat.lol");
|
||||
assertThat(response.getStatus()).isEqualTo(404);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDeletedNameserver_found_loggedInAsCorrectRegistrar() {
|
||||
when(registrarAccessor.guessClientId()).thenReturn("TheRegistrar");
|
||||
assertThat(
|
||||
generateActualJson("nsdeleted.cat.lol", Optional.empty(), Optional.of(true)))
|
||||
login("TheRegistrar");
|
||||
action.includeDeletedParam = Optional.of(true);
|
||||
assertThat(generateActualJson("nsdeleted.cat.lol"))
|
||||
.isEqualTo(
|
||||
generateExpectedJsonWithTopLevelEntries(
|
||||
"nsdeleted.cat.lol",
|
||||
|
@ -394,14 +325,9 @@ public class RdapNameserverActionTest {
|
|||
|
||||
@Test
|
||||
public void testDeletedNameserver_found_loggedInAsAdmin() {
|
||||
when(registrarAccessor.guessClientId()).thenReturn("irrelevant");
|
||||
newRdapNameserverAction(
|
||||
"nsdeleted.cat.lol",
|
||||
Optional.empty(),
|
||||
Optional.of(true),
|
||||
AUTH_RESULT_ADMIN)
|
||||
.run();
|
||||
assertThat(JSONValue.parse(response.getPayload()))
|
||||
loginAsAdmin();
|
||||
action.includeDeletedParam = Optional.of(true);
|
||||
assertThat(generateActualJson("nsdeleted.cat.lol"))
|
||||
.isEqualTo(
|
||||
generateExpectedJsonWithTopLevelEntries(
|
||||
"nsdeleted.cat.lol",
|
||||
|
@ -416,9 +342,10 @@ public class RdapNameserverActionTest {
|
|||
|
||||
@Test
|
||||
public void testDeletedNameserver_found_sameRegistrarRequested() {
|
||||
when(registrarAccessor.guessClientId()).thenReturn("TheRegistrar");
|
||||
assertThat(
|
||||
generateActualJson("nsdeleted.cat.lol", Optional.of("TheRegistrar"), Optional.of(true)))
|
||||
login("TheRegistrar");
|
||||
action.registrarParam = Optional.of("TheRegistrar");
|
||||
action.includeDeletedParam = Optional.of(true);
|
||||
assertThat(generateActualJson("nsdeleted.cat.lol"))
|
||||
.isEqualTo(
|
||||
generateExpectedJsonWithTopLevelEntries(
|
||||
"nsdeleted.cat.lol",
|
||||
|
@ -433,8 +360,10 @@ public class RdapNameserverActionTest {
|
|||
|
||||
@Test
|
||||
public void testDeletedNameserver_notFound_differentRegistrarRequested() {
|
||||
when(registrarAccessor.guessClientId()).thenReturn("TheRegistrar");
|
||||
generateActualJson("ns1.cat.lol", Optional.of("otherregistrar"), Optional.of(false));
|
||||
login("TheRegistrar");
|
||||
action.registrarParam = Optional.of("otherregistrar");
|
||||
action.includeDeletedParam = Optional.of(false);
|
||||
generateActualJson("ns1.cat.lol");
|
||||
assertThat(response.getStatus()).isEqualTo(404);
|
||||
}
|
||||
|
||||
|
|
|
@ -15,8 +15,6 @@
|
|||
package google.registry.rdap;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
import static google.registry.rdap.RdapAuthorization.Role.ADMINISTRATOR;
|
||||
import static google.registry.rdap.RdapAuthorization.Role.REGISTRAR;
|
||||
import static google.registry.request.Action.Method.GET;
|
||||
import static google.registry.testing.DatastoreHelper.createTld;
|
||||
import static google.registry.testing.DatastoreHelper.persistResource;
|
||||
|
@ -29,10 +27,7 @@ import static google.registry.testing.FullFieldsTestEntityHelper.makeHostResourc
|
|||
import static google.registry.testing.FullFieldsTestEntityHelper.makeRegistrar;
|
||||
import static google.registry.testing.FullFieldsTestEntityHelper.makeRegistrarContacts;
|
||||
import static google.registry.testing.TestDataHelper.loadFile;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import com.google.appengine.api.users.User;
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import com.google.common.collect.ImmutableListMultimap;
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
|
@ -40,58 +35,31 @@ import com.google.common.collect.ImmutableSet;
|
|||
import com.googlecode.objectify.Key;
|
||||
import google.registry.model.domain.DomainResource;
|
||||
import google.registry.model.host.HostResource;
|
||||
import google.registry.model.ofy.Ofy;
|
||||
import google.registry.model.registrar.Registrar;
|
||||
import google.registry.rdap.RdapMetrics.EndpointType;
|
||||
import google.registry.rdap.RdapMetrics.SearchType;
|
||||
import google.registry.rdap.RdapMetrics.WildcardType;
|
||||
import google.registry.rdap.RdapSearchResults.IncompletenessWarningType;
|
||||
import google.registry.request.Action;
|
||||
import google.registry.request.auth.AuthLevel;
|
||||
import google.registry.request.auth.AuthResult;
|
||||
import google.registry.request.auth.UserAuthInfo;
|
||||
import google.registry.testing.AppEngineRule;
|
||||
import google.registry.testing.FakeClock;
|
||||
import google.registry.testing.FakeResponse;
|
||||
import google.registry.testing.InjectRule;
|
||||
import google.registry.ui.server.registrar.AuthenticatedRegistrarAccessor;
|
||||
import java.net.URLDecoder;
|
||||
import java.util.Optional;
|
||||
import javax.annotation.Nullable;
|
||||
import org.joda.time.DateTime;
|
||||
import org.json.simple.JSONArray;
|
||||
import org.json.simple.JSONObject;
|
||||
import org.json.simple.JSONValue;
|
||||
import org.junit.Before;
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.junit.runners.JUnit4;
|
||||
|
||||
/** Unit tests for {@link RdapNameserverSearchAction}. */
|
||||
@RunWith(JUnit4.class)
|
||||
public class RdapNameserverSearchActionTest extends RdapSearchActionTestCase {
|
||||
|
||||
@Rule public final AppEngineRule appEngine = AppEngineRule.builder().withDatastore().build();
|
||||
|
||||
@Rule public final InjectRule inject = new InjectRule();
|
||||
|
||||
private FakeResponse response = new FakeResponse();
|
||||
private final FakeClock clock = new FakeClock(DateTime.parse("2000-01-01T00:00:00Z"));
|
||||
private final AuthenticatedRegistrarAccessor registrarAccessor =
|
||||
mock(AuthenticatedRegistrarAccessor.class);
|
||||
private final RdapNameserverSearchAction action = new RdapNameserverSearchAction();
|
||||
|
||||
private static final AuthResult AUTH_RESULT =
|
||||
AuthResult.create(
|
||||
AuthLevel.USER,
|
||||
UserAuthInfo.create(new User("rdap.user@user.com", "gmail.com", "12345"), false));
|
||||
|
||||
private static final AuthResult AUTH_RESULT_ADMIN =
|
||||
AuthResult.create(
|
||||
AuthLevel.USER,
|
||||
UserAuthInfo.create(new User("rdap.user@google.com", "gmail.com", "12345"), true));
|
||||
public class RdapNameserverSearchActionTest
|
||||
extends RdapSearchActionTestCase<RdapNameserverSearchAction> {
|
||||
|
||||
public RdapNameserverSearchActionTest() {
|
||||
super(RdapNameserverSearchAction.class, RdapNameserverSearchAction.PATH);
|
||||
}
|
||||
|
||||
private DomainResource domainCatLol;
|
||||
private HostResource hostNs1CatLol;
|
||||
|
@ -184,36 +152,8 @@ public class RdapNameserverSearchActionTest extends RdapSearchActionTestCase {
|
|||
persistResource(
|
||||
hostNs2CatLol.asBuilder().setSuperordinateDomain(Key.create(domainCatLol)).build());
|
||||
|
||||
inject.setStaticField(Ofy.class, "clock", clock);
|
||||
action.clock = clock;
|
||||
action.fullServletPath = "https://example.tld/rdap";
|
||||
action.requestUrl = "https://example.tld/rdap/nameservers";
|
||||
action.requestPath = RdapNameserverSearchAction.PATH;
|
||||
action.parameterMap = ImmutableListMultimap.of();
|
||||
action.requestMethod = Action.Method.GET;
|
||||
action.response = response;
|
||||
action.rdapJsonFormatter = RdapTestHelper.getTestRdapJsonFormatter();
|
||||
action.rdapResultSetMaxSize = 4;
|
||||
action.rdapWhoisServer = null;
|
||||
action.ipParam = Optional.empty();
|
||||
action.nameParam = Optional.empty();
|
||||
action.registrarParam = Optional.empty();
|
||||
action.includeDeletedParam = Optional.empty();
|
||||
action.formatOutputParam = Optional.empty();
|
||||
action.authResult = AUTH_RESULT;
|
||||
action.registrarAccessor = registrarAccessor;
|
||||
action.rdapMetrics = rdapMetrics;
|
||||
action.cursorTokenParam = Optional.empty();
|
||||
}
|
||||
private void login(String clientId) {
|
||||
when(registrarAccessor.guessClientId()).thenReturn(clientId);
|
||||
metricRole = REGISTRAR;
|
||||
}
|
||||
|
||||
private void loginAsAdmin() {
|
||||
when(registrarAccessor.guessClientId()).thenReturn("irrelevant");
|
||||
action.authResult = AUTH_RESULT_ADMIN;
|
||||
metricRole = ADMINISTRATOR;
|
||||
}
|
||||
|
||||
private Object generateExpectedJson(String expectedOutputFile) {
|
||||
|
|
|
@ -14,26 +14,39 @@
|
|||
|
||||
package google.registry.rdap;
|
||||
|
||||
import static google.registry.rdap.RdapAuthorization.Role.PUBLIC;
|
||||
import static javax.servlet.http.HttpServletResponse.SC_OK;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.verify;
|
||||
|
||||
import com.google.common.collect.ImmutableListMultimap;
|
||||
import google.registry.rdap.RdapMetrics.EndpointType;
|
||||
import google.registry.rdap.RdapMetrics.SearchType;
|
||||
import google.registry.rdap.RdapMetrics.WildcardType;
|
||||
import google.registry.rdap.RdapSearchResults.IncompletenessWarningType;
|
||||
import google.registry.request.Action;
|
||||
import java.util.Optional;
|
||||
import org.junit.Before;
|
||||
|
||||
public class RdapSearchActionTestCase {
|
||||
/** Common unit test code for actions inheriting {@link RdapSearchActionBase}. */
|
||||
public class RdapSearchActionTestCase<A extends RdapSearchActionBase>
|
||||
extends RdapActionBaseTestCase<A> {
|
||||
|
||||
protected RdapSearchActionTestCase(Class<A> rdapActionClass, String path) {
|
||||
super(rdapActionClass, path);
|
||||
}
|
||||
|
||||
RdapAuthorization.Role metricRole = PUBLIC;
|
||||
SearchType metricSearchType = SearchType.NONE;
|
||||
WildcardType metricWildcardType = WildcardType.INVALID;
|
||||
int metricPrefixLength = 0;
|
||||
int metricStatusCode = SC_OK;
|
||||
final RdapMetrics rdapMetrics = mock(RdapMetrics.class);
|
||||
|
||||
@Before
|
||||
public void initRdapSearchActionTestCase() {
|
||||
action.parameterMap = ImmutableListMultimap.of();
|
||||
action.cursorTokenParam = Optional.empty();
|
||||
action.rdapResultSetMaxSize = 4;
|
||||
action.requestUrl = "https://example.tld" + actionPath;
|
||||
action.requestPath = actionPath;
|
||||
}
|
||||
|
||||
void rememberWildcardType(String queryString) {
|
||||
try {
|
||||
|
|
|
@ -5,9 +5,9 @@
|
|||
"links" :
|
||||
[
|
||||
{
|
||||
"value" : "https://example.com/rdap/entity/%NAME%",
|
||||
"value" : "https://example.tld/rdap/entity/%NAME%",
|
||||
"rel" : "self",
|
||||
"href": "https://example.com/rdap/entity/%NAME%",
|
||||
"href": "https://example.tld/rdap/entity/%NAME%",
|
||||
"type" : "application/rdap+json"
|
||||
}
|
||||
],
|
||||
|
|
|
@ -5,9 +5,9 @@
|
|||
"links" :
|
||||
[
|
||||
{
|
||||
"value" : "https://example.com/rdap/entity/%NAME%",
|
||||
"value" : "https://example.tld/rdap/entity/%NAME%",
|
||||
"rel" : "self",
|
||||
"href": "https://example.com/rdap/entity/%NAME%",
|
||||
"href": "https://example.tld/rdap/entity/%NAME%",
|
||||
"type" : "application/rdap+json"
|
||||
}
|
||||
],
|
||||
|
|
|
@ -5,9 +5,9 @@
|
|||
"links" :
|
||||
[
|
||||
{
|
||||
"value" : "https://example.com/rdap/entity/%NAME%",
|
||||
"value" : "https://example.tld/rdap/entity/%NAME%",
|
||||
"rel" : "self",
|
||||
"href": "https://example.com/rdap/entity/%NAME%",
|
||||
"href": "https://example.tld/rdap/entity/%NAME%",
|
||||
"type" : "application/rdap+json"
|
||||
}
|
||||
],
|
||||
|
|
|
@ -5,9 +5,9 @@
|
|||
"links" :
|
||||
[
|
||||
{
|
||||
"value" : "https://example.com/rdap/entity/%NAME%",
|
||||
"value" : "https://example.tld/rdap/entity/%NAME%",
|
||||
"rel" : "self",
|
||||
"href": "https://example.com/rdap/entity/%NAME%",
|
||||
"href": "https://example.tld/rdap/entity/%NAME%",
|
||||
"type" : "application/rdap+json"
|
||||
}
|
||||
],
|
||||
|
|
|
@ -5,9 +5,9 @@
|
|||
"links" :
|
||||
[
|
||||
{
|
||||
"value" : "https://example.com/rdap/entity/%NAME%",
|
||||
"value" : "https://example.tld/rdap/entity/%NAME%",
|
||||
"rel" : "self",
|
||||
"href": "https://example.com/rdap/entity/%NAME%",
|
||||
"href": "https://example.tld/rdap/entity/%NAME%",
|
||||
"type" : "application/rdap+json"
|
||||
}
|
||||
],
|
||||
|
|
|
@ -8,10 +8,10 @@
|
|||
"handle": "%HANDLE%",
|
||||
"links": [
|
||||
{
|
||||
"href": "https://example.com/rdap/domain/%NAME%",
|
||||
"href": "https://example.tld/rdap/domain/%NAME%",
|
||||
"type": "application/rdap+json",
|
||||
"rel": "self",
|
||||
"value": "https://example.com/rdap/domain/%NAME%"
|
||||
"value": "https://example.tld/rdap/domain/%NAME%"
|
||||
}
|
||||
],
|
||||
"events": [
|
||||
|
@ -42,10 +42,10 @@
|
|||
"handle": "%NAMESERVER1ROID%",
|
||||
"links": [
|
||||
{
|
||||
"href": "https://example.com/rdap/nameserver/%NAMESERVER1NAME%",
|
||||
"href": "https://example.tld/rdap/nameserver/%NAMESERVER1NAME%",
|
||||
"type": "application/rdap+json",
|
||||
"rel": "self",
|
||||
"value": "https://example.com/rdap/nameserver/%NAMESERVER1NAME%"
|
||||
"value": "https://example.tld/rdap/nameserver/%NAMESERVER1NAME%"
|
||||
}
|
||||
],
|
||||
"ldhName": "%NAMESERVER1NAME%",
|
||||
|
@ -74,10 +74,10 @@
|
|||
"roles": [ "registrar" ],
|
||||
"links": [
|
||||
{
|
||||
"href": "https://example.com/rdap/entity/1",
|
||||
"href": "https://example.tld/rdap/entity/1",
|
||||
"type": "application/rdap+json",
|
||||
"rel": "self",
|
||||
"value": "https://example.com/rdap/entity/1"
|
||||
"value": "https://example.tld/rdap/entity/1"
|
||||
}
|
||||
],
|
||||
"vcardArray" : [
|
||||
|
@ -129,10 +129,10 @@
|
|||
"handle": "%NAMESERVER2ROID%",
|
||||
"links": [
|
||||
{
|
||||
"href": "https://example.com/rdap/nameserver/%NAMESERVER2NAME%",
|
||||
"href": "https://example.tld/rdap/nameserver/%NAMESERVER2NAME%",
|
||||
"type": "application/rdap+json",
|
||||
"rel": "self",
|
||||
"value": "https://example.com/rdap/nameserver/%NAMESERVER2NAME%"
|
||||
"value": "https://example.tld/rdap/nameserver/%NAMESERVER2NAME%"
|
||||
}
|
||||
],
|
||||
"ldhName": "%NAMESERVER2NAME%",
|
||||
|
@ -161,10 +161,10 @@
|
|||
"roles": [ "registrar" ],
|
||||
"links": [
|
||||
{
|
||||
"href": "https://example.com/rdap/entity/1",
|
||||
"href": "https://example.tld/rdap/entity/1",
|
||||
"type": "application/rdap+json",
|
||||
"rel": "self",
|
||||
"value": "https://example.com/rdap/entity/1"
|
||||
"value": "https://example.tld/rdap/entity/1"
|
||||
}
|
||||
],
|
||||
"vcardArray" : [
|
||||
|
@ -222,10 +222,10 @@
|
|||
],
|
||||
"links": [
|
||||
{
|
||||
"href": "https://example.com/rdap/entity/%CONTACT1ROID%",
|
||||
"href": "https://example.tld/rdap/entity/%CONTACT1ROID%",
|
||||
"type": "application/rdap+json",
|
||||
"rel": "self",
|
||||
"value": "https://example.com/rdap/entity/%CONTACT1ROID%"
|
||||
"value": "https://example.tld/rdap/entity/%CONTACT1ROID%"
|
||||
}
|
||||
],
|
||||
"events": [
|
||||
|
@ -315,10 +315,10 @@
|
|||
],
|
||||
"links": [
|
||||
{
|
||||
"href": "https://example.com/rdap/entity/%CONTACT2ROID%",
|
||||
"href": "https://example.tld/rdap/entity/%CONTACT2ROID%",
|
||||
"type": "application/rdap+json",
|
||||
"rel": "self",
|
||||
"value": "https://example.com/rdap/entity/%CONTACT2ROID%"
|
||||
"value": "https://example.tld/rdap/entity/%CONTACT2ROID%"
|
||||
}
|
||||
],
|
||||
"events": [
|
||||
|
@ -408,10 +408,10 @@
|
|||
],
|
||||
"links": [
|
||||
{
|
||||
"href": "https://example.com/rdap/entity/%CONTACT3ROID%",
|
||||
"href": "https://example.tld/rdap/entity/%CONTACT3ROID%",
|
||||
"type": "application/rdap+json",
|
||||
"rel": "self",
|
||||
"value": "https://example.com/rdap/entity/%CONTACT3ROID%"
|
||||
"value": "https://example.tld/rdap/entity/%CONTACT3ROID%"
|
||||
}
|
||||
],
|
||||
"events": [
|
||||
|
@ -497,10 +497,10 @@
|
|||
"roles": [ "registrar" ],
|
||||
"links": [
|
||||
{
|
||||
"href": "https://example.com/rdap/entity/1",
|
||||
"href": "https://example.tld/rdap/entity/1",
|
||||
"type": "application/rdap+json",
|
||||
"rel": "self",
|
||||
"value": "https://example.com/rdap/entity/1"
|
||||
"value": "https://example.tld/rdap/entity/1"
|
||||
}
|
||||
],
|
||||
"vcardArray" : [
|
||||
|
|
|
@ -8,10 +8,10 @@
|
|||
"handle": "%HANDLE%",
|
||||
"links": [
|
||||
{
|
||||
"href": "https://example.com/rdap/domain/%NAME%",
|
||||
"href": "https://example.tld/rdap/domain/%NAME%",
|
||||
"type": "application/rdap+json",
|
||||
"rel": "self",
|
||||
"value": "https://example.com/rdap/domain/%NAME%"
|
||||
"value": "https://example.tld/rdap/domain/%NAME%"
|
||||
}
|
||||
],
|
||||
"events": [
|
||||
|
@ -42,10 +42,10 @@
|
|||
"handle": "%NAMESERVER1ROID%",
|
||||
"links": [
|
||||
{
|
||||
"href": "https://example.com/rdap/nameserver/%NAMESERVER1NAME%",
|
||||
"href": "https://example.tld/rdap/nameserver/%NAMESERVER1NAME%",
|
||||
"type": "application/rdap+json",
|
||||
"rel": "self",
|
||||
"value": "https://example.com/rdap/nameserver/%NAMESERVER1NAME%"
|
||||
"value": "https://example.tld/rdap/nameserver/%NAMESERVER1NAME%"
|
||||
}
|
||||
],
|
||||
"ldhName": "%NAMESERVER1NAME%",
|
||||
|
@ -74,10 +74,10 @@
|
|||
"roles": [ "registrar" ],
|
||||
"links": [
|
||||
{
|
||||
"href": "https://example.com/rdap/entity/1",
|
||||
"href": "https://example.tld/rdap/entity/1",
|
||||
"type": "application/rdap+json",
|
||||
"rel": "self",
|
||||
"value": "https://example.com/rdap/entity/1"
|
||||
"value": "https://example.tld/rdap/entity/1"
|
||||
}
|
||||
],
|
||||
"vcardArray" : [
|
||||
|
@ -129,10 +129,10 @@
|
|||
"handle": "%NAMESERVER2ROID%",
|
||||
"links": [
|
||||
{
|
||||
"href": "https://example.com/rdap/nameserver/%NAMESERVER2NAME%",
|
||||
"href": "https://example.tld/rdap/nameserver/%NAMESERVER2NAME%",
|
||||
"type": "application/rdap+json",
|
||||
"rel": "self",
|
||||
"value": "https://example.com/rdap/nameserver/%NAMESERVER2NAME%"
|
||||
"value": "https://example.tld/rdap/nameserver/%NAMESERVER2NAME%"
|
||||
}
|
||||
],
|
||||
"ldhName": "%NAMESERVER2NAME%",
|
||||
|
@ -161,10 +161,10 @@
|
|||
"roles": [ "registrar" ],
|
||||
"links": [
|
||||
{
|
||||
"href": "https://example.com/rdap/entity/1",
|
||||
"href": "https://example.tld/rdap/entity/1",
|
||||
"type": "application/rdap+json",
|
||||
"rel": "self",
|
||||
"value": "https://example.com/rdap/entity/1"
|
||||
"value": "https://example.tld/rdap/entity/1"
|
||||
}
|
||||
],
|
||||
"vcardArray" : [
|
||||
|
@ -222,10 +222,10 @@
|
|||
],
|
||||
"links": [
|
||||
{
|
||||
"href": "https://example.com/rdap/entity/%CONTACT1ROID%",
|
||||
"href": "https://example.tld/rdap/entity/%CONTACT1ROID%",
|
||||
"type": "application/rdap+json",
|
||||
"rel": "self",
|
||||
"value": "https://example.com/rdap/entity/%CONTACT1ROID%"
|
||||
"value": "https://example.tld/rdap/entity/%CONTACT1ROID%"
|
||||
}
|
||||
],
|
||||
"events": [
|
||||
|
@ -315,10 +315,10 @@
|
|||
],
|
||||
"links": [
|
||||
{
|
||||
"href": "https://example.com/rdap/entity/%CONTACT2ROID%",
|
||||
"href": "https://example.tld/rdap/entity/%CONTACT2ROID%",
|
||||
"type": "application/rdap+json",
|
||||
"rel": "self",
|
||||
"value": "https://example.com/rdap/entity/%CONTACT2ROID%"
|
||||
"value": "https://example.tld/rdap/entity/%CONTACT2ROID%"
|
||||
}
|
||||
],
|
||||
"events": [
|
||||
|
@ -408,10 +408,10 @@
|
|||
],
|
||||
"links": [
|
||||
{
|
||||
"href": "https://example.com/rdap/entity/%CONTACT3ROID%",
|
||||
"href": "https://example.tld/rdap/entity/%CONTACT3ROID%",
|
||||
"type": "application/rdap+json",
|
||||
"rel": "self",
|
||||
"value": "https://example.com/rdap/entity/%CONTACT3ROID%"
|
||||
"value": "https://example.tld/rdap/entity/%CONTACT3ROID%"
|
||||
}
|
||||
],
|
||||
"events": [
|
||||
|
@ -497,10 +497,10 @@
|
|||
"roles": [ "registrar" ],
|
||||
"links": [
|
||||
{
|
||||
"href": "https://example.com/rdap/entity/1",
|
||||
"href": "https://example.tld/rdap/entity/1",
|
||||
"type": "application/rdap+json",
|
||||
"rel": "self",
|
||||
"value": "https://example.com/rdap/entity/1"
|
||||
"value": "https://example.tld/rdap/entity/1"
|
||||
}
|
||||
],
|
||||
"vcardArray" : [
|
||||
|
|
|
@ -9,10 +9,10 @@
|
|||
"handle": "%HANDLE%",
|
||||
"links": [
|
||||
{
|
||||
"href": "https://example.com/rdap/domain/%NAME%",
|
||||
"href": "https://example.tld/rdap/domain/%NAME%",
|
||||
"type": "application/rdap+json",
|
||||
"rel": "self",
|
||||
"value": "https://example.com/rdap/domain/%NAME%"
|
||||
"value": "https://example.tld/rdap/domain/%NAME%"
|
||||
}
|
||||
],
|
||||
"events": [
|
||||
|
@ -48,10 +48,10 @@
|
|||
"handle": "%NAMESERVER1ROID%",
|
||||
"links": [
|
||||
{
|
||||
"href": "https://example.com/rdap/nameserver/%NAMESERVER1NAME%",
|
||||
"href": "https://example.tld/rdap/nameserver/%NAMESERVER1NAME%",
|
||||
"type": "application/rdap+json",
|
||||
"rel": "self",
|
||||
"value": "https://example.com/rdap/nameserver/%NAMESERVER1NAME%"
|
||||
"value": "https://example.tld/rdap/nameserver/%NAMESERVER1NAME%"
|
||||
}
|
||||
],
|
||||
"ldhName": "%NAMESERVER1NAME%",
|
||||
|
@ -80,10 +80,10 @@
|
|||
"roles": [ "registrar" ],
|
||||
"links": [
|
||||
{
|
||||
"href": "https://example.com/rdap/entity/1",
|
||||
"href": "https://example.tld/rdap/entity/1",
|
||||
"type": "application/rdap+json",
|
||||
"rel": "self",
|
||||
"value": "https://example.com/rdap/entity/1"
|
||||
"value": "https://example.tld/rdap/entity/1"
|
||||
}
|
||||
],
|
||||
"vcardArray" : [
|
||||
|
@ -134,10 +134,10 @@
|
|||
"handle": "%NAMESERVER2ROID%",
|
||||
"links": [
|
||||
{
|
||||
"href": "https://example.com/rdap/nameserver/%NAMESERVER2NAME%",
|
||||
"href": "https://example.tld/rdap/nameserver/%NAMESERVER2NAME%",
|
||||
"type": "application/rdap+json",
|
||||
"rel": "self",
|
||||
"value": "https://example.com/rdap/nameserver/%NAMESERVER2NAME%"
|
||||
"value": "https://example.tld/rdap/nameserver/%NAMESERVER2NAME%"
|
||||
}
|
||||
],
|
||||
"ldhName": "%NAMESERVER2NAME%",
|
||||
|
@ -166,10 +166,10 @@
|
|||
"roles": [ "registrar" ],
|
||||
"links": [
|
||||
{
|
||||
"href": "https://example.com/rdap/entity/1",
|
||||
"href": "https://example.tld/rdap/entity/1",
|
||||
"type": "application/rdap+json",
|
||||
"rel": "self",
|
||||
"value": "https://example.com/rdap/entity/1"
|
||||
"value": "https://example.tld/rdap/entity/1"
|
||||
}
|
||||
],
|
||||
"vcardArray" : [
|
||||
|
@ -226,10 +226,10 @@
|
|||
],
|
||||
"links": [
|
||||
{
|
||||
"href": "https://example.com/rdap/entity/%CONTACT1ROID%",
|
||||
"href": "https://example.tld/rdap/entity/%CONTACT1ROID%",
|
||||
"type": "application/rdap+json",
|
||||
"rel": "self",
|
||||
"value": "https://example.com/rdap/entity/%CONTACT1ROID%"
|
||||
"value": "https://example.tld/rdap/entity/%CONTACT1ROID%"
|
||||
}
|
||||
],
|
||||
"events": [
|
||||
|
@ -318,10 +318,10 @@
|
|||
],
|
||||
"links": [
|
||||
{
|
||||
"href": "https://example.com/rdap/entity/%CONTACT2ROID%",
|
||||
"href": "https://example.tld/rdap/entity/%CONTACT2ROID%",
|
||||
"type": "application/rdap+json",
|
||||
"rel": "self",
|
||||
"value": "https://example.com/rdap/entity/%CONTACT2ROID%"
|
||||
"value": "https://example.tld/rdap/entity/%CONTACT2ROID%"
|
||||
}
|
||||
],
|
||||
"events": [
|
||||
|
@ -410,10 +410,10 @@
|
|||
],
|
||||
"links": [
|
||||
{
|
||||
"href": "https://example.com/rdap/entity/%CONTACT3ROID%",
|
||||
"href": "https://example.tld/rdap/entity/%CONTACT3ROID%",
|
||||
"type": "application/rdap+json",
|
||||
"rel": "self",
|
||||
"value": "https://example.com/rdap/entity/%CONTACT3ROID%"
|
||||
"value": "https://example.tld/rdap/entity/%CONTACT3ROID%"
|
||||
}
|
||||
],
|
||||
"events": [
|
||||
|
@ -499,10 +499,10 @@
|
|||
"roles": [ "registrar" ],
|
||||
"links": [
|
||||
{
|
||||
"href": "https://example.com/rdap/entity/1",
|
||||
"href": "https://example.tld/rdap/entity/1",
|
||||
"type": "application/rdap+json",
|
||||
"rel": "self",
|
||||
"value": "https://example.com/rdap/entity/1"
|
||||
"value": "https://example.tld/rdap/entity/1"
|
||||
}
|
||||
],
|
||||
"vcardArray" : [
|
||||
|
|
|
@ -10,10 +10,10 @@
|
|||
],
|
||||
"links": [
|
||||
{
|
||||
"href": "https://example.com/rdap/domain/%NAME%",
|
||||
"href": "https://example.tld/rdap/domain/%NAME%",
|
||||
"type": "application/rdap+json",
|
||||
"rel": "self",
|
||||
"value": "https://example.com/rdap/domain/%NAME%"
|
||||
"value": "https://example.tld/rdap/domain/%NAME%"
|
||||
}
|
||||
],
|
||||
"events": [
|
||||
|
@ -44,10 +44,10 @@
|
|||
"handle": "%NAMESERVER1ROID%",
|
||||
"links": [
|
||||
{
|
||||
"href": "https://example.com/rdap/nameserver/%NAMESERVER1NAME%",
|
||||
"href": "https://example.tld/rdap/nameserver/%NAMESERVER1NAME%",
|
||||
"type": "application/rdap+json",
|
||||
"rel": "self",
|
||||
"value": "https://example.com/rdap/nameserver/%NAMESERVER1NAME%"
|
||||
"value": "https://example.tld/rdap/nameserver/%NAMESERVER1NAME%"
|
||||
}
|
||||
],
|
||||
"ldhName": "%NAMESERVER1NAME%",
|
||||
|
@ -76,10 +76,10 @@
|
|||
"roles": [ "registrar" ],
|
||||
"links": [
|
||||
{
|
||||
"href": "https://example.com/rdap/entity/1",
|
||||
"href": "https://example.tld/rdap/entity/1",
|
||||
"type": "application/rdap+json",
|
||||
"rel": "self",
|
||||
"value": "https://example.com/rdap/entity/1"
|
||||
"value": "https://example.tld/rdap/entity/1"
|
||||
}
|
||||
],
|
||||
"vcardArray" : [
|
||||
|
@ -131,10 +131,10 @@
|
|||
"handle": "%NAMESERVER2ROID%",
|
||||
"links": [
|
||||
{
|
||||
"href": "https://example.com/rdap/nameserver/%NAMESERVER2NAME%",
|
||||
"href": "https://example.tld/rdap/nameserver/%NAMESERVER2NAME%",
|
||||
"type": "application/rdap+json",
|
||||
"rel": "self",
|
||||
"value": "https://example.com/rdap/nameserver/%NAMESERVER2NAME%"
|
||||
"value": "https://example.tld/rdap/nameserver/%NAMESERVER2NAME%"
|
||||
}
|
||||
],
|
||||
"ldhName": "%NAMESERVER2NAME%",
|
||||
|
@ -163,10 +163,10 @@
|
|||
"roles": [ "registrar" ],
|
||||
"links": [
|
||||
{
|
||||
"href": "https://example.com/rdap/entity/1",
|
||||
"href": "https://example.tld/rdap/entity/1",
|
||||
"type": "application/rdap+json",
|
||||
"rel": "self",
|
||||
"value": "https://example.com/rdap/entity/1"
|
||||
"value": "https://example.tld/rdap/entity/1"
|
||||
}
|
||||
],
|
||||
"vcardArray" : [
|
||||
|
@ -220,9 +220,9 @@
|
|||
"links" :
|
||||
[
|
||||
{
|
||||
"value" : "https://example.com/rdap/entity/1",
|
||||
"value" : "https://example.tld/rdap/entity/1",
|
||||
"rel" : "self",
|
||||
"href" : "https://example.com/rdap/entity/1",
|
||||
"href" : "https://example.tld/rdap/entity/1",
|
||||
"type" : "application/rdap+json"
|
||||
}
|
||||
],
|
||||
|
|
|
@ -10,10 +10,10 @@
|
|||
],
|
||||
"links": [
|
||||
{
|
||||
"href": "https://example.com/rdap/domain/%NAME%",
|
||||
"href": "https://example.tld/rdap/domain/%NAME%",
|
||||
"type": "application/rdap+json",
|
||||
"rel": "self",
|
||||
"value": "https://example.com/rdap/domain/%NAME%"
|
||||
"value": "https://example.tld/rdap/domain/%NAME%"
|
||||
}
|
||||
],
|
||||
"events": [
|
||||
|
@ -44,10 +44,10 @@
|
|||
"handle": "%NAMESERVER1ROID%",
|
||||
"links": [
|
||||
{
|
||||
"href": "https://example.com/rdap/nameserver/%NAMESERVER1NAME%",
|
||||
"href": "https://example.tld/rdap/nameserver/%NAMESERVER1NAME%",
|
||||
"type": "application/rdap+json",
|
||||
"rel": "self",
|
||||
"value": "https://example.com/rdap/nameserver/%NAMESERVER1NAME%"
|
||||
"value": "https://example.tld/rdap/nameserver/%NAMESERVER1NAME%"
|
||||
}
|
||||
],
|
||||
"ldhName": "%NAMESERVER1NAME%",
|
||||
|
@ -76,10 +76,10 @@
|
|||
"roles": [ "registrar" ],
|
||||
"links": [
|
||||
{
|
||||
"href": "https://example.com/rdap/entity/1",
|
||||
"href": "https://example.tld/rdap/entity/1",
|
||||
"type": "application/rdap+json",
|
||||
"rel": "self",
|
||||
"value": "https://example.com/rdap/entity/1"
|
||||
"value": "https://example.tld/rdap/entity/1"
|
||||
}
|
||||
],
|
||||
"vcardArray" : [
|
||||
|
@ -131,10 +131,10 @@
|
|||
"handle": "%NAMESERVER2ROID%",
|
||||
"links": [
|
||||
{
|
||||
"href": "https://example.com/rdap/nameserver/%NAMESERVER2NAME%",
|
||||
"href": "https://example.tld/rdap/nameserver/%NAMESERVER2NAME%",
|
||||
"type": "application/rdap+json",
|
||||
"rel": "self",
|
||||
"value": "https://example.com/rdap/nameserver/%NAMESERVER2NAME%"
|
||||
"value": "https://example.tld/rdap/nameserver/%NAMESERVER2NAME%"
|
||||
}
|
||||
],
|
||||
"ldhName": "%NAMESERVER2NAME%",
|
||||
|
@ -163,10 +163,10 @@
|
|||
"roles": [ "registrar" ],
|
||||
"links": [
|
||||
{
|
||||
"href": "https://example.com/rdap/entity/1",
|
||||
"href": "https://example.tld/rdap/entity/1",
|
||||
"type": "application/rdap+json",
|
||||
"rel": "self",
|
||||
"value": "https://example.com/rdap/entity/1"
|
||||
"value": "https://example.tld/rdap/entity/1"
|
||||
}
|
||||
],
|
||||
"vcardArray" : [
|
||||
|
@ -220,9 +220,9 @@
|
|||
"links" :
|
||||
[
|
||||
{
|
||||
"value" : "https://example.com/rdap/entity/1",
|
||||
"value" : "https://example.tld/rdap/entity/1",
|
||||
"rel" : "self",
|
||||
"href" : "https://example.com/rdap/entity/1",
|
||||
"href" : "https://example.tld/rdap/entity/1",
|
||||
"type" : "application/rdap+json"
|
||||
}
|
||||
],
|
||||
|
|
|
@ -9,10 +9,10 @@
|
|||
"handle": "%HANDLE%",
|
||||
"links": [
|
||||
{
|
||||
"href": "https://example.com/rdap/domain/%PUNYCODENAME%",
|
||||
"href": "https://example.tld/rdap/domain/%PUNYCODENAME%",
|
||||
"type": "application/rdap+json",
|
||||
"rel": "self",
|
||||
"value": "https://example.com/rdap/domain/%PUNYCODENAME%"
|
||||
"value": "https://example.tld/rdap/domain/%PUNYCODENAME%"
|
||||
}
|
||||
],
|
||||
"events": [
|
||||
|
@ -44,11 +44,11 @@
|
|||
"links": [
|
||||
{
|
||||
"href":
|
||||
"https://example.com/rdap/nameserver/%NAMESERVER1PUNYCODENAME%",
|
||||
"https://example.tld/rdap/nameserver/%NAMESERVER1PUNYCODENAME%",
|
||||
"type": "application/rdap+json",
|
||||
"rel": "self",
|
||||
"value":
|
||||
"https://example.com/rdap/nameserver/%NAMESERVER1PUNYCODENAME%"
|
||||
"https://example.tld/rdap/nameserver/%NAMESERVER1PUNYCODENAME%"
|
||||
}
|
||||
],
|
||||
"ldhName": "%NAMESERVER1PUNYCODENAME%",
|
||||
|
@ -77,10 +77,10 @@
|
|||
"roles": [ "registrar" ],
|
||||
"links": [
|
||||
{
|
||||
"href": "https://example.com/rdap/entity/1",
|
||||
"href": "https://example.tld/rdap/entity/1",
|
||||
"type": "application/rdap+json",
|
||||
"rel": "self",
|
||||
"value": "https://example.com/rdap/entity/1"
|
||||
"value": "https://example.tld/rdap/entity/1"
|
||||
}
|
||||
],
|
||||
"vcardArray" : [
|
||||
|
@ -133,11 +133,11 @@
|
|||
"links": [
|
||||
{
|
||||
"href":
|
||||
"https://example.com/rdap/nameserver/%NAMESERVER2PUNYCODENAME%",
|
||||
"https://example.tld/rdap/nameserver/%NAMESERVER2PUNYCODENAME%",
|
||||
"type": "application/rdap+json",
|
||||
"rel": "self",
|
||||
"value":
|
||||
"https://example.com/rdap/nameserver/%NAMESERVER2PUNYCODENAME%"
|
||||
"https://example.tld/rdap/nameserver/%NAMESERVER2PUNYCODENAME%"
|
||||
}
|
||||
],
|
||||
"ldhName": "%NAMESERVER2PUNYCODENAME%",
|
||||
|
@ -166,10 +166,10 @@
|
|||
"roles": [ "registrar" ],
|
||||
"links": [
|
||||
{
|
||||
"href": "https://example.com/rdap/entity/1",
|
||||
"href": "https://example.tld/rdap/entity/1",
|
||||
"type": "application/rdap+json",
|
||||
"rel": "self",
|
||||
"value": "https://example.com/rdap/entity/1"
|
||||
"value": "https://example.tld/rdap/entity/1"
|
||||
}
|
||||
],
|
||||
"vcardArray" : [
|
||||
|
@ -227,10 +227,10 @@
|
|||
],
|
||||
"links": [
|
||||
{
|
||||
"href": "https://example.com/rdap/entity/%CONTACT1ROID%",
|
||||
"href": "https://example.tld/rdap/entity/%CONTACT1ROID%",
|
||||
"type": "application/rdap+json",
|
||||
"rel": "self",
|
||||
"value": "https://example.com/rdap/entity/%CONTACT1ROID%"
|
||||
"value": "https://example.tld/rdap/entity/%CONTACT1ROID%"
|
||||
}
|
||||
],
|
||||
"events": [
|
||||
|
@ -320,10 +320,10 @@
|
|||
],
|
||||
"links": [
|
||||
{
|
||||
"href": "https://example.com/rdap/entity/%CONTACT2ROID%",
|
||||
"href": "https://example.tld/rdap/entity/%CONTACT2ROID%",
|
||||
"type": "application/rdap+json",
|
||||
"rel": "self",
|
||||
"value": "https://example.com/rdap/entity/%CONTACT2ROID%"
|
||||
"value": "https://example.tld/rdap/entity/%CONTACT2ROID%"
|
||||
}
|
||||
],
|
||||
"events": [
|
||||
|
@ -413,10 +413,10 @@
|
|||
],
|
||||
"links": [
|
||||
{
|
||||
"href": "https://example.com/rdap/entity/%CONTACT3ROID%",
|
||||
"href": "https://example.tld/rdap/entity/%CONTACT3ROID%",
|
||||
"type": "application/rdap+json",
|
||||
"rel": "self",
|
||||
"value": "https://example.com/rdap/entity/%CONTACT3ROID%"
|
||||
"value": "https://example.tld/rdap/entity/%CONTACT3ROID%"
|
||||
}
|
||||
],
|
||||
"events": [
|
||||
|
@ -502,10 +502,10 @@
|
|||
"roles": [ "registrar" ],
|
||||
"links": [
|
||||
{
|
||||
"href": "https://example.com/rdap/entity/1",
|
||||
"href": "https://example.tld/rdap/entity/1",
|
||||
"type": "application/rdap+json",
|
||||
"rel": "self",
|
||||
"value": "https://example.com/rdap/entity/1"
|
||||
"value": "https://example.tld/rdap/entity/1"
|
||||
}
|
||||
],
|
||||
"vcardArray" : [
|
||||
|
|
|
@ -11,10 +11,10 @@
|
|||
],
|
||||
"links": [
|
||||
{
|
||||
"href": "https://example.com/rdap/domain/%PUNYCODENAME%",
|
||||
"href": "https://example.tld/rdap/domain/%PUNYCODENAME%",
|
||||
"type": "application/rdap+json",
|
||||
"rel": "self",
|
||||
"value": "https://example.com/rdap/domain/%PUNYCODENAME%"
|
||||
"value": "https://example.tld/rdap/domain/%PUNYCODENAME%"
|
||||
}
|
||||
],
|
||||
"events": [
|
||||
|
@ -45,10 +45,10 @@
|
|||
"handle": "%NAMESERVER1ROID%",
|
||||
"links": [
|
||||
{
|
||||
"href": "https://example.com/rdap/nameserver/%NAMESERVER1PUNYCODENAME%",
|
||||
"href": "https://example.tld/rdap/nameserver/%NAMESERVER1PUNYCODENAME%",
|
||||
"type": "application/rdap+json",
|
||||
"rel": "self",
|
||||
"value": "https://example.com/rdap/nameserver/%NAMESERVER1PUNYCODENAME%"
|
||||
"value": "https://example.tld/rdap/nameserver/%NAMESERVER1PUNYCODENAME%"
|
||||
}
|
||||
],
|
||||
"ldhName": "%NAMESERVER1PUNYCODENAME%",
|
||||
|
@ -78,10 +78,10 @@
|
|||
"roles": [ "registrar" ],
|
||||
"links": [
|
||||
{
|
||||
"href": "https://example.com/rdap/entity/1",
|
||||
"href": "https://example.tld/rdap/entity/1",
|
||||
"type": "application/rdap+json",
|
||||
"rel": "self",
|
||||
"value": "https://example.com/rdap/entity/1"
|
||||
"value": "https://example.tld/rdap/entity/1"
|
||||
}
|
||||
],
|
||||
"vcardArray" : [
|
||||
|
@ -133,10 +133,10 @@
|
|||
"handle": "%NAMESERVER2ROID%",
|
||||
"links": [
|
||||
{
|
||||
"href": "https://example.com/rdap/nameserver/%NAMESERVER2PUNYCODENAME%",
|
||||
"href": "https://example.tld/rdap/nameserver/%NAMESERVER2PUNYCODENAME%",
|
||||
"type": "application/rdap+json",
|
||||
"rel": "self",
|
||||
"value": "https://example.com/rdap/nameserver/%NAMESERVER2PUNYCODENAME%"
|
||||
"value": "https://example.tld/rdap/nameserver/%NAMESERVER2PUNYCODENAME%"
|
||||
}
|
||||
],
|
||||
"ldhName": "%NAMESERVER2PUNYCODENAME%",
|
||||
|
@ -166,10 +166,10 @@
|
|||
"roles": [ "registrar" ],
|
||||
"links": [
|
||||
{
|
||||
"href": "https://example.com/rdap/entity/1",
|
||||
"href": "https://example.tld/rdap/entity/1",
|
||||
"type": "application/rdap+json",
|
||||
"rel": "self",
|
||||
"value": "https://example.com/rdap/entity/1"
|
||||
"value": "https://example.tld/rdap/entity/1"
|
||||
}
|
||||
],
|
||||
"vcardArray" : [
|
||||
|
@ -223,9 +223,9 @@
|
|||
"links" :
|
||||
[
|
||||
{
|
||||
"value" : "https://example.com/rdap/entity/1",
|
||||
"value" : "https://example.tld/rdap/entity/1",
|
||||
"rel" : "self",
|
||||
"href" : "https://example.com/rdap/entity/1",
|
||||
"href" : "https://example.tld/rdap/entity/1",
|
||||
"type" : "application/rdap+json"
|
||||
}
|
||||
],
|
||||
|
|
|
@ -10,10 +10,10 @@
|
|||
"handle": "%DOMAINHANDLE1%",
|
||||
"links": [
|
||||
{
|
||||
"href": "https://example.com/rdap/domain/%DOMAINNAME1%",
|
||||
"href": "https://example.tld/rdap/domain/%DOMAINNAME1%",
|
||||
"type": "application/rdap+json",
|
||||
"rel": "self",
|
||||
"value": "https://example.com/rdap/domain/%DOMAINNAME1%"
|
||||
"value": "https://example.tld/rdap/domain/%DOMAINNAME1%"
|
||||
}
|
||||
],
|
||||
"ldhName": "%DOMAINNAME1%",
|
||||
|
@ -38,10 +38,10 @@
|
|||
"handle": "%DOMAINHANDLE2%",
|
||||
"links": [
|
||||
{
|
||||
"href": "https://example.com/rdap/domain/%DOMAINNAME2%",
|
||||
"href": "https://example.tld/rdap/domain/%DOMAINNAME2%",
|
||||
"type": "application/rdap+json",
|
||||
"rel": "self",
|
||||
"value": "https://example.com/rdap/domain/%DOMAINNAME2%"
|
||||
"value": "https://example.tld/rdap/domain/%DOMAINNAME2%"
|
||||
}
|
||||
],
|
||||
"ldhName": "%DOMAINNAME2%",
|
||||
|
@ -66,10 +66,10 @@
|
|||
"handle": "%DOMAINHANDLE3%",
|
||||
"links": [
|
||||
{
|
||||
"href": "https://example.com/rdap/domain/%DOMAINNAME3%",
|
||||
"href": "https://example.tld/rdap/domain/%DOMAINNAME3%",
|
||||
"type": "application/rdap+json",
|
||||
"rel": "self",
|
||||
"value": "https://example.com/rdap/domain/%DOMAINNAME3%"
|
||||
"value": "https://example.tld/rdap/domain/%DOMAINNAME3%"
|
||||
}
|
||||
],
|
||||
"ldhName": "%DOMAINNAME3%",
|
||||
|
@ -94,10 +94,10 @@
|
|||
"handle": "%DOMAINHANDLE4%",
|
||||
"links": [
|
||||
{
|
||||
"href": "https://example.com/rdap/domain/%DOMAINNAME4%",
|
||||
"href": "https://example.tld/rdap/domain/%DOMAINNAME4%",
|
||||
"type": "application/rdap+json",
|
||||
"rel": "self",
|
||||
"value": "https://example.com/rdap/domain/%DOMAINNAME4%"
|
||||
"value": "https://example.tld/rdap/domain/%DOMAINNAME4%"
|
||||
}
|
||||
],
|
||||
"ldhName": "%DOMAINNAME4%",
|
||||
|
@ -134,7 +134,7 @@
|
|||
{
|
||||
"type" : "application/rdap+json",
|
||||
"rel" : "next",
|
||||
"href" : "https://example.com/rdap/domains?%NEXT_QUERY%"
|
||||
"href" : "https://example.tld/rdap/domains?%NEXT_QUERY%"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -156,7 +156,7 @@
|
|||
"links" :
|
||||
[
|
||||
{
|
||||
"value" : "https://example.com/rdap/help/tos",
|
||||
"value" : "https://example.tld/rdap/help/tos",
|
||||
"rel" : "alternate",
|
||||
"href" : "https://www.registry.tld/about/rdap/tos.html",
|
||||
"type" : "text/html"
|
||||
|
|
|
@ -10,10 +10,10 @@
|
|||
"handle": "%DOMAINHANDLE1%",
|
||||
"links": [
|
||||
{
|
||||
"href": "https://example.com/rdap/domain/%DOMAINNAME1%",
|
||||
"href": "https://example.tld/rdap/domain/%DOMAINNAME1%",
|
||||
"type": "application/rdap+json",
|
||||
"rel": "self",
|
||||
"value": "https://example.com/rdap/domain/%DOMAINNAME1%"
|
||||
"value": "https://example.tld/rdap/domain/%DOMAINNAME1%"
|
||||
}
|
||||
],
|
||||
"ldhName": "%DOMAINNAME1%",
|
||||
|
@ -38,10 +38,10 @@
|
|||
"handle": "%DOMAINHANDLE2%",
|
||||
"links": [
|
||||
{
|
||||
"href": "https://example.com/rdap/domain/%DOMAINNAME2%",
|
||||
"href": "https://example.tld/rdap/domain/%DOMAINNAME2%",
|
||||
"type": "application/rdap+json",
|
||||
"rel": "self",
|
||||
"value": "https://example.com/rdap/domain/%DOMAINNAME2%"
|
||||
"value": "https://example.tld/rdap/domain/%DOMAINNAME2%"
|
||||
}
|
||||
],
|
||||
"ldhName": "%DOMAINNAME2%",
|
||||
|
@ -66,10 +66,10 @@
|
|||
"handle": "%DOMAINHANDLE3%",
|
||||
"links": [
|
||||
{
|
||||
"href": "https://example.com/rdap/domain/%DOMAINNAME3%",
|
||||
"href": "https://example.tld/rdap/domain/%DOMAINNAME3%",
|
||||
"type": "application/rdap+json",
|
||||
"rel": "self",
|
||||
"value": "https://example.com/rdap/domain/%DOMAINNAME3%"
|
||||
"value": "https://example.tld/rdap/domain/%DOMAINNAME3%"
|
||||
}
|
||||
],
|
||||
"ldhName": "%DOMAINNAME3%",
|
||||
|
@ -94,10 +94,10 @@
|
|||
"handle": "%DOMAINHANDLE4%",
|
||||
"links": [
|
||||
{
|
||||
"href": "https://example.com/rdap/domain/%DOMAINPUNYCODENAME4%",
|
||||
"href": "https://example.tld/rdap/domain/%DOMAINPUNYCODENAME4%",
|
||||
"type": "application/rdap+json",
|
||||
"rel": "self",
|
||||
"value": "https://example.com/rdap/domain/%DOMAINPUNYCODENAME4%"
|
||||
"value": "https://example.tld/rdap/domain/%DOMAINPUNYCODENAME4%"
|
||||
}
|
||||
],
|
||||
"ldhName": "%DOMAINPUNYCODENAME4%",
|
||||
|
@ -137,7 +137,7 @@
|
|||
"links" :
|
||||
[
|
||||
{
|
||||
"value" : "https://example.com/rdap/help/tos",
|
||||
"value" : "https://example.tld/rdap/help/tos",
|
||||
"rel" : "alternate",
|
||||
"href" : "https://www.registry.tld/about/rdap/tos.html",
|
||||
"type" : "text/html"
|
||||
|
|
|
@ -10,10 +10,10 @@
|
|||
"handle": "%DOMAINHANDLE1%",
|
||||
"links": [
|
||||
{
|
||||
"href": "https://example.com/rdap/domain/%DOMAINPUNYCODENAME1%",
|
||||
"href": "https://example.tld/rdap/domain/%DOMAINPUNYCODENAME1%",
|
||||
"type": "application/rdap+json",
|
||||
"rel": "self",
|
||||
"value": "https://example.com/rdap/domain/%DOMAINPUNYCODENAME1%"
|
||||
"value": "https://example.tld/rdap/domain/%DOMAINPUNYCODENAME1%"
|
||||
}
|
||||
],
|
||||
"ldhName": "%DOMAINPUNYCODENAME1%",
|
||||
|
@ -38,10 +38,10 @@
|
|||
"handle": "%DOMAINHANDLE2%",
|
||||
"links": [
|
||||
{
|
||||
"href": "https://example.com/rdap/domain/%DOMAINPUNYCODENAME2%",
|
||||
"href": "https://example.tld/rdap/domain/%DOMAINPUNYCODENAME2%",
|
||||
"type": "application/rdap+json",
|
||||
"rel": "self",
|
||||
"value": "https://example.com/rdap/domain/%DOMAINPUNYCODENAME2%"
|
||||
"value": "https://example.tld/rdap/domain/%DOMAINPUNYCODENAME2%"
|
||||
}
|
||||
],
|
||||
"ldhName": "%DOMAINPUNYCODENAME2%",
|
||||
|
@ -66,10 +66,10 @@
|
|||
"handle": "%DOMAINHANDLE3%",
|
||||
"links": [
|
||||
{
|
||||
"href": "https://example.com/rdap/domain/%DOMAINPUNYCODENAME3%",
|
||||
"href": "https://example.tld/rdap/domain/%DOMAINPUNYCODENAME3%",
|
||||
"type": "application/rdap+json",
|
||||
"rel": "self",
|
||||
"value": "https://example.com/rdap/domain/%DOMAINPUNYCODENAME3%"
|
||||
"value": "https://example.tld/rdap/domain/%DOMAINPUNYCODENAME3%"
|
||||
}
|
||||
],
|
||||
"ldhName": "%DOMAINPUNYCODENAME3%",
|
||||
|
@ -94,10 +94,10 @@
|
|||
"handle": "%DOMAINHANDLE4%",
|
||||
"links": [
|
||||
{
|
||||
"href": "https://example.com/rdap/domain/%DOMAINPUNYCODENAME4%",
|
||||
"href": "https://example.tld/rdap/domain/%DOMAINPUNYCODENAME4%",
|
||||
"type": "application/rdap+json",
|
||||
"rel": "self",
|
||||
"value": "https://example.com/rdap/domain/%DOMAINPUNYCODENAME4%"
|
||||
"value": "https://example.tld/rdap/domain/%DOMAINPUNYCODENAME4%"
|
||||
}
|
||||
],
|
||||
"ldhName": "%DOMAINPUNYCODENAME4%",
|
||||
|
@ -135,7 +135,7 @@
|
|||
{
|
||||
"type" : "application/rdap+json",
|
||||
"rel" : "next",
|
||||
"href" : "https://example.com/rdap/domains?%NEXT_QUERY%"
|
||||
"href" : "https://example.tld/rdap/domains?%NEXT_QUERY%"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -157,7 +157,7 @@
|
|||
"links" :
|
||||
[
|
||||
{
|
||||
"value" : "https://example.com/rdap/help/tos",
|
||||
"value" : "https://example.tld/rdap/help/tos",
|
||||
"rel" : "alternate",
|
||||
"href" : "https://www.registry.tld/about/rdap/tos.html",
|
||||
"type" : "text/html"
|
||||
|
|
|
@ -10,10 +10,10 @@
|
|||
"handle": "%DOMAINHANDLE1%",
|
||||
"links": [
|
||||
{
|
||||
"href": "https://example.com/rdap/domain/%DOMAINNAME1%",
|
||||
"href": "https://example.tld/rdap/domain/%DOMAINNAME1%",
|
||||
"type": "application/rdap+json",
|
||||
"rel": "self",
|
||||
"value": "https://example.com/rdap/domain/%DOMAINNAME1%"
|
||||
"value": "https://example.tld/rdap/domain/%DOMAINNAME1%"
|
||||
}
|
||||
],
|
||||
"ldhName": "%DOMAINNAME1%",
|
||||
|
@ -38,10 +38,10 @@
|
|||
"handle": "%DOMAINHANDLE2%",
|
||||
"links": [
|
||||
{
|
||||
"href": "https://example.com/rdap/domain/%DOMAINNAME2%",
|
||||
"href": "https://example.tld/rdap/domain/%DOMAINNAME2%",
|
||||
"type": "application/rdap+json",
|
||||
"rel": "self",
|
||||
"value": "https://example.com/rdap/domain/%DOMAINNAME2%"
|
||||
"value": "https://example.tld/rdap/domain/%DOMAINNAME2%"
|
||||
}
|
||||
],
|
||||
"ldhName": "%DOMAINNAME2%",
|
||||
|
@ -80,7 +80,7 @@
|
|||
"links" :
|
||||
[
|
||||
{
|
||||
"value" : "https://example.com/rdap/help/tos",
|
||||
"value" : "https://example.tld/rdap/help/tos",
|
||||
"rel" : "alternate",
|
||||
"href" : "https://www.registry.tld/about/rdap/tos.html",
|
||||
"type" : "text/html"
|
||||
|
|
|
@ -7,8 +7,8 @@
|
|||
[
|
||||
{
|
||||
"rel":"self",
|
||||
"href":"https://example.com/rdap/domain/%DOMAINNAME1%",
|
||||
"value":"https://example.com/rdap/domain/%DOMAINNAME1%",
|
||||
"href":"https://example.tld/rdap/domain/%DOMAINNAME1%",
|
||||
"value":"https://example.tld/rdap/domain/%DOMAINNAME1%",
|
||||
"type":"application/rdap+json"
|
||||
}
|
||||
],
|
||||
|
@ -39,8 +39,8 @@
|
|||
[
|
||||
{
|
||||
"rel":"self",
|
||||
"href":"https://example.com/rdap/domain/%DOMAINNAME2%",
|
||||
"value":"https://example.com/rdap/domain/%DOMAINNAME2%",
|
||||
"href":"https://example.tld/rdap/domain/%DOMAINNAME2%",
|
||||
"value":"https://example.tld/rdap/domain/%DOMAINNAME2%",
|
||||
"type":"application/rdap+json"
|
||||
}
|
||||
],
|
||||
|
@ -71,8 +71,8 @@
|
|||
[
|
||||
{
|
||||
"rel":"self",
|
||||
"href":"https://example.com/rdap/domain/%DOMAINNAME3%",
|
||||
"value":"https://example.com/rdap/domain/%DOMAINNAME3%",
|
||||
"href":"https://example.tld/rdap/domain/%DOMAINNAME3%",
|
||||
"value":"https://example.tld/rdap/domain/%DOMAINNAME3%",
|
||||
"type":"application/rdap+json"
|
||||
}
|
||||
],
|
||||
|
@ -127,7 +127,7 @@
|
|||
{
|
||||
"rel":"alternate",
|
||||
"href":"https://www.registry.tld/about/rdap/tos.html",
|
||||
"value":"https://example.com/rdap/help/tos",
|
||||
"value":"https://example.tld/rdap/help/tos",
|
||||
"type":"text/html"
|
||||
}
|
||||
],
|
||||
|
|
|
@ -20,10 +20,10 @@
|
|||
"handle":"%DOMAINHANDLE1%",
|
||||
"links":[
|
||||
{
|
||||
"value":"https://example.com/rdap/domain/%DOMAINNAME1%",
|
||||
"value":"https://example.tld/rdap/domain/%DOMAINNAME1%",
|
||||
"type":"application/rdap+json",
|
||||
"rel":"self",
|
||||
"href":"https://example.com/rdap/domain/%DOMAINNAME1%"
|
||||
"href":"https://example.tld/rdap/domain/%DOMAINNAME1%"
|
||||
}
|
||||
],
|
||||
"objectClassName":"domain"
|
||||
|
@ -48,10 +48,10 @@
|
|||
"handle":"%DOMAINHANDLE2%",
|
||||
"links":[
|
||||
{
|
||||
"value":"https://example.com/rdap/domain/%DOMAINNAME2%",
|
||||
"value":"https://example.tld/rdap/domain/%DOMAINNAME2%",
|
||||
"type":"application/rdap+json",
|
||||
"rel":"self",
|
||||
"href":"https://example.com/rdap/domain/%DOMAINNAME2%"
|
||||
"href":"https://example.tld/rdap/domain/%DOMAINNAME2%"
|
||||
}
|
||||
],
|
||||
"objectClassName":"domain"
|
||||
|
@ -81,7 +81,7 @@
|
|||
],
|
||||
"links":[
|
||||
{
|
||||
"value":"https://example.com/rdap/help/tos",
|
||||
"value":"https://example.tld/rdap/help/tos",
|
||||
"type":"text/html",
|
||||
"rel":"alternate",
|
||||
"href":"https://www.registry.tld/about/rdap/tos.html"
|
||||
|
|
|
@ -8,9 +8,9 @@
|
|||
"links" :
|
||||
[
|
||||
{
|
||||
"value" : "https://example.com/rdap/entity/2-ROID",
|
||||
"value" : "https://example.tld/rdap/entity/2-ROID",
|
||||
"rel" : "self",
|
||||
"href": "https://example.com/rdap/entity/2-ROID",
|
||||
"href": "https://example.tld/rdap/entity/2-ROID",
|
||||
"type" : "application/rdap+json"
|
||||
}
|
||||
],
|
||||
|
@ -55,9 +55,9 @@
|
|||
"links" :
|
||||
[
|
||||
{
|
||||
"value" : "https://example.com/rdap/entity/2-Registrar",
|
||||
"value" : "https://example.tld/rdap/entity/2-Registrar",
|
||||
"rel" : "self",
|
||||
"href": "https://example.com/rdap/entity/2-Registrar",
|
||||
"href": "https://example.tld/rdap/entity/2-Registrar",
|
||||
"type" : "application/rdap+json"
|
||||
}
|
||||
],
|
||||
|
@ -122,7 +122,7 @@
|
|||
"links" :
|
||||
[
|
||||
{
|
||||
"value" : "https://example.com/rdap/help/tos",
|
||||
"value" : "https://example.tld/rdap/help/tos",
|
||||
"rel" : "alternate",
|
||||
"href" : "https://www.registry.tld/about/rdap/tos.html",
|
||||
"type" : "text/html"
|
||||
|
|
|
@ -8,9 +8,9 @@
|
|||
"links" :
|
||||
[
|
||||
{
|
||||
"value" : "https://example.com/rdap/entity/4-ROID",
|
||||
"value" : "https://example.tld/rdap/entity/4-ROID",
|
||||
"rel" : "self",
|
||||
"href": "https://example.com/rdap/entity/4-ROID",
|
||||
"href": "https://example.tld/rdap/entity/4-ROID",
|
||||
"type" : "application/rdap+json"
|
||||
}
|
||||
],
|
||||
|
@ -54,9 +54,9 @@
|
|||
"links" :
|
||||
[
|
||||
{
|
||||
"value" : "https://example.com/rdap/entity/2-ROID",
|
||||
"value" : "https://example.tld/rdap/entity/2-ROID",
|
||||
"rel" : "self",
|
||||
"href": "https://example.com/rdap/entity/2-ROID",
|
||||
"href": "https://example.tld/rdap/entity/2-ROID",
|
||||
"type" : "application/rdap+json"
|
||||
}
|
||||
],
|
||||
|
@ -115,7 +115,7 @@
|
|||
"links" :
|
||||
[
|
||||
{
|
||||
"value" : "https://example.com/rdap/help/tos",
|
||||
"value" : "https://example.tld/rdap/help/tos",
|
||||
"rel" : "alternate",
|
||||
"href" : "https://www.registry.tld/about/rdap/tos.html",
|
||||
"type" : "text/html"
|
||||
|
|
|
@ -8,9 +8,9 @@
|
|||
"links" :
|
||||
[
|
||||
{
|
||||
"value" : "https://example.com/rdap/entity/0001-ROID",
|
||||
"value" : "https://example.tld/rdap/entity/0001-ROID",
|
||||
"rel" : "self",
|
||||
"href": "https://example.com/rdap/entity/0001-ROID",
|
||||
"href": "https://example.tld/rdap/entity/0001-ROID",
|
||||
"type" : "application/rdap+json"
|
||||
}
|
||||
],
|
||||
|
@ -54,9 +54,9 @@
|
|||
"links" :
|
||||
[
|
||||
{
|
||||
"value" : "https://example.com/rdap/entity/0002-ROID",
|
||||
"value" : "https://example.tld/rdap/entity/0002-ROID",
|
||||
"rel" : "self",
|
||||
"href": "https://example.com/rdap/entity/0002-ROID",
|
||||
"href": "https://example.tld/rdap/entity/0002-ROID",
|
||||
"type" : "application/rdap+json"
|
||||
}
|
||||
],
|
||||
|
@ -100,9 +100,9 @@
|
|||
"links" :
|
||||
[
|
||||
{
|
||||
"value" : "https://example.com/rdap/entity/0003-ROID",
|
||||
"value" : "https://example.tld/rdap/entity/0003-ROID",
|
||||
"rel" : "self",
|
||||
"href": "https://example.com/rdap/entity/0003-ROID",
|
||||
"href": "https://example.tld/rdap/entity/0003-ROID",
|
||||
"type" : "application/rdap+json"
|
||||
}
|
||||
],
|
||||
|
@ -146,9 +146,9 @@
|
|||
"links" :
|
||||
[
|
||||
{
|
||||
"value" : "https://example.com/rdap/entity/0004-ROID",
|
||||
"value" : "https://example.tld/rdap/entity/0004-ROID",
|
||||
"rel" : "self",
|
||||
"href": "https://example.com/rdap/entity/0004-ROID",
|
||||
"href": "https://example.tld/rdap/entity/0004-ROID",
|
||||
"type" : "application/rdap+json"
|
||||
}
|
||||
],
|
||||
|
@ -207,7 +207,7 @@
|
|||
"links" :
|
||||
[
|
||||
{
|
||||
"value" : "https://example.com/rdap/help/tos",
|
||||
"value" : "https://example.tld/rdap/help/tos",
|
||||
"rel" : "alternate",
|
||||
"href" : "https://www.registry.tld/about/rdap/tos.html",
|
||||
"type" : "text/html"
|
||||
|
|
|
@ -10,10 +10,10 @@
|
|||
"handle": "%DOMAINHANDLE1%",
|
||||
"links": [
|
||||
{
|
||||
"href": "https://example.com/rdap/domain/%DOMAINNAME1%",
|
||||
"href": "https://example.tld/rdap/domain/%DOMAINNAME1%",
|
||||
"type": "application/rdap+json",
|
||||
"rel": "self",
|
||||
"value": "https://example.com/rdap/domain/%DOMAINNAME1%"
|
||||
"value": "https://example.tld/rdap/domain/%DOMAINNAME1%"
|
||||
}
|
||||
],
|
||||
"ldhName": "%DOMAINNAME1%",
|
||||
|
@ -38,10 +38,10 @@
|
|||
"handle": "%DOMAINHANDLE2%",
|
||||
"links": [
|
||||
{
|
||||
"href": "https://example.com/rdap/domain/%DOMAINNAME2%",
|
||||
"href": "https://example.tld/rdap/domain/%DOMAINNAME2%",
|
||||
"type": "application/rdap+json",
|
||||
"rel": "self",
|
||||
"value": "https://example.com/rdap/domain/%DOMAINNAME2%"
|
||||
"value": "https://example.tld/rdap/domain/%DOMAINNAME2%"
|
||||
}
|
||||
],
|
||||
"ldhName": "%DOMAINNAME2%",
|
||||
|
@ -66,10 +66,10 @@
|
|||
"handle": "%DOMAINHANDLE3%",
|
||||
"links": [
|
||||
{
|
||||
"href": "https://example.com/rdap/domain/%DOMAINNAME3%",
|
||||
"href": "https://example.tld/rdap/domain/%DOMAINNAME3%",
|
||||
"type": "application/rdap+json",
|
||||
"rel": "self",
|
||||
"value": "https://example.com/rdap/domain/%DOMAINNAME3%"
|
||||
"value": "https://example.tld/rdap/domain/%DOMAINNAME3%"
|
||||
}
|
||||
],
|
||||
"ldhName": "%DOMAINNAME3%",
|
||||
|
@ -94,10 +94,10 @@
|
|||
"handle": "%DOMAINHANDLE4%",
|
||||
"links": [
|
||||
{
|
||||
"href": "https://example.com/rdap/domain/%DOMAINNAME4%",
|
||||
"href": "https://example.tld/rdap/domain/%DOMAINNAME4%",
|
||||
"type": "application/rdap+json",
|
||||
"rel": "self",
|
||||
"value": "https://example.com/rdap/domain/%DOMAINNAME4%"
|
||||
"value": "https://example.tld/rdap/domain/%DOMAINNAME4%"
|
||||
}
|
||||
],
|
||||
"ldhName": "%DOMAINNAME4%",
|
||||
|
@ -136,7 +136,7 @@
|
|||
"links" :
|
||||
[
|
||||
{
|
||||
"value" : "https://example.com/rdap/help/tos",
|
||||
"value" : "https://example.tld/rdap/help/tos",
|
||||
"rel" : "alternate",
|
||||
"href" : "https://www.registry.tld/about/rdap/tos.html",
|
||||
"type" : "text/html"
|
||||
|
|
|
@ -8,9 +8,9 @@
|
|||
"links" :
|
||||
[
|
||||
{
|
||||
"value" : "https://example.com/rdap/entity/301",
|
||||
"value" : "https://example.tld/rdap/entity/301",
|
||||
"rel" : "self",
|
||||
"href": "https://example.com/rdap/entity/301",
|
||||
"href": "https://example.tld/rdap/entity/301",
|
||||
"type" : "application/rdap+json"
|
||||
}
|
||||
],
|
||||
|
@ -61,9 +61,9 @@
|
|||
"links" :
|
||||
[
|
||||
{
|
||||
"value" : "https://example.com/rdap/entity/302",
|
||||
"value" : "https://example.tld/rdap/entity/302",
|
||||
"rel" : "self",
|
||||
"href": "https://example.com/rdap/entity/302",
|
||||
"href": "https://example.tld/rdap/entity/302",
|
||||
"type" : "application/rdap+json"
|
||||
}
|
||||
],
|
||||
|
@ -114,9 +114,9 @@
|
|||
"links" :
|
||||
[
|
||||
{
|
||||
"value" : "https://example.com/rdap/entity/303",
|
||||
"value" : "https://example.tld/rdap/entity/303",
|
||||
"rel" : "self",
|
||||
"href": "https://example.com/rdap/entity/303",
|
||||
"href": "https://example.tld/rdap/entity/303",
|
||||
"type" : "application/rdap+json"
|
||||
}
|
||||
],
|
||||
|
@ -167,9 +167,9 @@
|
|||
"links" :
|
||||
[
|
||||
{
|
||||
"value" : "https://example.com/rdap/entity/304",
|
||||
"value" : "https://example.tld/rdap/entity/304",
|
||||
"rel" : "self",
|
||||
"href": "https://example.com/rdap/entity/304",
|
||||
"href": "https://example.tld/rdap/entity/304",
|
||||
"type" : "application/rdap+json"
|
||||
}
|
||||
],
|
||||
|
@ -235,7 +235,7 @@
|
|||
"links" :
|
||||
[
|
||||
{
|
||||
"value" : "https://example.com/rdap/help/tos",
|
||||
"value" : "https://example.tld/rdap/help/tos",
|
||||
"rel" : "alternate",
|
||||
"href" : "https://www.registry.tld/about/rdap/tos.html",
|
||||
"type" : "text/html"
|
||||
|
|
|
@ -6,9 +6,9 @@
|
|||
"links" :
|
||||
[
|
||||
{
|
||||
"value" : "https://example.com/rdap/entity/%NAME%",
|
||||
"value" : "https://example.tld/rdap/entity/%NAME%",
|
||||
"rel" : "self",
|
||||
"href": "https://example.com/rdap/entity/%NAME%",
|
||||
"href": "https://example.tld/rdap/entity/%NAME%",
|
||||
"type" : "application/rdap+json"
|
||||
}
|
||||
],
|
||||
|
|
|
@ -8,9 +8,9 @@
|
|||
"links" :
|
||||
[
|
||||
{
|
||||
"value" : "https://example.com/rdap/entity/0001-ROID",
|
||||
"value" : "https://example.tld/rdap/entity/0001-ROID",
|
||||
"rel" : "self",
|
||||
"href": "https://example.com/rdap/entity/0001-ROID",
|
||||
"href": "https://example.tld/rdap/entity/0001-ROID",
|
||||
"type" : "application/rdap+json"
|
||||
}
|
||||
],
|
||||
|
@ -54,9 +54,9 @@
|
|||
"links" :
|
||||
[
|
||||
{
|
||||
"value" : "https://example.com/rdap/entity/0002-ROID",
|
||||
"value" : "https://example.tld/rdap/entity/0002-ROID",
|
||||
"rel" : "self",
|
||||
"href": "https://example.com/rdap/entity/0002-ROID",
|
||||
"href": "https://example.tld/rdap/entity/0002-ROID",
|
||||
"type" : "application/rdap+json"
|
||||
}
|
||||
],
|
||||
|
@ -100,9 +100,9 @@
|
|||
"links" :
|
||||
[
|
||||
{
|
||||
"value" : "https://example.com/rdap/entity/0003-ROID",
|
||||
"value" : "https://example.tld/rdap/entity/0003-ROID",
|
||||
"rel" : "self",
|
||||
"href": "https://example.com/rdap/entity/0003-ROID",
|
||||
"href": "https://example.tld/rdap/entity/0003-ROID",
|
||||
"type" : "application/rdap+json"
|
||||
}
|
||||
],
|
||||
|
@ -146,9 +146,9 @@
|
|||
"links" :
|
||||
[
|
||||
{
|
||||
"value" : "https://example.com/rdap/entity/0004-ROID",
|
||||
"value" : "https://example.tld/rdap/entity/0004-ROID",
|
||||
"rel" : "self",
|
||||
"href": "https://example.com/rdap/entity/0004-ROID",
|
||||
"href": "https://example.tld/rdap/entity/0004-ROID",
|
||||
"type" : "application/rdap+json"
|
||||
}
|
||||
],
|
||||
|
@ -203,7 +203,7 @@
|
|||
[
|
||||
{
|
||||
"type" : "application/rdap+json",
|
||||
"href" : "https://example.com/rdap/entities?%NAME%",
|
||||
"href" : "https://example.tld/rdap/entities?%NAME%",
|
||||
"rel" : "next"
|
||||
}
|
||||
],
|
||||
|
@ -227,7 +227,7 @@
|
|||
"links" :
|
||||
[
|
||||
{
|
||||
"value" : "https://example.com/rdap/help/tos",
|
||||
"value" : "https://example.tld/rdap/help/tos",
|
||||
"rel" : "alternate",
|
||||
"href" : "https://www.registry.tld/about/rdap/tos.html",
|
||||
"type" : "text/html"
|
||||
|
|
|
@ -8,9 +8,9 @@
|
|||
"links" :
|
||||
[
|
||||
{
|
||||
"value" : "https://example.com/rdap/entity/0001-ROID",
|
||||
"value" : "https://example.tld/rdap/entity/0001-ROID",
|
||||
"rel" : "self",
|
||||
"href": "https://example.com/rdap/entity/0001-ROID",
|
||||
"href": "https://example.tld/rdap/entity/0001-ROID",
|
||||
"type" : "application/rdap+json"
|
||||
}
|
||||
],
|
||||
|
@ -54,9 +54,9 @@
|
|||
"links" :
|
||||
[
|
||||
{
|
||||
"value" : "https://example.com/rdap/entity/0002-ROID",
|
||||
"value" : "https://example.tld/rdap/entity/0002-ROID",
|
||||
"rel" : "self",
|
||||
"href": "https://example.com/rdap/entity/0002-ROID",
|
||||
"href": "https://example.tld/rdap/entity/0002-ROID",
|
||||
"type" : "application/rdap+json"
|
||||
}
|
||||
],
|
||||
|
@ -100,9 +100,9 @@
|
|||
"links" :
|
||||
[
|
||||
{
|
||||
"value" : "https://example.com/rdap/entity/0003-ROID",
|
||||
"value" : "https://example.tld/rdap/entity/0003-ROID",
|
||||
"rel" : "self",
|
||||
"href": "https://example.com/rdap/entity/0003-ROID",
|
||||
"href": "https://example.tld/rdap/entity/0003-ROID",
|
||||
"type" : "application/rdap+json"
|
||||
}
|
||||
],
|
||||
|
@ -146,9 +146,9 @@
|
|||
"links" :
|
||||
[
|
||||
{
|
||||
"value" : "https://example.com/rdap/entity/301",
|
||||
"value" : "https://example.tld/rdap/entity/301",
|
||||
"rel" : "self",
|
||||
"href": "https://example.com/rdap/entity/301",
|
||||
"href": "https://example.tld/rdap/entity/301",
|
||||
"type" : "application/rdap+json"
|
||||
}
|
||||
],
|
||||
|
@ -210,7 +210,7 @@
|
|||
[
|
||||
{
|
||||
"type" : "application/rdap+json",
|
||||
"href" : "https://example.com/rdap/entities?%NAME%",
|
||||
"href" : "https://example.tld/rdap/entities?%NAME%",
|
||||
"rel" : "next"
|
||||
}
|
||||
],
|
||||
|
@ -234,7 +234,7 @@
|
|||
"links" :
|
||||
[
|
||||
{
|
||||
"value" : "https://example.com/rdap/help/tos",
|
||||
"value" : "https://example.tld/rdap/help/tos",
|
||||
"rel" : "alternate",
|
||||
"href" : "https://www.registry.tld/about/rdap/tos.html",
|
||||
"type" : "text/html"
|
||||
|
|
|
@ -8,9 +8,9 @@
|
|||
"links" :
|
||||
[
|
||||
{
|
||||
"value" : "https://example.com/rdap/entity/301",
|
||||
"value" : "https://example.tld/rdap/entity/301",
|
||||
"rel" : "self",
|
||||
"href": "https://example.com/rdap/entity/301",
|
||||
"href": "https://example.tld/rdap/entity/301",
|
||||
"type" : "application/rdap+json"
|
||||
}
|
||||
],
|
||||
|
@ -61,9 +61,9 @@
|
|||
"links" :
|
||||
[
|
||||
{
|
||||
"value" : "https://example.com/rdap/entity/302",
|
||||
"value" : "https://example.tld/rdap/entity/302",
|
||||
"rel" : "self",
|
||||
"href": "https://example.com/rdap/entity/302",
|
||||
"href": "https://example.tld/rdap/entity/302",
|
||||
"type" : "application/rdap+json"
|
||||
}
|
||||
],
|
||||
|
@ -114,9 +114,9 @@
|
|||
"links" :
|
||||
[
|
||||
{
|
||||
"value" : "https://example.com/rdap/entity/303",
|
||||
"value" : "https://example.tld/rdap/entity/303",
|
||||
"rel" : "self",
|
||||
"href": "https://example.com/rdap/entity/303",
|
||||
"href": "https://example.tld/rdap/entity/303",
|
||||
"type" : "application/rdap+json"
|
||||
}
|
||||
],
|
||||
|
@ -167,9 +167,9 @@
|
|||
"links" :
|
||||
[
|
||||
{
|
||||
"value" : "https://example.com/rdap/entity/304",
|
||||
"value" : "https://example.tld/rdap/entity/304",
|
||||
"rel" : "self",
|
||||
"href": "https://example.com/rdap/entity/304",
|
||||
"href": "https://example.tld/rdap/entity/304",
|
||||
"type" : "application/rdap+json"
|
||||
}
|
||||
],
|
||||
|
@ -231,7 +231,7 @@
|
|||
[
|
||||
{
|
||||
"type" : "application/rdap+json",
|
||||
"href" : "https://example.com/rdap/entities?%NAME%",
|
||||
"href" : "https://example.tld/rdap/entities?%NAME%",
|
||||
"rel" : "next"
|
||||
}
|
||||
],
|
||||
|
@ -255,7 +255,7 @@
|
|||
"links" :
|
||||
[
|
||||
{
|
||||
"value" : "https://example.com/rdap/help/tos",
|
||||
"value" : "https://example.tld/rdap/help/tos",
|
||||
"rel" : "alternate",
|
||||
"href" : "https://www.registry.tld/about/rdap/tos.html",
|
||||
"type" : "text/html"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue