Increase coverage for hurlfmt JSON/HTML output

This commit is contained in:
Fabrice Reix 2023-12-06 10:43:35 +01:00 committed by hurl-bot
parent 91988c1410
commit 4a94c882af
No known key found for this signature in database
GPG Key ID: 1283A2B4A0DCAF8D
9 changed files with 110 additions and 1 deletions

View File

@ -23,6 +23,8 @@
<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>

View File

@ -23,6 +23,8 @@ 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!",

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"}}],"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/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\"}"}}}}]}

View File

@ -0,0 +1,28 @@
<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">[Options]</span></span>
<span class="line"><span class="string">aws-sigv4</span>: <span class="string">aws:amz:eu-central-1:sts</span></span>
<span class="line"><span class="string">cacert</span>: <span class="filename">cacertfile</span></span>
<span class="line"><span class="string">cert</span>: <span class="filename">certfile</span></span>
<span class="line"><span class="string">key</span>: <span class="filename">keyfile</span></span>
<span class="line"><span class="string">compressed</span>: <span class="boolean">false</span></span>
<span class="line"><span class="string">connect-to</span>: <span class="string">example.com:443:example.net:8443</span></span>
<span class="line"><span class="string">delay</span>: <span class="number">1000</span></span>
<span class="line"><span class="string">location</span>: <span class="boolean">false</span></span>
<span class="line"><span class="string">http1.0</span>: <span class="boolean">false</span></span>
<span class="line"><span class="string">http1.1</span>: <span class="boolean">false</span></span>
<span class="line"><span class="string">http2</span>: <span class="boolean">false</span></span>
<span class="line"><span class="string">http3</span>: <span class="boolean">false</span></span>
<span class="line"><span class="string">insecure</span>: <span class="boolean">false</span></span>
<span class="line"><span class="string">ipv4</span>: <span class="boolean">false</span></span>
<span class="line"><span class="string">ipv6</span>: <span class="boolean">false</span></span>
<span class="line"><span class="string">max-redirs</span>: <span class="number">10</span></span>
<span class="line"><span class="string">output</span>: <span class="filename">output.txt</span></span>
<span class="line"><span class="string">path-as-is</span>: <span class="boolean">false</span></span>
<span class="line"><span class="string">proxy</span>: <span class="string">http://proxy.example</span></span>
<span class="line"><span class="string">resolve</span>: <span class="string">example.com:443:127.0.0.1</span></span>
<span class="line"><span class="string">retry</span>: <span class="number">4</span></span>
<span class="line"><span class="string">retry-interval</span>: <span class="number">1000</span></span>
<span class="line"><span class="string">skip</span>: <span class="boolean">false</span></span>
<span class="line"><span class="string">variable</span>: name=<span class="string">Bob</span></span>
<span class="line"><span class="string">verbose</span>: <span class="boolean">false</span></span>
<span class="line"><span class="string">very-verbose</span>: <span class="boolean">false</span></span></span></span></code></pre>

View File

@ -0,0 +1,28 @@
GET http://localhost:8000/hello
[Options]
aws-sigv4: aws:amz:eu-central-1:sts
cacert: cacertfile
cert: certfile
key: keyfile
compressed: false
connect-to: example.com:443:example.net:8443
delay: 1000
location: false
http1.0: false
http1.1: false
http2: false
http3: false
insecure: false
ipv4: false
ipv6: false
max-redirs: 10
output: output.txt
path-as-is: false
proxy: http://proxy.example
resolve: example.com:443:127.0.0.1
retry: 4
retry-interval: 1000
skip: false
variable: name=Bob
verbose: false
very-verbose: false

View File

@ -0,0 +1 @@
{"entries":[{"request":{"method":"GET","url":"http://localhost:8000/hello","options":[{"name":"aws-sigv4","value":"aws:amz:eu-central-1:sts"},{"name":"cacert","value":"cacertfile"},{"name":"cert","value":"certfile"},{"name":"key","value":"keyfile"},{"name":"compressed","value":false},{"name":"connect-to","value":"example.com:443:example.net:8443"},{"name":"delay","value":1000},{"name":"location","value":false},{"name":"http1.0","value":false},{"name":"http1.1","value":false},{"name":"http2","value":false},{"name":"http3","value":false},{"name":"insecure","value":false},{"name":"ipv4","value":false},{"name":"ipv6","value":false},{"name":"max-redirs","value":10},{"name":"output","value":"output.txt"},{"name":"path-as-is","value":false},{"name":"proxy","value":"http://proxy.example"},{"name":"resolve","value":"example.com:443:127.0.0.1"},{"name":"retry","value":4},{"name":"retry-interval","value":1000},{"name":"skip","value":false},{"name":"variable","value":"name=Bob"},{"name":"verbose","value":false},{"name":"very-verbose","value":false}]}}]}

