run.sh 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. #!/usr/bin/env bash
  2. set -Eeuo pipefail
  3. dir="$(dirname "$(readlink -f "$BASH_SOURCE")")"
  4. serverImage="$1"
  5. clientImage='buildpack-deps:trixie-curl'
  6. # ensure the clientImage is ready and available
  7. if ! docker image inspect "$clientImage" &> /dev/null; then
  8. docker pull "$clientImage" > /dev/null
  9. fi
  10. mongoImage='mongo:4.0'
  11. # ensure the mongoImage is ready and available
  12. if ! docker image inspect "$mongoImage" &> /dev/null; then
  13. docker pull "$mongoImage" > /dev/null
  14. fi
  15. # Create an instance of the container-under-test
  16. mongoCid="$(docker run -d "$mongoImage")"
  17. trap "docker rm -vf $mongoCid > /dev/null" EXIT
  18. cid="$(docker run \
  19. --detach \
  20. --link "$mongoCid":mongo \
  21. --env ME_CONFIG_BASICAUTH_USERNAME="test-user" \
  22. --env ME_CONFIG_BASICAUTH_PASSWORD="test-password" \
  23. "$serverImage"
  24. )"
  25. trap "docker rm -vf $cid $mongoCid > /dev/null" EXIT
  26. _request() {
  27. local method="$1"
  28. shift
  29. local url="${1#/}"
  30. shift
  31. docker run --rm --link "$cid":me "$clientImage" \
  32. curl -fsL -X"$method" "$@" "http://me:8081/$url"
  33. }
  34. # make sure that mongo-express is listening and ready
  35. . "$dir/../../retry.sh" '_request GET / --output /dev/null --user test-user:test-password'
  36. # if we evetually got a "200 OK" response from mongo-express, it should be ~working fine!
  37. # (since it fails to even start if it can't connect to MongoDB, etc)