# Specification of test scenarios for MethodsV2


## Table of contents

* [Background](#background)
* [Test scenarios](#test-scenarios)
* [Public methods](#public-methods)
* [Test zone names](#test-zone-names)
* [Test scenarios and setup of test zones]


## Background

See the [test zone README file] which is for test case base test zones. Since
this document specifies test zones for a [MethodsV2] Method, it is not fully
applicable.

## Test scenarios

The purpose of the test scenarios is to cover all reasonable contexts for the
Methods. See [the implementation of the scenarios] for the latest version of the
implementation of the MethodsV2 scenarios.


## Public methods

[MethodsV2] provides the following public methods:

* For parent zone:
  * Get parent NS names and IP addresses
  * Get parent NS IP addresses
* For delegation:
  * Get delegation NS names and IP addresses
  * Get delegation NS IP addresses
  * Get delegation NS names
* For zone information:
  * Get zone NS names and IP addresses
  * Get zone NS names
  * Get zone NS IP addresses

### Data type

All methods can return one of the following data types:
  * Empty set
  * Non-empty set
  * Undefined set

The non-empty set from the following methods consists of unique IP addresses,
IPv4, IPv6 or both (e.g "127.40.4.21" and "fda1:b2:c3::21" are valid):
  * Get parent NS IP addresses
  * Get delegation NS IP addresses
  * Get zone NS IP addresses

The non-empty set from the following methods consists of unique name server
names (e.g. "ns1.example.xa" and "ns2.example.xb" are valid):
  * Get delegation NS names
  * Get zone NS names

The non-empty set from the following methods consists of unique pairs of name
server name and its IP address (IPv4 or IPv6). The IP address cannot be blank
(e.g. "ns1.example.xa/127.40.4.21" and "ns1.example.xa/fda1:b2:c3::21" are
valid but "ns1.example.xa" is not):
  * Get parent NS names and IP addresses

The non-empty set from the following methods consists of unique pairs of name
server name and its IP address (IPv4 or IPv6). The IP address can be left blank
(e.g. "ns1.example.xa/127.40.4.21", "ns1.example.xa/fda1:b2:c3::21" and
"ns1.example.xa" are valid):
  * Get delegation NS names and IP addresses
  * Get zone NS names and IP addresses

### Data defined for the scenarios

Both *Get delegation NS IP addresses* and *Get delegation NS names* can be
derived from *Get delegation NS names and IP addresses*.

Both *Get zone NS IP addresses* and *Get zone NS names* can be derived from
*Get zone NS names and IP addresses*.

*Get parent NS IP addresses* can be derived from *Get parent NS names and IP
addresses*.

Consequently, for the scenarios defined in this document the expected data is only
defined for the following three methods:
  * Get parent NS names and IP addresses
  * Get delegation NS names and IP addresses
  * Get zone NS names and IP addresses


## Test zone names

The test zone for each test scenario in this document is a subdomain delegated
from the base name (`methodsv2.xa`) and that subdomain having the same name as
the specific scenario. The names of those zones are given in section
"[Test scenarios and setup of test zones]" below.


## Test scenarios and setup of test zones

### Default zone configuration

Assumptions for the scenario specifications unless otherwise specified for
the specific scenario:

* The child zone is `child.parent.SCENARIO.methodsv2.xa`.
  * It is served by two IB (in-bailiwick) NS (ns1 and ns2).
  * ns1 and ns2 have the same zone content.
  * ns1 and ns2 have both IPv4 and IPv6 glue.
  * The records matching glue in the zone are complete.
  * The delegation from the parent has the same NS with complete glue.
* The parent zone is `parent.SCENARIO.methodsv2.xa`.
  * It is served by two IB NS (ns1 and ns2).
  * ns1 and ns2 have the same zone content.
  * ns1 and ns2 have both IPv4 and IPv6 glue.
  * The records matching glue in the zone are complete.
  * The delegation from the grandparent has the same NS with complete glue.
* The grandparent zone is `SCENARIO.methodsv2.xa`.
  * It is served by two IB NS (ns1 and ns2).
  * ns1 and ns2 have the same zone content.
  * ns1 and ns2 have both IPv4 and IPv6 glue.
  * The records matching glue in the zone are complete.
  * The delegation from the SCENARIO zoen has the same NS with complete glue.
* Responds with a A record for the zone on query for A.
* Responds with a AAAA record for the zone on query for AAAA.
* All responses are authoritative with [RCODE Name] "NoError".
* EDNS, version 0, is included in all responses on queries with EDNS.
* EDNS is not included in responses on queries without EDNS.
* Standard root is used.
* In all cases, delegation and zone are consistent.
  * Same NS
  * Any required glue matches address records in zone. No extra address
    records.

### GOOD-1
A "happy path". Everything is fine.

* Zone: child.parent.good-1.methodsv2.xa
  * Just defaults

### GOOD-2
A "happy path". Everything is fine. Child has out-of-bailiwick name servers
only.

* Zone: child.parent.good-2.methodsv2.xa
  * Child NS are out-of-bailiwick but not shared with grandparent zone.
    * ns5.good-2.methodsv2.xa
    * ns6.good-2.methodsv2.xa
  * No glue

### GOOD-3
A "happy path". Everything is fine. Child has both in-bailiwick and
out-of-bailiwick name servers.

* Zone: child.parent.good-3.methodsv2.xa
  * Child NS:
    * ns1.child.parent.good-3.methodsv2.xa
    * ns3.parent.good-3.methodsv2.xa
    * ns5.good-3.methodsv2.xa (not shared with grandparent zone).
  * Glue:
    * Address records (A and AAAA) for
      * ns1.child.parent.good-3.methodsv2.xa
      * ns3.parent.good-3.methodsv2.xa (optional)

### GOOD-4
A "happy path". Everything is fine. Parent zone is also hosted on grandparent
server.

* Zone: child.parent.good-4.methodsv2.xa
  * Parent NS:
    * ns1.parent.good-4.methodsv2.xa
    * ns2.parent.good-4.methodsv2.xa
    * ns1.good-4.methodsv2.xa (shared with grandparent zone).
  * Glue for parent:
    * Address records (A and AAAA) for
      * ns1.parent.good-4.methodsv2.xa
      * ns2.parent.good-4.methodsv2.xa
      * ns1.good-4.methodsv2.xa (optional)

### GOOD-5
A "happy path". Everything is fine. Child zone is hosted also on grandparent
server and parent server.

* Zone: child.parent.good-5.methodsv2.xa
  * Child NS:
    * ns1.child.parent.good-5.methodsv2.xa
    * ns2.child.parent.good-5.methodsv2.xa
    * ns1.good-5.methodsv2.xa (shared with grandparent zone).
    * ns1.parent.good-5.methodsv2.xa (shared with parent zone).
  * Glue:
    * Address records (A and AAAA) for
      * ns1.child.parent.good-5.methodsv2.xa
      * ns2.child.parent.good-5.methodsv2.xa
      * ns1.parent.good-5.methodsv2.xa (optional)

### GOOD-6
A "happy path". Everything is fine. Child zone is only hosted on grandparent
servers.

* Zone: child.parent.good-6.methodsv2.xa
  * Child NS (both shared with grandparent zone):
    * ns1.good-6.methodsv2.xa
    * ns2.good-6.methodsv2.xa
  * No glue.

### GOOD-7
A "happy path". Everything is fine. Child zone is only hosted on parent
servers.

* Zone: child.parent.good-7.methodsv2.xa
  * Child NS (both shared with parent zone):
    * ns1.parent.good-7.methodsv2.xa
    * ns2.parent.good-7.methodsv2.xa
  * Glue:
    * Address records (A and AAAA) for
      * ns1.parent.good-7.methodsv2.xa (optional)
      * ns2.parent.good-7.methodsv2.xa (optional)


### GOOD-UNDEL-1
A "happy path". Everything is fine. Child has both in-bailiwick and
out-of-bailiwick name servers. Child is delegated but is tested
undelegated.

* Zone: child.parent.good-undel-1.methodsv2.xa
  * Delegation:
    * Child NS:
      * ns1-2.child.parent.good-undel-1.methodsv2.xa
      * ns3.parent.good-undel-1.methodsv2.xa (not shared with parent zone)
      * ns5.good-undel-1.methodsv2.xa (not shared with grandparent zone)
    * Glue:
      * Adress records (A and AAAA) for
        * ns1-2.child.parent.good-undel-1.methodsv2.xa
        * ns3.parent.good-undel-1.methodsv2.xa (optional)
  * There is an undelegated version of the zone matching undelegated data.
  * `ns1-2` have different IP addresses for delegation and delegated zone, on one
    hand, and undelegated data and undelegated version of the zone, on the other.
  * `ns3.parent.good-undel-1.methodsv2.xa` is shared between delegated zone and
    undelegated version of zone, but holding the data of the undelegated version.
  * Undelegated data:
      * ns1-2.child.parent.good-undel-1.methodsv2.xa/IPv4
      * ns1-2.child.parent.good-undel-1.methodsv2.xa/IPv6
      * ns3.parent.good-undel-1.methodsv2.xa/IPv4
      * ns3.parent.good-undel-1.methodsv2.xa/IPv6
      * ns6.good-undel-1.methodsv2.xa

### GOOD-UNDEL-2
A "happy path". Everything is fine. Child has both in-bailiwick and
out-of-bailiwick name servers. Child is not delegated but is tested
undelegated.

* Zone: child.parent.good-undel-2.methodsv2.xa
  * No delegation from parent.
  * To be tested with undelegated data:
  * There is an undelegated version of the zone matching undelegated data.
  * Undelegated data:
      * ns1.child.parent.good-undel-2.methodsv2.xa/IPv4
      * ns1.child.parent.good-undel-2.methodsv2.xa/IPv6
      * ns3.parent.good-undel-2.methodsv2.xa/IPv4
      * ns3.parent.good-undel-2.methodsv2.xa/IPv6
      * ns6.good-undel-2.methodsv2.xa

### DIFF-NS-1
No match in name server names between delegation and zone. Same name server IP.

* Zone: child.parent.diff-ns-1.methodsv2.xa
  * Delegation to ns1 and ns2.
  * NS in zone ns1-2 and ns2-2.
  * ns1-2 and ns2-2 in zone, ns1 and ns2 not in zone.

### DIFF-NS-2
No match in name server names between delegation and zone. Same name server IP on
one server. Different on the other. No zone on servers from delegation except
ns1.

* Zone: child.parent.diff-ns-2.methodsv2.xa
  * Delegation to ns1 and ns2.
  * NS in zone ns1-2, ns3.
  * ns1-2 and ns3 in zone, ns1 and ns2 not in zone.
  * No zone on ns2.
  * ns1 and ns1-2 have the same IP.

### IB-NOT-IN-ZONE-1
Delegation has in-bailiwick NS, but the names are not defined in the zone.

* Zone: child.parent.ib-not-in-zone-1.methodsv2.xa
  * ns1 and ns2 not defined in zone.

### CHILD-NO-ZONE-1
* Zone: child.parent.child-no-zone-1.methodsv2.xa
  * No child zone on ns1 and ns2.
  * Response SERVFAIL.

### CHILD-NO-ZONE-2
* Zone: child.parent.child-no-zone-2.methodsv2.xa
  * No response from ns1 and ns2 of the child.

### GOOD-MIXED-UNDEL-1
The child zone is delegated, but there is also an undelegated version which is
the one tested. One grandparent server, in the delegated tree, also serves
parent zone.

* Zone: child.parent.good-mixed-undel-1.methodsv2.xa
  * Grandparent zone `good-mixed-undel-1.methodsv2.xa` is served on `ns1` and
    `ns4`.
  * Parent zone `parent.good-mixed-undel-1.methodsv2.xa` is served by `ns1`,
    `ns2` and `ns4.good-mixed-undel-1.methodsv2.xa`.
  * Child zone is delegated, but there is also an undelegated version where
    the zone has the same data as the delegation.
  * Undelegated data:
    * ns3.child.parent.good-mixed-undel-1.methodsv2.xa/IPv4
    * ns3.child.parent.good-mixed-undel-1.methodsv2.xa/IPv6
    * ns4.child.parent.good-mixed-undel-1.methodsv2.xa/IPv4
    * ns4.child.parent.good-mixed-undel-1.methodsv2.xa/IPv6

### GOOD-MIXED-UNDEL-2
The child zone is delegated, but there is also an undelegated version. One parent
server also serves the delegated child zone.

* Zone: child.parent.good-mixed-undel-2.methodsv2.xa
  * Parent zone `parent.good-mixed-undel-2.methodsv2.xa` is served by `ns1` and
    `ns2`.
  * Child zone is served by `ns1`, `ns2` and
    `ns2.parent.good-mixed-undel-2.methodsv2.xa`.
  * Child zone is delegated, but there is also an undelegated version where the
    zone has the same data as the delegation.
  * Undelegated data:
    * ns3.child.parent.good-mixed-undel-2.methodsv2.xa/IPv4
    * ns3.child.parent.good-mixed-undel-2.methodsv2.xa/IPv6
    * ns4.child.parent.good-mixed-undel-2.methodsv2.xa/IPv4
    * ns4.child.parent.good-mixed-undel-2.methodsv2.xa/IPv6

### NO-DEL-MIXED-UNDEL-1
The child zone is not delegated, but there is an undelegated version that is
tested. One grandparent server also serves the parent zone.

* Zone: child.parent.no-del-mixed-undel-1.methodsv2.xa
  * Parent zone `parent.no-del-mixed-undel-1.methodsv2.xa` is served by `ns1`,
    `ns2` and on `ns2.no-del-mixed-undel-1.methodsv2.xa`.
  * Child zone is not delegated, but there is an undelegated version.
  * Undelegated data:
    * ns1.child.parent.no-del-mixed-undel-1.methodsv2.xa/IPv4
    * ns1.child.parent.no-del-mixed-undel-1.methodsv2.xa/IPv6
    * ns2.child.parent.no-del-mixed-undel-1.methodsv2.xa/IPv4
    * ns2.child.parent.no-del-mixed-undel-1.methodsv2.xa/IPv6

### NO-CHILD-1
The child zone is not delegated. Parent zone returns NXDOMAIN.

* Zone: child.parent.no-child-1.methodsv2.xa
  * Child zone does not exist and is not served by any NS.

### NO-CHILD-2
The child zone is not delegated. Parent zone returns NODATA.

* Zone: child.parent.no-child-2.methodsv2.xa
  * Child zone does not exist is not served by any NS.
  * The name child.parent.no-child-2.methodsv2.xa exists as a TXT record.

### NO-CHLD-PAR-UNDETER-1
The child zone is not delegated. One grandparent NS lacks delegation of parent
and return NXDOMAIN of child. The parent zone lacks delegation of child.

* Zone: child.parent.no-chld-par-undeter-1.methodsv2.xa
  * Child zone does not exist is not served by any NS.
  * Grandparent `ns1` lacks delegation of parent.
  * Grandparent `ns2` has delegation of parent (to both parent NS).
  * Parent zone lacks delegation of child.

### CHLD-FOUND-PAR-UNDET-1
The child zone is delegated from one grandparent NS and from the parent zone.

* Zone: child.parent.chld-found-par-undet-1.methodsv2.xa
  * Grandparent `ns1` has delegation of child but lacks delegation of parent.
  * Grandparent `ns2` has delegation of parent (to both parent NS).
  * Parent zone has delegation of child.

### CHLD-FOUND-INCONSIST-1
The child is delegated from one parent NS. On the other there is an NXDOMAIN
response.

* Zone: child.parent.chld-found-inconsist-1.methodsv2.xa
  * Parent `ns1` has normal delegation of child to two child NS, `ns1` and `ns2`.
  * Parent `ns2` lacks delegation of child (NXDOMAIN).

### CHLD-FOUND-INCONSIST-2
The child is delegated from one parent NS. On the other there is an CNAME
response.

* Zone: child.parent.chld-found-inconsist-2.methodsv2.xa
  * Parent `ns1` has normal delegation of child to two child NS, `ns1` and `ns2`.
  * Parent `ns2` lacks delegation of child, and has a CNAME on that name,
    pointing at `no-child.parent.chld-found-inconsist-2.methodsv2.xa`, which has
    two address records (A and AAAA) with the IP addresses of child `ns2`.

### CHLD-FOUND-INCONSIST-3
The child is delegated from one parent NS. On the other there is a CNAME
to another name, and that other name is delegated.

* Zone: child.parent.chld-found-inconsist-3.methodsv2.xa
  * Parent `ns1` has normal delegation of child to two child NS, `ns1` and `ns2`.
  * Parent `ns2` lacks delegation of child, and has a CNAME on the name,
    pointing at `sister.parent.chld-found-inconsist-3.methodsv2.xa`, which is
    delegated to `ns6-delegated-child.methodsv2.xa` and
    `ns7-delegated-child.methodsv2.xa`.
  * Zone `sister` does not exist.

### CHLD-FOUND-INCONSIST-4
The child is delegated from one parent NS. On the other there is a DNAME to
another name.

* Zone: child.parent.chld-found-inconsist-4.methodsv2.xa
  * Parent `ns1` has normal delegation of child to two child NS, `ns1` and `ns2`.
  * Parent `ns2` has a DNAME on `child` pointing at
    `sister.parent.chld-found-inconsist-4.methodsv2.xa` which is delegated to
    `ns6-delegated-child.methodsv2.xa` and `ns7-delegated-child.methodsv2.xa`.
  * Zone `sister` does not exist.

### CHLD-FOUND-INCONSIST-5
The child is delegated from one parent NS. On the other there is a NODATA
response.

* Zone: child.parent.chld-found-inconsist-5.methodsv2.xa
  * Parent `ns1` has normal delegation of child to two child NS, `ns1` and `ns2`.
  * Parent `ns2` lacks delegation of child, instead `child` has two address
    records (A and AAAA) with the IP addresses of child `ns2`.

### CHLD-FOUND-INCONSIST-6
The child is delegated from one parent NS, which is also NS for the child.
On the other there is an NXDOMAIN response.

* Zone: child.parent.chld-found-inconsist-6.methodsv2.xa
  * Parent `ns1` has normal delegation of child to the two child NS.
  * Parent `ns2` lacks delegation of child (NXDOMAIN).
  * Child shares `ns1.parent.chld-found-inconsist-6.methodsv2.xa` with parent.
  * Child also uses child `ns1` and `ns2`.
  * Child exists with a zone.

### CHLD-FOUND-INCONSIST-7
The child is delegated from one parent NS, which is also NS for the child. On the
other there is an CNAME response.

* Zone: child.parent.chld-found-inconsist-7.methodsv2.xa
  * Parent `ns1` has normal delegation of child to two child NS, `ns1` and `ns2`.
  * Parent `ns2` lacks delegation of child, and has a CNAME on that name,
    pointing at `no-child.parent.chld-found-inconsist-7.methodsv2.xa`, which has
    two address records (A and AAAA) with the IP addresses of child `ns2`.
  * Child shares `ns1.parent.chld-found-inconsist-7.methodsv2.xa` with parent.
  * Child also uses `ns2`.
  * Child exists with a zone.

### CHLD-FOUND-INCONSIST-8
The child is delegated from one parent NS, which is also NS for the child. On
the other there is a CNAME to another name, and that other name is delegated.

* Zone: child.parent.chld-found-inconsist-8.methodsv2.xa
  * Parent `ns1` has normal delegation of child to two child NS, `ns1` and `ns2`.
  * Parent `ns2` lacks delegation of child, and has a CNAME on the name,
    pointing at `sister.parent.chld-found-inconsist-8.methodsv2.xa`, which is
    `ns6-delegated-child.methodsv2.xa` and `ns7-delegated-child.methodsv2.xa`.
  * Zone `sister` does not exist.
  * Child shares `ns1.parent.chld-found-inconsist-8.methodsv2.xa` with parent.
  * Child also uses `ns2`.
  * Child exists with a zone.

### CHLD-FOUND-INCONSIST-9
The child is delegated from one parent NS, which is also NS for the child. On
the other there is a DNAME to another name.

* Zone: child.parent.chld-found-inconsist-9.methodsv2.xa
  * Parent `ns1` has normal delegation of child to two child NS, `ns1` and `ns2`.
  * Parent `ns2` has a DNAME on `child` pointing at
    `sister.parent.chld-found-inconsist-9.methodsv2.xa` which is delegated to
    `ns6-delegated-child.methodsv2.xa` and `ns7-delegated-child.methodsv2.xa`.
  * Zone `sister` does not exist.
  * Child shares `ns1.parent.chld-found-inconsist-9.methodsv2.xa` with parent.
  * Child also uses `ns2`.
  * Child exists with a zone.

### CHLD-FOUND-INCONSIST-10
The child is delegated from one parent NS, which is also NS for the child. On the
other there is a NODATA response.

* Zone: child.parent.chld-found-inconsist-10.methodsv2.xa
  * Parent `ns1` has normal delegation of child to two child NS, `ns1` and `ns2`.
  * Parent `ns2` lacks delegation of child, instead `child` has two address
    records (A and AAAA) with the IP addresses of child `ns2`.
  * Child shares `ns1.parent.chld-found-inconsist-10.methodsv2.xa` with parent.
  * Child also uses `ns2`.
  * Child exists with a zone.

### NO-DEL-UNDEL-NO-PAR-1
The child is not delegated, but there is undelegated data to test. Both
grandparent NS return SERVFAIL.

* Zone: child.parent.no-del-undel-no-par-1.methodsv2.xa
  * Grandparent `ns1` and `ns2` both return SERVFAIL.
  * No need of parent zone.
  * Child zone is not delegated, but there is an undelegated version.
  * Undelegated data:
    * ns1.child.parent.no-del-undel-no-par-1.methodsv2.xa/IPv4
    * ns1.child.parent.no-del-undel-no-par-1.methodsv2.xa/IPv6
    * ns2.child.parent.no-del-undel-no-par-1.methodsv2.xa/IPv4
    * ns2.child.parent.no-del-undel-no-par-1.methodsv2.xa/IPv6

### NO-DEL-UNDEL-PAR-UND-1
The child is not delegated, but there is an undelegated data to test. One
grandparent NS lacks delegation of parent and return NXDOMAIN of child. The
parent zone lacks delegation of child.

* Zone: child.parent.no-del-undel-par-und-1.methodsv2.xa
  * Child zone does not exist is not served by any NS.
  * Grandparent `ns1` has delegation of parent (to both parent NS).
  * Grandparent `ns2` lacks delegation of parent.
  * Parent zone lacks delegation of child.
  * Child zone is not delegated, but there is an undelegated version.
  * Undelegated data:
    * ns1.child.no-del-undel-par-und-1.methodsv2.xa/IPv4
    * ns1.child.no-del-undel-par-und-1.methodsv2.xa/IPv6
    * ns2.child.no-del-undel-par-und-1.methodsv2.xa/IPv4
    * ns2.child.no-del-undel-par-und-1.methodsv2.xa/IPv6

### NO-CHLD-NO-PAR-1
The child is not delegated. Both grandparent NS return SERVFAIL.

* Zone: child.parent.no-chld-no-par-1.methodsv2.xa
  * Grandparent `ns1` and `ns2` both return SERVFAIL.
  * No need of parent zone.
  * Child zone is not delegated, and there is no undelegated data.
  * No need of child zone.

### CHILD-ALIAS-1
The child zone does not exist, instead there is a DNAME in the parent zone.

* Zone: child.parent.child-alias-1.methodsv2.xa
  * Parent has a DNAME on `child` pointing at
    `sister.parent.child-alias-1.methodsv2.xa` which is delegated to
    `ns6-delegated-child.methodsv2.xa` and `ns7-delegated-child.methodsv2.xa`.
  * Zone `sister` does not exist.

### ZONE-ERR-GRANDPARENT-1
Grandparent `ns2` responds with AA bit unset on queries for grandparent zone.

* Zone: child.parent.zone-err-grandparent-1.methodsv2.xa
  * Normal response on grandparent `ns1`.
  * Grandparent `ns2` responds with AA bit unset on queries for the
    grandparent zone.

### ZONE-ERR-GRANDPARENT-2
Grandparent `ns2` responds with NODATA on NS query for grandparent zone.

* Zone: child.parent.zone-err-grandparent-2.methodsv2.xa
  * Normal response on grandparent `ns1`.
  * Grandparent `ns2` responds with NODATA on NS query for the
    grandparent zone.

### ZONE-ERR-GRANDPARENT-3
Grandparent `ns2` responds with wrong owner name on NS
on query for grandparent zone NS.

* Zone: child.parent.zone-err-grandparent-3.methodsv2.xa
  * Normal response on grandparent `ns1`.
  * Grandparent `ns2` responds with other owner name on NS query for
    `zone-err-grandparent-3.methodsv2.xa`:
      * Owner name `oncle.zone-err-grandparent-3.methodsv2.xa` instead.

### DELEG-OOB-W-ERROR-1
Zone is delegated to two OOB NS, of which one has no IP (NODATA).

* Zone: child.parent.deleg-oob-w-error-1.methodsv2.xa
  * Zone is delegated to `ns3.deleg-oob-w-error-1.methodsv2.xa` and
    `ns4-nodata.deleg-oob-w-error-1.methodsv2.xa`.
  * `ns3` is fully functional with the zone which matches the
    delegation.
  * `ns4-nodata` cannot be resolved (NODATA).

### DELEG-OOB-W-ERROR-2
Zone is delegated to two OOB NS, of which one has no IP (NXDOMAIN).

* Zone: child.parent.deleg-oob-w-error-2.methodsv2.xa
  * Zone is delegated to `ns3.deleg-oob-w-error-2.methodsv2.xa` and
    `ns4-nxdomain.deleg-oob-w-error-2.methodsv2.xa`.
  * `ns3` is fully functional with the zone which matches the
    delegation.
  * `ns4-nxdomain` cannot be resolved (NXDOMAIN).

### DELEG-OOB-W-ERROR-3
Zone is delegated to two OOB NS, where both have no IP (NODATA).

* Zone: child.parent.deleg-oob-w-error-3.methodsv2.xa
  * Zone is delegated to `ns3-nodata.deleg-oob-w-error-3.methodsv2.xa` and
    `ns4-nodata.deleg-oob-w-error-3.methodsv2.xa`.
  * `ns3-nodata` and `ns4-nodata` cannot be resolved (NODATA).
  * There is no child zone.

### DELEG-OOB-W-ERROR-4
Zone is delegated to two OOB NS, where both have no IP (NXDOMAIN).

* Zone: child.parent.deleg-oob-w-error-4.methodsv2.xa
  * Zone is delegated to `ns3-nxdomain.deleg-oob-w-error-4.methodsv2.xa` and
    `ns4-nxdomain.deleg-oob-w-error-4.methodsv2.xa`.
  * `ns3-nxdomain` and `ns4-nxdomain` cannot be resolved (NXDOMAIN).
  * There is no child zone.

### CHILD-NS-CNAME-1
Zone is delegated to two IB NS, where both NS names are aliases (CNAME)
to other names in zone.

* Zone: child.parent.child-ns-cname-1.methodsv2.xa
  * Zone is delegated to `ns1-cname` and `ns2-cname` and both are aliases to
    `ns1` and `ns2`, respectively.
  * Both names can be resolved to A and AAAA via CNAME and give correct IP.

### CHILD-NS-CNAME-2
Zone is delegated to two IB NS, where both NS names are aliases (CNAME)
to other names out of zone.

* Zone: child.parent.child-ns-cname-2.methodsv2.xa
  * Zone is delegated to `ns1-cname` and `ns2-cname` and both are aliases to
    `child-ns1.child-ns-cname-2.methodsv2.xa` and
    `child-ns2.child-ns-cname-2.methodsv2.xa`
  * Both names can be resolved to A and AAAA via CNAME and give correct IP.

### CHILD-NS-CNAME-3
Zone is delegated to two OOB NS, where both NS names are aliases (CNAME)
to other names out of zone.

* Zone: child.parent.child-ns-cname-3.methodsv2.xa
  * Zone is delegated to `ns3-cname.child-ns-cname-3.methodsv2.xa` and
    `ns4-cname.child-ns-cname-3.methodsv2.xa` and both are aliases to `ns3`
    and `ns4`, respectively.
  * Both names can be resolved to A and AAAA via CNAME and give correct IP.

### CHILD-NS-CNAME-4
Zone is delegated to two IB NS, where both NS names are aliases (CNAME)
to other names in zone.

* Zone: child.parent.child-ns-cname-4.methodsv2.xa
  * Zone is delegated to `ns1-cname` and `ns2-cname` and both are aliases to
    `ns1` and `ns2`, respectively.
  * Both names can be resolved to A via CNAME and give correct IP.
  * Neither name can be resolved to AAAA via CNAME.
  * The parent zone has glue records for `ns1-cname`, but not for `ns2-cname`.

### PARENT-NS-CNAME-1
Parent is delegated to two IB NS, where both NS names are aliases (CNAME)
to other names in parent zone.

* Zone: child.parent.parent-ns-cname-1.methodsv2.xa
  * Parent is delegated to `ns1-cname` and `ns2-cname` and both are aliases to
    `ns1` and `ns2`, respectively.
  * Both names can be resolved to A and AAAA via CNAME and give correct IP.

### PARENT-NS-CNAME-2
Parent is delegated to two IB NS, where both NS names are aliases (CNAME)
to other names out of zone.

* Zone: child.parent.parent-ns-cname-2.methodsv2.xa
  * Parent is delegated to `ns1-cname` and `ns2-cname` and both are aliases to
    `parent-ns1.parent-ns-cname-2.methodsv2.xa` and
    `parent-ns2.parent-ns-cname-2.methodsv2.xa`
  * Both names can be resolved to A and AAAA via CNAME and give correct IP.

### PARENT-NS-SAME-IP-1
Parent is delegated to three IB NS. The delegation lists two name server names
resolving to the same IP.

* Zone: child.parent.parent-ns-same-ip-1.methodsv2.xa
  * Parent zone (parent.parent-ns-name-ip-1.methodsv2.xa) is delegated to
    `ns1a`, `ns1b` and `ns2`.
  * Both `ns1a` and `ns1b` have A and AAAA records pointing to the same IPv4
    and IPv6 address respectively.

### PARENT-NS-SAME-IP-2
Parent is delegated to two IB NS. Two of the in-zone NS records resolve to the
same IP. The grandparent zone’s delegation lists name server names that are
different from the in-zone NS record’s, but the sets of IP addresses are equal.

* Zone: child.parent.parent-ns-same-ip-2.methodsv2.xa
  * Grandparent zone (parent-ns-name-ip-2.methodsv2.xa) delegates the parent
    zone (parent.parent-ns-name-ip-2.methodsv2.xa) to `ns1` and `ns2`.
  * Parent zone’s NS records list `ns1a`, `ns1b` and `ns2` instead of `ns1` and
    `ns2`.
  * Both `ns1a` and `ns1b` have A and AAAA records pointing to the same IPv4
    and IPv6 address respectively.

<!-- Links to documents in this repository but outside the public tree must be
absolute -->

[RCODE Name]:                                                     https://www.iana.org/assignments/dns-parameters/dns-parameters.xhtml#dns-parameters-6
[Test zone README file]:                                          ../../README.md
[Test scenarios and setup of test zones]:                         #test-scenarios-and-setup-of-test-zones
[MethodsV2]:                                                      ../../tests/MethodsV2.md
[Get parent NS IP addresses]:                                     ../../tests/MethodsV2.md#method-get-parent-ns-ip-addresses
[the implementation of the scenarios]:                            https://github.com/zonemaster/zonemaster/blob/master/test-zone-data/MethodsV2/README.md
