Reorganize/remove redundant tests

This commit is contained in:
Fabrice Reix 2024-01-30 11:30:41 +01:00 committed by hurl-bot
parent ca8dd894d6
commit 0f099f3b8f
No known key found for this signature in database
GPG Key ID: 1283A2B4A0DCAF8D
283 changed files with 257 additions and 5848 deletions

View File

@ -1,13 +0,0 @@
<pre><code class="language-hurl"><span class="hurl-entry"><span class="request"><span class="line"></span><span class="comment"># Test body response with line ending LF and CRLF.</span>
<span class="line"></span><span class="comment"># We receive the text body "line1\nline2\r\nline3\n"</span>
<span class="line"></span><span class="comment">#</span>
<span class="line"></span><span class="comment"># $ printf "line1\nline2\r\nline3\n" | base64</span>
<span class="line"></span><span class="comment"># bGluZTEKbGluZTINCmxpbmUzCg==</span>
<span class="line"></span>
<span class="line"></span>
<span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/assert-base64</span></span>
</span><span class="response"><span class="line"></span>
<span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
<span class="line">base64,<span class="base64">bGluZTEKbGluZTINCmxpbmUzCg==</span>;</span>
</span></span><span class="line"></span>
</code></pre>

View File

@ -1,12 +0,0 @@
# Test body response with line ending LF and CRLF.
# We receive the text body "line1\nline2\r\nline3\n"
#
# $ printf "line1\nline2\r\nline3\n" | base64
# bGluZTEKbGluZTINCmxpbmUzCg==
GET http://localhost:8000/assert-base64
HTTP 200
base64,bGluZTEKbGluZTINCmxpbmUzCg==;

View File

@ -1 +0,0 @@
{"entries":[{"request":{"method":"GET","url":"http://localhost:8000/assert-base64"},"response":{"status":200,"body":{"encoding":"base64","value":"bGluZTEKbGluZTINCmxpbmUzCg=="}}}]}

View File

@ -1,39 +0,0 @@
<pre><code class="language-hurl"><span class="hurl-entry"><span class="request"><span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/assert-header</span></span>
</span><span class="response"><span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
<span class="line"><span class="string">Content-Type</span>: <span class="string">text/html; charset=utf-8</span></span>
<span class="line"><span class="string">Set-Cookie</span>: <span class="string">cookie1=value1; Path=/</span></span>
<span class="line"><span class="string">Set-Cookie</span>: <span class="string">cookie2=value2; Path=/</span></span>
<span class="line"><span class="section-header">[Asserts]</span></span>
<span class="line"><span class="query-type">header</span> <span class="string">"Custom"</span> <span class="not">not</span> <span class="predicate-type">exists</span></span>
<span class="line"><span class="query-type">header</span> <span class="string">"Content-Type"</span> <span class="predicate-type">exists</span></span>
<span class="line"><span class="query-type">header</span> <span class="string">"Header1"</span> <span class="predicate-type">==</span> <span class="string">"value1"</span></span>
<span class="line"><span class="query-type">header</span> <span class="string">"ETag"</span> <span class="predicate-type">==</span> <span class="string">"\"33a64df551425fcc55e4d42a148795d9f25f89d4\""</span></span>
<span class="line"><span class="query-type">header</span> <span class="string">"Expires"</span> <span class="predicate-type">==</span> <span class="string">"Wed, 21 Oct 2015 07:28:00 GMT"</span></span>
<span class="line"><span class="query-type">header</span> <span class="string">"Expires"</span> <span class="filter-type">toDate</span> <span class="string">"%a, %d %b %Y %H:%M:%S GMT"</span> <span class="filter-type">format</span> <span class="string">"%Y"</span> <span class="predicate-type">==</span> <span class="string">"2015"</span></span>
<span class="line"><span class="query-type">header</span> <span class="string">"Expires"</span> <span class="filter-type">toDate</span> <span class="string">"%a, %d %b %Y %H:%M:%S GMT"</span> <span class="filter-type">daysBeforeNow</span> <span class="predicate-type">&gt;</span> <span class="number">1000</span></span>
<span class="line"><span class="query-type">header</span> <span class="string">"Set-Cookie"</span> <span class="predicate-type">exists</span></span>
<span class="line"><span class="query-type">header</span> <span class="string">"Set-Cookie"</span> <span class="filter-type">count</span> <span class="predicate-type">==</span> <span class="number">3</span></span>
<span class="line"><span class="query-type">header</span> <span class="string">"Set-Cookie"</span> <span class="predicate-type">includes</span> <span class="string">"cookie1=value1; Path=/"</span></span>
<span class="line"><span class="query-type">header</span> <span class="string">"Set-Cookie"</span> <span class="not">not</span> <span class="predicate-type">includes</span> <span class="string">"cookie4=value4; Path=/"</span></span>
<span class="line"><span class="query-type">header</span> <span class="string">"X-Fruit"</span> <span class="predicate-type">isCollection</span></span>
<span class="line"><span class="query-type">header</span> <span class="string">"x-fruit"</span> <span class="filter-type">count</span> <span class="predicate-type">==</span> <span class="number">4</span></span>
<span class="line"><span class="query-type">header</span> <span class="string">"X-Fruit"</span> <span class="filter-type">nth</span> <span class="number">0</span> <span class="predicate-type">==</span> <span class="string">"Banana"</span></span>
<span class="line"><span class="query-type">header</span> <span class="string">"x-fruit"</span> <span class="filter-type">nth</span> <span class="number">1</span> <span class="predicate-type">==</span> <span class="string">"Lemon"</span></span>
<span class="line"><span class="query-type">header</span> <span class="string">"X-Fruit"</span> <span class="filter-type">nth</span> <span class="number">2</span> <span class="predicate-type">!=</span> <span class="string">"Lemon"</span></span>
<span class="line"><span class="query-type">header</span> <span class="string">"X-Fruit"</span> <span class="filter-type">nth</span> <span class="number">2</span> <span class="predicate-type">==</span> <span class="string">"Grape"</span></span>
<span class="line"><span class="query-type">header</span> <span class="string">"X-Fruit"</span> <span class="filter-type">nth</span> <span class="number">3</span> <span class="predicate-type">==</span> <span class="string">"Strawberry"</span></span>
<span class="line"><span class="query-type">header</span> <span class="string">"X-Fruit"</span> <span class="predicate-type">includes</span> <span class="string">"Strawberry"</span></span>
</span></span><span class="hurl-entry"><span class="request"><span class="line"></span>
<span class="line"></span><span class="comment"># Same request as previously, but now we check that we can capture the header "X-Fruit" collection as a variable</span>
<span class="line"></span><span class="comment"># before asserting it s values.</span>
<span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/assert-header</span></span>
</span><span class="response"><span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
<span class="line"><span class="section-header">[Captures]</span></span>
<span class="line"><span class="string">fruits</span>: <span class="query-type">header</span> <span class="string">"X-fruit"</span></span>
<span class="line"><span class="section-header">[Asserts]</span></span>
<span class="line"><span class="query-type">header</span> <span class="string">"X-Fruit"</span> <span class="predicate-type">isCollection</span></span>
<span class="line"><span class="query-type">variable</span> <span class="string">"fruits"</span> <span class="predicate-type">isCollection</span></span>
<span class="line"><span class="query-type">variable</span> <span class="string">"fruits"</span> <span class="filter-type">count</span> <span class="predicate-type">==</span> <span class="number">4</span></span>
<span class="line"><span class="query-type">variable</span> <span class="string">"fruits"</span> <span class="filter-type">nth</span> <span class="number">0</span> <span class="predicate-type">==</span> <span class="string">"Banana"</span></span>
<span class="line"><span class="query-type">variable</span> <span class="string">"fruits"</span> <span class="filter-type">nth</span> <span class="number">3</span> <span class="predicate-type">==</span> <span class="string">"Strawberry"</span></span>
</span></span></code></pre>

View File

@ -1,38 +0,0 @@
GET http://localhost:8000/assert-header
HTTP 200
Content-Type: text/html; charset=utf-8
Set-Cookie: cookie1=value1; Path=/
Set-Cookie: cookie2=value2; Path=/
[Asserts]
header "Custom" not exists
header "Content-Type" exists
header "Header1" == "value1"
header "ETag" == "\"33a64df551425fcc55e4d42a148795d9f25f89d4\""
header "Expires" == "Wed, 21 Oct 2015 07:28:00 GMT"
header "Expires" toDate "%a, %d %b %Y %H:%M:%S GMT" format "%Y" == "2015"
header "Expires" toDate "%a, %d %b %Y %H:%M:%S GMT" daysBeforeNow > 1000
header "Set-Cookie" exists
header "Set-Cookie" count == 3
header "Set-Cookie" includes "cookie1=value1; Path=/"
header "Set-Cookie" not includes "cookie4=value4; Path=/"
header "X-Fruit" isCollection
header "x-fruit" count == 4
header "X-Fruit" nth 0 == "Banana"
header "x-fruit" nth 1 == "Lemon"
header "X-Fruit" nth 2 != "Lemon"
header "X-Fruit" nth 2 == "Grape"
header "X-Fruit" nth 3 == "Strawberry"
header "X-Fruit" includes "Strawberry"
# Same request as previously, but now we check that we can capture the header "X-Fruit" collection as a variable
# before asserting it s values.
GET http://localhost:8000/assert-header
HTTP 200
[Captures]
fruits: header "X-fruit"
[Asserts]
header "X-Fruit" isCollection
variable "fruits" isCollection
variable "fruits" count == 4
variable "fruits" nth 0 == "Banana"
variable "fruits" nth 3 == "Strawberry"

View File

@ -1 +0,0 @@
{"entries":[{"request":{"method":"GET","url":"http://localhost:8000/assert-header"},"response":{"status":200,"headers":[{"name":"Content-Type","value":"text/html; charset=utf-8"},{"name":"Set-Cookie","value":"cookie1=value1; Path=/"},{"name":"Set-Cookie","value":"cookie2=value2; Path=/"}],"asserts":[{"query":{"type":"header","name":"Custom"},"predicate":{"not":true,"type":"exist"}},{"query":{"type":"header","name":"Content-Type"},"predicate":{"type":"exist"}},{"query":{"type":"header","name":"Header1"},"predicate":{"type":"equal","value":"value1"}},{"query":{"type":"header","name":"ETag"},"predicate":{"type":"equal","value":"\"33a64df551425fcc55e4d42a148795d9f25f89d4\""}},{"query":{"type":"header","name":"Expires"},"predicate":{"type":"equal","value":"Wed, 21 Oct 2015 07:28:00 GMT"}},{"query":{"type":"header","name":"Expires"},"filters":[{"type":"toDate","fmt":"%a, %d %b %Y %H:%M:%S GMT"},{"type":"format","fmt":"%Y"}],"predicate":{"type":"equal","value":"2015"}},{"query":{"type":"header","name":"Expires"},"filters":[{"type":"toDate","fmt":"%a, %d %b %Y %H:%M:%S GMT"},{"type":"daysBeforeNow"}],"predicate":{"type":"greater","value":1000}},{"query":{"type":"header","name":"Set-Cookie"},"predicate":{"type":"exist"}},{"query":{"type":"header","name":"Set-Cookie"},"filters":[{"type":"count"}],"predicate":{"type":"equal","value":3}},{"query":{"type":"header","name":"Set-Cookie"},"predicate":{"type":"include","value":"cookie1=value1; Path=/"}},{"query":{"type":"header","name":"Set-Cookie"},"predicate":{"not":true,"type":"include","value":"cookie4=value4; Path=/"}},{"query":{"type":"header","name":"X-Fruit"},"predicate":{"type":"isCollection"}},{"query":{"type":"header","name":"x-fruit"},"filters":[{"type":"count"}],"predicate":{"type":"equal","value":4}},{"query":{"type":"header","name":"X-Fruit"},"filters":[{"type":"nth","n":0}],"predicate":{"type":"equal","value":"Banana"}},{"query":{"type":"header","name":"x-fruit"},"filters":[{"type":"nth","n":1}],"predicate":{"type":"equal","value":"Lemon"}},{"query":{"type":"header","name":"X-Fruit"},"filters":[{"type":"nth","n":2}],"predicate":{"type":"not-equal","value":"Lemon"}},{"query":{"type":"header","name":"X-Fruit"},"filters":[{"type":"nth","n":2}],"predicate":{"type":"equal","value":"Grape"}},{"query":{"type":"header","name":"X-Fruit"},"filters":[{"type":"nth","n":3}],"predicate":{"type":"equal","value":"Strawberry"}},{"query":{"type":"header","name":"X-Fruit"},"predicate":{"type":"include","value":"Strawberry"}}]}},{"request":{"method":"GET","url":"http://localhost:8000/assert-header"},"response":{"status":200,"captures":[{"name":"fruits","query":{"type":"header","name":"X-fruit"}}],"asserts":[{"query":{"type":"header","name":"X-Fruit"},"predicate":{"type":"isCollection"}},{"query":{"type":"variable","name":"fruits"},"predicate":{"type":"isCollection"}},{"query":{"type":"variable","name":"fruits"},"filters":[{"type":"count"}],"predicate":{"type":"equal","value":4}},{"query":{"type":"variable","name":"fruits"},"filters":[{"type":"nth","n":0}],"predicate":{"type":"equal","value":"Banana"}},{"query":{"type":"variable","name":"fruits"},"filters":[{"type":"nth","n":3}],"predicate":{"type":"equal","value":"Strawberry"}}]}}]}

View File

@ -1,139 +0,0 @@
<pre><code class="language-hurl"><span class="hurl-entry"><span class="request"><span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/assert-json</span></span>
<span class="line"><span class="section-header">[Options]</span></span>
<span class="line"><span class="string">variable</span>: one=<span class="number">1</span></span>
<span class="line"><span class="string">variable</span>: two=<span class="number">2</span></span>
<span class="line"><span class="string">variable</span>: three=<span class="number">3</span></span>
<span class="line"><span class="string">variable</span>: four=<span class="number">4</span></span>
<span class="line"><span class="string">variable</span>: five=<span class="number">5</span></span>
<span class="line"><span class="string">variable</span>: foo=<span class="string">abc</span></span>
<span class="line"><span class="string">insecure</span>: <span class="boolean">false</span></span>
</span><span class="response"><span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
<span class="line"><span class="section-header">[Captures]</span></span>
<span class="line"><span class="string">count</span>: <span class="query-type">jsonpath</span> <span class="string">"$.count"</span></span>
<span class="line"><span class="section-header">[Asserts]</span></span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.count"</span> <span class="predicate-type">==</span> <span class="number">5</span></span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.count"</span> <span class="predicate-type">==</span> <span class="number">5.0</span></span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.count"</span> <span class="predicate-type">==</span> <span class="expr">{{five}}</span></span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.count"</span> <span class="predicate-type">!=</span> <span class="number">4</span></span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.count"</span> <span class="predicate-type">!=</span> <span class="expr">{{four}}</span></span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.count"</span> <span class="not">not</span> <span class="predicate-type">==</span> <span class="number">4</span></span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.count"</span> <span class="predicate-type">&gt;</span> <span class="number">1</span></span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.count"</span> <span class="predicate-type">&gt;</span> <span class="expr">{{one}}</span></span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.count"</span> <span class="predicate-type">&gt;</span> <span class="number">1.0</span></span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.success"</span> <span class="predicate-type">==</span> <span class="boolean">false</span></span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.success"</span> <span class="predicate-type">!=</span> <span class="null">null</span></span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.success"</span> <span class="predicate-type">exists</span></span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.success"</span> <span class="predicate-type">isBoolean</span></span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.errors"</span> <span class="filter-type">count</span> <span class="predicate-type">==</span> <span class="number">2</span></span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.errors"</span> <span class="predicate-type">isCollection</span></span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.failures"</span> <span class="filter-type">count</span> <span class="predicate-type">==</span> <span class="number">1</span></span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.failures"</span> <span class="predicate-type">isCollection</span></span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.warnings"</span> <span class="filter-type">count</span> <span class="predicate-type">==</span> <span class="number">0</span></span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.warnings"</span> <span class="predicate-type">isEmpty</span></span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.toto"</span> <span class="not">not</span> <span class="predicate-type">exists</span></span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.failures"</span> <span class="predicate-type">exists</span></span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.warnings"</span> <span class="predicate-type">exists</span></span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.errors[0]"</span> <span class="predicate-type">exists</span></span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.errors[0]"</span> <span class="predicate-type">isCollection</span></span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.errors[0].id"</span> <span class="predicate-type">==</span> <span class="string">"error1"</span></span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.errors[0].id"</span> <span class="predicate-type">isString</span></span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.errors[0]['id']"</span> <span class="predicate-type">==</span> <span class="string">"error1"</span></span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.errors[*].id"</span> <span class="predicate-type">includes</span> <span class="string">"error1"</span></span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.errors[0,1].id"</span> <span class="predicate-type">includes</span> <span class="string">"error1"</span></span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.errors[:2].id"</span> <span class="filter-type">count</span> <span class="predicate-type">==</span> <span class="number">2</span></span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.errors[0:].id"</span> <span class="filter-type">count</span> <span class="predicate-type">==</span> <span class="number">2</span></span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.errors[?(@.id)].id"</span> <span class="filter-type">nth</span> <span class="number">0</span> <span class="predicate-type">==</span> <span class="string">"error1"</span></span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.errors[?(@.id=='error1')].id"</span> <span class="filter-type">nth</span> <span class="number">0</span> <span class="predicate-type">==</span> <span class="string">"error1"</span></span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.failures[*].id"</span> <span class="predicate-type">includes</span> <span class="string">"failure1"</span></span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.duration"</span> <span class="predicate-type">==</span> <span class="number">1.5</span></span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.duration"</span> <span class="predicate-type">&lt;=</span> <span class="number">2.0</span></span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.duration"</span> <span class="predicate-type">&lt;</span> <span class="number">2</span></span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.duration"</span> <span class="predicate-type">&lt;</span> <span class="expr">{{two}}</span></span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.duration"</span> <span class="predicate-type">isFloat</span></span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.duration"</span> <span class="not">not</span> <span class="predicate-type">isInteger</span></span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.nullable"</span> <span class="predicate-type">==</span> <span class="null">null</span></span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.tags[0]"</span> <span class="predicate-type">==</span> <span class="string">"test"</span></span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.tags[0]"</span> <span class="predicate-type">&gt;</span> <span class="string">"te"</span></span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.tags[0]"</span> <span class="predicate-type">&lt;</span> <span class="string">"testabc"</span></span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.tags[0]"</span> <span class="predicate-type">&lt;=</span> <span class="string">"test"</span></span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.tags[0]"</span> <span class="predicate-type">&gt;</span> <span class="string">"{{foo}}"</span></span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.profile-id"</span> <span class="predicate-type">==</span> <span class="string">"123abc"</span></span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$['profile-id']"</span> <span class="predicate-type">==</span> <span class="string">"123abc"</span></span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.errors[0]"</span> <span class="not">not</span> <span class="predicate-type">isEmpty</span></span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.empty"</span> <span class="predicate-type">isEmpty</span></span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.*"</span> <span class="filter-type">count</span> <span class="predicate-type">==</span> <span class="number">10</span></span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.errors..*"</span> <span class="filter-type">count</span> <span class="predicate-type">==</span> <span class="number">4</span></span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$..id"</span> <span class="filter-type">count</span> <span class="predicate-type">==</span> <span class="number">3</span></span>
<span class="line"></span>
<span class="line"></span><span class="comment"># FIXME do we accept count filter on object?</span>
<span class="line"></span><span class="comment"># jsonpath "$.empty" count == 0</span>
<span class="json"><span class="line">{</span>
<span class="line"> "count": 5,</span>
<span class="line"> "success": false,</span>
<span class="line"> "errors": [{"id":"error1"},{"id":"error2"}],</span>
<span class="line"> "failures": [{"id":"failure1"}],</span>
<span class="line"> "warnings": [],</span>
<span class="line"> "duration": 1.5,</span>
<span class="line"> "tags": ["test"],</span>
<span class="line"> "nullable": null,</span>
<span class="line"> "profile-id": "123abc",</span>
<span class="line"> "empty": {}</span>
<span class="line">}</span></span>
</span></span><span class="hurl-entry"><span class="request"><span class="line"></span>
<span class="line"></span>
<span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/assert-json/index</span></span>
</span><span class="response"><span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
<span class="line"><span class="section-header">[Captures]</span></span>
<span class="line"><span class="string">index</span>: <span class="query-type">body</span></span>
</span></span><span class="hurl-entry"><span class="request"><span class="line"></span>
<span class="line"></span>
<span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/assert-json</span></span>
</span><span class="response"><span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
<span class="line"><span class="section-header">[Asserts]</span></span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.errors[{{index}}].id"</span> <span class="predicate-type">==</span> <span class="string">"error2"</span></span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.tags"</span> <span class="predicate-type">includes</span> <span class="string">"test"</span></span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.tags"</span> <span class="not">not</span> <span class="predicate-type">includes</span> <span class="string">"prod"</span></span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.tags"</span> <span class="not">not</span> <span class="predicate-type">includes</span> <span class="null">null</span></span>
</span></span><span class="hurl-entry"><span class="request"><span class="line"></span>
<span class="line"></span>
<span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/assert-json/list</span></span>
</span><span class="response"><span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
<span class="line"><span class="section-header">[Asserts]</span></span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$"</span> <span class="filter-type">count</span> <span class="predicate-type">==</span> <span class="number">2</span></span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.[0].name"</span> <span class="predicate-type">==</span> <span class="string">"Bob"</span></span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$[0].name"</span> <span class="predicate-type">==</span> <span class="string">"Bob"</span></span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.[?(@.id == 1)].name"</span> <span class="filter-type">nth</span> <span class="number">0</span> <span class="predicate-type">==</span> <span class="string">"Bob"</span></span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$[?(@.id == 1)].name"</span> <span class="filter-type">nth</span> <span class="number">0</span> <span class="predicate-type">==</span> <span class="string">"Bob"</span></span>
</span></span><span class="hurl-entry"><span class="request"><span class="line"></span>
<span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/assert-json/filter</span></span>
</span><span class="response"><span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
<span class="line"><span class="section-header">[Asserts]</span></span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.fruit[?(@.price.US==200)].name"</span> <span class="filter-type">nth</span> <span class="number">0</span> <span class="predicate-type">==</span> <span class="string">"grape"</span></span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.fruit.[?(@.US == 100)]"</span> <span class="filter-type">count</span> <span class="predicate-type">==</span> <span class="number">0</span></span> <span class="comment"># To be clarified with spec: the first fruit is return by jsonpath.com</span>
<span class="json"><span class="line">{</span>
<span class="line"> "fruit": [</span>
<span class="line"> {</span>
<span class="line"> "name": "apple",</span>
<span class="line"> "price": {</span>
<span class="line"> "US": 100,</span>
<span class="line"> "UN": 110</span>
<span class="line"> }</span>
<span class="line"> },</span>
<span class="line"> {</span>
<span class="line"> "name": "grape",</span>
<span class="line"> "price": {</span>
<span class="line"> "US": 200,</span>
<span class="line"> "UN": 150</span>
<span class="line"> }</span>
<span class="line"> }</span>
<span class="line"> ]</span>
<span class="line">}</span></span>
</span></span><span class="hurl-entry"><span class="request"><span class="line"></span>
<span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/assert-json/big-number</span></span>
</span><span class="response"><span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
<span class="line"><span class="section-header">[Asserts]</span></span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.big_integer"</span> <span class="predicate-type">==</span> <span class="number">1000000000000000000000</span></span>
<span class="json"><span class="line">{</span>
<span class="line"> "big_integer": 1000000000000000000000</span>
<span class="line">}</span></span>
</span></span></code></pre>

