# Specification of Test Scenarios for Connectivity04


## Table of contents

* [Background](#background)
* [Test Case](#test-case)
* [Test scenarios](#test-scenarios)
* [Test zone names](#test-zone-names)
* [All message tags](#all-message-tags)
* [Test scenarios and message tags](#test-scenarios-and-message-tags)
* [Test scenarios and setup of test zones]


## Background

See the [test scenario README file].


## Test Case
This document specifies defined test scenarios for test case [Connectivity04].


## Test scenarios

The purpose of the test scenarios is to cover all reasonable contexts where
different message tags are outputted when [Connectivity04] is run on a test zone.
The message tags are defined in the test case ([Connectivity04]) and the
scenarios are defined below.

The test scenarios are structured as stated in the [test scenario README file].

## Test zone names

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


## All message tags
The test case can output any of these message tags, but not necessarily in any
combination. See [Connectivity04] for the specification of the tags.

* CN04_EMPTY_PREFIX_SET
* CN04_ERROR_PREFIX_DATABASE
* CN04_IPV4_DIFFERENT_PREFIX
* CN04_IPV4_SAME_PREFIX
* CN04_IPV4_SINGLE_PREFIX
* CN04_IPV6_DIFFERENT_PREFIX
* CN04_IPV6_SAME_PREFIX
* CN04_IPV6_SINGLE_PREFIX

## Test scenarios and message tags

If a message tag is not listed for the scenario, its presence or non-presence is
irrelevant to the test scenario and must be ignored.

Scenario name            | Mandatory message tag                                                             | Forbidden message tags
:------------------------|:----------------------------------------------------------------------------------|:--------------------
GOOD-1                   | CN04_IPV4_DIFFERENT_PREFIX, CN04_IPV6_DIFFERENT_PREFIX                            | 2)
GOOD-2                   | CN04_IPV4_DIFFERENT_PREFIX                                                        | 2)
GOOD-3                   | CN04_IPV6_DIFFERENT_PREFIX                                                        | 2)
EMPTY-PREFIX-SET-1       | CN04_EMPTY_PREFIX_SET                                                             | 2)
EMPTY-PREFIX-SET-2       | CN04_EMPTY_PREFIX_SET                                                             | 2)
ERROR-PREFIX-DATABASE-1  | CN04_ERROR_PREFIX_DATABASE                                                        | 2)
ERROR-PREFIX-DATABASE-2  | CN04_ERROR_PREFIX_DATABASE                                                        | 2)
ERROR-PREFIX-DATABASE-3  | CN04_ERROR_PREFIX_DATABASE                                                        | 2)
ERROR-PREFIX-DATABASE-6  | CN04_IPV4_DIFFERENT_PREFIX, CN04_IPV6_DIFFERENT_PREFIX, CN04_ERROR_PREFIX_DATABASE| 2)
ERROR-PREFIX-DATABASE-7  | CN04_ERROR_PREFIX_DATABASE                                                        | 2)
ERROR-PREFIX-DATABASE-8  | CN04_ERROR_PREFIX_DATABASE                                                        | 2)
HAS-NON-ASN-TXT-1        | CN04_IPV4_DIFFERENT_PREFIX, CN04_IPV6_DIFFERENT_PREFIX                            | 2)
HAS-NON-ASN-TXT-2        | CN04_EMPTY_PREFIX_SET                                                             | 2)
IPV4-ONE-PREFIX-1        | CN04_IPV4_SAME_PREFIX, CN04_IPV4_SINGLE_PREFIX                                    | 2)
IPV4-TWO-PREFIXES-1      | CN04_IPV4_SAME_PREFIX, CN04_IPV4_DIFFERENT_PREFIX                                 | 2)
IPV6-ONE-PREFIX-1        | CN04_IPV6_SAME_PREFIX, CN04_IPV6_SINGLE_PREFIX                                    | 2)
IPV6-TWO-PREFIXES-1      | CN04_IPV6_SAME_PREFIX, CN04_IPV6_DIFFERENT_PREFIX                                    | 2)
IPV4-SINGLE-NS-1         | CN04_IPV4_SINGLE_PREFIX, CN04_IPV4_DIFFERENT_PREFIX                               | 2)
IPV6-SINGLE-NS-1         | CN04_IPV6_SINGLE_PREFIX, CN04_IPV6_DIFFERENT_PREFIX                               | 2)
DOUBLE-PREFIX-1          | CN04_IPV4_DIFFERENT_PREFIX, CN04_IPV6_DIFFERENT_PREFIX                            | 2)
DOUBLE-PREFIX-2          | CN04_IPV4_DIFFERENT_PREFIX, CN04_IPV6_DIFFERENT_PREFIX                            | 2)

