#!/bin/bash set -e # generate certs for testing generateCert() { local DOMAIN="$1" if [[ ! -d certs/"$DOMAIN" ]] ; then mkdir -p certs/"$DOMAIN" cd certs/"$DOMAIN" openssl req -x509 -newkey rsa:4096 -keyout privkey.pem -out fullchain.pem -days 365 -subj "/CN=$DOMAIN" -nodes chmod 777 *.pem cd ../../ fi } registerTestUser() { local userName="$1" local containerName="$2" echo "Registering TestUser '$userName' in container '$containerName'" sudo docker compose exec "$containerName" /bin/bash -c "/entrypoint.bash register $userName example.com 12345678" } registerTestUsers() { local containerName="$1" registerTestUser admin "$containerName" registerTestUser user1 "$containerName" registerTestUser user2 "$containerName" registerTestUser user3 "$containerName" } runTests() { local containerName="$1" python --version \ && python3 --version \ && python3 -m venv venv \ && source venv/bin/activate \ && python --version \ && pip --version \ && pip install -r requirements.txt \ && pytest \ && deactivate \ && sleep 5 \ && sudo docker-compose logs "$containerName" \ && export batsContainerName="$containerName" \ && ./bats/bats-core/bin/bats tests.bats \ && ./bats/bats-core/bin/bats tests-"$containerName".bats } generateCert "example.com" generateCert "conference.example.com" generateCert "proxy.example.com" generateCert "pubsub.example.com" generateCert "upload.example.com" # Run tests for first container with postgres # Start postgres first and wait for 10 seconds before starting prosody. sudo docker-compose down sudo docker-compose up -d postgres sleep 10 sudo docker-compose up -d prosody_postgres registerTestUsers prosody_postgres runTests prosody_postgres sudo docker-compose down # Run tests for second container with SQLite sudo docker-compose up -d prosody registerTestUsers prosody runTests prosody sudo docker-compose down # Run tests for prosody with ldap sudo docker-compose up -d prosody_ldap runTests prosody_ldap sudo docker-compose down