Some checks failed
Use-case regression gate / usecase-regressions (push) Failing after 6m2s
Assistant: codex Assistant-Model: gpt-6.1-sol Assistant-Session: 01a10e2d-a5ef-7e92-b03d-b1694e915680
51 lines
2.3 KiB
Python
51 lines
2.3 KiB
Python
"""Actual browser user journey against an isolated Django live server."""
|
|
|
|
import json
|
|
import subprocess
|
|
from pathlib import Path
|
|
|
|
import pytest
|
|
|
|
from coulomb_social.apps.members.models import Member, User
|
|
from coulomb_social.apps.spaces import pageops
|
|
from coulomb_social.apps.spaces.models import SpaceMembership
|
|
from coulomb_social.apps.spaces.services import create_space, put_space_page
|
|
|
|
ROOT = Path(__file__).resolve().parents[2]
|
|
SCENARIO = ROOT / "tests/usecases/fixtures/reichelag-weekly-call.json"
|
|
|
|
|
|
@pytest.mark.usecase("CSOC-UC-008")
|
|
@pytest.mark.browser
|
|
@pytest.mark.django_db(transaction=True)
|
|
def test_weekly_call_through_real_ui(tmp_path, settings, request):
|
|
settings.DEBUG = True
|
|
settings.OIDC_ENABLED = False
|
|
settings.USER_ENGINE_BASE_URL = ""
|
|
settings.FLEX_AUTH_BASE_URL = ""
|
|
settings.FORGEJO_BASE_URL = ""
|
|
settings.CONTENT_ROOT = str(tmp_path / "content")
|
|
settings.STATIC_ROOT = str(tmp_path / "static")
|
|
scenario = json.loads(SCENARIO.read_text(encoding="utf-8"))
|
|
actors = {}
|
|
for role in ("writer", "reader", "outsider"):
|
|
subject = scenario[f"{role}_subject"]
|
|
actors[role] = Member.objects.create(
|
|
user=User.objects.create_user(username=subject), tenant_id=scenario["tenant"],
|
|
user_engine_user_id=subject, issuer="https://local.dev/issuer", subject=subject,
|
|
)
|
|
space = create_space(actors["writer"], title=scenario["space_title"],
|
|
slug=scenario["space_slug"])
|
|
put_space_page(actors["writer"], space, scenario["previous_slug"],
|
|
title=scenario["previous_title"], body=scenario["previous_body"])
|
|
SpaceMembership.objects.create(space=space, member=actors["reader"], role="viewer")
|
|
server = request.getfixturevalue("live_server")
|
|
result = subprocess.run(
|
|
["node", str(ROOT / "scripts/test-usecase-browser.mjs"), str(server), str(SCENARIO)],
|
|
cwd=ROOT, capture_output=True, text=True, timeout=120,
|
|
)
|
|
assert result.returncode == 0, result.stdout + result.stderr
|
|
# Browser POSTs must persist the new protocol without changing the old one.
|
|
assert (pageops.read_page(space.slug, scenario["previous_slug"]).body
|
|
== scenario["previous_body"])
|
|
assert pageops.read_page(space.slug, scenario["next_slug"]).body == scenario["next_body"]
|