Files
NeoTachyon/tests/config_validator_reference.sh

52 lines
2.4 KiB
Bash

#!/usr/bin/env bash
set -eo pipefail
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
TACHYON_LIB="$ROOT_DIR/tachyon/files/usr/lib"
VALIDATOR="$ROOT_DIR/tachyon/files/usr/lib/config/validator.uc"
COMMUNITY_SERVICES="youtube twitter telegram"
fail() {
printf 'FAIL: %s\n' "$1" >&2
exit 1
}
assert_accepts() {
local label="$1"
shift
ucode -L "$TACHYON_LIB" "$VALIDATOR" "$@" >/dev/null ||
fail "$label should be accepted"
}
assert_rejects() {
local label="$1"
shift
if ucode -L "$TACHYON_LIB" "$VALIDATOR" "$@" >/dev/null 2>&1; then
fail "$label should be rejected"
fi
}
assert_accepts "known community service" community-service-valid twitter "$COMMUNITY_SERVICES"
assert_rejects "unknown community service" community-service-valid unknown "$COMMUNITY_SERVICES"
assert_accepts "empty ruleset reference" ruleset-reference-valid "" "$COMMUNITY_SERVICES"
assert_accepts "community ruleset reference" ruleset-reference-valid telegram "$COMMUNITY_SERVICES"
assert_accepts "https ruleset reference" ruleset-reference-valid https://example.com/rule.srs "$COMMUNITY_SERVICES"
assert_accepts "extensionless https ruleset reference" ruleset-reference-valid https://example.com/download "$COMMUNITY_SERVICES"
assert_accepts "https plain list as ruleset reference" ruleset-reference-valid https://example.com/list.lst "$COMMUNITY_SERVICES"
assert_accepts "https plain list with query as ruleset reference" ruleset-reference-valid "https://example.com/list.txt?token=1" "$COMMUNITY_SERVICES"
assert_accepts "absolute srs ruleset reference" ruleset-reference-valid /tmp/rule.srs "$COMMUNITY_SERVICES"
assert_accepts "absolute json ruleset reference" ruleset-reference-valid /tmp/rule.json "$COMMUNITY_SERVICES"
assert_rejects "relative ruleset reference" ruleset-reference-valid relative/rule.srs "$COMMUNITY_SERVICES"
assert_accepts "plain list as ruleset reference" ruleset-reference-valid /tmp/rule.lst "$COMMUNITY_SERVICES"
assert_accepts "empty plain list reference" plain-domain-ip-list-reference-valid ""
assert_accepts "https plain list reference" plain-domain-ip-list-reference-valid https://example.com/list.lst
assert_accepts "absolute plain list reference" plain-domain-ip-list-reference-valid /tmp/list.lst
assert_rejects "ruleset as plain list reference" plain-domain-ip-list-reference-valid /tmp/rule.srs
assert_rejects "relative plain list reference" plain-domain-ip-list-reference-valid relative/list.lst
printf 'config validator reference checks passed\n'