View File

@ -1,138 +0,0 @@
GET http://localhost:8000/assert-json
[Options]
variable: one=1
variable: two=2
variable: three=3
variable: four=4
variable: five=5
variable: foo=abc
insecure: false
HTTP 200
[Captures]
count: jsonpath "$.count"
[Asserts]
jsonpath "$.count" == 5
jsonpath "$.count" == 5.0
jsonpath "$.count" == {{five}}
jsonpath "$.count" != 4
jsonpath "$.count" != {{four}}
jsonpath "$.count" not == 4
jsonpath "$.count" > 1
jsonpath "$.count" > {{one}}
jsonpath "$.count" > 1.0
jsonpath "$.success" == false
jsonpath "$.success" != null
jsonpath "$.success" exists
jsonpath "$.success" isBoolean
jsonpath "$.errors" count == 2
jsonpath "$.errors" isCollection
jsonpath "$.failures" count == 1
jsonpath "$.failures" isCollection
jsonpath "$.warnings" count == 0
jsonpath "$.warnings" isEmpty
jsonpath "$.toto" not exists
jsonpath "$.failures" exists
jsonpath "$.warnings" exists
jsonpath "$.errors[0]" exists
jsonpath "$.errors[0]" isCollection
jsonpath "$.errors[0].id" == "error1"
jsonpath "$.errors[0].id" isString
jsonpath "$.errors[0]['id']" == "error1"
jsonpath "$.errors[*].id" includes "error1"
jsonpath "$.errors[0,1].id" includes "error1"
jsonpath "$.errors[:2].id" count == 2
jsonpath "$.errors[0:].id" count == 2
jsonpath "$.errors[?(@.id)].id" nth 0 == "error1"
jsonpath "$.errors[?(@.id=='error1')].id" nth 0 == "error1"
jsonpath "$.failures[*].id" includes "failure1"
jsonpath "$.duration" == 1.5
jsonpath "$.duration" <= 2.0
jsonpath "$.duration" < 2
jsonpath "$.duration" < {{two}}
jsonpath "$.duration" isFloat
jsonpath "$.duration" not isInteger
jsonpath "$.nullable" == null
jsonpath "$.tags[0]" == "test"
jsonpath "$.tags[0]" > "te"
jsonpath "$.tags[0]" < "testabc"
jsonpath "$.tags[0]" <= "test"
jsonpath "$.tags[0]" > "{{foo}}"
jsonpath "$.profile-id" == "123abc"
jsonpath "$['profile-id']" == "123abc"
jsonpath "$.errors[0]" not isEmpty
jsonpath "$.empty" isEmpty
jsonpath "$.*" count == 10
jsonpath "$.errors..*" count == 4
jsonpath "$..id" count == 3
# FIXME do we accept count filter on object?
# jsonpath "$.empty" count == 0
{
"count": 5,
"success": false,
"errors": [{"id":"error1"},{"id":"error2"}],
"failures": [{"id":"failure1"}],
"warnings": [],
"duration": 1.5,
"tags": ["test"],
"nullable": null,
"profile-id": "123abc",
"empty": {}
}
GET http://localhost:8000/assert-json/index
HTTP 200
[Captures]
index: body
GET http://localhost:8000/assert-json
HTTP 200
[Asserts]
jsonpath "$.errors[{{index}}].id" == "error2"
jsonpath "$.tags" includes "test"
jsonpath "$.tags" not includes "prod"
jsonpath "$.tags" not includes null
GET http://localhost:8000/assert-json/list
HTTP 200
[Asserts]
jsonpath "$" count == 2
jsonpath "$.[0].name" == "Bob"
jsonpath "$[0].name" == "Bob"
jsonpath "$.[?(@.id == 1)].name" nth 0 == "Bob"
jsonpath "$[?(@.id == 1)].name" nth 0 == "Bob"
GET http://localhost:8000/assert-json/filter
HTTP 200
[Asserts]
jsonpath "$.fruit[?(@.price.US==200)].name" nth 0 == "grape"
jsonpath "$.fruit.[?(@.US == 100)]" count == 0 # To be clarified with spec: the first fruit is return by jsonpath.com
{
"fruit": [
{
"name": "apple",
"price": {
"US": 100,
"UN": 110
}
},
{
"name": "grape",
"price": {
"US": 200,
"UN": 150
}
}
]
}
GET http://localhost:8000/assert-json/big-number
HTTP 200
[Asserts]
jsonpath "$.big_integer" == 1000000000000000000000
{
"big_integer": 1000000000000000000000
}

File diff suppressed because one or more lines are too long

View File

@ -1,11 +0,0 @@
<pre><code class="language-hurl"><span class="hurl-entry"><span class="request"><span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/assert-match</span></span>
</span><span class="response"><span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
<span class="line"><span class="section-header">[Asserts]</span></span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.date1"</span> <span class="predicate-type">matches</span> <span class="string">"\\d{4}-\\d{2}-\\d{2}"</span></span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.date1"</span> <span class="predicate-type">matches</span> <span class="regex">/\d{4}-\d{2}-\d{2}/</span></span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.date2"</span> <span class="predicate-type">matches</span> <span class="regex">/\d{4}-\d{2}-\d{2}/</span></span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.date1"</span> <span class="predicate-type">matches</span> <span class="regex">/^\d{4}-\d{2}-\d{2}$/</span></span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.date2"</span> <span class="not">not</span> <span class="predicate-type">matches</span> <span class="regex">/^\d{4}-\d{2}-\d{2}$/</span></span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.path1"</span> <span class="predicate-type">matches</span> <span class="regex">/aa\/bb/</span></span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.path2"</span> <span class="predicate-type">matches</span> <span class="regex">/aa\\bb/</span></span>
</span></span></code></pre>

View File

@ -1,10 +0,0 @@
GET http://localhost:8000/assert-match
HTTP 200
[Asserts]
jsonpath "$.date1" matches "\\d{4}-\\d{2}-\\d{2}"
jsonpath "$.date1" matches /\d{4}-\d{2}-\d{2}/
jsonpath "$.date2" matches /\d{4}-\d{2}-\d{2}/
jsonpath "$.date1" matches /^\d{4}-\d{2}-\d{2}$/
jsonpath "$.date2" not matches /^\d{4}-\d{2}-\d{2}$/
jsonpath "$.path1" matches /aa\/bb/
jsonpath "$.path2" matches /aa\\bb/

View File

@ -1 +0,0 @@
{"entries":[{"request":{"method":"GET","url":"http://localhost:8000/assert-match"},"response":{"status":200,"asserts":[{"query":{"type":"jsonpath","expr":"$.date1"},"predicate":{"type":"match","value":"\\d{4}-\\d{2}-\\d{2}"}},{"query":{"type":"jsonpath","expr":"$.date1"},"predicate":{"type":"match","value":"\\d{4}-\\d{2}-\\d{2}","encoding":"regex"}},{"query":{"type":"jsonpath","expr":"$.date2"},"predicate":{"type":"match","value":"\\d{4}-\\d{2}-\\d{2}","encoding":"regex"}},{"query":{"type":"jsonpath","expr":"$.date1"},"predicate":{"type":"match","value":"^\\d{4}-\\d{2}-\\d{2}$","encoding":"regex"}},{"query":{"type":"jsonpath","expr":"$.date2"},"predicate":{"not":true,"type":"match","value":"^\\d{4}-\\d{2}-\\d{2}$","encoding":"regex"}},{"query":{"type":"jsonpath","expr":"$.path1"},"predicate":{"type":"match","value":"aa/bb","encoding":"regex"}},{"query":{"type":"jsonpath","expr":"$.path2"},"predicate":{"type":"match","value":"aa\\\\bb","encoding":"regex"}}]}}]}

View File

@ -1,10 +0,0 @@
<pre><code class="language-hurl"><span class="hurl-entry"><span class="request"><span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/assert-regex</span></span>
</span><span class="response"><span class="line"></span>
<span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
<span class="line"><span class="section-header">[Asserts]</span></span>
<span class="line"><span class="query-type">regex</span> <span class="string">"Hello ([0-9]+)!"</span> <span class="not">not</span> <span class="predicate-type">exists</span></span>
<span class="line"><span class="query-type">regex</span> <span class="regex">/Hello ([0-9]+)!/</span> <span class="not">not</span> <span class="predicate-type">exists</span></span>
<span class="line"><span class="query-type">body</span> <span class="filter-type">regex</span> <span class="regex">/Hello ([0-9]+)!/</span> <span class="not">not</span> <span class="predicate-type">exists</span></span>
<span class="line"><span class="query-type">regex</span> <span class="string">"Hello ([a-zA-Z]+)!"</span> <span class="predicate-type">==</span> <span class="string">"World"</span></span>
<span class="line"><span class="query-type">regex</span> <span class="regex">/Hello ([a-zA-Z]+)!/</span> <span class="predicate-type">==</span> <span class="string">"World"</span></span>
</span></span></code></pre>

View File

@ -1,9 +0,0 @@
GET http://localhost:8000/assert-regex
HTTP 200
[Asserts]
regex "Hello ([0-9]+)!" not exists
regex /Hello ([0-9]+)!/ not exists
body regex /Hello ([0-9]+)!/ not exists
regex "Hello ([a-zA-Z]+)!" == "World"
regex /Hello ([a-zA-Z]+)!/ == "World"

View File

@ -1 +0,0 @@
{"entries":[{"request":{"method":"GET","url":"http://localhost:8000/assert-regex"},"response":{"status":200,"asserts":[{"query":{"type":"regex","expr":"Hello ([0-9]+)!"},"predicate":{"not":true,"type":"exist"}},{"query":{"type":"regex","expr":{"type":"regex","value":"Hello ([0-9]+)!"}},"predicate":{"not":true,"type":"exist"}},{"query":{"type":"body"},"filters":[{"type":"regex","expr":{"type":"regex","value":"Hello ([0-9]+)!"}}],"predicate":{"not":true,"type":"exist"}},{"query":{"type":"regex","expr":"Hello ([a-zA-Z]+)!"},"predicate":{"type":"equal","value":"World"}},{"query":{"type":"regex","expr":{"type":"regex","value":"Hello ([a-zA-Z]+)!"}},"predicate":{"type":"equal","value":"World"}}]}}]}

View File

@ -1,22 +0,0 @@
<pre><code class="language-hurl"><span class="hurl-entry"><span class="request"><span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/assert-status-code</span></span>
</span><span class="response"><span class="line"><span class="version">HTTP</span> <span class="number">201</span></span>
</span></span><span class="hurl-entry"><span class="request"><span class="line"></span>
<span class="line"></span><span class="comment"># Assert HTTP 1.1</span>
<span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/assert-status-code</span></span>
</span><span class="response"><span class="line"><span class="version">HTTP/1.1</span> <span class="number">201</span></span>
</span></span><span class="hurl-entry"><span class="request"><span class="line"></span>
<span class="line"></span><span class="comment"># Simply check that the status code is not 200</span>
<span class="line"></span><span class="comment"># Do not run implicit assert of HTTP response version and code</span>
<span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/assert-status-code</span></span>
</span><span class="response"><span class="line"><span class="version">HTTP</span> <span class="number">*</span></span>
<span class="line"><span class="section-header">[Asserts]</span></span>
<span class="line"><span class="query-type">status</span> <span class="predicate-type">!=</span> <span class="number">200</span></span>
</span></span><span class="hurl-entry"><span class="request"><span class="line"></span>
<span class="line"></span>
<span class="line"></span><span class="comment"># Simply check that the status code is OK</span>
<span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/assert-status-code</span></span>
</span><span class="response"><span class="line"><span class="version">HTTP</span> <span class="number">*</span></span>
<span class="line"><span class="section-header">[Asserts]</span></span>
<span class="line"><span class="query-type">status</span> <span class="predicate-type">&gt;=</span> <span class="number">200</span></span>
<span class="line"><span class="query-type">status</span> <span class="predicate-type">&lt;</span> <span class="number">300</span></span>
</span></span></code></pre>

View File

@ -1,21 +0,0 @@
GET http://localhost:8000/assert-status-code
HTTP 201
# Assert HTTP 1.1
GET http://localhost:8000/assert-status-code
HTTP/1.1 201
# Simply check that the status code is not 200
# Do not run implicit assert of HTTP response version and code
GET http://localhost:8000/assert-status-code
HTTP *
[Asserts]
status != 200
# Simply check that the status code is OK
GET http://localhost:8000/assert-status-code
HTTP *
[Asserts]
status >= 200
status < 300

View File

@ -1 +0,0 @@
{"entries":[{"request":{"method":"GET","url":"http://localhost:8000/assert-status-code"},"response":{"status":201}},{"request":{"method":"GET","url":"http://localhost:8000/assert-status-code"},"response":{"version":"HTTP/1.1","status":201}},{"request":{"method":"GET","url":"http://localhost:8000/assert-status-code"},"response":{"asserts":[{"query":{"type":"status"},"predicate":{"type":"not-equal","value":200}}]}},{"request":{"method":"GET","url":"http://localhost:8000/assert-status-code"},"response":{"asserts":[{"query":{"type":"status"},"predicate":{"type":"greater-or-equal","value":200}},{"query":{"type":"status"},"predicate":{"type":"less","value":300}}]}}]}

View File

@ -1,52 +0,0 @@
<pre><code class="language-hurl"><span class="hurl-entry"><span class="request"><span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/assert-xpath</span></span>
</span><span class="response"><span class="line"></span>
<span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
<span class="line"><span class="section-header">[Asserts]</span></span>
<span class="line"><span class="query-type">xpath</span> <span class="string">"normalize-space(//data)"</span> <span class="predicate-type">==</span> <span class="string">"café"</span></span>
<span class="line"><span class="query-type">xpath</span> <span class="string">"normalize-space(//data)"</span> <span class="predicate-type">==</span> <span class="string">"caf\u{00e9}"</span></span>
<span class="line"><span class="query-type">xpath</span> <span class="string">"normalize-space(//data)"</span> <span class="predicate-type">&gt;</span> <span class="string">"CAFÉ"</span></span>
<span class="line"><span class="query-type">xpath</span> <span class="string">"//toto"</span> <span class="not">not</span> <span class="predicate-type">exists</span></span>
<span class="line"></span>
<span class="xml"><span class="line">&lt;data&gt;café&lt;/data&gt;</span></span>
</span></span><span class="hurl-entry"><span class="request"><span class="line"></span>
<span class="line"></span>
<span class="line"></span><span class="comment"># Test XPath assert with XML namespace.</span>
<span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/assert-xpath-simple-namespaces</span></span>
</span><span class="response"><span class="line"></span>
<span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
<span class="line"><span class="section-header">[Asserts]</span></span>
<span class="line"></span>
<span class="line"><span class="query-type">xpath</span> <span class="string">"string(//bk:book/bk:title)"</span> <span class="predicate-type">==</span> <span class="string">"Cheaper by the Dozen"</span></span>
<span class="line"><span class="query-type">xpath</span> <span class="string">"string(//*[name()='bk:book']/*[name()='bk:title'])"</span> <span class="predicate-type">==</span> <span class="string">"Cheaper by the Dozen"</span></span>
<span class="line"><span class="query-type">xpath</span> <span class="string">"string(//*[local-name()='book']/*[local-name()='title'])"</span> <span class="predicate-type">==</span> <span class="string">"Cheaper by the Dozen"</span></span>
<span class="line"></span>
<span class="line"><span class="query-type">xpath</span> <span class="string">"string(//bk:book/isbn:number)"</span> <span class="predicate-type">==</span> <span class="string">"1568491379"</span></span>
<span class="line"><span class="query-type">xpath</span> <span class="string">"string(//*[name()='bk:book']/*[name()='isbn:number'])"</span> <span class="predicate-type">==</span> <span class="string">"1568491379"</span></span>
<span class="line"><span class="query-type">xpath</span> <span class="string">"string(//*[local-name()='book']/*[local-name()='number'])"</span> <span class="predicate-type">==</span> <span class="string">"1568491379"</span></span>
</span></span><span class="hurl-entry"><span class="request"><span class="line"></span>
<span class="line"></span>
<span class="line"></span><span class="comment"># Test XPath assert with default XML namespace.</span>
<span class="line"></span><span class="comment"># _ can be used to target a default namespace.</span>
<span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/assert-xpath-svg</span></span>
</span><span class="response"><span class="line"></span>
<span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
<span class="line"><span class="section-header">[Asserts]</span></span>
<span class="line"><span class="query-type">xpath</span> <span class="string">"//_:svg/_:g/_:circle"</span> <span class="filter-type">count</span> <span class="predicate-type">==</span> <span class="number">3</span></span>
<span class="line"><span class="query-type">xpath</span> <span class="string">"//*[local-name()='svg']/*[local-name()='g']/*[local-name()='circle']"</span> <span class="filter-type">count</span> <span class="predicate-type">==</span> <span class="number">3</span></span>
<span class="line"><span class="query-type">xpath</span> <span class="string">"//*[name()='svg']/*[name()='g']/*[name()='circle']"</span> <span class="filter-type">count</span> <span class="predicate-type">==</span> <span class="number">3</span></span>
</span></span><span class="hurl-entry"><span class="request"><span class="line"></span>
<span class="line"></span>
<span class="line"></span><span class="comment"># Test XPath assert with default and prefixed XML namespace.</span>
<span class="line"></span><span class="comment"># _ can be used to target a default namespace.</span>
<span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/assert-xpath-namespaces</span></span>
</span><span class="response"><span class="line"></span>
<span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
<span class="line"><span class="section-header">[Asserts]</span></span>
<span class="line"><span class="query-type">xpath</span> <span class="string">"string(//_:book/_:title)"</span> <span class="predicate-type">==</span> <span class="string">"Cheaper by the Dozen"</span></span>
<span class="line"><span class="query-type">xpath</span> <span class="string">"string(//_:book/_:title)"</span> <span class="predicate-type">&gt;</span> <span class="string">"Cheaper"</span></span>
<span class="line"><span class="query-type">xpath</span> <span class="string">"string(//_:book/isbn:number)"</span> <span class="predicate-type">==</span> <span class="string">"1568491379"</span></span>
<span class="line"><span class="query-type">xpath</span> <span class="string">"//*[name()='book']/*[name()='notes']"</span> <span class="filter-type">count</span> <span class="predicate-type">==</span> <span class="number">1</span></span>
<span class="line"><span class="query-type">xpath</span> <span class="string">"//*[local-name()='book']/*[local-name()='notes']"</span> <span class="filter-type">count</span> <span class="predicate-type">==</span> <span class="number">1</span></span>
<span class="line"><span class="query-type">xpath</span> <span class="string">"//_:book/_:notes/*[local-name()='p']"</span> <span class="filter-type">count</span> <span class="predicate-type">==</span> <span class="number">1</span></span>
</span></span><span class="line"></span>
</code></pre>

View File