* (1) All tags except for those specified as "Forbidden message tags" (no instances for these test scenarios)
* (2) All tags except for those specified as "Mandatory message tags"


## Test scenarios and setup of test zones

### Default zone configuration
Unless otherwise specified in the specific scenario specification, the test zone
or zones for the scenario will follow the default setup as stated below. The
`child zone` is the zone to be tested for the scenario.

* The child zone is `SCENARIO.connectivity04.xa`.
  * It is delegated to out-of-bailiwick NS, specified per scenario.
    * The names of the NS exist in the parent zone.
  * The NS for a child will only reply to NS query and do that
    consistently.
* The parent zone is `connectivity04.xa`.
  * It is served by two 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.
* All responses will have the [RCODE Name] "NoError".

### GOOD-1
Everything is fine.

* Zone: good-1.connectivity04.xa
  * 2 NS.
    * Both with IPv4 and IPv6.
    * Each NS IP in different prefixes.

### GOOD-2
Everything is fine. IPv4 only.

* Zone: good-2.connectivity04.xa
  * 2 NS.
    * IPv4 only.
    * Each NS IP in different prefixes.

### GOOD-3
Everything is fine. IPv6 only.

* Zone: good-3.connectivity04.xa
  * 2 NS.
    * IPv4 only.
    * Each NS IP in different prefixes.

### EMPTY-PREFIX-SET-1
No ASN data (NXDOMAIN).

* Zone: empty-prefix-set-1.connectivity04.xa
  * 1 NS.
    * IPv4 and IPv6 on NS.
    * The ASN-lookup returns [RCODE Name] NXDOMAIN.

### EMPTY-PREFIX-SET-2
No ASN data (NODATA).

* Zone: empty-prefix-set-2.connectivity04.xa
  * 1 NS.
    * IPv4 and IPv6 on NS.
    * The ASN-lookup returns no TXT record (NODATA).

### ERROR-PREFIX-DATABASE-1
No ASN data due to SERVFAIL.

* Zone: error-prefix-database-1.connectivity04.xa
  * 1 NS.
    * IPv4 and IPv6 on NS.
    * The ASN-lookup returns SERVFAIL.

### ERROR-PREFIX-DATABASE-2
No ASN data due to REFUSED.

* Zone: error-prefix-database-2.connectivity04.xa
  * 1 NS.
    * IPv4 and IPv6 on NS.
    * The ASN-lookup returns REFUSED.

### ERROR-PREFIX-DATABASE-3
No ASN data, no DNS response at all.

* Zone: error-prefix-database-3.connectivity04.xa
  * 1 NS.
    * IPv4 and IPv6 on NS.
    * The ASN-lookup returns no DNS response (no response at all).

### ERROR-PREFIX-DATABASE-4
(Renamed)

### ERROR-PREFIX-DATABASE-5
(Renamed)

### ERROR-PREFIX-DATABASE-6
Extra ASN lookup TXT record with wrong IP prefix.

* Zone: error-prefix-database-6.connectivity04.xa
  * 2 NS.
    * Both with IPv4 and IPv6.
    * Each NS IP in different prefixes.
      * For one NS (both IPs) the ASN lookup returns an extra TXT with an IP prefix
        that does not match the IP address.

### ERROR-PREFIX-DATABASE-7
ASN lookup TXT record with wrong IP prefix.

