diff options
author | rinpatch <rinpatch@sdf.org> | 2020-11-12 12:34:48 +0000 |
---|---|---|
committer | rinpatch <rinpatch@sdf.org> | 2020-11-12 12:34:48 +0000 |
commit | 1172844ed18d94d84724dc6f11c6e9f72e0ba6ec (patch) | |
tree | 7d48a259e08856ab6db0eba255f20c0c19410463 /test/integration/mastodon_websocket_test.exs | |
parent | a0f5e8b27edbe2224d9c2c3997ad5b8ea484244b (diff) | |
parent | b4c6b262d6dc12362f0014a864e8aed6c727c39c (diff) | |
download | pleroma-2.2.0.tar.gz |
Merge branch 'release/2.2.0' into 'stable'v2.2.0
Release/2.2.0
See merge request pleroma/secteam/pleroma!19
Diffstat (limited to 'test/integration/mastodon_websocket_test.exs')
-rw-r--r-- | test/integration/mastodon_websocket_test.exs | 128 |
1 files changed, 0 insertions, 128 deletions
diff --git a/test/integration/mastodon_websocket_test.exs b/test/integration/mastodon_websocket_test.exs deleted file mode 100644 index 76fbc8bda..000000000 --- a/test/integration/mastodon_websocket_test.exs +++ /dev/null @@ -1,128 +0,0 @@ -# Pleroma: A lightweight social networking server -# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/> -# SPDX-License-Identifier: AGPL-3.0-only - -defmodule Pleroma.Integration.MastodonWebsocketTest do - use Pleroma.DataCase - - import ExUnit.CaptureLog - import Pleroma.Factory - - alias Pleroma.Integration.WebsocketClient - alias Pleroma.Web.CommonAPI - alias Pleroma.Web.OAuth - - @moduletag needs_streamer: true, capture_log: true - - @path Pleroma.Web.Endpoint.url() - |> URI.parse() - |> Map.put(:scheme, "ws") - |> Map.put(:path, "/api/v1/streaming") - |> URI.to_string() - - def start_socket(qs \\ nil, headers \\ []) do - path = - case qs do - nil -> @path - qs -> @path <> qs - end - - WebsocketClient.start_link(self(), path, headers) - end - - test "refuses invalid requests" do - capture_log(fn -> - assert {:error, {404, _}} = start_socket() - assert {:error, {404, _}} = start_socket("?stream=ncjdk") - Process.sleep(30) - end) - end - - test "requires authentication and a valid token for protected streams" do - capture_log(fn -> - assert {:error, {401, _}} = start_socket("?stream=user&access_token=aaaaaaaaaaaa") - assert {:error, {401, _}} = start_socket("?stream=user") - Process.sleep(30) - end) - end - - test "allows public streams without authentication" do - assert {:ok, _} = start_socket("?stream=public") - assert {:ok, _} = start_socket("?stream=public:local") - assert {:ok, _} = start_socket("?stream=hashtag&tag=lain") - end - - test "receives well formatted events" do - user = insert(:user) - {:ok, _} = start_socket("?stream=public") - {:ok, activity} = CommonAPI.post(user, %{status: "nice echo chamber"}) - - assert_receive {:text, raw_json}, 1_000 - assert {:ok, json} = Jason.decode(raw_json) - - assert "update" == json["event"] - assert json["payload"] - assert {:ok, json} = Jason.decode(json["payload"]) - - view_json = - Pleroma.Web.MastodonAPI.StatusView.render("show.json", activity: activity, for: nil) - |> Jason.encode!() - |> Jason.decode!() - - assert json == view_json - end - - describe "with a valid user token" do - setup do - {:ok, app} = - Pleroma.Repo.insert( - OAuth.App.register_changeset(%OAuth.App{}, %{ - client_name: "client", - scopes: ["scope"], - redirect_uris: "url" - }) - ) - - user = insert(:user) - - {:ok, auth} = OAuth.Authorization.create_authorization(app, user) - - {:ok, token} = OAuth.Token.exchange_token(app, auth) - - %{user: user, token: token} - end - - test "accepts valid tokens", state do - assert {:ok, _} = start_socket("?stream=user&access_token=#{state.token.token}") - end - - test "accepts the 'user' stream", %{token: token} = _state do - assert {:ok, _} = start_socket("?stream=user&access_token=#{token.token}") - - capture_log(fn -> - assert {:error, {401, _}} = start_socket("?stream=user") - Process.sleep(30) - end) - end - - test "accepts the 'user:notification' stream", %{token: token} = _state do - assert {:ok, _} = start_socket("?stream=user:notification&access_token=#{token.token}") - - capture_log(fn -> - assert {:error, {401, _}} = start_socket("?stream=user:notification") - Process.sleep(30) - end) - end - - test "accepts valid token on Sec-WebSocket-Protocol header", %{token: token} do - assert {:ok, _} = start_socket("?stream=user", [{"Sec-WebSocket-Protocol", token.token}]) - - capture_log(fn -> - assert {:error, {401, _}} = - start_socket("?stream=user", [{"Sec-WebSocket-Protocol", "I am a friend"}]) - - Process.sleep(30) - end) - end - end -end |