diff options
| author | tusooa <tusooa@kazv.moe> | 2023-04-01 01:25:13 -0400 | 
|---|---|---|
| committer | tusooa <tusooa@kazv.moe> | 2023-10-15 17:20:23 -0400 | 
| commit | 7d005e8c93b22dc3d7be1a66dd2d404b7f54306a (patch) | |
| tree | 87708d6fce66c0d8a115bf431d030ac1fd8c1c16 /test | |
| parent | 21395aa5090f2a53bdbe0ef5fac46693d16025ed (diff) | |
| download | pleroma-7d005e8c93b22dc3d7be1a66dd2d404b7f54306a.tar.gz pleroma-7d005e8c93b22dc3d7be1a66dd2d404b7f54306a.zip  | |
Return stream attribute in server-sent events
Diffstat (limited to 'test')
| -rw-r--r-- | test/pleroma/integration/mastodon_websocket_test.exs | 33 | ||||
| -rw-r--r-- | test/pleroma/web/streamer_test.exs | 58 | 
2 files changed, 62 insertions, 29 deletions
diff --git a/test/pleroma/integration/mastodon_websocket_test.exs b/test/pleroma/integration/mastodon_websocket_test.exs index 827c7b5b0..d2e98df3b 100644 --- a/test/pleroma/integration/mastodon_websocket_test.exs +++ b/test/pleroma/integration/mastodon_websocket_test.exs @@ -116,6 +116,39 @@ defmodule Pleroma.Integration.MastodonWebsocketTest do        assert json == view_json      end +    test "can subscribe to multiple streams" do +      user = insert(:user) +      {:ok, pid} = start_socket() +      WebsocketClient.send_text(pid, %{type: "subscribe", stream: "public"} |> Jason.encode!()) +      assert_receive {:text, raw_json}, 1_000 + +      assert {:ok, +              %{ +                "event" => "pleroma.respond", +                "payload" => %{"type" => "subscribe", "result" => "success"} +              }} = decode_json(raw_json) + +      WebsocketClient.send_text(pid, %{type: "subscribe", stream: "hashtag", tag: "mew"} |> Jason.encode!()) +      assert_receive {:text, raw_json}, 1_000 + +      assert {:ok, +              %{ +                "event" => "pleroma.respond", +                "payload" => %{"type" => "subscribe", "result" => "success"} +              }} = decode_json(raw_json) + +      {:ok, _activity} = CommonAPI.post(user, %{status: "nice echo chamber #mew"}) + +      assert_receive {:text, raw_json}, 1_000 +      assert {:ok, %{"stream" => stream1}} = Jason.decode(raw_json) +      assert_receive {:text, raw_json}, 1_000 +      assert {:ok, %{"stream" => stream2}} = Jason.decode(raw_json) + +      streams = [stream1, stream2] +      assert ["hashtag", "mew"] in streams +      assert ["public"] in streams +    end +      test "won't double subscribe" do        user = insert(:user)        {:ok, pid} = start_socket() diff --git a/test/pleroma/web/streamer_test.exs b/test/pleroma/web/streamer_test.exs index da97b87d8..cc57a2989 100644 --- a/test/pleroma/web/streamer_test.exs +++ b/test/pleroma/web/streamer_test.exs @@ -246,7 +246,7 @@ defmodule Pleroma.Web.StreamerTest do        Streamer.get_topic_and_add_socket("user", user, oauth_token)        {:ok, activity} = CommonAPI.post(user, %{status: "hey"}) -      assert_receive {:render_with_user, _, _, ^activity} +      assert_receive {:render_with_user, _, _, ^activity, _}        refute Streamer.filtered_by_user?(user, activity)      end @@ -257,7 +257,7 @@ defmodule Pleroma.Web.StreamerTest do        {:ok, activity} = CommonAPI.post(other_user, %{status: "hey"})        {:ok, announce} = CommonAPI.repeat(activity.id, user) -      assert_receive {:render_with_user, Pleroma.Web.StreamerView, "update.json", ^announce} +      assert_receive {:render_with_user, Pleroma.Web.StreamerView, "update.json", ^announce, _}        refute Streamer.filtered_by_user?(user, announce)      end @@ -310,7 +310,7 @@ defmodule Pleroma.Web.StreamerTest do        {:ok, %Pleroma.Activity{data: _data, local: false} = announce} =          Pleroma.Web.ActivityPub.Transmogrifier.handle_incoming(data) -      assert_receive {:render_with_user, Pleroma.Web.StreamerView, "update.json", ^announce} +      assert_receive {:render_with_user, Pleroma.Web.StreamerView, "update.json", ^announce, _}        refute Streamer.filtered_by_user?(user, announce)      end @@ -322,7 +322,7 @@ defmodule Pleroma.Web.StreamerTest do        Streamer.get_topic_and_add_socket("user", user, oauth_token)        Streamer.stream("user", notify) -      assert_receive {:render_with_user, _, _, ^notify} +      assert_receive {:render_with_user, _, _, ^notify, _}        refute Streamer.filtered_by_user?(user, notify)      end @@ -334,7 +334,7 @@ defmodule Pleroma.Web.StreamerTest do        Streamer.get_topic_and_add_socket("user:notification", user, oauth_token)        Streamer.stream("user:notification", notify) -      assert_receive {:render_with_user, _, _, ^notify} +      assert_receive {:render_with_user, _, _, ^notify, _}        refute Streamer.filtered_by_user?(user, notify)      end @@ -355,7 +355,7 @@ defmodule Pleroma.Web.StreamerTest do        Streamer.get_topic_and_add_socket("user:pleroma_chat", user, oauth_token)        Streamer.stream("user:pleroma_chat", {user, cm_ref}) -      text = StreamerView.render("chat_update.json", %{chat_message_reference: cm_ref}) +      text = StreamerView.render("chat_update.json", %{chat_message_reference: cm_ref}, "user:pleroma_chat:#{user.id}")        assert text =~ "hey cirno"        assert_receive {:text, ^text} @@ -373,7 +373,7 @@ defmodule Pleroma.Web.StreamerTest do        Streamer.get_topic_and_add_socket("user", user, oauth_token)        Streamer.stream("user", {user, cm_ref}) -      text = StreamerView.render("chat_update.json", %{chat_message_reference: cm_ref}) +      text = StreamerView.render("chat_update.json", %{chat_message_reference: cm_ref}, "user:#{user.id}")        assert text =~ "hey cirno"        assert_receive {:text, ^text} @@ -394,7 +394,7 @@ defmodule Pleroma.Web.StreamerTest do        Streamer.get_topic_and_add_socket("user:notification", user, oauth_token)        Streamer.stream("user:notification", notify) -      assert_receive {:render_with_user, _, _, ^notify} +      assert_receive {:render_with_user, _, _, ^notify, _}        refute Streamer.filtered_by_user?(user, notify)      end @@ -440,7 +440,7 @@ defmodule Pleroma.Web.StreamerTest do        Streamer.get_topic_and_add_socket("user:notification", user, oauth_token)        {:ok, favorite_activity} = CommonAPI.favorite(user2, activity.id) -      assert_receive {:render_with_user, _, "notification.json", notif} +      assert_receive {:render_with_user, _, "notification.json", notif, _}        assert notif.activity.id == favorite_activity.id        refute Streamer.filtered_by_user?(user, notif)      end @@ -469,7 +469,7 @@ defmodule Pleroma.Web.StreamerTest do        Streamer.get_topic_and_add_socket("user:notification", user, oauth_token)        {:ok, _follower, _followed, follow_activity} = CommonAPI.follow(user2, user) -      assert_receive {:render_with_user, _, "notification.json", notif} +      assert_receive {:render_with_user, _, "notification.json", notif, _}        assert notif.activity.id == follow_activity.id        refute Streamer.filtered_by_user?(user, notif)      end @@ -534,7 +534,7 @@ defmodule Pleroma.Web.StreamerTest do        {:ok, edited} = CommonAPI.update(sender, activity, %{status: "mew mew"})        create = Pleroma.Activity.get_create_by_object_ap_id_with_object(activity.object.data["id"]) -      assert_receive {:render_with_user, _, "status_update.json", ^create} +      assert_receive {:render_with_user, _, "status_update.json", ^create, _}        refute Streamer.filtered_by_user?(user, edited)      end @@ -545,7 +545,7 @@ defmodule Pleroma.Web.StreamerTest do        {:ok, edited} = CommonAPI.update(user, activity, %{status: "mew mew"})        create = Pleroma.Activity.get_create_by_object_ap_id_with_object(activity.object.data["id"]) -      assert_receive {:render_with_user, _, "status_update.json", ^create} +      assert_receive {:render_with_user, _, "status_update.json", ^create, _}        refute Streamer.filtered_by_user?(user, edited)      end    end @@ -558,7 +558,7 @@ defmodule Pleroma.Web.StreamerTest do        Streamer.get_topic_and_add_socket("public", user, oauth_token)        {:ok, activity} = CommonAPI.post(other_user, %{status: "Test"}) -      assert_receive {:render_with_user, _, _, ^activity} +      assert_receive {:render_with_user, _, _, ^activity, _}        refute Streamer.filtered_by_user?(other_user, activity)      end @@ -658,7 +658,7 @@ defmodule Pleroma.Web.StreamerTest do        Streamer.get_topic_and_add_socket("public", user, oauth_token)        Streamer.stream("public", activity) -      assert_receive {:render_with_user, _, _, ^activity} +      assert_receive {:render_with_user, _, _, ^activity, _}        assert Streamer.filtered_by_user?(user, activity)      end @@ -680,7 +680,7 @@ defmodule Pleroma.Web.StreamerTest do        Streamer.get_topic_and_add_socket("public", user, oauth_token)        Streamer.stream("public", activity) -      assert_receive {:render_with_user, _, _, ^activity} +      assert_receive {:render_with_user, _, _, ^activity, _}        refute Streamer.filtered_by_user?(user, activity)      end @@ -703,7 +703,7 @@ defmodule Pleroma.Web.StreamerTest do        Streamer.get_topic_and_add_socket("public", user, oauth_token)        Streamer.stream("public", activity) -      assert_receive {:render_with_user, _, _, ^activity} +      assert_receive {:render_with_user, _, _, ^activity, _}        refute Streamer.filtered_by_user?(user, activity)      end    end @@ -717,7 +717,7 @@ defmodule Pleroma.Web.StreamerTest do        Streamer.get_topic_and_add_socket("public", user, oauth_token)        {:ok, activity} = CommonAPI.post(blocked_user, %{status: "Test"}) -      assert_receive {:render_with_user, _, _, ^activity} +      assert_receive {:render_with_user, _, _, ^activity, _}        assert Streamer.filtered_by_user?(user, activity)      end @@ -734,17 +734,17 @@ defmodule Pleroma.Web.StreamerTest do        {:ok, activity_one} = CommonAPI.post(friend, %{status: "hey! @#{blockee.nickname}"}) -      assert_receive {:render_with_user, _, _, ^activity_one} +      assert_receive {:render_with_user, _, _, ^activity_one, _}        assert Streamer.filtered_by_user?(blocker, activity_one)        {:ok, activity_two} = CommonAPI.post(blockee, %{status: "hey! @#{friend.nickname}"}) -      assert_receive {:render_with_user, _, _, ^activity_two} +      assert_receive {:render_with_user, _, _, ^activity_two, _}        assert Streamer.filtered_by_user?(blocker, activity_two)        {:ok, activity_three} = CommonAPI.post(blockee, %{status: "hey! @#{blocker.nickname}"}) -      assert_receive {:render_with_user, _, _, ^activity_three} +      assert_receive {:render_with_user, _, _, ^activity_three, _}        assert Streamer.filtered_by_user?(blocker, activity_three)      end    end @@ -805,7 +805,7 @@ defmodule Pleroma.Web.StreamerTest do            visibility: "private"          }) -      assert_receive {:render_with_user, _, _, ^activity} +      assert_receive {:render_with_user, _, _, ^activity, _}        refute Streamer.filtered_by_user?(user_a, activity)      end    end @@ -823,7 +823,7 @@ defmodule Pleroma.Web.StreamerTest do        Streamer.get_topic_and_add_socket("user", user1, user1_token)        {:ok, announce_activity} = CommonAPI.repeat(create_activity.id, user2) -      assert_receive {:render_with_user, _, _, ^announce_activity} +      assert_receive {:render_with_user, _, _, ^announce_activity, _}        assert Streamer.filtered_by_user?(user1, announce_activity)      end @@ -839,7 +839,7 @@ defmodule Pleroma.Web.StreamerTest do        Streamer.get_topic_and_add_socket("user", user1, user1_token)        {:ok, _announce_activity} = CommonAPI.repeat(create_activity.id, user2) -      assert_receive {:render_with_user, _, "notification.json", notif} +      assert_receive {:render_with_user, _, "notification.json", notif, _}        assert Streamer.filtered_by_user?(user1, notif)      end @@ -855,7 +855,7 @@ defmodule Pleroma.Web.StreamerTest do        Streamer.get_topic_and_add_socket("user", user1, user1_token)        {:ok, _favorite_activity} = CommonAPI.favorite(user2, create_activity.id) -      assert_receive {:render_with_user, _, "notification.json", notif} +      assert_receive {:render_with_user, _, "notification.json", notif, _}        refute Streamer.filtered_by_user?(user1, notif)      end    end @@ -870,7 +870,7 @@ defmodule Pleroma.Web.StreamerTest do        {:ok, activity} = CommonAPI.post(user, %{status: "super hot take"})        {:ok, _} = CommonAPI.add_mute(user2, activity) -      assert_receive {:render_with_user, _, _, ^activity} +      assert_receive {:render_with_user, _, _, ^activity, _}        assert Streamer.filtered_by_user?(user2, activity)      end    end @@ -912,7 +912,7 @@ defmodule Pleroma.Web.StreamerTest do          })        create_activity_id = create_activity.id -      assert_receive {:render_with_user, _, _, ^create_activity} +      assert_receive {:render_with_user, _, _, ^create_activity, _}        assert_receive {:text, received_conversation1}        assert %{"event" => "conversation", "payload" => _} = Jason.decode!(received_conversation1) @@ -947,8 +947,8 @@ defmodule Pleroma.Web.StreamerTest do            visibility: "direct"          }) -      assert_receive {:render_with_user, _, _, ^create_activity} -      assert_receive {:render_with_user, _, _, ^create_activity2} +      assert_receive {:render_with_user, _, _, ^create_activity, _} +      assert_receive {:render_with_user, _, _, ^create_activity2, _}        assert_receive {:text, received_conversation1}        assert %{"event" => "conversation", "payload" => _} = Jason.decode!(received_conversation1)        assert_receive {:text, received_conversation1} @@ -977,7 +977,7 @@ defmodule Pleroma.Web.StreamerTest do            receive do              {StreamerTest, :ready} -> -              assert_receive {:render_with_user, _, "update.json", _} +              assert_receive {:render_with_user, _, "update.json", _, _}                receive do                  {StreamerTest, :revoked} -> finalize.()  | 
