blob: 05babe6a75b04334a5a1f40ab48279b517c3a5f9 [file]
meta:
version: "1.0"
txn_box:
global:
- when: ua-req
do:
- with: ua-req-path
select:
- match: [ "1", "2" ]
do:
- var<Best-Band>: "Delain"
- ua-req-field<potzrebie>: "true"
- match: "4"
do:
- ua-req-field<Delain>: "four"
- match: "txn-conf-1"
do:
- ua-req-field<upstream>: "Max {txn-conf<proxy.config.http.per_server.connection.max>}"
- ua-req-field<basic>: "Fill {txn-conf<proxy.config.http.background_fill_completed_threshold>}"
- match: "txn-conf-2"
do:
- txn-conf<proxy.config.http.per_server.connection.max>: 400
- ua-req-field<upstream>: "Max {txn-conf<proxy.config.http.per_server.connection.max>}"
- ua-req-field<basic>: "Fill {txn-conf<proxy.config.http.background_fill_completed_threshold>}"
- match: "stuff"
do:
- ua-req-field<test-query>: "query '{ua-req-query}'"
- ua-req-query: [ ua-req-query, { else: "parmA=dave;parmB=bob" }]
- match: "path"
do:
- ua-req-url: "{ua-req-url}/more"
- when: proxy-rsp
do:
- proxy-rsp-field<pre-remap>: "{pre-remap-scheme}://{pre-remap-host}/{pre-remap-path}"
- prefix: "14/"
do:
- with: "{ua-req-path}?{ua-req-query}"
do:
- debug: "Checking {...}" # force use of remnant to verify active feature isn't corrupted.
select:
- rxp: "apis.one.ex/ws/v3/mailboxes/@[.]id==(.+)/messages/@[.]id==(.+)/content/parts/@[.]id==(.+)/thumbnail(\\d+)"
do:
- debug: "Found {0}"
- ua-req-field<match>: "Found {2}, {4}, {1}, {3}"
- prefix: "15/"
do:
- with: unmatched
select:
- rxp: "^apis.one.ex/ws/v3/mailboxes/@[.]id==(.+)/messages/@[.]id==(.+)/content/parts/@[.]id==(.+)/thumbnail(\\d+)$"
do:
- ua-req-field<match>: "Found {2}, {4}, {1}, {3}"
- when: proxy-req
do:
- with: proxy-req-path
select:
- match: "path/req"
do:
- proxy-req-url: "http://{proxy-req-host}/req/path"
- proxy-req-field<test>: "http://{proxy-req-host}/req/path"
- when: proxy-rsp
do:
- proxy-rsp-field<pre-remap>: "{pre-remap-scheme}://{pre-remap-host}/{pre-remap-path}"
- when: proxy-req
do:
- with: proxy-req-field<vinhoo-yaith>
do:
select:
- contains: "C_WOEID=23424977"
do:
- proxy-req-path: "vinhoo-yaith/working"
- debug: "Set proxy path to {proxy-req-path}"
# Regular expression testing - verify anchors behave as expected.
- when: proxy-req
do:
- with: proxy-req-path
select:
- rxp: "^delain/?"
do:
- proxy-req-field<Start-Anchored>: "found"
- when: proxy-req
do:
- with: proxy-req-path
select:
- rxp: "(ain)/(mus)"
do:
- proxy-req-field<Un-Anchored>: "found"
- when: proxy-req
do:
- with: proxy-req-path
select:
- rxp: "^delain(/)music$"
do:
- proxy-req-field<Both-Anchored>: "found"
- when: proxy-req
do:
- with: proxy-req-path
select:
- rxp: "/music$"
do:
- proxy-req-field<End-Anchored>: "found"
- when: upstream-rsp
do:
- with: [ upstream-rsp-field<UUID> , { as-integer: } ]
select:
- in: [ 16, 18 ]
do:
with: upstream-rsp-field<Very>
select:
- contains: "Accept"
- is-empty:
do:
- upstream-rsp-field<Very>: "Accept"
- do:
- upstream-rsp-field<Very>: "{...},Accept"
- in: [ 19 , 20 ]
do:
- with: upstream-rsp-field<Very>
select:
- contains: "Accept"
- any-of:
- is-null:
- match: ""
do:
- upstream-rsp-field<Very>: "accepT"
- otherwise:
do:
- upstream-rsp-field<Very>: "{...},accept"
- when: proxy-rsp
do:
with: ua-req-path
select:
- match: "2"
do:
- proxy-rsp-field<Best-Band>: var<Best-Band>
- match: "uuid"
do:
- proxy-rsp-field<ts-uuid>: ts-uuid
remap-1:
- with: ua-req-path
select:
- match: "3"
do:
- ua-req-field<Host-Check>: ua-req-host
- prefix: "21"
do:
- ua-req-field<z-from>: "From: '{remap-target-url}'"
- when: proxy-req
do:
- proxy-req-field<z-pristine>: "Pre: '{pre-remap-url}'"
- rxp: "^rxp/([^-]+)-key(?:/(.*))?"
do:
- ua-req-field<rxp-tag>: "Tag is '{1}' with trailer '{2}'"
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:
#
- all: { headers: { fields: [[ uuid, ts-uuid]]}}
client-request:
<<: *base-req
url: "/uuid"
headers:
fields:
- [ Host, one.ex ]
server-response:
<<: *base-rsp
proxy-response:
status: 200
headers:
fields:
- [ "ts-uuid", { as: present } ]
- all: { headers: { fields: [[ uuid, 1 ]]}}
client-request:
<<: *base-req
url: "/1"
headers:
fields:
- [ Host, one.ex ]
proxy-request:
headers:
fields:
- [ potzrebie, { value: "true", as: equal } ]
server-response:
<<: *base-rsp
proxy-response:
headers:
fields:
- [ Best-Band, { as: absent } ]
- all: { headers: { fields: [[ uuid, 2 ]]}}
client-request:
<<: *base-req
url: "/2"
headers:
fields:
- [ Host,one.ex ]
proxy-request:
headers:
fields:
- [ potzrebie, { value: "true", as: equal } ]
server-response:
status: 200
reason: OK
content:
size: 234
headers:
fields:
- [ Content-Type, html/plaintext ]
- [ Content-Length, 234 ]
proxy-response:
headers:
fields:
- [ Best-Band, { value: "Delain", as: equal } ]
- all: { headers: { fields: [[ uuid, 3 ]]}}
client-request:
<<: *base-req
url: "/3"
headers:
fields:
- [ Host, remap.ex ]
proxy-request:
headers:
fields:
- [ Host-Check, { value: "remapped.ex", as: equal } ]
server-response:
<<: *base-rsp
proxy-response:
status: 200
- all: { headers: { fields: [[ uuid, 4 ]]}}
client-request:
<<: *base-req
url: "/4"
headers:
fields:
- [ Host, remap.ex ]
proxy-request:
headers:
fields:
- [ Delain, { value: "four", as: equal } ]
server-response:
status: 200
reason: OK
content:
size: 130
headers:
fields:
- [ Content-Type, html/plaintext ]
- [ Content-Length, 130 ]
proxy-response:
status: 200
- all: { headers: { fields: [[ uuid, 5 ]]}}
client-request:
<<: *base-req
url: /rxp/a
headers:
fields:
- [ Host, remap.ex ]
proxy-request:
<<: *base-req
headers:
fields:
- [ rxp-tag, { as: absent } ]
server-response:
<<: *base-rsp
proxy-response:
status: 200
- all: { headers: { fields: [[ uuid, 6 ]]}}
client-request:
<<: *base-req
url: /rxp/a-key
headers:
fields:
- [ Host, remap.ex ]
proxy-request:
<<: *base-req
headers:
fields:
- [ rxp-tag, { value: "Tag is 'a' with trailer ''", as: equal} ]
server-response:
<<: *base-rsp
proxy-response:
status: 200
- all: { headers: { fields: [[ uuid, 7 ]]}}
client-request:
<<: *base-req
url: "/txn-conf-1"
headers:
fields:
- [ Host, one.ex ]
proxy-request:
<<: *base-req
headers:
fields:
- [ upstream, { value: "Max 500", as: equal} ]
- [ basic, { value: "Fill 0.40", as: equal} ]
server-response:
<<: *base-rsp
proxy-response:
status: 200
- all: { headers: { fields: [[ uuid, 8 ]]}}
client-request:
<<: *base-req
url: "/txn-conf-2"
headers:
fields:
- [ Host, one.ex ]
proxy-request:
<<: *base-req
headers:
fields:
- [ upstream, { value: "Max 400", as: equal} ]
- [ basic, { value: "Fill 0.40", as: equal} ]
server-response:
<<: *base-rsp
proxy-response:
status: 200
- all: { headers: { fields: [[ uuid, 9 ]]}}
client-request:
<<: *base-req
url: "/stuff?parmA=bob;parmB=dave"
headers:
fields:
- [ Host, one.ex ]
proxy-request:
<<: *base-req
url: "/stuff?parmA=bob;parmB=dave"
headers:
fields:
- [ test-query, { value: "query 'parmA=bob;parmB=dave'", as: equal} ]
server-response:
<<: *base-rsp
proxy-response:
status: 200
- all: { headers: { fields: [[ uuid, 10]]}}
client-request:
<<: *base-req
url: "/stuff"
headers:
fields:
- [ Host, one.ex ]
proxy-request:
<<: *base-req
url: "/stuff?parmA=dave;parmB=bob"
headers:
fields:
- [ test-query, { value: "query 'parmA=dave;parmB=bob'", as: equal } ]
server-response:
<<: *base-rsp
proxy-response:
status: 200
- all: { headers: { fields: [[ uuid, 11]]}}
client-request:
<<: *base-req
url: "/path"
headers:
fields:
- [ Host, one.ex ]
proxy-request:
<<: *base-req
url: "/path/more"
server-response:
<<: *base-rsp
proxy-response:
status: 200
headers:
fields:
- [ "pre-remap", { value: "http://one.ex/path/more", as: equal } ]
- all: { headers: { fields: [[ uuid, 12]]}}
client-request:
<<: *base-req
url: "/path/req"
headers:
fields:
- [ Host, one.ex ]
proxy-request:
<<: *base-req
url: "/req/path"
server-response:
<<: *base-rsp
proxy-response:
status: 200
headers:
fields:
- [ "pre-remap", { value: "http://one.ex/path/req", as: equal } ]
- all: { headers: { fields: [[ uuid, 13]]}}
client-request:
<<: *base-req
url: "/delain/music"
headers:
fields:
- [ Host, one.ex ]
proxy-request:
<<: *base-req
headers:
fields:
- [ Start-Anchored, { value: "found", as: equal } ]
- [ Un-Anchored, { value: "found", as: equal } ]
- [ End-Anchored, { value: "found", as: equal } ]
- [ Both-Anchored, { value: "found", as: equal } ]
server-response:
<<: *base-rsp
proxy-response:
status: 200
- all: { headers: { fields: [[ uuid, 14]]}}
client-request:
<<: *base-req
url: "/14/apis.one.ex/ws/v3/mailboxes/@.id==9560/messages/@.id==9560/content/parts/@.id==9560/thumbnail9560"
headers:
fields:
- [ Host, one.ex ]
proxy-request:
<<: *base-req
headers:
fields:
- [ "match", { value: "Found 9560, 9560, 9560, 9560", as: equal } ]
server-response:
<<: *base-rsp
proxy-response:
status: 200
- all: { headers: { fields: [[ uuid, 15]]}}
client-request:
<<: *base-req
url: "/15/apis.one.ex/ws/v3/mailboxes/@.id==9560/messages/@.id==9560/content/parts/@.id==9560/thumbnail9560"
headers:
fields:
- [ Host, one.ex ]
proxy-request:
<<: *base-req
headers:
fields:
- [ "match", { value: "Found 9560, 9560, 9560, 9560", as: equal } ]
server-response:
<<: *base-rsp
proxy-response:
status: 200
- all: { headers: { fields: [[ uuid, 16]]}}
client-request:
<<: *base-req
url: "/path/Path/patH"
headers:
fields:
- [ Host, one.ex ]
proxy-request:
<<: *base-req
server-response:
<<: *base-rsp
headers:
fields:
- [ "very", "Stuff" ]
proxy-response:
status: 200
headers:
fields:
- [ "very", { value: "Stuff,Accept", as: equal } ]
- all: { headers: { fields: [[ uuid, 17]]}}
client-request:
<<: *base-req
url: "/path/Path/patH"
headers:
fields:
- [ Host, one.ex ]
proxy-request:
<<: *base-req
server-response:
<<: *base-rsp
proxy-response:
status: 200
headers:
fields:
- [ "very", { value: "Accept", as: equal } ]
- all: { headers: { fields: [[ uuid, 18]]}}
client-request:
<<: *base-req
url: "/path/Path/patH"
headers:
fields:
- [ Host, one.ex ]
proxy-request:
<<: *base-req
server-response:
<<: *base-rsp
headers:
fields:
- [ "very", "" ]
proxy-response:
status: 200
headers:
fields:
- [ "very", { value: "Accept", as: equal } ]
- all: { headers: { fields: [[ uuid, 19]]}}
client-request:
<<: *base-req
url: "/path/Path/patH"
headers:
fields:
- [ Host, one.ex ]
proxy-request:
<<: *base-req
server-response:
<<: *base-rsp
proxy-response:
status: 200
headers:
fields:
- [ "very", { value: "accepT", as: equal } ]
- all: { headers: { fields: [[ uuid, 20]]}}
client-request:
<<: *base-req
url: "/path/Path/patH"
headers:
fields:
- [ Host, one.ex ]
proxy-request:
<<: *base-req
server-response:
<<: *base-rsp
headers:
fields:
- [ "very", "" ]
proxy-response:
status: 200
headers:
fields:
- [ "very", { value: "accepT", as: equal } ]
- all: { headers: { fields: [[ uuid, 21]]}}
client-request:
<<: *base-req
url: "/21"
headers:
fields:
- [ Host, remap.ex ]
proxy-request:
<<: *base-req
headers:
fields:
- [ "z-from", { value: "From: 'http://remap.ex/'", as: equal } ]
- [ "z-pristine", { value: "Pre: 'http://remap.ex/21'", as: equal } ]
server-response:
<<: *base-rsp
proxy-response:
status: 200
- all: { headers: { fields: [[ uuid, vinhoo-1]]}}
client-request:
<<: *base-req
url: "/original/path"
headers:
fields:
- [ Host, one.ex ]
- [ "vinhoo-yaith", "C_WOEID=23424977" ]
proxy-request:
<<: *base-req
url:
- [ path, { value: "/vinhoo-yaith/working" , as: equal } ]
server-response:
<<: *base-rsp
proxy-response:
status: 200
- all: { headers: { fields: [[ uuid, vinhoo-3]]}}
client-request:
<<: *base-req
url: "/original/path"
headers:
fields:
- [ Host, one.ex ]
proxy-request:
<<: *base-req
url:
- [ path, { value: "/original/path" , as: equal } ]
server-response:
<<: *base-rsp
proxy-response:
status: 200
- all: { headers: { fields: [[ uuid, vinhoo-3]]}}
client-request:
<<: *base-req
url: "/original/path"
headers:
fields:
- [ Host, one.ex ]
- [ "vinhoo-yaith", "C_WOEID=9994977" ]
proxy-request:
<<: *base-req
url:
- [ path, { value: "/original/path" , as: equal } ]
server-response:
<<: *base-rsp
proxy-response:
status: 200