Fix PostgreSQL file visibility queries

This commit is contained in:
2026-08-04 01:04:39 +02:00
parent d8ae506ff8
commit 04882f1628
2 changed files with 34 additions and 6 deletions
+18
View File
@@ -5,6 +5,7 @@ from datetime import timedelta
from unittest.mock import patch
from sqlalchemy import create_engine
from sqlalchemy.dialects import postgresql
from sqlalchemy.orm import sessionmaker
from govoplan_access.backend.db.models import Account, Group, User
@@ -13,6 +14,7 @@ from govoplan_core.db.base import Base
from govoplan_files.backend.db.models import FileAsset, FileShare
from govoplan_files.backend.storage.common import FileStorageError, utcnow
from govoplan_files.backend.storage.files import (
_asset_visibility_query_for_user,
get_asset_for_user,
list_file_shares,
revoke_file_share,
@@ -214,6 +216,22 @@ class FileShareLifecycleTests(unittest.TestCase):
expires_at=utcnow() - timedelta(seconds=1),
)
@patch(
"govoplan_files.backend.storage.files.user_group_ids",
return_value=[],
)
def test_visibility_query_is_postgresql_json_safe(self, _groups) -> None:
query = _asset_visibility_query_for_user(
self.session,
tenant_id=TENANT_ID,
user_id=RECIPIENT_ID,
)
compiled = str(query.statement.compile(dialect=postgresql.dialect()))
self.assertNotIn("SELECT DISTINCT", compiled.upper())
self.assertIn("EXISTS", compiled.upper())
if __name__ == "__main__":
unittest.main()