test.bats 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  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 new database with strict TLS" {
  15. run_image -h ldap.example.org
  16. wait_process slapd
  17. 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
  18. clear_container
  19. [ "$status" -eq 0 ]
  20. }
  21. @test "ldapsearch new database with strict TLS and custom ca/crt" {
  22. 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
  23. wait_process slapd
  24. 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
  25. clear_container
  26. chmod 777 -R test/config/ test/database/ test/ssl/
  27. [ "$status" -eq 0 ]
  28. }
  29. @test "ldapsearch existing database and config" {
  30. run_image -h ldap.example.org -e LDAP_TLS=false -v $BATS_TEST_DIRNAME/database:/var/lib/ldap -v $BATS_TEST_DIRNAME/config:/etc/ldap/slapd.d
  31. wait_process slapd
  32. 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
  33. clear_container
  34. chmod 777 -R test/config/ test/database/ test/ssl/
  35. [ "$status" -eq 0 ]
  36. }
  37. @test "replication with new databases and strict TLS" {
  38. tmp_file="$BATS_TMPDIR/docker-test"
  39. # replication ldap server
  40. LDAP_REPL_CID=$(docker run -h ldap2.example.org -e LDAP_REPLICATION=true -d $NAME:$VERSION)
  41. LDAP_REPL_IP=$(get_container_ip_by_cid $LDAP_REPL_CID)
  42. sleep 2
  43. # ldap server
  44. run_image -h ldap.example.org -e LDAP_REPLICATION=true
  45. # add route to hosts
  46. docker exec $CONTAINER_ID bash -c "echo $LDAP_REPL_IP ldap2.example.org >> /etc/hosts"
  47. docker exec $LDAP_REPL_CID bash -c "echo $CONTAINER_IP ldap.example.org >> /etc/hosts"
  48. # wait services on both servers
  49. wait_process slapd
  50. wait_process_by_cid $LDAP_REPL_CID slapd
  51. # add user on ldap2.example.org
  52. 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
  53. sleep 5
  54. # search user on ldap.example.org
  55. 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
  56. run grep -c "billy" $tmp_file
  57. rm $tmp_file
  58. clear_container
  59. clear_containers_by_cid $LDAP_REPL_CID
  60. [ "$status" -eq 0 ]
  61. [ "$output" = "6" ]
  62. }