diff --git a/Dockerfile b/gcups/Dockerfile similarity index 100% rename from Dockerfile rename to gcups/Dockerfile diff --git a/db.txt b/gcups/db.txt similarity index 100% rename from db.txt rename to gcups/db.txt diff --git a/init.sh b/gcups/init.sh similarity index 100% rename from init.sh rename to gcups/init.sh diff --git a/populate-db.py b/gcups/populate-db.py similarity index 100% rename from populate-db.py rename to gcups/populate-db.py diff --git a/tests/__pycache__/run-webserver.cpython-310-pytest-7.3.1.pyc b/tests/__pycache__/run-webserver.cpython-310-pytest-7.3.1.pyc new file mode 100644 index 0000000..b77b7eb Binary files /dev/null and b/tests/__pycache__/run-webserver.cpython-310-pytest-7.3.1.pyc differ diff --git a/tests/run-webserver.py b/tests/run-webserver.py new file mode 100644 index 0000000..043c9e8 --- /dev/null +++ b/tests/run-webserver.py @@ -0,0 +1,33 @@ +import pytest +import requests +import docker +import time +from os import environ + + +def wait_for_webserver(max_retries: int) -> requests.Response: + for i in range(max_retries): + try: + response = requests.get("http://localhost:8080") + response.raise_for_status() + return response + except requests.exceptions.ConnectionError: + time.sleep(1) + else: + pytest.fail("Failed to connect to the webserver") + + +def test_webserver() -> None: + client = docker.from_env() + container = client.containers.run( + environ["GCUPS_DOCKER_IMAGE"], + ports={"8080/tcp": 8080}, + detach=True, + remove=True, + ) + + server_response = wait_for_webserver(30) + assert server_response.status_code == 200 + + container.kill() + client.close()