summaryrefslogtreecommitdiff
path: root/http.py
diff options
context:
space:
mode:
Diffstat (limited to 'http.py')
-rw-r--r--http.py45
1 files changed, 45 insertions, 0 deletions
diff --git a/http.py b/http.py
new file mode 100644
index 0000000..fd552a6
--- /dev/null
+++ b/http.py
@@ -0,0 +1,45 @@
+#############################################################################
+# 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}")
+ 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}")
+ s = ctx["stdout"]
+ body = body.encode("UTF8").decode("unicode-escape")
+ assert_eq(body, s)