diff options
| author | rr- | 2017-02-04 01:08:12 +0100 |
|---|---|---|
| committer | rr- | 2017-02-05 16:34:45 +0100 |
| commit | ad842ee8a54c57463b8e28b52970f173ea1d64ea (patch) | |
| tree | 1238e8270878801a2ddb10bc4db469115c026cab /server/szurubooru/tests | |
| parent | abf1fc2b2d135299fe7e8a700d4e7a18966d7bfe (diff) | |
server: refactor + add type hinting
- Added type hinting (for now, 3.5-compatible)
- Split `db` namespace into `db` module and `model` namespace
- Changed elastic search to be created lazily for each operation
- Changed to class based approach in entity serialization to allow
stronger typing
- Removed `required` argument from `context.get_*` family of functions;
now it's implied if `default` argument is omitted
- Changed `unalias_dict` implementation to use less magic inputs
Diffstat (limited to 'server/szurubooru/tests')
44 files changed, 536 insertions, 527 deletions
diff --git a/server/szurubooru/tests/api/test_comment_creating.py b/server/szurubooru/tests/api/test_comment_creating.py index c7d0b0f..ad24366 100644 --- a/server/szurubooru/tests/api/test_comment_creating.py +++ b/server/szurubooru/tests/api/test_comment_creating.py @@ -1,19 +1,20 @@ from datetime import datetime from unittest.mock import patch import pytest -from szurubooru import api, db, errors +from szurubooru import api, db, model, errors from szurubooru.func import comments, posts @pytest.fixture(autouse=True) def inject_config(config_injector): - config_injector({'privileges': {'comments:create': db.User.RANK_REGULAR}}) + config_injector( + {'privileges': {'comments:create': model.User.RANK_REGULAR}}) def test_creating_comment( user_factory, post_factory, context_factory, fake_datetime): post = post_factory() - user = user_factory(rank=db.User.RANK_REGULAR) + user = user_factory(rank=model.User.RANK_REGULAR) db.session.add_all([post, user]) db.session.flush() with patch('szurubooru.func.comments.serialize_comment'), \ @@ -24,7 +25,7 @@ def test_creating_comment( params={'text': 'input', 'postId': post.post_id}, user=user)) assert result == 'serialized comment' - comment = db.session.query(db.Comment).one() + comment = db.session.query(model.Comment).one() assert comment.text == 'input' assert comment.creation_time == datetime(1997, 1, 1) assert comment.last_edit_time is None @@ -41,7 +42,7 @@ def test_creating_comment( def test_trying_to_pass_invalid_params( user_factory, post_factory, context_factory, params): post = post_factory() - user = user_factory(rank=db.User.RANK_REGULAR) + user = user_factory(rank=model.User.RANK_REGULAR) db.session.add_all([post, user]) db.session.flush() real_params = {'text': 'input', 'postId': post.post_id} @@ -63,11 +64,11 @@ def test_trying_to_omit_mandatory_field(user_factory, context_factory, field): api.comment_api.create_comment( context_factory( params={}, - user=user_factory(rank=db.User.RANK_REGULAR))) + user=user_factory(rank=model.User.RANK_REGULAR))) def test_trying_to_comment_non_existing(user_factory, context_factory): - user = user_factory(rank=db.User.RANK_REGULAR) + user = user_factory(rank=model.User.RANK_REGULAR) db.session.add_all([user]) db.session.flush() with pytest.raises(posts.PostNotFoundError): @@ -81,4 +82,4 @@ def test_trying_to_create_without_privileges(user_factory, context_factory): api.comment_api.create_comment( context_factory( params={}, - user=user_factory(rank=db.User.RANK_ANONYMOUS))) + user=user_factory(rank=model.User.RANK_ANONYMOUS))) diff --git a/server/szurubooru/tests/api/test_comment_deleting.py b/server/szurubooru/tests/api/test_comment_deleting.py index efb432a..e1d1baa 100644 --- a/server/szurubooru/tests/api/test_comment_deleting.py +++ b/server/szurubooru/tests/api/test_comment_deleting.py @@ -1,5 +1,5 @@ import pytest -from szurubooru import api, db, errors +from szurubooru import api, db, model, errors from szurubooru.func import comments @@ -7,8 +7,8 @@ from szurubooru.func import comments def inject_config(config_injector): config_injector({ 'privileges': { - 'comments:delete:own': db.User.RANK_REGULAR, - 'comments:delete:any': db.User.RANK_MODERATOR, + 'comments:delete:own': model.User.RANK_REGULAR, + 'comments:delete:any': model.User.RANK_MODERATOR, }, }) @@ -22,26 +22,26 @@ def test_deleting_own_comment(user_factory, comment_factory, context_factory): context_factory(params={'version': 1}, user=user), {'comment_id': comment.comment_id}) assert result == {} - assert db.session.query(db.Comment).count() == 0 + assert db.session.query(model.Comment).count() == 0 def test_deleting_someones_else_comment( user_factory, comment_factory, context_factory): - user1 = user_factory(rank=db.User.RANK_REGULAR) - user2 = user_factory(rank=db.User.RANK_MODERATOR) + user1 = user_factory(rank=model.User.RANK_REGULAR) + user2 = user_factory(rank=model.User.RANK_MODERATOR) comment = comment_factory(user=user1) db.session.add(comment) db.session.commit() api.comment_api.delete_comment( context_factory(params={'version': 1}, user=user2), {'comment_id': comment.comment_id}) - assert db.session.query(db.Comment).count() == 0 + assert db.session.query(model.Comment).count() == 0 def test_trying_to_delete_someones_else_comment_without_privileges( user_factory, comment_factory, context_factory): - user1 = user_factory(rank=db.User.RANK_REGULAR) - user2 = user_factory(rank=db.User.RANK_REGULAR) + user1 = user_factory(rank=model.User.RANK_REGULAR) + user2 = user_factory(rank=model.User.RANK_REGULAR) comment = comment_factory(user=user1) db.session.add(comment) db.session.commit() @@ -49,7 +49,7 @@ def test_trying_to_delete_someones_else_comment_without_privileges( api.comment_api.delete_comment( context_factory(params={'version': 1}, user=user2), {'comment_id': comment.comment_id}) - assert db.session.query(db.Comment).count() == 1 + assert db.session.query(model.Comment).count() == 1 def test_trying_to_delete_non_existing(user_factory, context_factory): @@ -57,5 +57,5 @@ def test_trying_to_delete_non_existing(user_factory, context_factory): api.comment_api.delete_comment( context_factory( params={'version': 1}, - user=user_factory(rank=db.User.RANK_REGULAR)), + user=user_factory(rank=model.User.RANK_REGULAR)), {'comment_id': 1}) diff --git a/server/szurubooru/tests/api/test_comment_rating.py b/server/szurubooru/tests/api/test_comment_rating.py index 981e0dd..aae5e24 100644 --- a/server/szurubooru/tests/api/test_comment_rating.py +++ b/server/szurubooru/tests/api/test_comment_rating.py @@ -1,17 +1,18 @@ from unittest.mock import patch import pytest -from szurubooru import api, db, errors +from szurubooru import api, db, model, errors from szurubooru.func import comments @pytest.fixture(autouse=True) def inject_config(config_injector): - config_injector({'privileges': {'comments:score': db.User.RANK_REGULAR}}) + config_injector( + {'privileges': {'comments:score': model.User.RANK_REGULAR}}) def test_simple_rating( user_factory, comment_factory, context_factory, fake_datetime): - user = user_factory(rank=db.User.RANK_REGULAR) + user = user_factory(rank=model.User.RANK_REGULAR) comment = comment_factory(user=user) db.session.add(comment) db.session.commit() @@ -22,14 +23,14 @@ def test_simple_rating( context_factory(params={'score': 1}, user=user), {'comment_id': comment.comment_id}) assert result == 'serialized comment' - assert db.session.query(db.CommentScore).count() == 1 + assert db.session.query(model.CommentScore).count() == 1 assert comment is not None assert comment.score == 1 def test_updating_rating( user_factory, comment_factory, context_factory, fake_datetime): - user = user_factory(rank=db.User.RANK_REGULAR) + user = user_factory(rank=model.User.RANK_REGULAR) comment = comment_factory(user=user) db.session.add(comment) db.session.commit() @@ -42,14 +43,14 @@ def test_updating_rating( api.comment_api.set_comment_score( context_factory(params={'score': -1}, user=user), {'comment_id': comment.comment_id}) - comment = db.session.query(db.Comment).one() - assert db.session.query(db.CommentScore).count() == 1 + comment = db.session.query(model.Comment).one() + assert db.session.query(model.CommentScore).count() == 1 assert comment.score == -1 def test_updating_rating_to_zero( user_factory, comment_factory, context_factory, fake_datetime): - user = user_factory(rank=db.User.RANK_REGULAR) + user = user_factory(rank=model.User.RANK_REGULAR) comment = comment_factory(user=user) db.session.add(comment) db.session.commit() @@ -62,14 +63,14 @@ def test_updating_rating_to_zero( api.comment_api.set_comment_score( context_factory(params={'score': 0}, user=user), {'comment_id': comment.comment_id}) - comment = db.session.query(db.Comment).one() - assert db.session.query(db.CommentScore).count() == 0 + comment = db.session.query(model.Comment).one() + assert db.session.query(model.CommentScore).count() == 0 assert comment.score == 0 def test_deleting_rating( user_factory, comment_factory, context_factory, fake_datetime): - user = user_factory(rank=db.User.RANK_REGULAR) + user = user_factory(rank=model.User.RANK_REGULAR) comment = comment_factory(user=user) db.session.add(comment) db.session.commit() @@ -82,15 +83,15 @@ def test_deleting_rating( api.comment_api.delete_comment_score( context_factory(user=user), {'comment_id': comment.comment_id}) - comment = db.session.query(db.Comment).one() - assert db.session.query(db.CommentScore).count() == 0 + comment = db.session.query(model.Comment).one() + assert db.session.query(model.CommentScore).count() == 0 assert comment.score == 0 def test_ratings_from_multiple_users( user_factory, comment_factory, context_factory, fake_datetime): - user1 = user_factory(rank=db.User.RANK_REGULAR) - user2 = user_factory(rank=db.User.RANK_REGULAR) + user1 = user_factory(rank=model.User.RANK_REGULAR) + user2 = user_factory(rank=model.User.RANK_REGULAR) comment = comment_factory() db.session.add_all([user1, user2, comment]) db.session.commit() @@ -103,8 +104,8 @@ def test_ratings_from_multiple_users( api.comment_api.set_comment_score( context_factory(params={'score': -1}, user=user2), {'comment_id': comment.comment_id}) - comment = db.session.query(db.Comment).one() - assert db.session.query(db.CommentScore).count() == 2 + comment = db.session.query(model.Comment).one() + assert db.session.query(model.CommentScore).count() == 2 assert comment.score == 0 @@ -125,7 +126,7 @@ def test_trying_to_update_non_existing(user_factory, context_factory): api.comment_api.set_comment_score( context_factory( params={'score': 1}, - user=user_factory(rank=db.User.RANK_REGULAR)), + user=user_factory(rank=model.User.RANK_REGULAR)), {'comment_id': 5}) @@ -138,5 +139,5 @@ def test_trying_to_rate_without_privileges( api.comment_api.set_comment_score( context_factory( params={'score': 1}, - user=user_factory(rank=db.User.RANK_ANONYMOUS)), + user=user_factory(rank=model.User.RANK_ANONYMOUS)), {'comment_id': comment.comment_id}) diff --git a/server/szurubooru/tests/api/test_comment_retrieving.py b/server/szurubooru/tests/api/test_comment_retrieving.py index 908e9eb..e0378fa 100644 --- a/server/szurubooru/tests/api/test_comment_retrieving.py +++ b/server/szurubooru/tests/api/test_comment_retrieving.py @@ -1,6 +1,6 @@ from unittest.mock import patch import pytest -from szurubooru import api, db, errors +from szurubooru import api, db, model, errors from szurubooru.func import comments @@ -8,8 +8,8 @@ from szurubooru.func import comments def inject_config(config_injector): config_injector({ 'privileges': { - 'comments:list': db.User.RANK_REGULAR, - 'comments:view': db.User.RANK_REGULAR, + 'comments:list': model.User.RANK_REGULAR, + 'comments:view': model.User.RANK_REGULAR, }, }) @@ -24,7 +24,7 @@ def test_retrieving_multiple(user_factory, comment_factory, context_factory): result = api.comment_api.get_comments( context_factory( params={'query': '', 'page': 1}, - user=user_factory(rank=db.User.RANK_REGULAR))) + user=user_factory(rank=model.User.RANK_REGULAR))) assert result == { 'query': '', 'page': 1, @@ -40,7 +40,7 @@ def test_trying_to_retrieve_multiple_without_privileges( api.comment_api.get_comments( context_factory( params={'query': '', 'page': 1}, - user=user_factory(rank=db.User.RANK_ANONYMOUS))) + user=user_factory(rank=model.User.RANK_ANONYMOUS))) def test_retrieving_single(user_factory, comment_factory, context_factory): @@ -51,7 +51,7 @@ def test_retrieving_single(user_factory, comment_factory, context_factory): comments.serialize_comment.return_value = 'serialized comment' result = api.comment_api.get_comment( context_factory( - user=user_factory(rank=db.User.RANK_REGULAR)), + user=user_factory(rank=model.User.RANK_REGULAR)), {'comment_id': comment.comment_id}) assert result == 'serialized comment' @@ -60,7 +60,7 @@ def test_trying_to_retrieve_single_non_existing(user_factory, context_factory): with pytest.raises(comments.CommentNotFoundError): api.comment_api.get_comment( context_factory( - user=user_factory(rank=db.User.RANK_REGULAR)), + user=user_factory(rank=model.User.RANK_REGULAR)), {'comment_id': 5}) @@ -68,5 +68,5 @@ def test_trying_to_retrieve_single_without_privileges( user_factory, context_factory): with pytest.raises(errors.AuthError): api.comment_api.get_comment( - context_factory(user=user_factory(rank=db.User.RANK_ANONYMOUS)), + context_factory(user=user_factory(rank=model.User.RANK_ANONYMOUS)), {'comment_id': 5}) diff --git a/server/szurubooru/tests/api/test_comment_updating.py b/server/szurubooru/tests/api/test_comment_updating.py index 5f3d12b..761b1ce 100644 --- a/server/szurubooru/tests/api/test_comment_updating.py +++ b/server/szurubooru/tests/api/test_comment_updating.py @@ -1,7 +1,7 @@ from datetime import datetime from unittest.mock import patch import pytest -from szurubooru import api, db, errors +from szurubooru import api, db, model, errors from szurubooru.func import comments @@ -9,15 +9,15 @@ from szurubooru.func import comments def inject_config(config_injector): config_injector({ 'privileges': { - 'comments:edit:own': db.User.RANK_REGULAR, - 'comments:edit:any': db.User.RANK_MODERATOR, + 'comments:edit:own': model.User.RANK_REGULAR, + 'comments:edit:any': model.User.RANK_MODERATOR, }, }) def test_simple_updating( user_factory, comment_factory, context_factory, fake_datetime): - user = user_factory(rank=db.User.RANK_REGULAR) + user = user_factory(rank=model.User.RANK_REGULAR) comment = comment_factory(user=user) db.session.add(comment) db.session.commit() @@ -73,14 +73,14 @@ def test_trying_to_update_non_existing(user_factory, context_factory): api.comment_api.update_comment( context_factory( params={'text': 'new text'}, - user=user_factory(rank=db.User.RANK_REGULAR)), + user=user_factory(rank=model.User.RANK_REGULAR)), {'comment_id': 5}) def test_trying_to_update_someones_comment_without_privileges( user_factory, comment_factory, context_factory): - user = user_factory(rank=db.User.RANK_REGULAR) - user2 = user_factory(rank=db.User.RANK_REGULAR) + user = user_factory(rank=model.User.RANK_REGULAR) + user2 = user_factory(rank=model.User.RANK_REGULAR) comment = comment_factory(user=user) db.session.add(comment) db.session.commit() @@ -93,8 +93,8 @@ def test_trying_to_update_someones_comment_without_privileges( def test_updating_someones_comment_with_privileges( user_factory, comment_factory, context_factory): - user = user_factory(rank=db.User.RANK_REGULAR) - user2 = user_factory(rank=db.User.RANK_MODERATOR) + user = user_factory(rank=model.User.RANK_REGULAR) + user2 = user_factory(rank=model.User.RANK_MODERATOR) comment = comment_factory(user=user) db.session.add(comment) db.session.commit() diff --git a/server/szurubooru/tests/api/test_password_reset.py b/server/szurubooru/tests/api/test_password_reset.py index 52b568d..e46dbbe 100644 --- a/server/szurubooru/tests/api/test_password_reset.py +++ b/server/szurubooru/tests/api/test_password_reset.py @@ -1,6 +1,6 @@ from unittest.mock import patch import pytest -from szurubooru import api, db, errors +from szurubooru import api, db, model, errors from szurubooru.func import auth, mailer @@ -15,7 +15,7 @@ def inject_config(config_injector): def test_reset_sending_email(context_factory, user_factory): db.session.add(user_factory( - name='u1', rank=db.User.RANK_REGULAR, email='user@example.com')) + name='u1', rank=model.User.RANK_REGULAR, email='user@example.com')) db.session.flush() for initiating_user in ['u1', 'user@example.com']: with patch('szurubooru.func.mailer.send_mail'): @@ -39,7 +39,7 @@ def test_trying_to_reset_non_existing(context_factory): def test_trying_to_reset_without_email(context_factory, user_factory): db.session.add( - user_factory(name='u1', rank=db.User.RANK_REGULAR, email=None)) + user_factory(name='u1', rank=model.User.RANK_REGULAR, email=None)) db.session.flush() with pytest.raises(errors.ValidationError): api.password_reset_api.start_password_reset( @@ -48,7 +48,7 @@ def test_trying_to_reset_without_email(context_factory, user_factory): def test_confirming_with_good_token(context_factory, user_factory): user = user_factory( - name='u1', rank=db.User.RANK_REGULAR, email='user@example.com') + name='u1', rank=model.User.RANK_REGULAR, email='user@example.com') old_hash = user.password_hash db.session.add(user) db.session.flush() @@ -68,7 +68,7 @@ def test_trying_to_confirm_non_existing(context_factory): def test_trying_to_confirm_without_token(context_factory, user_factory): db.session.add(user_factory( - name='u1', rank=db.User.RANK_REGULAR, email='user@example.com')) + name='u1', rank=model.User.RANK_REGULAR, email='user@example.com')) db.session.flush() with pytest.raises(errors.ValidationError): api.password_reset_api.finish_password_reset( @@ -77,7 +77,7 @@ def test_trying_to_confirm_without_token(context_factory, user_factory): def test_trying_to_confirm_with_bad_token(context_factory, user_factory): db.session.add(user_factory( - name='u1', rank=db.User.RANK_REGULAR, email='user@example.com')) + name='u1', rank=model.User.RANK_REGULAR, email='user@example.com')) db.session.flush() with pytest.raises(errors.ValidationError): api.password_reset_api.finish_password_reset( diff --git a/server/szurubooru/tests/api/test_post_creating.py b/server/szurubooru/tests/api/test_post_creating.py index 9737a73..a653b3b 100644 --- a/server/szurubooru/tests/api/test_post_creating.py +++ b/server/szurubooru/tests/api/test_post_creating.py @@ -1,6 +1,6 @@ from unittest.mock import patch import pytest -from szurubooru import api, db, errors +from szurubooru import api, db, model, errors from szurubooru.func import posts, tags, snapshots, net @@ -8,16 +8,16 @@ from szurubooru.func import posts, tags, snapshots, net def inject_config(config_injector): config_injector({ 'privileges': { - 'posts:create:anonymous': db.User.RANK_REGULAR, - 'posts:create:identified': db.User.RANK_REGULAR, - 'tags:create': db.User.RANK_REGULAR, + 'posts:create:anonymous': model.User.RANK_REGULAR, + 'posts:create:identified': model.User.RANK_REGULAR, + 'tags:create': model.User.RANK_REGULAR, }, }) def test_creating_minimal_posts( context_factory, post_factory, user_factory): - auth_user = user_factory(rank=db.User.RANK_REGULAR) + auth_user = user_factory(rank=model.User.RANK_REGULAR) post = post_factory() db.session.add(post) db.session.flush() @@ -53,20 +53,20 @@ def test_creating_minimal_posts( posts.update_post_thumbnail.assert_called_once_with( post, 'post-thumbnail') posts.update_post_safety.assert_called_once_with(post, 'safe') - posts.update_post_source.assert_called_once_with(post, None) + posts.update_post_source.assert_called_once_with(post, '') posts.update_post_relations.assert_called_once_with(post, []) posts.update_post_notes.assert_called_once_with(post, []) posts.update_post_flags.assert_called_once_with(post, []) posts.update_post_thumbnail.assert_called_once_with( post, 'post-thumbnail') posts.serialize_post.assert_called_once_with( - post, auth_user, options=None) + post, auth_user, options=[]) snapshots.create.assert_called_once_with(post, auth_user) tags.export_to_json.assert_called_once_with() def test_creating_full_posts(context_factory, post_factory, user_factory): - auth_user = user_factory(rank=db.User.RANK_REGULAR) + auth_user = user_factory(rank=model.User.RANK_REGULAR) post = post_factory() db.session.add(post) db.session.flush() @@ -109,14 +109,14 @@ def test_creating_full_posts(context_factory, post_factory, user_factory): posts.update_post_flags.assert_called_once_with( post, ['flag1', 'flag2']) posts.serialize_post.assert_called_once_with( - post, auth_user, options=None) + post, auth_user, options=[]) snapshots.create.assert_called_once_with(post, auth_user) tags.export_to_json.assert_called_once_with() def test_anonymous_uploads( config_injector, context_factory, post_factory, user_factory): - auth_user = user_factory(rank=db.User.RANK_REGULAR) + auth_user = user_factory(rank=model.User.RANK_REGULAR) post = post_factory() db.session.add(post) db.session.flush() @@ -126,7 +126,7 @@ def test_anonymous_uploads( patch('szurubooru.func.posts.create_post'), \ patch('szurubooru.func.posts.update_post_source'): config_injector({ - 'privileges': {'posts:create:anonymous': db.User.RANK_REGULAR}, + 'privileges': {'posts:create:anonymous': model.User.RANK_REGULAR}, }) posts.create_post.return_value = [post, []] api.post_api.create_post( @@ -146,7 +146,7 @@ def test_anonymous_uploads( def test_creating_from_url_saves_source( config_injector, context_factory, post_factory, user_factory): - auth_user = user_factory(rank=db.User.RANK_REGULAR) + auth_user = user_factory(rank=model.User.RANK_REGULAR) post = post_factory() db.session.add(post) db.session.flush() @@ -157,7 +157,7 @@ def test_creating_from_url_saves_source( patch('szurubooru.func.posts.create_post'), \ patch('szurubooru.func.posts.update_post_source'): config_injector({ - 'privileges': {'posts:create:identified': db.User.RANK_REGULAR}, + 'privileges': {'posts:create:identified': model.User.RANK_REGULAR}, }) net.download.return_value = b'content' posts.create_post.return_value = [post, []] @@ -177,7 +177,7 @@ def test_creating_from_url_saves_source( def test_creating_from_url_with_source_specified( config_injector, context_factory, post_factory, user_factory): - auth_user = user_factory(rank=db.User.RANK_REGULAR) + auth_user = user_factory(rank=model.User.RANK_REGULAR) post = post_factory() db.session.add(post) db.session.flush() @@ -188,7 +188,7 @@ def test_creating_from_url_with_source_specified( patch('szurubooru.func.posts.create_post'), \ patch('szurubooru.func.posts.update_post_source'): config_injector({ - 'privileges': {'posts:create:identified': db.User.RANK_REGULAR}, + 'privileges': {'posts:create:identified': model.User.RANK_REGULAR}, }) net.download.return_value = b'content' posts.create_post.return_value = [post, []] @@ -218,14 +218,14 @@ def test_trying_to_omit_mandatory_field(context_factory, user_factory, field): context_factory( params=params, files={'content': '...'}, - user=user_factory(rank=db.User.RANK_REGULAR))) + user=user_factory(rank=model.User.RANK_REGULAR))) @pytest.mark.parametrize( 'field', ['tags', 'relations', 'source', 'notes', 'flags']) def test_omitting_optional_field( field, context_factory, post_factory, user_factory): - auth_user = user_factory(rank=db.User.RANK_REGULAR) + auth_user = user_factory(rank=model.User.RANK_REGULAR) post = post_factory() db.session.add(post) db.session.flush() @@ -268,10 +268,10 @@ def test_errors_not_spending_ids( 'post_height': 300, }, 'privileges': { - 'posts:create:identified': db.User.RANK_REGULAR, + 'posts:create:identified': model.User.RANK_REGULAR, }, }) - auth_user = user_factory(rank=db.User.RANK_REGULAR) + auth_user = user_factory(rank=model.User.RANK_REGULAR) # successful request with patch('szurubooru.func.posts.serialize_post'), \ @@ -316,7 +316,7 @@ def test_trying_to_omit_content(context_factory, user_factory): 'safety': 'safe', 'tags': ['tag1', 'tag2'], }, - user=user_factory(rank=db.User.RANK_REGULAR))) + user=user_factory(rank=model.User.RANK_REGULAR))) def test_trying_to_create_post_without_privileges( @@ -324,16 +324,16 @@ def test_trying_to_create_post_without_privileges( with pytest.raises(errors.AuthError): api.post_api.create_post(context_factory( params='whatever', - user=user_factory(rank=db.User.RANK_ANONYMOUS))) + user=user_factory(rank=model.User.RANK_ANONYMOUS))) def test_trying_to_create_tags_without_privileges( config_injector, context_factory, user_factory): config_injector({ 'privileges': { - 'posts:create:anonymous': db.User.RANK_REGULAR, - 'posts:create:identified': db.User.RANK_REGULAR, - 'tags:create': db.User.RANK_ADMINISTRATOR, + 'posts:create:anonymous': model.User.RANK_REGULAR, + 'posts:create:identified': model.User.RANK_REGULAR, + 'tags:create': model.User.RANK_ADMINISTRATOR, }, }) with pytest.raises(errors.AuthError), \ @@ -349,4 +349,4 @@ def test_trying_to_create_tags_without_privileges( files={ 'content': posts.EMPTY_PIXEL, }, - user=user_factory(rank=db.User.RANK_REGULAR))) + user=user_factory(rank=model.User.RANK_REGULAR))) diff --git a/server/szurubooru/tests/api/test_post_deleting.py b/server/szurubooru/tests/api/test_post_deleting.py index c4187ed..643b952 100644 --- a/server/szurubooru/tests/api/test_post_deleting.py +++ b/server/szurubooru/tests/api/test_post_deleting.py @@ -1,16 +1,16 @@ from unittest.mock import patch import pytest -from szurubooru import api, db, errors +from szurubooru import api, db, model, errors from szurubooru.func import posts, tags, snapshots @pytest.fixture(autouse=True) def inject_config(config_injector): - config_injector({'privileges': {'posts:delete': db.User.RANK_REGULAR}}) + config_injector({'privileges': {'posts:delete': model.User.RANK_REGULAR}}) def test_deleting(user_factory, post_factory, context_factory): - auth_user = user_factory(rank=db.User.RANK_REGULAR) + auth_user = user_factory(rank=model.User.RANK_REGULAR) post = post_factory(id=1) db.session.add(post) db.session.flush() @@ -20,7 +20,7 @@ def test_deleting(user_factory, post_factory, context_factory): context_factory(params={'version': 1}, user=auth_user), {'post_id': 1}) assert result == {} - assert db.session.query(db.Post).count() == 0 + assert db.session.query(model.Post).count() == 0 snapshots.delete.assert_called_once_with(post, auth_user) tags.export_to_json.assert_called_once_with() @@ -28,7 +28,7 @@ def test_deleting(user_factory, post_factory, context_factory): def test_trying_to_delete_non_existing(user_factory, context_factory): with pytest.raises(posts.PostNotFoundError): api.post_api.delete_post( - context_factory(user=user_factory(rank=db.User.RANK_REGULAR)), + context_factory(user=user_factory(rank=model.User.RANK_REGULAR)), {'post_id': 999}) @@ -38,6 +38,6 @@ def test_trying_to_delete_without_privileges( db.session.commit() with pytest.raises(errors.AuthError): api.post_api.delete_post( - context_factory(user=user_factory(rank=db.User.RANK_ANONYMOUS)), + context_factory(user=user_factory(rank=model.User.RANK_ANONYMOUS)), {'post_id': 1}) - assert db.session.query(db.Post).count() == 1 + assert db.session.query(model.Post).count() == 1 diff --git a/server/szurubooru/tests/api/test_post_favoriting.py b/server/szurubooru/tests/api/test_post_favoriting.py index d78d199..ce91a02 100644 --- a/server/szurubooru/tests/api/test_post_favoriting.py +++ b/server/szurubooru/tests/api/test_post_favoriting.py @@ -1,13 +1,14 @@ from datetime import datetime from unittest.mock import patch import pytest -from szurubooru import api, db, errors +from szurubooru import api, db, model, errors from szurubooru.func import posts @pytest.fixture(autouse=True) def inject_config(config_injector): - config_injector({'privileges': {'posts:favorite': db.User.RANK_REGULAR}}) + config_injector( + {'privileges': {'posts:favorite': model.User.RANK_REGULAR}}) def test_adding_to_favorites( @@ -23,8 +24,8 @@ def test_adding_to_favorites( context_factory(user=user_factory()), {'post_id': post.post_id}) assert result == 'serialized post' - post = db.session.query(db.Post).one() - assert db.session.query(db.PostFavorite).count() == 1 + post = db.session.query(model.Post).one() + assert db.session.query(model.PostFavorite).count() == 1 assert post is not None assert post.favorite_count == 1 assert post.score == 1 @@ -47,9 +48,9 @@ def test_removing_from_favorites( api.post_api.delete_post_from_favorites( context_factory(user=user), {'post_id': post.post_id}) - post = db.session.query(db.Post).one() + post = db.session.query(model.Post).one() assert post.score == 1 - assert db.session.query(db.PostFavorite).count() == 0 + assert db.session.query(model.PostFavorite).count() == 0 assert post.favorite_count == 0 @@ -68,8 +69,8 @@ def test_favoriting_twice( api.post_api.add_post_to_favorites( context_factory(user=user), {'post_id': post.post_id}) - post = db.session.query(db.Post).one() - assert db.session.query(db.PostFavorite).count() == 1 + post = db.session.query(model.Post).one() + assert db.session.query(model.PostFavorite).count() == 1 assert post.favorite_count == 1 @@ -92,8 +93,8 @@ def test_removing_twice( api.post_api.delete_post_from_favorites( context_factory(user=user), {'post_id': post.post_id}) - post = db.session.query(db.Post).one() - assert db.session.query(db.PostFavorite).count() == 0 + post = db.session.query(model.Post).one() + assert db.session.query(model.PostFavorite).count() == 0 assert post.favorite_count == 0 @@ -113,8 +114,8 @@ def test_favorites_from_multiple_users( api.post_api.add_post_to_favorites( context_factory(user=user2), {'post_id': post.post_id}) - post = db.session.query(db.Post).one() - assert db.session.query(db.PostFavorite).count() == 2 + post = db.session.query(model.Post).one() + assert db.session.query(model.PostFavorite).count() == 2 assert post.favorite_count == 2 assert post.last_favorite_time == datetime(1997, 12, 2) @@ -133,5 +134,5 @@ def test_trying_to_rate_without_privileges( db.session.commit() with pytest.raises(errors.AuthError): api.post_api.add_post_to_favorites( - context_factory(user=user_factory(rank=db.User.RANK_ANONYMOUS)), + context_factory(user=user_factory(rank=model.User.RANK_ANONYMOUS)), {'post_id': post.post_id}) diff --git a/server/szurubooru/tests/api/test_post_featuring.py b/server/szurubooru/tests/api/test_post_featuring.py index a0a82c7..88e4e00 100644 --- a/server/szurubooru/tests/api/test_post_featuring.py +++ b/server/szurubooru/tests/api/test_post_featuring.py @@ -1,6 +1,6 @@ from unittest.mock import patch import pytest -from szurubooru import api, db, errors +from szurubooru import api, db, model, errors from szurubooru.func import posts, snapshots @@ -8,14 +8,14 @@ from szurubooru.func import posts, snapshots def inject_config(config_injector): config_injector({ 'privileges': { - 'posts:feature': db.User.RANK_REGULAR, - 'posts:view': db.User.RANK_REGULAR, + 'posts:feature': model.User.RANK_REGULAR, + 'posts:view': model.User.RANK_REGULAR, }, }) def test_featuring(user_factory, post_factory, context_factory): - auth_user = user_factory(rank=db.User.RANK_REGULAR) + auth_user = user_factory(rank=model.User.RANK_REGULAR) post = post_factory(id=1) db.session.add(post) db.session.flush() @@ -31,7 +31,7 @@ def test_featuring(user_factory, post_factory, context_factory): assert posts.get_post_by_id(1).is_featured result = api.post_api.get_featured_post( context_factory( - user=user_factory(rank=db.User.RANK_REGULAR))) + user=user_factory(rank=model.User.RANK_REGULAR))) assert result == 'serialized post' snapshots.modify.assert_called_once_with(post, auth_user) @@ -40,7 +40,7 @@ def test_trying_to_omit_required_parameter(user_factory, context_factory): with pytest.raises(errors.MissingRequiredParameterError): api.post_api.set_featured_post( context_factory( - user=user_factory(rank=db.User.RANK_REGULAR))) + user=user_factory(rank=model.User.RANK_REGULAR))) def test_trying_to_feature_the_same_post_twice( @@ -51,12 +51,12 @@ def test_trying_to_feature_the_same_post_twice( api.post_api.set_featured_post( context_factory( params={'id': 1}, - user=user_factory(rank=db.User.RANK_REGULAR))) + user=user_factory(rank=model.User.RANK_REGULAR))) with pytest.raises(posts.PostAlreadyFeaturedError): api.post_api.set_featured_post( context_factory( params={'id': 1}, - user=user_factory(rank=db.User.RANK_REGULAR))) + user=user_factory(rank=model.User.RANK_REGULAR))) def test_featuring_one_post_after_another( @@ -72,12 +72,12 @@ def test_featuring_one_post_after_another( api.post_api.set_featured_post( context_factory( params={'id': 1}, - user=user_factory(rank=db.User.RANK_REGULAR))) + user=user_factory(rank=model.User.RANK_REGULAR))) with fake_datetime('1998'): api.post_api.set_featured_post( context_factory( params={'id': 2}, - user=user_factory(rank=db.User.RANK_REGULAR))) + user=user_factory(rank=model.User.RANK_REGULAR))) assert posts.try_get_featured_post() is not None assert posts.try_get_featured_post().post_id == 2 assert not posts.get_post_by_id(1).is_featured @@ -89,7 +89,7 @@ def test_trying_to_feature_non_existing(user_factory, context_factory): api.post_api.set_featured_post( context_factory( params={'id': 1}, - user=user_factory(rank=db.User.RANK_REGULAR))) + user=user_factory(rank=model.User.RANK_REGULAR))) def test_trying_to_feature_without_privileges(user_factory, context_factory): @@ -97,10 +97,10 @@ def test_trying_to_feature_without_privileges(user_factory, context_factory): api.post_api.set_featured_post( context_factory( params={'id': 1}, - user=user_factory(rank=db.User.RANK_ANONYMOUS))) + user=user_factory(rank=model.User.RANK_ANONYMOUS))) def test_getting_featured_post_without_privileges_to_view( user_factory, context_factory): api.post_api.get_featured_post( - context_factory(user=user_factory(rank=db.User.RANK_ANONYMOUS))) + context_factory(user=user_factory(rank=model.User.RANK_ANONYMOUS))) diff --git a/server/szurubooru/tests/api/test_post_merging.py b/server/szurubooru/tests/api/test_post_merging.py index e654090..eb8464f 100644 --- a/server/szurubooru/tests/api/test_post_merging.py +++ b/server/szurubooru/tests/api/test_post_merging.py @@ -1,16 +1,16 @@ from unittest.mock import patch import pytest -from szurubooru import api, db, errors +from szurubooru import api, db, model, errors from szurubooru.func import posts, snapshots @pytest.fixture(autouse=True) def inject_config(config_injector): - config_injector({'privileges': {'posts:merge': db.User.RANK_REGULAR}}) + config_injector({'privileges': {'posts:merge': model.User.RANK_REGULAR}}) def test_merging(user_factory, context_factory, post_factory): - auth_user = user_factory(rank=db.User.RANK_REGULAR) + auth_user = user_factory(rank=model.User.RANK_REGULAR) source_post = post_factory() target_post = post_factory() db.session.add_all([source_post, target_post]) @@ -25,6 +25,7 @@ def test_merging(user_factory, context_factory, post_factory): 'mergeToVersion': 1, 'remove': source_post.post_id, 'mergeTo': target_post.post_id, + 'replaceContent': False, }, user=auth_user)) posts.merge_posts.called_once_with(source_post, target_post) @@ -45,13 +46,14 @@ def test_trying_to_omit_mandatory_field( 'mergeToVersion': 1, 'remove': source_post.post_id, 'mergeTo': target_post.post_id, + 'replaceContent': False, } del params[field] with pytest.raises(errors.ValidationError): api.post_api.merge_posts( context_factory( params=params, - user=user_factory(rank=db.User.RANK_REGULAR))) + user=user_factory(rank=model.User.RANK_REGULAR))) def test_trying_to_merge_non_existing( @@ -63,12 +65,12 @@ def test_trying_to_merge_non_existing( api.post_api.merge_posts( context_factory( params={'remove': post.post_id, 'mergeTo': 999}, - user=user_factory(rank=db.User.RANK_REGULAR))) + user=user_factory(rank=model.User.RANK_REGULAR))) with pytest.raises(posts.PostNotFoundError): api.post_api.merge_posts( context_factory( params={'remove': 999, 'mergeTo': post.post_id}, - user=user_factory(rank=db.User.RANK_REGULAR))) + user=user_factory(rank=model.User.RANK_REGULAR))) def test_trying_to_merge_without_privileges( @@ -85,5 +87,6 @@ def test_trying_to_merge_without_privileges( 'mergeToVersion': 1, 'remove': source_post.post_id, 'mergeTo': target_post.post_id, + 'replaceContent': False, }, - user=user_factory(rank=db.User.RANK_ANONYMOUS))) + user=user_factory(rank=model.User.RANK_ANONYMOUS))) diff --git a/server/szurubooru/tests/api/test_post_rating.py b/server/szurubooru/tests/api/test_post_rating.py index 18e823e..0fca2f5 100644 --- a/server/szurubooru/tests/api/test_post_rating.py +++ b/server/szurubooru/tests/api/test_post_rating.py @@ -1,12 +1,12 @@ from unittest.mock import patch import pytest -from szurubooru import api, db, errors +from szurubooru import api, db, model, errors from szurubooru.func import posts @pytest.fixture(autouse=True) def inject_config(config_injector): - config_injector({'privileges': {'posts:score': db.User.RANK_REGULAR}}) + config_injector({'privileges': {'posts:score': model.User.RANK_REGULAR}}) def test_simple_rating( @@ -22,8 +22,8 @@ def test_simple_rating( params={'score': 1}, user=user_factory()), {'post_id': post.post_id}) assert result == 'serialized post' - post = db.session.query(db.Post).one() - assert db.session.query(db.PostScore).count() == 1 + post = db.session.query(model.Post).one() + assert db.session.query(model.PostScore).count() == 1 assert post is not None assert post.score == 1 @@ -43,8 +43,8 @@ def test_updating_rating( api.post_api.set_post_score( context_factory(params={'score': -1}, user=user), {'post_id': post.post_id}) - post = db.session.query(db.Post).one() - assert db.session.query(db.PostScore).count() == 1 + post = db.session.query(model.Post).one() + assert db.session.query(model.PostScore).count() == 1 assert post.score == -1 @@ -63,8 +63,8 @@ def test_updating_rating_to_zero( api.post_api.set_post_score( context_factory(params={'score': 0}, user=user), {'post_id': post.post_id}) - post = db.session.query(db.Post).one() - assert db.session.query(db.PostScore).count() == 0 + post = db.session.query(model.Post).one() + assert db.session.query(model.PostScore).count() == 0 assert post.score == 0 @@ -83,8 +83,8 @@ def test_deleting_rating( api.post_api.delete_post_score( context_factory(user=user), {'post_id': post.post_id}) - post = db.session.query(db.Post).one() - assert db.session.query(db.PostScore).count() == 0 + post = db.session.query(model.Post).one() + assert db.session.query(model.PostScore).count() == 0 assert post.score == 0 @@ -104,8 +104,8 @@ def test_ratings_from_multiple_users( api.post_api.set_post_score( context_factory(params={'score': -1}, user=user2), {'post_id': post.post_id}) - post = db.session.query(db.Post).one() - assert db.session.query(db.PostScore).count() == 2 + post = db.session.query(model.Post).one() + assert db.session.query(model.PostScore).count() == 2 assert post.score == 0 @@ -136,5 +136,5 @@ def test_trying_to_rate_without_privileges( api.post_api.set_post_score( context_factory( params={'score': 1}, - user=user_factory(rank=db.User.RANK_ANONYMOUS)), + user=user_factory(rank=model.User.RANK_ANONYMOUS)), {'post_id': post.post_id}) diff --git a/server/szurubooru/tests/api/test_post_retrieving.py b/server/szurubooru/tests/api/test_post_retrieving.py index a02c7bc..9d9db72 100644 --- a/server/szurubooru/tests/api/test_post_retrieving.py +++ b/server/szurubooru/tests/api/test_post_retrieving.py @@ -1,7 +1,7 @@ from datetime import datetime from unittest.mock import patch import pytest -from szurubooru import api, db, errors +from szurubooru import api, db, model, errors from szurubooru.func import posts @@ -9,8 +9,8 @@ from szurubooru.func import posts def inject_config(config_injector): config_injector({ 'privileges': { - 'posts:list': db.User.RANK_REGULAR, - 'posts:view': db.User.RANK_REGULAR, + 'posts:list': model.User.RANK_REGULAR, + 'posts:view': model.User.RANK_REGULAR, }, }) @@ -25,7 +25,7 @@ def test_retrieving_multiple(user_factory, post_factory, context_factory): result = api.post_api.get_posts( context_factory( params={'query': '', 'page': 1}, - user=user_factory(rank=db.User.RANK_REGULAR))) + user=user_factory(rank=model.User.RANK_REGULAR))) assert result == { 'query': '', 'page': 1, @@ -36,10 +36,10 @@ def test_retrieving_multiple(user_factory, post_factory, context_factory): def test_using_special_tokens(user_factory, post_factory, context_factory): - auth_user = user_factory(rank=db.User.RANK_REGULAR) + auth_user = user_factory(rank=model.User.RANK_REGULAR) post1 = post_factory(id=1) post2 = post_factory(id=2) - post1.favorited_by = [db.PostFavorite( + post1.favorited_by = [model.PostFavorite( user=auth_user, time=datetime.utcnow())] db.session.add_all([post1, post2, auth_user]) db.session.flush() @@ -68,7 +68,7 @@ def test_trying_to_use_special_tokens_without_logging_in( api.post_api.get_posts( context_factory( params={'query': 'special:fav', 'page': 1}, - user=user_factory(rank=db.User.RANK_ANONYMOUS))) + user=user_factory(rank=model.User.RANK_ANONYMOUS))) def test_trying_to_retrieve_multiple_without_privileges( @@ -77,7 +77,7 @@ def test_trying_to_retrieve_multiple_without_privileges( api.post_api.get_posts( context_factory( params={'query': '', 'page': 1}, - user=user_factory(rank=db.User.RANK_ANONYMOUS))) + user=user_factory(rank=model.User.RANK_ANONYMOUS))) def test_retrieving_single(user_factory, post_factory, context_factory): @@ -86,7 +86,7 @@ def test_retrieving_single(user_factory, post_factory, context_factory): 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=db.User.RANK_REGULAR)), + context_factory(user=user_factory(rank=model.User.RANK_REGULAR)), {'post_id': 1}) assert result == 'serialized post' @@ -94,7 +94,7 @@ def test_retrieving_single(user_factory, post_factory, context_factory): 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=db.User.RANK_REGULAR)), + context_factory(user=user_factory(rank=model.User.RANK_REGULAR)), {'post_id': 999}) @@ -102,5 +102,5 @@ def test_trying_to_retrieve_single_without_privileges( user_factory, context_factory): with pytest.raises(errors.AuthError): api.post_api.get_post( - context_factory(user=user_factory(rank=db.User.RANK_ANONYMOUS)), + context_factory(user=user_factory(rank=model.User.RANK_ANONYMOUS)), {'post_id': 999}) diff --git a/server/szurubooru/tests/api/test_post_updating.py b/server/szurubooru/tests/api/test_post_updating.py index 790e835..d364930 100644 --- a/server/szurubooru/tests/api/test_post_updating.py +++ b/server/szurubooru/tests/api/test_post_updating.py @@ -1,7 +1,7 @@ from datetime import datetime from unittest.mock import patch import pytest -from szurubooru import api, db, errors +from szurubooru import api, db, model, errors from szurubooru.func import posts, tags, snapshots, net @@ -9,22 +9,22 @@ from szurubooru.func import posts, tags, snapshots, net def inject_config(config_injector): config_injector({ 'privileges': { - 'posts:edit:tags': db.User.RANK_REGULAR, - 'posts:edit:content': db.User.RANK_REGULAR, - 'posts:edit:safety': db.User.RANK_REGULAR, - 'posts:edit:source': db.User.RANK_REGULAR, - 'posts:edit:relations': db.User.RANK_REGULAR, - 'posts:edit:notes': db.User.RANK_REGULAR, - 'posts:edit:flags': db.User.RANK_REGULAR, - 'posts:edit:thumbnail': db.User.RANK_REGULAR, - 'tags:create': db.User.RANK_MODERATOR, + 'posts:edit:tags': model.User.RANK_REGULAR, + 'posts:edit:content': model.User.RANK_REGULAR, + 'posts:edit:safety': model.User.RANK_REGULAR, + 'posts:edit:source': model.User.RANK_REGULAR, + 'posts:edit:relations': model.User.RANK_REGULAR, + 'posts:edit:notes': model.User.RANK_REGULAR, + 'posts:edit:flags': model.User.RANK_REGULAR, + 'posts:edit:thumbnail': model.User.RANK_REGULAR, + 'tags:create': model.User.RANK_MODERATOR, }, }) def test_post_updating( context_factory, post_factory, user_factory, fake_datetime): - auth_user = user_factory(rank=db.User.RANK_REGULAR) + auth_user = user_factory(rank=model.User.RANK_REGULAR) post = post_factory() db.session.add(post) db.session.flush() @@ -76,7 +76,7 @@ def test_post_updating( posts.update_post_flags.assert_called_once_with( post, ['flag1', 'flag2']) posts.serialize_post.assert_called_once_with( - post, auth_user, options=None) + post, auth_user, options=[]) snapshots.modify.assert_called_once_with(post, auth_user) tags.export_to_json.assert_called_once_with() assert post.last_edit_time == datetime(1997, 1, 1) @@ -97,7 +97,7 @@ def test_uploading_from_url_saves_source( api.post_api.update_post( context_factory( params={'contentUrl': 'example.com', 'version': 1}, - user=user_factory(rank=db.User.RANK_REGULAR)), + user=user_factory(rank=model.User.RANK_REGULAR)), {'post_id': post.post_id}) net.download.assert_called_once_with('example.com') posts.update_post_content.assert_called_once_with(post, b'content') @@ -122,7 +122,7 @@ def test_uploading_from_url_with_source_specified( 'contentUrl': 'example.com', 'source': 'example2.com', 'version': 1}, - user=user_factory(rank=db.User.RANK_REGULAR)), + user=user_factory(rank=model.User.RANK_REGULAR)), {'post_id': post.post_id}) net.download.assert_called_once_with('example.com') posts.update_post_content.assert_called_once_with(post, b'content') @@ -134,7 +134,7 @@ def test_trying_to_update_non_existing(context_factory, user_factory): api.post_api.update_post( context_factory( params='whatever', - user=user_factory(rank=db.User.RANK_REGULAR)), + user=user_factory(rank=model.User.RANK_REGULAR)), {'post_id': 1}) @@ -158,7 +158,7 @@ def test_trying_to_update_field_without_privileges( context_factory( params={**params, **{'version': 1}}, files=files, - user=user_factory(rank=db.User.RANK_ANONYMOUS)), + user=user_factory(rank=model.User.RANK_ANONYMOUS)), {'post_id': post.post_id}) @@ -173,5 +173,5 @@ def test_trying_to_create_tags_without_privileges( api.post_api.update_post( context_factory( params={'tags': ['tag1', 'tag2'], 'version': 1}, - user=user_factory(rank=db.User.RANK_REGULAR)), + user=user_factory(rank=model.User.RANK_REGULAR)), {'post_id': post.post_id}) diff --git a/server/szurubooru/tests/api/test_snapshot_retrieving.py b/server/szurubooru/tests/api/test_snapshot_retrieving.py index 73b6f06..facbcd8 100644 --- a/server/szurubooru/tests/api/test_snapshot_retrieving.py +++ b/server/szurubooru/tests/api/test_snapshot_retrieving.py @@ -1,10 +1,10 @@ from datetime import datetime import pytest -from szurubooru import api, db, errors +from szurubooru import api, db, model, errors def snapshot_factory(): - snapshot = db.Snapshot() + snapshot = model.Snapshot() snapshot.creation_time = datetime(1999, 1, 1) snapshot.resource_type = 'dummy' snapshot.resource_pkey = 1 @@ -17,7 +17,7 @@ def snapshot_factory(): @pytest.fixture(autouse=True) def inject_config(config_injector): config_injector({ - 'privileges': {'snapshots:list': db.User.RANK_REGULAR}, + 'privileges': {'snapshots:list': model.User.RANK_REGULAR}, }) @@ -29,7 +29,7 @@ def test_retrieving_multiple(user_factory, context_factory): result = api.snapshot_api.get_snapshots( context_factory( params={'query': '', 'page': 1}, - user=user_factory(rank=db.User.RANK_REGULAR))) + user=user_factory(rank=model.User.RANK_REGULAR))) assert result['query'] == '' assert result['page'] == 1 assert result['pageSize'] == 100 @@ -43,4 +43,4 @@ def test_trying_to_retrieve_multiple_without_privileges( api.snapshot_api.get_snapshots( context_factory( params={'query': '', 'page': 1}, - user=user_factory(rank=db.User.RANK_ANONYMOUS))) + user=user_factory(rank=model.User.RANK_ANONYMOUS))) diff --git a/server/szurubooru/tests/api/test_tag_category_creating.py b/server/szurubooru/tests/api/test_tag_category_creating.py index 96afc39..fbd8b1b 100644 --- a/server/szurubooru/tests/api/test_tag_category_creating.py +++ b/server/szurubooru/tests/api/test_tag_category_creating.py @@ -1,6 +1,6 @@ from unittest.mock import patch import pytest -from szurubooru import api, db, errors +from szurubooru import api, db, model, errors from szurubooru.func import tag_categories, tags, snapshots @@ -11,13 +11,13 @@ def _update_category_name(category, name): @pytest.fixture(autouse=True) def inject_config(config_injector): config_injector({ - 'privileges': {'tag_categories:create': db.User.RANK_REGULAR}, + 'privileges': {'tag_categories:create': model.User.RANK_REGULAR}, }) def test_creating_category( tag_category_factory, user_factory, context_factory): - auth_user = user_factory(rank=db.User.RANK_REGULAR) + auth_user = user_factory(rank=model.User.RANK_REGULAR) category = tag_category_factory(name='meta') db.session.add(category) @@ -49,7 +49,7 @@ def test_trying_to_omit_mandatory_field(user_factory, context_factory, field): api.tag_category_api.create_tag_category( context_factory( params=params, - user=user_factory(rank=db.User.RANK_REGULAR))) + user=user_factory(rank=model.User.RANK_REGULAR))) def test_trying_to_create_without_privileges(user_factory, context_factory): @@ -57,4 +57,4 @@ def test_trying_to_create_without_privileges(user_factory, context_factory): api.tag_category_api.create_tag_category( context_factory( params={'name': 'meta', 'color': 'black'}, - user=user_factory(rank=db.User.RANK_ANONYMOUS))) + user=user_factory(rank=model.User.RANK_ANONYMOUS))) diff --git a/server/szurubooru/tests/api/test_tag_category_deleting.py b/server/szurubooru/tests/api/test_tag_category_deleting.py index 1f1cde4..1fc8643 100644 --- a/server/szurubooru/tests/api/test_tag_category_deleting.py +++ b/server/szurubooru/tests/api/test_tag_category_deleting.py @@ -1,18 +1,18 @@ from unittest.mock import patch import pytest -from szurubooru import api, db, errors +from szurubooru import api, db, model, errors from szurubooru.func import tag_categories, tags, snapshots @pytest.fixture(autouse=True) def inject_config(config_injector): config_injector({ - 'privileges': {'tag_categories:delete': db.User.RANK_REGULAR}, + 'privileges': {'tag_categories:delete': model.User.RANK_REGULAR}, }) def test_deleting(user_factory, tag_category_factory, context_factory): - auth_user = user_factory(rank=db.User.RANK_REGULAR) + auth_user = user_factory(rank=model.User.RANK_REGULAR) category = tag_category_factory(name='category') db.session.add(tag_category_factory(name='root')) db.session.add(category) @@ -23,8 +23,8 @@ def test_deleting(user_factory, tag_category_factory, context_factory): context_factory(params={'version': 1}, user=auth_user), {'category_name': 'category'}) assert result == {} - assert db.session.query(db.TagCategory).count() == 1 - assert db.session.query(db.TagCategory).one().name == 'root' + assert db.session.query(model.TagCategory).count() == 1 + assert db.session.query(model.TagCategory).one().name == 'root' snapshots.delete.assert_called_once_with(category, auth_user) tags.export_to_json.assert_called_once_with() @@ -41,9 +41,9 @@ def test_trying_to_delete_used( api.tag_category_api.delete_tag_category( context_factory( params={'version': 1}, - user=user_factory(rank=db.User.RANK_REGULAR)), + user=user_factory(rank=model.User.RANK_REGULAR)), {'category_name': 'category'}) - assert db.session.query(db.TagCategory).count() == 1 + assert db.session.query(model.TagCategory).count() == 1 def test_trying_to_delete_last( @@ -54,14 +54,14 @@ def test_trying_to_delete_last( api.tag_category_api.delete_tag_category( context_factory( params={'version': 1}, - user=user_factory(rank=db.User.RANK_REGULAR)), + user=user_factory(rank=model.User.RANK_REGULAR)), {'category_name': 'root'}) def test_trying_to_delete_non_existing(user_factory, context_factory): with pytest.raises(tag_categories.TagCategoryNotFoundError): api.tag_category_api.delete_tag_category( - context_factory(user=user_factory(rank=db.User.RANK_REGULAR)), + context_factory(user=user_factory(rank=model.User.RANK_REGULAR)), {'category_name': 'bad'}) @@ -73,6 +73,6 @@ def test_trying_to_delete_without_privileges( api.tag_category_api.delete_tag_category( context_factory( params={'version': 1}, - user=user_factory(rank=db.User.RANK_ANONYMOUS)), + user=user_factory(rank=model.User.RANK_ANONYMOUS)), {'category_name': 'category'}) - assert db.session.query(db.TagCategory).count() == 1 + assert db.session.query(model.TagCategory).count() == 1 diff --git a/server/szurubooru/tests/api/test_tag_category_retrieving.py b/server/szurubooru/tests/api/test_tag_category_retrieving.py index 4f6610b..0b98d74 100644 --- a/server/szurubooru/tests/api/test_tag_category_retrieving.py +++ b/server/szurubooru/tests/api/test_tag_category_retrieving.py @@ -1,5 +1,5 @@ import pytest -from szurubooru import api, db, errors +from szurubooru import api, db, model, errors from szurubooru.func import tag_categories @@ -7,8 +7,8 @@ from szurubooru.func import tag_categories def inject_config(config_injector): config_injector({ 'privileges': { - 'tag_categories:list': db.User.RANK_REGULAR, - 'tag_categories:view': db.User.RANK_REGULAR, + 'tag_categories:list': model.User.RANK_REGULAR, + 'tag_categories:view': model.User.RANK_REGULAR, }, }) @@ -21,7 +21,7 @@ def test_retrieving_multiple( ]) db.session.flush() result = api.tag_category_api.get_tag_categories( - context_factory(user=user_factory(rank=db.User.RANK_REGULAR))) + context_factory(user=user_factory(rank=model.User.RANK_REGULAR))) assert [cat['name'] for cat in result['results']] == ['c1', 'c2'] @@ -30,7 +30,7 @@ def test_retrieving_single( db.session.add(tag_category_factory(name='cat')) db.session.flush() result = api.tag_category_api.get_tag_category( - context_factory(user=user_factory(rank=db.User.RANK_REGULAR)), + context_factory(user=user_factory(rank=model.User.RANK_REGULAR)), {'category_name': 'cat'}) assert result == { 'name': 'cat', @@ -44,7 +44,7 @@ def test_retrieving_single( def test_trying_to_retrieve_single_non_existing(user_factory, context_factory): with pytest.raises(tag_categories.TagCategoryNotFoundError): api.tag_category_api.get_tag_category( - context_factory(user=user_factory(rank=db.User.RANK_REGULAR)), + context_factory(user=user_factory(rank=model.User.RANK_REGULAR)), {'category_name': '-'}) @@ -52,5 +52,5 @@ def test_trying_to_retrieve_single_without_privileges( user_factory, context_factory): with pytest.raises(errors.AuthError): api.tag_category_api.get_tag_category( - context_factory(user=user_factory(rank=db.User.RANK_ANONYMOUS)), + context_factory(user=user_factory(rank=model.User.RANK_ANONYMOUS)), {'category_name': '-'}) diff --git a/server/szurubooru/tests/api/test_tag_category_updating.py b/server/szurubooru/tests/api/test_tag_category_updating.py index 9dd0f6b..d406dd1 100644 --- a/server/szurubooru/tests/api/test_tag_category_updating.py +++ b/server/szurubooru/tests/api/test_tag_category_updating.py @@ -1,6 +1,6 @@ from unittest.mock import patch import pytest -from szurubooru import api, db, errors +from szurubooru import api, db, model, errors from szurubooru.func import tag_categories, tags, snapshots @@ -12,15 +12,15 @@ def _update_category_name(category, name): def inject_config(config_injector): config_injector({ 'privileges': { - 'tag_categories:edit:name': db.User.RANK_REGULAR, - 'tag_categories:edit:color': db.User.RANK_REGULAR, - 'tag_categories:set_default': db.User.RANK_REGULAR, + 'tag_categories:edit:name': model.User.RANK_REGULAR, + 'tag_categories:edit:color': model.User.RANK_REGULAR, + 'tag_categories:set_default': model.User.RANK_REGULAR, }, }) def test_simple_updating(user_factory, tag_category_factory, context_factory): - auth_user = user_factory(rank=db.User.RANK_REGULAR) + auth_user = user_factory(rank=model.User.RANK_REGULAR) category = tag_category_factory(name='name', color='black') db.session.add(category) db.session.flush() @@ -61,7 +61,7 @@ def test_omitting_optional_field( api.tag_category_api.update_tag_category( context_factory( params={**params, **{'version': 1}}, - user=user_factory(rank=db.User.RANK_REGULAR)), + user=user_factory(rank=model.User.RANK_REGULAR)), {'category_name': 'name'}) @@ -70,7 +70,7 @@ def test_trying_to_update_non_existing(user_factory, context_factory): api.tag_category_api.update_tag_category( context_factory( params={'name': ['dummy']}, - user=user_factory(rank=db.User.RANK_REGULAR)), + user=user_factory(rank=model.User.RANK_REGULAR)), {'category_name': 'bad'}) @@ -86,7 +86,7 @@ def test_trying_to_update_without_privileges( api.tag_category_api.update_tag_category( context_factory( params={**params, **{'version': 1}}, - user=user_factory(rank=db.User.RANK_ANONYMOUS)), + user=user_factory(rank=model.User.RANK_ANONYMOUS)), {'category_name': 'dummy'}) @@ -106,7 +106,7 @@ def test_set_as_default(user_factory, tag_category_factory, context_factory): 'color': 'white', 'version': 1, }, - user=user_factory(rank=db.User.RANK_REGULAR)), + user=user_factory(rank=model.User.RANK_REGULAR)), {'category_name': 'name'}) assert result == 'serialized category' tag_categories.set_default_category.assert_called_once_with(category) diff --git a/server/szurubooru/tests/api/test_tag_creating.py b/server/szurubooru/tests/api/test_tag_creating.py index dc05628..771b9f6 100644 --- a/server/szurubooru/tests/api/test_tag_creating.py +++ b/server/szurubooru/tests/api/test_tag_creating.py @@ -1,16 +1,16 @@ from unittest.mock import patch import pytest -from szurubooru import api, db, errors +from szurubooru import api, db, model, errors from szurubooru.func import tags, snapshots @pytest.fixture(autouse=True) def inject_config(config_injector): - config_injector({'privileges': {'tags:create': db.User.RANK_REGULAR}}) + config_injector({'privileges': {'tags:create': model.User.RANK_REGULAR}}) def test_creating_simple_tags(tag_factory, user_factory, context_factory): - auth_user = user_factory(rank=db.User.RANK_REGULAR) + auth_user = user_factory(rank=model.User.RANK_REGULAR) tag = tag_factory() with patch('szurubooru.func.tags.create_tag'), \ patch('szurubooru.func.tags.get_or_create_tags_by_names'), \ @@ -50,7 +50,7 @@ def test_trying_to_omit_mandatory_field(user_factory, context_factory, field): api.tag_api.create_tag( context_factory( params=params, - user=user_factory(rank=db.User.RANK_REGULAR))) + user=user_factory(rank=model.User.RANK_REGULAR))) @pytest.mark.parametrize('field', ['implications', 'suggestions']) @@ -70,7 +70,7 @@ def test_omitting_optional_field( api.tag_api.create_tag( context_factory( params=params, - user=user_factory(rank=db.User.RANK_REGULAR))) + user=user_factory(rank=model.User.RANK_REGULAR))) def test_trying_to_create_tag_without_privileges( @@ -84,4 +84,4 @@ def test_trying_to_create_tag_without_privileges( 'suggestions': ['tag'], 'implications': [], }, - user=user_factory(rank=db.User.RANK_ANONYMOUS))) + user=user_factory(rank=model.User.RANK_ANONYMOUS))) diff --git a/server/szurubooru/tests/api/test_tag_deleting.py b/server/szurubooru/tests/api/test_tag_deleting.py index a657b02..fbd35e1 100644 --- a/server/szurubooru/tests/api/test_tag_deleting.py +++ b/server/szurubooru/tests/api/test_tag_deleting.py @@ -1,16 +1,16 @@ from unittest.mock import patch import pytest -from szurubooru import api, db, errors +from szurubooru import api, db, model, errors from szurubooru.func import tags, snapshots @pytest.fixture(autouse=True) def inject_config(config_injector): - config_injector({'privileges': {'tags:delete': db.User.RANK_REGULAR}}) + config_injector({'privileges': {'tags:delete': model.User.RANK_REGULAR}}) def test_deleting(user_factory, tag_factory, context_factory): - auth_user = user_factory(rank=db.User.RANK_REGULAR) + auth_user = user_factory(rank=model.User.RANK_REGULAR) tag = tag_factory(names=['tag']) db.session.add(tag) db.session.commit() @@ -20,7 +20,7 @@ def test_deleting(user_factory, tag_factory, context_factory): context_factory(params={'version': 1}, user=auth_user), {'tag_name': 'tag'}) assert result == {} - assert db.session.query(db.Tag).count() == 0 + assert db.session.query(model.Tag).count() == 0 snapshots.delete.assert_called_once_with(tag, auth_user) tags.export_to_json.assert_called_once_with() @@ -36,17 +36,17 @@ def test_deleting_used( api.tag_api.delete_tag( context_factory( params={'version': 1}, - user=user_factory(rank=db.User.RANK_REGULAR)), + user=user_factory(rank=model.User.RANK_REGULAR)), {'tag_name': 'tag'}) db.session.refresh(post) - assert db.session.query(db.Tag).count() == 0 + assert db.session.query(model.Tag).count() == 0 assert post.tags == [] def test_trying_to_delete_non_existing(user_factory, context_factory): with pytest.raises(tags.TagNotFoundError): api.tag_api.delete_tag( - context_factory(user=user_factory(rank=db.User.RANK_REGULAR)), + context_factory(user=user_factory(rank=model.User.RANK_REGULAR)), {'tag_name': 'bad'}) @@ -58,6 +58,6 @@ def test_trying_to_delete_without_privileges( api.tag_api.delete_tag( context_factory( params={'version': 1}, - user=user_factory(rank=db.User.RANK_ANONYMOUS)), + user=user_factory(rank=model.User.RANK_ANONYMOUS)), {'tag_name': 'tag'}) - assert db.session.query(db.Tag).count() == 1 + assert db.session.query(model.Tag).count() == 1 diff --git a/server/szurubooru/tests/api/test_tag_merging.py b/server/szurubooru/tests/api/test_tag_merging.py index a448c9c..484fbfa 100644 --- a/server/szurubooru/tests/api/test_tag_merging.py +++ b/server/szurubooru/tests/api/test_tag_merging.py @@ -1,16 +1,16 @@ from unittest.mock import patch import pytest -from szurubooru import api, db, errors +from szurubooru import api, db, model, errors from szurubooru.func import tags, snapshots @pytest.fixture(autouse=True) def inject_config(config_injector): - config_injector({'privileges': {'tags:merge': db.User.RANK_REGULAR}}) + config_injector({'privileges': {'tags:merge': model.User.RANK_REGULAR}}) def test_merging(user_factory, tag_factory, context_factory, post_factory): - auth_user = user_factory(rank=db.User.RANK_REGULAR) + auth_user = user_factory(rank=model.User.RANK_REGULAR) source_tag = tag_factory(names=['source']) target_tag = tag_factory(names=['target']) db.session.add_all([source_tag, target_tag]) @@ -62,7 +62,7 @@ def test_trying_to_omit_mandatory_field( api.tag_api.merge_tags( context_factory( params=params, - user=user_factory(rank=db.User.RANK_REGULAR))) + user=user_factory(rank=model.User.RANK_REGULAR))) def test_trying_to_merge_non_existing( @@ -73,12 +73,12 @@ def test_trying_to_merge_non_existing( api.tag_api.merge_tags( context_factory( params={'remove': 'good', 'mergeTo': 'bad'}, - user=user_factory(rank=db.User.RANK_REGULAR))) + user=user_factory(rank=model.User.RANK_REGULAR))) with pytest.raises(tags.TagNotFoundError): api.tag_api.merge_tags( context_factory( params={'remove': 'bad', 'mergeTo': 'good'}, - user=user_factory(rank=db.User.RANK_REGULAR))) + user=user_factory(rank=model.User.RANK_REGULAR))) def test_trying_to_merge_without_privileges( @@ -97,4 +97,4 @@ def test_trying_to_merge_without_privileges( 'remove': 'source', 'mergeTo': 'target', }, - user=user_factory(rank=db.User.RANK_ANONYMOUS))) + user=user_factory(rank=model.User.RANK_ANONYMOUS))) diff --git a/server/szurubooru/tests/api/test_tag_retrieving.py b/server/szurubooru/tests/api/test_tag_retrieving.py index 86837f9..fd2b2cb 100644 --- a/server/szurubooru/tests/api/test_tag_retrieving.py +++ b/server/szurubooru/tests/api/test_tag_retrieving.py @@ -1,6 +1,6 @@ from unittest.mock import patch import pytest -from szurubooru import api, db, errors +from szurubooru import api, db, model, errors from szurubooru.func import tags @@ -8,8 +8,8 @@ from szurubooru.func import tags def inject_config(config_injector): config_injector({ 'privileges': { - 'tags:list': db.User.RANK_REGULAR, - 'tags:view': db.User.RANK_REGULAR, + 'tags:list': model.User.RANK_REGULAR, + 'tags:view': model.User.RANK_REGULAR, }, }) @@ -24,7 +24,7 @@ def test_retrieving_multiple(user_factory, tag_factory, context_factory): result = api.tag_api.get_tags( context_factory( params={'query': '', 'page': 1}, - user=user_factory(rank=db.User.RANK_REGULAR))) + user=user_factory(rank=model.User.RANK_REGULAR))) assert result == { 'query': '', 'page': 1, @@ -40,7 +40,7 @@ def test_trying_to_retrieve_multiple_without_privileges( api.tag_api.get_tags( context_factory( params={'query': '', 'page': 1}, - user=user_factory(rank=db.User.RANK_ANONYMOUS))) + user=user_factory(rank=model.User.RANK_ANONYMOUS))) def test_retrieving_single(user_factory, tag_factory, context_factory): @@ -50,7 +50,7 @@ def test_retrieving_single(user_factory, tag_factory, context_factory): tags.serialize_tag.return_value = 'serialized tag' result = api.tag_api.get_tag( context_factory( - user=user_factory(rank=db.User.RANK_REGULAR)), + user=user_factory(rank=model.User.RANK_REGULAR)), {'tag_name': 'tag'}) assert result == 'serialized tag' @@ -59,7 +59,7 @@ def test_trying_to_retrieve_single_non_existing(user_factory, context_factory): with pytest.raises(tags.TagNotFoundError): api.tag_api.get_tag( context_factory( - user=user_factory(rank=db.User.RANK_REGULAR)), + user=user_factory(rank=model.User.RANK_REGULAR)), {'tag_name': '-'}) @@ -68,5 +68,5 @@ def test_trying_to_retrieve_single_without_privileges( with pytest.raises(errors.AuthError): api.tag_api.get_tag( context_factory( - user=user_factory(rank=db.User.RANK_ANONYMOUS)), + user=user_factory(rank=model.User.RANK_ANONYMOUS)), {'tag_name': '-'}) diff --git a/server/szurubooru/tests/api/test_tag_siblings_retrieving.py b/server/szurubooru/tests/api/test_tag_siblings_retrieving.py index 6de25fc..fc2f5aa 100644 --- a/server/szurubooru/tests/api/test_tag_siblings_retrieving.py +++ b/server/szurubooru/tests/api/test_tag_siblings_retrieving.py @@ -1,12 +1,12 @@ from unittest.mock import patch import pytest -from szurubooru import api, db, errors +from szurubooru import api, db, model, errors from szurubooru.func import tags @pytest.fixture(autouse=True) def inject_config(config_injector): - config_injector({'privileges': {'tags:view': db.User.RANK_REGULAR}}) + config_injector({'privileges': {'tags:view': model.User.RANK_REGULAR}}) def test_get_tag_siblings(user_factory, tag_factory, context_factory): @@ -21,7 +21,7 @@ def test_get_tag_siblings(user_factory, tag_factory, context_factory): (tag_factory(names=['sib2']), 3), ] result = api.tag_api.get_tag_siblings( - context_factory(user=user_factory(rank=db.User.RANK_REGULAR)), + context_factory(user=user_factory(rank=model.User.RANK_REGULAR)), {'tag_name': 'tag'}) assert result == { 'results': [ @@ -40,12 +40,12 @@ def test_get_tag_siblings(user_factory, tag_factory, context_factory): def test_trying_to_retrieve_non_existing(user_factory, context_factory): with pytest.raises(tags.TagNotFoundError): api.tag_api.get_tag_siblings( - context_factory(user=user_factory(rank=db.User.RANK_REGULAR)), + context_factory(user=user_factory(rank=model.User.RANK_REGULAR)), {'tag_name': '-'}) def test_trying_to_retrieve_without_privileges(user_factory, context_factory): with pytest.raises(errors.AuthError): api.tag_api.get_tag_siblings( - context_factory(user=user_factory(rank=db.User.RANK_ANONYMOUS)), + context_factory(user=user_factory(rank=model.User.RANK_ANONYMOUS)), {'tag_name': '-'}) diff --git a/server/szurubooru/tests/api/test_tag_updating.py b/server/szurubooru/tests/api/test_tag_updating.py index 3fe69bd..fb63e35 100644 --- a/server/szurubooru/tests/api/test_tag_updating.py +++ b/server/szurubooru/tests/api/test_tag_updating.py @@ -1,6 +1,6 @@ from unittest.mock import patch import pytest -from szurubooru import api, db, errors +from szurubooru import api, db, model, errors from szurubooru.func import tags, snapshots @@ -8,18 +8,18 @@ from szurubooru.func import tags, snapshots def inject_config(config_injector): config_injector({ 'privileges': { - 'tags:create': db.User.RANK_REGULAR, - 'tags:edit:names': db.User.RANK_REGULAR, - 'tags:edit:category': db.User.RANK_REGULAR, - 'tags:edit:description': db.User.RANK_REGULAR, - 'tags:edit:suggestions': db.User.RANK_REGULAR, - 'tags:edit:implications': db.User.RANK_REGULAR, + 'tags:create': model.User.RANK_REGULAR, + 'tags:edit:names': model.User.RANK_REGULAR, + 'tags:edit:category': model.User.RANK_REGULAR, + 'tags:edit:description': model.User.RANK_REGULAR, + 'tags:edit:suggestions': model.User.RANK_REGULAR, + 'tags:edit:implications': model.User.RANK_REGULAR, }, }) def test_simple_updating(user_factory, tag_factory, context_factory): - auth_user = user_factory(rank=db.User.RANK_REGULAR) + auth_user = user_factory(rank=model.User.RANK_REGULAR) tag = tag_factory(names=['tag1', 'tag2']) db.session.add(tag) db.session.commit() @@ -56,8 +56,7 @@ def test_simple_updating(user_factory, tag_factory, context_factory): tag, ['sug1', 'sug2']) tags.update_tag_implications.assert_called_once_with( tag, ['imp1', 'imp2']) - tags.serialize_tag.assert_called_once_with( - tag, options=None) + tags.serialize_tag.assert_called_once_with(tag, options=[]) snapshots.modify.assert_called_once_with(tag, auth_user) tags.export_to_json.assert_called_once_with() @@ -90,7 +89,7 @@ def test_omitting_optional_field( api.tag_api.update_tag( context_factory( params={**params, **{'version': 1}}, - user=user_factory(rank=db.User.RANK_REGULAR)), + user=user_factory(rank=model.User.RANK_REGULAR)), {'tag_name': 'tag'}) @@ -99,7 +98,7 @@ def test_trying_to_update_non_existing(user_factory, context_factory): api.tag_api.update_tag( context_factory( params={'names': ['dummy']}, - user=user_factory(rank=db.User.RANK_REGULAR)), + user=user_factory(rank=model.User.RANK_REGULAR)), {'tag_name': 'tag1'}) @@ -117,7 +116,7 @@ def test_trying_to_update_without_privileges( api.tag_api.update_tag( context_factory( params={**params, **{'version': 1}}, - user=user_factory(rank=db.User.RANK_ANONYMOUS)), + user=user_factory(rank=model.User.RANK_ANONYMOUS)), {'tag_name': 'tag'}) @@ -127,9 +126,9 @@ def test_trying_to_create_tags_without_privileges( db.session.add(tag) db.session.commit() config_injector({'privileges': { - 'tags:create': db.User.RANK_ADMINISTRATOR, - 'tags:edit:suggestions': db.User.RANK_REGULAR, - 'tags:edit:implications': db.User.RANK_REGULAR, + 'tags:create': model.User.RANK_ADMINISTRATOR, + 'tags:edit:suggestions': model.User.RANK_REGULAR, + 'tags:edit:implications': model.User.RANK_REGULAR, }}) with patch('szurubooru.func.tags.get_or_create_tags_by_names'): tags.get_or_create_tags_by_names.return_value = ([], ['new-tag']) @@ -137,12 +136,12 @@ def test_trying_to_create_tags_without_privileges( api.tag_api.update_tag( context_factory( params={'suggestions': ['tag1', 'tag2'], 'version': 1}, - user=user_factory(rank=db.User.RANK_REGULAR)), + user=user_factory(rank=model.User.RANK_REGULAR)), {'tag_name': 'tag'}) db.session.rollback() with pytest.raises(errors.AuthError): api.tag_api.update_tag( context_factory( params={'implications': ['tag1', 'tag2'], 'version': 1}, - user=user_factory(rank=db.User.RANK_REGULAR)), + user=user_factory(rank=model.User.RANK_REGULAR)), {'tag_name': 'tag'}) diff --git a/server/szurubooru/tests/api/test_user_creating.py b/server/szurubooru/tests/api/test_user_creating.py index 8b583b6..df2e80b 100644 --- a/server/szurubooru/tests/api/test_user_creating.py +++ b/server/szurubooru/tests/api/test_user_creating.py @@ -1,6 +1,6 @@ from unittest.mock import patch import pytest -from szurubooru import api, db, errors +from szurubooru import api, db, model, errors from szurubooru.func import users @@ -31,7 +31,7 @@ def test_creating_user(user_factory, context_factory, fake_datetime): 'avatarStyle': 'manual', }, files={'avatar': b'...'}, - user=user_factory(rank=db.User.RANK_REGULAR))) + user=user_factory(rank=model.User.RANK_REGULAR))) assert result == 'serialized user' users.create_user.assert_called_once_with( 'chewie1', 'oks', 'asd@asd.asd') @@ -50,7 +50,7 @@ def test_trying_to_omit_mandatory_field(user_factory, context_factory, field): 'password': 'oks', } user = user_factory() - auth_user = user_factory(rank=db.User.RANK_REGULAR) + auth_user = user_factory(rank=model.User.RANK_REGULAR) del params[field] with patch('szurubooru.func.users.create_user'), \ pytest.raises(errors.MissingRequiredParameterError): @@ -70,7 +70,7 @@ def test_omitting_optional_field(user_factory, context_factory, field): } del params[field] user = user_factory() - auth_user = user_factory(rank=db.User.RANK_MODERATOR) + auth_user = user_factory(rank=model.User.RANK_MODERATOR) with patch('szurubooru.func.users.create_user'), \ patch('szurubooru.func.users.update_user_avatar'), \ patch('szurubooru.func.users.serialize_user'): @@ -84,4 +84,4 @@ def test_trying_to_create_user_without_privileges( with pytest.raises(errors.AuthError): api.user_api.create_user(context_factory( params='whatever', - user=user_factory(rank=db.User.RANK_ANONYMOUS))) + user=user_factory(rank=model.User.RANK_ANONYMOUS))) diff --git a/server/szurubooru/tests/api/test_user_deleting.py b/server/szurubooru/tests/api/test_user_deleting.py index 9dd8776..2bd53e2 100644 --- a/server/szurubooru/tests/api/test_user_deleting.py +++ b/server/szurubooru/tests/api/test_user_deleting.py @@ -1,5 +1,5 @@ import pytest -from szurubooru import api, db, errors +from szurubooru import api, db, model, errors from szurubooru.func import users @@ -7,45 +7,45 @@ from szurubooru.func import users def inject_config(config_injector): config_injector({ 'privileges': { - 'users:delete:self': db.User.RANK_REGULAR, - 'users:delete:any': db.User.RANK_MODERATOR, + 'users:delete:self': model.User.RANK_REGULAR, + 'users:delete:any': model.User.RANK_MODERATOR, }, }) def test_deleting_oneself(user_factory, context_factory): - user = user_factory(name='u', rank=db.User.RANK_REGULAR) + user = user_factory(name='u', rank=model.User.RANK_REGULAR) db.session.add(user) db.session.commit() result = api.user_api.delete_user( context_factory( params={'version': 1}, user=user), {'user_name': 'u'}) assert result == {} - assert db.session.query(db.User).count() == 0 + assert db.session.query(model.User).count() == 0 def test_deleting_someone_else(user_factory, context_factory): - user1 = user_factory(name='u1', rank=db.User.RANK_REGULAR) - user2 = user_factory(name='u2', rank=db.User.RANK_MODERATOR) + user1 = user_factory(name='u1', rank=model.User.RANK_REGULAR) + user2 = user_factory(name='u2', rank=model.User.RANK_MODERATOR) db.session.add_all([user1, user2]) db.session.commit() api.user_api.delete_user( context_factory( params={'version': 1}, user=user2), {'user_name': 'u1'}) - assert db.session.query(db.User).count() == 1 + assert db.session.query(model.User).count() == 1 def test_trying_to_delete_someone_else_without_privileges( user_factory, context_factory): - user1 = user_factory(name='u1', rank=db.User.RANK_REGULAR) - user2 = user_factory(name='u2', rank=db.User.RANK_REGULAR) + user1 = user_factory(name='u1', rank=model.User.RANK_REGULAR) + user2 = user_factory(name='u2', rank=model.User.RANK_REGULAR) db.session.add_all([user1, user2]) db.session.commit() with pytest.raises(errors.AuthError): api.user_api.delete_user( context_factory( params={'version': 1}, user=user2), {'user_name': 'u1'}) - assert db.session.query(db.User).count() == 2 + assert db.session.query(model.User).count() == 2 def test_trying_to_delete_non_existing(user_factory, context_factory): @@ -53,5 +53,5 @@ def test_trying_to_delete_non_existing(user_factory, context_factory): api.user_api.delete_user( context_factory( params={'version': 1}, - user=user_factory(rank=db.User.RANK_REGULAR)), + user=user_factory(rank=model.User.RANK_REGULAR)), {'user_name': 'bad'}) diff --git a/server/szurubooru/tests/api/test_user_retrieving.py b/server/szurubooru/tests/api/test_user_retrieving.py index 6400e0d..9be2620 100644 --- a/server/szurubooru/tests/api/test_user_retrieving.py +++ b/server/szurubooru/tests/api/test_user_retrieving.py @@ -1,6 +1,6 @@ from unittest.mock import patch import pytest -from szurubooru import api, db, errors +from szurubooru import api, db, model, errors from szurubooru.func import users @@ -8,16 +8,16 @@ from szurubooru.func import users def inject_config(config_injector): config_injector({ 'privileges': { - 'users:list': db.User.RANK_REGULAR, - 'users:view': db.User.RANK_REGULAR, - 'users:edit:any:email': db.User.RANK_MODERATOR, + 'users:list': model.User.RANK_REGULAR, + 'users:view': model.User.RANK_REGULAR, + 'users:edit:any:email': model.User.RANK_MODERATOR, }, }) def test_retrieving_multiple(user_factory, context_factory): - user1 = user_factory(name='u1', rank=db.User.RANK_MODERATOR) - user2 = user_factory(name='u2', rank=db.User.RANK_MODERATOR) + user1 = user_factory(name='u1', rank=model.User.RANK_MODERATOR) + user2 = user_factory(name='u2', rank=model.User.RANK_MODERATOR) db.session.add_all([user1, user2]) db.session.flush() with patch('szurubooru.func.users.serialize_user'): @@ -25,7 +25,7 @@ def test_retrieving_multiple(user_factory, context_factory): result = api.user_api.get_users( context_factory( params={'query': '', 'page': 1}, - user=user_factory(rank=db.User.RANK_REGULAR))) + user=user_factory(rank=model.User.RANK_REGULAR))) assert result == { 'query': '', 'page': 1, @@ -41,12 +41,12 @@ def test_trying_to_retrieve_multiple_without_privileges( api.user_api.get_users( context_factory( params={'query': '', 'page': 1}, - user=user_factory(rank=db.User.RANK_ANONYMOUS))) + user=user_factory(rank=model.User.RANK_ANONYMOUS))) def test_retrieving_single(user_factory, context_factory): - user = user_factory(name='u1', rank=db.User.RANK_REGULAR) - auth_user = user_factory(rank=db.User.RANK_REGULAR) + user = user_factory(name='u1', rank=model.User.RANK_REGULAR) + auth_user = user_factory(rank=model.User.RANK_REGULAR) db.session.add(user) db.session.flush() with patch('szurubooru.func.users.serialize_user'): @@ -57,7 +57,7 @@ def test_retrieving_single(user_factory, context_factory): def test_trying_to_retrieve_single_non_existing(user_factory, context_factory): - auth_user = user_factory(rank=db.User.RANK_REGULAR) + auth_user = user_factory(rank=model.User.RANK_REGULAR) with pytest.raises(users.UserNotFoundError): api.user_api.get_user( context_factory(user=auth_user), {'user_name': '-'}) @@ -65,8 +65,8 @@ def test_trying_to_retrieve_single_non_existing(user_factory, context_factory): def test_trying_to_retrieve_single_without_privileges( user_factory, context_factory): - auth_user = user_factory(rank=db.User.RANK_ANONYMOUS) - db.session.add(user_factory(name='u1', rank=db.User.RANK_REGULAR)) + auth_user = user_factory(rank=model.User.RANK_ANONYMOUS) + db.session.add(user_factory(name='u1', rank=model.User.RANK_REGULAR)) db.session.flush() with pytest.raises(errors.AuthError): api.user_api.get_user( diff --git a/server/szurubooru/tests/api/test_user_updating.py b/server/szurubooru/tests/api/test_user_updating.py index 921b269..af75049 100644 --- a/server/szurubooru/tests/api/test_user_updating.py +++ b/server/szurubooru/tests/api/test_user_updating.py @@ -1,6 +1,6 @@ from unittest.mock import patch import pytest -from szurubooru import api, db, errors +from szurubooru import api, db, model, errors from szurubooru.func import users @@ -8,23 +8,23 @@ from szurubooru.func import users def inject_config(config_injector): config_injector({ 'privileges': { - 'users:edit:self:name': db.User.RANK_REGULAR, - 'users:edit:self:pass': db.User.RANK_REGULAR, - 'users:edit:self:email': db.User.RANK_REGULAR, - 'users:edit:self:rank': db.User.RANK_MODERATOR, - 'users:edit:self:avatar': db.User.RANK_MODERATOR, - 'users:edit:any:name': db.User.RANK_MODERATOR, - 'users:edit:any:pass': db.User.RANK_MODERATOR, - 'users:edit:any:email': db.User.RANK_MODERATOR, - 'users:edit:any:rank': db.User.RANK_ADMINISTRATOR, - 'users:edit:any:avatar': db.User.RANK_ADMINISTRATOR, + 'users:edit:self:name': model.User.RANK_REGULAR, + 'users:edit:self:pass': model.User.RANK_REGULAR, + 'users:edit:self:email': model.User.RANK_REGULAR, + 'users:edit:self:rank': model.User.RANK_MODERATOR, + 'users:edit:self:avatar': model.User.RANK_MODERATOR, + 'users:edit:any:name': model.User.RANK_MODERATOR, + 'users:edit:any:pass': model.User.RANK_MODERATOR, + 'users:edit:any:email': model.User.RANK_MODERATOR, + 'users:edit:any:rank': model.User.RANK_ADMINISTRATOR, + 'users:edit:any:avatar': model.User.RANK_ADMINISTRATOR, }, }) def test_updating_user(context_factory, user_factory): - user = user_factory(name='u1', rank=db.User.RANK_ADMINISTRATOR) - auth_user = user_factory(rank=db.User.RANK_ADMINISTRATOR) + user = user_factory(name='u1', rank=model.User.RANK_ADMINISTRATOR) + auth_user = user_factory(rank=model.User.RANK_ADMINISTRATOR) db.session.add(user) db.session.flush() @@ -63,13 +63,13 @@ def test_updating_user(context_factory, user_factory): users.update_user_avatar.assert_called_once_with( user, 'manual', b'...') users.serialize_user.assert_called_once_with( - user, auth_user, options=None) + user, auth_user, options=[]) @pytest.mark.parametrize( 'field', ['name', 'email', 'password', 'rank', 'avatarStyle']) def test_omitting_optional_field(user_factory, context_factory, field): - user = user_factory(name='u1', rank=db.User.RANK_ADMINISTRATOR) + user = user_factory(name='u1', rank=model.User.RANK_ADMINISTRATOR) db.session.add(user) db.session.flush() params = { @@ -96,7 +96,7 @@ def test_omitting_optional_field(user_factory, context_factory, field): def test_trying_to_update_non_existing(user_factory, context_factory): - user = user_factory(name='u1', rank=db.User.RANK_ADMINISTRATOR) + user = user_factory(name='u1', rank=model.User.RANK_ADMINISTRATOR) db.session.add(user) db.session.flush() with pytest.raises(users.UserNotFoundError): @@ -113,8 +113,8 @@ def test_trying_to_update_non_existing(user_factory, context_factory): ]) def test_trying_to_update_field_without_privileges( user_factory, context_factory, params): - user1 = user_factory(name='u1', rank=db.User.RANK_REGULAR) - user2 = user_factory(name='u2', rank=db.User.RANK_REGULAR) + user1 = user_factory(name='u1', rank=model.User.RANK_REGULAR) + user2 = user_factory(name='u2', rank=model.User.RANK_REGULAR) db.session.add_all([user1, user2]) db.session.flush() with pytest.raises(errors.AuthError): diff --git a/server/szurubooru/tests/conftest.py b/server/szurubooru/tests/conftest.py index db34ee0..e71f960 100644 --- a/server/szurubooru/tests/conftest.py +++ b/server/szurubooru/tests/conftest.py @@ -7,8 +7,8 @@ from unittest.mock import patch from datetime import datetime import pytest import freezegun -import sqlalchemy -from szurubooru import config, db, rest +import sqlalchemy as sa +from szurubooru import config, db, model, rest class QueryCounter: @@ -36,10 +36,10 @@ if not config.config['test_database']: raise RuntimeError('Test database not configured.') _query_counter = QueryCounter() -_engine = sqlalchemy.create_engine(config.config['test_database']) -db.Base.metadata.drop_all(bind=_engine) -db.Base.metadata.create_all(bind=_engine) -sqlalchemy.event.listen( +_engine = sa.create_engine(config.config['test_database']) +model.Base.metadata.drop_all(bind=_engine) +model.Base.metadata.create_all(bind=_engine) +sa.event.listen( _engine, 'before_cursor_execute', _query_counter.create_before_cursor_execute()) @@ -79,14 +79,14 @@ def query_logger(): @pytest.yield_fixture(scope='function', autouse=True) def session(query_logger): # pylint: disable=unused-argument - db.sessionmaker = sqlalchemy.orm.sessionmaker( + db.sessionmaker = sa.orm.sessionmaker( bind=_engine, autoflush=False) - db.session = sqlalchemy.orm.scoped_session(db.sessionmaker) + db.session = sa.orm.scoped_session(db.sessionmaker) try: yield db.session finally: db.session.remove() - for table in reversed(db.Base.metadata.sorted_tables): + for table in reversed(model.Base.metadata.sorted_tables): db.session.execute(table.delete()) db.session.commit() @@ -101,7 +101,7 @@ def context_factory(session): params=params or {}, files=files or {}) ctx.session = session - ctx.user = user or db.User() + ctx.user = user or model.User() return ctx return factory @@ -115,15 +115,15 @@ def config_injector(): @pytest.fixture def user_factory(): - def factory(name=None, rank=db.User.RANK_REGULAR, email='dummy'): - user = db.User() + def factory(name=None, rank=model.User.RANK_REGULAR, email='dummy'): + user = model.User() user.name = name or get_unique_name() user.password_salt = 'dummy' user.password_hash = 'dummy' user.email = email user.rank = rank user.creation_time = datetime(1997, 1, 1) - user.avatar_style = db.User.AVATAR_GRAVATAR + user.avatar_style = model.User.AVATAR_GRAVATAR return user return factory @@ -131,7 +131,7 @@ def user_factory(): @pytest.fixture def tag_category_factory(): def factory(name=None, color='dummy', default=False): - category = db.TagCategory() + category = model.TagCategory() category.name = name or get_unique_name() category.color = color category.default = default @@ -143,12 +143,12 @@ def tag_category_factory(): def tag_factory(): def factory(names=None, category=None): if not category: - category = db.TagCategory(get_unique_name()) + category = model.TagCategory(get_unique_name()) db.session.add(category) - tag = db.Tag() + tag = model.Tag() tag.names = [] for i, name in enumerate(names or [get_unique_name()]): - tag.names.append(db.TagName(name, i)) + tag.names.append(model.TagName(name, i)) tag.category = category tag.creation_time = datetime(1996, 1, 1) return tag @@ -167,10 +167,10 @@ def post_factory(skip_post_hashing): # pylint: disable=invalid-name def factory( id=None, - safety=db.Post.SAFETY_SAFE, - type=db.Post.TYPE_IMAGE, + safety=model.Post.SAFETY_SAFE, + type=model.Post.TYPE_IMAGE, checksum='...'): - post = db.Post() + post = model.Post() post.post_id = id post.safety = safety post.type = type @@ -191,7 +191,7 @@ def comment_factory(user_factory, post_factory): if not post: post = post_factory() db.session.add(post) - comment = db.Comment() + comment = model.Comment() comment.user = user comment.post = post comment.text = text @@ -207,7 +207,7 @@ def post_score_factory(user_factory, post_factory): user = user_factory() if post is None: post = post_factory() - return db.PostScore( + return model.PostScore( post=post, user=user, score=score, time=datetime(1999, 1, 1)) return factory @@ -219,7 +219,7 @@ def post_favorite_factory(user_factory, post_factory): user = user_factory() if post is None: post = post_factory() - return db.PostFavorite( + return model.PostFavorite( post=post, user=user, time=datetime(1999, 1, 1)) return factory diff --git a/server/szurubooru/tests/func/test_comments.py b/server/szurubooru/tests/func/test_comments.py index c3c2fde..f1e5d0f 100644 --- a/server/szurubooru/tests/func/test_comments.py +++ b/server/szurubooru/tests/func/test_comments.py @@ -38,8 +38,6 @@ def test_try_get_comment(comment_factory): db.session.flush() assert comments.try_get_comment_by_id(comment.comment_id + 1) is None assert comments.try_get_comment_by_id(comment.comment_id) is comment - with pytest.raises(comments.InvalidCommentIdError): - comments.try_get_comment_by_id('-') def test_get_comment(comment_factory): @@ -49,8 +47,6 @@ def test_get_comment(comment_factory): with pytest.raises(comments.CommentNotFoundError): comments.get_comment_by_id(comment.comment_id + 1) assert comments.get_comment_by_id(comment.comment_id) is comment - with pytest.raises(comments.InvalidCommentIdError): - comments.get_comment_by_id('-') def test_create_comment(user_factory, post_factory, fake_datetime): diff --git a/server/szurubooru/tests/func/test_image_hash.py b/server/szurubooru/tests/func/test_image_hash.py index becba90..1b6efd2 100644 --- a/server/szurubooru/tests/func/test_image_hash.py +++ b/server/szurubooru/tests/func/test_image_hash.py @@ -2,7 +2,13 @@ from szurubooru.func import image_hash def test_hashing(read_asset, config_injector): - config_injector({'elasticsearch': {'index': 'szurubooru_test'}}) + config_injector({ + 'elasticsearch': { + 'host': 'localhost', + 'port': 9200, + 'index': 'szurubooru_test', + }, + }) image_hash.purge() image_hash.add_image('test', read_asset('jpeg.jpg')) diff --git a/server/szurubooru/tests/func/test_posts.py b/server/szurubooru/tests/func/test_posts.py index 682a1cc..7606469 100644 --- a/server/szurubooru/tests/func/test_posts.py +++ b/server/szurubooru/tests/func/test_posts.py @@ -2,7 +2,7 @@ import os from unittest.mock import patch from datetime import datetime import pytest -from szurubooru import db +from szurubooru import db, model from szurubooru.func import ( posts, users, comments, tags, images, files, util, image_hash) @@ -14,7 +14,7 @@ from szurubooru.func import ( ]) def test_get_post_url(input_mime_type, expected_url, config_injector): config_injector({'data_url': 'http://example.com/'}) - post = db.Post() + post = model.Post() post.post_id = 1 post.mime_type = input_mime_type assert posts.get_post_content_url(post) == expected_url @@ -23,7 +23,7 @@ def test_get_post_url(input_mime_type, expected_url, config_injector): @pytest.mark.parametrize('input_mime_type', ['image/jpeg', 'image/gif']) def test_get_post_thumbnail_url(input_mime_type, config_injector): config_injector({'data_url': 'http://example.com/'}) - post = db.Post() + post = model.Post() post.post_id = 1 post.mime_type = input_mime_type assert posts.get_post_thumbnail_url(post) \ @@ -36,7 +36,7 @@ def test_get_post_thumbnail_url(input_mime_type, config_injector): ('totally/unknown', 'posts/1.dat'), ]) def test_get_post_content_path(input_mime_type, expected_path): - post = db.Post() + post = model.Post() post.post_id = 1 post.mime_type = input_mime_type assert posts.get_post_content_path(post) == expected_path @@ -44,7 +44,7 @@ def test_get_post_content_path(input_mime_type, expected_path): @pytest.mark.parametrize('input_mime_type', ['image/jpeg', 'image/gif']) def test_get_post_thumbnail_path(input_mime_type): - post = db.Post() + post = model.Post() post.post_id = 1 post.mime_type = input_mime_type assert posts.get_post_thumbnail_path(post) == 'generated-thumbnails/1.jpg' @@ -52,7 +52,7 @@ def test_get_post_thumbnail_path(input_mime_type): @pytest.mark.parametrize('input_mime_type', ['image/jpeg', 'image/gif']) def test_get_post_thumbnail_backup_path(input_mime_type): - post = db.Post() + post = model.Post() post.post_id = 1 post.mime_type = input_mime_type assert posts.get_post_thumbnail_backup_path(post) \ @@ -60,7 +60,7 @@ def test_get_post_thumbnail_backup_path(input_mime_type): def test_serialize_note(): - note = db.PostNote() + note = model.PostNote() note.polygon = [[0, 1], [1, 1], [1, 0], [0, 0]] note.text = '...' assert posts.serialize_note(note) == { @@ -86,7 +86,7 @@ def test_serialize_post( = lambda comment, auth_user: comment.user.name auth_user = user_factory(name='auth user') - post = db.Post() + post = model.Post() post.post_id = 1 post.creation_time = datetime(1997, 1, 1) post.last_edit_time = datetime(1998, 1, 1) @@ -94,9 +94,9 @@ def test_serialize_post( tag_factory(names=['tag1', 'tag2']), tag_factory(names=['tag3']) ] - post.safety = db.Post.SAFETY_SAFE + post.safety = model.Post.SAFETY_SAFE post.source = '4gag' - post.type = db.Post.TYPE_IMAGE + post.type = model.Post.TYPE_IMAGE post.checksum = 'deadbeef' post.mime_type = 'image/jpeg' post.file_size = 100 @@ -116,25 +116,25 @@ def test_serialize_post( user=user_factory(name='commenter2'), post=post, time=datetime(1999, 1, 2)), - db.PostFavorite( + model.PostFavorite( post=post, user=user_factory(name='fav1'), time=datetime(1800, 1, 1)), - db.PostFeature( + model.PostFeature( post=post, user=user_factory(), time=datetime(1999, 1, 1)), - db.PostScore( + model.PostScore( post=post, user=auth_user, score=-1, time=datetime(1800, 1, 1)), - db.PostScore( + model.PostScore( post=post, user=user_factory(), score=1, time=datetime(1800, 1, 1)), - db.PostScore( + model.PostScore( post=post, user=user_factory(), score=1, @@ -209,8 +209,6 @@ def test_try_get_post_by_id(post_factory): db.session.flush() assert posts.try_get_post_by_id(post.post_id) == post assert posts.try_get_post_by_id(post.post_id + 1) is None - with pytest.raises(posts.InvalidPostIdError): - posts.get_post_by_id('-') def test_get_post_by_id(post_factory): @@ -220,8 +218,6 @@ def test_get_post_by_id(post_factory): assert posts.get_post_by_id(post.post_id) == post with pytest.raises(posts.PostNotFoundError): posts.get_post_by_id(post.post_id + 1) - with pytest.raises(posts.InvalidPostIdError): - posts.get_post_by_id('-') def test_create_post(user_factory, fake_datetime): @@ -237,30 +233,30 @@ def test_create_post(user_factory, fake_datetime): @pytest.mark.parametrize('input_safety,expected_safety', [ - ('safe', db.Post.SAFETY_SAFE), - ('sketchy', db.Post.SAFETY_SKETCHY), - ('unsafe', db.Post.SAFETY_UNSAFE), + ('safe', model.Post.SAFETY_SAFE), + ('sketchy', model.Post.SAFETY_SKETCHY), + ('unsafe', model.Post.SAFETY_UNSAFE), ]) def test_update_post_safety(input_safety, expected_safety): - post = db.Post() + post = model.Post() posts.update_post_safety(post, input_safety) assert post.safety == expected_safety def test_update_post_safety_with_invalid_string(): - post = db.Post() + post = model.Post() with pytest.raises(posts.InvalidPostSafetyError): posts.update_post_safety(post, 'bad') def test_update_post_source(): - post = db.Post() + post = model.Post() posts.update_post_source(post, 'x') assert post.source == 'x' def test_update_post_source_with_too_long_string(): - post = db.Post() + post = model.Post() with pytest.raises(posts.InvalidPostSourceError): posts.update_post_source(post, 'x' * 1000) @@ -268,24 +264,24 @@ def test_update_post_source_with_too_long_string(): @pytest.mark.parametrize( 'is_existing,input_file,expected_mime_type,expected_type,output_file_name', [ - (True, 'png.png', 'image/png', db.Post.TYPE_IMAGE, '1.png'), - (False, 'png.png', 'image/png', db.Post.TYPE_IMAGE, '1.png'), - (False, 'jpeg.jpg', 'image/jpeg', db.Post.TYPE_IMAGE, '1.jpg'), - (False, 'gif.gif', 'image/gif', db.Post.TYPE_IMAGE, '1.gif'), + (True, 'png.png', 'image/png', model.Post.TYPE_IMAGE, '1.png'), + (False, 'png.png', 'image/png', model.Post.TYPE_IMAGE, '1.png'), + (False, 'jpeg.jpg', 'image/jpeg', model.Post.TYPE_IMAGE, '1.jpg'), + (False, 'gif.gif', 'image/gif', model.Post.TYPE_IMAGE, '1.gif'), ( False, 'gif-animated.gif', 'image/gif', - db.Post.TYPE_ANIMATION, + model.Post.TYPE_ANIMATION, '1.gif', ), - (False, 'webm.webm', 'video/webm', db.Post.TYPE_VIDEO, '1.webm'), - (False, 'mp4.mp4', 'video/mp4', db.Post.TYPE_VIDEO, '1.mp4'), + (False, 'webm.webm', 'video/webm', model.Post.TYPE_VIDEO, '1.webm'), + (False, 'mp4.mp4', 'video/mp4', model.Post.TYPE_VIDEO, '1.mp4'), ( False, 'flash.swf', 'application/x-shockwave-flash', - db.Post.TYPE_FLASH, + model.Post.TYPE_FLASH, '1.swf' ), ]) @@ -318,7 +314,7 @@ def test_update_post_content_for_new_post( assert post.type == expected_type assert post.checksum == 'crc' assert os.path.exists(output_file_path) - if post.type in (db.Post.TYPE_IMAGE, db.Post.TYPE_ANIMATION): + if post.type in (model.Post.TYPE_IMAGE, model.Post.TYPE_ANIMATION): image_hash.delete_image.assert_called_once_with(post.post_id) image_hash.add_image.assert_called_once_with(post.post_id, content) else: @@ -368,7 +364,7 @@ def test_update_post_content_with_broken_content( @pytest.mark.parametrize('input_content', [None, b'not a media file']) def test_update_post_content_with_invalid_content(input_content): - post = db.Post() + post = model.Post() with pytest.raises(posts.InvalidPostContentError): posts.update_post_content(post, input_content) @@ -492,7 +488,7 @@ def test_update_post_content_leaving_custom_thumbnail( def test_update_post_tags(tag_factory): - post = db.Post() + post = model.Post() with patch('szurubooru.func.tags.get_or_create_tags_by_names'): tags.get_or_create_tags_by_names.side_effect = lambda tag_names: \ ([tag_factory(names=[name]) for name in tag_names], []) @@ -528,7 +524,7 @@ def test_update_post_relations_bidirectionality(post_factory): def test_update_post_relations_with_nonexisting_posts(): - post = db.Post() + post = model.Post() with pytest.raises(posts.InvalidPostRelationError): posts.update_post_relations(post, [100]) @@ -542,7 +538,7 @@ def test_update_post_relations_with_itself(post_factory): def test_update_post_notes(): - post = db.Post() + post = model.Post() posts.update_post_notes( post, [ @@ -576,19 +572,19 @@ def test_update_post_notes(): [{'polygon': [[0, 0], [0, 0], [0, 1]]}], ]) def test_update_post_notes_with_invalid_content(input): - post = db.Post() + post = model.Post() with pytest.raises(posts.InvalidPostNoteError): posts.update_post_notes(post, input) def test_update_post_flags(): - post = db.Post() + post = model.Post() posts.update_post_flags(post, ['loop']) assert post.flags == ['loop'] def test_update_post_flags_with_invalid_content(): - post = db.Post() + post = model.Post() with pytest.raises(posts.InvalidPostFlagError): posts.update_post_flags(post, ['invalid']) diff --git a/server/szurubooru/tests/func/test_snapshots.py b/server/szurubooru/tests/func/test_snapshots.py index d4c6754..0949199 100644 --- a/server/szurubooru/tests/func/test_snapshots.py +++ b/server/szurubooru/tests/func/test_snapshots.py @@ -1,7 +1,7 @@ from unittest.mock import patch from datetime import datetime import pytest -from szurubooru import db +from szurubooru import db, model from szurubooru.func import snapshots, users @@ -56,20 +56,20 @@ def test_get_post_snapshot(post_factory, user_factory, tag_factory): db.session.add_all([user, tag1, tag2, post, related_post1, related_post2]) db.session.flush() - score = db.PostScore() + score = model.PostScore() score.post = post score.user = user score.time = datetime(1997, 1, 1) score.score = 1 - favorite = db.PostFavorite() + favorite = model.PostFavorite() favorite.post = post favorite.user = user favorite.time = datetime(1997, 1, 1) - feature = db.PostFeature() + feature = model.PostFeature() feature.post = post feature.user = user feature.time = datetime(1997, 1, 1) - note = db.PostNote() + note = model.PostNote() note.post = post note.polygon = [(1, 1), (200, 1), (200, 200), (1, 200)] note.text = 'some text' @@ -105,7 +105,7 @@ def test_get_post_snapshot(post_factory, user_factory, tag_factory): def test_serialize_snapshot(user_factory): auth_user = user_factory() - snapshot = db.Snapshot() + snapshot = model.Snapshot() snapshot.operation = snapshot.OPERATION_CREATED snapshot.resource_type = 'type' snapshot.resource_name = 'id' @@ -132,9 +132,9 @@ def test_create(tag_factory, user_factory): snapshots.get_tag_snapshot.return_value = 'mocked' snapshots.create(tag, user_factory()) db.session.flush() - results = db.session.query(db.Snapshot).all() + results = db.session.query(model.Snapshot).all() assert len(results) == 1 - assert results[0].operation == db.Snapshot.OPERATION_CREATED + assert results[0].operation == model.Snapshot.OPERATION_CREATED assert results[0].data == 'mocked' @@ -144,16 +144,16 @@ def test_modify_saves_non_empty_diffs(post_factory, user_factory): 'SQLite doesn\'t support transaction isolation, ' 'which is required to retrieve original entity') post = post_factory() - post.notes = [db.PostNote(polygon=[(0, 0), (0, 1), (1, 1)], text='old')] + post.notes = [model.PostNote(polygon=[(0, 0), (0, 1), (1, 1)], text='old')] user = user_factory() db.session.add_all([post, user]) db.session.commit() post.source = 'new source' - post.notes = [db.PostNote(polygon=[(0, 0), (0, 1), (1, 1)], text='new')] + post.notes = [model.PostNote(polygon=[(0, 0), (0, 1), (1, 1)], text='new')] db.session.flush() snapshots.modify(post, user) db.session.flush() - results = db.session.query(db.Snapshot).all() + results = db.session.query(model.Snapshot).all() assert len(results) == 1 assert results[0].data == { 'type': 'object change', @@ -181,7 +181,7 @@ def test_modify_doesnt_save_empty_diffs(tag_factory, user_factory): db.session.commit() snapshots.modify(tag, user) db.session.flush() - assert db.session.query(db.Snapshot).count() == 0 + assert db.session.query(model.Snapshot).count() == 0 def test_delete(tag_factory, user_factory): @@ -192,9 +192,9 @@ def test_delete(tag_factory, user_factory): snapshots.get_tag_snapshot.return_value = 'mocked' snapshots.delete(tag, user_factory()) db.session.flush() - results = db.session.query(db.Snapshot).all() + results = db.session.query(model.Snapshot).all() assert len(results) == 1 - assert results[0].operation == db.Snapshot.OPERATION_DELETED + assert results[0].operation == model.Snapshot.OPERATION_DELETED assert results[0].data == 'mocked' @@ -205,6 +205,6 @@ def test_merge(tag_factory, user_factory): db.session.flush() snapshots.merge(source_tag, target_tag, user_factory()) db.session.flush() - result = db.session.query(db.Snapshot).one() - assert result.operation == db.Snapshot.OPERATION_MERGED + result = db.session.query(model.Snapshot).one() + assert result.operation == model.Snapshot.OPERATION_MERGED assert result.data == ['tag', 'target'] diff --git a/server/szurubooru/tests/func/test_tag_categories.py b/server/szurubooru/tests/func/test_tag_categories.py index cf74c2a..d1e5570 100644 --- a/server/szurubooru/tests/func/test_tag_categories.py +++ b/server/szurubooru/tests/func/test_tag_categories.py @@ -1,6 +1,6 @@ from unittest.mock import patch import pytest -from szurubooru import db +from szurubooru import db, model from szurubooru.func import tag_categories, cache @@ -191,7 +191,7 @@ def test_get_default_category_name(tag_category_factory): db.session.flush() cache.purge() assert tag_categories.get_default_category_name() == category1.name - db.session.query(db.TagCategory).delete() + db.session.query(model.TagCategory).delete() cache.purge() with pytest.raises(tag_categories.TagCategoryNotFoundError): tag_categories.get_default_category_name() diff --git a/server/szurubooru/tests/func/test_tags.py b/server/szurubooru/tests/func/test_tags.py index d467499..712c8e3 100644 --- a/server/szurubooru/tests/func/test_tags.py +++ b/server/szurubooru/tests/func/test_tags.py @@ -3,7 +3,7 @@ import json from unittest.mock import patch from datetime import datetime import pytest -from szurubooru import db +from szurubooru import db, model from szurubooru.func import tags, tag_categories, cache @@ -304,10 +304,10 @@ def test_delete(tag_factory): tag.implications = [tag_factory(names=['imp'])] db.session.add(tag) db.session.flush() - assert db.session.query(db.Tag).count() == 3 + assert db.session.query(model.Tag).count() == 3 tags.delete(tag) db.session.flush() - assert db.session.query(db.Tag).count() == 2 + assert db.session.query(model.Tag).count() == 2 def test_merge_tags_deletes_source_tag(tag_factory): diff --git a/server/szurubooru/tests/func/test_users.py b/server/szurubooru/tests/func/test_users.py index 73150bb..53d47de 100644 --- a/server/szurubooru/tests/func/test_users.py +++ b/server/szurubooru/tests/func/test_users.py @@ -1,7 +1,7 @@ from unittest.mock import patch from datetime import datetime import pytest -from szurubooru import db, errors +from szurubooru import db, model, errors from szurubooru.func import auth, users, files, util @@ -20,28 +20,28 @@ def test_get_avatar_path(user_name): ( 'user', None, - db.User.AVATAR_GRAVATAR, + model.User.AVATAR_GRAVATAR, ('https://gravatar.com/avatar/' + 'ee11cbb19052e40b07aac0ca060c23ee?d=retro&s=100'), ), ( None, 'user@example.com', - db.User.AVATAR_GRAVATAR, + model.User.AVATAR_GRAVATAR, ('https://gravatar.com/avatar/' + 'b58996c504c5638798eb6b511e6f49af?d=retro&s=100'), ), ( 'user', 'user@example.com', - db.User.AVATAR_GRAVATAR, + model.User.AVATAR_GRAVATAR, ('https://gravatar.com/avatar/' + 'b58996c504c5638798eb6b511e6f49af?d=retro&s=100'), ), ( 'user', None, - db.User.AVATAR_MANUAL, + model.User.AVATAR_MANUAL, 'http://example.com/avatars/user.png', ), ]) @@ -51,7 +51,7 @@ def test_get_avatar_url( 'data_url': 'http://example.com/', 'thumbnails': {'avatar_width': 100}, }) - user = db.User() + user = model.User() user.name = user_name user.email = user_email user.avatar_style = avatar_style @@ -100,7 +100,7 @@ def test_get_liked_post_count( user = user_factory() post = post_factory() auth_user = user if same_user else user_factory() - score = db.PostScore( + score = model.PostScore( post=post, user=user, score=score, time=datetime.now()) db.session.add_all([post, user, score]) db.session.flush() @@ -127,8 +127,8 @@ def test_serialize_user(user_factory): user = user_factory(name='dummy user') user.creation_time = datetime(1997, 1, 1) user.last_edit_time = datetime(1998, 1, 1) - user.avatar_style = db.User.AVATAR_MANUAL - user.rank = db.User.RANK_ADMINISTRATOR + user.avatar_style = model.User.AVATAR_MANUAL + user.rank = model.User.RANK_ADMINISTRATOR db.session.add(user) db.session.flush() assert users.serialize_user(user, auth_user) == { @@ -222,7 +222,7 @@ def test_create_user_for_first_user(fake_datetime): user = users.create_user('name', 'password', 'email') assert user.creation_time == datetime(1997, 1, 1) assert user.last_login_time is None - assert user.rank == db.User.RANK_ADMINISTRATOR + assert user.rank == model.User.RANK_ADMINISTRATOR users.update_user_name.assert_called_once_with(user, 'name') users.update_user_password.assert_called_once_with(user, 'password') users.update_user_email.assert_called_once_with(user, 'email') @@ -236,7 +236,7 @@ def test_create_user_for_subsequent_users(user_factory, config_injector): patch('szurubooru.func.users.update_user_email'), \ patch('szurubooru.func.users.update_user_password'): user = users.create_user('name', 'password', 'email') - assert user.rank == db.User.RANK_REGULAR + assert user.rank == model.User.RANK_REGULAR def test_update_user_name_with_empty_string(user_factory): @@ -379,7 +379,7 @@ def test_update_user_rank_with_higher_rank_than_possible(user_factory): db.session.flush() user = user_factory() auth_user = user_factory() - auth_user.rank = db.User.RANK_ANONYMOUS + auth_user.rank = model.User.RANK_ANONYMOUS with pytest.raises(errors.AuthError): users.update_user_rank(user, 'regular', auth_user) with pytest.raises(errors.AuthError): @@ -391,11 +391,11 @@ def test_update_user_rank(user_factory): db.session.flush() user = user_factory() auth_user = user_factory() - auth_user.rank = db.User.RANK_ADMINISTRATOR + auth_user.rank = model.User.RANK_ADMINISTRATOR users.update_user_rank(user, 'regular', auth_user) users.update_user_rank(auth_user, 'regular', auth_user) - assert user.rank == db.User.RANK_REGULAR - assert auth_user.rank == db.User.RANK_REGULAR + assert user.rank == model.User.RANK_REGULAR + assert auth_user.rank == model.User.RANK_REGULAR def test_update_user_avatar_with_invalid_style(user_factory): @@ -407,7 +407,7 @@ def test_update_user_avatar_with_invalid_style(user_factory): def test_update_user_avatar_to_gravatar(user_factory): user = user_factory() users.update_user_avatar(user, 'gravatar') - assert user.avatar_style == db.User.AVATAR_GRAVATAR + assert user.avatar_style == model.User.AVATAR_GRAVATAR def test_update_user_avatar_to_empty_manual(user_factory): @@ -431,7 +431,7 @@ def test_update_user_avatar_to_new_manual(user_factory, config_injector): user = user_factory() with patch('szurubooru.func.files.save'): users.update_user_avatar(user, 'manual', EMPTY_PIXEL) - assert user.avatar_style == db.User.AVATAR_MANUAL + assert user.avatar_style == model.User.AVATAR_MANUAL assert files.save.called diff --git a/server/szurubooru/tests/db/__init__.py b/server/szurubooru/tests/model/__init__.py index e69de29..e69de29 100644 --- a/server/szurubooru/tests/db/__init__.py +++ b/server/szurubooru/tests/model/__init__.py diff --git a/server/szurubooru/tests/db/test_comment.py b/server/szurubooru/tests/model/test_comment.py index 9a78f95..ffd5189 100644 --- a/server/szurubooru/tests/db/test_comment.py +++ b/server/szurubooru/tests/model/test_comment.py @@ -1,11 +1,11 @@ from datetime import datetime -from szurubooru import db +from szurubooru import db, model def test_saving_comment(user_factory, post_factory): user = user_factory() post = post_factory() - comment = db.Comment() + comment = model.Comment() comment.text = 'long text' * 1000 comment.user = user comment.post = post @@ -29,7 +29,7 @@ def test_cascade_deletions(comment_factory, user_factory, post_factory): db.session.add_all([user, comment]) db.session.flush() - score = db.CommentScore() + score = model.CommentScore() score.comment = comment score.user = user score.time = datetime(1997, 1, 1) @@ -39,14 +39,14 @@ def test_cascade_deletions(comment_factory, user_factory, post_factory): assert not db.session.dirty assert comment.user is not None and comment.user.user_id is not None - assert db.session.query(db.User).count() == 1 - assert db.session.query(db.Comment).count() == 1 - assert db.session.query(db.CommentScore).count() == 1 + assert db.session.query(model.User).count() == 1 + assert db.session.query(model.Comment).count() == 1 + assert db.session.query(model.CommentScore).count() == 1 db.session.delete(comment) db.session.commit() assert not db.session.dirty - assert db.session.query(db.User).count() == 1 - assert db.session.query(db.Comment).count() == 0 - assert db.session.query(db.CommentScore).count() == 0 + assert db.session.query(model.User).count() == 1 + assert db.session.query(model.Comment).count() == 0 + assert db.session.query(model.CommentScore).count() == 0 diff --git a/server/szurubooru/tests/db/test_post.py b/server/szurubooru/tests/model/test_post.py index c021353..f35e275 100644 --- a/server/szurubooru/tests/db/test_post.py +++ b/server/szurubooru/tests/model/test_post.py @@ -1,5 +1,5 @@ from datetime import datetime -from szurubooru import db +from szurubooru import db, model def test_saving_post(post_factory, user_factory, tag_factory): @@ -8,7 +8,7 @@ def test_saving_post(post_factory, user_factory, tag_factory): tag2 = tag_factory() related_post1 = post_factory() related_post2 = post_factory() - post = db.Post() + post = model.Post() post.safety = 'safety' post.type = 'type' post.checksum = 'deadbeef' @@ -54,20 +54,20 @@ def test_cascade_deletions( user, tag1, tag2, post, related_post1, related_post2, comment]) db.session.flush() - score = db.PostScore() + score = model.PostScore() score.post = post score.user = user score.time = datetime(1997, 1, 1) score.score = 1 - favorite = db.PostFavorite() + favorite = model.PostFavorite() favorite.post = post favorite.user = user favorite.time = datetime(1997, 1, 1) - feature = db.PostFeature() + feature = model.PostFeature() feature.post = post feature.user = user feature.time = datetime(1997, 1, 1) - note = db.PostNote() + note = model.PostNote() note.post = post note.polygon = '' note.text = '' @@ -88,31 +88,31 @@ def test_cascade_deletions( assert not db.session.dirty assert post.user is not None and post.user.user_id is not None assert len(post.relations) == 1 - assert db.session.query(db.User).count() == 1 - assert db.session.query(db.Tag).count() == 2 - assert db.session.query(db.Post).count() == 3 - assert db.session.query(db.PostTag).count() == 2 - assert db.session.query(db.PostRelation).count() == 2 - assert db.session.query(db.PostScore).count() == 1 - assert db.session.query(db.PostNote).count() == 1 - assert db.session.query(db.PostFeature).count() == 1 - assert db.session.query(db.PostFavorite).count() == 1 - assert db.session.query(db.Comment).count() == 1 + assert db.session.query(model.User).count() == 1 + assert db.session.query(model.Tag).count() == 2 + assert db.session.query(model.Post).count() == 3 + assert db.session.query(model.PostTag).count() == 2 + assert db.session.query(model.PostRelation).count() == 2 + assert db.session.query(model.PostScore).count() == 1 + assert db.session.query(model.PostNote).count() == 1 + assert db.session.query(model.PostFeature).count() == 1 + assert db.session.query(model.PostFavorite).count() == 1 + assert db.session.query(model.Comment).count() == 1 db.session.delete(post) db.session.commit() assert not db.session.dirty - assert db.session.query(db.User).count() == 1 - assert db.session.query(db.Tag).count() == 2 - assert db.session.query(db.Post).count() == 2 - assert db.session.query(db.PostTag).count() == 0 - assert db.session.query(db.PostRelation).count() == 0 - assert db.session.query(db.PostScore).count() == 0 - assert db.session.query(db.PostNote).count() == 0 - assert db.session.query(db.PostFeature).count() == 0 - assert db.session.query(db.PostFavorite).count() == 0 - assert db.session.query(db.Comment).count() == 0 + assert db.session.query(model.User).count() == 1 + assert db.session.query(model.Tag).count() == 2 + assert db.session.query(model.Post).count() == 2 + assert db.session.query(model.PostTag).count() == 0 + assert db.session.query(model.PostRelation).count() == 0 + assert db.session.query(model.PostScore).count() == 0 + assert db.session.query(model.PostNote).count() == 0 + assert db.session.query(model.PostFeature).count() == 0 + assert db.session.query(model.PostFavorite).count() == 0 + assert db.session.query(model.Comment).count() == 0 def test_tracking_tag_count(post_factory, tag_factory): diff --git a/server/szurubooru/tests/db/test_tag.py b/server/szurubooru/tests/model/test_tag.py index 02134d6..7d3d8d2 100644 --- a/server/szurubooru/tests/db/test_tag.py +++ b/server/szurubooru/tests/model/test_tag.py @@ -1,5 +1,5 @@ from datetime import datetime -from szurubooru import db +from szurubooru import db, model def test_saving_tag(tag_factory): @@ -7,11 +7,11 @@ def test_saving_tag(tag_factory): sug2 = tag_factory(names=['sug2']) imp1 = tag_factory(names=['imp1']) imp2 = tag_factory(names=['imp2']) - tag = db.Tag() - tag.names = [db.TagName('alias1', 0), db.TagName('alias2', 1)] + tag = model.Tag() + tag.names = [model.TagName('alias1', 0), model.TagName('alias2', 1)] tag.suggestions = [] tag.implications = [] - tag.category = db.TagCategory('category') + tag.category = model.TagCategory('category') tag.creation_time = datetime(1997, 1, 1) tag.last_edit_time = datetime(1998, 1, 1) db.session.add_all([tag, sug1, sug2, imp1, imp2]) @@ -29,9 +29,9 @@ def test_saving_tag(tag_factory): db.session.commit() tag = db.session \ - .query(db.Tag) \ - .join(db.TagName) \ - .filter(db.TagName.name == 'alias1') \ + .query(model.Tag) \ + .join(model.TagName) \ + .filter(model.TagName.name == 'alias1') \ .one() assert [tag_name.name for tag_name in tag.names] == ['alias1', 'alias2'] assert tag.category.name == 'category' @@ -48,11 +48,11 @@ def test_cascade_deletions(tag_factory): sug2 = tag_factory(names=['sug2']) imp1 = tag_factory(names=['imp1']) imp2 = tag_factory(names=['imp2']) - tag = db.Tag() - tag.names = [db.TagName('alias1', 0), db.TagName('alias2', 1)] + tag = model.Tag() + tag.names = [model.TagName('alias1', 0), model.TagName('alias2', 1)] tag.suggestions = [] tag.implications = [] - tag.category = db.TagCategory('category') + tag.category = model.TagCategory('category') tag.creation_time = datetime(1997, 1, 1) tag.last_edit_time = datetime(1998, 1, 1) tag.post_count = 1 @@ -72,10 +72,10 @@ def test_cascade_deletions(tag_factory): db.session.delete(tag) db.session.commit() - assert db.session.query(db.Tag).count() == 4 - assert db.session.query(db.TagName).count() == 4 - assert db.session.query(db.TagImplication).count() == 0 - assert db.session.query(db.TagSuggestion).count() == 0 + assert db.session.query(model.Tag).count() == 4 + assert db.session.query(model.TagName).count() == 4 + assert db.session.query(model.TagImplication).count() == 0 + assert db.session.query(model.TagSuggestion).count() == 0 def test_tracking_post_count(post_factory, tag_factory): diff --git a/server/szurubooru/tests/db/test_user.py b/server/szurubooru/tests/model/test_user.py index 59933e3..08875fa 100644 --- a/server/szurubooru/tests/db/test_user.py +++ b/server/szurubooru/tests/model/test_user.py @@ -1,16 +1,16 @@ from datetime import datetime -from szurubooru import db +from szurubooru import db, model def test_saving_user(): - user = db.User() + user = model.User() user.name = 'name' user.password_salt = 'salt' user.password_hash = 'hash' user.email = 'email' user.rank = 'rank' user.creation_time = datetime(1997, 1, 1) - user.avatar_style = db.User.AVATAR_GRAVATAR + user.avatar_style = model.User.AVATAR_GRAVATAR db.session.add(user) db.session.flush() db.session.refresh(user) @@ -21,7 +21,7 @@ def test_saving_user(): assert user.email == 'email' assert user.rank == 'rank' assert user.creation_time == datetime(1997, 1, 1) - assert user.avatar_style == db.User.AVATAR_GRAVATAR + assert user.avatar_style == model.User.AVATAR_GRAVATAR def test_upload_count(user_factory, post_factory): @@ -61,8 +61,8 @@ def test_favorite_count(user_factory, post_factory): post1 = post_factory() post2 = post_factory() db.session.add_all([ - db.PostFavorite(post=post1, time=datetime.utcnow(), user=user1), - db.PostFavorite(post=post2, time=datetime.utcnow(), user=user2), + model.PostFavorite(post=post1, time=datetime.utcnow(), user=user1), + model.PostFavorite(post=post2, time=datetime.utcnow(), user=user2), ]) db.session.flush() db.session.refresh(user1) @@ -79,8 +79,10 @@ def test_liked_post_count(user_factory, post_factory): post1 = post_factory() post2 = post_factory() db.session.add_all([ - db.PostScore(post=post1, time=datetime.utcnow(), user=user1, score=1), - db.PostScore(post=post2, time=datetime.utcnow(), user=user2, score=1), + model.PostScore( + post=post1, time=datetime.utcnow(), user=user1, score=1), + model.PostScore( + post=post2, time=datetime.utcnow(), user=user2, score=1), ]) db.session.flush() db.session.refresh(user1) @@ -98,8 +100,10 @@ def test_disliked_post_count(user_factory, post_factory): post1 = post_factory() post2 = post_factory() db.session.add_all([ - db.PostScore(post=post1, time=datetime.utcnow(), user=user1, score=-1), - db.PostScore(post=post2, time=datetime.utcnow(), user=user2, score=1), + model.PostScore( + post=post1, time=datetime.utcnow(), user=user1, score=-1), + model.PostScore( + post=post2, time=datetime.utcnow(), user=user2, score=1), ]) db.session.flush() db.session.refresh(user1) @@ -114,34 +118,34 @@ def test_cascade_deletions(post_factory, user_factory, comment_factory): post = post_factory() post.user = user - post_score = db.PostScore() + post_score = model.PostScore() post_score.post = post post_score.user = user post_score.time = datetime(1997, 1, 1) post_score.score = 1 post.scores.append(post_score) - post_favorite = db.PostFavorite() + post_favorite = model.PostFavorite() post_favorite.post = post post_favorite.user = user post_favorite.time = datetime(1997, 1, 1) post.favorited_by.append(post_favorite) - post_feature = db.PostFeature() + post_feature = model.PostFeature() post_feature.post = post post_feature.user = user post_feature.time = datetime(1997, 1, 1) post.features.append(post_feature) comment = comment_factory(post=post, user=user) - comment_score = db.CommentScore() + comment_score = model.CommentScore() comment_score.comment = comment comment_score.user = user comment_score.time = datetime(1997, 1, 1) comment_score.score = 1 comment.scores.append(comment_score) - snapshot = db.Snapshot() + snapshot = model.Snapshot() snapshot.user = user snapshot.creation_time = datetime(1997, 1, 1) snapshot.resource_type = '-' @@ -154,27 +158,27 @@ def test_cascade_deletions(post_factory, user_factory, comment_factory): assert not db.session.dirty assert post.user is not None and post.user.user_id is not None - assert db.session.query(db.User).count() == 1 - assert db.session.query(db.Post).count() == 1 - assert db.session.query(db.PostScore).count() == 1 - assert db.session.query(db.PostFeature).count() == 1 - assert db.session.query(db.PostFavorite).count() == 1 - assert db.session.query(db.Comment).count() == 1 - assert db.session.query(db.CommentScore).count() == 1 - assert db.session.query(db.Snapshot).count() == 1 + assert db.session.query(model.User).count() == 1 + assert db.session.query(model.Post).count() == 1 + assert db.session.query(model.PostScore).count() == 1 + assert db.session.query(model.PostFeature).count() == 1 + assert db.session.query(model.PostFavorite).count() == 1 + assert db.session.query(model.Comment).count() == 1 + assert db.session.query(model.CommentScore).count() == 1 + assert db.session.query(model.Snapshot).count() == 1 db.session.delete(user) db.session.commit() assert not db.session.dirty - assert db.session.query(db.User).count() == 0 - assert db.session.query(db.Post).count() == 1 - assert db.session.query(db.Post)[0].user is None - assert db.session.query(db.PostScore).count() == 0 - assert db.session.query(db.PostFeature).count() == 0 - assert db.session.query(db.PostFavorite).count() == 0 - assert db.session.query(db.Comment).count() == 1 - assert db.session.query(db.Comment)[0].user is None - assert db.session.query(db.CommentScore).count() == 0 - assert db.session.query(db.Snapshot).count() == 1 - assert db.session.query(db.Snapshot)[0].user is None + assert db.session.query(model.User).count() == 0 + assert db.session.query(model.Post).count() == 1 + assert db.session.query(model.Post)[0].user is None + assert db.session.query(model.PostScore).count() == 0 + assert db.session.query(model.PostFeature).count() == 0 + assert db.session.query(model.PostFavorite).count() == 0 + assert db.session.query(model.Comment).count() == 1 + assert db.session.query(model.Comment)[0].user is None + assert db.session.query(model.CommentScore).count() == 0 + assert db.session.query(model.Snapshot).count() == 1 + assert db.session.query(model.Snapshot)[0].user is None diff --git a/server/szurubooru/tests/rest/test_context.py b/server/szurubooru/tests/rest/test_context.py index 7380a85..e112ebb 100644 --- a/server/szurubooru/tests/rest/test_context.py +++ b/server/szurubooru/tests/rest/test_context.py @@ -8,13 +8,14 @@ from szurubooru.func import net def test_has_param(): ctx = rest.Context(method=None, url=None, params={'key': 'value'}) assert ctx.has_param('key') - assert not ctx.has_param('key2') + assert not ctx.has_param('non-existing') def test_get_file(): ctx = rest.Context(method=None, url=None, files={'key': b'content'}) assert ctx.get_file('key') == b'content' - assert ctx.get_file('key2') is None + with pytest.raises(errors.ValidationError): + ctx.get_file('non-existing') def test_get_file_from_url(): @@ -23,30 +24,33 @@ def test_get_file_from_url(): ctx = rest.Context( method=None, url=None, params={'keyUrl': 'example.com'}) assert ctx.get_file('key') == b'content' - assert ctx.get_file('key2') is None net.download.assert_called_once_with('example.com') + with pytest.raises(errors.ValidationError): + assert ctx.get_file('non-existing') def test_getting_list_parameter(): ctx = rest.Context( - method=None, url=None, params={'key': 'value', 'list': list('123')}) + method=None, + url=None, + params={'key': 'value', 'list': ['1', '2', '3']}) assert ctx.get_param_as_list('key') == ['value'] - assert ctx.get_param_as_list('key2') is None - assert ctx.get_param_as_list('key2', default=['def']) == ['def'] assert ctx.get_param_as_list('list') == ['1', '2', '3'] with pytest.raises(errors.ValidationError): - ctx.get_param_as_list('key2', required=True) + ctx.get_param_as_list('non-existing') + assert ctx.get_param_as_list('non-existing', default=['def']) == ['def'] def test_getting_string_parameter(): ctx = rest.Context( - method=None, url=None, params={'key': 'value', 'list': list('123')}) + method=None, + url=None, + params={'key': 'value', 'list': ['1', '2', '3']}) assert ctx.get_param_as_string('key') == 'value' - assert ctx.get_param_as_string('key2') is None - assert ctx.get_param_as_string('key2', default='def') == 'def' assert ctx.get_param_as_string('list') == '1,2,3' with pytest.raises(errors.ValidationError): - ctx.get_param_as_string('key2', required=True) + ctx.get_param_as_string('non-existing') + assert ctx.get_param_as_string('non-existing', default='x') == 'x' def test_getting_int_parameter(): @@ -55,12 +59,11 @@ def test_getting_int_parameter(): url=None, params={'key': '50', 'err': 'invalid', 'list': [1, 2, 3]}) assert ctx.get_param_as_int('key') == 50 - assert ctx.get_param_as_int('key2') is None - assert ctx.get_param_as_int('key2', default=5) == 5 with pytest.raises(errors.ValidationError): ctx.get_param_as_int('list') with pytest.raises(errors.ValidationError): - ctx.get_param_as_int('key2', required=True) + ctx.get_param_as_int('non-existing') + assert ctx.get_param_as_int('non-existing', default=5) == 5 with pytest.raises(errors.ValidationError): ctx.get_param_as_int('err') with pytest.raises(errors.ValidationError): @@ -102,7 +105,6 @@ def test_getting_bool_parameter(): test(['1', '2']) ctx = rest.Context(method=None, url=None) - assert ctx.get_param_as_bool('non-existing') is None - assert ctx.get_param_as_bool('non-existing', default=True) is True with pytest.raises(errors.ValidationError): - assert ctx.get_param_as_bool('non-existing', required=True) is None + ctx.get_param_as_bool('non-existing') + assert ctx.get_param_as_bool('non-existing', default=True) is True 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 d579677..945a5e4 100644 --- a/server/szurubooru/tests/search/configs/test_post_search_config.py +++ b/server/szurubooru/tests/search/configs/test_post_search_config.py @@ -1,13 +1,13 @@ # pylint: disable=redefined-outer-name from datetime import datetime import pytest -from szurubooru import db, errors, search +from szurubooru import db, model, errors, search @pytest.fixture def fav_factory(user_factory): def factory(post, user=None): - return db.PostFavorite( + return model.PostFavorite( post=post, user=user or user_factory(), time=datetime.utcnow()) @@ -17,7 +17,7 @@ def fav_factory(user_factory): @pytest.fixture def score_factory(user_factory): def factory(post, user=None, score=1): - return db.PostScore( + return model.PostScore( post=post, user=user or user_factory(), time=datetime.utcnow(), @@ -28,7 +28,7 @@ def score_factory(user_factory): @pytest.fixture def note_factory(): def factory(): - return db.PostNote(polygon='...', text='...') + return model.PostNote(polygon='...', text='...') return factory @@ -36,11 +36,11 @@ def note_factory(): def feature_factory(user_factory): def factory(post=None): if post: - return db.PostFeature( + return model.PostFeature( time=datetime.utcnow(), user=user_factory(), post=post) - return db.PostFeature( + return model.PostFeature( time=datetime.utcnow(), user=user_factory()) return factory @@ -123,7 +123,7 @@ def test_filter_by_score( post3 = post_factory(id=3) for post in [post1, post2, post3]: db.session.add( - db.PostScore( + model.PostScore( score=post.post_id, time=datetime.utcnow(), post=post, @@ -332,10 +332,10 @@ def test_filter_by_type( post2 = post_factory(id=2) post3 = post_factory(id=3) post4 = post_factory(id=4) - post1.type = db.Post.TYPE_IMAGE - post2.type = db.Post.TYPE_ANIMATION - post3.type = db.Post.TYPE_VIDEO - post4.type = db.Post.TYPE_FLASH + post1.type = model.Post.TYPE_IMAGE + post2.type = model.Post.TYPE_ANIMATION + post3.type = model.Post.TYPE_VIDEO + post4.type = model.Post.TYPE_FLASH db.session.add_all([post1, post2, post3, post4]) db.session.flush() verify_unpaged(input, expected_post_ids) @@ -352,9 +352,9 @@ def test_filter_by_safety( post1 = post_factory(id=1) post2 = post_factory(id=2) post3 = post_factory(id=3) - post1.safety = db.Post.SAFETY_SAFE - post2.safety = db.Post.SAFETY_SKETCHY - post3.safety = db.Post.SAFETY_UNSAFE + post1.safety = model.Post.SAFETY_SAFE + post2.safety = model.Post.SAFETY_SKETCHY + post3.safety = model.Post.SAFETY_UNSAFE db.session.add_all([post1, post2, post3]) db.session.flush() verify_unpaged(input, expected_post_ids) |