coulomb-social/tests/usecases/test_attachments_browser.py
tegwick d9da608e65 Add private author-managed attachments with retained revisions
Assistant: codex
Assistant-Model: gpt-6-astra
Assistant-Session: 01a192e9-c28b-7533-bf25-e2341364c22a
2026-10-31 19:38:10 +01:00

36 lines
1.6 KiB
Python

"""Synthetic attachment menu journey through the real application UI."""
import subprocess
from pathlib import Path
import pytest
from coulomb_social.apps.spaces.services import create_space, put_space_page, set_space_access
from tests.test_space_permissions import make_member
@pytest.mark.browser
@pytest.mark.django_db(transaction=True)
def test_attachment_upload_copy_move_download_and_detach_through_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")
owner, reader, outsider = [make_member(n, tenant="tenant:attachment-test")
for n in ("file-author", "file-reader", "file-outsider")]
for member in (owner, reader, outsider):
member.issuer = "https://local.dev/issuer"
member.save()
space = create_space(owner, title="Shared attachments", slug="attachments-shared")
create_space(owner, title="Private destination", slug="attachments-private")
put_space_page(owner, space, "notes", title="Notes", body="Synthetic notes")
set_space_access(owner, space, reader.pk, "viewer")
server = request.getfixturevalue("live_server")
root = Path(__file__).resolve().parents[2]
result = subprocess.run(
["node", str(root / "scripts/test-attachments-browser.mjs"), str(server)],
cwd=root, capture_output=True, text=True, timeout=120,
)
assert result.returncode == 0, result.stdout + result.stderr