* Zone: error-prefix-database-7.connectivity04.xa
  * 1 NS.
    * IPv4 and IPv6 on NS.
    * The ASN-lookup returns one TXT record for both IP with an IP prefix that
      does not match the IP address.

### ERROR-PREFIX-DATABASE-8
ASN lookup gives no TXT-record but a CNAME.

* Zone: error-prefix-database-8.connectivity04.xa
  * 1 NS.
    * IPv4 and IPv6 on NS.
    * The ASN-lookup returns no TXT record for both IP but a CNAME record.

### HAS-NON-ASN-TXT-1
IPv4 and IPv6. Extra non-ASN lookup TXT record.

* Zone: has-non-asn-txt-1.connectivity04.xa
  * 2 NS.
    * Both NS with IPv4 and IPv6.
    * Each NS IP in different prefixes.
    * For one NS (both IPs) the ASN lookup returns an extra TXT record with the
      text "This is not ASN data".

### HAS-NON-ASN-TXT-2
No ASN data, some other TXT record.

* Zone: has-non-asn-txt-2.connectivity04.xa
  * 1 NS.
    * IPv4 and IPv6 on NS.
    * The ASN-lookup returns one TXT record for both IP with the string
      "This is not ASN data".

### IPV4-ONE-PREFIX-1
All NS IPs in the same prefix. IPv4 only.

* Zone: ipv4-one-prefix-1.connectivity04.xa
  * 2 NS.
    * IPv4 only.
    * Both NS in the same prefix.

### IPV4-TWO-PREFIXES-1
Two NS in the same prefix. One NS in its own prefix. IPv4 only.

* Zone: ipv4-two-prefixes-1.connectivity04.xa
  * 3 NS.
    * IPv4 only.
    * Two NS in the same prefix.
    * One NS in its own prefix.

### IPV6-ONE-PREFIX-1
All NS IPs in the same prefix. IPv6 only.

* Zone: ipv6-one-prefix-1.connectivity04.xa
  * 2 NS.
    * Ipv6 only.
    * Both NS in the same prefix.

### IPV6-TWO-PREFIXES-1
Two NS in the same prefix. One NS in its own prefix. IPv6 only.

* Zone: ipv6-two-prefixes-1.connectivity04.xa
  * 3 NS.
    * IPv6 only.
    * Two NS in the same prefix.
    * One NS in its own prefix.

### IPV4-SINGLE-NS-1
One NS, IPv4 only.

* Zone: ipv4-single-ns-1.connectivity04.xa
  * 1 NS.
    * IPv4 only.

### IPV6-SINGLE-NS-1
One NS, IPv6 only.

* Zone: ipv6-single-ns-1.connectivity04.xa
  * 1 NS.
    * IPv6 only.

### DOUBLE-PREFIX-1
The IP addresses of the NS are announced from both a larger prefix and a more
specific one.

* Zone: double-prefix-1.connectivity04.xa
  * 2 NS
    * IPv4 and IPv6.
    * The two IPv4 addresses are announced in one large (less specific) prefix that includes
      both NS IP addresses.
    * Each NS IP address is also announced in a more specific prefix only including
      that IP address.
    * Same with IPv6.


### DOUBLE-PREFIX-2
The IP addresses of the NS are announced in a larger (less specific) prefix that 
includes both NS IP. The addresses of one NS are also announced in more
specific prefixes.

* Zone: double-prefix-2.connectivity04.xa
  * 2 NS
    * IPv4 and IPv6.
    * The two IPv4 addresses are announced in one large (less specific) prefix that 
      includes both IP addresses.
    * The address of one of the NS is also announced in a more specific prefix.
    * Same with IPv6.

[Connectivity04]:                                                 ../../tests/Connectivity-TP/connectivity04.md
[RCODE Name]:                                                     https://www.iana.org/assignments/dns-parameters/dns-parameters.xhtml#dns-parameters-6
[Test scenario README file]:                                      ../README.md
[Test scenarios and setup of test zones]:                         #test-scenarios-and-setup-of-test-zones