@ -1,51 +0,0 @@
GET http://localhost:8000/assert-xpath
HTTP 200
[Asserts]
xpath "normalize-space(//data)" == "café"
xpath "normalize-space(//data)" == "caf\u{00e9}"
xpath "normalize-space(//data)" > "CAFÉ"
xpath "//toto" not exists
<data>café</data>
# Test XPath assert with XML namespace.
GET http://localhost:8000/assert-xpath-simple-namespaces
HTTP 200
[Asserts]
xpath "string(//bk:book/bk:title)" == "Cheaper by the Dozen"
xpath "string(//*[name()='bk:book']/*[name()='bk:title'])" == "Cheaper by the Dozen"
xpath "string(//*[local-name()='book']/*[local-name()='title'])" == "Cheaper by the Dozen"
xpath "string(//bk:book/isbn:number)" == "1568491379"
xpath "string(//*[name()='bk:book']/*[name()='isbn:number'])" == "1568491379"
xpath "string(//*[local-name()='book']/*[local-name()='number'])" == "1568491379"
# Test XPath assert with default XML namespace.
# _ can be used to target a default namespace.
GET http://localhost:8000/assert-xpath-svg
HTTP 200
[Asserts]
xpath "//_:svg/_:g/_:circle" count == 3
xpath "//*[local-name()='svg']/*[local-name()='g']/*[local-name()='circle']" count == 3
xpath "//*[name()='svg']/*[name()='g']/*[name()='circle']" count == 3
# Test XPath assert with default and prefixed XML namespace.
# _ can be used to target a default namespace.
GET http://localhost:8000/assert-xpath-namespaces
HTTP 200
[Asserts]
xpath "string(//_:book/_:title)" == "Cheaper by the Dozen"
xpath "string(//_:book/_:title)" > "Cheaper"
xpath "string(//_:book/isbn:number)" == "1568491379"
xpath "//*[name()='book']/*[name()='notes']" count == 1
xpath "//*[local-name()='book']/*[local-name()='notes']" count == 1
xpath "//_:book/_:notes/*[local-name()='p']" count == 1

View File

@ -1 +0,0 @@
{"entries":[{"request":{"method":"GET","url":"http://localhost:8000/assert-xpath"},"response":{"status":200,"asserts":[{"query":{"type":"xpath","expr":"normalize-space(//data)"},"predicate":{"type":"equal","value":"café"}},{"query":{"type":"xpath","expr":"normalize-space(//data)"},"predicate":{"type":"equal","value":"café"}},{"query":{"type":"xpath","expr":"normalize-space(//data)"},"predicate":{"type":"greater","value":"CAFÉ"}},{"query":{"type":"xpath","expr":"//toto"},"predicate":{"not":true,"type":"exist"}}],"body":{"type":"xml","value":"<data>café</data>"}}},{"request":{"method":"GET","url":"http://localhost:8000/assert-xpath-simple-namespaces"},"response":{"status":200,"asserts":[{"query":{"type":"xpath","expr":"string(//bk:book/bk:title)"},"predicate":{"type":"equal","value":"Cheaper by the Dozen"}},{"query":{"type":"xpath","expr":"string(//*[name()='bk:book']/*[name()='bk:title'])"},"predicate":{"type":"equal","value":"Cheaper by the Dozen"}},{"query":{"type":"xpath","expr":"string(//*[local-name()='book']/*[local-name()='title'])"},"predicate":{"type":"equal","value":"Cheaper by the Dozen"}},{"query":{"type":"xpath","expr":"string(//bk:book/isbn:number)"},"predicate":{"type":"equal","value":"1568491379"}},{"query":{"type":"xpath","expr":"string(//*[name()='bk:book']/*[name()='isbn:number'])"},"predicate":{"type":"equal","value":"1568491379"}},{"query":{"type":"xpath","expr":"string(//*[local-name()='book']/*[local-name()='number'])"},"predicate":{"type":"equal","value":"1568491379"}}]}},{"request":{"method":"GET","url":"http://localhost:8000/assert-xpath-svg"},"response":{"status":200,"asserts":[{"query":{"type":"xpath","expr":"//_:svg/_:g/_:circle"},"filters":[{"type":"count"}],"predicate":{"type":"equal","value":3}},{"query":{"type":"xpath","expr":"//*[local-name()='svg']/*[local-name()='g']/*[local-name()='circle']"},"filters":[{"type":"count"}],"predicate":{"type":"equal","value":3}},{"query":{"type":"xpath","expr":"//*[name()='svg']/*[name()='g']/*[name()='circle']"},"filters":[{"type":"count"}],"predicate":{"type":"equal","value":3}}]}},{"request":{"method":"GET","url":"http://localhost:8000/assert-xpath-namespaces"},"response":{"status":200,"asserts":[{"query":{"type":"xpath","expr":"string(//_:book/_:title)"},"predicate":{"type":"equal","value":"Cheaper by the Dozen"}},{"query":{"type":"xpath","expr":"string(//_:book/_:title)"},"predicate":{"type":"greater","value":"Cheaper"}},{"query":{"type":"xpath","expr":"string(//_:book/isbn:number)"},"predicate":{"type":"equal","value":"1568491379"}},{"query":{"type":"xpath","expr":"//*[name()='book']/*[name()='notes']"},"filters":[{"type":"count"}],"predicate":{"type":"equal","value":1}},{"query":{"type":"xpath","expr":"//*[local-name()='book']/*[local-name()='notes']"},"filters":[{"type":"count"}],"predicate":{"type":"equal","value":1}},{"query":{"type":"xpath","expr":"//_:book/_:notes/*[local-name()='p']"},"filters":[{"type":"count"}],"predicate":{"type":"equal","value":1}}]}}]}

View File

@ -1,9 +0,0 @@
<pre><code class="language-hurl"><span class="hurl-entry"><span class="request"><span class="line"><span class="method">POST</span> <span class="url">http://localhost:8000/aws-sigv4</span></span>
<span class="line"><span class="section-header">[FormParams]</span></span>
<span class="line"><span class="string">test</span>: <span class="string">test</span></span>
<span class="line"><span class="section-header">[Options]</span></span>
<span class="line"><span class="string">aws-sigv4</span>: <span class="string">aws:amz:eu-central-1:hurltest</span></span>
</span><span class="response"><span class="line"></span>
<span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
</span></span><span class="line"></span>
</code></pre>

View File

@ -1,8 +0,0 @@
POST http://localhost:8000/aws-sigv4
[FormParams]
test: test
[Options]
aws-sigv4: aws:amz:eu-central-1:hurltest
HTTP 200

View File

@ -1 +0,0 @@
{"entries":[{"request":{"method":"POST","url":"http://localhost:8000/aws-sigv4","form_params":[{"name":"test","value":"test"}],"options":[{"name":"aws-sigv4","value":"aws:amz:eu-central-1:hurltest"}]},"response":{"status":200}}]}

View File

@ -1,6 +0,0 @@
<pre><code class="language-hurl"><span class="hurl-entry"><span class="request"><span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/basic-authentication</span></span>
</span><span class="response"><span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
<span class="line"><span class="string">`You are authenticated`</span></span>
</span></span><span class="line"></span>
<span class="line"></span>
</code></pre>

View File

@ -1,5 +0,0 @@
GET http://localhost:8000/basic-authentication
HTTP 200
`You are authenticated`

View File

@ -1 +0,0 @@
{"entries":[{"request":{"method":"GET","url":"http://localhost:8000/basic-authentication"},"response":{"status":200,"body":{"type":"text","value":"You are authenticated"}}}]}

View File

@ -1,26 +0,0 @@
<pre><code class="language-hurl"><span class="hurl-entry"><span class="request"><span class="line"></span><span class="comment"># Authentication with:</span>
<span class="line"></span><span class="comment"># username=bob@email.com</span>
<span class="line"></span><span class="comment"># password=secret</span>
<span class="line"></span>
<span class="line"></span><span class="comment"># the '@' must be url-escaped</span>
<span class="line"><span class="method">GET</span> <span class="url">http://bob%40email.com:secret@localhost:8000/basic-authentication-per-request</span></span>
</span><span class="response"><span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
<span class="line"><span class="string">`You are authenticated`</span></span>
</span></span><span class="hurl-entry"><span class="request"><span class="line"></span>
<span class="line"></span><span class="comment"># Header value can be computed with `echo -n 'bob@email.com:secret' | base64`</span>
<span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/basic-authentication-per-request</span></span>
<span class="line"><span class="string">Authorization</span>: <span class="string">Basic Ym9iQGVtYWlsLmNvbTpzZWNyZXQ=</span></span>
</span><span class="response"><span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
<span class="line"><span class="string">`You are authenticated`</span></span>
</span></span><span class="hurl-entry"><span class="request"><span class="line"></span>
<span class="line"></span><span class="comment"># We can also use a BasicAuth section to specify user and password</span>
<span class="line"></span><span class="comment"># without any base64 encoding.</span>
<span class="line"></span><span class="comment"># Note that spaces surrounded user and password are trimmed. If you</span>
<span class="line"></span><span class="comment"># really want a space in your password (!!), you could use Hurl</span>
<span class="line"></span><span class="comment"># unicode literal \u{20}.</span>
<span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/basic-authentication-per-request</span></span>
<span class="line"><span class="section-header">[BasicAuth]</span></span>
<span class="line"><span class="string">bob@email.com</span>: <span class="string">secret</span></span>
</span><span class="response"><span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
<span class="line"><span class="string">`You are authenticated`</span></span>
</span></span></code></pre>

View File

@ -1,25 +0,0 @@
# Authentication with:
# username=bob@email.com
# password=secret
# the '@' must be url-escaped
GET http://bob%40email.com:secret@localhost:8000/basic-authentication-per-request
HTTP 200
`You are authenticated`
# Header value can be computed with `echo -n 'bob@email.com:secret' | base64`
GET http://localhost:8000/basic-authentication-per-request
Authorization: Basic Ym9iQGVtYWlsLmNvbTpzZWNyZXQ=
HTTP 200
`You are authenticated`
# We can also use a BasicAuth section to specify user and password
# without any base64 encoding.
# Note that spaces surrounded user and password are trimmed. If you
# really want a space in your password (!!), you could use Hurl
# unicode literal \u{20}.
GET http://localhost:8000/basic-authentication-per-request
[BasicAuth]
bob@email.com: secret
HTTP 200
`You are authenticated`

View File

@ -1 +0,0 @@
{"entries":[{"request":{"method":"GET","url":"http://bob%40email.com:secret@localhost:8000/basic-authentication-per-request"},"response":{"status":200,"body":{"type":"text","value":"You are authenticated"}}},{"request":{"method":"GET","url":"http://localhost:8000/basic-authentication-per-request","headers":[{"name":"Authorization","value":"Basic Ym9iQGVtYWlsLmNvbTpzZWNyZXQ="}]},"response":{"status":200,"body":{"type":"text","value":"You are authenticated"}}},{"request":{"method":"GET","url":"http://localhost:8000/basic-authentication-per-request"},"response":{"status":200,"body":{"type":"text","value":"You are authenticated"}}}]}

View File

@ -1,6 +1,17 @@
<pre><code class="language-hurl"><span class="hurl-entry"><span class="request"><span class="line"><span class="method">POST</span> <span class="url">http://localhost:8000/json</span></span>
<span class="json"><span class="line">{</span>
<span class="line"> "message": "Hello"</span>
<span class="line"> "message": "Hello",</span>
<span class="line"> "count": 5,</span>
<span class="line"> "success": false,</span>
<span class="line"> "errors": [{"id":"error1"},{"id":"error2"}],</span>
<span class="line"> "failures": [{"id":"failure1"}],</span>
<span class="line"> "warnings": [],</span>
<span class="line"> "duration": 1.5,</span>
<span class="line"> "tags": ["test"],</span>
<span class="line"> "nullable": null,</span>
<span class="line"> "profile-id": "123abc",</span>
<span class="line"> "empty": {},</span>
<span class="line"> "name": {{name}}</span>
<span class="line">}</span></span>
</span></span><span class="hurl-entry"><span class="request"><span class="line"></span>
<span class="line"><span class="method">POST</span> <span class="url">http://localhost:8000/xml</span></span>

View File

@ -1,6 +1,17 @@
POST http://localhost:8000/json
{
"message": "Hello"
"message": "Hello",
"count": 5,
"success": false,
"errors": [{"id":"error1"},{"id":"error2"}],
"failures": [{"id":"failure1"}],
"warnings": [],
"duration": 1.5,
"tags": ["test"],
"nullable": null,
"profile-id": "123abc",
"empty": {},
"name": {{name}}
}
POST http://localhost:8000/xml

View File

@ -1 +1 @@
{"entries":[{"request":{"method":"POST","url":"http://localhost:8000/json","body":{"type":"json","value":{"message":"Hello"}}}},{"request":{"method":"POST","url":"http://localhost:8000/xml","body":{"type":"xml","value":"<message>Hello</message>"}}},{"request":{"method":"POST","url":"http://localhost:8000/multiline-string","body":{"type":"text","value":"Hello\n"}}},{"request":{"method":"POST","url":"http://localhost:8000/oneline-string","body":{"type":"text","value":"Hello"}}},{"request":{"method":"POST","url":"http://localhost:8000/oneline-base64","body":{"encoding":"base64","value":"bGluZTEKbGluZTINCmxpbmUzCg=="}}},{"request":{"method":"POST","url":"http://localhost:8000/oneline-file","body":{"type":"file","filename":"data.bin"}}},{"request":{"method":"POST","url":"http://localhost:8000/oneline-hex","body":{"encoding":"base64","value":"AQID"}}}]}
{"entries":[{"request":{"method":"POST","url":"http://localhost:8000/json","body":{"type":"json","value":{"message":"Hello","count":5,"success":false,"errors":[{"id":"error1"},{"id":"error2"}],"failures":[{"id":"failure1"}],"warnings":[],"duration":1.5,"tags":["test"],"nullable":null,"profile-id":"123abc","empty":{},"name":"{{name}}"}}}},{"request":{"method":"POST","url":"http://localhost:8000/xml","body":{"type":"xml","value":"<message>Hello</message>"}}},{"request":{"method":"POST","url":"http://localhost:8000/multiline-string","body":{"type":"text","value":"Hello\n"}}},{"request":{"method":"POST","url":"http://localhost:8000/oneline-string","body":{"type":"text","value":"Hello"}}},{"request":{"method":"POST","url":"http://localhost:8000/oneline-base64","body":{"encoding":"base64","value":"bGluZTEKbGluZTINCmxpbmUzCg=="}}},{"request":{"method":"POST","url":"http://localhost:8000/oneline-file","body":{"type":"file","filename":"data.bin"}}},{"request":{"method":"POST","url":"http://localhost:8000/oneline-hex","body":{"encoding":"base64","value":"AQID"}}}]}

View File

@ -1,14 +0,0 @@
<pre><code class="language-hurl"><span class="hurl-entry"><span class="request"><span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/bytes</span></span>
</span><span class="response"><span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
<span class="line"><span class="string">Content-Type</span>: <span class="string">application/octet-stream</span></span>
<span class="line"><span class="section-header">[Asserts]</span></span>
<span class="line"><span class="query-type">bytes</span> <span class="predicate-type">==</span> hex,<span class="hex">010203</span>;</span>
<span class="line"><span class="query-type">bytes</span> <span class="predicate-type">==</span> base64,<span class="base64">AQID</span>;</span>
<span class="line"><span class="query-type">bytes</span> <span class="predicate-type">==</span> file,<span class="filename">bytes.bin</span>;</span>
<span class="line"><span class="query-type">bytes</span> <span class="filter-type">count</span> <span class="predicate-type">==</span> <span class="number">3</span></span>
<span class="line"><span class="query-type">bytes</span> <span class="predicate-type">startsWith</span> hex,<span class="hex">01</span>;</span>
<span class="line"><span class="query-type">bytes</span> <span class="predicate-type">endsWith</span> hex,<span class="hex">03</span>;</span>
<span class="line"><span class="query-type">bytes</span> <span class="predicate-type">contains</span> hex,<span class="hex">02</span>;</span>
<span class="line"><span class="query-type">sha256</span> <span class="predicate-type">==</span> hex,<span class="hex">039058c6f2c0cb492c533b0a4d14ef77cc0f78abccced5287d84a1a2011cfb81</span>;</span>
<span class="line"><span class="query-type">md5</span> <span class="predicate-type">==</span> hex,<span class="hex">5289df737df57326fcdd22597afb1fac</span>;</span>
</span></span></code></pre>

View File

@ -1,13 +0,0 @@
GET http://localhost:8000/bytes
HTTP 200
Content-Type: application/octet-stream
[Asserts]
bytes == hex,010203;
bytes == base64,AQID;
bytes == file,bytes.bin;
bytes count == 3
bytes startsWith hex,01;
bytes endsWith hex,03;
bytes contains hex,02;
sha256 == hex,039058c6f2c0cb492c533b0a4d14ef77cc0f78abccced5287d84a1a2011cfb81;
md5 == hex,5289df737df57326fcdd22597afb1fac;

View File

@ -1 +0,0 @@
{"entries":[{"request":{"method":"GET","url":"http://localhost:8000/bytes"},"response":{"status":200,"headers":[{"name":"Content-Type","value":"application/octet-stream"}],"asserts":[{"query":{"type":"bytes"},"predicate":{"type":"equal","value":"AQID","encoding":"base64"}},{"query":{"type":"bytes"},"predicate":{"type":"equal","value":"AQID","encoding":"base64"}},{"query":{"type":"bytes"},"predicate":{"type":"equal","value":{"type":"file","filename":"bytes.bin"}}},{"query":{"type":"bytes"},"filters":[{"type":"count"}],"predicate":{"type":"equal","value":3}},{"query":{"type":"bytes"},"predicate":{"type":"start-with","value":"AQ==","encoding":"base64"}},{"query":{"type":"bytes"},"predicate":{"type":"end-with","value":"Aw==","encoding":"base64"}},{"query":{"type":"bytes"},"predicate":{"type":"contain","value":"Ag==","encoding":"base64"}},{"query":{"type":"sha256"},"predicate":{"type":"equal","value":"A5BYxvLAy0ksUzsKTRTvd8wPeKvMztUofYShogEc+4E=","encoding":"base64"}},{"query":{"type":"md5"},"predicate":{"type":"equal","value":"Uonfc331cyb83SJZevsfrA==","encoding":"base64"}}]}}]}

View File

@ -1,7 +0,0 @@
<pre><code class="language-hurl"><span class="hurl-entry"><span class="request"><span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/empty_bytes</span></span>
</span><span class="response"><span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
<span class="line"><span class="string">Content-Type</span>: <span class="string">application/octet-stream</span></span>
<span class="line"><span class="section-header">[Asserts]</span></span>
<span class="line"><span class="query-type">bytes</span> <span class="predicate-type">isEmpty</span></span>
<span class="line"><span class="query-type">bytes</span> <span class="filter-type">count</span> <span class="predicate-type">==</span> <span class="number">0</span></span>
</span></span></code></pre>

View File

@ -1,6 +0,0 @@
GET http://localhost:8000/empty_bytes
HTTP 200
Content-Type: application/octet-stream
[Asserts]
bytes isEmpty
bytes count == 0

View File

@ -1 +0,0 @@
{"entries":[{"request":{"method":"GET","url":"http://localhost:8000/empty_bytes"},"response":{"status":200,"headers":[{"name":"Content-Type","value":"application/octet-stream"}],"asserts":[{"query":{"type":"bytes"},"predicate":{"type":"isEmpty"}},{"query":{"type":"bytes"},"filters":[{"type":"count"}],"predicate":{"type":"equal","value":0}}]}}]}

View File

@ -1,9 +0,0 @@
<pre><code class="language-hurl"><span class="hurl-entry"><span class="request"><span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/capture-and-assert</span></span>
</span><span class="response"><span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
<span class="line"><span class="section-header">[Captures]</span></span>
<span class="line"><span class="string">content_type</span>: <span class="query-type">header</span> <span class="string">"content-type"</span></span>
<span class="line"><span class="section-header">[Asserts]</span></span>
<span class="line"><span class="query-type">header</span> <span class="string">"content-type"</span> <span class="predicate-type">==</span> <span class="string">"{{content_type}}"</span></span>
</span></span><span class="line"></span>
<span class="line"></span>
</code></pre>

View File

@ -1,8 +0,0 @@
GET http://localhost:8000/capture-and-assert
HTTP 200
[Captures]
content_type: header "content-type"
[Asserts]
header "content-type" == "{{content_type}}"

View File

@ -1 +0,0 @@
{"entries":[{"request":{"method":"GET","url":"http://localhost:8000/capture-and-assert"},"response":{"status":200,"captures":[{"name":"content_type","query":{"type":"header","name":"content-type"}}],"asserts":[{"query":{"type":"header","name":"content-type"},"predicate":{"type":"equal","value":"{{content_type}}"}}]}}]}

View File

