Co-authored-by: Jason Walker <913443@dadeschools.net> Co-committed-by: Jason Walker <913443@dadeschools.net>
This commit was merged in pull request #97.
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
"""Fixtures for the opt-in Docker/local Gitea integration suite (#66).
|
||||
|
||||
Everything here is inert unless GITEA_INTEGRATION=1 — the test modules carry
|
||||
a module-level skipif, so a default ``pytest tests/ -q`` run never touches the
|
||||
network and never needs Docker.
|
||||
|
||||
Required environment (see tests/integration/README.md):
|
||||
- GITEA_INTEGRATION=1 opt-in switch
|
||||
- GITEA_INTEGRATION_URL base URL (default http://localhost:3003)
|
||||
- GITEA_INTEGRATION_TOKEN API token for the *local test* instance
|
||||
|
||||
The token is a throwaway credential for the disposable container. It is never
|
||||
printed, logged, or asserted on. Production credentials must never be used.
|
||||
"""
|
||||
import os
|
||||
import sys
|
||||
import uuid
|
||||
from pathlib import Path
|
||||
|
||||
import pytest
|
||||
|
||||
sys.path.insert(0, str(Path(__file__).resolve().parent.parent.parent))
|
||||
|
||||
from gitea_auth import api_request # noqa: E402
|
||||
|
||||
ENABLED = os.environ.get("GITEA_INTEGRATION") == "1"
|
||||
|
||||
|
||||
def _base_url():
|
||||
return os.environ.get("GITEA_INTEGRATION_URL", "http://localhost:3003").rstrip("/")
|
||||
|
||||
|
||||
@pytest.fixture(scope="session")
|
||||
def gitea():
|
||||
"""Session facts: base URL, auth header string, authenticated login."""
|
||||
token = os.environ.get("GITEA_INTEGRATION_TOKEN")
|
||||
if not token:
|
||||
pytest.fail(
|
||||
"GITEA_INTEGRATION=1 but GITEA_INTEGRATION_TOKEN is unset; "
|
||||
"run tests/integration/gitea-integration token"
|
||||
)
|
||||
base = _base_url()
|
||||
auth = f"token {token}"
|
||||
me = api_request("GET", f"{base}/api/v1/user", auth)
|
||||
return {"base": base, "auth": auth, "login": me["login"]}
|
||||
|
||||
|
||||
@pytest.fixture(scope="session")
|
||||
def seed_repo(gitea):
|
||||
"""Create a disposable, uniquely-named repo; delete it on teardown."""
|
||||
name = f"inttest-{uuid.uuid4().hex[:8]}"
|
||||
repo = api_request(
|
||||
"POST", f"{gitea['base']}/api/v1/user/repos", gitea["auth"],
|
||||
payload={"name": name, "auto_init": True,
|
||||
"description": "gitea-tools #66 integration seed (disposable)"},
|
||||
)
|
||||
owner = repo["owner"]["login"]
|
||||
yield {"owner": owner, "name": name,
|
||||
"api": f"{gitea['base']}/api/v1/repos/{owner}/{name}"}
|
||||
# Teardown: best-effort delete; a leaked repo is visible and disposable.
|
||||
try:
|
||||
api_request("DELETE", f"{gitea['base']}/api/v1/repos/{owner}/{name}",
|
||||
gitea["auth"])
|
||||
except RuntimeError:
|
||||
pass
|
||||
Reference in New Issue
Block a user