X-Git-Url: http://git.squeep.com/?a=blobdiff_plain;f=test%2Fpleroma%2Fweb%2Fmastodon_api%2Fviews%2Fnotification_view_test.exs;h=803b1f438308355e4c6af57522a3d6bac0660a36;hb=0f132b802dde7f217ecb07767e0d34e3edb517b7;hp=8070c03c950032c64f2b833fd3d14cb638a47937;hpb=6eb7d69e60a96e577de92de232ed48e509f23cd4;p=akkoma 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 8070c03c9..803b1f438 100644 --- a/test/pleroma/web/mastodon_api/views/notification_view_test.exs +++ b/test/pleroma/web/mastodon_api/views/notification_view_test.exs @@ -6,12 +6,12 @@ defmodule Pleroma.Web.MastodonAPI.NotificationViewTest do use Pleroma.DataCase alias Pleroma.Activity - alias Pleroma.Chat - alias Pleroma.Chat.MessageReference alias Pleroma.Notification alias Pleroma.Object alias Pleroma.Repo alias Pleroma.User + alias Pleroma.Web.ActivityPub.Builder + alias Pleroma.Web.ActivityPub.Pipeline alias Pleroma.Web.AdminAPI.Report alias Pleroma.Web.AdminAPI.ReportView alias Pleroma.Web.CommonAPI @@ -19,7 +19,7 @@ defmodule Pleroma.Web.MastodonAPI.NotificationViewTest do alias Pleroma.Web.MastodonAPI.AccountView alias Pleroma.Web.MastodonAPI.NotificationView alias Pleroma.Web.MastodonAPI.StatusView - alias Pleroma.Web.PleromaAPI.Chat.MessageReferenceView + alias Pleroma.Web.MediaProxy import Pleroma.Factory defp test_notifications_rendering(notifications, user, expected_result) do @@ -37,30 +37,6 @@ defmodule Pleroma.Web.MastodonAPI.NotificationViewTest do assert expected_result == result end - test "ChatMessage notification" do - user = insert(:user) - recipient = insert(:user) - {:ok, activity} = CommonAPI.post_chat_message(user, recipient, "what's up my dude") - - {:ok, [notification]} = Notification.create_notifications(activity) - - object = Object.normalize(activity, fetch: false) - chat = Chat.get(recipient.id, user.ap_id) - - cm_ref = MessageReference.for_chat_and_object(chat, object) - - expected = %{ - id: to_string(notification.id), - pleroma: %{is_seen: false, is_muted: false}, - type: "pleroma:chat_mention", - account: AccountView.render("show.json", %{user: user, for: recipient}), - chat_message: MessageReferenceView.render("show.json", %{chat_message_reference: cm_ref}), - created_at: Utils.to_masto_date(notification.inserted_at) - } - - test_notifications_rendering([notification], recipient, [expected]) - end - test "Mention notification" do user = insert(:user) mentioned_user = insert(:user) @@ -188,6 +164,7 @@ defmodule Pleroma.Web.MastodonAPI.NotificationViewTest do pleroma: %{is_seen: false, is_muted: false}, type: "pleroma:emoji_reaction", emoji: "☕", + emoji_url: nil, account: AccountView.render("show.json", %{user: other_user, for: user}), status: StatusView.render("show.json", %{activity: activity, for: user}), created_at: Utils.to_masto_date(notification.inserted_at) @@ -196,6 +173,77 @@ defmodule Pleroma.Web.MastodonAPI.NotificationViewTest do test_notifications_rendering([notification], user, [expected]) end + test "EmojiReact notification with custom emoji" do + user = insert(:user) + other_user = insert(:user) + + {:ok, activity} = CommonAPI.post(user, %{status: "#morb"}) + {:ok, _activity} = CommonAPI.react_with_emoji(activity.id, other_user, ":100a:") + + activity = Repo.get(Activity, activity.id) + + [notification] = Notification.for_user(user) + + assert notification + + expected = %{ + id: to_string(notification.id), + pleroma: %{is_seen: false, is_muted: false}, + type: "pleroma:emoji_reaction", + emoji: ":100a:", + emoji_url: "http://localhost:4001/emoji/100a.png", + account: AccountView.render("show.json", %{user: other_user, for: user}), + status: StatusView.render("show.json", %{activity: activity, for: user}), + created_at: Utils.to_masto_date(notification.inserted_at) + } + + test_notifications_rendering([notification], user, [expected]) + end + + test "EmojiReact notification with remote custom emoji" do + proxyBaseUrl = "https://cache.pleroma.social" + clear_config([:media_proxy, :base_url], proxyBaseUrl) + + for testProxy <- [true, false] do + clear_config([:media_proxy, :enabled], testProxy) + + user = insert(:user) + other_user = insert(:user, local: false) + + {:ok, activity} = CommonAPI.post(user, %{status: "#morb"}) + + {:ok, emoji_react, _} = + Builder.emoji_react(other_user, Object.normalize(activity, fetch: false), ":100a:") + + remoteUrl = "http://evil.website/emoji/100a.png" + [tag] = emoji_react["tag"] + tag = put_in(tag["id"], remoteUrl) + tag = put_in(tag["icon"]["url"], remoteUrl) + emoji_react = put_in(emoji_react["tag"], [tag]) + + {:ok, _activity, _} = Pipeline.common_pipeline(emoji_react, local: false) + + activity = Repo.get(Activity, activity.id) + + [notification] = Notification.for_user(user) + + assert notification + + expected = %{ + id: to_string(notification.id), + pleroma: %{is_seen: false, is_muted: false}, + type: "pleroma:emoji_reaction", + emoji: ":100a:", + emoji_url: if(testProxy, do: MediaProxy.encode_url(remoteUrl), else: remoteUrl), + account: AccountView.render("show.json", %{user: other_user, for: user}), + status: StatusView.render("show.json", %{activity: activity, for: user}), + created_at: Utils.to_masto_date(notification.inserted_at) + } + + test_notifications_rendering([notification], user, [expected]) + end + end + test "Poll notification" do user = insert(:user) activity = insert(:question_activity, user: user)