test.bats 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  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. 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
  11. clear_container
  12. [ "$status" -eq 0 ]
  13. }
  14. @test "ldapsearch database from created volumes" {
  15. rm -rf VOLUMES && mkdir -p VOLUMES/config VOLUMES/database
  16. 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)
  17. wait_process_by_cid $LDAP_CID slapd
  18. 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
  19. docker kill $LDAP_CID
  20. [ "$status" -eq 0 ]
  21. 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)
  22. wait_process_by_cid $LDAP_CID slapd
  23. 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
  24. run docker exec $LDAP_CID chown -R $UID:$UID /var/lib/ldap /etc/ldap/slapd.d
  25. docker kill $LDAP_CID
  26. rm -rf VOLUMES
  27. [ "$status" -eq 0 ]
  28. }
  29. @test "ldapsearch new database with strict TLS" {
  30. run_image -h ldap.example.org
  31. wait_process slapd
  32. 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
  33. clear_container
  34. [ "$status" -eq 0 ]
  35. }
  36. @test "ldapsearch new database with strict TLS and custom ca/crt" {
  37. 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
  38. wait_process slapd
  39. 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
  40. clear_container
  41. [ "$status" -eq 0 ]
  42. }
  43. @test "ldapsearch new database with strict TLS and custom ca/crt and custom dhparam" {
  44. 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
  45. wait_process slapd
  46. 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
  47. clear_container
  48. [ "$status" -eq 0 ]
  49. }
  50. @test "ldapsearch existing hdb database and config" {
  51. 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
  52. wait_process slapd
  53. 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
  54. clear_container
  55. [ "$status" -eq 0 ]
  56. }
  57. @test "replication with new databases and strict TLS" {
  58. tmp_file="$BATS_TMPDIR/docker-test"
  59. # replication ldap server
  60. LDAP_REPL_CID=$(docker run -h ldap2.example.org -e LDAP_REPLICATION=true -d $NAME:$VERSION)
  61. LDAP_REPL_IP=$(get_container_ip_by_cid $LDAP_REPL_CID)
  62. sleep 2
  63. # ldap server
  64. run_image -h ldap.example.org -e LDAP_REPLICATION=true
  65. # add route to hosts
  66. docker exec $CONTAINER_ID bash -c "echo $LDAP_REPL_IP ldap2.example.org >> /etc/hosts"
  67. docker exec $LDAP_REPL_CID bash -c "echo $CONTAINER_IP ldap.example.org >> /etc/hosts"
  68. # wait services on both servers
  69. wait_process slapd
  70. wait_process_by_cid $LDAP_REPL_CID slapd
  71. sleep 2
  72. # add user on ldap2.example.org
  73. 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
  74. sleep 5
  75. # search user on ldap.example.org
  76. 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
  77. run grep -c "billy" $tmp_file
  78. rm $tmp_file
  79. clear_container
  80. clear_containers_by_cid $LDAP_REPL_CID
  81. [ "$status" -eq 0 ]
  82. [ "$output" = "6" ]
  83. }