Common Data Structures Tests
RDAP Conformance validation
Test group: [stdRdapConformanceValidation]
The following steps should be used to test that an RDAP Conformance data structure is valid:
- Test case -10500: The RDAP Conformance data structure must be a syntactically valid JSON array.
- Test case -10501: Every value of the JSON array shall be a JSON string data type.
- Test case -10502: Each of the JSON string values in the JSON array, with the exception of "rdap_level_0", shall be included as an Extension Identifier in RDAPExtensions.
- Test case -10503: The JSON string value "rdap_level_0" is not included in the RDAP Conformance data structure.
- Test case -10504: The rdapConformance array must exist in all RDAP responses.
- Test case -10505: If the rdapConformance array exists in an object that is embedded in another object, then this is an error because rdapConformance must only appear in the top-most part of an RDAP response.
Links validation
Test group: [stdRdapLinksValidation]
The following steps should be used to test that a links data structure is valid:
- Test case -10600: The links data structure must be a syntactically valid JSON array.
- For every object (i.e. link) of the JSON array, verify that the link structure complies with:
- Test case -10601: The name of every name/value pair shall be value, rel, href, hreflang, title, media or type.
- Test case -10602: The JSON name/value pairs of rel, href, hreflang, title, media and type shall appear only once.
- Test case -10603: If the JSON name media exists, the allowed values are: screen, tty, tv, projection, handheld, print, braille, embossed, speech, and all.
- Test case -10604: If the JSON name rel exists, the value shall be included as a "Relation Name" in linkRelations.
- Test case -10605: If the JSON name type exists, the value shall be included as a "Type Name/Subtype Name" as registered in mediaTypes.
- Test case -10606: If the JSON name title exists, the value shall be a JSON string data type.
- Test case -10607: If the JSON name hreflang exists, the value shall be a JSON string data type or a valid JSON array where every value is a JSON string data type.
- Test case -10608: If the JSON name hreflang exists, every one of the JSON string data values shall conform to the Language-Tag syntax.
- Test case -10609: If the JSON name value exists, the value shall pass the test Web URI validation [webUriValidation] defined in this document.
- Test case -10610: The JSON name href shall exist.
- Test case -10611: For the JSON name href, the value shall pass the test Web URI validation [webUriValidation] defined in this document.
- Test case -10612: The JSON name value shall exist:
- Test case -10613: The JSON name “rel” shall exist:
Notices and Remarks Validation
Test group: [stdRdapNoticesRemarksValidation]
The following steps should be used to test that a notices or remarks data structure is valid:
- Test case -10700: The notices or remarks data structure must be a syntactically valid JSON array.
- For every object of the JSON array, verify that the structure complies with:
- Test case -10701: The name of every name/value pair shall be title, type, description or links.
- Test case -10702: The JSON name/values of title, type, description and links shall exist only once.
- Test case -10703: If the JSON name title exists, the value shall be a JSON string data type.
- Test case -10704: If the JSON name links exists, the value shall pass the test Links validation [stdRdapLinksValidation] defined in this document.
- Test case -10705: If the JSON name type exists, the value shall be a JSON string data type.
- Test case -10706: If the JSON name type exists, the value shall be included in the RDAPJSONValues with Type="notice and remark type".
- Test case -10707: The JSON name description shall exist.
- Test case -10708: The description data structure must be a syntactically valid JSON array.
- Test case -10709: Every value of the JSON array of the description data structure shall be a JSON string data type.
Language Identifier Validation
Test group: [stdRdapLanguageIdentifierValidation]
The following steps should be used to test that a lang data structure is valid:
- Test case -10800: For the JSON name lang, the value shall conform to the Language-Tag syntax.
Events Validation
Test group: [stdRdapEventsValidation]
The following steps should be used to test that a events data structure is valid:
- Test case -10900: The events data structure must be a syntactically valid JSON array.
- For every object of the JSON array, verify that the structure complies with:
- Test case -10901: The name of every name/value pair shall be any of: eventAction, eventActor, eventDate or links.
- Test case -10902: The JSON name/value pairs of eventAction, eventActor, eventDate and links shall exist only once.
- Test case -10903: The JSON name eventAction shall exist.
- Test case -10904: For the JSON name eventAction, the value shall be a JSON string data type.
- For the JSON name eventAction, the value shall be included in the RDAPJSONValues with Type="event action".
- Test case -10906: The JSON name eventDate shall exist.
- Test case -10907: For the JSON name eventDate, the value shall be a JSON string data type.
- Test case -10908: For the JSON name eventDate, the value shall be syntactically valid time and date according to RFC3339.
- Test case -10909: If the JSON name eventActor exists, the value shall be a JSON string data type.
- Test case -10910: If the JSON name links exists, the JSON name eventActor shall also exist.
- Test case -10911: If the JSON name links exists, the value shall pass the test Links validation [stdRdapLinksValidation] defined in this document.
- Test case -10912: An eventAction value shall only appears once within the events array.
Status validation
Test group: [stdRdapStatusValidation]
The following steps should be used to test that a status data structure is valid:
- Test case -11000: The status data structure must be a syntactically valid JSON array.
- Test case -11001: Every value of the JSON array shall be a JSON string data type.
- Test case -11002: Each of the JSON string values in the JSON array shall be included in the RDAPJSONValues with Type="status".
- Test case -11003: A string in the status array shall only appear once:
Port 43 WHOIS Server
Test group: [stdRdapPort43WhoisServerValidation]
The following steps should be used to test that a port43 data structure is valid:
- Test case -11100: For the JSON name port43, the value shall pass the test [IPv4Validation], [IPv6Validation] or [DomainNameValidation] defined in this document.
Public IDs validation
Test group: [stdRdapPublicIdsValidation]
The following steps should be used to test that a publicIds data structure is valid:
- Test case -11200: The publicIds data structure must be a syntactically valid JSON array.
- For every object of the JSON array, verify that the structure complies with:
- Test case -11201: The name of every name/value pairs shall be type or identifier.
- Test case -11202: The JSON name/values of type or identifier shall appear only once.
- Test case -11203: The JSON name/values of type and identifier shall appear.
- Test case -11204: For the JSON name type, the value shall be a JSON string data type.
- Test case -11205: For the JSON name identifier, the value shall be a JSON string data type.
asEventActor Validation
Test group: [stdRdapAsEventActorValidation]
The following steps should be used to test that an asEventActor data structure is valid:
- Test case -11300: The asEventActor data structure must be a syntactically valid JSON array.
- Test case -11301: The asEventActor data structure must be embedded within an entity object, and the entity object must be embedded within another object.
- For every object of the JSON array, verify that the structure complies with:
- Test case -11302: The name of every name/value pair shall be any of: eventAction or eventDate.
- Test case -11303: The JSON name/values of eventAction or eventDate shall appear only once.
- Test case -11304: The JSON name eventAction shall exist.
- Test case -11305: For the JSON name eventAction, the value shall be a JSON string data type.
- Test case -11306: For the JSON name eventAction, the value shall be included in the RDAPJSONValues with Type="event action".
- Test case -11307: The JSON name eventDate shall exist.
- Test case -11308: For the JSON name eventDate, the value shall be a JSON string data type.
- Test case -11309: For the JSON name eventDate, the value shall be syntactically valid time and date according to RFC3339.
- Test case -11310: An eventAction shall only appear once within the events array.
IP Addresses Validation
Test group: [stdRdapIpAddressesValidation]
The following steps should be used to test that an ipAddresses data structure is valid:
- Test case -11400: The ipAddresses data structure must be a syntactically valid JSON object.
- Test case -11401: The name of every name/value pair shall be any of: v4 or v6.
- Test case -11402: The JSON name/values of v4 and v6 shall appear only once.
- Test case -11403: One v4 name/values or one v6 name/value shall appear.
- If the JSON name v4 exists, the value shall pass the following:
- Test case -11404: The v4 data structure must be a syntactically valid JSON array.
- For every object of the JSON array, verify that the structure complies with:
- If the JSON name v6 exists, the value shall pass the following:
Variants validation
Test group: [stdRdapVariantsValidation]
The following steps should be used to test that a variants data structure is valid:
- Test case -11500: The variants data structure must be a syntactically valid JSON array.
-
For every object of the JSON array, verify that the structure complies with:
- Test case -11501: The name of every name/value pair shall be relation, idnTable or variantNames.
- Test case -11502: The JSON name/value pairs of relation, idnTable and variantNames shall appear only once.
- Test case -11503: The RDAP relation data structure must be a syntactically valid JSON array.
-
For every object of the JSON array, verify that the structure complies with:
-
Test case -11504: Every value of the JSON array shall be a JSON string data type.
- Test case -11505: Each of the JSON string values in the JSON array shall be included in the RDAPJSONValues with Type="domain variant relation".
- Test case -11506: If the JSON name idnTable exists, the value shall be a JSON string data type.
- Test case -11507: The variantNames data structure must be a syntactically valid JSON array.
- For every object of the JSON array, verify that the structure complies with:
- Test case -11508: The name of every name/value pair shall be any of: ldhName or unicodeName
- Test case -11509: The JSON name/value pairs of ldhName or unicodeName shall exist only once.
- Test case -11510: If the JSON name title ldhName exists, the value shall pass the test LDH name [stdRdapLdhNameValidation] defined in this document.
- Test case -11511: If the JSON name unicodeName exists, the value shall pass the test Unicode name [stdRdapUnicodeNameValidation] defined in this document.
Unicode name
Test group: [stdRdapUnicodeNameValidation]
The following steps should be used to test that a unicodeName is valid:
- Test case -11600: The length of each label is between 1 and 63.
- Test case -11601: A maximum total length of 253 characters not including the last ".".
- Test case -11602: At least two labels shall exist in the domain name. See, RDAP_Technical_Implementation_Guide_2_1 section 1.10.
- Test case -11603: Each label of the domain name is a valid "U-label or "NR-LDH label".
Note: the latest version of the IANA IDNA Rules and Derived Property Values shall be used. See, https://www.iana.org/assignments/idna-tables-11.0.0/idna-tables-11.0.0.xml
Note: some legacy gTLDs may fail this test, because they have a few domain name registrations that comply with IDNA2003 but not IDNA2018. Such names are not recommended to be used when testing an RDAP response with this tool.
LDH name
Test group: [stdRdapLdhNameValidation]
The following steps should be used to test that a ldhName is valid:
- Test case -11700: The length of each label is between 1 and 63.
- Test case -11701: A maximum total length of 253 characters not including the last ".".
- Test case -11702: At least two labels shall exist in the domain name. See, RDAP_Technical_Implementation_Guide_2_1 section 1.10.
- Test case -11703: Each label of the domain name is a valid "A-label or "NR-LDH label".
Note: the latest version of the IANA IDNA Rules and Derived Property Values shall be used. See, https://www.iana.org/assignments/idna-tables-11.0.0/idna-tables-11.0.0.xml
Note: some legacy gTLDs may fail this test, because they have a few domain name registrations that comply with IDNA2003 but not IDNA2018. Such names are not recommended to be used when testing an RDAP response with this tool.
Roles validation
Test group: [stdRdapRolesValidation]
The following steps should be used to test that a roles data structure is valid:
- Test case -11800: The roles data structure must be a syntactically valid JSON array.
- Test case -11801: Every value of the JSON array shall be a JSON string data type.
- Test case -11802: Each of the JSON string values in the JSON array shall be included in the RDAPJSONValues with Type="role".
- Test case -11803: The role value shall only appear once in the JSON array.
Entities validation
Test group: [stdRdapEntitiesValidation]
The following steps should be used to test that an entities data structure is valid:
- Test case -11900: The entities data structure must be a syntactically valid JSON array.
- Test case -11901: Every value of the JSON array shall pass the test Entity lookup validation [stdRdapEntityLookupValidation] defined in this document.
Secure DNS validation
Test group: [stdRdapSecureDnsValidation]
The following steps should be used to test that a secureDNS data structure is valid:
- Test case -12000: The secureDNS data structure must be a syntactically valid JSON object.
- Test case -12001: The name of every name/value pairs shall be zoneSigned, delegationSigned, maxSigLife, dsData or keyData.
- Test case -12002: The JSON name/values of zoneSigned, delegationSigned, maxSigLife, dsData and keyData shall appear only once.
- Test case -12003: If the JSON name zoneSigned appears, the value shall be a JSON boolean data type.
- Test case -12005: If the JSON name delegationSigned appears, the value shall be a JSON boolean data type.
- Test case -12006: If the JSON name maxSigLife exists, the value shall be a JSON number data type between 1 and 2147483647.
- If the JSON name dsData appears, the value shall pass the following:
- Test case -12008: The dsData data structure must be a syntactically valid array of JSON objects.
- Test case -12009: The name of every name/value pair shall be any of: keyTag, algorithm, digest, digestType, events or links.
- Test case -12010: The JSON name/values of keyTag, algorithm, digest, digestType, events or links shall appear only once.
- Test case -12011: The JSON name/values of keyTag, algorithm, digest and digestType shall appear.
- Test case -12012: For the JSON name keyTag, the value shall be a JSON number data type between 1 and 65535.
- Test case -12013: For the JSON name algorithm, the value shall be a JSON number listed with Zone Signing=Y in dnsSecAlgNumbers. The values 253 and 254 are not valid for this test.
- Test case -12014: For the JSON name digest, the value shall be a JSON string of case-insensitive hexadecimal digits. Whitespace is allowed within the hexadecimal text.
- Test case -12015: For the JSON name digestType, the value shall be a JSON number assigned in dsRrTypes.
- Test case -12016: If the JSON name events exists, the value shall pass the test Events Validation [stdRdapEventsValidation] defined in this document.
- Test case -12017: If the JSON name links exists, the value shall pass the test Links validation [stdRdapLinksValidation] defined in this document.
- If the JSON name keyData exists, the value shall pass the following:
- Test case -12018: The keyData data structure must be a syntactically valid array of JSON objects.
- Test case -12019: The name of every name/value pair shall be flags, protocol, publicKey, algorithm, events or links.
- Test case -12020: The JSON name/values of flags, protocol, publicKey, algorithm, events or links shall appear only once.
- Test case -12021: The JSON name/values of flags, protocol, publicKey and algorithm shall appear.
- Test case -12022: For the JSON name flags, the value shall be a JSON number data type with values: 256 or 257.
- Test case -12023: For the JSON name protocol, the value shall be a JSON number data type with value: 3.
- Test case -12024: For the JSON name publicKey, the value shall be a JSON string, and the key is represented as a Base64. Whitespace is allowed within the text.
- Test case -12025: For the JSON name algorithm, the value shall be a JSON number listed with Zone Signing=Y in dnsSecAlgNumbers. The values 253 and 254 are not valid for this test.
- Test case -12026: If the JSON name events exists, the value shall pass the test Events Validation [stdRdapEventsValidation] defined in this document.
- Test case -12027: If the JSON name links exists, the value shall pass the test Links validation [stdRdapLinksValidation] defined in this document.
Codes -12004 and -12007 are intentionally omitted.
Error Response Body
Test group: [stdRdapErrorResponseBodyValidation]
The following steps should be used to test that an error data structure is valid:
- Test case -12100: The error data structure must be a syntactically valid JSON object.
- Test case -12101: At least the following name/value pairs shall appear: errorCode, title and description.
- Test case -12102: The JSON name/values of errorCode, title, and description shall appear only once.
- Test case -12103: For the JSON name errorCode, the value shall be a JSON number data type.
- Test case -12104: For the JSON name title, the value shall be a JSON string data type.
- Test case -12105: The description data structure must be a syntactically valid JSON array.
- Test case -12106: Every value of the JSON array of the description data structure shall be a JSON string data type.
- Test case -12107: "errorCode" is required in an error response.