diff --git a/.circleci/config.yml b/.circleci/config.yml index b860f3f224..c5c665b83f 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -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: diff --git a/bin/assert-redirect.sh b/bin/assert-redirect.sh new file mode 100755 index 0000000000..0caa9da221 --- /dev/null +++ b/bin/assert-redirect.sh @@ -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}'" diff --git a/bin/assert-success.sh b/bin/assert-success.sh new file mode 100755 index 0000000000..5802d14718 --- /dev/null +++ b/bin/assert-success.sh @@ -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"