1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
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)
|