From 19da9a1531f6d344943b588e447c1d08f630b33f Mon Sep 17 00:00:00 2001 From: mountford Date: Mon, 15 Aug 2016 07:40:37 -0700 Subject: [PATCH] RDAP: Add "last update of RDAP database" event The ICANN operational profile says: 1.4.12. An entity object within an RDAP response MUST contain an events member with the following events: o An event of eventAction type registration. o An event of eventAction type last changed. The event of eventAction type last changed MUST be omitted if the Contact Object (as defined in RFC5733) has not been updated since it was created. o An event of eventAction type last update of RDAP database. It has similar wording for domains and hosts. The registration and last changed events are already being generated. This CL adds a "last update of RDAP database" event for all three object types. It's very redundant, and I have warned ICANN that "last update" doesn't mean what they might expect in the context of an eventually consistent database, but there we are. ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=130279688 --- .../registry/rdap/RdapDomainAction.java | 6 ++- .../registry/rdap/RdapDomainSearchAction.java | 12 ++--- .../registry/rdap/RdapEntityAction.java | 9 ++-- .../registry/rdap/RdapEntitySearchAction.java | 18 ++++--- .../registry/rdap/RdapJsonFormatter.java | 35 +++++++----- .../registry/rdap/RdapNameserverAction.java | 7 ++- .../rdap/RdapNameserverSearchAction.java | 16 +++--- .../registry/rdap/RdapJsonFormatterTest.java | 54 ++++++++++--------- .../registry/rdap/testdata/rdap_contact.json | 4 ++ .../registry/rdap/testdata/rdap_domain.json | 24 +++++++++ .../rdap/testdata/rdap_domain_unicode.json | 24 +++++++++ .../registry/rdap/testdata/rdap_host.json | 4 ++ .../rdap/testdata/rdap_host_external.json | 4 ++ .../rdap/testdata/rdap_host_unicode.json | 4 ++ .../rdap/testdata/rdap_multiple_contacts.json | 8 +++ .../rdap/testdata/rdap_multiple_domains.json | 48 +++++++++++++++++ .../rdap/testdata/rdap_multiple_hosts.json | 8 +++ .../rdap/testdata/rdap_registrar.json | 4 ++ .../rdap/testdata/rdapjson_admincontact.json | 4 ++ .../rdap/testdata/rdapjson_domain_full.json | 24 +++++++++ .../rdapjson_domain_no_nameservers.json | 16 ++++++ .../rdap/testdata/rdapjson_host_both.json | 4 ++ .../rdap/testdata/rdapjson_host_ipv4.json | 4 ++ .../rdap/testdata/rdapjson_host_ipv6.json | 4 ++ .../testdata/rdapjson_host_no_addresses.json | 4 ++ .../rdap/testdata/rdapjson_registrant.json | 4 ++ .../testdata/rdapjson_registrant_nobase.json | 4 ++ .../rdap/testdata/rdapjson_registrar.json | 4 ++ .../testdata/rdapjson_rolelesscontact.json | 4 ++ .../rdap/testdata/rdapjson_techcontact.json | 4 ++ 30 files changed, 302 insertions(+), 67 deletions(-) diff --git a/java/google/registry/rdap/RdapDomainAction.java b/java/google/registry/rdap/RdapDomainAction.java index 95966d4cd..181b47165 100644 --- a/java/google/registry/rdap/RdapDomainAction.java +++ b/java/google/registry/rdap/RdapDomainAction.java @@ -25,6 +25,7 @@ import google.registry.request.HttpException; import google.registry.request.HttpException.NotFoundException; import google.registry.util.Clock; import javax.inject.Inject; +import org.joda.time.DateTime; /** * RDAP (new WHOIS) action for domain requests. @@ -50,15 +51,16 @@ public class RdapDomainAction extends RdapActionBase { @Override public ImmutableMap getJsonObjectForResource( String pathSearchString, boolean isHeadRequest, String linkBase) throws HttpException { + DateTime now = clock.nowUtc(); pathSearchString = canonicalizeName(pathSearchString); validateDomainName(pathSearchString); // The query string is not used; the RDAP syntax is /rdap/domain/mydomain.com. DomainResource domainResource = - loadByUniqueId(DomainResource.class, pathSearchString, clock.nowUtc()); + loadByUniqueId(DomainResource.class, pathSearchString, now); if (domainResource == null) { throw new NotFoundException(pathSearchString + " not found"); } return RdapJsonFormatter.makeRdapJsonForDomain( - domainResource, true, rdapLinkBase, rdapWhoisServer); + domainResource, true, rdapLinkBase, rdapWhoisServer, now); } } diff --git a/java/google/registry/rdap/RdapDomainSearchAction.java b/java/google/registry/rdap/RdapDomainSearchAction.java index fea32f684..b860629bb 100644 --- a/java/google/registry/rdap/RdapDomainSearchAction.java +++ b/java/google/registry/rdap/RdapDomainSearchAction.java @@ -136,7 +136,7 @@ public class RdapDomainSearchAction extends RdapActionBase { } return ImmutableList.of( RdapJsonFormatter.makeRdapJsonForDomain( - domainResource, false, rdapLinkBase, rdapWhoisServer)); + domainResource, false, rdapLinkBase, rdapWhoisServer, now)); // Handle queries with a wildcard. } else { Query query = ofy().load() @@ -153,7 +153,7 @@ public class RdapDomainSearchAction extends RdapActionBase { if (domainResource.getDeletionTime().isAfter(now)) { builder.add( RdapJsonFormatter.makeRdapJsonForDomain( - domainResource, false, rdapLinkBase, rdapWhoisServer)); + domainResource, false, rdapLinkBase, rdapWhoisServer, now)); } } return builder.build(); @@ -168,7 +168,7 @@ public class RdapDomainSearchAction extends RdapActionBase { // Handle queries without a wildcard; just load the host by foreign key in the usual way. if (!partialStringQuery.getHasWildcard()) { Ref hostRef = loadAndGetReference( - HostResource.class, partialStringQuery.getInitialString(), clock.nowUtc()); + HostResource.class, partialStringQuery.getInitialString(), now); if (hostRef == null) { return ImmutableList.of(); } @@ -196,7 +196,7 @@ public class RdapDomainSearchAction extends RdapActionBase { // looking for matches. } else { DomainResource domainResource = loadByUniqueId( - DomainResource.class, partialStringQuery.getSuffix(), clock.nowUtc()); + DomainResource.class, partialStringQuery.getSuffix(), now); if (domainResource == null) { throw new NotFoundException("No domain found for specified nameserver suffix"); } @@ -205,7 +205,7 @@ public class RdapDomainSearchAction extends RdapActionBase { // We can't just check that the host name starts with the initial query string, because then // the query ns.exam*.example.com would match against nameserver ns.example.com. if (partialStringQuery.matches(fqhn)) { - Ref hostRef = loadAndGetReference(HostResource.class, fqhn, clock.nowUtc()); + Ref hostRef = loadAndGetReference(HostResource.class, fqhn, now); if (hostRef != null) { builder.add(hostRef); } @@ -263,7 +263,7 @@ public class RdapDomainSearchAction extends RdapActionBase { for (DomainResource domainResource : query) { builder.add( RdapJsonFormatter.makeRdapJsonForDomain( - domainResource, false, rdapLinkBase, rdapWhoisServer)); + domainResource, false, rdapLinkBase, rdapWhoisServer, now)); } } return builder.build(); diff --git a/java/google/registry/rdap/RdapEntityAction.java b/java/google/registry/rdap/RdapEntityAction.java index f76a3e62e..87a0571ca 100644 --- a/java/google/registry/rdap/RdapEntityAction.java +++ b/java/google/registry/rdap/RdapEntityAction.java @@ -31,6 +31,7 @@ import google.registry.request.HttpException.BadRequestException; import google.registry.request.HttpException.NotFoundException; import google.registry.util.Clock; import javax.inject.Inject; +import org.joda.time.DateTime; /** * RDAP (new WHOIS) action for entity (contact and registrar) requests. @@ -58,6 +59,7 @@ public class RdapEntityAction extends RdapActionBase { @Override public ImmutableMap getJsonObjectForResource( String pathSearchString, boolean isHeadRequest, String linkBase) throws HttpException { + DateTime now = clock.nowUtc(); // The query string is not used; the RDAP syntax is /rdap/entity/handle (the handle is the roid // for contacts and the client identifier for registrars). Since RDAP's concept of an entity // includes both contacts and registrars, search for one first, then the other. @@ -68,13 +70,14 @@ public class RdapEntityAction extends RdapActionBase { ContactResource contactResource = ofy().load().key(contactKey).now(); // As per Andy Newton on the regext mailing list, contacts by themselves have no role, since // they are global, and might have different roles for different domains. - if ((contactResource != null) && clock.nowUtc().isBefore(contactResource.getDeletionTime())) { + if ((contactResource != null) && now.isBefore(contactResource.getDeletionTime())) { return RdapJsonFormatter.makeRdapJsonForContact( contactResource, true, Optional.absent(), rdapLinkBase, - rdapWhoisServer); + rdapWhoisServer, + now); } } String clientId = pathSearchString.trim(); @@ -83,7 +86,7 @@ public class RdapEntityAction extends RdapActionBase { Registrar registrar = Registrar.loadByClientId(clientId); if ((registrar != null) && registrar.isActiveAndPubliclyVisible()) { return RdapJsonFormatter.makeRdapJsonForRegistrar( - registrar, true, rdapLinkBase, rdapWhoisServer); + registrar, true, rdapLinkBase, rdapWhoisServer, now); } } throw !wasValidKey diff --git a/java/google/registry/rdap/RdapEntitySearchAction.java b/java/google/registry/rdap/RdapEntitySearchAction.java index 68b99ac0a..8c6f05039 100644 --- a/java/google/registry/rdap/RdapEntitySearchAction.java +++ b/java/google/registry/rdap/RdapEntitySearchAction.java @@ -39,6 +39,7 @@ import google.registry.request.HttpException.UnprocessableEntityException; import google.registry.request.Parameter; import google.registry.util.Clock; import javax.inject.Inject; +import org.joda.time.DateTime; /** * RDAP (new WHOIS) action for entity (contact and registrar) search requests. @@ -75,6 +76,7 @@ public class RdapEntitySearchAction extends RdapActionBase { @Override public ImmutableMap getJsonObjectForResource( String pathSearchString, boolean isHeadRequest, String linkBase) throws HttpException { + DateTime now = clock.nowUtc(); // RDAP syntax example: /rdap/entities?fn=Bobby%20Joe*. // The pathSearchString is not used by search commands. if (pathSearchString.length() > 0) { @@ -98,7 +100,7 @@ public class RdapEntitySearchAction extends RdapActionBase { } else { // syntax: /rdap/entities?handle=12345-* // The handle is either the contact roid or the registrar clientId. - results = searchByHandle(RdapSearchPattern.create(handleParam.get(), false)); + results = searchByHandle(RdapSearchPattern.create(handleParam.get(), false), now); } if (results.isEmpty()) { throw new NotFoundException("No entities found"); @@ -110,8 +112,8 @@ public class RdapEntitySearchAction extends RdapActionBase { } /** Searches for entities by handle, returning a JSON array of entity info maps. */ - private ImmutableList> - searchByHandle(final RdapSearchPattern partialStringQuery) throws HttpException { + private ImmutableList> searchByHandle( + final RdapSearchPattern partialStringQuery, DateTime now) throws HttpException { // Handle queries without a wildcard -- load by ID. if (!partialStringQuery.getHasWildcard()) { ContactResource contactResource = ofy().load() @@ -128,11 +130,12 @@ public class RdapEntitySearchAction extends RdapActionBase { false, Optional.absent(), rdapLinkBase, - rdapWhoisServer)); + rdapWhoisServer, + now)); } if ((registrar != null) && registrar.isActiveAndPubliclyVisible()) { builder.add(RdapJsonFormatter.makeRdapJsonForRegistrar( - registrar, false, rdapLinkBase, rdapWhoisServer)); + registrar, false, rdapLinkBase, rdapWhoisServer, now)); } return builder.build(); // Handle queries with a wildcard, but no suffix. For contact resources, the deletion time will @@ -154,7 +157,8 @@ public class RdapEntitySearchAction extends RdapActionBase { false, Optional.absent(), rdapLinkBase, - rdapWhoisServer)); + rdapWhoisServer, + now)); } for (Registrar registrar : Registrar.loadByClientIdRange( @@ -163,7 +167,7 @@ public class RdapEntitySearchAction extends RdapActionBase { rdapResultSetMaxSize)) { if (registrar.isActiveAndPubliclyVisible()) { builder.add(RdapJsonFormatter.makeRdapJsonForRegistrar( - registrar, false, rdapLinkBase, rdapWhoisServer)); + registrar, false, rdapLinkBase, rdapWhoisServer, now)); } } // In theory, there could be more results than our max size, so limit the size. diff --git a/java/google/registry/rdap/RdapJsonFormatter.java b/java/google/registry/rdap/RdapJsonFormatter.java index 1aa4fa5a5..c0cb5b874 100644 --- a/java/google/registry/rdap/RdapJsonFormatter.java +++ b/java/google/registry/rdap/RdapJsonFormatter.java @@ -106,7 +106,7 @@ public class RdapJsonFormatter { PENDING_TRANSFER("pending transfer"), PENDING_UPDATE("pending update"), PENDING_DELETE("pending delete"), - + // Additional status values defined in // https://tools.ietf.org/html/draft-ietf-regext-epp-rdap-status-mapping-01. ADD_PERIOD("add period"), @@ -201,7 +201,8 @@ public class RdapJsonFormatter { REINSTANTIATION("reinstantiation"), TRANSFER("transfer"), LOCKED("locked"), - UNLOCKED("unlocked"); + UNLOCKED("unlocked"), + LAST_UPDATE_OF_RDAP_DATABASE("last update of RDAP database"); /** Value as it appears in RDAP messages. */ private final String rfc7483String; @@ -412,7 +413,8 @@ public class RdapJsonFormatter { DomainResource domainResource, boolean isTopLevel, @Nullable String linkBase, - @Nullable String whoisServer) { + @Nullable String whoisServer, + DateTime now) { // Kick off the database loads of the nameservers that we will need. Map, HostResource> loadedHosts = ofy().load().refs(domainResource.getNameservers()); @@ -432,7 +434,7 @@ public class RdapJsonFormatter { builder.put("status", makeStatusValueList(domainResource.getStatusValues())); builder.put("links", ImmutableList.of( makeLink("domain", domainResource.getFullyQualifiedDomainName(), linkBase))); - ImmutableList events = makeEvents(domainResource); + ImmutableList events = makeEvents(domainResource, now); if (!events.isEmpty()) { builder.put("events", events); } @@ -440,7 +442,7 @@ public class RdapJsonFormatter { ImmutableList.Builder nsBuilder = new ImmutableList.Builder<>(); for (HostResource hostResource : HOST_RESOURCE_ORDERING.immutableSortedCopy(loadedHosts.values())) { - nsBuilder.add(makeRdapJsonForHost(hostResource, false, linkBase, null)); + nsBuilder.add(makeRdapJsonForHost(hostResource, false, linkBase, null, now)); } ImmutableList ns = nsBuilder.build(); if (!ns.isEmpty()) { @@ -454,7 +456,7 @@ public class RdapJsonFormatter { ContactResource loadedContact = loadedContacts.get(designatedContact.getContactRef().key()); entitiesBuilder.add(makeRdapJsonForContact( - loadedContact, false, Optional.of(designatedContact.getType()), linkBase, null)); + loadedContact, false, Optional.of(designatedContact.getType()), linkBase, null, now)); } ImmutableList entities = entitiesBuilder.build(); if (!entities.isEmpty()) { @@ -481,7 +483,8 @@ public class RdapJsonFormatter { HostResource hostResource, boolean isTopLevel, @Nullable String linkBase, - @Nullable String whoisServer) { + @Nullable String whoisServer, + DateTime now) { ImmutableMap.Builder builder = new ImmutableMap.Builder<>(); builder.put("objectClassName", "nameserver"); builder.put("handle", hostResource.getRepoId()); @@ -493,7 +496,7 @@ public class RdapJsonFormatter { builder.put("status", makeStatusValueList(hostResource.getStatusValues())); builder.put("links", ImmutableList.of( makeLink("nameserver", hostResource.getFullyQualifiedHostName(), linkBase))); - ImmutableList events = makeEvents(hostResource); + ImmutableList events = makeEvents(hostResource, now); if (!events.isEmpty()) { builder.put("events", events); } @@ -546,7 +549,8 @@ public class RdapJsonFormatter { boolean isTopLevel, Optional contactType, @Nullable String linkBase, - @Nullable String whoisServer) { + @Nullable String whoisServer, + DateTime now) { ImmutableMap.Builder builder = new ImmutableMap.Builder<>(); builder.put("objectClassName", "entity"); builder.put("handle", contactResource.getRepoId()); @@ -588,7 +592,7 @@ public class RdapJsonFormatter { vcardBuilder.add(ImmutableList.of("email", ImmutableMap.of(), "text", emailAddress)); } builder.put("vcardArray", ImmutableList.of("vcard", vcardBuilder.build())); - ImmutableList events = makeEvents(contactResource); + ImmutableList events = makeEvents(contactResource, now); if (!events.isEmpty()) { builder.put("events", events); } @@ -613,7 +617,8 @@ public class RdapJsonFormatter { Registrar registrar, boolean isTopLevel, @Nullable String linkBase, - @Nullable String whoisServer) { + @Nullable String whoisServer, + DateTime now) { ImmutableMap.Builder builder = new ImmutableMap.Builder<>(); builder.put("objectClassName", "entity"); builder.put("handle", registrar.getClientIdentifier()); @@ -656,7 +661,7 @@ public class RdapJsonFormatter { vcardBuilder.add(ImmutableList.of("email", ImmutableMap.of(), "text", emailAddress)); } builder.put("vcardArray", ImmutableList.of("vcard", vcardBuilder.build())); - ImmutableList events = makeEvents(registrar); + ImmutableList events = makeEvents(registrar, now); if (!events.isEmpty()) { builder.put("events", events); } @@ -763,7 +768,7 @@ public class RdapJsonFormatter { /** * Creates an event list for a domain, host or contact resource. */ - private static ImmutableList makeEvents(EppResource resource) { + private static ImmutableList makeEvents(EppResource resource, DateTime now) { ImmutableList.Builder eventsBuilder = new ImmutableList.Builder<>(); for (HistoryEntry historyEntry : ofy().load() .type(HistoryEntry.class) @@ -789,13 +794,14 @@ public class RdapJsonFormatter { eventsBuilder.add(makeEvent( RdapEventAction.LAST_CHANGED, null, resource.getLastEppUpdateTime())); } + eventsBuilder.add(makeEvent(RdapEventAction.LAST_UPDATE_OF_RDAP_DATABASE, null, now)); return eventsBuilder.build(); } /** * Creates an event list for a {@link Registrar}. */ - private static ImmutableList makeEvents(Registrar registrar) { + private static ImmutableList makeEvents(Registrar registrar, DateTime now) { ImmutableList.Builder eventsBuilder = new ImmutableList.Builder<>(); eventsBuilder.add(makeEvent( RdapEventAction.REGISTRATION, @@ -806,6 +812,7 @@ public class RdapJsonFormatter { eventsBuilder.add(makeEvent( RdapEventAction.LAST_CHANGED, null, registrar.getLastUpdateTime())); } + eventsBuilder.add(makeEvent(RdapEventAction.LAST_UPDATE_OF_RDAP_DATABASE, null, now)); return eventsBuilder.build(); } diff --git a/java/google/registry/rdap/RdapNameserverAction.java b/java/google/registry/rdap/RdapNameserverAction.java index 095d599ee..0f91d8a19 100644 --- a/java/google/registry/rdap/RdapNameserverAction.java +++ b/java/google/registry/rdap/RdapNameserverAction.java @@ -25,6 +25,7 @@ import google.registry.request.HttpException; import google.registry.request.HttpException.NotFoundException; import google.registry.util.Clock; import javax.inject.Inject; +import org.joda.time.DateTime; /** * RDAP (new WHOIS) action for nameserver requests. @@ -50,14 +51,16 @@ public class RdapNameserverAction extends RdapActionBase { @Override public ImmutableMap getJsonObjectForResource( String pathSearchString, boolean isHeadRequest, String linkBase) throws HttpException { + DateTime now = clock.nowUtc(); pathSearchString = canonicalizeName(pathSearchString); // The RDAP syntax is /rdap/nameserver/ns1.mydomain.com. validateDomainName(pathSearchString); HostResource hostResource = - loadByUniqueId(HostResource.class, pathSearchString, clock.nowUtc()); + loadByUniqueId(HostResource.class, pathSearchString, now); if (hostResource == null) { throw new NotFoundException(pathSearchString + " not found"); } - return RdapJsonFormatter.makeRdapJsonForHost(hostResource, true, rdapLinkBase, rdapWhoisServer); + return RdapJsonFormatter.makeRdapJsonForHost( + hostResource, true, rdapLinkBase, rdapWhoisServer, now); } } diff --git a/java/google/registry/rdap/RdapNameserverSearchAction.java b/java/google/registry/rdap/RdapNameserverSearchAction.java index b6a9eb196..d644e6c20 100644 --- a/java/google/registry/rdap/RdapNameserverSearchAction.java +++ b/java/google/registry/rdap/RdapNameserverSearchAction.java @@ -96,7 +96,7 @@ public class RdapNameserverSearchAction extends RdapActionBase { results = searchByName(RdapSearchPattern.create(Idn.toASCII(nameParam.get()), true), now); } else { // syntax: /rdap/nameservers?ip=1.2.3.4 - results = searchByIp(ipParam.get()); + results = searchByIp(ipParam.get(), now); } if (results.isEmpty()) { throw new NotFoundException("No nameservers found"); @@ -120,7 +120,7 @@ public class RdapNameserverSearchAction extends RdapActionBase { } return ImmutableList.of( RdapJsonFormatter.makeRdapJsonForHost( - hostResource, false, rdapLinkBase, rdapWhoisServer)); + hostResource, false, rdapLinkBase, rdapWhoisServer, now)); // Handle queries with a wildcard, but no suffix. There are no pending deletes for hosts, so we // can call queryUndeleted. } else if (partialStringQuery.getSuffix() == null) { @@ -132,7 +132,7 @@ public class RdapNameserverSearchAction extends RdapActionBase { for (HostResource hostResource : query) { builder.add( RdapJsonFormatter.makeRdapJsonForHost( - hostResource, false, rdapLinkBase, rdapWhoisServer)); + hostResource, false, rdapLinkBase, rdapWhoisServer, now)); } return builder.build(); // Handle queries with a wildcard and a suffix. In this case, it is more efficient to do things @@ -140,7 +140,7 @@ public class RdapNameserverSearchAction extends RdapActionBase { // looking for matches. } else { DomainResource domainResource = - loadByUniqueId(DomainResource.class, partialStringQuery.getSuffix(), clock.nowUtc()); + loadByUniqueId(DomainResource.class, partialStringQuery.getSuffix(), now); if (domainResource == null) { throw new NotFoundException("No domain found for specified nameserver suffix"); } @@ -149,11 +149,11 @@ public class RdapNameserverSearchAction extends RdapActionBase { // We can't just check that the host name starts with the initial query string, because then // the query ns.exam*.example.com would match against nameserver ns.example.com. if (partialStringQuery.matches(fqhn)) { - HostResource hostResource = loadByUniqueId(HostResource.class, fqhn, clock.nowUtc()); + HostResource hostResource = loadByUniqueId(HostResource.class, fqhn, now); if (hostResource != null) { builder.add( RdapJsonFormatter.makeRdapJsonForHost( - hostResource, false, rdapLinkBase, rdapWhoisServer)); + hostResource, false, rdapLinkBase, rdapWhoisServer, now)); } } } @@ -163,7 +163,7 @@ public class RdapNameserverSearchAction extends RdapActionBase { /** Searches for nameservers by IP address, returning a JSON array of nameserver info maps. */ private ImmutableList> - searchByIp(final InetAddress inetAddress) throws HttpException { + searchByIp(final InetAddress inetAddress, DateTime now) throws HttpException { // In theory, we could filter on deletion time being in the future. But we can't do that in the // name query above (because we already have an inequality filter), and filtering on deletion // time differently in the two cases seems like a recipe for future confusion. @@ -177,7 +177,7 @@ public class RdapNameserverSearchAction extends RdapActionBase { for (HostResource hostResource : query) { builder.add( RdapJsonFormatter.makeRdapJsonForHost( - hostResource, false, rdapLinkBase, rdapWhoisServer)); + hostResource, false, rdapLinkBase, rdapWhoisServer, now)); } return builder.build(); } diff --git a/javatests/google/registry/rdap/RdapJsonFormatterTest.java b/javatests/google/registry/rdap/RdapJsonFormatterTest.java index 1226b85d1..3d80a0e1f 100644 --- a/javatests/google/registry/rdap/RdapJsonFormatterTest.java +++ b/javatests/google/registry/rdap/RdapJsonFormatterTest.java @@ -203,36 +203,36 @@ public class RdapJsonFormatterTest { @Test public void testRegistrar() throws Exception { - assertThat( - RdapJsonFormatter.makeRdapJsonForRegistrar(registrar, false, LINK_BASE, WHOIS_SERVER)) - .isEqualTo(loadJson("rdapjson_registrar.json")); + assertThat(RdapJsonFormatter.makeRdapJsonForRegistrar( + registrar, false, LINK_BASE, WHOIS_SERVER, clock.nowUtc())) + .isEqualTo(loadJson("rdapjson_registrar.json")); } @Test public void testHost_ipv4() throws Exception { - assertThat( - RdapJsonFormatter.makeRdapJsonForHost(hostResourceIpv4, false, LINK_BASE, WHOIS_SERVER)) - .isEqualTo(loadJson("rdapjson_host_ipv4.json")); + assertThat(RdapJsonFormatter.makeRdapJsonForHost( + hostResourceIpv4, false, LINK_BASE, WHOIS_SERVER, clock.nowUtc())) + .isEqualTo(loadJson("rdapjson_host_ipv4.json")); } @Test public void testHost_ipv6() throws Exception { - assertThat( - RdapJsonFormatter.makeRdapJsonForHost(hostResourceIpv6, false, LINK_BASE, WHOIS_SERVER)) - .isEqualTo(loadJson("rdapjson_host_ipv6.json")); + assertThat(RdapJsonFormatter.makeRdapJsonForHost( + hostResourceIpv6, false, LINK_BASE, WHOIS_SERVER, clock.nowUtc())) + .isEqualTo(loadJson("rdapjson_host_ipv6.json")); } @Test public void testHost_both() throws Exception { - assertThat( - RdapJsonFormatter.makeRdapJsonForHost(hostResourceBoth, false, LINK_BASE, WHOIS_SERVER)) - .isEqualTo(loadJson("rdapjson_host_both.json")); + assertThat(RdapJsonFormatter.makeRdapJsonForHost( + hostResourceBoth, false, LINK_BASE, WHOIS_SERVER, clock.nowUtc())) + .isEqualTo(loadJson("rdapjson_host_both.json")); } @Test public void testHost_noAddresses() throws Exception { assertThat(RdapJsonFormatter.makeRdapJsonForHost( - hostResourceNoAddresses, false, LINK_BASE, WHOIS_SERVER)) + hostResourceNoAddresses, false, LINK_BASE, WHOIS_SERVER, clock.nowUtc())) .isEqualTo(loadJson("rdapjson_host_no_addresses.json")); } @@ -244,7 +244,8 @@ public class RdapJsonFormatterTest { false, Optional.of(DesignatedContact.Type.REGISTRANT), LINK_BASE, - WHOIS_SERVER)) + WHOIS_SERVER, + clock.nowUtc())) .isEqualTo(loadJson("rdapjson_registrant.json")); } @@ -256,7 +257,8 @@ public class RdapJsonFormatterTest { false, Optional.of(DesignatedContact.Type.REGISTRANT), LINK_BASE_NO_TRAILING_SLASH, - WHOIS_SERVER)) + WHOIS_SERVER, + clock.nowUtc())) .isEqualTo(loadJson("rdapjson_registrant.json")); } @@ -268,7 +270,8 @@ public class RdapJsonFormatterTest { false, Optional.of(DesignatedContact.Type.REGISTRANT), null, - WHOIS_SERVER)) + WHOIS_SERVER, + clock.nowUtc())) .isEqualTo(loadJson("rdapjson_registrant_nobase.json")); } @@ -280,7 +283,8 @@ public class RdapJsonFormatterTest { false, Optional.of(DesignatedContact.Type.ADMIN), LINK_BASE, - WHOIS_SERVER)) + WHOIS_SERVER, + clock.nowUtc())) .isEqualTo(loadJson("rdapjson_admincontact.json")); } @@ -292,7 +296,8 @@ public class RdapJsonFormatterTest { false, Optional.of(DesignatedContact.Type.TECH), LINK_BASE, - WHOIS_SERVER)) + WHOIS_SERVER, + clock.nowUtc())) .isEqualTo(loadJson("rdapjson_techcontact.json")); } @@ -304,23 +309,22 @@ public class RdapJsonFormatterTest { false, Optional.absent(), LINK_BASE, - WHOIS_SERVER)) + WHOIS_SERVER, + clock.nowUtc())) .isEqualTo(loadJson("rdapjson_rolelesscontact.json")); } @Test public void testDomain_full() throws Exception { - assertThat( - RdapJsonFormatter.makeRdapJsonForDomain( - domainResourceFull, false, LINK_BASE, WHOIS_SERVER)) + assertThat(RdapJsonFormatter.makeRdapJsonForDomain( + domainResourceFull, false, LINK_BASE, WHOIS_SERVER, clock.nowUtc())) .isEqualTo(loadJson("rdapjson_domain_full.json")); } @Test public void testDomain_noNameservers() throws Exception { - assertThat( - RdapJsonFormatter.makeRdapJsonForDomain( - domainResourceNoNameservers, false, LINK_BASE, WHOIS_SERVER)) + assertThat(RdapJsonFormatter.makeRdapJsonForDomain( + domainResourceNoNameservers, false, LINK_BASE, WHOIS_SERVER, clock.nowUtc())) .isEqualTo(loadJson("rdapjson_domain_no_nameservers.json")); } diff --git a/javatests/google/registry/rdap/testdata/rdap_contact.json b/javatests/google/registry/rdap/testdata/rdap_contact.json index dd60d4e44..0fdeb8f8c 100644 --- a/javatests/google/registry/rdap/testdata/rdap_contact.json +++ b/javatests/google/registry/rdap/testdata/rdap_contact.json @@ -17,6 +17,10 @@ "eventActor": "foo", "eventDate": "2000-01-01T00:00:00.000Z" }, + { + "eventAction": "last update of RDAP database", + "eventDate": "2000-01-01T00:00:00.000Z" + } ], "vcardArray" : [ diff --git a/javatests/google/registry/rdap/testdata/rdap_domain.json b/javatests/google/registry/rdap/testdata/rdap_domain.json index ca94d4fa4..8876cd9f2 100644 --- a/javatests/google/registry/rdap/testdata/rdap_domain.json +++ b/javatests/google/registry/rdap/testdata/rdap_domain.json @@ -27,6 +27,10 @@ { "eventAction": "last changed", "eventDate": "2009-05-29T20:13:00.000Z" + }, + { + "eventAction": "last update of RDAP database", + "eventDate": "2000-01-01T00:00:00.000Z" } ], "nameservers": [ @@ -54,6 +58,10 @@ "eventAction": "registration", "eventActor": "foo", "eventDate": "1999-01-01T00:00:00.000Z" + }, + { + "eventAction": "last update of RDAP database", + "eventDate": "2000-01-01T00:00:00.000Z" } ], "objectClassName": "nameserver" @@ -82,6 +90,10 @@ "eventAction": "registration", "eventActor": "foo", "eventDate": "1998-01-01T00:00:00.000Z" + }, + { + "eventAction": "last update of RDAP database", + "eventDate": "2000-01-01T00:00:00.000Z" } ], "objectClassName": "nameserver" @@ -110,6 +122,10 @@ "eventAction": "registration", "eventActor": "foo", "eventDate": "1998-01-01T00:00:00.000Z" + }, + { + "eventAction": "last update of RDAP database", + "eventDate": "2000-01-01T00:00:00.000Z" } ], "objectClassName": "entity", @@ -198,6 +214,10 @@ "eventAction": "registration", "eventActor": "foo", "eventDate": "1997-01-01T00:00:00.000Z" + }, + { + "eventAction": "last update of RDAP database", + "eventDate": "2000-01-01T00:00:00.000Z" } ], "objectClassName": "entity", @@ -286,6 +306,10 @@ "eventAction": "registration", "eventActor": "foo", "eventDate": "1999-01-01T00:00:00.000Z" + }, + { + "eventAction": "last update of RDAP database", + "eventDate": "2000-01-01T00:00:00.000Z" } ], "objectClassName": "entity", diff --git a/javatests/google/registry/rdap/testdata/rdap_domain_unicode.json b/javatests/google/registry/rdap/testdata/rdap_domain_unicode.json index 270ce1b68..ba0cb8abd 100644 --- a/javatests/google/registry/rdap/testdata/rdap_domain_unicode.json +++ b/javatests/google/registry/rdap/testdata/rdap_domain_unicode.json @@ -28,6 +28,10 @@ { "eventAction": "last changed", "eventDate": "2009-05-29T20:13:00.000Z" + }, + { + "eventAction": "last update of RDAP database", + "eventDate": "2000-01-01T00:00:00.000Z" } ], "nameservers": [ @@ -55,6 +59,10 @@ "eventAction": "registration", "eventActor": "foo", "eventDate": "1999-01-01T00:00:00.000Z" + }, + { + "eventAction": "last update of RDAP database", + "eventDate": "2000-01-01T00:00:00.000Z" } ], "objectClassName": "nameserver" @@ -83,6 +91,10 @@ "eventAction": "registration", "eventActor": "foo", "eventDate": "1998-01-01T00:00:00.000Z" + }, + { + "eventAction": "last update of RDAP database", + "eventDate": "2000-01-01T00:00:00.000Z" } ], "objectClassName": "nameserver" @@ -111,6 +123,10 @@ "eventAction": "registration", "eventActor": "foo", "eventDate": "1998-01-01T00:00:00.000Z" + }, + { + "eventAction": "last update of RDAP database", + "eventDate": "2000-01-01T00:00:00.000Z" } ], "objectClassName": "entity", @@ -199,6 +215,10 @@ "eventAction": "registration", "eventActor": "foo", "eventDate": "1997-01-01T00:00:00.000Z" + }, + { + "eventAction": "last update of RDAP database", + "eventDate": "2000-01-01T00:00:00.000Z" } ], "objectClassName": "entity", @@ -287,6 +307,10 @@ "eventAction": "registration", "eventActor": "foo", "eventDate": "1999-01-01T00:00:00.000Z" + }, + { + "eventAction": "last update of RDAP database", + "eventDate": "2000-01-01T00:00:00.000Z" } ], "objectClassName": "entity", diff --git a/javatests/google/registry/rdap/testdata/rdap_host.json b/javatests/google/registry/rdap/testdata/rdap_host.json index da6384db4..f375bc8e1 100644 --- a/javatests/google/registry/rdap/testdata/rdap_host.json +++ b/javatests/google/registry/rdap/testdata/rdap_host.json @@ -23,6 +23,10 @@ "eventActor": "foo", "eventDate": "1999-01-01T00:00:00.000Z" }, + { + "eventAction": "last update of RDAP database", + "eventDate": "2000-01-01T00:00:00.000Z" + } ], "objectClassName": "nameserver" } diff --git a/javatests/google/registry/rdap/testdata/rdap_host_external.json b/javatests/google/registry/rdap/testdata/rdap_host_external.json index fd5766e6b..282c4b928 100644 --- a/javatests/google/registry/rdap/testdata/rdap_host_external.json +++ b/javatests/google/registry/rdap/testdata/rdap_host_external.json @@ -18,6 +18,10 @@ "eventActor": "foo", "eventDate": "1999-01-01T00:00:00.000Z" }, + { + "eventAction": "last update of RDAP database", + "eventDate": "2000-01-01T00:00:00.000Z" + } ], "objectClassName": "nameserver" } diff --git a/javatests/google/registry/rdap/testdata/rdap_host_unicode.json b/javatests/google/registry/rdap/testdata/rdap_host_unicode.json index b3c63ff89..86be4ca04 100644 --- a/javatests/google/registry/rdap/testdata/rdap_host_unicode.json +++ b/javatests/google/registry/rdap/testdata/rdap_host_unicode.json @@ -24,6 +24,10 @@ "eventActor": "foo", "eventDate": "1999-01-01T00:00:00.000Z" }, + { + "eventAction": "last update of RDAP database", + "eventDate": "2000-01-01T00:00:00.000Z" + } ], "objectClassName": "nameserver" } diff --git a/javatests/google/registry/rdap/testdata/rdap_multiple_contacts.json b/javatests/google/registry/rdap/testdata/rdap_multiple_contacts.json index 1f9c4fe73..6fc583421 100644 --- a/javatests/google/registry/rdap/testdata/rdap_multiple_contacts.json +++ b/javatests/google/registry/rdap/testdata/rdap_multiple_contacts.json @@ -19,6 +19,10 @@ "eventAction": "registration", "eventActor": "foo", "eventDate": "2000-01-01T00:00:00.000Z" + }, + { + "eventAction": "last update of RDAP database", + "eventDate": "2000-01-01T00:00:00.000Z" } ], "vcardArray" : @@ -64,6 +68,10 @@ "eventAction": "registration", "eventActor": "2-Registrar", "eventDate": "2000-01-01T00:00:00.000Z" + }, + { + "eventAction": "last update of RDAP database", + "eventDate": "2000-01-01T00:00:00.000Z" } ], "publicIds" : diff --git a/javatests/google/registry/rdap/testdata/rdap_multiple_domains.json b/javatests/google/registry/rdap/testdata/rdap_multiple_domains.json index 176daa073..815a27ea1 100644 --- a/javatests/google/registry/rdap/testdata/rdap_multiple_domains.json +++ b/javatests/google/registry/rdap/testdata/rdap_multiple_domains.json @@ -29,6 +29,10 @@ { "eventAction": "last changed", "eventDate": "2009-05-29T20:13:00.000Z" + }, + { + "eventAction": "last update of RDAP database", + "eventDate": "2000-01-01T00:00:00.000Z" } ], "nameservers": [ @@ -56,6 +60,10 @@ "eventAction": "registration", "eventActor": "foo", "eventDate": "1999-01-01T00:00:00.000Z" + }, + { + "eventAction": "last update of RDAP database", + "eventDate": "2000-01-01T00:00:00.000Z" } ], "objectClassName": "nameserver" @@ -84,6 +92,10 @@ "eventAction": "registration", "eventActor": "foo", "eventDate": "1998-01-01T00:00:00.000Z" + }, + { + "eventAction": "last update of RDAP database", + "eventDate": "2000-01-01T00:00:00.000Z" } ], "objectClassName": "nameserver" @@ -112,6 +124,10 @@ "eventAction": "registration", "eventActor": "foo", "eventDate": "1998-01-01T00:00:00.000Z" + }, + { + "eventAction": "last update of RDAP database", + "eventDate": "2000-01-01T00:00:00.000Z" } ], "objectClassName": "entity", @@ -200,6 +216,10 @@ "eventAction": "registration", "eventActor": "foo", "eventDate": "1997-01-01T00:00:00.000Z" + }, + { + "eventAction": "last update of RDAP database", + "eventDate": "2000-01-01T00:00:00.000Z" } ], "objectClassName": "entity", @@ -288,6 +308,10 @@ "eventAction": "registration", "eventActor": "foo", "eventDate": "1999-01-01T00:00:00.000Z" + }, + { + "eventAction": "last update of RDAP database", + "eventDate": "2000-01-01T00:00:00.000Z" } ], "objectClassName": "entity", @@ -387,6 +411,10 @@ { "eventAction": "last changed", "eventDate": "2009-05-29T20:13:00.000Z" + }, + { + "eventAction": "last update of RDAP database", + "eventDate": "2000-01-01T00:00:00.000Z" } ], "nameservers": [ @@ -414,6 +442,10 @@ "eventAction": "registration", "eventActor": "foo", "eventDate": "1999-01-01T00:00:00.000Z" + }, + { + "eventAction": "last update of RDAP database", + "eventDate": "2000-01-01T00:00:00.000Z" } ], "objectClassName": "nameserver" @@ -442,6 +474,10 @@ "eventAction": "registration", "eventActor": "foo", "eventDate": "1998-01-01T00:00:00.000Z" + }, + { + "eventAction": "last update of RDAP database", + "eventDate": "2000-01-01T00:00:00.000Z" } ], "objectClassName": "nameserver" @@ -470,6 +506,10 @@ "eventAction": "registration", "eventActor": "foo", "eventDate": "1998-01-01T00:00:00.000Z" + }, + { + "eventAction": "last update of RDAP database", + "eventDate": "2000-01-01T00:00:00.000Z" } ], "objectClassName": "entity", @@ -558,6 +598,10 @@ "eventAction": "registration", "eventActor": "foo", "eventDate": "1997-01-01T00:00:00.000Z" + }, + { + "eventAction": "last update of RDAP database", + "eventDate": "2000-01-01T00:00:00.000Z" } ], "objectClassName": "entity", @@ -646,6 +690,10 @@ "eventAction": "registration", "eventActor": "foo", "eventDate": "1999-01-01T00:00:00.000Z" + }, + { + "eventAction": "last update of RDAP database", + "eventDate": "2000-01-01T00:00:00.000Z" } ], "objectClassName": "entity", diff --git a/javatests/google/registry/rdap/testdata/rdap_multiple_hosts.json b/javatests/google/registry/rdap/testdata/rdap_multiple_hosts.json index 3e2f63fbb..dc35ac361 100644 --- a/javatests/google/registry/rdap/testdata/rdap_multiple_hosts.json +++ b/javatests/google/registry/rdap/testdata/rdap_multiple_hosts.json @@ -24,6 +24,10 @@ "eventAction": "registration", "eventActor": "foo", "eventDate": "1999-01-01T00:00:00.000Z" + }, + { + "eventAction": "last update of RDAP database", + "eventDate": "2000-01-01T00:00:00.000Z" } ] }, @@ -51,6 +55,10 @@ "eventAction": "registration", "eventActor": "foo", "eventDate": "1999-01-01T00:00:00.000Z" + }, + { + "eventAction": "last update of RDAP database", + "eventDate": "2000-01-01T00:00:00.000Z" } ] } diff --git a/javatests/google/registry/rdap/testdata/rdap_registrar.json b/javatests/google/registry/rdap/testdata/rdap_registrar.json index 895d0252d..a3d321487 100644 --- a/javatests/google/registry/rdap/testdata/rdap_registrar.json +++ b/javatests/google/registry/rdap/testdata/rdap_registrar.json @@ -25,6 +25,10 @@ "eventActor": "%NAME%", "eventDate": "2000-01-01T00:00:00.000Z" }, + { + "eventAction": "last update of RDAP database", + "eventDate": "2000-01-01T00:00:00.000Z" + } ], "vcardArray" : [ diff --git a/javatests/google/registry/rdap/testdata/rdapjson_admincontact.json b/javatests/google/registry/rdap/testdata/rdapjson_admincontact.json index 33e8f83a8..3fd2e80ba 100644 --- a/javatests/google/registry/rdap/testdata/rdapjson_admincontact.json +++ b/javatests/google/registry/rdap/testdata/rdapjson_admincontact.json @@ -18,6 +18,10 @@ "eventActor": "foo", "eventDate": "1998-01-01T00:00:00.000Z" }, + { + "eventAction": "last update of RDAP database", + "eventDate": "2000-01-01T00:00:00.000Z" + } ], "vcardArray" : [ diff --git a/javatests/google/registry/rdap/testdata/rdapjson_domain_full.json b/javatests/google/registry/rdap/testdata/rdapjson_domain_full.json index f2d0fdcd1..65565876e 100644 --- a/javatests/google/registry/rdap/testdata/rdapjson_domain_full.json +++ b/javatests/google/registry/rdap/testdata/rdapjson_domain_full.json @@ -32,6 +32,10 @@ { "eventAction": "last changed", "eventDate": "2009-05-29T20:13:00.000Z" + }, + { + "eventAction": "last update of RDAP database", + "eventDate": "2000-01-01T00:00:00.000Z" } ], "nameservers" : @@ -56,6 +60,10 @@ "eventAction": "registration", "eventActor": "foo", "eventDate": "1999-01-01T00:00:00.000Z" + }, + { + "eventAction": "last update of RDAP database", + "eventDate": "2000-01-01T00:00:00.000Z" } ], "ipAddresses" : @@ -83,6 +91,10 @@ "eventAction": "registration", "eventActor": "foo", "eventDate": "1998-01-01T00:00:00.000Z" + }, + { + "eventAction": "last update of RDAP database", + "eventDate": "2000-01-01T00:00:00.000Z" } ], "ipAddresses" : @@ -112,6 +124,10 @@ "eventAction": "registration", "eventActor": "foo", "eventDate": "1998-01-01T00:00:00.000Z" + }, + { + "eventAction": "last update of RDAP database", + "eventDate": "2000-01-01T00:00:00.000Z" } ], "vcardArray" : @@ -157,6 +173,10 @@ "eventAction": "registration", "eventActor": "foo", "eventDate": "1997-01-01T00:00:00.000Z" + }, + { + "eventAction": "last update of RDAP database", + "eventDate": "2000-01-01T00:00:00.000Z" } ], "vcardArray" : @@ -202,6 +222,10 @@ "eventAction": "registration", "eventActor": "foo", "eventDate": "1999-01-01T00:00:00.000Z" + }, + { + "eventAction": "last update of RDAP database", + "eventDate": "2000-01-01T00:00:00.000Z" } ], "vcardArray" : diff --git a/javatests/google/registry/rdap/testdata/rdapjson_domain_no_nameservers.json b/javatests/google/registry/rdap/testdata/rdapjson_domain_no_nameservers.json index 4b8ee1ff6..f7e931009 100644 --- a/javatests/google/registry/rdap/testdata/rdapjson_domain_no_nameservers.json +++ b/javatests/google/registry/rdap/testdata/rdapjson_domain_no_nameservers.json @@ -33,6 +33,10 @@ { "eventAction": "last changed", "eventDate": "2009-05-29T20:13:00.000Z" + }, + { + "eventAction": "last update of RDAP database", + "eventDate": "2000-01-01T00:00:00.000Z" } ], "entities" : @@ -56,6 +60,10 @@ "eventAction": "registration", "eventActor": "foo", "eventDate": "1998-01-01T00:00:00.000Z" + }, + { + "eventAction": "last update of RDAP database", + "eventDate": "2000-01-01T00:00:00.000Z" } ], "vcardArray" : @@ -101,6 +109,10 @@ "eventAction": "registration", "eventActor": "foo", "eventDate": "1997-01-01T00:00:00.000Z" + }, + { + "eventAction": "last update of RDAP database", + "eventDate": "2000-01-01T00:00:00.000Z" } ], "vcardArray" : @@ -146,6 +158,10 @@ "eventAction": "registration", "eventActor": "foo", "eventDate": "1999-01-01T00:00:00.000Z" + }, + { + "eventAction": "last update of RDAP database", + "eventDate": "2000-01-01T00:00:00.000Z" } ], "vcardArray" : diff --git a/javatests/google/registry/rdap/testdata/rdapjson_host_both.json b/javatests/google/registry/rdap/testdata/rdapjson_host_both.json index 87769dd4d..9ef23559a 100644 --- a/javatests/google/registry/rdap/testdata/rdapjson_host_both.json +++ b/javatests/google/registry/rdap/testdata/rdapjson_host_both.json @@ -19,6 +19,10 @@ "eventActor": "foo", "eventDate": "1997-01-01T00:00:00.000Z" }, + { + "eventAction": "last update of RDAP database", + "eventDate": "2000-01-01T00:00:00.000Z" + } ], "ipAddresses" : { diff --git a/javatests/google/registry/rdap/testdata/rdapjson_host_ipv4.json b/javatests/google/registry/rdap/testdata/rdapjson_host_ipv4.json index a1fabd2ee..a14294268 100644 --- a/javatests/google/registry/rdap/testdata/rdapjson_host_ipv4.json +++ b/javatests/google/registry/rdap/testdata/rdapjson_host_ipv4.json @@ -19,6 +19,10 @@ "eventActor": "foo", "eventDate": "1999-01-01T00:00:00.000Z" }, + { + "eventAction": "last update of RDAP database", + "eventDate": "2000-01-01T00:00:00.000Z" + } ], "ipAddresses" : { diff --git a/javatests/google/registry/rdap/testdata/rdapjson_host_ipv6.json b/javatests/google/registry/rdap/testdata/rdapjson_host_ipv6.json index db8ebe9ce..cbf84741b 100644 --- a/javatests/google/registry/rdap/testdata/rdapjson_host_ipv6.json +++ b/javatests/google/registry/rdap/testdata/rdapjson_host_ipv6.json @@ -19,6 +19,10 @@ "eventActor": "foo", "eventDate": "1998-01-01T00:00:00.000Z" }, + { + "eventAction": "last update of RDAP database", + "eventDate": "2000-01-01T00:00:00.000Z" + } ], "ipAddresses" : { diff --git a/javatests/google/registry/rdap/testdata/rdapjson_host_no_addresses.json b/javatests/google/registry/rdap/testdata/rdapjson_host_no_addresses.json index e407e73a8..936fe4eeb 100644 --- a/javatests/google/registry/rdap/testdata/rdapjson_host_no_addresses.json +++ b/javatests/google/registry/rdap/testdata/rdapjson_host_no_addresses.json @@ -19,5 +19,9 @@ "eventActor": "foo", "eventDate": "1996-01-01T00:00:00.000Z" }, + { + "eventAction": "last update of RDAP database", + "eventDate": "2000-01-01T00:00:00.000Z" + } ] } diff --git a/javatests/google/registry/rdap/testdata/rdapjson_registrant.json b/javatests/google/registry/rdap/testdata/rdapjson_registrant.json index 979cd98ce..99537647d 100644 --- a/javatests/google/registry/rdap/testdata/rdapjson_registrant.json +++ b/javatests/google/registry/rdap/testdata/rdapjson_registrant.json @@ -18,6 +18,10 @@ "eventActor": "foo", "eventDate": "1999-01-01T00:00:00.000Z" }, + { + "eventAction": "last update of RDAP database", + "eventDate": "2000-01-01T00:00:00.000Z" + } ], "vcardArray" : [ diff --git a/javatests/google/registry/rdap/testdata/rdapjson_registrant_nobase.json b/javatests/google/registry/rdap/testdata/rdapjson_registrant_nobase.json index bb7a4ecda..df006c41b 100644 --- a/javatests/google/registry/rdap/testdata/rdapjson_registrant_nobase.json +++ b/javatests/google/registry/rdap/testdata/rdapjson_registrant_nobase.json @@ -18,6 +18,10 @@ "eventActor": "foo", "eventDate": "1999-01-01T00:00:00.000Z" }, + { + "eventAction": "last update of RDAP database", + "eventDate": "2000-01-01T00:00:00.000Z" + } ], "vcardArray" : [ diff --git a/javatests/google/registry/rdap/testdata/rdapjson_registrar.json b/javatests/google/registry/rdap/testdata/rdapjson_registrar.json index 7ba657cee..3b3c93a56 100644 --- a/javatests/google/registry/rdap/testdata/rdapjson_registrar.json +++ b/javatests/google/registry/rdap/testdata/rdapjson_registrar.json @@ -22,6 +22,10 @@ "eventAction": "last changed", "eventDate": "2000-01-01T00:00:00.000Z" }, + { + "eventAction": "last update of RDAP database", + "eventDate": "2000-01-01T00:00:00.000Z" + } ], "publicIds" : [ diff --git a/javatests/google/registry/rdap/testdata/rdapjson_rolelesscontact.json b/javatests/google/registry/rdap/testdata/rdapjson_rolelesscontact.json index caad16636..989b1f3b8 100644 --- a/javatests/google/registry/rdap/testdata/rdapjson_rolelesscontact.json +++ b/javatests/google/registry/rdap/testdata/rdapjson_rolelesscontact.json @@ -17,6 +17,10 @@ "eventActor": "foo", "eventDate": "1997-01-01T00:00:00.000Z" }, + { + "eventAction": "last update of RDAP database", + "eventDate": "2000-01-01T00:00:00.000Z" + } ], "vcardArray" : [ diff --git a/javatests/google/registry/rdap/testdata/rdapjson_techcontact.json b/javatests/google/registry/rdap/testdata/rdapjson_techcontact.json index 613773087..c18887c6f 100644 --- a/javatests/google/registry/rdap/testdata/rdapjson_techcontact.json +++ b/javatests/google/registry/rdap/testdata/rdapjson_techcontact.json @@ -18,6 +18,10 @@ "eventActor": "foo", "eventDate": "1997-01-01T00:00:00.000Z" }, + { + "eventAction": "last update of RDAP database", + "eventDate": "2000-01-01T00:00:00.000Z" + } ], "vcardArray" : [