aboutsummaryrefslogtreecommitdiff
path: root/test/pleroma
diff options
context:
space:
mode:
authorTusooa Zhu <tusooa@kazv.moe>2022-08-19 13:19:38 -0400
committerTusooa Zhu <tusooa@kazv.moe>2022-08-19 20:22:45 -0400
commitc62a4f1c173490ad64fdfbab0c005ca3523b6013 (patch)
tree1b2521680e0c9d9f27880dc634e6c2763963e4b1 /test/pleroma
parentb22843a98247cf683764759f3e447845f3fcedf8 (diff)
downloadpleroma-c62a4f1c173490ad64fdfbab0c005ca3523b6013.tar.gz
Disconnect streaming sessions when token is revoked
Diffstat (limited to 'test/pleroma')
-rw-r--r--test/pleroma/web/streamer_test.exs54
1 files changed, 54 insertions, 0 deletions
diff --git a/test/pleroma/web/streamer_test.exs b/test/pleroma/web/streamer_test.exs
index b788a9138..5426467e5 100644
--- a/test/pleroma/web/streamer_test.exs
+++ b/test/pleroma/web/streamer_test.exs
@@ -813,4 +813,58 @@ defmodule Pleroma.Web.StreamerTest do
assert last_status["id"] == to_string(create_activity.id)
end
end
+
+ describe "stop streaming if token got revoked" do
+ test "do not revoke other tokens" do
+ %{user: user, token: token} = oauth_access(["read"])
+ %{token: token2} = oauth_access(["read"], user: user)
+ %{user: user2, token: user2_token} = oauth_access(["read"])
+
+ post_user = insert(:user)
+ CommonAPI.follow(user, post_user)
+ CommonAPI.follow(user2, post_user)
+
+ Streamer.get_topic_and_add_socket("user", user, token)
+ Streamer.get_topic_and_add_socket("user", user, token2)
+ Streamer.get_topic_and_add_socket("user", user2, user2_token)
+
+ {:ok, _} =
+ CommonAPI.post(post_user, %{
+ status: "hi"
+ })
+
+ assert_receive {:render_with_user, _, "update.json", _}
+ assert_receive {:render_with_user, _, "update.json", _}
+ assert_receive {:render_with_user, _, "update.json", _}
+
+ Pleroma.Web.OAuth.Token.Strategy.Revoke.revoke(token)
+
+ assert_receive :close
+ refute_receive :close
+ end
+
+ test "revoke all streams for this token" do
+ %{user: user, token: token} = oauth_access(["read"])
+
+ post_user = insert(:user)
+ CommonAPI.follow(user, post_user)
+
+ Streamer.get_topic_and_add_socket("user", user, token)
+ Streamer.get_topic_and_add_socket("user", user, token)
+
+ {:ok, _} =
+ CommonAPI.post(post_user, %{
+ status: "hi"
+ })
+
+ assert_receive {:render_with_user, _, "update.json", _}
+ assert_receive {:render_with_user, _, "update.json", _}
+
+ Pleroma.Web.OAuth.Token.Strategy.Revoke.revoke(token)
+
+ assert_receive :close
+ assert_receive :close
+ refute_receive :close
+ end
+ end
end