Remove buggy HTML report "line" class.
This commit is contained in:
parent
f9796b7c03
commit
ca2628227b
|
|
@ -166,11 +166,11 @@ Hello
|
|||
`include.html`:
|
||||
|
||||
```html
|
||||
<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/include</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">`Hello`</span></span>
|
||||
</span></span><span class="line"></span>
|
||||
<pre><code class="language-hurl"><span class="entry"><span class="request"><span class="method">GET</span> <span class="url">http://localhost:8000/include</span>
|
||||
</span><span class="response">
|
||||
<span class="version">HTTP</span> <span class="number">200</span>
|
||||
<span class="string">`Hello`</span>
|
||||
</span></span>
|
||||
</code></pre>
|
||||
```
|
||||
|
||||
|
|
|
|||
|
|
@ -1,78 +1,78 @@
|
|||
<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"> "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/json</span></span>
|
||||
<span class="line"><span class="multiline">```json</span></span>
|
||||
<span class="line"><span class="multiline">{</span></span>
|
||||
<span class="line"><span class="multiline"> "message": "Hello",</span></span>
|
||||
<span class="line"><span class="multiline"> "count": 5,</span></span>
|
||||
<span class="line"><span class="multiline"> "success": false,</span></span>
|
||||
<span class="line"><span class="multiline"> "errors": [{"id":"error1"},{"id":"error2"}],</span></span>
|
||||
<span class="line"><span class="multiline"> "failures": [{"id":"failure1"}],</span></span>
|
||||
<span class="line"><span class="multiline"> "warnings": [],</span></span>
|
||||
<span class="line"><span class="multiline"> "duration": 1.5,</span></span>
|
||||
<span class="line"><span class="multiline"> "tags": ["test"],</span></span>
|
||||
<span class="line"><span class="multiline"> "nullable": null,</span></span>
|
||||
<span class="line"><span class="multiline"> "profile-id": "123abc",</span></span>
|
||||
<span class="line"><span class="multiline"> "empty": {},</span></span>
|
||||
<span class="line"><span class="multiline"> "name": {{name}}</span></span>
|
||||
<span class="line"><span class="multiline">}</span></span>
|
||||
<span class="line"><span class="multiline">```</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>
|
||||
<span class="xml"><span class="line"><message>Hello</message></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/multiline-string</span></span>
|
||||
<span class="line"><span class="multiline">```</span></span>
|
||||
<span class="line"><span class="multiline">Hello\tWord</span></span>
|
||||
<span class="line"><span class="multiline">A beautiful \u{2708}</span></span>
|
||||
<span class="line"><span class="multiline">A template {{ var }}</span></span>
|
||||
<span class="line"><span class="multiline">A template {{ var }}</span></span>
|
||||
<span class="line"><span class="multiline">```</span></span>
|
||||
</span></span><span class="hurl-entry"><span class="request"><span class="line"></span>
|
||||
<span class="line"><span class="comment"># escape novariable are attributes of multi-linestring</span></span>
|
||||
<span class="line"><span class="comment"># going to be deprecated</span></span>
|
||||
<span class="line"><span class="method">POST</span> <span class="url">http://localhost:8000/multiline-string</span></span>
|
||||
<span class="line"><span class="multiline">```escape</span></span>
|
||||
<span class="line"><span class="multiline">Hello\tWord</span></span>
|
||||
<span class="line"><span class="multiline">A beautiful \u{2708}</span></span>
|
||||
<span class="line"><span class="multiline">A template {{ var }}</span></span>
|
||||
<span class="line"><span class="multiline">A template {{ var }}</span></span>
|
||||
<span class="line"><span class="multiline">```</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/multiline-string</span></span>
|
||||
<span class="line"><span class="multiline">```escape,novariable</span></span>
|
||||
<span class="line"><span class="multiline">Hello\tWord</span></span>
|
||||
<span class="line"><span class="multiline">A beautiful \u{2708}</span></span>
|
||||
<span class="line"><span class="multiline">A template {{ var }}</span></span>
|
||||
<span class="line"><span class="multiline">A template {{ var }}</span></span>
|
||||
<span class="line"><span class="multiline">```</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/oneline-string</span></span>
|
||||
<span class="line"><span class="string">`Hello`</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/oneline-base64</span></span>
|
||||
<span class="line">base64,<span class="base64">bGluZTEKbGluZTINCmxpbmUzCg==</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/oneline-base64</span></span>
|
||||
<span class="line">base64,<span class="base64">ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/==</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/oneline-file</span></span>
|
||||
<span class="line">file,<span class="filename">data.bin</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/oneline-hex</span></span>
|
||||
<span class="line">hex,<span class="hex">010203</span>;</span>
|
||||
<pre><code class="language-hurl"><span class="entry"><span class="request"><span class="method">POST</span> <span class="url">http://localhost:8000/json</span>
|
||||
<span class="json">{
|
||||
"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}}
|
||||
}</span>
|
||||
</span></span><span class="entry"><span class="request">
|
||||
<span class="method">POST</span> <span class="url">http://localhost:8000/json</span>
|
||||
<span class="multiline">```json
|
||||
{
|
||||
"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}}
|
||||
}
|
||||
```</span>
|
||||
</span></span><span class="entry"><span class="request">
|
||||
<span class="method">POST</span> <span class="url">http://localhost:8000/xml</span>
|
||||
<span class="xml"><message>Hello</message></span>
|
||||
</span></span><span class="entry"><span class="request">
|
||||
<span class="method">POST</span> <span class="url">http://localhost:8000/multiline-string</span>
|
||||
<span class="multiline">```
|
||||
Hello\tWord
|
||||
A beautiful \u{2708}
|
||||
A template {{ var }}
|
||||
A template {{ var }}
|
||||
```</span>
|
||||
</span></span><span class="entry"><span class="request">
|
||||
<span class="comment"># escape novariable are attributes of multi-linestring</span>
|
||||
<span class="comment"># going to be deprecated</span>
|
||||
<span class="method">POST</span> <span class="url">http://localhost:8000/multiline-string</span>
|
||||
<span class="multiline">```escape
|
||||
Hello\tWord
|
||||
A beautiful \u{2708}
|
||||
A template {{ var }}
|
||||
A template {{ var }}
|
||||
```</span>
|
||||
</span></span><span class="entry"><span class="request">
|
||||
<span class="method">POST</span> <span class="url">http://localhost:8000/multiline-string</span>
|
||||
<span class="multiline">```escape,novariable
|
||||
Hello\tWord
|
||||
A beautiful \u{2708}
|
||||
A template {{ var }}
|
||||
A template {{ var }}
|
||||
```</span>
|
||||
</span></span><span class="entry"><span class="request">
|
||||
<span class="method">POST</span> <span class="url">http://localhost:8000/oneline-string</span>
|
||||
<span class="string">`Hello`</span>
|
||||
</span></span><span class="entry"><span class="request">
|
||||
<span class="method">POST</span> <span class="url">http://localhost:8000/oneline-base64</span>
|
||||
base64,<span class="base64">bGluZTEKbGluZTINCmxpbmUzCg==</span>;
|
||||
</span></span><span class="entry"><span class="request">
|
||||
<span class="method">POST</span> <span class="url">http://localhost:8000/oneline-base64</span>
|
||||
base64,<span class="base64">ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/==</span>;
|
||||
</span></span><span class="entry"><span class="request">
|
||||
<span class="method">POST</span> <span class="url">http://localhost:8000/oneline-file</span>
|
||||
file,<span class="filename">data.bin</span>;
|
||||
</span></span><span class="entry"><span class="request">
|
||||
<span class="method">POST</span> <span class="url">http://localhost:8000/oneline-hex</span>
|
||||
hex,<span class="hex">010203</span>;
|
||||
</span></span></code></pre>
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
<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">name</span>: <span class="query-type">jsonpath</span> <span class="string">"$.name"</span></span>
|
||||
<span class="line"><span class="string">name2</span>: <span class="query-type">jsonpath</span> <span class="string">"$.name"</span> <span class="comment"># name</span></span>
|
||||
<span class="line"><span class="string">token</span>: <span class="query-type">jsonpath</span> <span class="string">"$.token"</span> <span class="string">redact</span></span>
|
||||
<span class="line"><span class="string">token2</span>: <span class="query-type">jsonpath</span> <span class="string">"$.token"</span> <span class="string">redact</span> <span class="comment"># token</span></span>
|
||||
<pre><code class="language-hurl"><span class="entry"><span class="request"><span class="method">GET</span> <span class="url">http://localhost:8000/dummy</span>
|
||||
</span><span class="response">
|
||||
<span class="version">HTTP</span> <span class="number">200</span>
|
||||
<span class="section-header">[Captures]</span>
|
||||
<span class="string">name</span>: <span class="query-type">jsonpath</span> <span class="string">"$.name"</span>
|
||||
<span class="string">name2</span>: <span class="query-type">jsonpath</span> <span class="string">"$.name"</span> <span class="comment"># name</span>
|
||||
<span class="string">token</span>: <span class="query-type">jsonpath</span> <span class="string">"$.token"</span> <span class="string">redact</span>
|
||||
<span class="string">token2</span>: <span class="query-type">jsonpath</span> <span class="string">"$.token"</span> <span class="string">redact</span> <span class="comment"># token</span>
|
||||
</span></span></code></pre>
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
<pre><code class="language-hurl"><span class="line"></span>
|
||||
<span class="line"></span>
|
||||
<pre><code class="language-hurl">
|
||||
|
||||
</code></pre>
|
||||
|
|
|
|||
|
|
@ -1,34 +1,34 @@
|
|||
<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">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">"$.data"</span> <span class="filter-type">base64Decode</span> <span class="predicate-type">==</span> hex,<span class="hex">48656c6c6f</span>; <span class="comment"># base64Decode</span></span>
|
||||
<span class="line"><span class="query-type">bytes</span> <span class="filter-type">base64Encode</span> <span class="predicate-type">==</span> <span class="string">"SGVsbG8="</span> <span class="comment"># base64Encode</span></span>
|
||||
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.data"</span> <span class="filter-type">base64UrlSafeDecode</span> <span class="predicate-type">==</span> hex,<span class="hex">48656c6c6f</span>; <span class="comment"># base64UrlSafeDecode</span></span>
|
||||
<span class="line"><span class="query-type">bytes</span> <span class="filter-type">base64UrlSafeEncode</span> <span class="predicate-type">==</span> <span class="string">"SGVsbG8"</span> <span class="comment"># base64UrlSafeEncode</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 class="comment"># count</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">></span> <span class="number">15</span> <span class="comment"># daysAfterNow</span></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"><</span> <span class="number">100</span> <span class="comment"># daysBeforeNow</span></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 class="comment"># decode</span></span>
|
||||
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.books"</span> <span class="filter-type">first</span> <span class="filter-type">jsonpath</span> <span class="string">"$.name"</span> <span class="predicate-type">==</span> <span class="string">"Les Misérables"</span> <span class="comment"># first</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 class="comment"># format</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 &gt; b"</span> <span class="comment"># htmlEscape</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">"<p>Hello</p>"</span> <span class="comment"># htmlUnescape</span></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 class="comment"># jsonpath</span></span>
|
||||
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.books"</span> <span class="filter-type">last</span> <span class="filter-type">jsonpath</span> <span class="string">"$.name"</span> <span class="predicate-type">==</span> <span class="string">"Dune"</span> <span class="comment"># last</span></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 class="comment"># nth</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="predicate-type">==</span> <span class="string">"Bob"</span> <span class="comment"># regex</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 class="comment"># replace</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 class="comment"># split</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">></span> <span class="number">1000</span> <span class="comment"># toDate</span></span>
|
||||
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.pi"</span> <span class="filter-type">toFloat</span> <span class="predicate-type">==</span> <span class="number">3.14</span> <span class="comment"># toFloat</span></span>
|
||||
<span class="line"><span class="query-type">sha256</span> <span class="filter-type">toHex</span> <span class="predicate-type">==</span> <span class="string">"039058c6f2c0cb492c533b0a4d14ef77cc0f78abccced5287d84a1a2011cfb81"</span> <span class="comment"># toHex</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 class="comment"># toInt</span></span>
|
||||
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.id"</span> <span class="filter-type">toString</span> <span class="predicate-type">==</span> <span class="string">"123"</span> <span class="comment"># toString</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 class="comment"># urlDecode</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 class="comment"># urlEncode</span></span>
|
||||
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.url"</span> <span class="filter-type">urlQueryParam</span> <span class="string">"token"</span> <span class="predicate-type">==</span> <span class="string">"XYZ"</span> <span class="comment"># urlQueryParam</span></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 class="comment"># xpath</span></span>
|
||||
<pre><code class="language-hurl"><span class="entry"><span class="request"><span class="method">GET</span> <span class="url">http://localhost:8000/dummy</span>
|
||||
</span><span class="response">
|
||||
<span class="version">HTTP</span> <span class="number">200</span>
|
||||
<span class="section-header">[Captures]</span>
|
||||
<span class="string">count</span>: <span class="query-type">jsonpath</span> <span class="string">"$.books"</span> <span class="filter-type">count</span>
|
||||
<span class="section-header">[Asserts]</span>
|
||||
<span class="query-type">jsonpath</span> <span class="string">"$.data"</span> <span class="filter-type">base64Decode</span> <span class="predicate-type">==</span> hex,<span class="hex">48656c6c6f</span>; <span class="comment"># base64Decode</span>
|
||||
<span class="query-type">bytes</span> <span class="filter-type">base64Encode</span> <span class="predicate-type">==</span> <span class="string">"SGVsbG8="</span> <span class="comment"># base64Encode</span>
|
||||
<span class="query-type">jsonpath</span> <span class="string">"$.data"</span> <span class="filter-type">base64UrlSafeDecode</span> <span class="predicate-type">==</span> hex,<span class="hex">48656c6c6f</span>; <span class="comment"># base64UrlSafeDecode</span>
|
||||
<span class="query-type">bytes</span> <span class="filter-type">base64UrlSafeEncode</span> <span class="predicate-type">==</span> <span class="string">"SGVsbG8"</span> <span class="comment"># base64UrlSafeEncode</span>
|
||||
<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 class="comment"># count</span>
|
||||
<span class="query-type">certificate</span> <span class="string">"Expire-Date"</span> <span class="filter-type">daysAfterNow</span> <span class="predicate-type">></span> <span class="number">15</span> <span class="comment"># daysAfterNow</span>
|
||||
<span class="query-type">certificate</span> <span class="string">"Start-Date"</span> <span class="filter-type">daysBeforeNow</span> <span class="predicate-type"><</span> <span class="number">100</span> <span class="comment"># daysBeforeNow</span>
|
||||
<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 class="comment"># decode</span>
|
||||
<span class="query-type">jsonpath</span> <span class="string">"$.books"</span> <span class="filter-type">first</span> <span class="filter-type">jsonpath</span> <span class="string">"$.name"</span> <span class="predicate-type">==</span> <span class="string">"Les Misérables"</span> <span class="comment"># first</span>
|
||||
<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 class="comment"># format</span>
|
||||
<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 &gt; b"</span> <span class="comment"># htmlEscape</span>
|
||||
<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">"<p>Hello</p>"</span> <span class="comment"># htmlUnescape</span>
|
||||
<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 class="comment"># jsonpath</span>
|
||||
<span class="query-type">jsonpath</span> <span class="string">"$.books"</span> <span class="filter-type">last</span> <span class="filter-type">jsonpath</span> <span class="string">"$.name"</span> <span class="predicate-type">==</span> <span class="string">"Dune"</span> <span class="comment"># last</span>
|
||||
<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 class="comment"># nth</span>
|
||||
<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 class="comment"># regex</span>
|
||||
<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 class="comment"># replace</span>
|
||||
<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 class="comment"># split</span>
|
||||
<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">></span> <span class="number">1000</span> <span class="comment"># toDate</span>
|
||||
<span class="query-type">jsonpath</span> <span class="string">"$.pi"</span> <span class="filter-type">toFloat</span> <span class="predicate-type">==</span> <span class="number">3.14</span> <span class="comment"># toFloat</span>
|
||||
<span class="query-type">sha256</span> <span class="filter-type">toHex</span> <span class="predicate-type">==</span> <span class="string">"039058c6f2c0cb492c533b0a4d14ef77cc0f78abccced5287d84a1a2011cfb81"</span> <span class="comment"># toHex</span>
|
||||
<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 class="comment"># toInt</span>
|
||||
<span class="query-type">jsonpath</span> <span class="string">"$.id"</span> <span class="filter-type">toString</span> <span class="predicate-type">==</span> <span class="string">"123"</span> <span class="comment"># toString</span>
|
||||
<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 class="comment"># urlDecode</span>
|
||||
<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 class="comment"># urlEncode</span>
|
||||
<span class="query-type">jsonpath</span> <span class="string">"$.url"</span> <span class="filter-type">urlQueryParam</span> <span class="string">"token"</span> <span class="predicate-type">==</span> <span class="string">"XYZ"</span> <span class="comment"># urlQueryParam</span>
|
||||
<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 class="comment"># xpath</span>
|
||||
</span></span></code></pre>
|
||||
|
|
|
|||
|
|
@ -1,22 +1,22 @@
|
|||
<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/float</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">"$[1]"</span> <span class="predicate-type">==</span> <span class="number">0.0</span></span>
|
||||
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$[2]"</span> <span class="predicate-type">!=</span> <span class="number">0.0</span></span>
|
||||
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$[2]"</span> <span class="predicate-type">==</span> <span class="number">0.0000000000000001</span></span>
|
||||
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$[3]"</span> <span class="predicate-type">==</span> <span class="number">0.000000000000001</span></span>
|
||||
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$[4]"</span> <span class="predicate-type">==</span> <span class="number">0.333</span></span>
|
||||
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$[4]"</span> <span class="predicate-type">!=</span> <span class="number">0.3333333333333333</span></span>
|
||||
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$[5]"</span> <span class="predicate-type">==</span> <span class="number">0.3333333333333333</span></span>
|
||||
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$[5]"</span> <span class="predicate-type">==</span> <span class="number">0.333333333333333333</span> <span class="comment"># exceeding floating-point precision in expected value</span></span>
|
||||
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$[6]"</span> <span class="predicate-type">==</span> <span class="number">0.333333333333333333</span> <span class="comment"># exceeding floating-point precision in json response</span></span>
|
||||
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$[7]"</span> <span class="predicate-type">==</span> <span class="number">1.0</span></span>
|
||||
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$[7]"</span> <span class="predicate-type">==</span> <span class="number">1</span> <span class="comment"># using an expected integer</span></span>
|
||||
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$[8]"</span> <span class="predicate-type">==</span> <span class="number">1.001</span></span>
|
||||
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$[9]"</span> <span class="predicate-type">==</span> <span class="number">1.07</span></span>
|
||||
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$[9]"</span> <span class="predicate-type">==</span> <span class="number">1.070</span> <span class="comment"># additional trailing zero in expected value</span></span>
|
||||
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$[10]"</span> <span class="predicate-type">==</span> <span class="number">1.07</span> <span class="comment"># additional trailing zero in json response</span></span>
|
||||
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$[11]"</span> <span class="predicate-type">==</span> <span class="number">1.1</span></span>
|
||||
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$[12]"</span> <span class="predicate-type">==</span> <span class="number">1.5</span></span>
|
||||
<span class="json"><span class="line">[ -2.2, 0.0, 0.0000000000000001, 0.000000000000001, 0.333, 0.3333333333333333, 0.333333333333333333, 1.0, 1.001, 1.07, 1.070, 1.1, 1.5 ]</span></span>
|
||||
<pre><code class="language-hurl"><span class="entry"><span class="request"><span class="method">GET</span> <span class="url">http://localhost:8000/float</span>
|
||||
</span><span class="response"><span class="version">HTTP</span> <span class="number">200</span>
|
||||
<span class="section-header">[Asserts]</span>
|
||||
<span class="query-type">jsonpath</span> <span class="string">"$[1]"</span> <span class="predicate-type">==</span> <span class="number">0.0</span>
|
||||
<span class="query-type">jsonpath</span> <span class="string">"$[2]"</span> <span class="predicate-type">!=</span> <span class="number">0.0</span>
|
||||
<span class="query-type">jsonpath</span> <span class="string">"$[2]"</span> <span class="predicate-type">==</span> <span class="number">0.0000000000000001</span>
|
||||
<span class="query-type">jsonpath</span> <span class="string">"$[3]"</span> <span class="predicate-type">==</span> <span class="number">0.000000000000001</span>
|
||||
<span class="query-type">jsonpath</span> <span class="string">"$[4]"</span> <span class="predicate-type">==</span> <span class="number">0.333</span>
|
||||
<span class="query-type">jsonpath</span> <span class="string">"$[4]"</span> <span class="predicate-type">!=</span> <span class="number">0.3333333333333333</span>
|
||||
<span class="query-type">jsonpath</span> <span class="string">"$[5]"</span> <span class="predicate-type">==</span> <span class="number">0.3333333333333333</span>
|
||||
<span class="query-type">jsonpath</span> <span class="string">"$[5]"</span> <span class="predicate-type">==</span> <span class="number">0.333333333333333333</span> <span class="comment"># exceeding floating-point precision in expected value</span>
|
||||
<span class="query-type">jsonpath</span> <span class="string">"$[6]"</span> <span class="predicate-type">==</span> <span class="number">0.333333333333333333</span> <span class="comment"># exceeding floating-point precision in json response</span>
|
||||
<span class="query-type">jsonpath</span> <span class="string">"$[7]"</span> <span class="predicate-type">==</span> <span class="number">1.0</span>
|
||||
<span class="query-type">jsonpath</span> <span class="string">"$[7]"</span> <span class="predicate-type">==</span> <span class="number">1</span> <span class="comment"># using an expected integer</span>
|
||||
<span class="query-type">jsonpath</span> <span class="string">"$[8]"</span> <span class="predicate-type">==</span> <span class="number">1.001</span>
|
||||
<span class="query-type">jsonpath</span> <span class="string">"$[9]"</span> <span class="predicate-type">==</span> <span class="number">1.07</span>
|
||||
<span class="query-type">jsonpath</span> <span class="string">"$[9]"</span> <span class="predicate-type">==</span> <span class="number">1.070</span> <span class="comment"># additional trailing zero in expected value</span>
|
||||
<span class="query-type">jsonpath</span> <span class="string">"$[10]"</span> <span class="predicate-type">==</span> <span class="number">1.07</span> <span class="comment"># additional trailing zero in json response</span>
|
||||
<span class="query-type">jsonpath</span> <span class="string">"$[11]"</span> <span class="predicate-type">==</span> <span class="number">1.1</span>
|
||||
<span class="query-type">jsonpath</span> <span class="string">"$[12]"</span> <span class="predicate-type">==</span> <span class="number">1.5</span>
|
||||
<span class="json">[ -2.2, 0.0, 0.0000000000000001, 0.000000000000001, 0.333, 0.3333333333333333, 0.333333333333333333, 1.0, 1.001, 1.07, 1.070, 1.1, 1.5 ]</span>
|
||||
</span></span></code></pre>
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
<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">[Query]</span></span>
|
||||
<span class="line"><span class="string">uuid</span>: <span class="string">{{newUuid}}</span></span>
|
||||
<span class="line"><span class="string">now</span>: <span class="string">{{newDate}}</span></span>
|
||||
<pre><code class="language-hurl"><span class="entry"><span class="request"><span class="method">GET</span> <span class="url">http://localhost:8000/hello</span>
|
||||
<span class="section-header">[Query]</span>
|
||||
<span class="string">uuid</span>: <span class="string">{{newUuid}}</span>
|
||||
<span class="string">now</span>: <span class="string">{{newDate}}</span>
|
||||
</span></span></code></pre>
|
||||
|
|
|
|||
|
|
@ -1,50 +1,50 @@
|
|||
<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/default-headers</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/default-headers</span></span>
|
||||
<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:8000</span> <span class="comment"># Comment</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/default-headers</span></span>
|
||||
<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:8000</span> <span class="comment"># Comment</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/custom-headers</span></span>
|
||||
<span class="line"><span class="string">Fruit</span>: <span class="string">Raspberry</span></span>
|
||||
<span class="line"><span class="string">Fruit</span>: <span class="string">Apple</span></span>
|
||||
<span class="line"><span class="string">Fruit</span>: <span class="string">Banana</span></span>
|
||||
<span class="line"><span class="string">Fruit</span>: <span class="string">Grape</span></span>
|
||||
<span class="line"><span class="string">Color</span>: <span class="string">Green</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/custom-headers</span></span>
|
||||
<span class="line"><span class="comment"># Headers name/value can use templates</span></span>
|
||||
<span class="line"><span class="string">{{key}}</span>: <span class="string">Raspberry</span></span>
|
||||
<span class="line"><span class="string">{{key}}</span>: <span class="string">Apple</span></span>
|
||||
<span class="line"><span class="string">{{key}}</span>: <span class="string">Banana</span></span>
|
||||
<span class="line"><span class="string">{{key}}</span>: <span class="string">{{foo}}</span></span>
|
||||
<span class="line"><span class="string">Color</span>: <span class="string">{{color}}</span></span>
|
||||
<span class="line"><span class="section-header">[Options]</span></span>
|
||||
<span class="line"><span class="string">variable</span>: key=<span class="string">Fruit</span></span>
|
||||
<span class="line"><span class="string">variable</span>: color=<span class="string">Green</span></span>
|
||||
<span class="line"><span class="string">variable</span>: foo=<span class="string">Grape</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/custom-headers-utf8</span></span>
|
||||
<span class="line"><span class="string">Beverage</span>: <span class="string">café</span> <span class="comment"># Send the utf8 string - expected to be decoded as ascii in the server side</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/custom-headers-value</span></span>
|
||||
<span class="line"><span class="string">Id</span>: <span class="string">\#123</span> <span class="comment"># Send a hash in the value</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/custom-headers-quote</span></span>
|
||||
<span class="line"><span class="string">Header1</span>: <span class="string">'</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/response-headers</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">Beverage</span>: <span class="string">cafe</span> <span class="comment"># TBC send utf8</span></span>
|
||||
<pre><code class="language-hurl"><span class="entry"><span class="request"><span class="method">GET</span> <span class="url">http://localhost:8000/default-headers</span>
|
||||
</span><span class="response"><span class="version">HTTP</span> <span class="number">200</span>
|
||||
</span></span><span class="entry"><span class="request">
|
||||
<span class="method">GET</span> <span class="url">http://localhost:8000/default-headers</span>
|
||||
<span class="string">User-Agent</span>: <span class="string">hurl/1.0</span>
|
||||
<span class="string">Host</span>: <span class="string">localhost:8000</span> <span class="comment"># Comment</span>
|
||||
</span><span class="response"><span class="version">HTTP</span> <span class="number">200</span>
|
||||
</span></span><span class="entry"><span class="request">
|
||||
<span class="method">GET</span> <span class="url">http://localhost:8000/default-headers</span>
|
||||
<span class="string">User-Agent</span>: <span class="string">hurl/1.0</span>
|
||||
<span class="string">Host</span>: <span class="string">localhost:8000</span> <span class="comment"># Comment</span>
|
||||
</span><span class="response"><span class="version">HTTP</span> <span class="number">200</span>
|
||||
</span></span><span class="entry"><span class="request">
|
||||
<span class="method">GET</span> <span class="url">http://localhost:8000/custom-headers</span>
|
||||
<span class="string">Fruit</span>: <span class="string">Raspberry</span>
|
||||
<span class="string">Fruit</span>: <span class="string">Apple</span>
|
||||
<span class="string">Fruit</span>: <span class="string">Banana</span>
|
||||
<span class="string">Fruit</span>: <span class="string">Grape</span>
|
||||
<span class="string">Color</span>: <span class="string">Green</span>
|
||||
</span><span class="response"><span class="version">HTTP</span> <span class="number">200</span>
|
||||
</span></span><span class="entry"><span class="request">
|
||||
<span class="method">GET</span> <span class="url">http://localhost:8000/custom-headers</span>
|
||||
<span class="comment"># Headers name/value can use templates</span>
|
||||
<span class="string">{{key}}</span>: <span class="string">Raspberry</span>
|
||||
<span class="string">{{key}}</span>: <span class="string">Apple</span>
|
||||
<span class="string">{{key}}</span>: <span class="string">Banana</span>
|
||||
<span class="string">{{key}}</span>: <span class="string">{{foo}}</span>
|
||||
<span class="string">Color</span>: <span class="string">{{color}}</span>
|
||||
<span class="section-header">[Options]</span>
|
||||
<span class="string">variable</span>: key=<span class="string">Fruit</span>
|
||||
<span class="string">variable</span>: color=<span class="string">Green</span>
|
||||
<span class="string">variable</span>: foo=<span class="string">Grape</span>
|
||||
</span><span class="response"><span class="version">HTTP</span> <span class="number">200</span>
|
||||
</span></span><span class="entry"><span class="request">
|
||||
<span class="method">GET</span> <span class="url">http://localhost:8000/custom-headers-utf8</span>
|
||||
<span class="string">Beverage</span>: <span class="string">café</span> <span class="comment"># Send the utf8 string - expected to be decoded as ascii in the server side</span>
|
||||
</span><span class="response"><span class="version">HTTP</span> <span class="number">200</span>
|
||||
</span></span><span class="entry"><span class="request">
|
||||
<span class="method">GET</span> <span class="url">http://localhost:8000/custom-headers-value</span>
|
||||
<span class="string">Id</span>: <span class="string">\#123</span> <span class="comment"># Send a hash in the value</span>
|
||||
</span><span class="response"><span class="version">HTTP</span> <span class="number">200</span>
|
||||
</span></span><span class="entry"><span class="request">
|
||||
<span class="method">GET</span> <span class="url">http://localhost:8000/custom-headers-quote</span>
|
||||
<span class="string">Header1</span>: <span class="string">'</span>
|
||||
</span><span class="response"><span class="version">HTTP</span> <span class="number">200</span>
|
||||
</span></span><span class="entry"><span class="request">
|
||||
<span class="method">GET</span> <span class="url">http://localhost:8000/response-headers</span>
|
||||
</span><span class="response"><span class="version">HTTP</span> <span class="number">200</span>
|
||||
<span class="string">Beverage</span>: <span class="string">cafe</span> <span class="comment"># TBC send utf8</span>
|
||||
</span></span></code></pre>
|
||||
|
|
|
|||
|
|
@ -1,15 +1,15 @@
|
|||
<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/1.0</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/hello</span></span>
|
||||
</span><span class="response"><span class="line"><span class="version">HTTP/1.1</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/hello</span></span>
|
||||
</span><span class="response"><span class="line"><span class="version">HTTP/2</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/hello</span></span>
|
||||
</span><span class="response"><span class="line"><span class="version">HTTP/3</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/hello</span></span>
|
||||
</span><span class="response"><span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
|
||||
<pre><code class="language-hurl"><span class="entry"><span class="request"><span class="method">GET</span> <span class="url">http://localhost:8000/hello</span>
|
||||
</span><span class="response"><span class="version">HTTP/1.0</span> <span class="number">200</span>
|
||||
</span></span><span class="entry"><span class="request">
|
||||
<span class="method">GET</span> <span class="url">http://localhost:8000/hello</span>
|
||||
</span><span class="response"><span class="version">HTTP/1.1</span> <span class="number">200</span>
|
||||
</span></span><span class="entry"><span class="request">
|
||||
<span class="method">GET</span> <span class="url">http://localhost:8000/hello</span>
|
||||
</span><span class="response"><span class="version">HTTP/2</span> <span class="number">200</span>
|
||||
</span></span><span class="entry"><span class="request">
|
||||
<span class="method">GET</span> <span class="url">http://localhost:8000/hello</span>
|
||||
</span><span class="response"><span class="version">HTTP/3</span> <span class="number">200</span>
|
||||
</span></span><span class="entry"><span class="request">
|
||||
<span class="method">GET</span> <span class="url">http://localhost:8000/hello</span>
|
||||
</span><span class="response"><span class="version">HTTP</span> <span class="number">200</span>
|
||||
</span></span></code></pre>
|
||||
|
|
|
|||
|
|
@ -1,17 +1,17 @@
|
|||
<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/methods/get</span></span>
|
||||
</span></span><span class="hurl-entry"><span class="request"><span class="line"><span class="method">HEAD</span> <span class="url">http://localhost:8000/methods/head</span></span>
|
||||
</span></span><span class="hurl-entry"><span class="request"><span class="line"><span class="method">POST</span> <span class="url">http://localhost:8000/methods/post</span></span>
|
||||
</span></span><span class="hurl-entry"><span class="request"><span class="line"><span class="method">PUT</span> <span class="url">http://localhost:8000/methods/put</span></span>
|
||||
</span></span><span class="hurl-entry"><span class="request"><span class="line"><span class="method">DELETE</span> <span class="url">http://localhost:8000/methods/delete</span></span>
|
||||
</span></span><span class="hurl-entry"><span class="request"><span class="line"><span class="method">CONNECT</span> <span class="url">http://localhost:8000/methods/connect</span></span>
|
||||
</span></span><span class="hurl-entry"><span class="request"><span class="line"><span class="method">OPTIONS</span> <span class="url">http://localhost:8000/methods/options</span></span>
|
||||
</span></span><span class="hurl-entry"><span class="request"><span class="line"><span class="method">TRACE</span> <span class="url">http://localhost:8000/methods/trace</span></span>
|
||||
</span></span><span class="hurl-entry"><span class="request"><span class="line"><span class="method">PATCH</span> <span class="url">http://localhost:8000/methods/patch</span></span>
|
||||
</span></span><span class="hurl-entry"><span class="request"><span class="line"><span class="method">LINK</span> <span class="url">http://localhost:8000/methods/link</span></span>
|
||||
</span></span><span class="hurl-entry"><span class="request"><span class="line"><span class="method">UNLINK</span> <span class="url">http://localhost:8000/methods/unlink</span></span>
|
||||
</span></span><span class="hurl-entry"><span class="request"><span class="line"><span class="method">PURGE</span> <span class="url">http://localhost:8000/methods/purge</span></span>
|
||||
</span></span><span class="hurl-entry"><span class="request"><span class="line"><span class="method">LOCK</span> <span class="url">http://localhost:8000/methods/lock</span></span>
|
||||
</span></span><span class="hurl-entry"><span class="request"><span class="line"><span class="method">UNLOCK</span> <span class="url">http://localhost:8000/methods/unlock</span></span>
|
||||
</span></span><span class="hurl-entry"><span class="request"><span class="line"><span class="method">PROPFIND</span> <span class="url">http://localhost:8000/methods/propfind</span></span>
|
||||
</span></span><span class="hurl-entry"><span class="request"><span class="line"><span class="method">VIEW</span> <span class="url">http://localhost:8000/methods/view</span></span>
|
||||
<pre><code class="language-hurl"><span class="entry"><span class="request"><span class="method">GET</span> <span class="url">http://localhost:8000/methods/get</span>
|
||||
</span></span><span class="entry"><span class="request"><span class="method">HEAD</span> <span class="url">http://localhost:8000/methods/head</span>
|
||||
</span></span><span class="entry"><span class="request"><span class="method">POST</span> <span class="url">http://localhost:8000/methods/post</span>
|
||||
</span></span><span class="entry"><span class="request"><span class="method">PUT</span> <span class="url">http://localhost:8000/methods/put</span>
|
||||
</span></span><span class="entry"><span class="request"><span class="method">DELETE</span> <span class="url">http://localhost:8000/methods/delete</span>
|
||||
</span></span><span class="entry"><span class="request"><span class="method">CONNECT</span> <span class="url">http://localhost:8000/methods/connect</span>
|
||||
</span></span><span class="entry"><span class="request"><span class="method">OPTIONS</span> <span class="url">http://localhost:8000/methods/options</span>
|
||||
</span></span><span class="entry"><span class="request"><span class="method">TRACE</span> <span class="url">http://localhost:8000/methods/trace</span>
|
||||
</span></span><span class="entry"><span class="request"><span class="method">PATCH</span> <span class="url">http://localhost:8000/methods/patch</span>
|
||||
</span></span><span class="entry"><span class="request"><span class="method">LINK</span> <span class="url">http://localhost:8000/methods/link</span>
|
||||
</span></span><span class="entry"><span class="request"><span class="method">UNLINK</span> <span class="url">http://localhost:8000/methods/unlink</span>
|
||||
</span></span><span class="entry"><span class="request"><span class="method">PURGE</span> <span class="url">http://localhost:8000/methods/purge</span>
|
||||
</span></span><span class="entry"><span class="request"><span class="method">LOCK</span> <span class="url">http://localhost:8000/methods/lock</span>
|
||||
</span></span><span class="entry"><span class="request"><span class="method">UNLOCK</span> <span class="url">http://localhost:8000/methods/unlock</span>
|
||||
</span></span><span class="entry"><span class="request"><span class="method">PROPFIND</span> <span class="url">http://localhost:8000/methods/propfind</span>
|
||||
</span></span><span class="entry"><span class="request"><span class="method">VIEW</span> <span class="url">http://localhost:8000/methods/view</span>
|
||||
</span></span></code></pre>
|
||||
|
|
|
|||
|
|
@ -1,163 +1,163 @@
|
|||
<pre><code class="language-hurl"><span class="hurl-entry"><span class="request"><span class="line"><span class="comment"># In each request, we sent a multiline body and get</span></span>
|
||||
<span class="line"><span class="comment"># the same body as response. Request body is tested server side</span></span>
|
||||
<span class="line"><span class="comment"># and we assert the response here.</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span class="method">POST</span> <span class="url">http://localhost:8000/multilines/plain-text</span></span>
|
||||
<span class="line"><span class="multiline">```</span></span>
|
||||
<span class="line"><span class="multiline">line1</span></span>
|
||||
<span class="line"><span class="multiline">line2</span></span>
|
||||
<span class="line"><span class="multiline">line3</span></span>
|
||||
<span class="line"><span class="multiline">A beautiful \u{2708}</span></span>
|
||||
<span class="line"><span class="multiline">```</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="comment"># Different ways of testing body response:</span></span>
|
||||
<span class="line"><span class="comment"># with explicit asserts:</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">"line1\nline2\nline3\nA beautiful \u{2708}\n"</span></span>
|
||||
<span class="line"><span class="query-type">body</span> <span class="predicate-type">==</span> <span class="multiline">```</span></span>
|
||||
<span class="line"><span class="multiline">line1</span></span>
|
||||
<span class="line"><span class="multiline">line2</span></span>
|
||||
<span class="line"><span class="multiline">line3</span></span>
|
||||
<span class="line"><span class="multiline">A beautiful \u{2708}</span></span>
|
||||
<span class="line"><span class="multiline">```</span></span>
|
||||
<span class="line"><span class="comment"># Or we can just test the body (implicit assert):</span></span>
|
||||
<span class="line"><span class="multiline">```</span></span>
|
||||
<span class="line"><span class="multiline">line1</span></span>
|
||||
<span class="line"><span class="multiline">line2</span></span>
|
||||
<span class="line"><span class="multiline">line3</span></span>
|
||||
<span class="line"><span class="multiline">A beautiful \u{2708}</span></span>
|
||||
<span class="line"><span class="multiline">```</span></span>
|
||||
</span></span><span class="hurl-entry"><span class="request"><span class="line"></span>
|
||||
<span class="line"><span class="comment"># escape attributes are going to be deprecated</span></span>
|
||||
<span class="line"><span class="method">POST</span> <span class="url">http://localhost:8000/multilines/plain-text</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">body</span> <span class="predicate-type">==</span> <span class="multiline">```escape</span></span>
|
||||
<span class="line"><span class="multiline">line1</span></span>
|
||||
<span class="line"><span class="multiline">line2</span></span>
|
||||
<span class="line"><span class="multiline">line3</span></span>
|
||||
<span class="line"><span class="multiline">A beautiful \u{2708}</span></span>
|
||||
<span class="line"><span class="multiline">```</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">POST</span> <span class="url">http://localhost:8000/multilines/json</span></span>
|
||||
<span class="line"><span class="multiline">```json</span></span>
|
||||
<span class="line"><span class="multiline">{</span></span>
|
||||
<span class="line"><span class="multiline"> "foo": "bar"</span></span>
|
||||
<span class="line"><span class="multiline"> "baz": 123456</span></span>
|
||||
<span class="line"><span class="multiline">}</span></span>
|
||||
<span class="line"><span class="multiline">```</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="comment"># Different ways of testing body response:</span></span>
|
||||
<span class="line"><span class="comment"># with explicit asserts:</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">"{\n \"foo\": \"bar\"\n \"baz\": 123456\n}\n"</span></span>
|
||||
<span class="line"><span class="query-type">body</span> <span class="predicate-type">==</span> <span class="multiline">```json</span></span>
|
||||
<span class="line"><span class="multiline">{</span></span>
|
||||
<span class="line"><span class="multiline"> "foo": "bar"</span></span>
|
||||
<span class="line"><span class="multiline"> "baz": 123456</span></span>
|
||||
<span class="line"><span class="multiline">}</span></span>
|
||||
<span class="line"><span class="multiline">```</span></span>
|
||||
<span class="line"><span class="comment"># Or we can just test the body (implicit assert):</span></span>
|
||||
<span class="line"><span class="multiline">```json</span></span>
|
||||
<span class="line"><span class="multiline">{</span></span>
|
||||
<span class="line"><span class="multiline"> "foo": "bar"</span></span>
|
||||
<span class="line"><span class="multiline"> "baz": 123456</span></span>
|
||||
<span class="line"><span class="multiline">}</span></span>
|
||||
<span class="line"><span class="multiline">```</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="line"><span class="method">POST</span> <span class="url">http://localhost:8000/multilines/xml</span></span>
|
||||
<span class="line"><span class="multiline">```xml</span></span>
|
||||
<span class="line"><span class="multiline"><?xml version="1.0"?></span></span>
|
||||
<span class="line"><span class="multiline"><catalog></span></span>
|
||||
<span class="line"><span class="multiline"> <book id="bk101"></span></span>
|
||||
<span class="line"><span class="multiline"> <author>Gambardella, Matthew</author></span></span>
|
||||
<span class="line"><span class="multiline"> <title>XML Developer's Guide</title></span></span>
|
||||
<span class="line"><span class="multiline"> <genre>Computer</genre></span></span>
|
||||
<span class="line"><span class="multiline"> <price>44.95</price></span></span>
|
||||
<span class="line"><span class="multiline"> <publish_date>2000-10-01</publish_date></span></span>
|
||||
<span class="line"><span class="multiline"> <description>An in-depth look at creating applications</span></span>
|
||||
<span class="line"><span class="multiline"> with XML.</description></span></span>
|
||||
<span class="line"><span class="multiline"> </book></span></span>
|
||||
<span class="line"><span class="multiline"></catalog></span></span>
|
||||
<span class="line"><span class="multiline">```</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="comment"># Different ways of testing body response:</span></span>
|
||||
<span class="line"><span class="comment"># with explicit asserts:</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">"<?xml version=\"1.0\"?>\n<catalog>\n <book id=\"bk101\">\n <author>Gambardella, Matthew</author>\n <title>XML Developer's Guide</title>\n <genre>Computer</genre>\n <price>44.95</price>\n <publish_date>2000-10-01</publish_date>\n <description>An in-depth look at creating applications\n with XML.</description>\n </book>\n</catalog>\n"</span></span>
|
||||
<span class="line"><span class="query-type">body</span> <span class="predicate-type">==</span> <span class="multiline">```xml</span></span>
|
||||
<span class="line"><span class="multiline"><?xml version="1.0"?></span></span>
|
||||
<span class="line"><span class="multiline"><catalog></span></span>
|
||||
<span class="line"><span class="multiline"> <book id="bk101"></span></span>
|
||||
<span class="line"><span class="multiline"> <author>Gambardella, Matthew</author></span></span>
|
||||
<span class="line"><span class="multiline"> <title>XML Developer's Guide</title></span></span>
|
||||
<span class="line"><span class="multiline"> <genre>Computer</genre></span></span>
|
||||
<span class="line"><span class="multiline"> <price>44.95</price></span></span>
|
||||
<span class="line"><span class="multiline"> <publish_date>2000-10-01</publish_date></span></span>
|
||||
<span class="line"><span class="multiline"> <description>An in-depth look at creating applications</span></span>
|
||||
<span class="line"><span class="multiline"> with XML.</description></span></span>
|
||||
<span class="line"><span class="multiline"> </book></span></span>
|
||||
<span class="line"><span class="multiline"></catalog></span></span>
|
||||
<span class="line"><span class="multiline">```</span></span>
|
||||
<span class="line"><span class="comment"># Or we can just test the body (implicit assert):</span></span>
|
||||
<span class="line"><span class="multiline">```xml</span></span>
|
||||
<span class="line"><span class="multiline"><?xml version="1.0"?></span></span>
|
||||
<span class="line"><span class="multiline"><catalog></span></span>
|
||||
<span class="line"><span class="multiline"> <book id="bk101"></span></span>
|
||||
<span class="line"><span class="multiline"> <author>Gambardella, Matthew</author></span></span>
|
||||
<span class="line"><span class="multiline"> <title>XML Developer's Guide</title></span></span>
|
||||
<span class="line"><span class="multiline"> <genre>Computer</genre></span></span>
|
||||
<span class="line"><span class="multiline"> <price>44.95</price></span></span>
|
||||
<span class="line"><span class="multiline"> <publish_date>2000-10-01</publish_date></span></span>
|
||||
<span class="line"><span class="multiline"> <description>An in-depth look at creating applications</span></span>
|
||||
<span class="line"><span class="multiline"> with XML.</description></span></span>
|
||||
<span class="line"><span class="multiline"> </book></span></span>
|
||||
<span class="line"><span class="multiline"></catalog></span></span>
|
||||
<span class="line"><span class="multiline">```</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="line"><span class="method">POST</span> <span class="url">http://localhost:8000/multilines/graphql</span></span>
|
||||
<span class="line"><span class="multiline">```graphql</span></span>
|
||||
<span class="line"><span class="multiline">{</span></span>
|
||||
<span class="line"><span class="multiline"> hero {</span></span>
|
||||
<span class="line"><span class="multiline"> name</span></span>
|
||||
<span class="line"><span class="multiline"> # Queries can have comments!</span></span>
|
||||
<span class="line"><span class="multiline"> friends {</span></span>
|
||||
<span class="line"><span class="multiline"> name</span></span>
|
||||
<span class="line"><span class="multiline"> }</span></span>
|
||||
<span class="line"><span class="multiline"> }</span></span>
|
||||
<span class="line"><span class="multiline">}</span></span>
|
||||
<span class="line"><span class="multiline">```</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="comment"># Different ways of testing body response:</span></span>
|
||||
<span class="line"><span class="comment"># with explicit asserts:</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">"{\"query\":\"{\\n hero {\\n name\\n # Queries can have comments!\\n friends {\\n name\\n }\\n }\\n}\"}"</span></span>
|
||||
<span class="line"><span class="query-type">body</span> <span class="predicate-type">==</span> <span class="multiline">```graphql</span></span>
|
||||
<span class="line"><span class="multiline">{</span></span>
|
||||
<span class="line"><span class="multiline"> hero {</span></span>
|
||||
<span class="line"><span class="multiline"> name</span></span>
|
||||
<span class="line"><span class="multiline"> # Queries can have comments!</span></span>
|
||||
<span class="line"><span class="multiline"> friends {</span></span>
|
||||
<span class="line"><span class="multiline"> name</span></span>
|
||||
<span class="line"><span class="multiline"> }</span></span>
|
||||
<span class="line"><span class="multiline"> }</span></span>
|
||||
<span class="line"><span class="multiline">}</span></span>
|
||||
<span class="line"><span class="multiline">```</span></span>
|
||||
<span class="line"><span class="comment"># Or we can just test the body (implicit assert):</span></span>
|
||||
<span class="line"><span class="multiline">```graphql</span></span>
|
||||
<span class="line"><span class="multiline">{</span></span>
|
||||
<span class="line"><span class="multiline"> hero {</span></span>
|
||||
<span class="line"><span class="multiline"> name</span></span>
|
||||
<span class="line"><span class="multiline"> # Queries can have comments!</span></span>
|
||||
<span class="line"><span class="multiline"> friends {</span></span>
|
||||
<span class="line"><span class="multiline"> name</span></span>
|
||||
<span class="line"><span class="multiline"> }</span></span>
|
||||
<span class="line"><span class="multiline"> }</span></span>
|
||||
<span class="line"><span class="multiline">}</span></span>
|
||||
<span class="line"><span class="multiline">```</span></span>
|
||||
<pre><code class="language-hurl"><span class="entry"><span class="request"><span class="comment"># In each request, we sent a multiline body and get</span>
|
||||
<span class="comment"># the same body as response. Request body is tested server side</span>
|
||||
<span class="comment"># and we assert the response here.</span>
|
||||
|
||||
<span class="method">POST</span> <span class="url">http://localhost:8000/multilines/plain-text</span>
|
||||
<span class="multiline">```
|
||||
line1
|
||||
line2
|
||||
line3
|
||||
A beautiful \u{2708}
|
||||
```</span>
|
||||
</span><span class="response"><span class="version">HTTP</span> <span class="number">200</span>
|
||||
<span class="comment"># Different ways of testing body response:</span>
|
||||
<span class="comment"># with explicit asserts:</span>
|
||||
<span class="section-header">[Asserts]</span>
|
||||
<span class="query-type">body</span> <span class="predicate-type">==</span> <span class="string">"line1\nline2\nline3\nA beautiful \u{2708}\n"</span>
|
||||
<span class="query-type">body</span> <span class="predicate-type">==</span> <span class="multiline">```
|
||||
line1
|
||||
line2
|
||||
line3
|
||||
A beautiful \u{2708}
|
||||
```</span>
|
||||
<span class="comment"># Or we can just test the body (implicit assert):</span>
|
||||
<span class="multiline">```
|
||||
line1
|
||||
line2
|
||||
line3
|
||||
A beautiful \u{2708}
|
||||
```</span>
|
||||
</span></span><span class="entry"><span class="request">
|
||||
<span class="comment"># escape attributes are going to be deprecated</span>
|
||||
<span class="method">POST</span> <span class="url">http://localhost:8000/multilines/plain-text</span>
|
||||
</span><span class="response"><span class="version">HTTP</span> <span class="number">200</span>
|
||||
<span class="section-header">[Asserts]</span>
|
||||
<span class="query-type">body</span> <span class="predicate-type">==</span> <span class="multiline">```escape
|
||||
line1
|
||||
line2
|
||||
line3
|
||||
A beautiful \u{2708}
|
||||
```</span>
|
||||
</span></span><span class="entry"><span class="request">
|
||||
|
||||
<span class="method">POST</span> <span class="url">http://localhost:8000/multilines/json</span>
|
||||
<span class="multiline">```json
|
||||
{
|
||||
"foo": "bar"
|
||||
"baz": 123456
|
||||
}
|
||||
```</span>
|
||||
</span><span class="response"><span class="version">HTTP</span> <span class="number">200</span>
|
||||
<span class="comment"># Different ways of testing body response:</span>
|
||||
<span class="comment"># with explicit asserts:</span>
|
||||
<span class="section-header">[Asserts]</span>
|
||||
<span class="query-type">body</span> <span class="predicate-type">==</span> <span class="string">"{\n \"foo\": \"bar\"\n \"baz\": 123456\n}\n"</span>
|
||||
<span class="query-type">body</span> <span class="predicate-type">==</span> <span class="multiline">```json
|
||||
{
|
||||
"foo": "bar"
|
||||
"baz": 123456
|
||||
}
|
||||
```</span>
|
||||
<span class="comment"># Or we can just test the body (implicit assert):</span>
|
||||
<span class="multiline">```json
|
||||
{
|
||||
"foo": "bar"
|
||||
"baz": 123456
|
||||
}
|
||||
```</span>
|
||||
</span></span><span class="entry"><span class="request">
|
||||
|
||||
|
||||
<span class="method">POST</span> <span class="url">http://localhost:8000/multilines/xml</span>
|
||||
<span class="multiline">```xml
|
||||
<?xml version="1.0"?>
|
||||
<catalog>
|
||||
<book id="bk101">
|
||||
<author>Gambardella, Matthew</author>
|
||||
<title>XML Developer's Guide</title>
|
||||
<genre>Computer</genre>
|
||||
<price>44.95</price>
|
||||
<publish_date>2000-10-01</publish_date>
|
||||
<description>An in-depth look at creating applications
|
||||
with XML.</description>
|
||||
</book>
|
||||
</catalog>
|
||||
```</span>
|
||||
</span><span class="response"><span class="version">HTTP</span> <span class="number">200</span>
|
||||
<span class="comment"># Different ways of testing body response:</span>
|
||||
<span class="comment"># with explicit asserts:</span>
|
||||
<span class="section-header">[Asserts]</span>
|
||||
<span class="query-type">body</span> <span class="predicate-type">==</span> <span class="string">"<?xml version=\"1.0\"?>\n<catalog>\n <book id=\"bk101\">\n <author>Gambardella, Matthew</author>\n <title>XML Developer's Guide</title>\n <genre>Computer</genre>\n <price>44.95</price>\n <publish_date>2000-10-01</publish_date>\n <description>An in-depth look at creating applications\n with XML.</description>\n </book>\n</catalog>\n"</span>
|
||||
<span class="query-type">body</span> <span class="predicate-type">==</span> <span class="multiline">```xml
|
||||
<?xml version="1.0"?>
|
||||
<catalog>
|
||||
<book id="bk101">
|
||||
<author>Gambardella, Matthew</author>
|
||||
<title>XML Developer's Guide</title>
|
||||
<genre>Computer</genre>
|
||||
<price>44.95</price>
|
||||
<publish_date>2000-10-01</publish_date>
|
||||
<description>An in-depth look at creating applications
|
||||
with XML.</description>
|
||||
</book>
|
||||
</catalog>
|
||||
```</span>
|
||||
<span class="comment"># Or we can just test the body (implicit assert):</span>
|
||||
<span class="multiline">```xml
|
||||
<?xml version="1.0"?>
|
||||
<catalog>
|
||||
<book id="bk101">
|
||||
<author>Gambardella, Matthew</author>
|
||||
<title>XML Developer's Guide</title>
|
||||
<genre>Computer</genre>
|
||||
<price>44.95</price>
|
||||
<publish_date>2000-10-01</publish_date>
|
||||
<description>An in-depth look at creating applications
|
||||
with XML.</description>
|
||||
</book>
|
||||
</catalog>
|
||||
```</span>
|
||||
</span></span><span class="entry"><span class="request">
|
||||
|
||||
|
||||
<span class="method">POST</span> <span class="url">http://localhost:8000/multilines/graphql</span>
|
||||
<span class="multiline">```graphql
|
||||
{
|
||||
hero {
|
||||
name
|
||||
# Queries can have comments!
|
||||
friends {
|
||||
name
|
||||
}
|
||||
}
|
||||
}
|
||||
```</span>
|
||||
</span><span class="response"><span class="version">HTTP</span> <span class="number">200</span>
|
||||
<span class="comment"># Different ways of testing body response:</span>
|
||||
<span class="comment"># with explicit asserts:</span>
|
||||
<span class="section-header">[Asserts]</span>
|
||||
<span class="query-type">body</span> <span class="predicate-type">==</span> <span class="string">"{\"query\":\"{\\n hero {\\n name\\n # Queries can have comments!\\n friends {\\n name\\n }\\n }\\n}\"}"</span>
|
||||
<span class="query-type">body</span> <span class="predicate-type">==</span> <span class="multiline">```graphql
|
||||
{
|
||||
hero {
|
||||
name
|
||||
# Queries can have comments!
|
||||
friends {
|
||||
name
|
||||
}
|
||||
}
|
||||
}
|
||||
```</span>
|
||||
<span class="comment"># Or we can just test the body (implicit assert):</span>
|
||||
<span class="multiline">```graphql
|
||||
{
|
||||
hero {
|
||||
name
|
||||
# Queries can have comments!
|
||||
friends {
|
||||
name
|
||||
}
|
||||
}
|
||||
}
|
||||
```</span>
|
||||
</span></span></code></pre>
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
<pre><code class="language-hurl"><span class="line"><span class="comment"># all the entries</span></span>
|
||||
<span class="line"><span class="comment"># have been commented</span></span>
|
||||
<pre><code class="language-hurl"><span class="comment"># all the entries</span>
|
||||
<span class="comment"># have been commented</span>
|
||||
</code></pre>
|
||||
|
|
|
|||
|
|
@ -1,95 +1,95 @@
|
|||
<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">cert</span>: <span class="filename">certfile:qU114@q,["NO</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">connect-timeout</span>: <span class="number">60</span><span class="unit">s</span></span>
|
||||
<span class="line"><span class="string">delay</span>: <span class="number">1000</span></span>
|
||||
<span class="line"><span class="string">delay</span>: <span class="number">1000</span><span class="unit">ms</span></span>
|
||||
<span class="line"><span class="string">delay</span>: <span class="number">1</span><span class="unit">s</span></span>
|
||||
<span class="line"><span class="string">location</span>: <span class="boolean">false</span></span>
|
||||
<span class="line"><span class="string">location-trusted</span>: <span class="boolean">false</span></span>
|
||||
<span class="line"><span class="string">header</span>: <span class="string">key: value</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">limit-rate</span>: <span class="number">1000</span></span>
|
||||
<span class="line"><span class="string">max-redirs</span>: <span class="number">10</span></span>
|
||||
<span class="line"><span class="string">max-time</span>: <span class="number">100</span><span class="unit">s</span></span>
|
||||
<span class="line"><span class="string">netrc</span>: <span class="boolean">false</span></span>
|
||||
<span class="line"><span class="string">netrc-file</span>: <span class="filename">netrcfile</span></span>
|
||||
<span class="line"><span class="string">netrc-optional</span>: <span class="boolean">false</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">pinnedpubkey</span>: <span class="string">pinnedpubkeyfile</span></span>
|
||||
<span class="line"><span class="string">proxy</span>: <span class="string">http://proxy.example</span></span>
|
||||
<span class="line"><span class="string">repeat</span>: <span class="number">-1</span></span>
|
||||
<span class="line"><span class="string">repeat</span>: <span class="number">5</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">0</span></span>
|
||||
<span class="line"><span class="string">retry</span>: <span class="number">-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">retry-interval</span>: <span class="number">1000</span><span class="unit">ms</span></span>
|
||||
<span class="line"><span class="string">retry-interval</span>: <span class="number">1</span><span class="unit">s</span></span>
|
||||
<span class="line"><span class="string">skip</span>: <span class="boolean">false</span></span>
|
||||
<span class="line"><span class="string">unix-socket</span>: <span class="string">build/unix_socket.sock</span></span>
|
||||
<span class="line"><span class="string">user</span>: <span class="string">bob:secret</span></span>
|
||||
<span class="line"><span class="string">variable</span>: user=<span class="null">null</span></span>
|
||||
<span class="line"><span class="string">variable</span>: status=<span class="boolean">true</span></span>
|
||||
<span class="line"><span class="string">variable</span>: count=<span class="number">2</span></span>
|
||||
<span class="line"><span class="string">variable</span>: score=<span class="number">7.7</span></span>
|
||||
<span class="line"><span class="string">variable</span>: name=<span class="string">Bob</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><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/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-sigv4}}</span></span>
|
||||
<span class="line"><span class="string">cacert</span>: <span class="filename">{{cacert}}</span></span>
|
||||
<span class="line"><span class="string">cert</span>: <span class="filename">{{cert}}</span></span>
|
||||
<span class="line"><span class="string">key</span>: <span class="filename">{{key}}</span></span>
|
||||
<span class="line"><span class="string">compressed</span>: <span class="expr">{{compressed}}</span></span>
|
||||
<span class="line"><span class="string">connect-to</span>: <span class="string">{{connect-to}}</span></span>
|
||||
<span class="line"><span class="string">connect-timeout</span>: <span class="expr">{{connect-timeout}}</span></span>
|
||||
<span class="line"><span class="string">delay</span>: <span class="expr">{{delay}}</span></span>
|
||||
<span class="line"><span class="string">location</span>: <span class="expr">{{location}}</span></span>
|
||||
<span class="line"><span class="string">location-trusted</span>: <span class="expr">{{location-trusted}}</span></span>
|
||||
<span class="line"><span class="string">header</span>: <span class="string">{{header}}</span></span>
|
||||
<span class="line"><span class="string">http1.0</span>: <span class="expr">{{http10}}</span></span>
|
||||
<span class="line"><span class="string">http1.1</span>: <span class="expr">{{http11}}</span></span>
|
||||
<span class="line"><span class="string">http2</span>: <span class="expr">{{http2}}</span></span>
|
||||
<span class="line"><span class="string">http3</span>: <span class="expr">{{http3}}</span></span>
|
||||
<span class="line"><span class="string">insecure</span>: <span class="expr">{{insecure}}</span></span>
|
||||
<span class="line"><span class="string">ipv4</span>: <span class="expr">{{ipv4}}</span></span>
|
||||
<span class="line"><span class="string">ipv6</span>: <span class="expr">{{ipv6}}</span></span>
|
||||
<span class="line"><span class="string">limit-rate</span>: <span class="expr">{{limit-rate}}</span></span>
|
||||
<span class="line"><span class="string">max-redirs</span>: <span class="expr">{{max-redirs}}</span></span>
|
||||
<span class="line"><span class="string">max-time</span>: <span class="expr">{{max-time}}</span></span>
|
||||
<span class="line"><span class="string">netrc</span>: <span class="expr">{{netrc}}</span></span>
|
||||
<span class="line"><span class="string">netrc-file</span>: <span class="filename">{{netrc-file}}</span></span>
|
||||
<span class="line"><span class="string">netrc-optional</span>: <span class="expr">{{netrc-optional}}</span></span>
|
||||
<span class="line"><span class="string">output</span>: <span class="filename">{{output}}</span></span>
|
||||
<span class="line"><span class="string">path-as-is</span>: <span class="expr">{{path-as-is}}</span></span>
|
||||
<span class="line"><span class="string">pinnedpubkey</span>: <span class="string">{{pinnedpubkey}}</span></span>
|
||||
<span class="line"><span class="string">proxy</span>: <span class="string">{{proxy}}</span></span>
|
||||
<span class="line"><span class="string">repeat</span>: <span class="expr">{{repeat}}</span></span>
|
||||
<span class="line"><span class="string">resolve</span>: <span class="string">{{resolve}}</span></span>
|
||||
<span class="line"><span class="string">retry</span>: <span class="expr">{{retry}}</span></span>
|
||||
<span class="line"><span class="string">retry-interval</span>: <span class="expr">{{retry-interval}}</span></span>
|
||||
<span class="line"><span class="string">skip</span>: <span class="expr">{{skip}}</span></span>
|
||||
<span class="line"><span class="string">unix-socket</span>: <span class="string">{{socket-file}}</span></span>
|
||||
<span class="line"><span class="string">user</span>: <span class="string">{{user}}</span></span>
|
||||
<span class="line"><span class="comment">#variable: {{variable}} NOT SUPPORTED YET</span></span>
|
||||
<span class="line"><span class="string">verbose</span>: <span class="expr">{{verbose}}</span></span>
|
||||
<span class="line"><span class="string">very-verbose</span>: <span class="expr">{{very-verbose}}</span></span>
|
||||
<pre><code class="language-hurl"><span class="entry"><span class="request"><span class="method">GET</span> <span class="url">http://localhost:8000/hello</span>
|
||||
<span class="section-header">[Options]</span>
|
||||
<span class="string">aws-sigv4</span>: <span class="string">aws:amz:eu-central-1:sts</span>
|
||||
<span class="string">cacert</span>: <span class="filename">cacertfile</span>
|
||||
<span class="string">cert</span>: <span class="filename">certfile</span>
|
||||
<span class="string">cert</span>: <span class="filename">certfile:qU114@q,["NO</span>
|
||||
<span class="string">key</span>: <span class="filename">keyfile</span>
|
||||
<span class="string">compressed</span>: <span class="boolean">false</span>
|
||||
<span class="string">connect-to</span>: <span class="string">example.com:443:example.net:8443</span>
|
||||
<span class="string">connect-timeout</span>: <span class="number">60</span><span class="unit">s</span>
|
||||
<span class="string">delay</span>: <span class="number">1000</span>
|
||||
<span class="string">delay</span>: <span class="number">1000</span><span class="unit">ms</span>
|
||||
<span class="string">delay</span>: <span class="number">1</span><span class="unit">s</span>
|
||||
<span class="string">location</span>: <span class="boolean">false</span>
|
||||
<span class="string">location-trusted</span>: <span class="boolean">false</span>
|
||||
<span class="string">header</span>: <span class="string">key: value</span>
|
||||
<span class="string">http1.0</span>: <span class="boolean">false</span>
|
||||
<span class="string">http1.1</span>: <span class="boolean">false</span>
|
||||
<span class="string">http2</span>: <span class="boolean">false</span>
|
||||
<span class="string">http3</span>: <span class="boolean">false</span>
|
||||
<span class="string">insecure</span>: <span class="boolean">false</span>
|
||||
<span class="string">ipv4</span>: <span class="boolean">false</span>
|
||||
<span class="string">ipv6</span>: <span class="boolean">false</span>
|
||||
<span class="string">limit-rate</span>: <span class="number">1000</span>
|
||||
<span class="string">max-redirs</span>: <span class="number">10</span>
|
||||
<span class="string">max-time</span>: <span class="number">100</span><span class="unit">s</span>
|
||||
<span class="string">netrc</span>: <span class="boolean">false</span>
|
||||
<span class="string">netrc-file</span>: <span class="filename">netrcfile</span>
|
||||
<span class="string">netrc-optional</span>: <span class="boolean">false</span>
|
||||
<span class="string">output</span>: <span class="filename">output.txt</span>
|
||||
<span class="string">path-as-is</span>: <span class="boolean">false</span>
|
||||
<span class="string">pinnedpubkey</span>: <span class="string">pinnedpubkeyfile</span>
|
||||
<span class="string">proxy</span>: <span class="string">http://proxy.example</span>
|
||||
<span class="string">repeat</span>: <span class="number">-1</span>
|
||||
<span class="string">repeat</span>: <span class="number">5</span>
|
||||
<span class="string">resolve</span>: <span class="string">example.com:443:127.0.0.1</span>
|
||||
<span class="string">retry</span>: <span class="number">0</span>
|
||||
<span class="string">retry</span>: <span class="number">-1</span>
|
||||
<span class="string">retry</span>: <span class="number">4</span>
|
||||
<span class="string">retry-interval</span>: <span class="number">1000</span>
|
||||
<span class="string">retry-interval</span>: <span class="number">1000</span><span class="unit">ms</span>
|
||||
<span class="string">retry-interval</span>: <span class="number">1</span><span class="unit">s</span>
|
||||
<span class="string">skip</span>: <span class="boolean">false</span>
|
||||
<span class="string">unix-socket</span>: <span class="string">build/unix_socket.sock</span>
|
||||
<span class="string">user</span>: <span class="string">bob:secret</span>
|
||||
<span class="string">variable</span>: user=<span class="null">null</span>
|
||||
<span class="string">variable</span>: status=<span class="boolean">true</span>
|
||||
<span class="string">variable</span>: count=<span class="number">2</span>
|
||||
<span class="string">variable</span>: score=<span class="number">7.7</span>
|
||||
<span class="string">variable</span>: name=<span class="string">Bob</span>
|
||||
<span class="string">variable</span>:name = <span class="string">Bob</span>
|
||||
<span class="string">verbose</span>: <span class="boolean">false</span>
|
||||
<span class="string">very-verbose</span>: <span class="boolean">false</span>
|
||||
</span></span><span class="entry"><span class="request">
|
||||
<span class="method">GET</span> <span class="url">http://localhost:8000/hello</span>
|
||||
<span class="section-header">[Options]</span>
|
||||
<span class="string">aws-sigv4</span>: <span class="string">{{aws-sigv4}}</span>
|
||||
<span class="string">cacert</span>: <span class="filename">{{cacert}}</span>
|
||||
<span class="string">cert</span>: <span class="filename">{{cert}}</span>
|
||||
<span class="string">key</span>: <span class="filename">{{key}}</span>
|
||||
<span class="string">compressed</span>: <span class="expr">{{compressed}}</span>
|
||||
<span class="string">connect-to</span>: <span class="string">{{connect-to}}</span>
|
||||
<span class="string">connect-timeout</span>: <span class="expr">{{connect-timeout}}</span>
|
||||
<span class="string">delay</span>: <span class="expr">{{delay}}</span>
|
||||
<span class="string">location</span>: <span class="expr">{{location}}</span>
|
||||
<span class="string">location-trusted</span>: <span class="expr">{{location-trusted}}</span>
|
||||
<span class="string">header</span>: <span class="string">{{header}}</span>
|
||||
<span class="string">http1.0</span>: <span class="expr">{{http10}}</span>
|
||||
<span class="string">http1.1</span>: <span class="expr">{{http11}}</span>
|
||||
<span class="string">http2</span>: <span class="expr">{{http2}}</span>
|
||||
<span class="string">http3</span>: <span class="expr">{{http3}}</span>
|
||||
<span class="string">insecure</span>: <span class="expr">{{insecure}}</span>
|
||||
<span class="string">ipv4</span>: <span class="expr">{{ipv4}}</span>
|
||||
<span class="string">ipv6</span>: <span class="expr">{{ipv6}}</span>
|
||||
<span class="string">limit-rate</span>: <span class="expr">{{limit-rate}}</span>
|
||||
<span class="string">max-redirs</span>: <span class="expr">{{max-redirs}}</span>
|
||||
<span class="string">max-time</span>: <span class="expr">{{max-time}}</span>
|
||||
<span class="string">netrc</span>: <span class="expr">{{netrc}}</span>
|
||||
<span class="string">netrc-file</span>: <span class="filename">{{netrc-file}}</span>
|
||||
<span class="string">netrc-optional</span>: <span class="expr">{{netrc-optional}}</span>
|
||||
<span class="string">output</span>: <span class="filename">{{output}}</span>
|
||||
<span class="string">path-as-is</span>: <span class="expr">{{path-as-is}}</span>
|
||||
<span class="string">pinnedpubkey</span>: <span class="string">{{pinnedpubkey}}</span>
|
||||
<span class="string">proxy</span>: <span class="string">{{proxy}}</span>
|
||||
<span class="string">repeat</span>: <span class="expr">{{repeat}}</span>
|
||||
<span class="string">resolve</span>: <span class="string">{{resolve}}</span>
|
||||
<span class="string">retry</span>: <span class="expr">{{retry}}</span>
|
||||
<span class="string">retry-interval</span>: <span class="expr">{{retry-interval}}</span>
|
||||
<span class="string">skip</span>: <span class="expr">{{skip}}</span>
|
||||
<span class="string">unix-socket</span>: <span class="string">{{socket-file}}</span>
|
||||
<span class="string">user</span>: <span class="string">{{user}}</span>
|
||||
<span class="comment">#variable: {{variable}} NOT SUPPORTED YET</span>
|
||||
<span class="string">verbose</span>: <span class="expr">{{verbose}}</span>
|
||||
<span class="string">very-verbose</span>: <span class="expr">{{very-verbose}}</span>
|
||||
</span></span></code></pre>
|
||||
|
|
|
|||
|
|
@ -1,33 +1,33 @@
|
|||
<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 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">"$.book"</span> <span class="not">not</span> <span class="predicate-type">==</span> <span class="string">"Dune"</span></span>
|
||||
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.book"</span> <span class="predicate-type">==</span> <span class="string">"Dune"</span> <span class="comment"># ==</span></span>
|
||||
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.color"</span> <span class="predicate-type">!=</span> <span class="string">"red"</span> <span class="comment"># !=</span></span>
|
||||
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.year"</span> <span class="predicate-type">></span> <span class="number">1978</span> <span class="comment"># ></span></span>
|
||||
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.year"</span> <span class="predicate-type">>=</span> <span class="number">1978</span> <span class="comment"># >=</span></span>
|
||||
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.year"</span> <span class="predicate-type"><</span> <span class="number">1978</span> <span class="comment"># <</span></span>
|
||||
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.year"</span> <span class="predicate-type"><=</span> <span class="number">1978</span> <span class="comment"># <=</span></span>
|
||||
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.movie"</span> <span class="predicate-type">contains</span> <span class="string">"Empire"</span> <span class="comment"># contains</span></span>
|
||||
<span class="line"><span class="query-type">bytes</span> <span class="predicate-type">contains</span> hex,<span class="hex">beef</span>; <span class="comment"># contains</span></span>
|
||||
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.movie"</span> <span class="predicate-type">endsWith</span> <span class="string">"Back"</span> <span class="comment"># endsWith</span></span>
|
||||
<span class="line"><span class="query-type">bytes</span> <span class="predicate-type">endsWith</span> hex,<span class="hex">ab123456</span>; <span class="comment"># endsWith</span></span>
|
||||
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.book"</span> <span class="predicate-type">exists</span> <span class="comment"># exists</span></span>
|
||||
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.nooks"</span> <span class="predicate-type">includes</span> <span class="string">"Dune"</span> <span class="comment"># includes</span></span>
|
||||
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.nooks"</span> <span class="predicate-type">contains</span> <span class="string">"Dune"</span> <span class="comment"># contains</span></span>
|
||||
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.succeeded"</span> <span class="predicate-type">isBoolean</span> <span class="comment"># isBoolean</span></span>
|
||||
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.books"</span> <span class="predicate-type">isCollection</span> <span class="comment"># isCollection</span></span>
|
||||
<span class="line"><span class="query-type">certificate</span> <span class="string">"Expire-Date"</span> <span class="predicate-type">isDate</span> <span class="comment"># isDate</span></span>
|
||||
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.publication_date"</span> <span class="predicate-type">isIsoDate</span> <span class="comment"># isIsoDate</span></span>
|
||||
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.movies"</span> <span class="predicate-type">isEmpty</span> <span class="comment"># isEmpty</span></span>
|
||||
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.height"</span> <span class="predicate-type">isFloat</span> <span class="comment"># isFloat</span></span>
|
||||
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.count"</span> <span class="predicate-type">isInteger</span> <span class="comment"># isInteger</span></span>
|
||||
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.name"</span> <span class="predicate-type">isString</span> <span class="comment"># isString</span></span>
|
||||
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.release"</span> <span class="predicate-type">matches</span> <span class="string">"\\d{4}"</span> <span class="comment"># matches</span></span>
|
||||
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.release"</span> <span class="predicate-type">matches</span> <span class="regex">/\d{4}/</span> <span class="comment"># matches</span></span>
|
||||
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.movie"</span> <span class="predicate-type">startsWith</span> <span class="string">"The"</span> <span class="comment"># startsWith</span></span>
|
||||
<span class="line"><span class="query-type">bytes</span> <span class="predicate-type">startsWith</span> hex,<span class="hex">efbbbf</span>; <span class="comment"># startsWith</span></span>
|
||||
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.count"</span> <span class="predicate-type">isNumber</span> <span class="comment"># isNumber</span></span>
|
||||
<span class="line"><span class="query-type">ip</span> <span class="predicate-type">isIpv6</span> <span class="comment"># isIpv6</span></span>
|
||||
<span class="line"><span class="query-type">ip</span> <span class="predicate-type">isIpv4</span> <span class="comment"># isIpv4</span></span>
|
||||
<pre><code class="language-hurl"><span class="entry"><span class="request"><span class="method">GET</span> <span class="url">http://localhost:8000/dummy</span>
|
||||
</span><span class="response"><span class="version">HTTP</span> <span class="number">200</span>
|
||||
<span class="section-header">[Asserts]</span>
|
||||
<span class="query-type">jsonpath</span> <span class="string">"$.book"</span> <span class="not">not</span> <span class="predicate-type">==</span> <span class="string">"Dune"</span>
|
||||
<span class="query-type">jsonpath</span> <span class="string">"$.book"</span> <span class="predicate-type">==</span> <span class="string">"Dune"</span> <span class="comment"># ==</span>
|
||||
<span class="query-type">jsonpath</span> <span class="string">"$.color"</span> <span class="predicate-type">!=</span> <span class="string">"red"</span> <span class="comment"># !=</span>
|
||||
<span class="query-type">jsonpath</span> <span class="string">"$.year"</span> <span class="predicate-type">></span> <span class="number">1978</span> <span class="comment"># ></span>
|
||||
<span class="query-type">jsonpath</span> <span class="string">"$.year"</span> <span class="predicate-type">>=</span> <span class="number">1978</span> <span class="comment"># >=</span>
|
||||
<span class="query-type">jsonpath</span> <span class="string">"$.year"</span> <span class="predicate-type"><</span> <span class="number">1978</span> <span class="comment"># <</span>
|
||||
<span class="query-type">jsonpath</span> <span class="string">"$.year"</span> <span class="predicate-type"><=</span> <span class="number">1978</span> <span class="comment"># <=</span>
|
||||
<span class="query-type">jsonpath</span> <span class="string">"$.movie"</span> <span class="predicate-type">contains</span> <span class="string">"Empire"</span> <span class="comment"># contains</span>
|
||||
<span class="query-type">bytes</span> <span class="predicate-type">contains</span> hex,<span class="hex">beef</span>; <span class="comment"># contains</span>
|
||||
<span class="query-type">jsonpath</span> <span class="string">"$.movie"</span> <span class="predicate-type">endsWith</span> <span class="string">"Back"</span> <span class="comment"># endsWith</span>
|
||||
<span class="query-type">bytes</span> <span class="predicate-type">endsWith</span> hex,<span class="hex">ab123456</span>; <span class="comment"># endsWith</span>
|
||||
<span class="query-type">jsonpath</span> <span class="string">"$.book"</span> <span class="predicate-type">exists</span> <span class="comment"># exists</span>
|
||||
<span class="query-type">jsonpath</span> <span class="string">"$.nooks"</span> <span class="predicate-type">includes</span> <span class="string">"Dune"</span> <span class="comment"># includes</span>
|
||||
<span class="query-type">jsonpath</span> <span class="string">"$.nooks"</span> <span class="predicate-type">contains</span> <span class="string">"Dune"</span> <span class="comment"># contains</span>
|
||||
<span class="query-type">jsonpath</span> <span class="string">"$.succeeded"</span> <span class="predicate-type">isBoolean</span> <span class="comment"># isBoolean</span>
|
||||
<span class="query-type">jsonpath</span> <span class="string">"$.books"</span> <span class="predicate-type">isCollection</span> <span class="comment"># isCollection</span>
|
||||
<span class="query-type">certificate</span> <span class="string">"Expire-Date"</span> <span class="predicate-type">isDate</span> <span class="comment"># isDate</span>
|
||||
<span class="query-type">jsonpath</span> <span class="string">"$.publication_date"</span> <span class="predicate-type">isIsoDate</span> <span class="comment"># isIsoDate</span>
|
||||
<span class="query-type">jsonpath</span> <span class="string">"$.movies"</span> <span class="predicate-type">isEmpty</span> <span class="comment"># isEmpty</span>
|
||||
<span class="query-type">jsonpath</span> <span class="string">"$.height"</span> <span class="predicate-type">isFloat</span> <span class="comment"># isFloat</span>
|
||||
<span class="query-type">jsonpath</span> <span class="string">"$.count"</span> <span class="predicate-type">isInteger</span> <span class="comment"># isInteger</span>
|
||||
<span class="query-type">jsonpath</span> <span class="string">"$.name"</span> <span class="predicate-type">isString</span> <span class="comment"># isString</span>
|
||||
<span class="query-type">jsonpath</span> <span class="string">"$.release"</span> <span class="predicate-type">matches</span> <span class="string">"\\d{4}"</span> <span class="comment"># matches</span>
|
||||
<span class="query-type">jsonpath</span> <span class="string">"$.release"</span> <span class="predicate-type">matches</span> <span class="regex">/\d{4}/</span> <span class="comment"># matches</span>
|
||||
<span class="query-type">jsonpath</span> <span class="string">"$.movie"</span> <span class="predicate-type">startsWith</span> <span class="string">"The"</span> <span class="comment"># startsWith</span>
|
||||
<span class="query-type">bytes</span> <span class="predicate-type">startsWith</span> hex,<span class="hex">efbbbf</span>; <span class="comment"># startsWith</span>
|
||||
<span class="query-type">jsonpath</span> <span class="string">"$.count"</span> <span class="predicate-type">isNumber</span> <span class="comment"># isNumber</span>
|
||||
<span class="query-type">ip</span> <span class="predicate-type">isIpv6</span> <span class="comment"># isIpv6</span>
|
||||
<span class="query-type">ip</span> <span class="predicate-type">isIpv4</span> <span class="comment"># isIpv4</span>
|
||||
</span></span></code></pre>
|
||||
|
|
|
|||
|
|
@ -1,19 +1,19 @@
|
|||
<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/predicate-value</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">"$.null"</span> <span class="predicate-type">==</span> <span class="null">null</span></span>
|
||||
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.boolean"</span> <span class="predicate-type">==</span> <span class="boolean">true</span></span>
|
||||
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.integer"</span> <span class="predicate-type">==</span> <span class="number">2</span></span>
|
||||
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.float"</span> <span class="predicate-type">==</span> <span class="number">2.5</span></span>
|
||||
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.string"</span> <span class="predicate-type">==</span> <span class="string">"Hello"</span></span>
|
||||
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.template"</span> <span class="predicate-type">==</span> <span class="string">"Hello {{name}}!"</span></span>
|
||||
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.multiline_string"</span> <span class="predicate-type">==</span> <span class="multiline">```</span></span>
|
||||
<span class="line"><span class="multiline">Hello</span></span>
|
||||
<span class="line"><span class="multiline">Bob!</span></span>
|
||||
<span class="line"><span class="multiline">```</span></span>
|
||||
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.hex"</span> <span class="predicate-type">==</span> hex,<span class="hex">010203</span>;</span>
|
||||
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.base64"</span> <span class="predicate-type">==</span> base64,<span class="base64">bGluZTEKbGluZTINCmxpbmUzCg==</span>;</span>
|
||||
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.file"</span> <span class="predicate-type">==</span> file,<span class="filename">data.bin</span>;</span>
|
||||
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.expression"</span> <span class="predicate-type">==</span> <span class="expr">{{expression}}</span></span>
|
||||
</span></span><span class="line"></span>
|
||||
<pre><code class="language-hurl"><span class="entry"><span class="request"><span class="method">GET</span> <span class="url">http://localhost:8000/predicate-value</span>
|
||||
</span><span class="response"><span class="version">HTTP</span> <span class="number">200</span>
|
||||
<span class="section-header">[Asserts]</span>
|
||||
<span class="query-type">jsonpath</span> <span class="string">"$.null"</span> <span class="predicate-type">==</span> <span class="null">null</span>
|
||||
<span class="query-type">jsonpath</span> <span class="string">"$.boolean"</span> <span class="predicate-type">==</span> <span class="boolean">true</span>
|
||||
<span class="query-type">jsonpath</span> <span class="string">"$.integer"</span> <span class="predicate-type">==</span> <span class="number">2</span>
|
||||
<span class="query-type">jsonpath</span> <span class="string">"$.float"</span> <span class="predicate-type">==</span> <span class="number">2.5</span>
|
||||
<span class="query-type">jsonpath</span> <span class="string">"$.string"</span> <span class="predicate-type">==</span> <span class="string">"Hello"</span>
|
||||
<span class="query-type">jsonpath</span> <span class="string">"$.template"</span> <span class="predicate-type">==</span> <span class="string">"Hello {{name}}!"</span>
|
||||
<span class="query-type">jsonpath</span> <span class="string">"$.multiline_string"</span> <span class="predicate-type">==</span> <span class="multiline">```
|
||||
Hello
|
||||
Bob!
|
||||
```</span>
|
||||
<span class="query-type">jsonpath</span> <span class="string">"$.hex"</span> <span class="predicate-type">==</span> hex,<span class="hex">010203</span>;
|
||||
<span class="query-type">jsonpath</span> <span class="string">"$.base64"</span> <span class="predicate-type">==</span> base64,<span class="base64">bGluZTEKbGluZTINCmxpbmUzCg==</span>;
|
||||
<span class="query-type">jsonpath</span> <span class="string">"$.file"</span> <span class="predicate-type">==</span> file,<span class="filename">data.bin</span>;
|
||||
<span class="query-type">jsonpath</span> <span class="string">"$.expression"</span> <span class="predicate-type">==</span> <span class="expr">{{expression}}</span>
|
||||
</span></span>
|
||||
</code></pre>
|
||||
|
|
|
|||
|
|
@ -1,25 +1,25 @@
|
|||
<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">version</span> <span class="predicate-type">==</span> <span class="string">"2"</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"><</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>
|
||||
<pre><code class="language-hurl"><span class="entry"><span class="request"><span class="method">GET</span> <span class="url">http://localhost:8000/hello</span>
|
||||
</span><span class="response"><span class="version">HTTP</span> <span class="number">200</span>
|
||||
<span class="section-header">[Asserts]</span>
|
||||
<span class="query-type">status</span> <span class="predicate-type">==</span> <span class="number">200</span>
|
||||
<span class="query-type">version</span> <span class="predicate-type">==</span> <span class="string">"2"</span>
|
||||
<span class="query-type">url</span> <span class="predicate-type">==</span> <span class="string">"http://localhost8080/hello"</span>
|
||||
<span class="query-type">header</span> <span class="string">"content-type"</span> <span class="predicate-type">==</span> <span class="string">"application/json"</span>
|
||||
<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 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 class="query-type">certificate</span> <span class="string">"Start-Date"</span> <span class="predicate-type">isDate</span>
|
||||
<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 class="query-type">certificate</span> <span class="string">"Expire-Date"</span> <span class="predicate-type">isDate</span>
|
||||
<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 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 class="query-type">cookie</span> <span class="string">"JSESSIONID"</span> <span class="predicate-type">exists</span>
|
||||
<span class="query-type">body</span> <span class="predicate-type">==</span> <span class="string">"Hello"</span>
|
||||
<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 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 class="query-type">regex</span> <span class="string">"name=.*"</span> <span class="predicate-type">==</span> <span class="string">"Bob"</span>
|
||||
<span class="query-type">variable</span> <span class="string">"name"</span> <span class="predicate-type">==</span> <span class="string">"Bob"</span>
|
||||
<span class="query-type">duration</span> <span class="predicate-type"><</span> <span class="number">1000</span>
|
||||
<span class="query-type">sha256</span> <span class="predicate-type">==</span> hex,<span class="hex">7f83b1657ff1fc53b92dc18148a1d65dfc2d4b1fa3d677284addd200126d9069</span>;
|
||||
<span class="query-type">md5</span> <span class="predicate-type">==</span> hex,<span class="hex">ed076287532e86365e841e92bfc50d8c</span>;
|
||||
<span class="query-type">bytes</span> <span class="predicate-type">startsWith</span> hex,<span class="hex">48656c6c6f</span>;
|
||||
</span></span></code></pre>
|
||||
|
|
|
|||
|
|
@ -1,43 +1,43 @@
|
|||
<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 class="string">order</span>: <span class="string">newest</span></span>
|
||||
<span class="line"><span class="string">search</span>: <span class="string">{{custom-search}}</span></span>
|
||||
<span class="line"><span class="string">count</span>: <span class="string">100</span></span>
|
||||
<span class="line"><span class="section-header">[BasicAuth]</span></span>
|
||||
<span class="line"><span class="string">bob</span>: <span class="string">secret</span></span>
|
||||
<span class="line"><span class="section-header">[FormParams]</span></span>
|
||||
<span class="line"><span class="string">default</span>: <span class="string">false</span></span>
|
||||
<span class="line"><span class="string">token</span>: <span class="string">{{token}}</span></span>
|
||||
<span class="line"><span class="string">email</span>: <span class="string">john.doe@rookie.org</span></span>
|
||||
<span class="line"><span class="string">number</span>: <span class="string">33611223344</span></span>
|
||||
<span class="line"><span class="section-header">[MultipartFormData]</span></span>
|
||||
<span class="line"><span class="string">field1</span>: <span class="string">value1</span></span>
|
||||
<span class="line"><span class="string">field2</span>: file,<span class="filename">example.txt</span>;</span>
|
||||
<span class="line"><span class="string">field3</span>: file,<span class="filename">example.zip</span>; <span class="string">application/zip</span></span>
|
||||
<span class="line"><span class="section-header">[Cookies]</span></span>
|
||||
<span class="line"><span class="string">theme</span>: <span class="string">light</span></span>
|
||||
<span class="line"><span class="string">sessionToken</span>: <span class="string">abc123</span></span>
|
||||
<span class="line"><span class="section-header">[Options]</span></span>
|
||||
<span class="line"><span class="string">verbose</span>: <span class="boolean">true</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">variable</span> <span class="string">"count"</span> <span class="predicate-type">==</span> <span class="number">1</span></span>
|
||||
<span class="line"></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="comment"># Empty sections</span></span>
|
||||
<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 class="comment"># FIXME: [BasicAuth] section can't be empty</span></span>
|
||||
<span class="line"><span class="comment">#[BasicAuth]</span></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="section-header">[Captures]</span></span>
|
||||
<span class="line"><span class="section-header">[Asserts]</span></span>
|
||||
<span class="line"><span class="string">`Hello World!`</span></span>
|
||||
<pre><code class="language-hurl"><span class="entry"><span class="request"><span class="method">GET</span> <span class="url">http://localhost:8000/hello</span>
|
||||
<span class="section-header">[QueryStringParams]</span>
|
||||
<span class="string">order</span>: <span class="string">newest</span>
|
||||
<span class="string">search</span>: <span class="string">{{custom-search}}</span>
|
||||
<span class="string">count</span>: <span class="string">100</span>
|
||||
<span class="section-header">[BasicAuth]</span>
|
||||
<span class="string">bob</span>: <span class="string">secret</span>
|
||||
<span class="section-header">[FormParams]</span>
|
||||
<span class="string">default</span>: <span class="string">false</span>
|
||||
<span class="string">token</span>: <span class="string">{{token}}</span>
|
||||
<span class="string">email</span>: <span class="string">john.doe@rookie.org</span>
|
||||
<span class="string">number</span>: <span class="string">33611223344</span>
|
||||
<span class="section-header">[MultipartFormData]</span>
|
||||
<span class="string">field1</span>: <span class="string">value1</span>
|
||||
<span class="string">field2</span>: file,<span class="filename">example.txt</span>;
|
||||
<span class="string">field3</span>: file,<span class="filename">example.zip</span>; <span class="string">application/zip</span>
|
||||
<span class="section-header">[Cookies]</span>
|
||||
<span class="string">theme</span>: <span class="string">light</span>
|
||||
<span class="string">sessionToken</span>: <span class="string">abc123</span>
|
||||
<span class="section-header">[Options]</span>
|
||||
<span class="string">verbose</span>: <span class="boolean">true</span>
|
||||
</span><span class="response"><span class="version">HTTP</span> <span class="number">200</span>
|
||||
<span class="section-header">[Captures]</span>
|
||||
<span class="string">count</span>: <span class="query-type">jsonpath</span> <span class="string">"$.count"</span>
|
||||
<span class="section-header">[Asserts]</span>
|
||||
<span class="query-type">variable</span> <span class="string">"count"</span> <span class="predicate-type">==</span> <span class="number">1</span>
|
||||
|
||||
<span class="string">`Hello World!`</span>
|
||||
</span></span><span class="entry"><span class="request">
|
||||
<span class="comment"># Empty sections</span>
|
||||
<span class="method">GET</span> <span class="url">http://localhost:8000/hello</span>
|
||||
<span class="section-header">[QueryStringParams]</span>
|
||||
<span class="comment"># FIXME: [BasicAuth] section can't be empty</span>
|
||||
<span class="comment">#[BasicAuth]</span>
|
||||
<span class="section-header">[FormParams]</span>
|
||||
<span class="section-header">[MultipartFormData]</span>
|
||||
<span class="section-header">[Cookies]</span>
|
||||
<span class="section-header">[Options]</span>
|
||||
</span><span class="response"><span class="version">HTTP</span> <span class="number">200</span>
|
||||
<span class="section-header">[Captures]</span>
|
||||
<span class="section-header">[Asserts]</span>
|
||||
<span class="string">`Hello World!`</span>
|
||||
</span></span></code></pre>
|
||||
|
|
|
|||
|
|
@ -1,2 +1,2 @@
|
|||
<pre><code class="language-hurl"><span class="line"><span class="comment"># The following line contains a trailing space</span></span>
|
||||
<span class="line"> </span></code></pre>
|
||||
<pre><code class="language-hurl"><span class="comment"># The following line contains a trailing space</span>
|
||||
</code></pre>
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<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/~user</span></span>
|
||||
</span></span><span class="hurl-entry"><span class="request"><span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/%7Euser</span></span>
|
||||
</span></span><span class="hurl-entry"><span class="request"><span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000/!$&()*+,;=:@[]</span></span>
|
||||
</span></span><span class="hurl-entry"><span class="request"><span class="line"><span class="method">GET</span> <span class="url">http://localhost:8000?foo={bar}</span></span>
|
||||
</span></span><span class="hurl-entry"><span class="request"><span class="line"><span class="method">GET</span> <span class="url">{{url}}</span></span>
|
||||
</span></span><span class="hurl-entry"><span class="request"><span class="line"><span class="method">GET</span> <span class="url">{{ url }}</span></span>
|
||||
<pre><code class="language-hurl"><span class="entry"><span class="request"><span class="method">GET</span> <span class="url">http://localhost:8000/~user</span>
|
||||
</span></span><span class="entry"><span class="request"><span class="method">GET</span> <span class="url">http://localhost:8000/%7Euser</span>
|
||||
</span></span><span class="entry"><span class="request"><span class="method">GET</span> <span class="url">http://localhost:8000/!$&()*+,;=:@[]</span>
|
||||
</span></span><span class="entry"><span class="request"><span class="method">GET</span> <span class="url">http://localhost:8000?foo={bar}</span>
|
||||
</span></span><span class="entry"><span class="request"><span class="method">GET</span> <span class="url">{{url}}</span>
|
||||
</span></span><span class="entry"><span class="request"><span class="method">GET</span> <span class="url">{{ url }}</span>
|
||||
</span></span></code></pre>
|
||||
|
|
|
|||
|
|
@ -94,8 +94,8 @@ code {
|
|||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<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>
|
||||
<pre><code class="language-hurl"><span class="entry"><span class="request"><span class="method">GET</span> <span class="url">http://localhost:8000/hello</span>
|
||||
</span><span class="response"><span class="version">HTTP</span> <span class="number">200</span>
|
||||
</span></span></code></pre>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
|||
|
|
@ -98,46 +98,30 @@ mod tests {
|
|||
let content = r#"
|
||||
<pre>
|
||||
<code class="language-hurl">
|
||||
<span class="hurl-entry">
|
||||
<span class="entry">
|
||||
<span class="request">
|
||||
<span class="line">
|
||||
<span class="method">GET</span> <span class="url">http://foo.com</span>
|
||||
</span>
|
||||
<span class="line">
|
||||
<span class="string">x-bar</span><span>:</span> <span class="string">baz</span>
|
||||
</span>
|
||||
<span class="method">GET</span> <span class="url">http://foo.com</span>
|
||||
<span class="string">x-bar</span><span>:</span> <span class="string">baz</span>
|
||||
</span>
|
||||
<span class="response">
|
||||
<span class="line">
|
||||
<span class="version">HTTP</span> <span class="number">200</span>
|
||||
</span>
|
||||
<span class="version">HTTP</span> <span class="number">200</span>
|
||||
</span>
|
||||
</span>
|
||||
<span class="line">
|
||||
</span>
|
||||
</code>
|
||||
</pre>"#;
|
||||
|
||||
let underlined_content = r#"
|
||||
<pre>
|
||||
<code class="language-hurl">
|
||||
<span class="hurl-entry">
|
||||
<span class="entry">
|
||||
<span class="request">
|
||||
<span class="line">
|
||||
<span class="method">GET</span> <span class="url">http://foo.com</span>
|
||||
</span>
|
||||
<span class="line line-error">
|
||||
<span class="string">x-bar</span><span>:</span> <span class="string">baz</span>
|
||||
</span>
|
||||
<span class="method">GET</span> <span class="url">http://foo.com</span>
|
||||
<span class="string">x-bar</span><span>:</span> <span class="string">baz</span>
|
||||
</span>
|
||||
<span class="response">
|
||||
<span class="line">
|
||||
<span class="version">HTTP</span> <span class="number">200</span>
|
||||
</span>
|
||||
<span class="version">HTTP</span> <span class="number">200</span>
|
||||
</span>
|
||||
</span>
|
||||
<span class="line">
|
||||
</span>
|
||||
</code>
|
||||
</pre>"#;
|
||||
|
||||
|
|
|
|||
|
|
@ -186,7 +186,6 @@ pub fn run_par(
|
|||
.output_type
|
||||
.to_output_type(options.include, options.color);
|
||||
let max_width = terminal_size::terminal_size().map(|(w, _)| w.0 as usize);
|
||||
|
||||
let jobs = files
|
||||
.iter()
|
||||
.enumerate()
|
||||
|
|
|
|||
|
|
@ -112,7 +112,7 @@ impl HtmlFormatter {
|
|||
}
|
||||
|
||||
fn fmt_entry(&mut self, entry: &Entry) {
|
||||
self.fmt_span_open("hurl-entry");
|
||||
self.fmt_span_open("entry");
|
||||
self.fmt_request(&entry.request);
|
||||
if let Some(response) = &entry.response {
|
||||
self.fmt_response(response);
|
||||
|
|
@ -123,7 +123,6 @@ impl HtmlFormatter {
|
|||
fn fmt_request(&mut self, request: &Request) {
|
||||
self.fmt_span_open("request");
|
||||
self.fmt_lts(&request.line_terminators);
|
||||
self.fmt_span_open("line");
|
||||
self.fmt_space(&request.space0);
|
||||
self.fmt_method(&request.method);
|
||||
self.fmt_space(&request.space1);
|
||||
|
|
@ -141,7 +140,6 @@ impl HtmlFormatter {
|
|||
fn fmt_response(&mut self, response: &Response) {
|
||||
self.fmt_span_open("response");
|
||||
self.fmt_lts(&response.line_terminators);
|
||||
self.fmt_span_open("line");
|
||||
self.fmt_space(&response.space0);
|
||||
self.fmt_version(&response.version);
|
||||
self.fmt_space(&response.space1);
|
||||
|
|
@ -170,7 +168,6 @@ impl HtmlFormatter {
|
|||
fn fmt_section(&mut self, section: &Section) {
|
||||
self.fmt_lts(§ion.line_terminators);
|
||||
self.fmt_space(§ion.space0);
|
||||
self.fmt_span_open("line");
|
||||
let name = format!("[{}]", section.identifier());
|
||||
self.fmt_span("section-header", &name);
|
||||
self.fmt_lt(§ion.line_terminator0);
|
||||
|
|
@ -200,7 +197,6 @@ impl HtmlFormatter {
|
|||
|
||||
fn fmt_kv(&mut self, kv: &KeyValue) {
|
||||
self.fmt_lts(&kv.line_terminators);
|
||||
self.fmt_span_open("line");
|
||||
self.fmt_space(&kv.space0);
|
||||
self.fmt_template(&kv.key);
|
||||
self.fmt_space(&kv.space1);
|
||||
|
|
@ -212,7 +208,6 @@ impl HtmlFormatter {
|
|||
|
||||
fn fmt_entry_option(&mut self, option: &EntryOption) {
|
||||
self.fmt_lts(&option.line_terminators);
|
||||
self.fmt_span_open("line");
|
||||
self.fmt_space(&option.space0);
|
||||
self.fmt_string(option.kind.identifier());
|
||||
self.fmt_space(&option.space1);
|
||||
|
|
@ -301,7 +296,6 @@ impl HtmlFormatter {
|
|||
|
||||
fn fmt_file_param(&mut self, param: &FilenameParam) {
|
||||
self.fmt_lts(¶m.line_terminators);
|
||||
self.fmt_span_open("line");
|
||||
self.fmt_space(¶m.space0);
|
||||
self.fmt_template(¶m.key);
|
||||
self.fmt_space(¶m.space1);
|
||||
|
|
@ -332,7 +326,6 @@ impl HtmlFormatter {
|
|||
|
||||
fn fmt_cookie(&mut self, cookie: &Cookie) {
|
||||
self.fmt_lts(&cookie.line_terminators);
|
||||
self.fmt_span_open("line");
|
||||
self.fmt_space(&cookie.space0);
|
||||
self.fmt_template(&cookie.name);
|
||||
self.fmt_space(&cookie.space1);
|
||||
|
|
@ -344,7 +337,6 @@ impl HtmlFormatter {
|
|||
|
||||
fn fmt_capture(&mut self, capture: &Capture) {
|
||||
self.fmt_lts(&capture.line_terminators);
|
||||
self.fmt_span_open("line");
|
||||
self.fmt_space(&capture.space0);
|
||||
self.fmt_template(&capture.name);
|
||||
self.fmt_space(&capture.space1);
|
||||
|
|
@ -450,7 +442,6 @@ impl HtmlFormatter {
|
|||
|
||||
fn fmt_assert(&mut self, assert: &Assert) {
|
||||
self.fmt_lts(&assert.line_terminators);
|
||||
self.fmt_span_open("line");
|
||||
self.fmt_space(&assert.space0);
|
||||
self.fmt_query(&assert.query);
|
||||
for (space, filter) in assert.filters.iter() {
|
||||
|
|
@ -542,7 +533,7 @@ impl HtmlFormatter {
|
|||
fn fmt_predicate_value(&mut self, predicate_value: &PredicateValue) {
|
||||
match predicate_value {
|
||||
PredicateValue::String(value) => self.fmt_template(value),
|
||||
PredicateValue::MultilineString(value) => self.fmt_multiline_string(value, false),
|
||||
PredicateValue::MultilineString(value) => self.fmt_multiline_string(value),
|
||||
PredicateValue::Number(value) => self.fmt_number(value.to_source()),
|
||||
PredicateValue::Bool(value) => self.fmt_bool(*value),
|
||||
PredicateValue::File(value) => self.fmt_file(value),
|
||||
|
|
@ -554,36 +545,10 @@ impl HtmlFormatter {
|
|||
};
|
||||
}
|
||||
|
||||
fn fmt_multiline_string(&mut self, multiline_string: &MultilineString, as_body: bool) {
|
||||
fn fmt_multiline_string(&mut self, multiline_string: &MultilineString) {
|
||||
let body = multiline_string.to_source();
|
||||
let mut body = format_lines(body.as_str(), true);
|
||||
if !as_body {
|
||||
// A multiline AST element spans multiple line. When used as an assert, the AST element in
|
||||
// in the middle of the current line:
|
||||
//
|
||||
// ~~~
|
||||
// GET https://foo.com
|
||||
// HTTP 200
|
||||
// [Asserts]
|
||||
// body == ```
|
||||
// line1
|
||||
// line2
|
||||
// ```
|
||||
// ~~~
|
||||
//
|
||||
// We don't want the multiline AST to begin a new `<span clas="line">`
|
||||
// element so we split the multiline AST element in a list of single-line "multiline"
|
||||
// elements. This way, each new multiline element is wrapped in a single line.
|
||||
// NOTE: this still feels hacky to me, I'm not sure that we should add span for lines, it
|
||||
// intermixes an AST hierarchical view and a line oriented HTML view.
|
||||
body = body
|
||||
.strip_prefix("<span class=\"line\">")
|
||||
.unwrap()
|
||||
.strip_suffix("</span>")
|
||||
.unwrap()
|
||||
.to_string();
|
||||
}
|
||||
self.buffer.push_str(&body);
|
||||
let body = escape_xml(body.as_str());
|
||||
self.fmt_span("multiline", &body);
|
||||
}
|
||||
|
||||
fn fmt_body(&mut self, body: &Body) {
|
||||
|
|
@ -601,27 +566,19 @@ impl HtmlFormatter {
|
|||
fn fmt_bytes(&mut self, bytes: &Bytes) {
|
||||
match bytes {
|
||||
Bytes::Base64(value) => {
|
||||
self.fmt_span_open("line");
|
||||
self.fmt_base64(value);
|
||||
self.fmt_span_close();
|
||||
}
|
||||
Bytes::File(value) => {
|
||||
self.fmt_span_open("line");
|
||||
self.fmt_file(value);
|
||||
self.fmt_span_close();
|
||||
}
|
||||
Bytes::Hex(value) => {
|
||||
self.fmt_span_open("line");
|
||||
self.fmt_hex(value);
|
||||
self.fmt_span_close();
|
||||
}
|
||||
Bytes::OnelineString(value) => {
|
||||
self.fmt_span_open("line");
|
||||
self.fmt_template(value);
|
||||
self.fmt_span_close();
|
||||
}
|
||||
Bytes::Json(value) => self.fmt_json_value(value),
|
||||
Bytes::MultilineString(value) => self.fmt_multiline_string(value, true),
|
||||
Bytes::MultilineString(value) => self.fmt_multiline_string(value),
|
||||
Bytes::Xml(value) => self.fmt_xml(value),
|
||||
}
|
||||
}
|
||||
|
|
@ -667,12 +624,13 @@ impl HtmlFormatter {
|
|||
}
|
||||
|
||||
fn fmt_xml(&mut self, value: &str) {
|
||||
let xml = format_lines(value, false);
|
||||
self.fmt_span("xml", &xml);
|
||||
let value = escape_xml(value);
|
||||
self.fmt_span("xml", &value);
|
||||
}
|
||||
|
||||
fn fmt_json_value(&mut self, json_value: &JsonValue) {
|
||||
let json = format_lines(json_value.to_source().as_str(), false);
|
||||
let json = json_value.to_source();
|
||||
let json = escape_xml(json.as_str());
|
||||
self.fmt_span("json", &json);
|
||||
}
|
||||
|
||||
|
|
@ -688,7 +646,6 @@ impl HtmlFormatter {
|
|||
if let Some(v) = <.comment {
|
||||
self.fmt_comment(v);
|
||||
}
|
||||
self.fmt_span_close();
|
||||
self.buffer.push_str(lt.newline.as_str());
|
||||
}
|
||||
|
||||
|
|
@ -812,12 +769,10 @@ impl HtmlFormatter {
|
|||
|
||||
fn fmt_lts(&mut self, line_terminators: &[LineTerminator]) {
|
||||
for lt in line_terminators {
|
||||
self.fmt_span_open("line");
|
||||
self.fmt_space(<.space0);
|
||||
if let Some(v) = <.comment {
|
||||
self.fmt_comment(v);
|
||||
}
|
||||
self.fmt_span_close();
|
||||
if !lt.newline.value.is_empty() {
|
||||
self.buffer.push_str(lt.newline.as_str());
|
||||
}
|
||||
|
|
@ -835,22 +790,6 @@ fn encode_html(s: &str) -> String {
|
|||
s.replace('>', ">").replace('<', "<")
|
||||
}
|
||||
|
||||
fn format_lines(s: &str, use_multiline_class: bool) -> String {
|
||||
regex::Regex::new(r"\n|\r\n")
|
||||
.unwrap()
|
||||
.split(s)
|
||||
.map(|l| {
|
||||
let text = escape_xml(l);
|
||||
if use_multiline_class {
|
||||
format!("<span class=\"line\"><span class=\"multiline\">{text}</span></span>")
|
||||
} else {
|
||||
format!("<span class=\"line\">{text}</span>")
|
||||
}
|
||||
})
|
||||
.collect::<Vec<String>>()
|
||||
.join("\n")
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
|
|
@ -892,69 +831,10 @@ mod tests {
|
|||
kind,
|
||||
};
|
||||
let mut fmt = HtmlFormatter::new();
|
||||
fmt.fmt_multiline_string(&multiline_string, true);
|
||||
fmt.fmt_multiline_string(&multiline_string);
|
||||
assert_eq!(
|
||||
fmt.buffer,
|
||||
"<span class=\"line\">\
|
||||
<span class=\"multiline\">```</span>\
|
||||
</span>\n\
|
||||
<span class=\"line\">\
|
||||
<span class=\"multiline\">line1</span>\
|
||||
</span>\n\
|
||||
<span class=\"line\">\
|
||||
<span class=\"multiline\">line2</span>\
|
||||
</span>\n\
|
||||
<span class=\"line\">\
|
||||
<span class=\"multiline\">```</span>\
|
||||
</span>"
|
||||
);
|
||||
|
||||
let mut fmt = HtmlFormatter::new();
|
||||
fmt.fmt_multiline_string(&multiline_string, false);
|
||||
assert_eq!(
|
||||
fmt.buffer,
|
||||
"<span class=\"multiline\">```</span>\
|
||||
</span>\n\
|
||||
<span class=\"line\">\
|
||||
<span class=\"multiline\">line1</span>\
|
||||
</span>\n\
|
||||
<span class=\"line\">\
|
||||
<span class=\"multiline\">line2</span>\
|
||||
</span>\n\
|
||||
<span class=\"line\">\
|
||||
<span class=\"multiline\">```</span>"
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_multilines() {
|
||||
assert_eq!(
|
||||
format_lines("{\n \"id\": 1\n}", false),
|
||||
"<span class=\"line\">{</span>\n\
|
||||
<span class=\"line\"> \"id\": 1</span>\n\
|
||||
<span class=\"line\">}</span>"
|
||||
);
|
||||
assert_eq!(
|
||||
format_lines("{\n \"id\": 1\n}", true),
|
||||
"<span class=\"line\"><span class=\"multiline\">{</span></span>\n\
|
||||
<span class=\"line\"><span class=\"multiline\"> \"id\": 1</span></span>\n\
|
||||
<span class=\"line\"><span class=\"multiline\">}</span></span>"
|
||||
);
|
||||
|
||||
assert_eq!(
|
||||
format_lines(
|
||||
"<?xml version=\"1.0\"?>\n\
|
||||
<drink>café</drink>",
|
||||
false
|
||||
),
|
||||
"<span class=\"line\"><?xml version=\"1.0\"?></span>\n\
|
||||
<span class=\"line\"><drink>café</drink></span>"
|
||||
);
|
||||
|
||||
assert_eq!(
|
||||
format_lines("Hello\n", false),
|
||||
"<span class=\"line\">Hello</span>\n\
|
||||
<span class=\"line\"></span>"
|
||||
"<span class=\"multiline\">```\nline1\nline2\n```</span>"
|
||||
);
|
||||
}
|
||||
|
||||
|
|
@ -980,14 +860,7 @@ mod tests {
|
|||
}],
|
||||
};
|
||||
fmt.fmt_json_value(&value);
|
||||
assert_eq!(
|
||||
fmt.buffer,
|
||||
"<span class=\"json\">\
|
||||
<span class=\"line\">{</span>\n\
|
||||
<span class=\"line\"> \"id\": 1</span>\n\
|
||||
<span class=\"line\">}</span>\
|
||||
</span>"
|
||||
);
|
||||
assert_eq!(fmt.buffer, "<span class=\"json\">{\n \"id\": 1\n}</span>");
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
|
@ -1002,10 +875,7 @@ mod tests {
|
|||
SourceInfo::new(Pos::new(0, 0), Pos::new(0, 0)),
|
||||
));
|
||||
fmt.fmt_json_value(&value);
|
||||
assert_eq!(
|
||||
fmt.buffer,
|
||||
"<span class=\"json\"><span class=\"line\">\"\\n\"</span></span>"
|
||||
);
|
||||
assert_eq!(fmt.buffer, "<span class=\"json\">\"\\n\"</span>");
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
|
@ -1015,7 +885,7 @@ mod tests {
|
|||
fmt.fmt_xml(value);
|
||||
assert_eq!(
|
||||
fmt.buffer,
|
||||
"<span class=\"xml\"><span class=\"line\"><?xml version=\"1.0\"?></span>\n<span class=\"line\"><drink>café</drink></span></span>"
|
||||
"<span class=\"xml\"><?xml version=\"1.0\"?>\n<drink>café</drink></span>"
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue