fix: making testing end-to-end
This commit is contained in:
@@ -13,5 +13,84 @@ jobs:
|
|||||||
- name: Build the stack
|
- name: Build the stack
|
||||||
run: docker-compose up -d
|
run: docker-compose up -d
|
||||||
|
|
||||||
- name: In 30 seconds, check docker ps
|
- name: Wait for 30 seconds
|
||||||
run: sleep 30 && docker ps
|
run: sleep 30
|
||||||
|
|
||||||
|
- name: Check for restarting containers in a loop
|
||||||
|
run: |
|
||||||
|
ATTEMPTS=30 # Total time = ATTEMPTS * 5 seconds = 30 seconds
|
||||||
|
for i in $(seq 1 $ATTEMPTS); do
|
||||||
|
RESTARTING_CONTAINERS=$(docker ps --filter "status=restarting" --format "{{.Names}}")
|
||||||
|
if [ -n "$RESTARTING_CONTAINERS" ]; then
|
||||||
|
echo "The following containers are restarting:"
|
||||||
|
echo "$RESTARTING_CONTAINERS"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
echo "No containers are restarting. Attempt $i/$ATTEMPTS."
|
||||||
|
sleep 1
|
||||||
|
done
|
||||||
|
echo "No containers were found in a restarting state after $ATTEMPTS checks."
|
||||||
|
|
||||||
|
- name: Check if the response from the web service includes "Shuffle"
|
||||||
|
run: |
|
||||||
|
RESPONSE=$(curl -s http://localhost:3001)
|
||||||
|
if echo "$RESPONSE" | grep -q "Shuffle"; then
|
||||||
|
echo "The word 'Shuffle' was found in the response."
|
||||||
|
else
|
||||||
|
echo "The word 'Shuffle' was not found in the response."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
- name: Register a user and check the status code
|
||||||
|
run: |
|
||||||
|
STATUS_CODE=$(curl -s -o /dev/null -w "%{http_code}" 'http://localhost:3001/api/v1/register' \
|
||||||
|
-H 'Accept: */*' \
|
||||||
|
-H 'Accept-Language: en-US,en;q=0.9' \
|
||||||
|
-H 'Connection: keep-alive' \
|
||||||
|
-H 'Content-Type: application/json' \
|
||||||
|
--data-raw '{"username":"demo@demo.io","password":"supercoolpassword"}')
|
||||||
|
if [ "$STATUS_CODE" -eq 200 ]; then
|
||||||
|
echo "User registration was successful with status code 200."
|
||||||
|
else
|
||||||
|
echo "User registration failed with status code $STATUS_CODE."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
- name: Get the API key and run a health check
|
||||||
|
run: |
|
||||||
|
RESPONSE=$(curl -s -k -u admin:StrongShufflePassword321! 'https://localhost:9200/users/_search')
|
||||||
|
API_KEY=$(echo "$RESPONSE" | jq -r '.hits.hits[0]._source.apikey')
|
||||||
|
if [ -n "$API_KEY" ]; then
|
||||||
|
echo "Admin API key: $API_KEY"
|
||||||
|
else
|
||||||
|
echo "Failed to retrieve the API key for the admin user."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
HEALTH_RESPONSE=$(curl -s 'http://localhost:3001/api/v1/health?force=true' \
|
||||||
|
-H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7' \
|
||||||
|
-H 'Accept-Language: en-US,en;q=0.9' \
|
||||||
|
-H 'Connection: keep-alive' \
|
||||||
|
-H 'Sec-Fetch-Dest: document' \
|
||||||
|
-H 'Sec-Fetch-Mode: navigate' \
|
||||||
|
-H 'Sec-Fetch-Site: none' \
|
||||||
|
-H "Authorization: Bearer $API_KEY" \
|
||||||
|
-H 'Sec-Fetch-User: ?1' \
|
||||||
|
-H 'Upgrade-Insecure-Requests: 1' \
|
||||||
|
-H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36' \
|
||||||
|
-H 'sec-ch-ua: "Chromium";v="124", "Google Chrome";v="124", "Not-A.Brand";v="99"' \
|
||||||
|
-H 'sec-ch-ua-mobile: ?0' \
|
||||||
|
-H 'sec-ch-ua-platform: "macOS"')
|
||||||
|
|
||||||
|
WORKFLOWS_CREATE=$(echo "$HEALTH_RESPONSE" | jq -r '.workflows.create')
|
||||||
|
WORKFLOWS_RUN=$(echo "$HEALTH_RESPONSE" | jq -r '.workflows.run')
|
||||||
|
WORKFLOWS_RUN_FINISHED=$(echo "$HEALTH_RESPONSE" | jq -r '.workflows.run_finished')
|
||||||
|
WORKFLOWS_RUN_STATUS=$(echo "$HEALTH_RESPONSE" | jq -r '.workflows.run_status')
|
||||||
|
WORKFLOWS_DELETE=$(echo "$HEALTH_RESPONSE" | jq -r '.workflows.delete')
|
||||||
|
|
||||||
|
if [ "$WORKFLOWS_CREATE" = "true" ] && [ "$WORKFLOWS_RUN" = "true" ] && [ "$WORKFLOWS_RUN_FINISHED" = "true" ] && [ "$WORKFLOWS_RUN_STATUS" = "FINISHED" ] && [ "$WORKFLOWS_DELETE" = "true" ]; then
|
||||||
|
echo "Health endpoint check was successful."
|
||||||
|
else
|
||||||
|
echo "Health endpoint check failed. Response did not meet expected criteria."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|||||||
Reference in New Issue
Block a user