2
0

ssl_dhparam.bats 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. #!/usr/bin/env bats
  2. load test_helpers
  3. function setup {
  4. # make sure to stop any web container before each test so we don't
  5. # have any unexpected contaiener running with VIRTUAL_HOST or VIRUTAL_PORT set
  6. stop_bats_containers web
  7. }
  8. @test "[$TEST_FILE] test dhparam.pem is generated if missing" {
  9. SUT_CONTAINER=bats-nginx-proxy-${TEST_FILE}-1
  10. # WHEN
  11. run docker_clean $SUT_CONTAINER \
  12. && docker run -d \
  13. --label bats-type="nginx-proxy" \
  14. --name $SUT_CONTAINER \
  15. -v /var/run/docker.sock:/tmp/docker.sock:ro \
  16. -e DHPARAM_BITS=256 \
  17. $SUT_IMAGE \
  18. && wait_for_nginxproxy_container_to_start $SUT_CONTAINER \
  19. && docker logs $SUT_CONTAINER
  20. DEFAULT_HASH=$(docker exec $SUT_CONTAINER md5sum /app/dhparam.pem.default | cut -d" " -f1)
  21. assert_success
  22. docker_wait_for_log $SUT_CONTAINER 30 "Generating DH parameters"
  23. # THEN
  24. docker_wait_for_log $SUT_CONTAINER 240 "dhparam generation complete, reloading nginx"
  25. run docker exec $SUT_CONTAINER su -c "md5sum /etc/nginx/dhparam/dhparam.pem"
  26. refute_output -p $DEFAULT_HASH
  27. }
  28. @test "[$TEST_FILE] test dhparam.pem is generated if default one is present" {
  29. SUT_CONTAINER=bats-nginx-proxy-${TEST_FILE}-2
  30. # Copy the default dhparams to a volume and mount it in to ensure it's regenerated
  31. TMP_DIR=/tmp/nginx-proxy-bats
  32. if [ ! -d $TMP_DIR ]; then
  33. mkdir $TMP_DIR
  34. fi
  35. # If the previous test crashed, a dhparam is left that only root can delete, so we
  36. # delete it from within a container as root
  37. if [ -f $TMP_DIR/dhparam.pem ]; then
  38. docker run --rm -v $TMP_DIR:/opt busybox rm /opt/dhparam.pem
  39. fi
  40. cp $DIR/../dhparam.pem.default $TMP_DIR/dhparam.pem
  41. # WHEN
  42. run docker_clean $SUT_CONTAINER \
  43. && docker run -d \
  44. --label bats-type="nginx-proxy" \
  45. --name $SUT_CONTAINER \
  46. -v /var/run/docker.sock:/tmp/docker.sock:ro \
  47. -v $TMP_DIR:/etc/nginx/dhparam \
  48. -e DHPARAM_BITS=256 \
  49. $SUT_IMAGE \
  50. && wait_for_nginxproxy_container_to_start $SUT_CONTAINER \
  51. && docker logs $SUT_CONTAINER
  52. # THEN
  53. assert_success
  54. docker_wait_for_log $SUT_CONTAINER 30 "Generating DH parameters"
  55. docker exec $SUT_CONTAINER rm -rf /etc/nginx/dhparam/*
  56. }
  57. @test "[$TEST_FILE] test dhparam.pem is not generated if custom one is present" {
  58. SUT_CONTAINER=bats-nginx-proxy-${TEST_FILE}-3
  59. # WHEN
  60. run nginxproxy $SUT_CONTAINER -v /var/run/docker.sock:/tmp/docker.sock:ro
  61. assert_success
  62. docker_wait_for_log $SUT_CONTAINER 9 "Watching docker events"
  63. sleep 3
  64. run docker logs $SUT_CONTAINER
  65. # THEN
  66. refute_output -p "Generating DH parameters"
  67. }
  68. @test "[$TEST_FILE] stop all bats containers" {
  69. stop_bats_containers
  70. }