52 lines
2.4 KiB
Bash
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'
|