blob: b0d1d378863f17bff0d40ab6adf5ca68c8d1bd4a [file]
meta:
version: "1.0"
txn-box:
alpha:
- when: proxy-req
do:
# doc-concat-empty-<
- proxy-req-field<bands>:
- proxy-req-field<bands>
- concat: [ ",", "Delain" ]
# doc-concat-empty->
- when: proxy-req
do:
# doc-url-encode-<
- with: proxy-req-field<comets>
select:
- is-null: # field not present.
- do:
# encode it.
- proxy-req-field<comets>: [ proxy-req-field<comets>, { url-encode: } ]
# doc-url-encode->
- when: proxy-req
do:
# doc-url-decode-<
- with: proxy-req-field<comets-encoded>
select:
- is-null: # field not present.
- do:
# decode it.
- proxy-req-field<comets-decoded>: [ proxy-req-field<comets-encoded>, { url-decode: } ]
# doc-url-decode->
bravo:
- ua-req-field<Bands>:
- ua-req-field<Bands>
- rxp-replace:
- "Nightwish"
- "Delain"
charlie:
- ua-req-field<Bands>:
- ua-req-field<Bands>
- rxp-replace:
- "([[:alnum:]]+),([[:alnum:]]+)"
- "{2};{1}"
blocks:
- base-req: &base-req
version: "1.1"
method: "GET"
- base-rsp: &base-rsp
status: 200
reason: "OK"
content:
size: 96
headers:
fields:
- [ Content-Type, html/plaintext ]
- [ Content-Length, 96 ]
sessions:
- protocol:
stack: http
transactions:
## Checks for the concat modifier.
# Separator is dropped if the initial value is empty
- all: { headers: { fields: [[ uuid, 1 ]]}}
client-request:
<<: *base-req
url: "/delain/albums"
headers:
fields:
- [ Host, "alpha.ex" ]
proxy-request:
headers:
fields:
- [ bands, { value: "Delain", as: equal } ]
server-response:
<<: *base-rsp
proxy-response:
<<: *base-rsp
# Separator is added if the field is not empty.
- all: { headers: { fields: [[ uuid, 2 ]]}}
client-request:
<<: *base-req
url: "/delain/albums"
headers:
fields:
- [ Host, "alpha.ex" ]
- [ bands, "Nightwish" ]
proxy-request:
headers:
fields:
- [ bands, { value: "Nightwish,Delain", as: equal } ]
server-response:
<<: *base-rsp
proxy-response:
<<: *base-rsp
# Separator is not doubled
- all: { headers: { fields: [[ uuid, 3 ]]}}
client-request:
<<: *base-req
url: "/delain/albums"
headers:
fields:
- [ Host, "alpha.ex" ]
- [ bands, "Nightwish," ]
proxy-request:
headers:
fields:
- [ bands, { value: "Nightwish,Delain", as: equal } ]
server-response:
<<: *base-rsp
proxy-response:
<<: *base-rsp
# Check against existing separator not at the end.
- all: { headers: { fields: [[ uuid, 4 ]]}}
client-request:
<<: *base-req
url: "/delain/albums"
headers:
fields:
- [ Host, "alpha.ex" ]
- [ bands, "Nightwish,Within Temptation" ]
proxy-request:
headers:
fields:
- [ bands, { value: "Nightwish,Within Temptation,Delain", as: equal } ]
server-response:
<<: *base-rsp
proxy-response:
<<: *base-rsp
# percent encode on a particular field.
- all: { headers: { fields: [[ uuid, 5 ]]}}
client-request:
<<: *base-req
url: "/delain/albums"
headers:
fields:
- [ Host, alpha.ex ]
- [ comets, "1P/Halley, 21P/Giacobini-Zinner, 103P/Hartley" ]
proxy-request:
headers:
fields:
- [ comets, { value: "1P%2FHalley%2C%2021P%2FGiacobini-Zinner%2C%20103P%2FHartley", as: equal } ]
server-response:
<<: *base-rsp
proxy-response:
<<: *base-rsp
# Decode a cookie
- all: { headers: { fields: [[ uuid, 6 ]]}}
client-request:
<<: *base-req
url: "/delain/albums"
headers:
fields:
- [ Host, alpha.ex ]
- [ comets-encoded, "1P%2FHalley%2C%2021P%2FGiacobini-Zinner%2C%20103P%2FHartley" ]
proxy-request:
headers:
fields:
- [ comets-decoded, { value: "1P/Halley, 21P/Giacobini-Zinner, 103P/Hartley", as: equal } ]
server-response:
<<: *base-rsp
proxy-response:
<<: *base-rsp
- protocol:
stack: http
transactions:
## Checks for regular expression modifier.
- all: { headers: { fields: [[ uuid, rxp-basic ]]}}
client-request:
<<: *base-req
url: "/delain/albums"
headers:
fields:
- [ Host, "bravo.ex" ]
- [ bands, "Nightwish,Within Temptation" ]
proxy-request:
headers:
fields:
- [ bands, { value: "Delain,Within Temptation", as: equal } ]
server-response:
<<: *base-rsp
proxy-response:
<<: *base-rsp
- all: { headers: { fields: [[ uuid, rxp-basic-miss ]]}}
client-request:
<<: *base-req
url: "/delain/albums"
headers:
fields:
- [ Host, "bravo.ex" ]
- [ bands, "Xandria,Within Temptation" ]
proxy-request:
headers:
fields:
- [ bands, { value: "Xandria,Within Temptation", as: equal } ]
server-response:
<<: *base-rsp
proxy-response:
<<: *base-rsp
- all: { headers: { fields: [[ uuid, rxp-swap ]]}}
client-request:
<<: *base-req
url: "/delain/albums"
headers:
fields:
- [ Host, "charlie.ex" ]
- [ bands, "Nightwish,Delain" ]
proxy-request:
headers:
fields:
- [ bands, { value: "Delain;Nightwish", as: equal } ]
server-response:
<<: *base-rsp
proxy-response:
<<: *base-rsp