"""Candidate sharing/portability journey; synthetic app-only browser checks.""" 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) def test_sharing_conflict_and_account_exit_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 = make_member("sharing-owner", tenant="tenant:sharing-test") reader = make_member("sharing-reader", tenant="tenant:sharing-test") # Dev login uses this same exact issuer/subject association. for member in (owner, reader): member.issuer = "https://local.dev/issuer" member.save() space = create_space(owner, title="Synthetic shared work", slug="shared-browser") put_space_page(owner, space, "notes", title="Notes", body="Original notes") server = request.getfixturevalue("live_server") root = Path(__file__).resolve().parents[2] result = subprocess.run( ["node", str(root / "scripts/test-sharing-browser.mjs"), str(server)], cwd=root, capture_output=True, text=True, timeout=120, ) assert result.returncode == 0, result.stdout + result.stderr