View File

@ -0,0 +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/hello</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">status</span> <span class="predicate-type">==</span> <span class="number">200</span></span>
<span class="line"><span class="query-type">url</span> <span class="predicate-type">==</span> <span class="string">"http://localhost8080/hello"</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">"application/json"</span></span>
<span class="line"><span class="query-type">certificate</span> <span class="string">"Subject"</span> <span class="filter-type">replace</span> <span class="string">" = "</span> <span class="string">"="</span> <span class="filter-type">replace</span> <span class="string">";"</span> <span class="string">", "</span> <span class="predicate-type">==</span> <span class="string">"C=US, ST=Denial, L=Springfield, O=Dis, CN=localhost"</span></span>
<span class="line"><span class="query-type">certificate</span> <span class="string">"Issuer"</span> <span class="filter-type">replace</span> <span class="string">" = "</span> <span class="string">"="</span> <span class="filter-type">replace</span> <span class="string">";"</span> <span class="string">", "</span> <span class="predicate-type">==</span> <span class="string">"C=US, ST=Denial, L=Springfield, O=Dis, CN=localhost"</span></span>
<span class="line"><span class="query-type">certificate</span> <span class="string">"Start-Date"</span> <span class="predicate-type">isDate</span></span>
<span class="line"><span class="query-type">certificate</span> <span class="string">"Start-Date"</span> <span class="filter-type">format</span> <span class="string">"%Y-%m-%d %H:%M:%S UTC"</span> <span class="predicate-type">==</span> <span class="string">"2023-01-10 08:29:52 UTC"</span></span>
<span class="line"><span class="query-type">certificate</span> <span class="string">"Expire-Date"</span> <span class="predicate-type">isDate</span></span>
<span class="line"><span class="query-type">certificate</span> <span class="string">"Expire-Date"</span> <span class="filter-type">format</span> <span class="string">"%Y-%m-%d %H:%M:%S UTC"</span> <span class="predicate-type">==</span> <span class="string">"2025-10-30 08:29:52 UTC"</span></span>
<span class="line"><span class="query-type">certificate</span> <span class="string">"Serial-Number"</span> <span class="predicate-type">==</span> <span class="string">"1e:e8:b1:7f:1b:64:d8:d6:b3:de:87:01:03:d2:a4:f5:33:53:5a:b0"</span></span>
<span class="line"><span class="query-type">cookie</span> <span class="string">"JSESSIONID"</span> <span class="predicate-type">exists</span></span>
<span class="line"><span class="query-type">body</span> <span class="predicate-type">==</span> <span class="string">"Hello"</span></span>
<span class="line"><span class="query-type">xpath</span> <span class="string">"/users"</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">"$.users"</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">regex</span> <span class="string">"name=.*"</span> <span class="predicate-type">==</span> <span class="string">"Bob"</span></span>
<span class="line"><span class="query-type">variable</span> <span class="string">"name"</span> <span class="predicate-type">==</span> <span class="string">"Bob"</span></span>
<span class="line"><span class="query-type">duration</span> <span class="predicate-type">&lt;</span> <span class="number">1000</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="query-type">bytes</span> <span class="predicate-type">startsWith</span> hex,<span class="hex">48656c6c6f</span>;</span>
</span></span></code></pre>

View File

