diff --git a/.github/workflows/smoke-tests.yml b/.github/workflows/smoke-tests.yml index b574aaf..1248d4c 100644 --- a/.github/workflows/smoke-tests.yml +++ b/.github/workflows/smoke-tests.yml @@ -14,6 +14,7 @@ jobs: strategy: matrix: test: + - forced-language - git-clone - git-push - healthcheck diff --git a/test/forced-language/anubis.yaml b/test/forced-language/anubis.yaml new file mode 100644 index 0000000..9880a86 --- /dev/null +++ b/test/forced-language/anubis.yaml @@ -0,0 +1,8 @@ +bots: + - name: challenge + user_agent_regex: CHALLENGE + action: CHALLENGE + +status_codes: + CHALLENGE: 200 + DENY: 403 diff --git a/test/forced-language/test.mjs b/test/forced-language/test.mjs new file mode 100644 index 0000000..e64237e --- /dev/null +++ b/test/forced-language/test.mjs @@ -0,0 +1,27 @@ +async function getChallengePage() { + return fetch("http://localhost:8923/reqmeta", { + headers: { + "Accept-Language": "en", + "User-Agent": "CHALLENGE", + } + }) + .then(resp => { + if (resp.status !== 200) { + throw new Error(`wanted status 200, got status: ${resp.status}`); + } + return resp; + }) + .then(resp => resp.text()); +} + +(async () => { + const page = await getChallengePage(); + + if (!page.includes(``)) { + console.log(page) + throw new Error("force language smoke test failed"); + } + + console.log("FORCED_LANGUAGE=de caused a page to be rendered in german"); + process.exit(0); +})(); \ No newline at end of file diff --git a/test/forced-language/test.sh b/test/forced-language/test.sh new file mode 100755 index 0000000..98abad5 --- /dev/null +++ b/test/forced-language/test.sh @@ -0,0 +1,23 @@ +#!/usr/bin/env bash + +set -euo pipefail + +function cleanup() { + pkill -P $$ +} + +trap cleanup EXIT SIGINT + +# Build static assets +(cd ../.. && npm ci && npm run assets) + +go tool anubis --help 2>/dev/null ||: + +go run ../cmd/unixhttpd & + +FORCED_LANGUAGE=de go tool anubis \ + --policy-fname ./anubis.yaml \ + --use-remote-address \ + --target=unix://$(pwd)/unixhttpd.sock & + +backoff-retry node ./test.mjs diff --git a/test/forced-language/var/.gitignore b/test/forced-language/var/.gitignore new file mode 100644 index 0000000..c96a04f --- /dev/null +++ b/test/forced-language/var/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore \ No newline at end of file