@ -1,50 +0,0 @@
<pre><code class="language-hurl"><span class="hurl-entry"><span class="request"><span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/captures</span></span>
</span><span class="response"><span class="line"></span>
<span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
<span class="line"><span class="section-header">[Captures]</span></span>
<span class="line"><span class="string">param1</span>: <span class="query-type">header</span> <span class="string">"header1"</span></span>
<span class="line"><span class="string">param2</span>: <span class="query-type">header</span> <span class="string">"header2"</span> <span class="filter-type">regex</span> <span class="string">"Hello (.*)!"</span></span>
<span class="line"><span class="string">param3</span>: <span class="query-type">header</span> <span class="string">"header2"</span> <span class="filter-type">regex</span> <span class="regex">/Hello (.*)!/</span></span>
<span class="line"></span><span class="comment"># With the next captures, we test that the captured variable</span>
<span class="line"></span><span class="comment"># can be immediately used in the next captures + asserts</span>
<span class="line"><span class="string">data1</span>: <span class="query-type">body</span></span>
<span class="line"><span class="string">data2</span>: <span class="query-type">variable</span> <span class="string">"data1"</span></span>
<span class="line"><span class="section-header">[Asserts]</span></span>
<span class="line"><span class="query-type">variable</span> <span class="string">"param1"</span> <span class="predicate-type">==</span> <span class="string">"value1"</span></span>
<span class="line"><span class="query-type">variable</span> <span class="string">"param2"</span> <span class="predicate-type">==</span> <span class="string">"Bob"</span></span>
<span class="line"><span class="query-type">variable</span> <span class="string">"param3"</span> <span class="predicate-type">==</span> <span class="string">"Bob"</span></span>
<span class="line"><span class="query-type">variable</span> <span class="string">"data2"</span> <span class="predicate-type">==</span> <span class="string">"Hello world!"</span></span>
</span></span><span class="hurl-entry"><span class="request"><span class="line"></span>
<span class="line"></span>
<span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/captures-check</span></span>
<span class="line"><span class="section-header">[QueryStringParams]</span></span>
<span class="line"><span class="string">param1</span>: <span class="string">{{param1}}</span></span>
<span class="line"><span class="string">param2</span>: <span class="string">{{param2}}</span></span>
</span><span class="response"><span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
</span></span><span class="hurl-entry"><span class="request"><span class="line"></span>
<span class="line"></span>
<span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/captures-json</span></span>
</span><span class="response"><span class="line"></span>
<span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
<span class="line"><span class="section-header">[Captures]</span></span>
<span class="line"><span class="string">an_object</span>: <span class="query-type">jsonpath</span> <span class="string">"$['an_object']"</span></span>
<span class="line"><span class="string">a_list</span>: <span class="query-type">jsonpath</span> <span class="string">"$['a_list']"</span></span>
<span class="line"><span class="string">a_null</span>: <span class="query-type">jsonpath</span> <span class="string">"$['a_null']"</span></span>
<span class="line"><span class="string">an_integer</span>: <span class="query-type">jsonpath</span> <span class="string">"$['an_integer']"</span></span>
<span class="line"><span class="string">a_float</span>: <span class="query-type">jsonpath</span> <span class="string">"$['a_float']"</span></span>
<span class="line"><span class="string">a_bool</span>: <span class="query-type">jsonpath</span> <span class="string">"$['a_bool']"</span></span>
<span class="line"><span class="string">a_string</span>: <span class="query-type">jsonpath</span> <span class="string">"$['a_string']"</span></span>
<span class="line"><span class="string">all</span>: <span class="query-type">jsonpath</span> <span class="string">"$"</span></span>
<span class="line"><span class="section-header">[Asserts]</span></span>
<span class="line"><span class="query-type">variable</span> <span class="string">"a_null"</span> <span class="predicate-type">exists</span></span>
<span class="line"><span class="query-type">variable</span> <span class="string">"undefined"</span> <span class="not">not</span> <span class="predicate-type">exists</span></span>
<span class="line"><span class="query-type">variable</span> <span class="string">"a_null"</span> <span class="predicate-type">==</span> <span class="expr">{{a_null}}</span></span>
<span class="line"><span class="query-type">variable</span> <span class="string">"an_integer"</span> <span class="predicate-type">==</span> <span class="expr">{{an_integer}}</span></span>
<span class="line"><span class="query-type">variable</span> <span class="string">"a_float"</span> <span class="predicate-type">==</span> <span class="expr">{{a_float}}</span></span>
<span class="line"><span class="query-type">variable</span> <span class="string">"a_bool"</span> <span class="predicate-type">==</span> <span class="expr">{{a_bool}}</span></span>
<span class="line"><span class="query-type">variable</span> <span class="string">"a_string"</span> <span class="predicate-type">==</span> <span class="expr">{{a_string}}</span></span>
<span class="line"><span class="query-type">variable</span> <span class="string">"a_string"</span> <span class="predicate-type">==</span> <span class="string">"{{a_string}}"</span></span>
<span class="line"><span class="query-type">variable</span> <span class="string">"a_list"</span> <span class="predicate-type">==</span> <span class="expr">{{a_list}}</span></span>
</span></span><span class="line"></span>
<span class="line"></span>
</code></pre>

View File

@ -1,49 +0,0 @@
GET http://localhost:8000/captures
HTTP 200
[Captures]
param1: header "header1"
param2: header "header2" regex "Hello (.*)!"
param3: header "header2" regex /Hello (.*)!/
# With the next captures, we test that the captured variable
# can be immediately used in the next captures + asserts
data1: body
data2: variable "data1"
[Asserts]
variable "param1" == "value1"
variable "param2" == "Bob"
variable "param3" == "Bob"
variable "data2" == "Hello world!"
GET http://localhost:8000/captures-check
[QueryStringParams]
param1: {{param1}}
param2: {{param2}}
HTTP 200
GET http://localhost:8000/captures-json
HTTP 200
[Captures]
an_object: jsonpath "$['an_object']"
a_list: jsonpath "$['a_list']"
a_null: jsonpath "$['a_null']"
an_integer: jsonpath "$['an_integer']"
a_float: jsonpath "$['a_float']"
a_bool: jsonpath "$['a_bool']"
a_string: jsonpath "$['a_string']"
all: jsonpath "$"
[Asserts]
variable "a_null" exists
variable "undefined" not exists
variable "a_null" == {{a_null}}
variable "an_integer" == {{an_integer}}
variable "a_float" == {{a_float}}
variable "a_bool" == {{a_bool}}
variable "a_string" == {{a_string}}
variable "a_string" == "{{a_string}}"
variable "a_list" == {{a_list}}

View File

@ -1 +0,0 @@
{"entries":[{"request":{"method":"GET","url":"http://localhost:8000/captures"},"response":{"status":200,"captures":[{"name":"param1","query":{"type":"header","name":"header1"}},{"name":"param2","query":{"type":"header","name":"header2"},"filters":[{"type":"regex","expr":"Hello (.*)!"}]},{"name":"param3","query":{"type":"header","name":"header2"},"filters":[{"type":"regex","expr":{"type":"regex","value":"Hello (.*)!"}}]},{"name":"data1","query":{"type":"body"}},{"name":"data2","query":{"type":"variable","name":"data1"}}],"asserts":[{"query":{"type":"variable","name":"param1"},"predicate":{"type":"equal","value":"value1"}},{"query":{"type":"variable","name":"param2"},"predicate":{"type":"equal","value":"Bob"}},{"query":{"type":"variable","name":"param3"},"predicate":{"type":"equal","value":"Bob"}},{"query":{"type":"variable","name":"data2"},"predicate":{"type":"equal","value":"Hello world!"}}]}},{"request":{"method":"GET","url":"http://localhost:8000/captures-check","query_string_params":[{"name":"param1","value":"{{param1}}"},{"name":"param2","value":"{{param2}}"}]},"response":{"status":200}},{"request":{"method":"GET","url":"http://localhost:8000/captures-json"},"response":{"status":200,"captures":[{"name":"an_object","query":{"type":"jsonpath","expr":"$['an_object']"}},{"name":"a_list","query":{"type":"jsonpath","expr":"$['a_list']"}},{"name":"a_null","query":{"type":"jsonpath","expr":"$['a_null']"}},{"name":"an_integer","query":{"type":"jsonpath","expr":"$['an_integer']"}},{"name":"a_float","query":{"type":"jsonpath","expr":"$['a_float']"}},{"name":"a_bool","query":{"type":"jsonpath","expr":"$['a_bool']"}},{"name":"a_string","query":{"type":"jsonpath","expr":"$['a_string']"}},{"name":"all","query":{"type":"jsonpath","expr":"$"}}],"asserts":[{"query":{"type":"variable","name":"a_null"},"predicate":{"type":"exist"}},{"query":{"type":"variable","name":"undefined"},"predicate":{"not":true,"type":"exist"}},{"query":{"type":"variable","name":"a_null"},"predicate":{"type":"equal","value":"a_null"}},{"query":{"type":"variable","name":"an_integer"},"predicate":{"type":"equal","value":"an_integer"}},{"query":{"type":"variable","name":"a_float"},"predicate":{"type":"equal","value":"a_float"}},{"query":{"type":"variable","name":"a_bool"},"predicate":{"type":"equal","value":"a_bool"}},{"query":{"type":"variable","name":"a_string"},"predicate":{"type":"equal","value":"a_string"}},{"query":{"type":"variable","name":"a_string"},"predicate":{"type":"equal","value":"{{a_string}}"}},{"query":{"type":"variable","name":"a_list"},"predicate":{"type":"equal","value":"a_list"}}]}}]}

View File

@ -1,33 +0,0 @@
<pre><code class="language-hurl"><span class="hurl-entry"><span class="request"><span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/charset/default</span></span>
</span><span class="response"><span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
<span class="line"><span class="string">Content-Type</span>: <span class="string">text/html; charset=utf-8</span></span>
<span class="line"><span class="string">`&lt;p&gt;Hello World!&lt;/p&gt;`</span></span>
</span></span><span class="hurl-entry"><span class="request"><span class="line"></span>
<span class="line"></span>
<span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/charset/latin1</span></span>
</span><span class="response"><span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
<span class="line"><span class="string">Content-Type</span>: <span class="string">text/html; charset=latin1</span></span>
<span class="line"><span class="section-header">[Asserts]</span></span>
<span class="line"><span class="query-type">body</span> <span class="predicate-type">==</span> <span class="string">"&lt;p&gt;café&lt;/p&gt;"</span></span>
</span></span><span class="hurl-entry"><span class="request"><span class="line"></span>
<span class="line"></span>
<span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/charset/gb2312</span></span>
</span><span class="response"><span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
<span class="line"><span class="string">Content-Type</span>: <span class="string">text/html; charset=gb2312</span></span>
<span class="line"><span class="section-header">[Asserts]</span></span>
<span class="line"><span class="query-type">body</span> <span class="predicate-type">==</span> <span class="string">"&lt;p&gt;你好世界&lt;/p&gt;"</span></span>
</span></span><span class="hurl-entry"><span class="request"><span class="line"></span>
<span class="line"></span>
<span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/charset/cp1256</span></span>
</span><span class="response"><span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
<span class="line"><span class="string">Content-Type</span>: <span class="string">text/html; charset=cp1256</span></span>
<span class="line"><span class="section-header">[Asserts]</span></span>
<span class="line"><span class="query-type">body</span> <span class="predicate-type">==</span> <span class="string">"&lt;p&gt;مرحبا بالعالم&lt;/p&gt;"</span></span>
</span></span><span class="hurl-entry"><span class="request"><span class="line"></span>
<span class="line"></span>
<span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/charset/uppercase</span></span>
</span><span class="response"><span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
<span class="line"><span class="string">Content-Type</span>: <span class="string">text/html; charset=UTF-8</span></span>
<span class="line"><span class="section-header">[Asserts]</span></span>
<span class="line"><span class="query-type">body</span> <span class="predicate-type">==</span> <span class="string">"&lt;p&gt;Hello World!&lt;/p&gt;"</span></span>
</span></span></code></pre>

View File

@ -1,32 +0,0 @@
GET http://localhost:8000/charset/default
HTTP 200
Content-Type: text/html; charset=utf-8
`<p>Hello World!</p>`
GET http://localhost:8000/charset/latin1
HTTP 200
Content-Type: text/html; charset=latin1
[Asserts]
body == "<p>café</p>"
GET http://localhost:8000/charset/gb2312
HTTP 200
Content-Type: text/html; charset=gb2312
[Asserts]
body == "<p>你好世界</p>"
GET http://localhost:8000/charset/cp1256
HTTP 200
Content-Type: text/html; charset=cp1256
[Asserts]
body == "<p>مرحبا بالعالم</p>"
GET http://localhost:8000/charset/uppercase
HTTP 200
Content-Type: text/html; charset=UTF-8
[Asserts]
body == "<p>Hello World!</p>"

View File

@ -1 +0,0 @@
{"entries":[{"request":{"method":"GET","url":"http://localhost:8000/charset/default"},"response":{"status":200,"headers":[{"name":"Content-Type","value":"text/html; charset=utf-8"}],"body":{"type":"text","value":"<p>Hello World!</p>"}}},{"request":{"method":"GET","url":"http://localhost:8000/charset/latin1"},"response":{"status":200,"headers":[{"name":"Content-Type","value":"text/html; charset=latin1"}],"asserts":[{"query":{"type":"body"},"predicate":{"type":"equal","value":"<p>café</p>"}}]}},{"request":{"method":"GET","url":"http://localhost:8000/charset/gb2312"},"response":{"status":200,"headers":[{"name":"Content-Type","value":"text/html; charset=gb2312"}],"asserts":[{"query":{"type":"body"},"predicate":{"type":"equal","value":"<p>你好世界</p>"}}]}},{"request":{"method":"GET","url":"http://localhost:8000/charset/cp1256"},"response":{"status":200,"headers":[{"name":"Content-Type","value":"text/html; charset=cp1256"}],"asserts":[{"query":{"type":"body"},"predicate":{"type":"equal","value":"<p>مرحبا بالعالم</p>"}}]}},{"request":{"method":"GET","url":"http://localhost:8000/charset/uppercase"},"response":{"status":200,"headers":[{"name":"Content-Type","value":"text/html; charset=UTF-8"}],"asserts":[{"query":{"type":"body"},"predicate":{"type":"equal","value":"<p>Hello World!</p>"}}]}}]}

View File

@ -1,3 +0,0 @@
<pre><code class="language-hurl"><span class="line"></span>
<span class="line"></span>
</code></pre>

View File

@ -1,2 +0,0 @@

View File

@ -1 +0,0 @@
{"entries":[]}

View File

@ -1,144 +0,0 @@
<pre><code class="language-hurl"><span class="hurl-entry"><span class="request"><span class="line"></span><span class="comment"># Uncompressed body tests:</span>
<span class="line"></span><span class="comment"># ---------------------------</span>
<span class="line"></span><span class="comment"># --compressed has no effect on non compressed.</span>
<span class="line"></span>
<span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/compressed/none</span></span>
</span><span class="response"><span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
<span class="line"><span class="string">Content-Length</span>: <span class="string">12</span></span>
<span class="line"><span class="string">Content-Type</span>: <span class="string">text/html; charset=utf-8</span></span>
<span class="line"><span class="section-header">[Asserts]</span></span>
<span class="line"><span class="query-type">body</span> <span class="predicate-type">startsWith</span> <span class="string">"Hello"</span></span>
<span class="line"><span class="query-type">bytes</span> <span class="predicate-type">startsWith</span> hex,<span class="hex">48656c6c6f</span>;</span>
<span class="line"><span class="query-type">sha256</span> <span class="predicate-type">==</span> hex,<span class="hex">7f83b1657ff1fc53b92dc18148a1d65dfc2d4b1fa3d677284addd200126d9069</span>;</span>
<span class="line"><span class="query-type">md5</span> <span class="predicate-type">==</span> hex,<span class="hex">ed076287532e86365e841e92bfc50d8c</span>;</span>
<span class="line"><span class="string">`Hello World!`</span></span>
</span></span><span class="hurl-entry"><span class="request"><span class="line"></span>
<span class="line"></span><span class="comment"># Test base64 implicit body:</span>
<span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/compressed/none</span></span>
</span><span class="response"><span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
<span class="line">base64,<span class="base64">SGVsbG8gV29ybGQh</span>;</span>
</span></span><span class="hurl-entry"><span class="request"><span class="line"></span>
<span class="line"></span><span class="comment"># Test hex implicit body:</span>
<span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/compressed/none</span></span>
</span><span class="response"><span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
<span class="line">hex,<span class="hex">48656c6c6f20576f726c6421</span>;</span>
</span></span><span class="hurl-entry"><span class="request"><span class="line"></span>
<span class="line"></span><span class="comment"># Test file implicit body:</span>
<span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/compressed/none</span></span>
</span><span class="response"><span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
<span class="line">file,<span class="filename">hello.txt</span>;</span>
</span></span><span class="hurl-entry"><span class="request"><span class="line"></span>
<span class="line"></span>
<span class="line"></span><span class="comment"># GZip compressed body tests:</span>
<span class="line"></span><span class="comment"># ---------------------------</span>
<span class="line"></span>
<span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/compressed/gzip</span></span>
</span><span class="response"><span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
<span class="line"><span class="string">Content-Length</span>: <span class="string">32</span></span>
<span class="line"><span class="string">Content-Encoding</span>: <span class="string">gzip</span></span>
<span class="line"><span class="string">Content-Type</span>: <span class="string">text/html; charset=utf-8</span></span>
<span class="line"><span class="section-header">[Asserts]</span></span>
<span class="line"><span class="query-type">body</span> <span class="predicate-type">startsWith</span> <span class="string">"Hello"</span></span>
<span class="line"><span class="query-type">bytes</span> <span class="predicate-type">startsWith</span> hex,<span class="hex">48656c6c6f</span>;</span>
<span class="line"><span class="query-type">sha256</span> <span class="predicate-type">==</span> hex,<span class="hex">7f83b1657ff1fc53b92dc18148a1d65dfc2d4b1fa3d677284addd200126d9069</span>;</span>
<span class="line"><span class="query-type">md5</span> <span class="predicate-type">==</span> hex,<span class="hex">ed076287532e86365e841e92bfc50d8c</span>;</span>
<span class="line"><span class="string">`Hello World!`</span></span>
</span></span><span class="hurl-entry"><span class="request"><span class="line"></span>
<span class="line"></span><span class="comment"># Test base64 implicit body:</span>
<span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/compressed/gzip</span></span>
</span><span class="response"><span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
<span class="line">base64,<span class="base64">SGVsbG8gV29ybGQh</span>;</span>
</span></span><span class="hurl-entry"><span class="request"><span class="line"></span>
<span class="line"></span><span class="comment"># Test hex implicit body:</span>
<span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/compressed/gzip</span></span>
</span><span class="response"><span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
<span class="line">hex,<span class="hex">48656c6c6f20576f726c6421</span>;</span>
</span></span><span class="hurl-entry"><span class="request"><span class="line"></span>
<span class="line"></span><span class="comment"># Test file implicit body:</span>
<span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/compressed/gzip</span></span>
</span><span class="response"><span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
<span class="line">file,<span class="filename">hello.txt</span>;</span>
</span></span><span class="hurl-entry"><span class="request"><span class="line"></span>
<span class="line"></span>
<span class="line"></span><span class="comment"># ZLib compressed body tests:</span>
<span class="line"></span><span class="comment"># ---------------------------</span>
<span class="line"></span>
<span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/compressed/zlib</span></span>
</span><span class="response"><span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
<span class="line"><span class="string">Content-Length</span>: <span class="string">20</span></span>
<span class="line"><span class="string">Content-Encoding</span>: <span class="string">deflate</span></span>
<span class="line"><span class="string">Content-Type</span>: <span class="string">text/html; charset=utf-8</span></span>
<span class="line"><span class="section-header">[Asserts]</span></span>
<span class="line"><span class="query-type">body</span> <span class="predicate-type">startsWith</span> <span class="string">"Hello"</span></span>
<span class="line"><span class="query-type">bytes</span> <span class="predicate-type">startsWith</span> hex,<span class="hex">48656c6c6f</span>;</span>
<span class="line"><span class="query-type">sha256</span> <span class="predicate-type">==</span> hex,<span class="hex">7f83b1657ff1fc53b92dc18148a1d65dfc2d4b1fa3d677284addd200126d9069</span>;</span>
<span class="line"><span class="query-type">md5</span> <span class="predicate-type">==</span> hex,<span class="hex">ed076287532e86365e841e92bfc50d8c</span>;</span>
<span class="line"><span class="string">`Hello World!`</span></span>
</span></span><span class="hurl-entry"><span class="request"><span class="line"></span>
<span class="line"></span><span class="comment"># Test base64 implicit body:</span>
<span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/compressed/zlib</span></span>
</span><span class="response"><span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
<span class="line">base64,<span class="base64">SGVsbG8gV29ybGQh</span>;</span>
</span></span><span class="hurl-entry"><span class="request"><span class="line"></span>
<span class="line"></span><span class="comment"># Test hex implicit body:</span>
<span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/compressed/zlib</span></span>
</span><span class="response"><span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
<span class="line">hex,<span class="hex">48656c6c6f20576f726c6421</span>;</span>
</span></span><span class="hurl-entry"><span class="request"><span class="line"></span>
<span class="line"></span><span class="comment"># Test file implicit body:</span>
<span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/compressed/zlib</span></span>
</span><span class="response"><span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
<span class="line">file,<span class="filename">hello.txt</span>;</span>
</span></span><span class="hurl-entry"><span class="request"><span class="line"></span>
<span class="line"></span>
<span class="line"></span><span class="comment"># Brotli compressed body tests:</span>
<span class="line"></span><span class="comment"># ---------------------------</span>
<span class="line"></span>
<span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/compressed/brotli</span></span>
</span><span class="response"><span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
<span class="line"><span class="string">Content-Length</span>: <span class="string">17</span></span>
<span class="line"><span class="string">Content-Encoding</span>: <span class="string">br</span></span>
<span class="line"><span class="string">Content-Type</span>: <span class="string">text/html; charset=utf-8</span></span>
<span class="line"><span class="section-header">[Asserts]</span></span>
<span class="line"><span class="query-type">body</span> <span class="predicate-type">startsWith</span> <span class="string">"Hello"</span></span>
<span class="line"><span class="query-type">bytes</span> <span class="predicate-type">startsWith</span> hex,<span class="hex">48656c6c6f</span>;</span>
<span class="line"><span class="query-type">sha256</span> <span class="predicate-type">==</span> hex,<span class="hex">7f83b1657ff1fc53b92dc18148a1d65dfc2d4b1fa3d677284addd200126d9069</span>;</span>
<span class="line"><span class="query-type">md5</span> <span class="predicate-type">==</span> hex,<span class="hex">ed076287532e86365e841e92bfc50d8c</span>;</span>
<span class="line"><span class="string">`Hello World!`</span></span>
</span></span><span class="hurl-entry"><span class="request"><span class="line"></span>
<span class="line"></span><span class="comment"># Test base64 implicit body:</span>
<span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/compressed/brotli</span></span>
</span><span class="response"><span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
<span class="line">base64,<span class="base64">SGVsbG8gV29ybGQh</span>;</span>
</span></span><span class="hurl-entry"><span class="request"><span class="line"></span>
<span class="line"></span><span class="comment"># Test hex implicit body:</span>
<span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/compressed/brotli</span></span>
</span><span class="response"><span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
<span class="line">hex,<span class="hex">48656c6c6f20576f726c6421</span>;</span>
</span></span><span class="hurl-entry"><span class="request"><span class="line"></span>
<span class="line"></span><span class="comment"># Test file implicit body:</span>
<span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/compressed/brotli</span></span>
</span><span class="response"><span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
<span class="line">file,<span class="filename">hello.txt</span>;</span>
</span></span><span class="hurl-entry"><span class="request"><span class="line"></span>
<span class="line"></span><span class="comment"># Test a large brotli compressed body:</span>
<span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/compressed/brotli_large</span></span>
</span><span class="response"><span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
<span class="line"><span class="string">Content-Encoding</span>: <span class="string">br</span></span>
<span class="line"><span class="string">Content-Type</span>: <span class="string">image/jpeg</span></span>
<span class="line"><span class="section-header">[Asserts]</span></span>
<span class="line"><span class="query-type">bytes</span> <span class="predicate-type">startsWith</span> hex,<span class="hex">ffd8ffe0</span>;</span> <span class="comment"># JPEG magic number</span>
<span class="line">file,<span class="filename">cat.jpg</span>;</span>
</span></span><span class="hurl-entry"><span class="request"><span class="line"></span>
<span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/compressed/brotli_identity</span></span>
</span><span class="response"><span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
<span class="line"><span class="string">Content-Length</span>: <span class="string">17</span></span>
<span class="line"><span class="string">Content-Encoding</span>: <span class="string">br, identity</span></span>
<span class="line"><span class="string">Content-Type</span>: <span class="string">text/html; charset=utf-8</span></span>
<span class="line"><span class="section-header">[Asserts]</span></span>
<span class="line"><span class="query-type">body</span> <span class="predicate-type">startsWith</span> <span class="string">"Hello"</span></span>
<span class="line"><span class="query-type">bytes</span> <span class="predicate-type">startsWith</span> hex,<span class="hex">48656c6c6f</span>;</span>
<span class="line"><span class="query-type">sha256</span> <span class="predicate-type">==</span> hex,<span class="hex">7f83b1657ff1fc53b92dc18148a1d65dfc2d4b1fa3d677284addd200126d9069</span>;</span>
<span class="line"><span class="query-type">md5</span> <span class="predicate-type">==</span> hex,<span class="hex">ed076287532e86365e841e92bfc50d8c</span>;</span>
<span class="line"><span class="string">`Hello World!`</span></span>
</span></span></code></pre>

