From a92b1fbdedf1fafdc4a29993ffacd5bf70bfd84e Mon Sep 17 00:00:00 2001 From: Lain Soykaf Date: Sun, 23 Feb 2025 17:51:25 +0400 Subject: UserRelationshipTest: Don't use Mock. --- test/pleroma/user_relationship_test.exs | 22 ++++++++++++++-------- test/support/mocks.ex | 2 ++ 2 files changed, 16 insertions(+), 8 deletions(-) (limited to 'test') diff --git a/test/pleroma/user_relationship_test.exs b/test/pleroma/user_relationship_test.exs index 7d205a746..5b43cb2b6 100644 --- a/test/pleroma/user_relationship_test.exs +++ b/test/pleroma/user_relationship_test.exs @@ -3,11 +3,12 @@ # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.UserRelationshipTest do + alias Pleroma.DateTimeMock alias Pleroma.UserRelationship - use Pleroma.DataCase, async: false + use Pleroma.DataCase, async: true - import Mock + import Mox import Pleroma.Factory describe "*_exists?/2" do @@ -52,6 +53,9 @@ defmodule Pleroma.UserRelationshipTest do end test "creates user relationship record if it doesn't exist", %{users: [user1, user2]} do + DateTimeMock + |> stub_with(Pleroma.DateTime.Impl) + for relationship_type <- [ :block, :mute, @@ -80,13 +84,15 @@ defmodule Pleroma.UserRelationshipTest do end test "if record already exists, returns it", %{users: [user1, user2]} do - user_block = - with_mock NaiveDateTime, [:passthrough], utc_now: fn -> ~N[2017-03-17 17:09:58] end do - {:ok, %{inserted_at: ~N[2017-03-17 17:09:58]}} = - UserRelationship.create_block(user1, user2) - end + fixed_datetime = ~N[2017-03-17 17:09:58] + + Pleroma.DateTimeMock + |> expect(:utc_now, 2, fn -> fixed_datetime end) + + {:ok, %{inserted_at: ^fixed_datetime}} = UserRelationship.create_block(user1, user2) - assert user_block == UserRelationship.create_block(user1, user2) + # Test the idempotency without caring about the exact time + assert {:ok, _} = UserRelationship.create_block(user1, user2) end end diff --git a/test/support/mocks.ex b/test/support/mocks.ex index d84958e15..228b9882e 100644 --- a/test/support/mocks.ex +++ b/test/support/mocks.ex @@ -33,3 +33,5 @@ Mox.defmock(Pleroma.StubbedHTTPSignaturesMock, for: Pleroma.HTTPSignaturesAPI) Mox.defmock(Pleroma.LoggerMock, for: Pleroma.Logging) Mox.defmock(Pleroma.Uploaders.S3.ExAwsMock, for: Pleroma.Uploaders.S3.ExAwsAPI) + +Mox.defmock(Pleroma.DateTimeMock, for: Pleroma.DateTime) -- cgit v1.2.3 From 263b02ffcb661aafd495c2d533718378ff77f014 Mon Sep 17 00:00:00 2001 From: Lain Soykaf Date: Sun, 23 Feb 2025 17:52:17 +0400 Subject: Tests: Use StaticConfig when possible. --- test/mix/tasks/pleroma/digest_test.exs | 2 +- test/mix/tasks/pleroma/user_test.exs | 2 +- test/pleroma/conversation_test.exs | 2 +- test/pleroma/notification_test.exs | 2 +- test/pleroma/user_test.exs | 2 +- test/pleroma/web/activity_pub/activity_pub_controller_test.exs | 2 +- test/pleroma/web/admin_api/controllers/user_controller_test.exs | 2 +- test/pleroma/web/mastodon_api/controllers/account_controller_test.exs | 2 +- .../web/mastodon_api/controllers/notification_controller_test.exs | 2 +- test/pleroma/web/mastodon_api/controllers/search_controller_test.exs | 2 +- test/pleroma/web/mastodon_api/views/notification_view_test.exs | 2 +- .../web/pleroma_api/controllers/emoji_reaction_controller_test.exs | 2 +- test/pleroma/workers/cron/digest_emails_worker_test.exs | 2 +- test/pleroma/workers/cron/new_users_digest_worker_test.exs | 2 +- 14 files changed, 14 insertions(+), 14 deletions(-) (limited to 'test') diff --git a/test/mix/tasks/pleroma/digest_test.exs b/test/mix/tasks/pleroma/digest_test.exs index 08482aadb..0d1804cdb 100644 --- a/test/mix/tasks/pleroma/digest_test.exs +++ b/test/mix/tasks/pleroma/digest_test.exs @@ -24,7 +24,7 @@ defmodule Mix.Tasks.Pleroma.DigestTest do setup do: clear_config([Pleroma.Emails.Mailer, :enabled], true) setup do - Mox.stub_with(Pleroma.UnstubbedConfigMock, Pleroma.Config) + Mox.stub_with(Pleroma.UnstubbedConfigMock, Pleroma.Test.StaticConfig) :ok end diff --git a/test/mix/tasks/pleroma/user_test.exs b/test/mix/tasks/pleroma/user_test.exs index c9bcf2951..7ce5e92cb 100644 --- a/test/mix/tasks/pleroma/user_test.exs +++ b/test/mix/tasks/pleroma/user_test.exs @@ -21,7 +21,7 @@ defmodule Mix.Tasks.Pleroma.UserTest do import Pleroma.Factory setup do - Mox.stub_with(Pleroma.UnstubbedConfigMock, Pleroma.Config) + Mox.stub_with(Pleroma.UnstubbedConfigMock, Pleroma.Test.StaticConfig) :ok end diff --git a/test/pleroma/conversation_test.exs b/test/pleroma/conversation_test.exs index 809c1951a..02b5de615 100644 --- a/test/pleroma/conversation_test.exs +++ b/test/pleroma/conversation_test.exs @@ -14,7 +14,7 @@ defmodule Pleroma.ConversationTest do setup_all do: clear_config([:instance, :federating], true) setup do - Mox.stub_with(Pleroma.UnstubbedConfigMock, Pleroma.Config) + Mox.stub_with(Pleroma.UnstubbedConfigMock, Pleroma.Test.StaticConfig) :ok end diff --git a/test/pleroma/notification_test.exs b/test/pleroma/notification_test.exs index e595c5c53..4b20e07cf 100644 --- a/test/pleroma/notification_test.exs +++ b/test/pleroma/notification_test.exs @@ -19,7 +19,7 @@ defmodule Pleroma.NotificationTest do alias Pleroma.Web.MastodonAPI.NotificationView setup do - Mox.stub_with(Pleroma.UnstubbedConfigMock, Pleroma.Config) + Mox.stub_with(Pleroma.UnstubbedConfigMock, Pleroma.Test.StaticConfig) :ok end diff --git a/test/pleroma/user_test.exs b/test/pleroma/user_test.exs index 06afc0709..db493616a 100644 --- a/test/pleroma/user_test.exs +++ b/test/pleroma/user_test.exs @@ -20,7 +20,7 @@ defmodule Pleroma.UserTest do import Swoosh.TestAssertions setup do - Mox.stub_with(Pleroma.UnstubbedConfigMock, Pleroma.Config) + Mox.stub_with(Pleroma.UnstubbedConfigMock, Pleroma.Test.StaticConfig) :ok end diff --git a/test/pleroma/web/activity_pub/activity_pub_controller_test.exs b/test/pleroma/web/activity_pub/activity_pub_controller_test.exs index b627478dc..b08690ed2 100644 --- a/test/pleroma/web/activity_pub/activity_pub_controller_test.exs +++ b/test/pleroma/web/activity_pub/activity_pub_controller_test.exs @@ -26,7 +26,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubControllerTest do require Pleroma.Constants setup do - Mox.stub_with(Pleroma.UnstubbedConfigMock, Pleroma.Config) + Mox.stub_with(Pleroma.UnstubbedConfigMock, Pleroma.Test.StaticConfig) :ok end diff --git a/test/pleroma/web/admin_api/controllers/user_controller_test.exs b/test/pleroma/web/admin_api/controllers/user_controller_test.exs index c8495c477..0e5650285 100644 --- a/test/pleroma/web/admin_api/controllers/user_controller_test.exs +++ b/test/pleroma/web/admin_api/controllers/user_controller_test.exs @@ -20,7 +20,7 @@ defmodule Pleroma.Web.AdminAPI.UserControllerTest do alias Pleroma.Web.MediaProxy setup do - Mox.stub_with(Pleroma.UnstubbedConfigMock, Pleroma.Config) + Mox.stub_with(Pleroma.UnstubbedConfigMock, Pleroma.Test.StaticConfig) :ok end diff --git a/test/pleroma/web/mastodon_api/controllers/account_controller_test.exs b/test/pleroma/web/mastodon_api/controllers/account_controller_test.exs index 54f6818bd..cd3107f32 100644 --- a/test/pleroma/web/mastodon_api/controllers/account_controller_test.exs +++ b/test/pleroma/web/mastodon_api/controllers/account_controller_test.exs @@ -19,7 +19,7 @@ defmodule Pleroma.Web.MastodonAPI.AccountControllerTest do import Pleroma.Factory setup do - Mox.stub_with(Pleroma.UnstubbedConfigMock, Pleroma.Config) + Mox.stub_with(Pleroma.UnstubbedConfigMock, Pleroma.Test.StaticConfig) :ok end diff --git a/test/pleroma/web/mastodon_api/controllers/notification_controller_test.exs b/test/pleroma/web/mastodon_api/controllers/notification_controller_test.exs index 8fc22dde1..88f2fb7af 100644 --- a/test/pleroma/web/mastodon_api/controllers/notification_controller_test.exs +++ b/test/pleroma/web/mastodon_api/controllers/notification_controller_test.exs @@ -13,7 +13,7 @@ defmodule Pleroma.Web.MastodonAPI.NotificationControllerTest do import Pleroma.Factory setup do - Mox.stub_with(Pleroma.UnstubbedConfigMock, Pleroma.Config) + Mox.stub_with(Pleroma.UnstubbedConfigMock, Pleroma.Test.StaticConfig) :ok end diff --git a/test/pleroma/web/mastodon_api/controllers/search_controller_test.exs b/test/pleroma/web/mastodon_api/controllers/search_controller_test.exs index d38767c96..d8263dfad 100644 --- a/test/pleroma/web/mastodon_api/controllers/search_controller_test.exs +++ b/test/pleroma/web/mastodon_api/controllers/search_controller_test.exs @@ -14,7 +14,7 @@ defmodule Pleroma.Web.MastodonAPI.SearchControllerTest do import Mock setup do - Mox.stub_with(Pleroma.UnstubbedConfigMock, Pleroma.Config) + Mox.stub_with(Pleroma.UnstubbedConfigMock, Pleroma.Test.StaticConfig) :ok end diff --git a/test/pleroma/web/mastodon_api/views/notification_view_test.exs b/test/pleroma/web/mastodon_api/views/notification_view_test.exs index b1f3523ac..ce5ddd0fc 100644 --- a/test/pleroma/web/mastodon_api/views/notification_view_test.exs +++ b/test/pleroma/web/mastodon_api/views/notification_view_test.exs @@ -23,7 +23,7 @@ defmodule Pleroma.Web.MastodonAPI.NotificationViewTest do import Pleroma.Factory setup do - Mox.stub_with(Pleroma.UnstubbedConfigMock, Pleroma.Config) + Mox.stub_with(Pleroma.UnstubbedConfigMock, Pleroma.Test.StaticConfig) :ok end diff --git a/test/pleroma/web/pleroma_api/controllers/emoji_reaction_controller_test.exs b/test/pleroma/web/pleroma_api/controllers/emoji_reaction_controller_test.exs index 8c2dcc1bb..c1e452a1e 100644 --- a/test/pleroma/web/pleroma_api/controllers/emoji_reaction_controller_test.exs +++ b/test/pleroma/web/pleroma_api/controllers/emoji_reaction_controller_test.exs @@ -14,7 +14,7 @@ defmodule Pleroma.Web.PleromaAPI.EmojiReactionControllerTest do import Pleroma.Factory setup do - Mox.stub_with(Pleroma.UnstubbedConfigMock, Pleroma.Config) + Mox.stub_with(Pleroma.UnstubbedConfigMock, Pleroma.Test.StaticConfig) :ok end diff --git a/test/pleroma/workers/cron/digest_emails_worker_test.exs b/test/pleroma/workers/cron/digest_emails_worker_test.exs index e0bdf303e..46be82a4f 100644 --- a/test/pleroma/workers/cron/digest_emails_worker_test.exs +++ b/test/pleroma/workers/cron/digest_emails_worker_test.exs @@ -14,7 +14,7 @@ defmodule Pleroma.Workers.Cron.DigestEmailsWorkerTest do setup do: clear_config([:email_notifications, :digest]) setup do - Mox.stub_with(Pleroma.UnstubbedConfigMock, Pleroma.Config) + Mox.stub_with(Pleroma.UnstubbedConfigMock, Pleroma.Test.StaticConfig) :ok end diff --git a/test/pleroma/workers/cron/new_users_digest_worker_test.exs b/test/pleroma/workers/cron/new_users_digest_worker_test.exs index 0e4234cc8..ca4139eac 100644 --- a/test/pleroma/workers/cron/new_users_digest_worker_test.exs +++ b/test/pleroma/workers/cron/new_users_digest_worker_test.exs @@ -11,7 +11,7 @@ defmodule Pleroma.Workers.Cron.NewUsersDigestWorkerTest do alias Pleroma.Workers.Cron.NewUsersDigestWorker setup do - Mox.stub_with(Pleroma.UnstubbedConfigMock, Pleroma.Config) + Mox.stub_with(Pleroma.UnstubbedConfigMock, Pleroma.Test.StaticConfig) :ok end -- cgit v1.2.3 From 229ce66a8fdc7db626bdfee6a3a526ee028b510a Mon Sep 17 00:00:00 2001 From: Lain Soykaf Date: Sun, 23 Feb 2025 17:52:33 +0400 Subject: DataCase: By default, stub DateTime. --- test/support/data_case.ex | 2 ++ 1 file changed, 2 insertions(+) (limited to 'test') diff --git a/test/support/data_case.ex b/test/support/data_case.ex index 52d4bef1a..304bee5da 100644 --- a/test/support/data_case.ex +++ b/test/support/data_case.ex @@ -117,6 +117,8 @@ defmodule Pleroma.DataCase do Mox.stub_with(Pleroma.ConfigMock, Pleroma.Config) Mox.stub_with(Pleroma.StaticStubbedConfigMock, Pleroma.Test.StaticConfig) Mox.stub_with(Pleroma.StubbedHTTPSignaturesMock, Pleroma.Test.HTTPSignaturesProxy) + + Mox.stub_with(Pleroma.DateTimeMock, Pleroma.DateTime.Impl) end def ensure_local_uploader(context) do -- cgit v1.2.3 From 4b3a985660f6db38eb411a34b2a61d250498eae2 Mon Sep 17 00:00:00 2001 From: Lain Soykaf Date: Mon, 24 Feb 2025 17:15:48 +0400 Subject: PackTest: Make test more resilient --- test/pleroma/emoji/pack_test.exs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'test') diff --git a/test/pleroma/emoji/pack_test.exs b/test/pleroma/emoji/pack_test.exs index 00001abfc..a05609e9a 100644 --- a/test/pleroma/emoji/pack_test.exs +++ b/test/pleroma/emoji/pack_test.exs @@ -62,7 +62,7 @@ defmodule Pleroma.Emoji.PackTest do path: Path.absname("test/instance_static/emoji/test_pack/blank.png") } - assert Pack.add_file(pack, nil, nil, file) == {:error, :einval} + assert {:error, _} = Pack.add_file(pack, nil, nil, file) end test "returns pack when zip file is empty", %{pack: pack} do -- cgit v1.2.3 From 1ebbab1618b3dbd44fde78522b7503a95a34523e Mon Sep 17 00:00:00 2001 From: Lain Soykaf Date: Mon, 24 Feb 2025 17:15:59 +0400 Subject: AppTest: Make test more resilient. --- test/pleroma/web/o_auth/app_test.exs | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) (limited to 'test') diff --git a/test/pleroma/web/o_auth/app_test.exs b/test/pleroma/web/o_auth/app_test.exs index 44219cf90..a69ba371e 100644 --- a/test/pleroma/web/o_auth/app_test.exs +++ b/test/pleroma/web/o_auth/app_test.exs @@ -58,16 +58,28 @@ defmodule Pleroma.Web.OAuth.AppTest do attrs = %{client_name: "Mastodon-Local", redirect_uris: "."} {:ok, %App{} = old_app} = App.get_or_make(attrs, ["write"]) + # backdate the old app so it's within the threshold for being cleaned up + one_hour_ago = DateTime.add(DateTime.utc_now(), -3600) + + {:ok, _} = + "UPDATE apps SET inserted_at = $1, updated_at = $1 WHERE id = $2" + |> Pleroma.Repo.query([one_hour_ago, old_app.id]) + + # Create the new app after backdating the old one attrs = %{client_name: "PleromaFE", redirect_uris: "."} {:ok, %App{} = app} = App.get_or_make(attrs, ["write"]) - # backdate the old app so it's within the threshold for being cleaned up + # Ensure the new app has a recent timestamp + now = DateTime.utc_now() + {:ok, _} = - "UPDATE apps SET inserted_at = now() - interval '1 hour' WHERE id = #{old_app.id}" - |> Pleroma.Repo.query() + "UPDATE apps SET inserted_at = $1, updated_at = $1 WHERE id = $2" + |> Pleroma.Repo.query([now, app.id]) App.remove_orphans() - assert [app] == Pleroma.Repo.all(App) + assert [returned_app] = Pleroma.Repo.all(App) + assert returned_app.client_name == "PleromaFE" + assert returned_app.id == app.id end end -- cgit v1.2.3 From bee027e51163d980991f4442a3eb3b0429f0fc40 Mon Sep 17 00:00:00 2001 From: Lain Soykaf Date: Tue, 25 Feb 2025 16:16:15 +0400 Subject: DatabaseTest: Include user_follows_hashtag in expected tables --- test/mix/tasks/pleroma/database_test.exs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'test') diff --git a/test/mix/tasks/pleroma/database_test.exs b/test/mix/tasks/pleroma/database_test.exs index 96a925528..65c4db27c 100644 --- a/test/mix/tasks/pleroma/database_test.exs +++ b/test/mix/tasks/pleroma/database_test.exs @@ -411,8 +411,7 @@ defmodule Mix.Tasks.Pleroma.DatabaseTest do ["scheduled_activities"], ["schema_migrations"], ["thread_mutes"], - # ["user_follows_hashtag"], # not in pleroma - # ["user_frontend_setting_profiles"], # not in pleroma + ["user_follows_hashtag"], ["user_invite_tokens"], ["user_notes"], ["user_relationships"], -- cgit v1.2.3 From ee291f08e82eee596e5e8651a8bbcf7dad147dc7 Mon Sep 17 00:00:00 2001 From: Lain Soykaf Date: Tue, 25 Feb 2025 16:40:45 +0400 Subject: AnonymizeFilename: Asyncify --- test/pleroma/upload/filter/anonymize_filename_test.exs | 17 ++++++++++++----- test/pleroma/upload/filter_test.exs | 7 ++++--- 2 files changed, 16 insertions(+), 8 deletions(-) (limited to 'test') diff --git a/test/pleroma/upload/filter/anonymize_filename_test.exs b/test/pleroma/upload/filter/anonymize_filename_test.exs index 9b94b91c3..0f817a5a1 100644 --- a/test/pleroma/upload/filter/anonymize_filename_test.exs +++ b/test/pleroma/upload/filter/anonymize_filename_test.exs @@ -3,9 +3,11 @@ # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Upload.Filter.AnonymizeFilenameTest do - use Pleroma.DataCase + use Pleroma.DataCase, async: true + import Mox alias Pleroma.Upload + alias Pleroma.StaticStubbedConfigMock, as: ConfigMock setup do File.cp!("test/fixtures/image.jpg", "test/fixtures/image_tmp.jpg") @@ -19,21 +21,26 @@ defmodule Pleroma.Upload.Filter.AnonymizeFilenameTest do %{upload_file: upload_file} end - setup do: clear_config([Pleroma.Upload.Filter.AnonymizeFilename, :text]) - test "it replaces filename on pre-defined text", %{upload_file: upload_file} do - clear_config([Upload.Filter.AnonymizeFilename, :text], "custom-file.png") + ConfigMock + |> stub(:get, fn [Upload.Filter.AnonymizeFilename, :text] -> "custom-file.png" end) + {:ok, :filtered, %Upload{name: name}} = Upload.Filter.AnonymizeFilename.filter(upload_file) assert name == "custom-file.png" end test "it replaces filename on pre-defined text expression", %{upload_file: upload_file} do - clear_config([Upload.Filter.AnonymizeFilename, :text], "custom-file.{extension}") + ConfigMock + |> stub(:get, fn [Upload.Filter.AnonymizeFilename, :text] -> "custom-file.{extension}" end) + {:ok, :filtered, %Upload{name: name}} = Upload.Filter.AnonymizeFilename.filter(upload_file) assert name == "custom-file.jpg" end test "it replaces filename on random text", %{upload_file: upload_file} do + ConfigMock + |> stub(:get, fn [Upload.Filter.AnonymizeFilename, :text] -> nil end) + {:ok, :filtered, %Upload{name: name}} = Upload.Filter.AnonymizeFilename.filter(upload_file) assert <<_::bytes-size(14)>> <> ".jpg" = name refute name == "an… image.jpg" diff --git a/test/pleroma/upload/filter_test.exs b/test/pleroma/upload/filter_test.exs index 706fc9ac7..79bc369a6 100644 --- a/test/pleroma/upload/filter_test.exs +++ b/test/pleroma/upload/filter_test.exs @@ -5,12 +5,13 @@ defmodule Pleroma.Upload.FilterTest do use Pleroma.DataCase + import Mox alias Pleroma.Upload.Filter - - setup do: clear_config([Pleroma.Upload.Filter.AnonymizeFilename, :text]) + alias Pleroma.StaticStubbedConfigMock, as: ConfigMock test "applies filters" do - clear_config([Pleroma.Upload.Filter.AnonymizeFilename, :text], "custom-file.png") + ConfigMock + |> stub(:get, fn [Pleroma.Upload.Filter.AnonymizeFilename, :text] -> "custom-file.png" end) File.cp!( "test/fixtures/image.jpg", -- cgit v1.2.3 From c31fabdebddbd434a9fcff57cb36613f52ebc6a2 Mon Sep 17 00:00:00 2001 From: Lain Soykaf Date: Tue, 25 Feb 2025 17:08:21 +0400 Subject: Mogrify/Mogrifun: Asyncify --- test/pleroma/upload/filter/mogrifun_test.exs | 28 +++++++++------------------ test/pleroma/upload/filter/mogrify_test.exs | 29 +++++++++++++--------------- test/support/mocks.ex | 1 + test/test_helper.exs | 6 ++++++ 4 files changed, 29 insertions(+), 35 deletions(-) (limited to 'test') diff --git a/test/pleroma/upload/filter/mogrifun_test.exs b/test/pleroma/upload/filter/mogrifun_test.exs index bf9b65589..4de998c88 100644 --- a/test/pleroma/upload/filter/mogrifun_test.exs +++ b/test/pleroma/upload/filter/mogrifun_test.exs @@ -3,11 +3,12 @@ # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Upload.Filter.MogrifunTest do - use Pleroma.DataCase - import Mock + use Pleroma.DataCase, async: true + import Mox alias Pleroma.Upload alias Pleroma.Upload.Filter + alias Pleroma.MogrifyMock test "apply mogrify filter" do File.cp!( @@ -22,23 +23,12 @@ defmodule Pleroma.Upload.Filter.MogrifunTest do tempfile: Path.absname("test/fixtures/image_tmp.jpg") } - task = - Task.async(fn -> - assert_receive {:apply_filter, {}}, 4_000 - end) + MogrifyMock + |> stub(:open, fn _file -> %{} end) + |> stub(:custom, fn _image, _action -> %{} end) + |> stub(:custom, fn _image, _action, _options -> %{} end) + |> stub(:save, fn _image, [in_place: true] -> :ok end) - with_mocks([ - {Mogrify, [], - [ - open: fn _f -> %Mogrify.Image{} end, - custom: fn _m, _a -> send(task.pid, {:apply_filter, {}}) end, - custom: fn _m, _a, _o -> send(task.pid, {:apply_filter, {}}) end, - save: fn _f, _o -> :ok end - ]} - ]) do - assert Filter.Mogrifun.filter(upload) == {:ok, :filtered} - end - - Task.await(task) + assert Filter.Mogrifun.filter(upload) == {:ok, :filtered} end end diff --git a/test/pleroma/upload/filter/mogrify_test.exs b/test/pleroma/upload/filter/mogrify_test.exs index 208da57ca..6826faafe 100644 --- a/test/pleroma/upload/filter/mogrify_test.exs +++ b/test/pleroma/upload/filter/mogrify_test.exs @@ -3,13 +3,18 @@ # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Upload.Filter.MogrifyTest do - use Pleroma.DataCase - import Mock + use Pleroma.DataCase, async: true + import Mox alias Pleroma.Upload.Filter + alias Pleroma.StaticStubbedConfigMock, as: ConfigMock + alias Pleroma.MogrifyMock + + setup :verify_on_exit! test "apply mogrify filter" do - clear_config(Filter.Mogrify, args: [{"tint", "40"}]) + ConfigMock + |> stub(:get!, fn [Filter.Mogrify, :args] -> [{"tint", "40"}] end) File.cp!( "test/fixtures/image.jpg", @@ -23,19 +28,11 @@ defmodule Pleroma.Upload.Filter.MogrifyTest do tempfile: Path.absname("test/fixtures/image_tmp.jpg") } - task = - Task.async(fn -> - assert_receive {:apply_filter, {_, "tint", "40"}}, 4_000 - end) - - with_mock Mogrify, - open: fn _f -> %Mogrify.Image{} end, - custom: fn _m, _a -> :ok end, - custom: fn m, a, o -> send(task.pid, {:apply_filter, {m, a, o}}) end, - save: fn _f, _o -> :ok end do - assert Filter.Mogrify.filter(upload) == {:ok, :filtered} - end + MogrifyMock + |> expect(:open, fn _file -> %{} end) + |> expect(:custom, fn _image, "tint", "40" -> %{} end) + |> expect(:save, fn _image, [in_place: true] -> :ok end) - Task.await(task) + assert Filter.Mogrify.filter(upload) == {:ok, :filtered} end end diff --git a/test/support/mocks.ex b/test/support/mocks.ex index 228b9882e..ca2974504 100644 --- a/test/support/mocks.ex +++ b/test/support/mocks.ex @@ -35,3 +35,4 @@ Mox.defmock(Pleroma.LoggerMock, for: Pleroma.Logging) Mox.defmock(Pleroma.Uploaders.S3.ExAwsMock, for: Pleroma.Uploaders.S3.ExAwsAPI) Mox.defmock(Pleroma.DateTimeMock, for: Pleroma.DateTime) +Mox.defmock(Pleroma.MogrifyMock, for: Pleroma.MogrifyBehaviour) diff --git a/test/test_helper.exs b/test/test_helper.exs index fed7ce8a7..94661353b 100644 --- a/test/test_helper.exs +++ b/test/test_helper.exs @@ -34,7 +34,13 @@ defmodule Pleroma.Test.StaticConfig do @behaviour Pleroma.Config.Getting @config Application.get_all_env(:pleroma) + @impl true def get(path, default \\ nil) do get_in(@config, path) || default end + + @impl true + def get!(path) do + get_in(@config, path) + end end -- cgit v1.2.3 From fd128ec7c2d73842a168a25c1a9e67c6c23504e6 Mon Sep 17 00:00:00 2001 From: Lain Soykaf Date: Tue, 25 Feb 2025 17:18:49 +0400 Subject: ConfigControllerTest: Fix it! --- .../web/admin_api/controllers/config_controller_test.exs | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) (limited to 'test') diff --git a/test/pleroma/web/admin_api/controllers/config_controller_test.exs b/test/pleroma/web/admin_api/controllers/config_controller_test.exs index dc12155f5..e12115ea1 100644 --- a/test/pleroma/web/admin_api/controllers/config_controller_test.exs +++ b/test/pleroma/web/admin_api/controllers/config_controller_test.exs @@ -1211,8 +1211,6 @@ defmodule Pleroma.Web.AdminAPI.ConfigControllerTest do end test "args for Pleroma.Upload.Filter.Mogrify with custom tuples", %{conn: conn} do - clear_config(Pleroma.Upload.Filter.Mogrify) - assert conn |> put_req_header("content-type", "application/json") |> post("/api/pleroma/admin/config", %{ @@ -1240,7 +1238,8 @@ defmodule Pleroma.Web.AdminAPI.ConfigControllerTest do "need_reboot" => false } - assert Config.get(Pleroma.Upload.Filter.Mogrify) == [args: ["auto-orient", "strip"]] + config = Config.get(Pleroma.Upload.Filter.Mogrify) + assert {:args, ["auto-orient", "strip"]} in config assert conn |> put_req_header("content-type", "application/json") @@ -1289,9 +1288,9 @@ defmodule Pleroma.Web.AdminAPI.ConfigControllerTest do "need_reboot" => false } - assert Config.get(Pleroma.Upload.Filter.Mogrify) == [ - args: ["auto-orient", "strip", {"implode", "1"}, {"resize", "3840x1080>"}] - ] + config = Config.get(Pleroma.Upload.Filter.Mogrify) + + assert {:args, ["auto-orient", "strip", {"implode", "1"}, {"resize", "3840x1080>"}]} in config end test "enables the welcome messages", %{conn: conn} do -- cgit v1.2.3 From 70a784e16a72426522c5045ec8281a59f0298ffd Mon Sep 17 00:00:00 2001 From: Lain Soykaf Date: Tue, 25 Feb 2025 17:36:05 +0400 Subject: AutolinkerToLinkifyTest: Asyncify --- test/pleroma/repo/migrations/autolinker_to_linkify_test.exs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'test') diff --git a/test/pleroma/repo/migrations/autolinker_to_linkify_test.exs b/test/pleroma/repo/migrations/autolinker_to_linkify_test.exs index 9847781f0..99522994a 100644 --- a/test/pleroma/repo/migrations/autolinker_to_linkify_test.exs +++ b/test/pleroma/repo/migrations/autolinker_to_linkify_test.exs @@ -3,12 +3,11 @@ # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Repo.Migrations.AutolinkerToLinkifyTest do - use Pleroma.DataCase + use Pleroma.DataCase, async: true import Pleroma.Factory import Pleroma.Tests.Helpers alias Pleroma.ConfigDB - setup do: clear_config(Pleroma.Formatter) setup_all do: require_migration("20200716195806_autolinker_to_linkify") test "change/0 converts auto_linker opts for Pleroma.Formatter", %{migration: migration} do -- cgit v1.2.3