summaryrefslogtreecommitdiff
path: root/server/szurubooru/tests
diff options
context:
space:
mode:
authorHunternif <hunternif@gmail.com>2025-02-16 01:22:59 +0000
committerHunternif <hunternif@gmail.com>2025-02-16 01:22:59 +0000
commitfb763ada0fb5027f29f003f7dc3261c6b87f30a7 (patch)
tree0b4e921e3014ca6a223469e77695948cb55d63ca /server/szurubooru/tests
parent778db7d510ccb7d772d4ed6677325f784ed96f0b (diff)
server: add privilege posts:list:unsafe, filter unsafe posts for users without privilege
Diffstat (limited to 'server/szurubooru/tests')
-rw-r--r--server/szurubooru/tests/search/configs/test_post_search_config.py39
1 files changed, 39 insertions, 0 deletions
diff --git a/server/szurubooru/tests/search/configs/test_post_search_config.py b/server/szurubooru/tests/search/configs/test_post_search_config.py
index b86fa27..e726f31 100644
--- a/server/szurubooru/tests/search/configs/test_post_search_config.py
+++ b/server/szurubooru/tests/search/configs/test_post_search_config.py
@@ -3,6 +3,12 @@ from datetime import datetime
import pytest
from szurubooru import db, errors, model, search
+from szurubooru.func import cache
+
+
+@pytest.fixture(autouse=True)
+def purge_cache():
+ cache.purge()
@pytest.fixture
@@ -915,3 +921,36 @@ def test_search_by_tag_category(
)
db.session.flush()
verify_unpaged(input, expected_post_ids)
+
+
+def test_filter_unsafe_without_privilege(
+ auth_executor,
+ verify_unpaged,
+ post_factory,
+ config_injector,
+):
+ config_injector(
+ {
+ "privileges": {
+ "posts:list:unsafe": model.User.RANK_REGULAR,
+ }
+ }
+ )
+ post1 = post_factory(id=1)
+ post2 = post_factory(id=2, safety=model.Post.SAFETY_SKETCHY)
+ post3 = post_factory(id=3, safety=model.Post.SAFETY_UNSAFE)
+ db.session.add_all([post1, post2, post3])
+ db.session.flush()
+ user = auth_executor()
+ user.rank = model.User.RANK_ANONYMOUS
+ verify_unpaged("", [1, 2])
+ verify_unpaged("safety:safe", [1])
+ verify_unpaged("safety:safe,sketchy", [1, 2])
+ verify_unpaged("safety:safe,sketchy,unsafe", [1, 2])
+ # adjust user's rank and retry
+ user.rank = model.User.RANK_REGULAR
+ cache.purge()
+ verify_unpaged("", [1, 2, 3])
+ verify_unpaged("safety:safe", [1])
+ verify_unpaged("safety:safe,sketchy", [1, 2])
+ verify_unpaged("safety:safe,sketchy,unsafe", [1, 2, 3])