diff options
Diffstat (limited to 'subplot/http.py')
-rw-r--r-- | subplot/http.py | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/subplot/http.py b/subplot/http.py new file mode 100644 index 0000000..5cff887 --- /dev/null +++ b/subplot/http.py @@ -0,0 +1,47 @@ +############################################################################# +# Some helpers to make HTTP requests and examine responses + +import json +import logging +import os +import random +import re +import shutil +import signal +import subprocess +import time +import urllib.parse + +import yaml + + +# Make an HTTP request. +def http_request(ctx, host=None, method=None, url=None): + logging.debug(f"Make HTTP request: {method} {url}") + runcmd(ctx, ["curl", "-ksv", "-X", method, f"-HHost: {host}", url]) + exit_code_is(ctx, 0) + + +# Check status code of latest HTTP request. +def http_status_code_is(ctx, code=None): + logging.debug(f"Verifying status code of previous HTTP request is {code}") + logging.debug(f" stderr={ctx['stderr']}") + pattern = f"\n< HTTP/2 {code} " + assert_eq(pattern in ctx["stderr"], True) + + +# Check a HTTP response header for latest request has a given value. +def http_header_is(ctx, header=None, value=None): + logging.debug(f"Verifying response has header {header}: {value}") + s = ctx["stderr"] + pattern = f"\n< {header}: {value}" + assert_eq(pattern in s, True) + + +# Check a HTTP body response for latest request has a given value. +def http_body_is(ctx, body=None): + logging.debug(f"Verifying response body is {body!r}") + logging.debug(f" actual body={ctx['stdout']!r}") + s = ctx["stdout"] + body = body.encode("UTF8").decode("unicode-escape") + assert_eq(body, s) |