View File

@ -1,143 +0,0 @@
# Uncompressed body tests:
# ---------------------------
# --compressed has no effect on non compressed.
GET http://localhost:8000/compressed/none
HTTP 200
Content-Length: 12
Content-Type: text/html; charset=utf-8
[Asserts]
body startsWith "Hello"
bytes startsWith hex,48656c6c6f;
sha256 == hex,7f83b1657ff1fc53b92dc18148a1d65dfc2d4b1fa3d677284addd200126d9069;
md5 == hex,ed076287532e86365e841e92bfc50d8c;
`Hello World!`
# Test base64 implicit body:
GET http://localhost:8000/compressed/none
HTTP 200
base64,SGVsbG8gV29ybGQh;
# Test hex implicit body:
GET http://localhost:8000/compressed/none
HTTP 200
hex,48656c6c6f20576f726c6421;
# Test file implicit body:
GET http://localhost:8000/compressed/none
HTTP 200
file,hello.txt;
# GZip compressed body tests:
# ---------------------------
GET http://localhost:8000/compressed/gzip
HTTP 200
Content-Length: 32
Content-Encoding: gzip
Content-Type: text/html; charset=utf-8
[Asserts]
body startsWith "Hello"
bytes startsWith hex,48656c6c6f;
sha256 == hex,7f83b1657ff1fc53b92dc18148a1d65dfc2d4b1fa3d677284addd200126d9069;
md5 == hex,ed076287532e86365e841e92bfc50d8c;
`Hello World!`
# Test base64 implicit body:
GET http://localhost:8000/compressed/gzip
HTTP 200
base64,SGVsbG8gV29ybGQh;
# Test hex implicit body:
GET http://localhost:8000/compressed/gzip
HTTP 200
hex,48656c6c6f20576f726c6421;
# Test file implicit body:
GET http://localhost:8000/compressed/gzip
HTTP 200
file,hello.txt;
# ZLib compressed body tests:
# ---------------------------
GET http://localhost:8000/compressed/zlib
HTTP 200
Content-Length: 20
Content-Encoding: deflate
Content-Type: text/html; charset=utf-8
[Asserts]
body startsWith "Hello"
bytes startsWith hex,48656c6c6f;
sha256 == hex,7f83b1657ff1fc53b92dc18148a1d65dfc2d4b1fa3d677284addd200126d9069;
md5 == hex,ed076287532e86365e841e92bfc50d8c;
`Hello World!`
# Test base64 implicit body:
GET http://localhost:8000/compressed/zlib
HTTP 200
base64,SGVsbG8gV29ybGQh;
# Test hex implicit body:
GET http://localhost:8000/compressed/zlib
HTTP 200
hex,48656c6c6f20576f726c6421;
# Test file implicit body:
GET http://localhost:8000/compressed/zlib
HTTP 200
file,hello.txt;
# Brotli compressed body tests:
# ---------------------------
GET http://localhost:8000/compressed/brotli
HTTP 200
Content-Length: 17
Content-Encoding: br
Content-Type: text/html; charset=utf-8
[Asserts]
body startsWith "Hello"
bytes startsWith hex,48656c6c6f;
sha256 == hex,7f83b1657ff1fc53b92dc18148a1d65dfc2d4b1fa3d677284addd200126d9069;
md5 == hex,ed076287532e86365e841e92bfc50d8c;
`Hello World!`
# Test base64 implicit body:
GET http://localhost:8000/compressed/brotli
HTTP 200
base64,SGVsbG8gV29ybGQh;
# Test hex implicit body:
GET http://localhost:8000/compressed/brotli
HTTP 200
hex,48656c6c6f20576f726c6421;
# Test file implicit body:
GET http://localhost:8000/compressed/brotli
HTTP 200
file,hello.txt;
# Test a large brotli compressed body:
GET http://localhost:8000/compressed/brotli_large
HTTP 200
Content-Encoding: br
Content-Type: image/jpeg
[Asserts]
bytes startsWith hex,ffd8ffe0; # JPEG magic number
file,cat.jpg;
GET http://localhost:8000/compressed/brotli_identity
HTTP 200
Content-Length: 17
Content-Encoding: br, identity
Content-Type: text/html; charset=utf-8
[Asserts]
body startsWith "Hello"
bytes startsWith hex,48656c6c6f;
sha256 == hex,7f83b1657ff1fc53b92dc18148a1d65dfc2d4b1fa3d677284addd200126d9069;
md5 == hex,ed076287532e86365e841e92bfc50d8c;
`Hello World!`

File diff suppressed because one or more lines are too long

View File

@ -1,213 +0,0 @@
<pre><code class="language-hurl"><span class="hurl-entry"><span class="request"><span class="line"></span><span class="comment"># Uncompressed body tests:</span>
<span class="line"></span><span class="comment"># ---------------------------</span>
<span class="line"></span><span class="comment"># --compressed has no effect on non compressed.</span>
<span class="line"></span>
<span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/compressed/none</span></span>
<span class="line"><span class="section-header">[Options]</span></span>
<span class="line"><span class="string">compressed</span>: <span class="boolean">true</span></span>
</span><span class="response"><span class="line"></span>
<span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
<span class="line"><span class="string">Content-Length</span>: <span class="string">12</span></span>
<span class="line"><span class="string">Content-Type</span>: <span class="string">text/html; charset=utf-8</span></span>
<span class="line"><span class="section-header">[Asserts]</span></span>
<span class="line"><span class="query-type">body</span> <span class="predicate-type">startsWith</span> <span class="string">"Hello"</span></span>
<span class="line"><span class="query-type">bytes</span> <span class="predicate-type">startsWith</span> hex,<span class="hex">48656c6c6f</span>;</span>
<span class="line"><span class="query-type">sha256</span> <span class="predicate-type">==</span> hex,<span class="hex">7f83b1657ff1fc53b92dc18148a1d65dfc2d4b1fa3d677284addd200126d9069</span>;</span>
<span class="line"><span class="query-type">md5</span> <span class="predicate-type">==</span> hex,<span class="hex">ed076287532e86365e841e92bfc50d8c</span>;</span>
<span class="line"><span class="string">`Hello World!`</span></span>
</span></span><span class="hurl-entry"><span class="request"><span class="line"></span>
<span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/compressed/none</span></span>
<span class="line"><span class="section-header">[Options]</span></span>
<span class="line"><span class="string">compressed</span>: <span class="boolean">false</span></span>
</span><span class="response"><span class="line"></span>
<span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
<span class="line"><span class="string">Content-Length</span>: <span class="string">12</span></span>
<span class="line"><span class="string">Content-Type</span>: <span class="string">text/html; charset=utf-8</span></span>
<span class="line"><span class="section-header">[Asserts]</span></span>
<span class="line"><span class="query-type">body</span> <span class="predicate-type">startsWith</span> <span class="string">"Hello"</span></span>
<span class="line"><span class="query-type">bytes</span> <span class="predicate-type">startsWith</span> hex,<span class="hex">48656c6c6f</span>;</span>
<span class="line"><span class="query-type">sha256</span> <span class="predicate-type">==</span> hex,<span class="hex">7f83b1657ff1fc53b92dc18148a1d65dfc2d4b1fa3d677284addd200126d9069</span>;</span>
<span class="line"><span class="query-type">md5</span> <span class="predicate-type">==</span> hex,<span class="hex">ed076287532e86365e841e92bfc50d8c</span>;</span>
<span class="line"><span class="string">`Hello World!`</span></span>
</span></span><span class="hurl-entry"><span class="request"><span class="line"></span>
<span class="line"></span>
<span class="line"></span><span class="comment"># Test base64 implicit body:</span>
<span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/compressed/none</span></span>
<span class="line"><span class="section-header">[Options]</span></span>
<span class="line"><span class="string">compressed</span>: <span class="boolean">true</span></span>
</span><span class="response"><span class="line"></span>
<span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
<span class="line">base64,<span class="base64">SGVsbG8gV29ybGQh</span>;</span>
</span></span><span class="hurl-entry"><span class="request"><span class="line"></span>
<span class="line"></span><span class="comment"># Test hex implicit body:</span>
<span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/compressed/none</span></span>
<span class="line"><span class="section-header">[Options]</span></span>
<span class="line"><span class="string">compressed</span>: <span class="boolean">true</span></span>
</span><span class="response"><span class="line"></span>
<span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
<span class="line">hex,<span class="hex">48656c6c6f20576f726c6421</span>;</span>
</span></span><span class="hurl-entry"><span class="request"><span class="line"></span>
<span class="line"></span><span class="comment"># Test file implicit body:</span>
<span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/compressed/none</span></span>
<span class="line"><span class="section-header">[Options]</span></span>
<span class="line"><span class="string">compressed</span>: <span class="boolean">true</span></span>
</span><span class="response"><span class="line"></span>
<span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
<span class="line">file,<span class="filename">hello.txt</span>;</span>
</span></span><span class="hurl-entry"><span class="request"><span class="line"></span>
<span class="line"></span>
<span class="line"></span><span class="comment"># GZip compressed body tests:</span>
<span class="line"></span><span class="comment"># ---------------------------</span>
<span class="line"></span>
<span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/compressed/gzip</span></span>
<span class="line"><span class="section-header">[Options]</span></span>
<span class="line"><span class="string">compressed</span>: <span class="boolean">true</span></span>
</span><span class="response"><span class="line"></span>
<span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
<span class="line"><span class="string">Content-Length</span>: <span class="string">32</span></span>
<span class="line"><span class="string">Content-Encoding</span>: <span class="string">gzip</span></span>
<span class="line"><span class="string">Content-Type</span>: <span class="string">text/html; charset=utf-8</span></span>
<span class="line"><span class="section-header">[Asserts]</span></span>
<span class="line"><span class="query-type">body</span> <span class="predicate-type">startsWith</span> <span class="string">"Hello"</span></span>
<span class="line"><span class="query-type">bytes</span> <span class="predicate-type">startsWith</span> hex,<span class="hex">48656c6c6f</span>;</span>
<span class="line"><span class="query-type">sha256</span> <span class="predicate-type">==</span> hex,<span class="hex">7f83b1657ff1fc53b92dc18148a1d65dfc2d4b1fa3d677284addd200126d9069</span>;</span>
<span class="line"><span class="query-type">md5</span> <span class="predicate-type">==</span> hex,<span class="hex">ed076287532e86365e841e92bfc50d8c</span>;</span>
<span class="line"><span class="string">`Hello World!`</span></span>
</span></span><span class="hurl-entry"><span class="request"><span class="line"></span>
<span class="line"></span><span class="comment"># Test base64 implicit body:</span>
<span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/compressed/gzip</span></span>
<span class="line"><span class="section-header">[Options]</span></span>
<span class="line"><span class="string">compressed</span>: <span class="boolean">true</span></span>
</span><span class="response"><span class="line"></span>
<span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
<span class="line">base64,<span class="base64">SGVsbG8gV29ybGQh</span>;</span>
</span></span><span class="hurl-entry"><span class="request"><span class="line"></span>
<span class="line"></span><span class="comment"># Test hex implicit body:</span>
<span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/compressed/gzip</span></span>
<span class="line"><span class="section-header">[Options]</span></span>
<span class="line"><span class="string">compressed</span>: <span class="boolean">true</span></span>
</span><span class="response"><span class="line"></span>
<span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
<span class="line">hex,<span class="hex">48656c6c6f20576f726c6421</span>;</span>
</span></span><span class="hurl-entry"><span class="request"><span class="line"></span>
<span class="line"></span><span class="comment"># Test file implicit body:</span>
<span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/compressed/gzip</span></span>
<span class="line"><span class="section-header">[Options]</span></span>
<span class="line"><span class="string">compressed</span>: <span class="boolean">true</span></span>
</span><span class="response"><span class="line"></span>
<span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
<span class="line">file,<span class="filename">hello.txt</span>;</span>
</span></span><span class="hurl-entry"><span class="request"><span class="line"></span>
<span class="line"></span>
<span class="line"></span><span class="comment"># ZLib compressed body tests:</span>
<span class="line"></span><span class="comment"># ---------------------------</span>
<span class="line"></span>
<span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/compressed/zlib</span></span>
<span class="line"><span class="section-header">[Options]</span></span>
<span class="line"><span class="string">compressed</span>: <span class="boolean">true</span></span>
</span><span class="response"><span class="line"></span>
<span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
<span class="line"><span class="string">Content-Length</span>: <span class="string">20</span></span>
<span class="line"><span class="string">Content-Encoding</span>: <span class="string">deflate</span></span>
<span class="line"><span class="string">Content-Type</span>: <span class="string">text/html; charset=utf-8</span></span>
<span class="line"><span class="section-header">[Asserts]</span></span>
<span class="line"><span class="query-type">body</span> <span class="predicate-type">startsWith</span> <span class="string">"Hello"</span></span>
<span class="line"><span class="query-type">bytes</span> <span class="predicate-type">startsWith</span> hex,<span class="hex">48656c6c6f</span>;</span>
<span class="line"><span class="query-type">sha256</span> <span class="predicate-type">==</span> hex,<span class="hex">7f83b1657ff1fc53b92dc18148a1d65dfc2d4b1fa3d677284addd200126d9069</span>;</span>
<span class="line"><span class="query-type">md5</span> <span class="predicate-type">==</span> hex,<span class="hex">ed076287532e86365e841e92bfc50d8c</span>;</span>
<span class="line"><span class="string">`Hello World!`</span></span>
</span></span><span class="hurl-entry"><span class="request"><span class="line"></span>
<span class="line"></span><span class="comment"># Test base64 implicit body:</span>
<span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/compressed/zlib</span></span>
<span class="line"><span class="section-header">[Options]</span></span>
<span class="line"><span class="string">compressed</span>: <span class="boolean">true</span></span>
</span><span class="response"><span class="line"></span>
<span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
<span class="line">base64,<span class="base64">SGVsbG8gV29ybGQh</span>;</span>
</span></span><span class="hurl-entry"><span class="request"><span class="line"></span>
<span class="line"></span><span class="comment"># Test hex implicit body:</span>
<span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/compressed/zlib</span></span>
<span class="line"><span class="section-header">[Options]</span></span>
<span class="line"><span class="string">compressed</span>: <span class="boolean">true</span></span>
</span><span class="response"><span class="line"></span>
<span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
<span class="line">hex,<span class="hex">48656c6c6f20576f726c6421</span>;</span>
</span></span><span class="hurl-entry"><span class="request"><span class="line"></span>
<span class="line"></span><span class="comment"># Test file implicit body:</span>
<span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/compressed/zlib</span></span>
<span class="line"><span class="section-header">[Options]</span></span>
<span class="line"><span class="string">compressed</span>: <span class="boolean">true</span></span>
</span><span class="response"><span class="line"></span>
<span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
<span class="line">file,<span class="filename">hello.txt</span>;</span>
</span></span><span class="hurl-entry"><span class="request"><span class="line"></span>
<span class="line"></span>
<span class="line"></span><span class="comment"># Brotli compressed body tests:</span>
<span class="line"></span><span class="comment"># ---------------------------</span>
<span class="line"></span>
<span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/compressed/brotli</span></span>
<span class="line"><span class="section-header">[Options]</span></span>
<span class="line"><span class="string">compressed</span>: <span class="boolean">true</span></span>
</span><span class="response"><span class="line"></span>
<span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
<span class="line"><span class="string">Content-Length</span>: <span class="string">17</span></span>
<span class="line"><span class="string">Content-Encoding</span>: <span class="string">br</span></span>
<span class="line"><span class="string">Content-Type</span>: <span class="string">text/html; charset=utf-8</span></span>
<span class="line"><span class="section-header">[Asserts]</span></span>
<span class="line"><span class="query-type">body</span> <span class="predicate-type">startsWith</span> <span class="string">"Hello"</span></span>
<span class="line"><span class="query-type">bytes</span> <span class="predicate-type">startsWith</span> hex,<span class="hex">48656c6c6f</span>;</span>
<span class="line"><span class="query-type">sha256</span> <span class="predicate-type">==</span> hex,<span class="hex">7f83b1657ff1fc53b92dc18148a1d65dfc2d4b1fa3d677284addd200126d9069</span>;</span>
<span class="line"><span class="query-type">md5</span> <span class="predicate-type">==</span> hex,<span class="hex">ed076287532e86365e841e92bfc50d8c</span>;</span>
<span class="multiline"><span class="line">```Hello World!```</span></span>
</span></span><span class="hurl-entry"><span class="request"><span class="line"></span>
<span class="line"></span><span class="comment"># Test base64 implicit body:</span>
<span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/compressed/brotli</span></span>
<span class="line"><span class="section-header">[Options]</span></span>
<span class="line"><span class="string">compressed</span>: <span class="boolean">true</span></span>
</span><span class="response"><span class="line"></span>
<span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
<span class="line">base64,<span class="base64">SGVsbG8gV29ybGQh</span>;</span>
</span></span><span class="hurl-entry"><span class="request"><span class="line"></span>
<span class="line"></span><span class="comment"># Test hex implicit body:</span>
<span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/compressed/brotli</span></span>
<span class="line"><span class="section-header">[Options]</span></span>
<span class="line"><span class="string">compressed</span>: <span class="boolean">true</span></span>
</span><span class="response"><span class="line"></span>
<span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
<span class="line">hex,<span class="hex">48656c6c6f20576f726c6421</span>;</span>
</span></span><span class="hurl-entry"><span class="request"><span class="line"></span>
<span class="line"></span><span class="comment"># Test file implicit body:</span>
<span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/compressed/brotli</span></span>
<span class="line"><span class="section-header">[Options]</span></span>
<span class="line"><span class="string">compressed</span>: <span class="boolean">true</span></span>
</span><span class="response"><span class="line"></span>
<span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
<span class="line">file,<span class="filename">hello.txt</span>;</span>
</span></span><span class="hurl-entry"><span class="request"><span class="line"></span>
<span class="line"></span><span class="comment"># Test a large brotli compressed body:</span>
<span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/compressed/brotli_large</span></span>
<span class="line"><span class="section-header">[Options]</span></span>
<span class="line"><span class="string">compressed</span>: <span class="boolean">true</span></span>
</span><span class="response"><span class="line"></span>
<span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
<span class="line"><span class="string">Content-Encoding</span>: <span class="string">br</span></span>
<span class="line"><span class="string">Content-Type</span>: <span class="string">image/jpeg</span></span>
<span class="line"><span class="section-header">[Asserts]</span></span>
<span class="line"><span class="query-type">bytes</span> <span class="predicate-type">startsWith</span> hex,<span class="hex">ffd8ffe0</span>;</span> <span class="comment"># JPEG magic number</span>
<span class="line">file,<span class="filename">cat.jpg</span>;</span>
</span></span><span class="hurl-entry"><span class="request"><span class="line"></span>
<span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/compressed/brotli_identity</span></span>
<span class="line"><span class="section-header">[Options]</span></span>
<span class="line"><span class="string">compressed</span>: <span class="boolean">true</span></span>
</span><span class="response"><span class="line"></span>
<span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
<span class="line"><span class="string">Content-Length</span>: <span class="string">17</span></span>
<span class="line"><span class="string">Content-Encoding</span>: <span class="string">br, identity</span></span>
<span class="line"><span class="string">Content-Type</span>: <span class="string">text/html; charset=utf-8</span></span>
<span class="line"><span class="section-header">[Asserts]</span></span>
<span class="line"><span class="query-type">body</span> <span class="predicate-type">startsWith</span> <span class="string">"Hello"</span></span>
<span class="line"><span class="query-type">bytes</span> <span class="predicate-type">startsWith</span> hex,<span class="hex">48656c6c6f</span>;</span>
<span class="line"><span class="query-type">sha256</span> <span class="predicate-type">==</span> hex,<span class="hex">7f83b1657ff1fc53b92dc18148a1d65dfc2d4b1fa3d677284addd200126d9069</span>;</span>
<span class="line"><span class="query-type">md5</span> <span class="predicate-type">==</span> hex,<span class="hex">ed076287532e86365e841e92bfc50d8c</span>;</span>
<span class="multiline"><span class="line">```Hello World!```</span></span>
</span></span></code></pre>

View File

@ -1,212 +0,0 @@
# Uncompressed body tests:
# ---------------------------
# --compressed has no effect on non compressed.
GET http://localhost:8000/compressed/none
[Options]
compressed: true
HTTP 200
Content-Length: 12
Content-Type: text/html; charset=utf-8
[Asserts]
body startsWith "Hello"
bytes startsWith hex,48656c6c6f;
sha256 == hex,7f83b1657ff1fc53b92dc18148a1d65dfc2d4b1fa3d677284addd200126d9069;
md5 == hex,ed076287532e86365e841e92bfc50d8c;
`Hello World!`
GET http://localhost:8000/compressed/none
[Options]
compressed: false
HTTP 200
Content-Length: 12
Content-Type: text/html; charset=utf-8
[Asserts]
body startsWith "Hello"
bytes startsWith hex,48656c6c6f;
sha256 == hex,7f83b1657ff1fc53b92dc18148a1d65dfc2d4b1fa3d677284addd200126d9069;
md5 == hex,ed076287532e86365e841e92bfc50d8c;
`Hello World!`
# Test base64 implicit body:
GET http://localhost:8000/compressed/none
[Options]
compressed: true
HTTP 200
base64,SGVsbG8gV29ybGQh;
# Test hex implicit body:
GET http://localhost:8000/compressed/none
[Options]
compressed: true
HTTP 200
hex,48656c6c6f20576f726c6421;
# Test file implicit body:
GET http://localhost:8000/compressed/none
[Options]
compressed: true
HTTP 200
file,hello.txt;
# GZip compressed body tests:
# ---------------------------
GET http://localhost:8000/compressed/gzip
[Options]
compressed: true
HTTP 200
Content-Length: 32
Content-Encoding: gzip
Content-Type: text/html; charset=utf-8
[Asserts]
body startsWith "Hello"
bytes startsWith hex,48656c6c6f;
sha256 == hex,7f83b1657ff1fc53b92dc18148a1d65dfc2d4b1fa3d677284addd200126d9069;
md5 == hex,ed076287532e86365e841e92bfc50d8c;
`Hello World!`
# Test base64 implicit body:
GET http://localhost:8000/compressed/gzip
[Options]
compressed: true
HTTP 200
base64,SGVsbG8gV29ybGQh;
# Test hex implicit body:
GET http://localhost:8000/compressed/gzip
[Options]
compressed: true
HTTP 200
hex,48656c6c6f20576f726c6421;
# Test file implicit body:
GET http://localhost:8000/compressed/gzip
[Options]
compressed: true
HTTP 200
file,hello.txt;
# ZLib compressed body tests:
# ---------------------------
GET http://localhost:8000/compressed/zlib
[Options]
compressed: true
HTTP 200
Content-Length: 20
Content-Encoding: deflate
Content-Type: text/html; charset=utf-8
[Asserts]
body startsWith "Hello"
bytes startsWith hex,48656c6c6f;
sha256 == hex,7f83b1657ff1fc53b92dc18148a1d65dfc2d4b1fa3d677284addd200126d9069;
md5 == hex,ed076287532e86365e841e92bfc50d8c;
`Hello World!`
# Test base64 implicit body:
GET http://localhost:8000/compressed/zlib
[Options]
compressed: true
HTTP 200
base64,SGVsbG8gV29ybGQh;
# Test hex implicit body:
GET http://localhost:8000/compressed/zlib
[Options]
compressed: true
HTTP 200
hex,48656c6c6f20576f726c6421;
# Test file implicit body:
GET http://localhost:8000/compressed/zlib
[Options]
compressed: true
HTTP 200
file,hello.txt;
# Brotli compressed body tests:
# ---------------------------
GET http://localhost:8000/compressed/brotli
[Options]
compressed: true
HTTP 200
Content-Length: 17
Content-Encoding: br
Content-Type: text/html; charset=utf-8
[Asserts]
body startsWith "Hello"
bytes startsWith hex,48656c6c6f;
sha256 == hex,7f83b1657ff1fc53b92dc18148a1d65dfc2d4b1fa3d677284addd200126d9069;
md5 == hex,ed076287532e86365e841e92bfc50d8c;
```Hello World!```
# Test base64 implicit body:
GET http://localhost:8000/compressed/brotli
[Options]
compressed: true
HTTP 200
base64,SGVsbG8gV29ybGQh;
# Test hex implicit body:
GET http://localhost:8000/compressed/brotli
[Options]
compressed: true
HTTP 200
hex,48656c6c6f20576f726c6421;
# Test file implicit body:
GET http://localhost:8000/compressed/brotli
[Options]
compressed: true
HTTP 200
file,hello.txt;
# Test a large brotli compressed body:
GET http://localhost:8000/compressed/brotli_large
[Options]
compressed: true
HTTP 200
Content-Encoding: br
Content-Type: image/jpeg
[Asserts]
bytes startsWith hex,ffd8ffe0; # JPEG magic number
file,cat.jpg;
GET http://localhost:8000/compressed/brotli_identity
[Options]
compressed: true
HTTP 200
Content-Length: 17
Content-Encoding: br, identity
Content-Type: text/html; charset=utf-8
[Asserts]
body startsWith "Hello"
bytes startsWith hex,48656c6c6f;
sha256 == hex,7f83b1657ff1fc53b92dc18148a1d65dfc2d4b1fa3d677284addd200126d9069;
md5 == hex,ed076287532e86365e841e92bfc50d8c;
```Hello World!```

File diff suppressed because one or more lines are too long

View File

@ -1,14 +0,0 @@
<pre><code class="language-hurl"><span class="hurl-entry"><span class="request"><span class="line"><span class="method">GET</span> <span class="url">http://foo.com/connect-to</span></span>
</span><span class="response"><span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
<span class="line"><span class="string">`Hello World!`</span></span>
</span></span><span class="hurl-entry"><span class="request"><span class="line"></span>
<span class="line"></span>
<span class="line"><span class="method">GET</span> <span class="url">http://bar.com/connect-to</span></span>
</span><span class="response"><span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
<span class="line"><span class="string">`Hello World!`</span></span>
</span></span><span class="hurl-entry"><span class="request"><span class="line"></span>
<span class="line"></span>
<span class="line"><span class="method">GET</span> <span class="url">http://baz.com/connect-to</span></span>
</span><span class="response"><span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
<span class="line"><span class="string">`Hello World!`</span></span>
</span></span></code></pre>

View File

@ -1,13 +0,0 @@
GET http://foo.com/connect-to
HTTP 200
`Hello World!`
GET http://bar.com/connect-to
HTTP 200
`Hello World!`
GET http://baz.com/connect-to
HTTP 200
`Hello World!`

View File

@ -1 +0,0 @@
{"entries":[{"request":{"method":"GET","url":"http://foo.com/connect-to"},"response":{"status":200,"body":{"type":"text","value":"Hello World!"}}},{"request":{"method":"GET","url":"http://bar.com/connect-to"},"response":{"status":200,"body":{"type":"text","value":"Hello World!"}}},{"request":{"method":"GET","url":"http://baz.com/connect-to"},"response":{"status":200,"body":{"type":"text","value":"Hello World!"}}}]}

View File

@ -1,25 +0,0 @@
<pre><code class="language-hurl"><span class="hurl-entry"><span class="request"><span class="line"><span class="method">GET</span> <span class="url">http://foo.com/connect-to</span></span>
<span class="line"><span class="section-header">[Options]</span></span>
<span class="line"><span class="string">connect-to</span>: <span class="string">foo.com:80:localhost:8000</span></span>
</span><span class="response"><span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
<span class="line"><span class="string">`Hello World!`</span></span>
</span></span><span class="hurl-entry"><span class="request"><span class="line"></span>
<span class="line"></span>
<span class="line"><span class="method">GET</span> <span class="url">http://bar.com/connect-to</span></span>
<span class="line"><span class="section-header">[Options]</span></span>
<span class="line"></span><span class="comment"># We test that we can define multiple connect-to options.</span>
<span class="line"><span class="string">connect-to</span>: <span class="string">foo.com:80:localhost:8000</span></span>
<span class="line"><span class="string">connect-to</span>: <span class="string">bar.com:80:localhost:8000</span></span>
<span class="line"><span class="string">connect-to</span>: <span class="string">baz.com:80:localhost:8000</span></span>
</span><span class="response"><span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
<span class="line"><span class="string">`Hello World!`</span></span>
</span></span><span class="hurl-entry"><span class="request"><span class="line"></span>
<span class="line"></span>
<span class="line"><span class="method">GET</span> <span class="url">http://baz.com/connect-to</span></span>
<span class="line"><span class="section-header">[Options]</span></span>
<span class="line"><span class="string">connect-to</span>: <span class="string">foo.com:80:localhost:8000</span></span>
<span class="line"><span class="string">connect-to</span>: <span class="string">bar.com:80:localhost:8000</span></span>
<span class="line"><span class="string">connect-to</span>: <span class="string">baz.com:80:localhost:8000</span></span>
</span><span class="response"><span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
<span class="line"><span class="string">`Hello World!`</span></span>
</span></span></code></pre>

View File

@ -1,24 +0,0 @@
GET http://foo.com/connect-to
[Options]
connect-to: foo.com:80:localhost:8000
HTTP 200
`Hello World!`
GET http://bar.com/connect-to
[Options]
# We test that we can define multiple connect-to options.
connect-to: foo.com:80:localhost:8000
connect-to: bar.com:80:localhost:8000
connect-to: baz.com:80:localhost:8000
HTTP 200
`Hello World!`
GET http://baz.com/connect-to
[Options]
connect-to: foo.com:80:localhost:8000
connect-to: bar.com:80:localhost:8000
connect-to: baz.com:80:localhost:8000
HTTP 200
`Hello World!`

View File

@ -1 +0,0 @@
{"entries":[{"request":{"method":"GET","url":"http://foo.com/connect-to","options":[{"name":"connect-to","value":"foo.com:80:localhost:8000"}]},"response":{"status":200,"body":{"type":"text","value":"Hello World!"}}},{"request":{"method":"GET","url":"http://bar.com/connect-to","options":[{"name":"connect-to","value":"foo.com:80:localhost:8000"},{"name":"connect-to","value":"bar.com:80:localhost:8000"},{"name":"connect-to","value":"baz.com:80:localhost:8000"}]},"response":{"status":200,"body":{"type":"text","value":"Hello World!"}}},{"request":{"method":"GET","url":"http://baz.com/connect-to","options":[{"name":"connect-to","value":"foo.com:80:localhost:8000"},{"name":"connect-to","value":"bar.com:80:localhost:8000"},{"name":"connect-to","value":"baz.com:80:localhost:8000"}]},"response":{"status":200,"body":{"type":"text","value":"Hello World!"}}}]}

View File

@ -1,3 +0,0 @@
<pre><code class="language-hurl"><span class="hurl-entry"><span class="request"><span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/cookie_file</span></span>
</span><span class="response"><span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
</span></span></code></pre>

View File

@ -1,2 +0,0 @@
GET http://localhost:8000/cookie_file
HTTP 200

View File

@ -1 +0,0 @@
{"entries":[{"request":{"method":"GET","url":"http://localhost:8000/cookie_file"},"response":{"status":200}}]}

View File

@ -1,23 +0,0 @@
<pre><code class="language-hurl"><span class="hurl-entry"><span class="request"><span class="line"></span><span class="comment"># We test the [`--cookie-jar`](https://hurl.dev/docs/manual.html#cookie-jar) option</span>
<span class="line"></span><span class="comment"># that dumps the cookie storage to a file. Due to various support level among</span>
<span class="line"></span><span class="comment"># libcurl implementation for cookie secure export, we limit this test to non secure cookie.</span>
<span class="line"></span>
<span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/cookie-jar</span></span>
</span><span class="response"><span class="line"></span>
<span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
<span class="line"><span class="string">Set-Cookie</span>: <span class="string">LSID=DQAAAKEaem_vYg; Expires=Thu, 13 Jan 2078 22:23:01 GMT; HttpOnly; Path=/accounts</span></span>
<span class="line"><span class="string">Set-Cookie</span>: <span class="string">HSID=AYQEVnDKrdst; Domain=localhost; Expires=Thu, 13 Jan 2078 22:23:01 GMT; HttpOnly; Path=/</span></span>
<span class="line"><span class="string">Set-Cookie</span>: <span class="string">SSID=Ap4PGTEq; Domain=localhost; Expires=Thu, 13 Jan 2078 22:23:01 GMT; HttpOnly; Path=/</span></span>
<span class="line"><span class="section-header">[Asserts]</span></span>
<span class="line"><span class="query-type">header</span> <span class="string">"Set-Cookie"</span> <span class="filter-type">count</span> <span class="predicate-type">==</span> <span class="number">3</span></span>
<span class="line"><span class="query-type">cookie</span> <span class="string">"LSID"</span> <span class="predicate-type">==</span> <span class="string">"DQAAAKEaem_vYg"</span></span>
<span class="line"><span class="query-type">cookie</span> <span class="string">"LSID[Value]"</span> <span class="predicate-type">==</span> <span class="string">"DQAAAKEaem_vYg"</span></span>
<span class="line"><span class="query-type">cookie</span> <span class="string">"LSID[Expires]"</span> <span class="predicate-type">exists</span></span>
<span class="line"><span class="query-type">cookie</span> <span class="string">"LSID[Expires]"</span> <span class="filter-type">format</span> <span class="string">"%a, %d %b %Y %H:%M:%S"</span> <span class="predicate-type">==</span> <span class="string">"Thu, 13 Jan 2078 22:23:01"</span></span>
<span class="line"><span class="query-type">cookie</span> <span class="string">"LSID[Max-Age]"</span> <span class="not">not</span> <span class="predicate-type">exists</span></span>
<span class="line"><span class="query-type">cookie</span> <span class="string">"LSID[Domain]"</span> <span class="not">not</span> <span class="predicate-type">exists</span></span>
<span class="line"><span class="query-type">cookie</span> <span class="string">"LSID[Path]"</span> <span class="predicate-type">==</span> <span class="string">"/accounts"</span></span>
<span class="line"><span class="query-type">cookie</span> <span class="string">"LSID[Secure]"</span> <span class="not">not</span> <span class="predicate-type">exists</span></span>
<span class="line"><span class="query-type">cookie</span> <span class="string">"LSID[HttpOnly]"</span> <span class="predicate-type">exists</span></span>
<span class="line"><span class="query-type">cookie</span> <span class="string">"LSID[SameSite]"</span> <span class="not">not</span> <span class="predicate-type">exists</span></span>
</span></span></code></pre>

View File

@ -1,22 +0,0 @@
# We test the [`--cookie-jar`](https://hurl.dev/docs/manual.html#cookie-jar) option
# that dumps the cookie storage to a file. Due to various support level among
# libcurl implementation for cookie secure export, we limit this test to non secure cookie.
GET http://localhost:8000/cookie-jar
HTTP 200
Set-Cookie: LSID=DQAAAKEaem_vYg; Expires=Thu, 13 Jan 2078 22:23:01 GMT; HttpOnly; Path=/accounts
Set-Cookie: HSID=AYQEVnDKrdst; Domain=localhost; Expires=Thu, 13 Jan 2078 22:23:01 GMT; HttpOnly; Path=/
Set-Cookie: SSID=Ap4PGTEq; Domain=localhost; Expires=Thu, 13 Jan 2078 22:23:01 GMT; HttpOnly; Path=/
[Asserts]
header "Set-Cookie" count == 3
cookie "LSID" == "DQAAAKEaem_vYg"
cookie "LSID[Value]" == "DQAAAKEaem_vYg"
cookie "LSID[Expires]" exists
cookie "LSID[Expires]" format "%a, %d %b %Y %H:%M:%S" == "Thu, 13 Jan 2078 22:23:01"
cookie "LSID[Max-Age]" not exists
cookie "LSID[Domain]" not exists
cookie "LSID[Path]" == "/accounts"
cookie "LSID[Secure]" not exists
cookie "LSID[HttpOnly]" exists
cookie "LSID[SameSite]" not exists

View File

@ -1 +0,0 @@
{"entries":[{"request":{"method":"GET","url":"http://localhost:8000/cookie-jar"},"response":{"status":200,"headers":[{"name":"Set-Cookie","value":"LSID=DQAAAKEaem_vYg; Expires=Thu, 13 Jan 2078 22:23:01 GMT; HttpOnly; Path=/accounts"},{"name":"Set-Cookie","value":"HSID=AYQEVnDKrdst; Domain=localhost; Expires=Thu, 13 Jan 2078 22:23:01 GMT; HttpOnly; Path=/"},{"name":"Set-Cookie","value":"SSID=Ap4PGTEq; Domain=localhost; Expires=Thu, 13 Jan 2078 22:23:01 GMT; HttpOnly; Path=/"}],"asserts":[{"query":{"type":"header","name":"Set-Cookie"},"filters":[{"type":"count"}],"predicate":{"type":"equal","value":3}},{"query":{"type":"cookie","expr":"LSID"},"predicate":{"type":"equal","value":"DQAAAKEaem_vYg"}},{"query":{"type":"cookie","expr":"LSID[Value]"},"predicate":{"type":"equal","value":"DQAAAKEaem_vYg"}},{"query":{"type":"cookie","expr":"LSID[Expires]"},"predicate":{"type":"exist"}},{"query":{"type":"cookie","expr":"LSID[Expires]"},"filters":[{"type":"format","fmt":"%a, %d %b %Y %H:%M:%S"}],"predicate":{"type":"equal","value":"Thu, 13 Jan 2078 22:23:01"}},{"query":{"type":"cookie","expr":"LSID[Max-Age]"},"predicate":{"not":true,"type":"exist"}},{"query":{"type":"cookie","expr":"LSID[Domain]"},"predicate":{"not":true,"type":"exist"}},{"query":{"type":"cookie","expr":"LSID[Path]"},"predicate":{"type":"equal","value":"/accounts"}},{"query":{"type":"cookie","expr":"LSID[Secure]"},"predicate":{"not":true,"type":"exist"}},{"query":{"type":"cookie","expr":"LSID[HttpOnly]"},"predicate":{"type":"exist"}},{"query":{"type":"cookie","expr":"LSID[SameSite]"},"predicate":{"not":true,"type":"exist"}}]}}]}

View File

@ -1,15 +0,0 @@
<pre><code class="language-hurl"><span class="hurl-entry"><span class="request"><span class="line"></span><span class="comment">#</span>
<span class="line"></span><span class="comment"># experimental feature</span>
<span class="line"></span><span class="comment"># manage cookie store</span>
<span class="line"></span><span class="comment">#</span>
<span class="line"></span>
<span class="line"></span><span class="comment"># @cookie_storage_set: localhost FALSE / FALSE 0 cookie1 valueA</span>
<span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/cookie-storage/assert-that-cookie1-is-valueA</span></span>
</span><span class="response"><span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
</span></span><span class="hurl-entry"><span class="request"><span class="line"></span>
<span class="line"></span><span class="comment"># @cookie_storage_clear</span>
<span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/cookie-storage/assert-that-cookie1-is-not-in-session</span></span>
</span><span class="response"><span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
</span></span><span class="line"></span>
<span class="line"></span>
</code></pre>

View File

@ -1,14 +0,0 @@
#
# experimental feature
# manage cookie store
#
# @cookie_storage_set: localhost FALSE / FALSE 0 cookie1 valueA
GET http://localhost:8000/cookie-storage/assert-that-cookie1-is-valueA
HTTP 200
# @cookie_storage_clear
GET http://localhost:8000/cookie-storage/assert-that-cookie1-is-not-in-session
HTTP 200

View File

@ -1 +0,0 @@
{"entries":[{"request":{"method":"GET","url":"http://localhost:8000/cookie-storage/assert-that-cookie1-is-valueA"},"response":{"status":200}},{"request":{"method":"GET","url":"http://localhost:8000/cookie-storage/assert-that-cookie1-is-not-in-session"},"response":{"status":200}}]}

View File

