aboutsummaryrefslogtreecommitdiff
path: root/server/szurubooru/tests/api/test_post_retrieving.py
diff options
context:
space:
mode:
Diffstat (limited to 'server/szurubooru/tests/api/test_post_retrieving.py')
-rw-r--r--server/szurubooru/tests/api/test_post_retrieving.py149
1 files changed, 85 insertions, 64 deletions
diff --git a/server/szurubooru/tests/api/test_post_retrieving.py b/server/szurubooru/tests/api/test_post_retrieving.py
index 1e4ed03..b64074c 100644
--- a/server/szurubooru/tests/api/test_post_retrieving.py
+++ b/server/szurubooru/tests/api/test_post_retrieving.py
@@ -1,20 +1,24 @@
from datetime import datetime
from unittest.mock import patch
+
import pytest
-from szurubooru import api, db, model, errors
+
+from szurubooru import api, db, errors, model
from szurubooru.func import posts
@pytest.fixture(autouse=True)
def inject_config(config_injector):
- config_injector({
- 'data_url': 'http://example.com/',
- 'secret': 'test',
- 'privileges': {
- 'posts:list': model.User.RANK_REGULAR,
- 'posts:view': model.User.RANK_REGULAR,
- },
- })
+ config_injector(
+ {
+ "data_url": "http://example.com/",
+ "secret": "test",
+ "privileges": {
+ "posts:list": model.User.RANK_REGULAR,
+ "posts:view": model.User.RANK_REGULAR,
+ },
+ }
+ )
def test_retrieving_multiple(user_factory, post_factory, context_factory):
@@ -22,18 +26,20 @@ def test_retrieving_multiple(user_factory, post_factory, context_factory):
post2 = post_factory(id=2)
db.session.add_all([post1, post2])
db.session.flush()
- with patch('szurubooru.func.posts.serialize_post'):
- posts.serialize_post.return_value = 'serialized post'
+ with patch("szurubooru.func.posts.serialize_post"):
+ posts.serialize_post.return_value = "serialized post"
result = api.post_api.get_posts(
context_factory(
- params={'query': '', 'offset': 0},
- user=user_factory(rank=model.User.RANK_REGULAR)))
+ params={"query": "", "offset": 0},
+ user=user_factory(rank=model.User.RANK_REGULAR),
+ )
+ )
assert result == {
- 'query': '',
- 'offset': 0,
- 'limit': 100,
- 'total': 2,
- 'results': ['serialized post', 'serialized post'],
+ "query": "",
+ "offset": 0,
+ "limit": 100,
+ "total": 2,
+ "results": ["serialized post", "serialized post"],
}
@@ -41,83 +47,98 @@ def test_using_special_tokens(user_factory, post_factory, context_factory):
auth_user = user_factory(rank=model.User.RANK_REGULAR)
post1 = post_factory(id=1)
post2 = post_factory(id=2)
- post1.favorited_by = [model.PostFavorite(
- user=auth_user, time=datetime.utcnow())]
+ post1.favorited_by = [
+ model.PostFavorite(user=auth_user, time=datetime.utcnow())
+ ]
db.session.add_all([post1, post2, auth_user])
db.session.flush()
- with patch('szurubooru.func.posts.serialize_post'):
- posts.serialize_post.side_effect = lambda post, *_args, **_kwargs: \
- 'serialized post %d' % post.post_id
+ with patch("szurubooru.func.posts.serialize_post"):
+ posts.serialize_post.side_effect = (
+ lambda post, *_args, **_kwargs: "serialized post %d" % post.post_id
+ )
result = api.post_api.get_posts(
context_factory(
- params={'query': 'special:fav', 'offset': 0},
- user=auth_user))
+ params={"query": "special:fav", "offset": 0}, user=auth_user
+ )
+ )
assert result == {
- 'query': 'special:fav',
- 'offset': 0,
- 'limit': 100,
- 'total': 1,
- 'results': ['serialized post 1'],
+ "query": "special:fav",
+ "offset": 0,
+ "limit": 100,
+ "total": 1,
+ "results": ["serialized post 1"],
}
def test_trying_to_use_special_tokens_without_logging_in(
- user_factory, context_factory, config_injector):
- config_injector({
- 'privileges': {'posts:list': 'anonymous'},
- })
+ user_factory, context_factory, config_injector
+):
+ config_injector(
+ {
+ "privileges": {"posts:list": "anonymous"},
+ }
+ )
with pytest.raises(errors.SearchError):
api.post_api.get_posts(
context_factory(
- params={'query': 'special:fav', 'offset': 0},
- user=user_factory(rank=model.User.RANK_ANONYMOUS)))
+ params={"query": "special:fav", "offset": 0},
+ user=user_factory(rank=model.User.RANK_ANONYMOUS),
+ )
+ )
def test_trying_to_retrieve_multiple_without_privileges(
- user_factory, context_factory):
+ user_factory, context_factory
+):
with pytest.raises(errors.AuthError):
api.post_api.get_posts(
context_factory(
- params={'query': '', 'offset': 0},
- user=user_factory(rank=model.User.RANK_ANONYMOUS)))
+ params={"query": "", "offset": 0},
+ user=user_factory(rank=model.User.RANK_ANONYMOUS),
+ )
+ )
def test_retrieving_single(user_factory, post_factory, context_factory):
db.session.add(post_factory(id=1))
db.session.flush()
- with patch('szurubooru.func.posts.serialize_post'):
- posts.serialize_post.return_value = 'serialized post'
+ with patch("szurubooru.func.posts.serialize_post"):
+ posts.serialize_post.return_value = "serialized post"
result = api.post_api.get_post(
context_factory(user=user_factory(rank=model.User.RANK_REGULAR)),
- {'post_id': 1})
- assert result == 'serialized post'
+ {"post_id": 1},
+ )
+ assert result == "serialized post"
def test_trying_to_retrieve_single_non_existing(user_factory, context_factory):
with pytest.raises(posts.PostNotFoundError):
api.post_api.get_post(
context_factory(user=user_factory(rank=model.User.RANK_REGULAR)),
- {'post_id': 999})
+ {"post_id": 999},
+ )
def test_trying_to_retrieve_single_without_privileges(
- user_factory, context_factory):
+ user_factory, context_factory
+):
with pytest.raises(errors.AuthError):
api.post_api.get_post(
context_factory(user=user_factory(rank=model.User.RANK_ANONYMOUS)),
- {'post_id': 999})
+ {"post_id": 999},
+ )
-@pytest.mark.parametrize('query,expected_id', [
- ('sort:id,asc', 2),
- ('sort:id,asc id:2..', 2),
- ('sort:id,desc id:2..', 3),
- ('sort:id,asc id:3..', 3),
- ('sort:id,desc id:3..', 3),
- ('sort:id id:4..', None),
- ('sort:tag-count', 3),
- ('sort:tag-count,asc id:..2', 1),
- ('sort:tag-count,desc id:..2', 2),
+@pytest.mark.parametrize("query,expected_id", [
+ ("sort:id,asc", 2),
+ ("sort:id,asc id:2..", 2),
+ ("sort:id,desc id:2..", 3),
+ ("sort:id,asc id:3..", 3),
+ ("sort:id,desc id:3..", 3),
+ ("sort:id id:4..", None),
+ ("sort:tag-count", 3),
+ ("sort:tag-count,asc id:..2", 1),
+ ("sort:tag-count,desc id:..2", 2),
])
def test_median(
query,
@@ -134,16 +155,16 @@ def test_median(
post3 = post_factory(id=3, tags=[tag1, tag2])
db.session.add_all([tag1, tag2, tag3, post1, post2, post3])
db.session.flush()
- with patch('szurubooru.func.comments.serialize_comment'), \
- patch('szurubooru.func.users.serialize_micro_user'), \
- patch('szurubooru.func.posts.files.has'):
+ with patch("szurubooru.func.comments.serialize_comment"), \
+ patch("szurubooru.func.users.serialize_micro_user"), \
+ patch("szurubooru.func.posts.files.has"):
response = api.post_api.get_posts_median(
context_factory(
- params={'query': query},
+ params={"query": query},
user=user_factory(rank=model.User.RANK_REGULAR)))
if not expected_id:
- assert response['total'] == 0
- assert len(response['results']) == 0
+ assert response["total"] == 0
+ assert len(response["results"]) == 0
else:
- assert response['total'] == 1
- assert response['results'][0]['id'] == expected_id
+ assert response["total"] == 1
+ assert response["results"][0]["id"] == expected_id

© 2015 - 2026 Jakob L. Kreuze