test.bats 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208
  1. #!/usr/bin/env bats
  2. load test_helper
  3. @test "image build" {
  4. run build_image
  5. [ "$status" -eq 0 ]
  6. }
  7. @test "ldapsearch new database" {
  8. run_image -h ldap.example.org -e LDAP_TLS=false
  9. wait_process slapd
  10. sleep 5
  11. run docker exec $CONTAINER_ID ldapsearch -x -h ldap.example.org -b dc=example,dc=org -D "cn=admin,dc=example,dc=org" -w admin
  12. clear_container
  13. [ "$status" -eq 0 ]
  14. }
  15. @test "ldap domain with ldap base dn" {
  16. run_image -h ldap.example.org -e LDAP_TLS=false -e LDAP_DOMAIN=example.com -e LDAP_BASE_DN="dc=example,dc=org"
  17. sleep 5
  18. CSTATUS=$(check_container)
  19. clear_container
  20. [ "$CSTATUS" != "running 0" ]
  21. }
  22. @test "ldap domain with ldap base dn subdomain" {
  23. run_image -h ldap.example.fr -e LDAP_TLS=false -e LDAP_DOMAIN=example.fr -e LDAP_BASE_DN="ou=myou,o=example,c=fr"
  24. sleep 5
  25. CSTATUS=$(check_container)
  26. clear_container
  27. [ "$CSTATUS" == "running 0" ]
  28. }
  29. @test "ldap domain with ldap base dn subdomain included" {
  30. run_image -h ldap.example.com -e LDAP_TLS=false -e LDAP_DOMAIN=example.com -e LDAP_BASE_DN="ou=myou,o=example,dc=com,c=fr"
  31. sleep 5
  32. CSTATUS=$(check_container)
  33. clear_container
  34. [ "$CSTATUS" != "running 0" ]
  35. }
  36. @test "ldapsearch database from created volumes" {
  37. rm -rf VOLUMES && mkdir -p VOLUMES/config VOLUMES/database
  38. LDAP_CID=$(docker run -h ldap.example.org -e LDAP_TLS=false --volume $PWD/VOLUMES/database:/var/lib/ldap --volume $PWD/VOLUMES/config:/etc/ldap/slapd.d -d $NAME:$VERSION)
  39. wait_process_by_cid $LDAP_CID slapd
  40. sleep 5
  41. run docker exec $LDAP_CID ldapsearch -x -h ldap.example.org -b dc=example,dc=org -D "cn=admin,dc=example,dc=org" -w admin
  42. docker kill $LDAP_CID
  43. clear_containers_by_cid $LDAP_CID
  44. [ "$status" -eq 0 ]
  45. LDAP_CID=$(docker run -h ldap.example.org -e LDAP_TLS=false --volume $PWD/VOLUMES/database:/var/lib/ldap --volume $PWD/VOLUMES/config:/etc/ldap/slapd.d -d $NAME:$VERSION)
  46. wait_process_by_cid $LDAP_CID slapd
  47. sleep 5
  48. run docker exec $LDAP_CID ldapsearch -x -h ldap.example.org -b dc=example,dc=org -D "cn=admin,dc=example,dc=org" -w admin
  49. run docker exec $LDAP_CID chown -R $UID:$UID /var/lib/ldap /etc/ldap/slapd.d
  50. docker kill $LDAP_CID
  51. rm -rf VOLUMES
  52. clear_containers_by_cid $LDAP_CID
  53. [ "$status" -eq 0 ]
  54. }
  55. @test "ldapsearch database with password provided from file" {
  56. echo "strongPassword" > $PWD/password.txt
  57. run_image -h ldap.osixia.net -e LDAP_ADMIN_PASSWORD_FILE=/run/secrets/admin_pw.txt --volume $PWD/password.txt:/run/secrets/admin_pw.txt
  58. wait_process slapd
  59. sleep 5
  60. run docker exec $CONTAINER_ID ldapsearch -x -h ldap.osixia.net -b dc=example,dc=org -ZZ -D "cn=admin,dc=example,dc=org" -w strongPassword
  61. clear_container
  62. rm $PWD/password.txt
  63. [ "$status" -eq 0 ]
  64. }
  65. @test "ldapsearch new database with strict TLS" {
  66. run_image -h ldap.example.org
  67. wait_process slapd
  68. sleep 5
  69. run docker exec $CONTAINER_ID ldapsearch -x -h ldap.example.org -b dc=example,dc=org -ZZ -D "cn=admin,dc=example,dc=org" -w admin
  70. clear_container
  71. [ "$status" -eq 0 ]
  72. }
  73. @test "ldapsearch new database with strict TLS and custom ca/crt" {
  74. run_image -h ldap.osixia.net -v $BATS_TEST_DIRNAME/ssl:/container/service/slapd/assets/certs -e LDAP_TLS_CRT_FILENAME=ldap-test.crt -e LDAP_TLS_KEY_FILENAME=ldap-test.key -e LDAP_TLS_CA_CRT_FILENAME=ca-test.crt
  75. wait_process slapd
  76. sleep 5
  77. run docker exec $CONTAINER_ID ldapsearch -x -h ldap.osixia.net -b dc=example,dc=org -ZZ -D "cn=admin,dc=example,dc=org" -w admin
  78. clear_container
  79. [ "$status" -eq 0 ]
  80. }
  81. @test "ldapsearch new database with strict TLS and custom ca/crt and custom dhparam" {
  82. run_image -h ldap.osixia.net -v $BATS_TEST_DIRNAME/ssl:/container/service/slapd/assets/certs -e LDAP_TLS_CRT_FILENAME=ldap-test.crt -e LDAP_TLS_KEY_FILENAME=ldap-test.key -e LDAP_TLS_DH_PARAM_FILENAME=ldap-test.dhparam -e LDAP_TLS_CA_CRT_FILENAME=ca-test.crt
  83. wait_process slapd
  84. sleep 5
  85. run docker exec $CONTAINER_ID ldapsearch -x -h ldap.osixia.net -b dc=example,dc=org -ZZ -D "cn=admin,dc=example,dc=org" -w admin
  86. clear_container
  87. [ "$status" -eq 0 ]
  88. }
  89. @test "ldapsearch existing hdb database and config" {
  90. run_image -h ldap.example.org -e LDAP_TLS=false -e LDAP_BACKEND=hdb -v $BATS_TEST_DIRNAME/database:/container/test/database -v $BATS_TEST_DIRNAME/config:/container/test/config
  91. wait_process slapd
  92. sleep 5
  93. run docker exec $CONTAINER_ID ldapsearch -x -h ldap.example.org -b dc=osixia,dc=net -D "cn=admin,dc=osixia,dc=net" -w admin
  94. clear_container
  95. [ "$status" -eq 0 ]
  96. }
  97. @test "replication with new databases and strict TLS" {
  98. tmp_file="$BATS_TMPDIR/docker-test"
  99. # replication ldap server
  100. LDAP_REPL_CID=$(docker run -h ldap2.example.org -e LDAP_REPLICATION=true -d $NAME:$VERSION)
  101. LDAP_REPL_IP=$(get_container_ip_by_cid $LDAP_REPL_CID)
  102. sleep 5
  103. # ldap server
  104. run_image -h ldap.example.org -e LDAP_REPLICATION=true
  105. # add route to hosts
  106. docker exec $CONTAINER_ID bash -c "echo $LDAP_REPL_IP ldap2.example.org >> /etc/hosts"
  107. docker exec $LDAP_REPL_CID bash -c "echo $CONTAINER_IP ldap.example.org >> /etc/hosts"
  108. # wait services on both servers
  109. wait_process slapd
  110. wait_process_by_cid $LDAP_REPL_CID slapd
  111. sleep 5
  112. # add user on ldap2.example.org
  113. docker exec $LDAP_REPL_CID ldapadd -x -D "cn=admin,dc=example,dc=org" -w admin -f /container/service/slapd/assets/test/new-user.ldif -h ldap2.example.org -ZZ
  114. sleep 5
  115. # search user on ldap.example.org
  116. docker exec $CONTAINER_ID ldapsearch -x -h ldap.example.org -b dc=example,dc=org -D "cn=admin,dc=example,dc=org" -w admin -ZZ >> $tmp_file
  117. run grep -c "billy" $tmp_file
  118. rm $tmp_file
  119. clear_container
  120. clear_containers_by_cid $LDAP_REPL_CID
  121. [ "$status" -eq 0 ]
  122. [ "$output" = "6" ]
  123. }