create-docker-test-server.sh 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. #!/usr/bin/env bash
  2. #This script creates a testable Docker enviroment of the Nextcloud server, and is used by the CI for tests.
  3. container_name="nextcloud_test"
  4. port=8080
  5. server_url="http://localhost:${port}"
  6. user="admin"
  7. docker run --rm -d --name $container_name -p $port:80 ghcr.io/juliushaertl/nextcloud-dev-php80:latest
  8. timeout=300
  9. elapsed=0
  10. echo "Waiting for server..."
  11. sleep 2
  12. while true; do
  13. content=$(curl -s $server_url/status.php)
  14. if [[ $content == *"installed\":true"* ]]; then
  15. break
  16. fi
  17. elapsed=$((elapsed + 1))
  18. if [ $elapsed -ge $timeout ]; then
  19. echo "No success after $timeout seconds."
  20. exit 1
  21. fi
  22. sleep 1
  23. done
  24. echo "Server is installed."
  25. echo "Exporting env vars..."
  26. sleep 2
  27. password=$(docker exec -e NC_PASS=$user $container_name sudo -E -u www-data php /var/www/html/occ user:add-app-password $user --password-from-env | tail -1)
  28. export TEST_APP_PASSWORD=$password
  29. export TEST_SERVER_URL=$server_url
  30. export TEST_USER=$user
  31. echo "TEST_SERVER_URL: ${TEST_SERVER_URL}"
  32. echo "TEST_USER: ${TEST_USER}"
  33. echo "TEST_APP_PASSWORD: ${TEST_APP_PASSWORD}"
  34. echo "Env vars exported."