CI/CD: Gitea Actions — тесты CRM (sqlite) и автодеплой на VPS
ci.yml (push) Invalid workflow file

- crm/tests: 27 тестов через настоящий server.main на sqlite-бэкенде
  (валидация заказов, цена только из каталога, honeypot, дедупликация,
  трекинг и отмена гостем, стоп-лист, аутентификация, гигиена текста,
  гейт расписания бара)
- .gitea/workflows/ci.yml: test-джоба + deploy (только push в main,
  после тестов): rsync кода -> pre-flight docker compose config ->
  pg_dump бэкап БД (ротация 7) -> up -d --build -> health-check
- деплой на neon-bar86.ru идёт деплой-ключом из secrets репозитория
This commit is contained in:
merrow committed 2026-10-11 23:00:20 +05:00
1 parent da5b259d06
commit 881ef45be5
8 files changed
+469

No files matched your search

+35
View File
@@ -0,0 +1,35 @@
# -*- coding: utf-8 -*-
"""Аутентификация и защита приватных эндпоинтов."""
def test_login_wrong_creds(api):
status, body = api.request("POST", "/api/login", {"login": "owner", "password": "nope"})
assert status == 401
assert "error" in body
def test_login_owner_returns_session(owner_token):
assert isinstance(owner_token, str) and len(owner_token) > 20
def test_protected_endpoint_requires_token(api):
status, body = api.request("GET", "/api/menu")
assert status == 401
assert "error" in body
def test_protected_endpoint_with_token(api, owner_token):
status, body = api.request("GET", "/api/menu", token=owner_token)
assert status == 200
def test_healthz_public(api):
status, body = api.request("GET", "/api/healthz")
assert status == 200
assert body.get("ok") is True
def test_unknown_api_path_is_json_404(api):
status, body = api.request("GET", "/api/definitely-not-a-route")
assert status == 404
assert "error" in body