@ -1,66 +0,0 @@
<pre><code class="language-hurl"><span class="hurl-entry"><span class="request"><span class="line"></span><span class="comment"># Request Cookie</span>
<span class="line"></span>
<span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/cookies/set-request-cookie1-valueA</span></span>
<span class="line"><span class="section-header">[Cookies]</span></span>
<span class="line"><span class="string">cookie1</span>: <span class="string">valueA</span></span>
</span><span class="response"><span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
</span></span><span class="hurl-entry"><span class="request"><span class="line"></span>
<span class="line"></span><span class="comment"># The cookie is not added in the cookie storage</span>
<span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/cookies/assert-that-cookie1-is-not-in-session</span></span>
</span><span class="response"><span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
</span></span><span class="hurl-entry"><span class="request"><span class="line"></span>
<span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/cookies/set-multiple-request-cookies</span></span>
<span class="line"><span class="section-header">[Cookies]</span></span>
<span class="line"><span class="string">user1</span>: <span class="string">Bob</span></span>
<span class="line"><span class="string">user2</span>: <span class="string">Bill</span></span>
<span class="line"><span class="string">user3</span>: <span class="string">{{name}}</span></span>
</span><span class="response"><span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
</span></span><span class="hurl-entry"><span class="request"><span class="line"></span>
<span class="line"></span>
<span class="line"></span><span class="comment"># Session Cookie</span>
<span class="line"></span>
<span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/cookies/set-session-cookie2-valueA</span></span>
</span><span class="response"><span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
<span class="line"><span class="section-header">[Asserts]</span></span>
<span class="line"><span class="query-type">cookie</span> <span class="string">"cookie2"</span> <span class="predicate-type">==</span> <span class="string">"valueA"</span></span>
</span></span><span class="hurl-entry"><span class="request"><span class="line"></span>
<span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/cookies/assert-that-cookie2-is-valueA</span></span>
</span><span class="response"><span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
</span></span><span class="hurl-entry"><span class="request"><span class="line"></span>
<span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/cookies/assert-that-cookie2-is-valueA-and-valueB</span></span>
<span class="line"><span class="section-header">[Cookies]</span></span>
<span class="line"><span class="string">cookie2</span>: <span class="string">valueB</span></span>
</span><span class="response"><span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
</span></span><span class="hurl-entry"><span class="request"><span class="line"></span>
<span class="line"></span>
<span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/cookies/delete-cookie2</span></span>
</span><span class="response"><span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
<span class="line"><span class="section-header">[Asserts]</span></span>
<span class="line"><span class="query-type">cookie</span> <span class="string">"cookie2"</span> <span class="predicate-type">==</span> <span class="string">""</span></span>
<span class="line"><span class="query-type">cookie</span> <span class="string">"cookie2[Max-Age]"</span> <span class="predicate-type">==</span> <span class="number">0</span></span>
</span></span><span class="hurl-entry"><span class="request"><span class="line"></span>
<span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/cookies/assert-that-cookie2-is-not-in-session</span></span>
</span><span class="response"><span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
</span></span><span class="hurl-entry"><span class="request"><span class="line"></span>
<span class="line"></span>
<span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/cookies/set</span></span>
</span><span class="response"><span class="line"></span>
<span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
<span class="line"><span class="string">Set-Cookie</span>: <span class="string">LSID=DQAAAKEaem_vYg; Expires=Wed, 13 Jan 2021 22:23:01 GMT; Secure; HttpOnly; Path=/accounts</span></span>
<span class="line"><span class="string">Set-Cookie</span>: <span class="string">HSID=AYQEVnDKrdst; Domain=localhost; Expires=Wed, 13 Jan 2021 22:23:01 GMT; HttpOnly; Path=/</span></span>
<span class="line"><span class="string">Set-Cookie</span>: <span class="string">SSID=Ap4PGTEq; Domain=localhost; Expires=Wed, 13 Jan 2021 22:23:01 GMT; Secure; HttpOnly; Path=/</span></span>
<span class="line"><span class="section-header">[Asserts]</span></span>
<span class="line"><span class="query-type">header</span> <span class="string">"Set-Cookie"</span> <span class="filter-type">count</span> <span class="predicate-type">==</span> <span class="number">3</span></span>
<span class="line"><span class="query-type">cookie</span> <span class="string">"LSID"</span> <span class="predicate-type">==</span> <span class="string">"DQAAAKEaem_vYg"</span></span>
<span class="line"><span class="query-type">cookie</span> <span class="string">"LSID[Value]"</span> <span class="predicate-type">==</span> <span class="string">"DQAAAKEaem_vYg"</span></span>
<span class="line"><span class="query-type">cookie</span> <span class="string">"LSID[Expires]"</span> <span class="predicate-type">exists</span></span>
<span class="line"><span class="query-type">cookie</span> <span class="string">"LSID[Expires]"</span> <span class="filter-type">format</span> <span class="string">"%a, %d %b %Y %H:%M:%S"</span> <span class="predicate-type">==</span> <span class="string">"Wed, 13 Jan 2021 22:23:01"</span></span>
<span class="line"><span class="query-type">cookie</span> <span class="string">"LSID[Max-Age]"</span> <span class="not">not</span> <span class="predicate-type">exists</span></span>
<span class="line"><span class="query-type">cookie</span> <span class="string">"LSID[Domain]"</span> <span class="not">not</span> <span class="predicate-type">exists</span></span>
<span class="line"><span class="query-type">cookie</span> <span class="string">"LSID[Path]"</span> <span class="predicate-type">==</span> <span class="string">"/accounts"</span></span>
<span class="line"><span class="query-type">cookie</span> <span class="string">"LSID[Secure]"</span> <span class="predicate-type">exists</span></span>
<span class="line"><span class="query-type">cookie</span> <span class="string">"LSID[HttpOnly]"</span> <span class="predicate-type">exists</span></span>
<span class="line"><span class="query-type">cookie</span> <span class="string">"LSID[SameSite]"</span> <span class="not">not</span> <span class="predicate-type">exists</span></span>
</span></span><span class="line"></span>
<span class="line"></span>
</code></pre>

View File

@ -1,65 +0,0 @@
# Request Cookie
GET http://localhost:8000/cookies/set-request-cookie1-valueA
[Cookies]
cookie1: valueA
HTTP 200
# The cookie is not added in the cookie storage
GET http://localhost:8000/cookies/assert-that-cookie1-is-not-in-session
HTTP 200
GET http://localhost:8000/cookies/set-multiple-request-cookies
[Cookies]
user1: Bob
user2: Bill
user3: {{name}}
HTTP 200
# Session Cookie
GET http://localhost:8000/cookies/set-session-cookie2-valueA
HTTP 200
[Asserts]
cookie "cookie2" == "valueA"
GET http://localhost:8000/cookies/assert-that-cookie2-is-valueA
HTTP 200
GET http://localhost:8000/cookies/assert-that-cookie2-is-valueA-and-valueB
[Cookies]
cookie2: valueB
HTTP 200
GET http://localhost:8000/cookies/delete-cookie2
HTTP 200
[Asserts]
cookie "cookie2" == ""
cookie "cookie2[Max-Age]" == 0
GET http://localhost:8000/cookies/assert-that-cookie2-is-not-in-session
HTTP 200
GET http://localhost:8000/cookies/set
HTTP 200
Set-Cookie: LSID=DQAAAKEaem_vYg; Expires=Wed, 13 Jan 2021 22:23:01 GMT; Secure; HttpOnly; Path=/accounts
Set-Cookie: HSID=AYQEVnDKrdst; Domain=localhost; Expires=Wed, 13 Jan 2021 22:23:01 GMT; HttpOnly; Path=/
Set-Cookie: SSID=Ap4PGTEq; Domain=localhost; Expires=Wed, 13 Jan 2021 22:23:01 GMT; Secure; HttpOnly; Path=/
[Asserts]
header "Set-Cookie" count == 3
cookie "LSID" == "DQAAAKEaem_vYg"
cookie "LSID[Value]" == "DQAAAKEaem_vYg"
cookie "LSID[Expires]" exists
cookie "LSID[Expires]" format "%a, %d %b %Y %H:%M:%S" == "Wed, 13 Jan 2021 22:23:01"
cookie "LSID[Max-Age]" not exists
cookie "LSID[Domain]" not exists
cookie "LSID[Path]" == "/accounts"
cookie "LSID[Secure]" exists
cookie "LSID[HttpOnly]" exists
cookie "LSID[SameSite]" not exists

View File

@ -1 +0,0 @@
{"entries":[{"request":{"method":"GET","url":"http://localhost:8000/cookies/set-request-cookie1-valueA","cookies":[{"name":"cookie1","value":"valueA"}]},"response":{"status":200}},{"request":{"method":"GET","url":"http://localhost:8000/cookies/assert-that-cookie1-is-not-in-session"},"response":{"status":200}},{"request":{"method":"GET","url":"http://localhost:8000/cookies/set-multiple-request-cookies","cookies":[{"name":"user1","value":"Bob"},{"name":"user2","value":"Bill"},{"name":"user3","value":"{{name}}"}]},"response":{"status":200}},{"request":{"method":"GET","url":"http://localhost:8000/cookies/set-session-cookie2-valueA"},"response":{"status":200,"asserts":[{"query":{"type":"cookie","expr":"cookie2"},"predicate":{"type":"equal","value":"valueA"}}]}},{"request":{"method":"GET","url":"http://localhost:8000/cookies/assert-that-cookie2-is-valueA"},"response":{"status":200}},{"request":{"method":"GET","url":"http://localhost:8000/cookies/assert-that-cookie2-is-valueA-and-valueB","cookies":[{"name":"cookie2","value":"valueB"}]},"response":{"status":200}},{"request":{"method":"GET","url":"http://localhost:8000/cookies/delete-cookie2"},"response":{"status":200,"asserts":[{"query":{"type":"cookie","expr":"cookie2"},"predicate":{"type":"equal","value":""}},{"query":{"type":"cookie","expr":"cookie2[Max-Age]"},"predicate":{"type":"equal","value":0}}]}},{"request":{"method":"GET","url":"http://localhost:8000/cookies/assert-that-cookie2-is-not-in-session"},"response":{"status":200}},{"request":{"method":"GET","url":"http://localhost:8000/cookies/set"},"response":{"status":200,"headers":[{"name":"Set-Cookie","value":"LSID=DQAAAKEaem_vYg; Expires=Wed, 13 Jan 2021 22:23:01 GMT; Secure; HttpOnly; Path=/accounts"},{"name":"Set-Cookie","value":"HSID=AYQEVnDKrdst; Domain=localhost; Expires=Wed, 13 Jan 2021 22:23:01 GMT; HttpOnly; Path=/"},{"name":"Set-Cookie","value":"SSID=Ap4PGTEq; Domain=localhost; Expires=Wed, 13 Jan 2021 22:23:01 GMT; Secure; HttpOnly; Path=/"}],"asserts":[{"query":{"type":"header","name":"Set-Cookie"},"filters":[{"type":"count"}],"predicate":{"type":"equal","value":3}},{"query":{"type":"cookie","expr":"LSID"},"predicate":{"type":"equal","value":"DQAAAKEaem_vYg"}},{"query":{"type":"cookie","expr":"LSID[Value]"},"predicate":{"type":"equal","value":"DQAAAKEaem_vYg"}},{"query":{"type":"cookie","expr":"LSID[Expires]"},"predicate":{"type":"exist"}},{"query":{"type":"cookie","expr":"LSID[Expires]"},"filters":[{"type":"format","fmt":"%a, %d %b %Y %H:%M:%S"}],"predicate":{"type":"equal","value":"Wed, 13 Jan 2021 22:23:01"}},{"query":{"type":"cookie","expr":"LSID[Max-Age]"},"predicate":{"not":true,"type":"exist"}},{"query":{"type":"cookie","expr":"LSID[Domain]"},"predicate":{"not":true,"type":"exist"}},{"query":{"type":"cookie","expr":"LSID[Path]"},"predicate":{"type":"equal","value":"/accounts"}},{"query":{"type":"cookie","expr":"LSID[Secure]"},"predicate":{"type":"exist"}},{"query":{"type":"cookie","expr":"LSID[HttpOnly]"},"predicate":{"type":"exist"}},{"query":{"type":"cookie","expr":"LSID[SameSite]"},"predicate":{"not":true,"type":"exist"}}]}}]}

View File

@ -1,56 +0,0 @@
<!DOCTYPE html>
<html><head><title>Hurl File</title><style>
dy {
counter-reset: line;
font-family: monospace;
}
span.line {
display: block;
line-height: 1.2rem;
}
span.line:before {
counter-increment: line;
content: counter(line);
display: inline-block;
border-right: 1px solid #ddd;
padding: 0 1em;
margin-right: .5em;
color: #888;
width: 2.5em;
text-align: right;
}
.method {
color: black;
}
.version {
color: black;
}
.section-header {
color: darkmagenta;
}
.query-type {
color: teal;
}
.predicate-type {
color: darkblue;
}
.string {
color: darkgreen;
}
.comment {
color: dimgray;
}
</style></head><body>
<div class="hurl-file"><div class="hurl-entry"><div class="request"><span class="line"><span class="method">GET</span> <span class="string">http://localhost:8000/default-headers</span></span></div><div class="response"><span class="line"><span class="version">HTTP</span> <span class="status">200</span></span></div></div><div class="hurl-entry"><div class="request"><span class="line"></span><span class="line"><span class="method">GET</span> <span class="string">http://localhost:8000/default-headers</span></span></div><span class="line"><span class="string">"User-Agent"</span>: <span class="string">hurl/1.0</span></span><span class="line"><span class="string">"Host"</span>: <span class="string">localhost</span> <span class="comment"># comment</span></span><span class="line"><span class="string">"Content-Length"</span>: <span class="string">0</span></span><div class="response"><span class="line"><span class="version">HTTP</span> <span class="status">200</span></span></div></div></div>
</body></html>

View File

@ -1,11 +0,0 @@
# First, start a timer
GET http://localhost:8000/delay-init
HTTP 200
# This request must reach the server at least 1000ms after the previous request
GET http://localhost:8000/delay
HTTP 200
# This request must reach the server at least 1000ms after the previous request
GET http://localhost:8000/delay
HTTP 200

View File

@ -1,9 +0,0 @@
# First, start a timer
GET http://localhost:8000/delay-init
HTTP 200
# This request must reach the server at least 1000ms after the first request
GET http://localhost:8000/delay
[Options]
delay: 1000
HTTP 200

View File

@ -1,4 +0,0 @@
<pre><code class="language-hurl"><span class="hurl-entry"><span class="request"><span class="line"><span class="method">DELETE</span> <span class="url">http://localhost:8000/delete</span></span>
</span><span class="response"><span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
</span></span><span class="line"></span>
</code></pre>

View File

@ -1,3 +0,0 @@
DELETE http://localhost:8000/delete
HTTP 200

View File

@ -1 +0,0 @@
{"entries":[{"request":{"method":"DELETE","url":"http://localhost:8000/delete"},"response":{"status":200}}]}

View File

