actions: add basic sanity check for api & web

This commit is contained in:
dumbmoron 2024-05-17 16:12:35 +00:00
parent 0e45540ac1
commit b1f781d000
No known key found for this signature in database
2 changed files with 98 additions and 0 deletions

73
.github/test.sh vendored Executable file
View file

@ -0,0 +1,73 @@
#!/bin/bash
set -e
# thx: https://stackoverflow.com/a/27601038
waitport() {
ATTEMPTS=50
while [ $((ATTEMPTS-=1)) -gt 0 ] && ! nc -z localhost $1; do
sleep 0.1
done
[ "$ATTEMPTS" != 0 ] || exit 1
}
test_api() {
waitport 3000
curl -m 3 http://localhost:3000/api/serverInfo
API_RESPONSE=$(curl -m 3 http://localhost:3000/api/json \
-X POST \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"url":"https://www.youtube.com/watch?v=jNQXAC9IVRw"}')
echo "$API_RESPONSE"
STATUS=$(echo "$API_RESPONSE" | jq -r .status)
STREAM_URL=$(echo "$API_RESPONSE" | jq -r .url)
[ "$STATUS" = stream ] || exit 1;
CONTENT_LENGTH=$(curl -I -m 3 "$STREAM_URL" \
| grep -i content-length \
| cut -d' ' -f2 \
| tr -d '\r')
echo "$CONTENT_LENGTH"
[ "$CONTENT_LENGTH" = 0 ] && exit 1
if [ "$CONTENT_LENGTH" -lt 512 ]; then
exit 1
fi
}
test_web() {
waitport 3001
curl -m 3 http://127.0.0.1:3001/onDemand?blockId=0 \
| grep -q '"status":"success"'
}
setup_api() {
export API_PORT=3000
export API_URL=http://localhost:3000
timeout 10 npm run start
}
setup_web() {
export WEB_PORT=3001
export WEB_URL=http://localhost:3001
export API_URL=http://localhost:3000
timeout 5 npm run start
}
cd "$(git rev-parse --show-toplevel)"
npm i
if [ "$1" = "api" ]; then
setup_api &
test_api
elif [ "$1" = "web" ]; then
setup_web &
test_web
else
echo "usage: $0 <api/web>" >&2
exit 1
fi
wait || exit $?

25
.github/workflows/test.yml vendored Normal file
View file

@ -0,0 +1,25 @@
name: Run tests
on:
pull_request:
push:
branches: [ current ]
jobs:
test-web:
name: web sanity check
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Run test script
run: .github/test.sh web
test-api:
name: api sanity check
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Run test script
run: .github/test.sh api