mirror of
https://github.com/Av0idD4rk/firegex.git
synced 2026-10-23 16:31:00 +00:00
66 lines
2.7 KiB
Bash
Executable File
66 lines
2.7 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
cd "$(dirname "$0")"
|
|
|
|
TMP=$1
|
|
if [[ "$TMP" == "--set-pass" ]]; then
|
|
PASSWORD="testpassword"
|
|
else
|
|
PASSWORD=${TMP:-testpassword}
|
|
fi
|
|
ERROR=0
|
|
|
|
# Where the instance under test is. CI starts it on the default port; an env var so a
|
|
# local instance on another port can be tested without editing this file, and without
|
|
# every script below growing its own way of being told.
|
|
ADDRESS=${FIREGEX_ADDRESS:-http://127.0.0.1:4444/}
|
|
ADDRESS=${ADDRESS%/}/
|
|
|
|
pip3 install -r requirements.txt
|
|
|
|
until curl --output /dev/null --silent --fail "${ADDRESS}api/status"; do
|
|
printf '.'
|
|
sleep 1
|
|
done
|
|
if [[ "$TMP" == "--set-pass" ]]; then
|
|
curl -X POST "${ADDRESS}api/set-password" -H "Content-Type: application/json" -d "{\"password\": \"$PASSWORD\"}" -s
|
|
echo ""
|
|
fi
|
|
|
|
# Needs no running instance, only libhs — but a broken match library would make every
|
|
# service test below fail in a way that is much harder to read, so it goes first.
|
|
echo "Running the firegex.regex library test"
|
|
python3 regex_lib_test.py || ERROR=1
|
|
# The library's own behaviour, with no instance and no libhs: the HTTP models, and the
|
|
# knobs a filter file is documented to be able to set.
|
|
echo "Running the firegex.pyfilters library tests"
|
|
python3 -m pytest -q test_http_history.py || ERROR=1
|
|
echo "Running standard API test"
|
|
python3 api_test.py -p $PASSWORD -a $ADDRESS || ERROR=1
|
|
|
|
# The two network layers, exercised with the same filters. Running both is the point:
|
|
# a filter that only works on one of them is the failure this whole model exists to
|
|
# make impossible.
|
|
echo "Running Services on the proxy layer, ipv4"
|
|
python3 services_test.py -p $PASSWORD -a $ADDRESS -t proxy || ERROR=1
|
|
echo "Running Services on the proxy layer, ipv6"
|
|
python3 services_test.py -p $PASSWORD -a $ADDRESS -t proxy -6 || ERROR=1
|
|
echo "Running Services on the NFQUEUE layer, ipv4"
|
|
python3 services_test.py -p $PASSWORD -a $ADDRESS -t nfqueue || ERROR=1
|
|
echo "Running Services on the NFQUEUE layer, ipv6"
|
|
python3 services_test.py -p $PASSWORD -a $ADDRESS -t nfqueue -6 || ERROR=1
|
|
# Only the proxy layer: decrypting means terminating the connection, which is what that
|
|
# layer does. The NFQUEUE run used to exist because nginx terminated in front of it.
|
|
echo "Running Services behind TLS, proxy layer"
|
|
python3 services_test.py -p $PASSWORD -a $ADDRESS -t proxy --tls || ERROR=1
|
|
echo "Running Services behind TLS, proxy layer, ipv6"
|
|
python3 services_test.py -p $PASSWORD -a $ADDRESS -t proxy --tls -6 || ERROR=1
|
|
echo "Running Services handing off to an external proxy"
|
|
python3 services_test.py -p $PASSWORD -a $ADDRESS -t external || ERROR=1
|
|
echo "Running Services handing off to an external proxy, ipv6"
|
|
python3 services_test.py -p $PASSWORD -a $ADDRESS -t external -6 || ERROR=1
|
|
|
|
|
|
exit $ERROR
|
|
|