"""Synthetic attachment menu journey through the real application UI.""" import json import subprocess from pathlib import Path import pytest from coulomb_social.apps.spaces.services import create_space, put_space_page from tests.test_space_permissions import make_member @pytest.mark.browser @pytest.mark.django_db(transaction=True) @pytest.mark.usecase("CSOC-UC-005") 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") scenario = json.loads((Path(__file__).parent / "fixtures/space-sharing.json").read_text()) owner, reader, outsider = [make_member(scenario[key]["subject"], tenant=scenario[key]["tenant"]) for key in ("owner", "reader", "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") server = request.getfixturevalue("live_server") root = Path(__file__).resolve().parents[2] result = subprocess.run( ["node", str(root / "scripts/test-attachments-browser.mjs"), str(server), str(reader.pk)], cwd=root, capture_output=True, text=True, timeout=120, ) assert result.returncode == 0, result.stdout + result.stderr