From ac7dd3fe0708079b9a37d532a397ec9c9c760a70 Mon Sep 17 00:00:00 2001 From: Moritz Kowalski Date: Mon, 16 Jun 2025 15:37:03 +0200 Subject: [PATCH 1/5] Add action workflow --- .gitea/workflows/fastapi-up.yaml | 36 ++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 .gitea/workflows/fastapi-up.yaml diff --git a/.gitea/workflows/fastapi-up.yaml b/.gitea/workflows/fastapi-up.yaml new file mode 100644 index 0000000..9ad9996 --- /dev/null +++ b/.gitea/workflows/fastapi-up.yaml @@ -0,0 +1,36 @@ +name: Test FastAPI Startup + +on: + push: + branches: + - main + pull_request: + branches: + - main + +jobs: + fastapi-up: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: '3.12' + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install -r requirements.txt + pip install uvicorn + + - name: Check FastAPI startup + run: | + uvicorn main:app --host 127.0.0.1 --port 8000 & + sleep 5 + curl --fail http://127.0.0.1:8000/ || (echo 'FastAPI did not start!' && exit 1) + env: + SECRET_KEY: test_secret + DATABASE_FILE: test.db -- 2.47.3 From 821ae31289b20a79e93d314aa5bb3d3fee9e8c7b Mon Sep 17 00:00:00 2001 From: Moritz Kowalski Date: Mon, 16 Jun 2025 15:39:34 +0200 Subject: [PATCH 2/5] Run action on every branch --- .gitea/workflows/fastapi-up.yaml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/.gitea/workflows/fastapi-up.yaml b/.gitea/workflows/fastapi-up.yaml index 9ad9996..c5d4c58 100644 --- a/.gitea/workflows/fastapi-up.yaml +++ b/.gitea/workflows/fastapi-up.yaml @@ -2,11 +2,9 @@ name: Test FastAPI Startup on: push: - branches: - - main + branches: * pull_request: - branches: - - main + branches: * jobs: fastapi-up: -- 2.47.3 From e2bef514846f908a9dadb242df07b50ec4c922f5 Mon Sep 17 00:00:00 2001 From: Moritz Kowalski Date: Mon, 16 Jun 2025 15:42:10 +0200 Subject: [PATCH 3/5] Fix workflow syntax --- .gitea/workflows/fastapi-up.yaml | 50 +++++++++++++++----------------- 1 file changed, 23 insertions(+), 27 deletions(-) diff --git a/.gitea/workflows/fastapi-up.yaml b/.gitea/workflows/fastapi-up.yaml index c5d4c58..a62761b 100644 --- a/.gitea/workflows/fastapi-up.yaml +++ b/.gitea/workflows/fastapi-up.yaml @@ -1,34 +1,30 @@ name: Test FastAPI Startup -on: - push: - branches: * - pull_request: - branches: * +on: [push] jobs: - fastapi-up: - runs-on: ubuntu-latest - steps: - - name: Checkout repository - uses: actions/checkout@v4 + fastapi-up: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 - - name: Set up Python - uses: actions/setup-python@v5 - with: - python-version: '3.12' + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: "3.12" - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install -r requirements.txt - pip install uvicorn + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install -r requirements.txt + pip install uvicorn - - name: Check FastAPI startup - run: | - uvicorn main:app --host 127.0.0.1 --port 8000 & - sleep 5 - curl --fail http://127.0.0.1:8000/ || (echo 'FastAPI did not start!' && exit 1) - env: - SECRET_KEY: test_secret - DATABASE_FILE: test.db + - name: Check FastAPI startup + run: | + uvicorn main:app --host 127.0.0.1 --port 8000 & + sleep 5 + curl --fail http://127.0.0.1:8000/ || (echo 'FastAPI did not start!' && exit 1) + env: + SECRET_KEY: test_secret + DATABASE_FILE: test.db -- 2.47.3 From 3592965deb944f7c18ed6ea1b6af48f68fb342f1 Mon Sep 17 00:00:00 2001 From: Moritz Kowalski Date: Mon, 16 Jun 2025 15:48:43 +0200 Subject: [PATCH 4/5] Add tests --- .gitea/workflows/fastapi-up.yaml | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/.gitea/workflows/fastapi-up.yaml b/.gitea/workflows/fastapi-up.yaml index a62761b..6b927f4 100644 --- a/.gitea/workflows/fastapi-up.yaml +++ b/.gitea/workflows/fastapi-up.yaml @@ -20,11 +20,27 @@ jobs: pip install -r requirements.txt pip install uvicorn - - name: Check FastAPI startup + - name: Check FastAPI startup and protected endpoints run: | uvicorn main:app --host 127.0.0.1 --port 8000 & sleep 5 curl --fail http://127.0.0.1:8000/ || (echo 'FastAPI did not start!' && exit 1) + # Test: /stats should not be available without login + status=$(curl -s -o /dev/null -w "%{http_code}" http://127.0.0.1:8000/stats) + if [ "$status" = "303" ] || [ "$status" = "401" ] || [ "$status" = "403" ]; then + echo "Access to /stats correctly denied for unauthenticated user." + else + echo "Access to /stats should be denied, got status $status" + exit 1 + fi + # Test: POST /drink should not be available without login + status=$(curl -s -o /dev/null -w "%{http_code}" -X POST http://127.0.0.1:8000/drink) + if [ "$status" = "303" ] || [ "$status" = "401" ] || [ "$status" = "403" ]; then + echo "POST to /drink correctly denied for unauthenticated user." + else + echo "POST to /drink should be denied, got status $status" + exit 1 + fi env: SECRET_KEY: test_secret DATABASE_FILE: test.db -- 2.47.3 From 08cc6cea0f841f1ac5367a167705c4a4f8c640e1 Mon Sep 17 00:00:00 2001 From: Moritz Kowalski Date: Mon, 16 Jun 2025 16:02:09 +0200 Subject: [PATCH 5/5] Only run tests on pull requests --- .gitea/workflows/fastapi-up.yaml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/.gitea/workflows/fastapi-up.yaml b/.gitea/workflows/fastapi-up.yaml index 6b927f4..4724c58 100644 --- a/.gitea/workflows/fastapi-up.yaml +++ b/.gitea/workflows/fastapi-up.yaml @@ -1,6 +1,12 @@ name: Test FastAPI Startup -on: [push] +on: + push: + branches: + - main + pull_request: + branches: + - main jobs: fastapi-up: -- 2.47.3