@@ -5,6 +5,7 @@ | |||
defmodule Pleroma.Integration.MastodonWebsocketTest do | |||
use Pleroma.DataCase | |||
import ExUnit.CaptureLog | |||
import Pleroma.Factory | |||
alias Pleroma.Integration.WebsocketClient | |||
@@ -39,13 +40,17 @@ defmodule Pleroma.Integration.MastodonWebsocketTest do | |||
end | |||
test "refuses invalid requests" do | |||
assert {:error, {400, _}} = start_socket() | |||
assert {:error, {404, _}} = start_socket("?stream=ncjdk") | |||
capture_log(fn -> | |||
assert {:error, {400, _}} = start_socket() | |||
assert {:error, {404, _}} = start_socket("?stream=ncjdk") | |||
end) | |||
end | |||
test "requires authentication and a valid token for protected streams" do | |||
assert {:error, {403, _}} = start_socket("?stream=user&access_token=aaaaaaaaaaaa") | |||
assert {:error, {403, _}} = start_socket("?stream=user") | |||
capture_log(fn -> | |||
assert {:error, {403, _}} = start_socket("?stream=user&access_token=aaaaaaaaaaaa") | |||
assert {:error, {403, _}} = start_socket("?stream=user") | |||
end) | |||
end | |||
test "allows public streams without authentication" do | |||
@@ -100,19 +105,27 @@ defmodule Pleroma.Integration.MastodonWebsocketTest do | |||
test "accepts the 'user' stream", %{token: token} = _state do | |||
assert {:ok, _} = start_socket("?stream=user&access_token=#{token.token}") | |||
assert {:error, {403, "Forbidden"}} = start_socket("?stream=user") | |||
assert capture_log(fn -> | |||
assert {:error, {403, "Forbidden"}} = start_socket("?stream=user") | |||
end) =~ ":badarg" | |||
end | |||
test "accepts the 'user:notification' stream", %{token: token} = _state do | |||
assert {:ok, _} = start_socket("?stream=user:notification&access_token=#{token.token}") | |||
assert {:error, {403, "Forbidden"}} = start_socket("?stream=user:notification") | |||
assert capture_log(fn -> | |||
assert {:error, {403, "Forbidden"}} = start_socket("?stream=user:notification") | |||
end) =~ ":badarg" | |||
end | |||
test "accepts valid token on Sec-WebSocket-Protocol header", %{token: token} do | |||
assert {:ok, _} = start_socket("?stream=user", [{"Sec-WebSocket-Protocol", token.token}]) | |||
assert {:error, {403, "Forbidden"}} = | |||
start_socket("?stream=user", [{"Sec-WebSocket-Protocol", "I am a friend"}]) | |||
assert capture_log(fn -> | |||
assert {:error, {403, "Forbidden"}} = | |||
start_socket("?stream=user", [{"Sec-WebSocket-Protocol", "I am a friend"}]) | |||
end) =~ ":badarg" | |||
end | |||
end | |||
end |
@@ -5,6 +5,7 @@ | |||
defmodule Pleroma.Web.ActivityPub.PublisherTest do | |||
use Pleroma.DataCase | |||
import ExUnit.CaptureLog | |||
import Pleroma.Factory | |||
import Tesla.Mock | |||
import Mock | |||
@@ -188,7 +189,10 @@ defmodule Pleroma.Web.ActivityPub.PublisherTest do | |||
actor = insert(:user) | |||
inbox = "http://connrefused.site/users/nick1/inbox" | |||
assert {:error, _} = Publisher.publish_one(%{inbox: inbox, json: "{}", actor: actor, id: 1}) | |||
assert capture_log(fn -> | |||
assert {:error, _} = | |||
Publisher.publish_one(%{inbox: inbox, json: "{}", actor: actor, id: 1}) | |||
end) =~ "connrefused" | |||
assert called(Instances.set_unreachable(inbox)) | |||
end | |||
@@ -212,14 +216,16 @@ defmodule Pleroma.Web.ActivityPub.PublisherTest do | |||
actor = insert(:user) | |||
inbox = "http://connrefused.site/users/nick1/inbox" | |||
assert {:error, _} = | |||
Publisher.publish_one(%{ | |||
inbox: inbox, | |||
json: "{}", | |||
actor: actor, | |||
id: 1, | |||
unreachable_since: NaiveDateTime.utc_now() | |||
}) | |||
assert capture_log(fn -> | |||
assert {:error, _} = | |||
Publisher.publish_one(%{ | |||
inbox: inbox, | |||
json: "{}", | |||
actor: actor, | |||
id: 1, | |||
unreachable_since: NaiveDateTime.utc_now() | |||
}) | |||
end) =~ "connrefused" | |||
refute called(Instances.set_unreachable(inbox)) | |||
end | |||
@@ -10,6 +10,7 @@ defmodule Pleroma.Web.ActivityPub.RelayTest do | |||
alias Pleroma.Web.ActivityPub.ActivityPub | |||
alias Pleroma.Web.ActivityPub.Relay | |||
import ExUnit.CaptureLog | |||
import Pleroma.Factory | |||
import Mock | |||
@@ -20,7 +21,9 @@ defmodule Pleroma.Web.ActivityPub.RelayTest do | |||
describe "follow/1" do | |||
test "returns errors when user not found" do | |||
assert Relay.follow("test-ap-id") == {:error, "Could not fetch by AP id"} | |||
assert capture_log(fn -> | |||
assert Relay.follow("test-ap-id") == {:error, "Could not fetch by AP id"} | |||
end) =~ "Could not fetch by AP id" | |||
end | |||
test "returns activity" do | |||
@@ -37,7 +40,9 @@ defmodule Pleroma.Web.ActivityPub.RelayTest do | |||
describe "unfollow/1" do | |||
test "returns errors when user not found" do | |||
assert Relay.unfollow("test-ap-id") == {:error, "Could not fetch by AP id"} | |||
assert capture_log(fn -> | |||
assert Relay.unfollow("test-ap-id") == {:error, "Could not fetch by AP id"} | |||
end) =~ "Could not fetch by AP id" | |||
end | |||
test "returns activity" do | |||
@@ -78,7 +83,9 @@ defmodule Pleroma.Web.ActivityPub.RelayTest do | |||
} | |||
) | |||
assert Relay.publish(activity) == {:error, nil} | |||
assert capture_log(fn -> | |||
assert Relay.publish(activity) == {:error, nil} | |||
end) =~ "[error] error: nil" | |||
end | |||
test_with_mock "returns announce activity and publish to federate", | |||
@@ -3963,13 +3963,15 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do | |||
Config.put([:suggestions, :enabled], true) | |||
Config.put([:suggestions, :third_party_engine], "http://test500?{{host}}&{{user}}") | |||
res = | |||
conn | |||
|> assign(:user, user) | |||
|> get("/api/v1/suggestions") | |||
|> json_response(500) | |||
assert res == "Something went wrong" | |||
assert capture_log(fn -> | |||
res = | |||
conn | |||
|> assign(:user, user) | |||
|> get("/api/v1/suggestions") | |||
|> json_response(500) | |||
assert res == "Something went wrong" | |||
end) =~ "Could not retrieve suggestions" | |||
end | |||
test "returns suggestions", %{conn: conn, user: user, other_user: other_user} do | |||
@@ -8,6 +8,7 @@ defmodule Pleroma.Web.TwitterAPI.UtilControllerTest do | |||
alias Pleroma.Repo | |||
alias Pleroma.User | |||
alias Pleroma.Web.CommonAPI | |||
import ExUnit.CaptureLog | |||
import Pleroma.Factory | |||
import Mock | |||
@@ -338,12 +339,14 @@ defmodule Pleroma.Web.TwitterAPI.UtilControllerTest do | |||
test "show follow page with error when user cannot fecth by `acct` link", %{conn: conn} do | |||
user = insert(:user) | |||
response = | |||
conn | |||
|> assign(:user, user) | |||
|> get("/ostatus_subscribe?acct=https://mastodon.social/users/not_found") | |||
assert capture_log(fn -> | |||
response = | |||
conn | |||
|> assign(:user, user) | |||
|> get("/ostatus_subscribe?acct=https://mastodon.social/users/not_found") | |||
assert html_response(response, 200) =~ "Error fetching user" | |||
assert html_response(response, 200) =~ "Error fetching user" | |||
end) =~ "Object has been deleted" | |||
end | |||
end | |||
@@ -5,6 +5,7 @@ | |||
defmodule Pleroma.Web.WebFinger.WebFingerControllerTest do | |||
use Pleroma.Web.ConnCase | |||
import ExUnit.CaptureLog | |||
import Pleroma.Factory | |||
import Tesla.Mock | |||
@@ -75,11 +76,13 @@ defmodule Pleroma.Web.WebFinger.WebFingerControllerTest do | |||
test "Sends a 404 when invalid format" do | |||
user = insert(:user) | |||
assert_raise Phoenix.NotAcceptableError, fn -> | |||
build_conn() | |||
|> put_req_header("accept", "text/html") | |||
|> get("/.well-known/webfinger?resource=acct:#{user.nickname}@localhost") | |||
end | |||
assert capture_log(fn -> | |||
assert_raise Phoenix.NotAcceptableError, fn -> | |||
build_conn() | |||
|> put_req_header("accept", "text/html") | |||
|> get("/.well-known/webfinger?resource=acct:#{user.nickname}@localhost") | |||
end | |||
end) =~ "no supported media type in accept header" | |||
end | |||
test "Sends a 400 when resource param is missing" do | |||