Skip to content

Commit

Permalink
feat: added two scripts to assert nginx responses in CI
Browse files Browse the repository at this point in the history
  • Loading branch information
kennethkalmer committed Dec 6, 2022
1 parent 0a63ec4 commit 48e5679
Show file tree
Hide file tree
Showing 3 changed files with 67 additions and 14 deletions.
17 changes: 3 additions & 14 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -148,20 +148,9 @@ jobs:
- run:
name: Smoke test quick start redirects
command: |
status=$(curl --header "x-forwarded-proto: https" \
--silent --output /dev/null -w "%{http_code}" \
http://localhost:3001/docs/quick-start-guide)
if [ ${status} -ne 200 ]; then
echo "Expect a 200 status code, got ${status}"
exit 1
fi
status=$(curl --header "x-forwarded-proto: https" \
--silent --output /dev/null -w "%{http_code}" \
http://localhost:3001/docs/quick-start-guide/)
if [ ${status} -ne 301 ]; then
echo "Expect a 301 status code, got ${status}"
exit 1
fi
./bin/assert-success.sh /docs/quick-start-guide
./bin/assert-redirect.sh /docs/quick-start-guide/ \
https://localhost/docs/quick-start-guide
workflows:
test_branch:
Expand Down
37 changes: 37 additions & 0 deletions bin/assert-redirect.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
#!/bin/bash

#
# A utility script to assert redirects served up by nginx
#
# Usage: assert-redirects.sh PATH DESTINATION_URL
#
# - PATH - Local URL path, like /docs
# - DESTINATION_URL - Destination URL the direct goes to

FROM=${1}
TO=${2}

if [[ -z $FROM || -z $TO ]]; then
echo "Usage: assert-redirects.sh PATH DESTINATION_URL"
exit 1
fi

OUTPUT=$(curl --header "X-Forwarded-Proto: https" \
--silent --output /dev/null \
--write-out "%{http_code} %{redirect_url}" \
http://localhost:3001${FROM})

CODE=$(echo $OUTPUT | cut -f 1 -d " ")
URL=$(echo $OUTPUT | cut -f 2 -d " ")

if [ ${CODE} -ne 301 ]; then
echo "Expect a 301 status code, got '${CODE}'"
exit 1
fi

if [ ${URL} != ${TO} ]; then
echo "Expected ${FROM} to redirect to ${TO}, got '${URL}' instead"
exit 1
fi

echo "OK: '${FROM}' redirects to '${TO}'"
27 changes: 27 additions & 0 deletions bin/assert-success.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
#!/bin/bash

#
# A utility script to assert successful responses served up by nginx
#
# Usage: assert-success.sh PATH
#
# - PATH - Local URL path, like /docs

URI_PATH=${1}

if [[ -z $URI_PATH ]]; then
echo "Usage: assert-success.sh PATH"
exit 1
fi

CODE=$(curl --header "X-Forwarded-Proto: https" \
--silent --output /dev/null \
--write-out "%{http_code}" \
http://localhost:3001${URI_PATH})

if [ ${CODE} -ne 200 ]; then
echo "Expect a 200 status code, got '${CODE}'"
exit 1
fi

echo "OK: '${URI_PATH}' returned a 200 status code"

0 comments on commit 48e5679

Please sign in to comment.