2026-10-31 19:38:10 +01:00
|
|
|
"""Synthetic attachment menu journey through the real application UI."""
|
|
|
|
|
|
2026-11-01 20:48:33 +01:00
|
|
|
import json
|
2026-10-31 19:38:10 +01:00
|
|
|
import subprocess
|
|
|
|
|
from pathlib import Path
|
|
|
|
|
|
|
|
|
|
import pytest
|
|
|
|
|
|
2026-11-01 20:48:33 +01:00
|
|
|
from coulomb_social.apps.spaces.services import create_space, put_space_page
|
2026-10-31 19:38:10 +01:00
|
|
|
from tests.test_space_permissions import make_member
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@pytest.mark.browser
|
|
|
|
|
@pytest.mark.django_db(transaction=True)
|
2026-11-01 20:48:33 +01:00
|
|
|
@pytest.mark.usecase("CSOC-UC-005")
|
2026-10-31 19:38:10 +01:00
|
|
|
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")
|
2026-11-01 20:48:33 +01:00
|
|
|
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")]
|
2026-10-31 19:38:10 +01:00
|
|
|
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(
|
2026-11-01 20:48:33 +01:00
|
|
|
["node", str(root / "scripts/test-attachments-browser.mjs"), str(server), str(reader.pk)],
|
2026-10-31 19:38:10 +01:00
|
|
|
cwd=root, capture_output=True, text=True, timeout=120,
|
|
|
|
|
)
|
|
|
|
|
assert result.returncode == 0, result.stdout + result.stderr
|