@ -1,9 +0,0 @@
<pre><code class="language-hurl"><span class="hurl-entry"><span class="request"><span class="line"></span><span class="comment"># HTTP/* is deprecated, use HTTP instead</span>
<span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/hello</span></span>
</span><span class="response"><span class="line"><span class="version">HTTP/*</span> <span class="number">200</span></span>
</span></span><span class="hurl-entry"><span class="request"><span class="line"></span>
<span class="line"></span><span class="comment"># ```Hello World!``` is deprecated, use `Hello World!` instead</span>
<span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/hello</span></span>
</span><span class="response"><span class="line"><span class="version">HTTP/*</span> <span class="number">200</span></span>
<span class="multiline"><span class="line">```Hello World!```</span></span>
</span></span></code></pre>

View File

@ -1,8 +0,0 @@
# HTTP/* is deprecated, use HTTP instead
GET http://localhost:8000/hello
HTTP/* 200
# ```Hello World!``` is deprecated, use `Hello World!` instead
GET http://localhost:8000/hello
HTTP/* 200
```Hello World!```

View File

@ -1 +0,0 @@
{"entries":[{"request":{"method":"GET","url":"http://localhost:8000/hello"},"response":{"status":200}},{"request":{"method":"GET","url":"http://localhost:8000/hello"},"response":{"status":200,"body":{"type":"text","value":"Hello World!"}}}]}

View File

@ -1,11 +0,0 @@
<pre><code class="language-hurl"><span class="hurl-entry"><span class="request"><span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/hello</span></span>
<span class="line"><span class="section-header">[QueryStringParams]</span></span>
<span class="line"></span><span class="comment"># FIXME: [BasicAuth] section can't be empty</span>
<span class="line"></span><span class="comment">#[BasicAuth]</span>
<span class="line"><span class="section-header">[FormParams]</span></span>
<span class="line"><span class="section-header">[MultipartFormData]</span></span>
<span class="line"><span class="section-header">[Cookies]</span></span>
<span class="line"><span class="section-header">[Options]</span></span>
</span><span class="response"><span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
<span class="line"><span class="string">`Hello World!`</span></span>
</span></span></code></pre>

View File

@ -1,10 +0,0 @@
GET http://localhost:8000/hello
[QueryStringParams]
# FIXME: [BasicAuth] section can't be empty
#[BasicAuth]
[FormParams]
[MultipartFormData]
[Cookies]
[Options]
HTTP 200
`Hello World!`

View File

@ -1 +0,0 @@
{"entries":[{"request":{"method":"GET","url":"http://localhost:8000/hello"},"response":{"status":200,"body":{"type":"text","value":"Hello World!"}}}]}

View File

@ -1,15 +0,0 @@
<pre><code class="language-hurl"><span class="hurl-entry"><span class="request"><span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/encoding/utf8</span></span>
</span><span class="response"><span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
<span class="line"><span class="string">Content-Type</span>: <span class="string">text/html; charset=utf-8</span></span>
<span class="line"><span class="section-header">[Asserts]</span></span>
<span class="line"><span class="query-type">body</span> <span class="predicate-type">==</span> <span class="string">"caf\u{e9}"</span></span>
</span></span><span class="hurl-entry"><span class="request"><span class="line"></span>
<span class="line"></span>
<span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/encoding/latin1</span></span>
</span><span class="response"><span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
<span class="line"><span class="string">Content-Type</span>: <span class="string">text/html; charset=ISO-8859-1</span></span>
<span class="line"><span class="section-header">[Asserts]</span></span>
<span class="line"><span class="query-type">body</span> <span class="predicate-type">==</span> <span class="string">"caf\u{e9}"</span></span>
</span></span><span class="line"></span>
<span class="line"></span>
</code></pre>

View File

@ -1,14 +0,0 @@
GET http://localhost:8000/encoding/utf8
HTTP 200
Content-Type: text/html; charset=utf-8
[Asserts]
body == "caf\u{e9}"
GET http://localhost:8000/encoding/latin1
HTTP 200
Content-Type: text/html; charset=ISO-8859-1
[Asserts]
body == "caf\u{e9}"

View File

@ -1 +0,0 @@
{"entries":[{"request":{"method":"GET","url":"http://localhost:8000/encoding/utf8"},"response":{"status":200,"headers":[{"name":"Content-Type","value":"text/html; charset=utf-8"}],"asserts":[{"query":{"type":"body"},"predicate":{"type":"equal","value":"café"}}]}},{"request":{"method":"GET","url":"http://localhost:8000/encoding/latin1"},"response":{"status":200,"headers":[{"name":"Content-Type","value":"text/html; charset=ISO-8859-1"}],"asserts":[{"query":{"type":"body"},"predicate":{"type":"equal","value":"café"}}]}}]}

View File

@ -1,6 +0,0 @@
<pre><code class="language-hurl"><span class="hurl-entry"><span class="request"><span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/env-var</span></span>
<span class="line"><span class="section-header">[QueryStringParams]</span></span>
<span class="line"><span class="string">name</span>: <span class="string">{{name}}</span></span>
</span><span class="response"><span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
</span></span><span class="line"></span>
</code></pre>

View File

@ -1,5 +0,0 @@
GET http://localhost:8000/env-var
[QueryStringParams]
name: {{name}}
HTTP 200

View File

@ -1 +0,0 @@
{"entries":[{"request":{"method":"GET","url":"http://localhost:8000/env-var","query_string_params":[{"name":"name","value":"{{name}}"}]},"response":{"status":200}}]}

View File

@ -1,9 +0,0 @@
<pre><code class="language-hurl"><span class="hurl-entry"><span class="request"><span class="line"><span class="method">POST</span> <span class="url">http://localhost:8000/expect</span></span>
<span class="line"><span class="string">Expect</span>: <span class="string">100-continue</span></span>
<span class="line"><span class="string">`data`</span></span>
</span><span class="response"><span class="line"></span>
<span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
</span></span><span class="line"></span>
<span class="line"></span>
<span class="line"></span>
</code></pre>

View File

@ -1,8 +0,0 @@
POST http://localhost:8000/expect
Expect: 100-continue
`data`
HTTP 200

View File

@ -1 +0,0 @@
{"entries":[{"request":{"method":"POST","url":"http://localhost:8000/expect","headers":[{"name":"Expect","value":"100-continue"}],"body":{"type":"text","value":"data"}},"response":{"status":200}}]}

View File

@ -1,44 +1,24 @@
<pre><code class="language-hurl"><span class="hurl-entry"><span class="request"><span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/filter</span></span>
<pre><code class="language-hurl"><span class="hurl-entry"><span class="request"><span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/dummy</span></span>
</span><span class="response"><span class="line"></span>
<span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
<span class="line"><span class="section-header">[Captures]</span></span>
<span class="line"><span class="string">url</span>: <span class="query-type">jsonpath</span> <span class="string">"$.url"</span></span>
<span class="line"><span class="string">text</span>: <span class="query-type">jsonpath</span> <span class="string">"$.text"</span></span>
<span class="line"><span class="string">count</span>: <span class="query-type">jsonpath</span> <span class="string">"$.books"</span> <span class="filter-type">count</span></span>
<span class="line"><span class="section-header">[Asserts]</span></span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.list"</span> <span class="filter-type">count</span> <span class="predicate-type">==</span> <span class="number">3</span></span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.list"</span> <span class="filter-type">nth</span> <span class="number">1</span> <span class="predicate-type">==</span> <span class="number">2</span></span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.message"</span> <span class="filter-type">regex</span> <span class="regex">/Hello (.*)!/</span> <span class="predicate-type">==</span> <span class="string">"Bob"</span></span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.url"</span> <span class="predicate-type">==</span> <span class="string">"https://mozilla.org/?x=шеллы"</span></span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.url"</span> <span class="filter-type">urlEncode</span> <span class="predicate-type">==</span> <span class="string">"https%3A//mozilla.org/%3Fx%3D%D1%88%D0%B5%D0%BB%D0%BB%D1%8B"</span></span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.encoded_url"</span> <span class="filter-type">urlDecode</span> <span class="predicate-type">==</span> <span class="string">"https://mozilla.org/?x=шеллы"</span></span>
<span class="line"><span class="query-type">variable</span> <span class="string">"url"</span> <span class="filter-type">urlEncode</span> <span class="filter-type">urlDecode</span> <span class="predicate-type">==</span> <span class="string">"{{url}}"</span></span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.text"</span> <span class="predicate-type">==</span> <span class="string">"a &gt; b &amp;&amp; a &lt; c"</span></span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.text"</span> <span class="filter-type">htmlEscape</span> <span class="predicate-type">==</span> <span class="string">"a &amp;gt; b &amp;amp;&amp;amp; a &amp;lt; c"</span></span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.escaped_html[0]"</span> <span class="filter-type">htmlUnescape</span> <span class="predicate-type">==</span> <span class="string">"a &gt; b &amp;&amp; a &lt; c"</span></span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.escaped_html[1]"</span> <span class="filter-type">htmlUnescape</span> <span class="predicate-type">==</span> <span class="string">"Foo © bar 𝌆 baz ☃ qux"</span></span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.escaped_html[2]"</span> <span class="filter-type">htmlUnescape</span> <span class="predicate-type">==</span> <span class="string">"A foo"</span></span>
<span class="line"><span class="query-type">variable</span> <span class="string">"text"</span> <span class="filter-type">htmlEscape</span> <span class="filter-type">htmlUnescape</span> <span class="predicate-type">==</span> <span class="string">"{{text}}"</span></span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.id"</span> <span class="filter-type">toInt</span> <span class="predicate-type">==</span> <span class="number">123</span></span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.score"</span> <span class="filter-type">toInt</span> <span class="predicate-type">==</span> <span class="number">1</span></span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.ips"</span> <span class="filter-type">split</span> <span class="string">", "</span> <span class="filter-type">count</span> <span class="predicate-type">==</span> <span class="number">3</span></span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.ips"</span> <span class="filter-type">replace</span> <span class="string">", "</span> <span class="string">"|"</span> <span class="predicate-type">==</span> <span class="string">"192.168.2.1|10.0.0.20|10.0.0.10"</span></span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.json"</span> <span class="filter-type">jsonpath</span> <span class="string">"$.message"</span> <span class="predicate-type">==</span> <span class="string">"Hello"</span></span>
<span class="line"><span class="query-type">certificate</span> <span class="string">"Expire-Date"</span> <span class="filter-type">daysAfterNow</span> <span class="predicate-type">&gt;</span> <span class="number">15</span></span>
<span class="line"><span class="query-type">certificate</span> <span class="string">"Expire-Date"</span> <span class="filter-type">daysBeforeNow</span> <span class="predicate-type">&gt;</span> <span class="number">15</span></span>
<span class="json"><span class="line">{</span>
<span class="line"> "list": [1,2,3],</span>
<span class="line"> "message": "Hello Bob!",</span>
<span class="line"> "url": "https://mozilla.org/?x=шеллы",</span>
<span class="line"> "encoded_url": "https://mozilla.org/?x=%D1%88%D0%B5%D0%BB%D0%BB%D1%8B",</span>
<span class="line"> "text": "a &gt; b &amp;&amp; a &lt; c",</span>
<span class="line"> "escaped_html": [</span>
<span class="line"> "a &amp;gt; b &amp;amp;&amp;amp; a &amp;lt; c",</span>
<span class="line"> "Foo &amp;#xA9; bar &amp;#x1D306; baz &amp;#x2603; qux",</span>
<span class="line"> "&amp;#65 foo"</span>
<span class="line"> ],</span>
<span class="line"> "id": "123",</span>
<span class="line"> "score": 1.6,</span>
<span class="line"> "ips": "192.168.2.1, 10.0.0.20, 10.0.0.10",</span>
<span class="line"> "json": "{\"message\": \"Hello\"}"</span>
<span class="line">}</span></span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.books"</span> <span class="filter-type">count</span> <span class="predicate-type">==</span> <span class="number">12</span></span> <span class="comment"># count</span>
<span class="line"><span class="query-type">certificate</span> <span class="string">"Expire-Date"</span> <span class="filter-type">daysAfterNow</span> <span class="predicate-type">&gt;</span> <span class="number">15</span></span> <span class="comment"># daysAfterNow</span>
<span class="line"><span class="query-type">certificate</span> <span class="string">"Start-Date"</span> <span class="filter-type">daysBeforeNow</span> <span class="predicate-type">&lt;</span> <span class="number">100</span></span> <span class="comment"># daysBeforeNow</span>
<span class="line"><span class="query-type">bytes</span> <span class="filter-type">decode</span> <span class="string">"iso-8859-1"</span> <span class="predicate-type">==</span> <span class="string">"café"</span></span> <span class="comment"># decode</span>
<span class="line"><span class="query-type">cookie</span> <span class="string">"LSID[Expires]"</span> <span class="filter-type">format</span> <span class="string">"%a, %d %b %Y %H:%M:%S"</span> <span class="predicate-type">==</span> <span class="string">"Wed, 13 Jan 2021 22:23:01"</span></span> <span class="comment"># format</span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.text"</span> <span class="filter-type">htmlEscape</span> <span class="predicate-type">==</span> <span class="string">"a &amp;gt; b"</span></span> <span class="comment"># htmlEscape</span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.escaped_html[1]"</span> <span class="filter-type">htmlUnescape</span> <span class="predicate-type">==</span> <span class="string">"&lt;p&gt;Hello&lt;/p&gt;"</span></span> <span class="comment"># htmlUnescape</span>
<span class="line"><span class="query-type">variable</span> <span class="string">"books"</span> <span class="filter-type">jsonpath</span> <span class="string">"$[0].name"</span> <span class="predicate-type">==</span> <span class="string">"Dune"</span></span> <span class="comment"># jsonpath</span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.books"</span> <span class="filter-type">nth</span> <span class="number">2</span> <span class="predicate-type">==</span> <span class="string">"Children of Dune"</span></span> <span class="comment"># nth</span>
<span class="line"><span class="query-type">body</span> <span class="filter-type">regex</span> <span class="regex">/Hello ([0-9]+)!/</span> <span class="predicate-type">==</span> <span class="string">"Bob"</span></span> <span class="comment"># regex</span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.ips"</span> <span class="filter-type">replace</span> <span class="string">", "</span> <span class="string">"|"</span> <span class="predicate-type">==</span> <span class="string">"192.168.2.1|10.0.0.20|10.0.0.10"</span></span> <span class="comment"># replace</span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.ips"</span> <span class="filter-type">split</span> <span class="string">", "</span> <span class="filter-type">count</span> <span class="predicate-type">==</span> <span class="number">3</span></span> <span class="comment"># split</span>
<span class="line"><span class="query-type">header</span> <span class="string">"Expires"</span> <span class="filter-type">toDate</span> <span class="string">"%a, %d %b %Y %H:%M:%S GMT"</span> <span class="filter-type">daysBeforeNow</span> <span class="predicate-type">&gt;</span> <span class="number">1000</span></span> <span class="comment"># toDate</span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.id"</span> <span class="filter-type">toInt</span> <span class="predicate-type">==</span> <span class="number">123</span></span> <span class="comment"># toInt</span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.encoded_url"</span> <span class="filter-type">urlDecode</span> <span class="predicate-type">==</span> <span class="string">"https://mozilla.org/?x=шеллы"</span></span> <span class="comment"># urlDecode</span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.url"</span> <span class="filter-type">urlEncode</span> <span class="predicate-type">==</span> <span class="string">"https%3A//mozilla.org/%3Fx%3D%D1%88%D0%B5%D0%BB%D0%BB%D1%8B"</span></span> <span class="comment"># urlEncode</span>
<span class="line"><span class="query-type">bytes</span> <span class="filter-type">decode</span> <span class="string">"iso-8859-1"</span> <span class="filter-type">xpath</span> <span class="string">"string(//p)"</span> <span class="predicate-type">==</span> <span class="string">"Hello"</span></span> <span class="comment"># xpath</span>
</span></span></code></pre>

View File

@ -1,43 +1,23 @@
GET http://localhost:8000/filter
GET http://localhost:8000/dummy
HTTP 200
[Captures]
url: jsonpath "$.url"
text: jsonpath "$.text"
count: jsonpath "$.books" count
[Asserts]
jsonpath "$.list" count == 3
jsonpath "$.list" nth 1 == 2
jsonpath "$.message" regex /Hello (.*)!/ == "Bob"
jsonpath "$.url" == "https://mozilla.org/?x=шеллы"
jsonpath "$.url" urlEncode == "https%3A//mozilla.org/%3Fx%3D%D1%88%D0%B5%D0%BB%D0%BB%D1%8B"
jsonpath "$.encoded_url" urlDecode == "https://mozilla.org/?x=шеллы"
variable "url" urlEncode urlDecode == "{{url}}"
jsonpath "$.text" == "a > b && a < c"
jsonpath "$.text" htmlEscape == "a &gt; b &amp;&amp; a &lt; c"
jsonpath "$.escaped_html[0]" htmlUnescape == "a > b && a < c"
jsonpath "$.escaped_html[1]" htmlUnescape == "Foo © bar 𝌆 baz ☃ qux"
jsonpath "$.escaped_html[2]" htmlUnescape == "A foo"
variable "text" htmlEscape htmlUnescape == "{{text}}"
jsonpath "$.id" toInt == 123
jsonpath "$.score" toInt == 1
jsonpath "$.ips" split ", " count == 3
jsonpath "$.ips" replace ", " "|" == "192.168.2.1|10.0.0.20|10.0.0.10"
jsonpath "$.json" jsonpath "$.message" == "Hello"
certificate "Expire-Date" daysAfterNow > 15
certificate "Expire-Date" daysBeforeNow > 15
{
"list": [1,2,3],
"message": "Hello Bob!",
"url": "https://mozilla.org/?x=шеллы",
"encoded_url": "https://mozilla.org/?x=%D1%88%D0%B5%D0%BB%D0%BB%D1%8B",
"text": "a > b && a < c",
"escaped_html": [
"a &gt; b &amp;&amp; a &lt; c",
"Foo &#xA9; bar &#x1D306; baz &#x2603; qux",
"&#65 foo"
],
"id": "123",
"score": 1.6,
"ips": "192.168.2.1, 10.0.0.20, 10.0.0.10",
"json": "{\"message\": \"Hello\"}"
}
jsonpath "$.books" count == 12 # count
certificate "Expire-Date" daysAfterNow > 15 # daysAfterNow
certificate "Start-Date" daysBeforeNow < 100 # daysBeforeNow
bytes decode "iso-8859-1" == "café" # decode
cookie "LSID[Expires]" format "%a, %d %b %Y %H:%M:%S" == "Wed, 13 Jan 2021 22:23:01" # format
jsonpath "$.text" htmlEscape == "a &gt; b" # htmlEscape
jsonpath "$.escaped_html[1]" htmlUnescape == "<p>Hello</p>" # htmlUnescape
variable "books" jsonpath "$[0].name" == "Dune" # jsonpath
jsonpath "$.books" nth 2 == "Children of Dune" # nth
body regex /Hello ([0-9]+)!/ == "Bob" # regex
jsonpath "$.ips" replace ", " "|" == "192.168.2.1|10.0.0.20|10.0.0.10" # replace
jsonpath "$.ips" split ", " count == 3 # split
header "Expires" toDate "%a, %d %b %Y %H:%M:%S GMT" daysBeforeNow > 1000 # toDate
jsonpath "$.id" toInt == 123 # toInt
jsonpath "$.encoded_url" urlDecode == "https://mozilla.org/?x=шеллы" # urlDecode
jsonpath "$.url" urlEncode == "https%3A//mozilla.org/%3Fx%3D%D1%88%D0%B5%D0%BB%D0%BB%D1%8B" # urlEncode
bytes decode "iso-8859-1" xpath "string(//p)" == "Hello" # xpath

View File

@ -1 +1 @@
{"entries":[{"request":{"method":"GET","url":"http://localhost:8000/filter"},"response":{"status":200,"captures":[{"name":"url","query":{"type":"jsonpath","expr":"$.url"}},{"name":"text","query":{"type":"jsonpath","expr":"$.text"}}],"asserts":[{"query":{"type":"jsonpath","expr":"$.list"},"filters":[{"type":"count"}],"predicate":{"type":"equal","value":3}},{"query":{"type":"jsonpath","expr":"$.list"},"filters":[{"type":"nth","n":1}],"predicate":{"type":"equal","value":2}},{"query":{"type":"jsonpath","expr":"$.message"},"filters":[{"type":"regex","expr":{"type":"regex","value":"Hello (.*)!"}}],"predicate":{"type":"equal","value":"Bob"}},{"query":{"type":"jsonpath","expr":"$.url"},"predicate":{"type":"equal","value":"https://mozilla.org/?x=шеллы"}},{"query":{"type":"jsonpath","expr":"$.url"},"filters":[{"type":"urlEncode"}],"predicate":{"type":"equal","value":"https%3A//mozilla.org/%3Fx%3D%D1%88%D0%B5%D0%BB%D0%BB%D1%8B"}},{"query":{"type":"jsonpath","expr":"$.encoded_url"},"filters":[{"type":"urlDecode"}],"predicate":{"type":"equal","value":"https://mozilla.org/?x=шеллы"}},{"query":{"type":"variable","name":"url"},"filters":[{"type":"urlEncode"},{"type":"urlDecode"}],"predicate":{"type":"equal","value":"{{url}}"}},{"query":{"type":"jsonpath","expr":"$.text"},"predicate":{"type":"equal","value":"a > b && a < c"}},{"query":{"type":"jsonpath","expr":"$.text"},"filters":[{"type":"htmlEscape"}],"predicate":{"type":"equal","value":"a &gt; b &amp;&amp; a &lt; c"}},{"query":{"type":"jsonpath","expr":"$.escaped_html[0]"},"filters":[{"type":"htmlUnescape"}],"predicate":{"type":"equal","value":"a > b && a < c"}},{"query":{"type":"jsonpath","expr":"$.escaped_html[1]"},"filters":[{"type":"htmlUnescape"}],"predicate":{"type":"equal","value":"Foo © bar 𝌆 baz ☃ qux"}},{"query":{"type":"jsonpath","expr":"$.escaped_html[2]"},"filters":[{"type":"htmlUnescape"}],"predicate":{"type":"equal","value":"A foo"}},{"query":{"type":"variable","name":"text"},"filters":[{"type":"htmlEscape"},{"type":"htmlUnescape"}],"predicate":{"type":"equal","value":"{{text}}"}},{"query":{"type":"jsonpath","expr":"$.id"},"filters":[{"type":"toInt"}],"predicate":{"type":"equal","value":123}},{"query":{"type":"jsonpath","expr":"$.score"},"filters":[{"type":"toInt"}],"predicate":{"type":"equal","value":1}},{"query":{"type":"jsonpath","expr":"$.ips"},"filters":[{"type":"split","sep":", "},{"type":"count"}],"predicate":{"type":"equal","value":3}},{"query":{"type":"jsonpath","expr":"$.ips"},"filters":[{"type":"replace","old_value":", ","new_value":"|"}],"predicate":{"type":"equal","value":"192.168.2.1|10.0.0.20|10.0.0.10"}},{"query":{"type":"jsonpath","expr":"$.json"},"filters":[{"type":"jsonpath","expr":"$.message"}],"predicate":{"type":"equal","value":"Hello"}},{"query":{"type":"certificate","expr":"Expire-Date"},"filters":[{"type":"daysAfterNow"}],"predicate":{"type":"greater","value":15}},{"query":{"type":"certificate","expr":"Expire-Date"},"filters":[{"type":"daysBeforeNow"}],"predicate":{"type":"greater","value":15}}],"body":{"type":"json","value":{"list":[1,2,3],"message":"Hello Bob!","url":"https://mozilla.org/?x=шеллы","encoded_url":"https://mozilla.org/?x=%D1%88%D0%B5%D0%BB%D0%BB%D1%8B","text":"a > b && a < c","escaped_html":["a &gt; b &amp;&amp; a &lt; c","Foo &#xA9; bar &#x1D306; baz &#x2603; qux","&#65 foo"],"id":"123","score":1.6,"ips":"192.168.2.1, 10.0.0.20, 10.0.0.10","json":"{\"message\": \"Hello\"}"}}}}]}
{"entries":[{"request":{"method":"GET","url":"http://localhost:8000/dummy"},"response":{"status":200,"captures":[{"name":"count","query":{"type":"jsonpath","expr":"$.books"},"filters":[{"type":"count"}]}],"asserts":[{"query":{"type":"jsonpath","expr":"$.books"},"filters":[{"type":"count"}],"predicate":{"type":"equal","value":12}},{"query":{"type":"certificate","expr":"Expire-Date"},"filters":[{"type":"daysAfterNow"}],"predicate":{"type":"greater","value":15}},{"query":{"type":"certificate","expr":"Start-Date"},"filters":[{"type":"daysBeforeNow"}],"predicate":{"type":"less","value":100}},{"query":{"type":"bytes"},"filters":[{"type":"decode","encoding":"iso-8859-1"}],"predicate":{"type":"equal","value":"café"}},{"query":{"type":"cookie","expr":"LSID[Expires]"},"filters":[{"type":"format","fmt":"%a, %d %b %Y %H:%M:%S"}],"predicate":{"type":"equal","value":"Wed, 13 Jan 2021 22:23:01"}},{"query":{"type":"jsonpath","expr":"$.text"},"filters":[{"type":"htmlEscape"}],"predicate":{"type":"equal","value":"a &gt; b"}},{"query":{"type":"jsonpath","expr":"$.escaped_html[1]"},"filters":[{"type":"htmlUnescape"}],"predicate":{"type":"equal","value":"<p>Hello</p>"}},{"query":{"type":"variable","name":"books"},"filters":[{"type":"jsonpath","expr":"$[0].name"}],"predicate":{"type":"equal","value":"Dune"}},{"query":{"type":"jsonpath","expr":"$.books"},"filters":[{"type":"nth","n":2}],"predicate":{"type":"equal","value":"Children of Dune"}},{"query":{"type":"body"},"filters":[{"type":"regex","expr":{"type":"regex","value":"Hello ([0-9]+)!"}}],"predicate":{"type":"equal","value":"Bob"}},{"query":{"type":"jsonpath","expr":"$.ips"},"filters":[{"type":"replace","old_value":", ","new_value":"|"}],"predicate":{"type":"equal","value":"192.168.2.1|10.0.0.20|10.0.0.10"}},{"query":{"type":"jsonpath","expr":"$.ips"},"filters":[{"type":"split","sep":", "},{"type":"count"}],"predicate":{"type":"equal","value":3}},{"query":{"type":"header","name":"Expires"},"filters":[{"type":"toDate","fmt":"%a, %d %b %Y %H:%M:%S GMT"},{"type":"daysBeforeNow"}],"predicate":{"type":"greater","value":1000}},{"query":{"type":"jsonpath","expr":"$.id"},"filters":[{"type":"toInt"}],"predicate":{"type":"equal","value":123}},{"query":{"type":"jsonpath","expr":"$.encoded_url"},"filters":[{"type":"urlDecode"}],"predicate":{"type":"equal","value":"https://mozilla.org/?x=шеллы"}},{"query":{"type":"jsonpath","expr":"$.url"},"filters":[{"type":"urlEncode"}],"predicate":{"type":"equal","value":"https%3A//mozilla.org/%3Fx%3D%D1%88%D0%B5%D0%BB%D0%BB%D1%8B"}},{"query":{"type":"bytes"},"filters":[{"type":"decode","encoding":"iso-8859-1"},{"type":"xpath","expr":"string(//p)"}],"predicate":{"type":"equal","value":"Hello"}}]}}]}

View File

@ -1,14 +0,0 @@
<pre><code class="language-hurl"><span class="hurl-entry"><span class="request"><span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/follow-redirect</span></span>
</span><span class="response"><span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
<span class="line"><span class="string">`Followed redirect!`</span></span>
</span></span><span class="hurl-entry"><span class="request"><span class="line"></span>
<span class="line"></span><span class="comment"># On 301, 302, 303, redirected request switch to GET.</span>
<span class="line"></span><span class="comment"># Otherwise, method are untouched.</span>
<span class="line"><span class="method">POST</span> <span class="url">http://localhost:8000/follow-redirect</span></span>
</span><span class="response"><span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
<span class="line"><span class="string">`Followed redirect!`</span></span>
</span></span><span class="hurl-entry"><span class="request"><span class="line"></span>
<span class="line"><span class="method">POST</span> <span class="url">http://localhost:8000/follow-redirect-308</span></span>
</span><span class="response"><span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
<span class="line"><span class="string">`Followed redirect POST!`</span></span>
</span></span></code></pre>

Some files were not shown because too many files have changed in this diff Show More