; SPDX-License-Identifier: GPL-3.0-or-later
; config options
	stub-addr: 1.2.3.4
CONFIG_END

SCENARIO_BEGIN view:tsig test

RANGE_BEGIN 0 110
	ADDRESS 1.2.3.4
ENTRY_BEGIN
MATCH opcode qtype qname
ADJUST copy_id
REPLY QR RD RA NOERROR
SECTION QUESTION
example.cz. IN A
SECTION ANSWER
example.cz. IN A 5.6.7.8
ENTRY_END

RANGE_END

RANGE_BEGIN 0 110
	ADDRESS 192.0.2.1
ENTRY_BEGIN
MATCH opcode qtype qname
ADJUST copy_id
REPLY QR RD RA NOERROR
SECTION QUESTION
example.net. IN A
SECTION ANSWER
example.net. IN A 6.6.6.6
ENTRY_END
RANGE_END

; policy fallback (no view matched, policy is behind view module)
STEP 10 QUERY
ENTRY_BEGIN
REPLY RD
TSIG testkey +Cdjlkef9ZTSeixERZ433Q==
SECTION QUESTION
example.cz. IN A
ENTRY_END

STEP 20 CHECK_ANSWER
ENTRY_BEGIN
MATCH flags rcode question answer
REPLY QR RD RA NOERROR
SECTION QUESTION
example.cz. IN A
SECTION ANSWER
example.cz. IN A 5.6.7.8
ENTRY_END

; blocked by view:tsig testkey1 + inner policy.suffix com
; NXDOMAIN expected
STEP 30 QUERY
ENTRY_BEGIN
REPLY RD
TSIG testkey1 +Cdjlkef9ZTSeixERZ433Q==
SECTION QUESTION
example.com. IN A
ENTRY_END

STEP 31 CHECK_ANSWER
ENTRY_BEGIN
MATCH opcode question rcode additional
REPLY QR RD RA AA NXDOMAIN
SECTION QUESTION
example.com. IN A
SECTION ADDITIONAL
explanation.invalid. 10800 IN TXT "TSIG key testkey1 matched com"
ENTRY_END

; blocked by view:tsig testkey1 + inner policy.suffix net
; second view rule gets executed if policy in preceding view rule did not match
STEP 32 QUERY
ENTRY_BEGIN
REPLY RD
TSIG testkey1 +Cdjlkef9ZTSeixERZ433Q==
SECTION QUESTION
example.net. IN A
ENTRY_END

STEP 33 CHECK_ANSWER
ENTRY_BEGIN
MATCH opcode question rcode additional
REPLY QR RD RA AA NXDOMAIN
SECTION QUESTION
example.net. IN A
SECTION ADDITIONAL
explanation.invalid. 10800 IN TXT "TSIG key testkey1 matched net"
ENTRY_END

; blocked by view:tsig testkey + inner policy.suffix example (different key)
; third view rule gets executed if policy in preceding view rule did not match
STEP 34 QUERY
ENTRY_BEGIN
REPLY RD
TSIG testkey +Cdjlkef9ZTSeixERZ433Q==
SECTION QUESTION
example. IN A
ENTRY_END

STEP 35 CHECK_ANSWER
ENTRY_BEGIN
MATCH opcode question rcode additional
REPLY QR RD RA AA NXDOMAIN
SECTION QUESTION
example. IN A
SECTION ADDITIONAL
explanation.invalid. 10800 IN TXT "TSIG key testkey matched example"
ENTRY_END

SCENARIO_END
