Disconnect streaming sessions when token is revoked

This commit is contained in:
Tusooa Zhu 2022-08-19 13:19:38 -04:00
commit c62a4f1c17
No known key found for this signature in database
GPG key ID: 7B467EDE43A08224
4 changed files with 81 additions and 6 deletions

View file

@ -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