mirror of
https://github.com/hasura/graphql-engine.git
synced 2024-12-16 09:51:59 +03:00
1dd63a9386
Co-authored-by: Alexis King <lexi.lambda@gmail.com>
130 lines
3.3 KiB
Bash
Executable File
130 lines
3.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
CIRCLECI_FOLDER="${BASH_SOURCE[0]%/*}"
|
|
cd $CIRCLECI_FOLDER
|
|
CIRCLECI_FOLDER="$PWD"
|
|
|
|
SERVER_ROOT="$CIRCLECI_FOLDER/../server"
|
|
|
|
i=1
|
|
echoInfo() {
|
|
echo -e "\033[36m$i. $*\033[0m"
|
|
i=$[i+1]
|
|
}
|
|
|
|
fail_if_port_busy() {
|
|
local PORT=$1
|
|
if nc -z localhost $PORT ; then
|
|
echo "Port $PORT is busy. Exiting"
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
wait_for_port() {
|
|
local PORT=$1
|
|
echo "waiting for $PORT"
|
|
for _ in $(seq 1 60);
|
|
do
|
|
nc -z localhost $PORT && echo "port $PORT is ready" && return
|
|
echo -n .
|
|
sleep 0.2
|
|
done
|
|
echo "Failed waiting for $PORT" && exit 1
|
|
}
|
|
|
|
test_export_metadata_with_admin_secret() {
|
|
curl -f -d'{"type" : "export_metadata", "args" : {} }' localhost:8080/v1/query -H "X-Hasura-Admin-Secret: $1" > /dev/null
|
|
}
|
|
|
|
cd $SERVER_ROOT
|
|
|
|
if [ -z "${HASURA_GRAPHQL_DATABASE_URL:-}" ] ; then
|
|
echo "Env var HASURA_GRAPHQL_DATABASE_URL is not set"
|
|
exit 1
|
|
fi
|
|
|
|
HGE_PID=""
|
|
|
|
run_hge_with_flags() {
|
|
fail_if_port_busy 8080
|
|
set -x
|
|
stdbuf -o0 "$GRAPHQL_ENGINE" serve $* > "$OUTPUT_FOLDER/graphql-engine.log" & HGE_PID=$!
|
|
set +x
|
|
wait_for_port 8080
|
|
}
|
|
|
|
kill_hge() {
|
|
kill -s INT $HGE_PID || true
|
|
wait $HGE_PID || true
|
|
}
|
|
|
|
trap kill_hge ERR
|
|
trap kill_hge INT
|
|
|
|
OUTPUT_FOLDER=${OUTPUT_FOLDER:-"$CIRCLECI_FOLDER/test-server-flags-output"}
|
|
mkdir -p "$OUTPUT_FOLDER"
|
|
|
|
|
|
########## Test --use-prepared-statements=false and flag --admin-secret
|
|
|
|
key="HGE$RANDOM$RANDOM"
|
|
|
|
run_hge_with_flags --use-prepared-statements=false --admin-secret="$key"
|
|
|
|
echoInfo "Test flag --admin-secret=XXXX"
|
|
grep -F '"admin_secret_set":true' "$OUTPUT_FOLDER/graphql-engine.log" >/dev/null
|
|
test_export_metadata_with_admin_secret "$key"
|
|
|
|
echoInfo "Test flag --use-prepared-statements=false"
|
|
grep -F '"use_prepared_statements":false' "$OUTPUT_FOLDER/graphql-engine.log" >/dev/null
|
|
|
|
kill_hge
|
|
|
|
###### Test --use-prepared-statements=true
|
|
key="HGE$RANDOM$RANDOM"
|
|
|
|
run_hge_with_flags --use-prepared-statements=true
|
|
|
|
echoInfo "Test --use-prepared-statements=true"
|
|
grep -F '"use_prepared_statements":true' "$OUTPUT_FOLDER/graphql-engine.log" >/dev/null || (cat "$OUTPUT_FOLDER/graphql-engine.log" && false)
|
|
|
|
kill_hge
|
|
|
|
######### Test HASURA_GRAPHQL_USE_PREPARED_STATEMENTS=abcd
|
|
|
|
|
|
export HASURA_GRAPHQL_USE_PREPARED_STATEMENTS=abcd
|
|
|
|
fail_if_port_busy 8080
|
|
timeout 3 stdbuf -o0 "$GRAPHQL_ENGINE" serve > "$OUTPUT_FOLDER/graphql-engine.log" 2>&1 & PID=$!
|
|
|
|
wait $PID || true
|
|
|
|
echoInfo "Test HASURA_GRAPHQL_USE_PREPARED_STATEMENTS=abcd"
|
|
grep -F 'Not a valid boolean text' "$OUTPUT_FOLDER/graphql-engine.log" >/dev/null || (cat "$OUTPUT_FOLDER/graphql-engine.log" && false)
|
|
|
|
|
|
######### Test HASURA_GRAPHQL_USE_PREPARED_STATEMENTS=false and HASURA_GRAPHQL_ADMIN_SECRET=XXXX
|
|
key="HGE$RANDOM$RANDOM"
|
|
|
|
export HASURA_GRAPHQL_USE_PREPARED_STATEMENTS=false
|
|
|
|
export HASURA_GRAPHQL_ADMIN_SECRET="$key"
|
|
|
|
run_hge_with_flags
|
|
|
|
echoInfo "Test flag HASURA_GRAPHQL_ADMIN_SECRET=XXXX"
|
|
grep -F '"admin_secret_set":true' "$OUTPUT_FOLDER/graphql-engine.log" >/dev/null || (cat "$OUTPUT_FOLDER/graphql-engine.log" && false)
|
|
test_export_metadata_with_admin_secret "$key"
|
|
|
|
|
|
echoInfo "Test HASURA_GRAPHQL_USE_PREPARED_STATEMENTS=false"
|
|
grep -F '"use_prepared_statements":false' "$OUTPUT_FOLDER/graphql-engine.log" >/dev/null || (cat "$OUTPUT_FOLDER/graphql-engine.log" && false)
|
|
|
|
kill_hge
|
|
|
|
unset HASURA_GRAPHQL_ADMIN_SECRET
|
|
|
|
unset HASURA_GRAPHQL_USE_PREPARED_STATEMENTS
|