@ -0,0 +1,23 @@
GET http://localhost:8000/hello
HTTP 200
[Asserts]
status == 200
url == "http://localhost8080/hello"
header "content-type" == "application/json"
certificate "Subject" replace " = " "=" replace ";" ", " == "C=US, ST=Denial, L=Springfield, O=Dis, CN=localhost"
certificate "Issuer" replace " = " "=" replace ";" ", " == "C=US, ST=Denial, L=Springfield, O=Dis, CN=localhost"
certificate "Start-Date" isDate
certificate "Start-Date" format "%Y-%m-%d %H:%M:%S UTC" == "2023-01-10 08:29:52 UTC"
certificate "Expire-Date" isDate
certificate "Expire-Date" format "%Y-%m-%d %H:%M:%S UTC" == "2025-10-30 08:29:52 UTC"
certificate "Serial-Number" == "1e:e8:b1:7f:1b:64:d8:d6:b3:de:87:01:03:d2:a4:f5:33:53:5a:b0"
cookie "JSESSIONID" exists
body == "Hello"
xpath "/users" count == 3
jsonpath "$.users" count == 3
regex "name=.*" == "Bob"
variable "name" == "Bob"
duration < 1000
sha256 == hex,7f83b1657ff1fc53b92dc18148a1d65dfc2d4b1fa3d677284addd200126d9069;
md5 == hex,ed076287532e86365e841e92bfc50d8c;
bytes startsWith hex,48656c6c6f;

View File

@ -0,0 +1 @@
{"entries":[{"request":{"method":"GET","url":"http://localhost:8000/hello"},"response":{"status":200,"asserts":[{"query":{"type":"status"},"predicate":{"type":"equal","value":200}},{"query":{"type":"url"},"predicate":{"type":"equal","value":"http://localhost8080/hello"}},{"query":{"type":"header","name":"content-type"},"predicate":{"type":"equal","value":"application/json"}},{"query":{"type":"certificate","expr":"Subject"},"filters":[{"type":"replace","old_value":" = ","new_value":"="},{"type":"replace","old_value":";","new_value":", "}],"predicate":{"type":"equal","value":"C=US, ST=Denial, L=Springfield, O=Dis, CN=localhost"}},{"query":{"type":"certificate","expr":"Issuer"},"filters":[{"type":"replace","old_value":" = ","new_value":"="},{"type":"replace","old_value":";","new_value":", "}],"predicate":{"type":"equal","value":"C=US, ST=Denial, L=Springfield, O=Dis, CN=localhost"}},{"query":{"type":"certificate","expr":"Start-Date"},"predicate":{"type":"isDate"}},{"query":{"type":"certificate","expr":"Start-Date"},"filters":[{"type":"format","fmt":"%Y-%m-%d %H:%M:%S UTC"}],"predicate":{"type":"equal","value":"2023-01-10 08:29:52 UTC"}},{"query":{"type":"certificate","expr":"Expire-Date"},"predicate":{"type":"isDate"}},{"query":{"type":"certificate","expr":"Expire-Date"},"filters":[{"type":"format","fmt":"%Y-%m-%d %H:%M:%S UTC"}],"predicate":{"type":"equal","value":"2025-10-30 08:29:52 UTC"}},{"query":{"type":"certificate","expr":"Serial-Number"},"predicate":{"type":"equal","value":"1e:e8:b1:7f:1b:64:d8:d6:b3:de:87:01:03:d2:a4:f5:33:53:5a:b0"}},{"query":{"type":"cookie","expr":"JSESSIONID"},"predicate":{"type":"exist"}},{"query":{"type":"body"},"predicate":{"type":"equal","value":"Hello"}},{"query":{"type":"xpath","expr":"/users"},"filters":[{"type":"count"}],"predicate":{"type":"equal","value":3}},{"query":{"type":"jsonpath","expr":"$.users"},"filters":[{"type":"count"}],"predicate":{"type":"equal","value":3}},{"query":{"type":"regex","expr":"name=.*"},"predicate":{"type":"equal","value":"Bob"}},{"query":{"type":"variable","name":"name"},"predicate":{"type":"equal","value":"Bob"}},{"query":{"type":"duration"},"predicate":{"type":"less","value":1000}},{"query":{"type":"sha256"},"predicate":{"type":"equal","value":"f4OxZX/x/FO5LcGBSKHWXfwtSx+j1ncoSt3SABJtkGk=","encoding":"base64"}},{"query":{"type":"md5"},"predicate":{"type":"equal","value":"7Qdih1MuhjZehB6Sv8UNjA==","encoding":"base64"}},{"query":{"type":"bytes"},"predicate":{"type":"start-with","value":"SGVsbG8=","encoding":"base64"}}]}}]}