Add federating plug & public tests

This commit is contained in:
href 2018-11-06 14:44:00 +01:00
parent 6fe23c5458
commit 013f7ba8c1
No known key found for this signature in database
GPG key ID: EE8296C1A152C325
4 changed files with 116 additions and 0 deletions

View file

@ -527,6 +527,7 @@ def only_if_public_instance(conn, _) do
else
conn
|> forbidden_json_reply("Invalid credentials.")
|> halt()
end
end

View file

@ -14,4 +14,36 @@ test "nodeinfo shows staff accounts", %{conn: conn} do
assert user.ap_id in result["metadata"]["staffAccounts"]
end
test "returns 404 when federation is disabled" do
instance =
Application.get_env(:pleroma, :instance)
|> Keyword.put(:federating, false)
Application.put_env(:pleroma, :instance, instance)
conn
|> get("/.well-known/nodeinfo")
|> json_response(404)
conn
|> get("/nodeinfo/2.0.json")
|> json_response(404)
instance =
Application.get_env(:pleroma, :instance)
|> Keyword.put(:federating, true)
Application.put_env(:pleroma, :instance, instance)
end
test "returns 200 when federation is enabled" do
conn
|> get("/.well-known/nodeinfo")
|> json_response(200)
conn
|> get("/nodeinfo/2.0.json")
|> json_response(200)
end
end

View file

@ -0,0 +1,33 @@
defmodule Pleroma.Web.FederatingPlugTest do
use Pleroma.Web.ConnCase
test "returns and halt the conn when federating is disabled" do
instance =
Application.get_env(:pleroma, :instance)
|> Keyword.put(:federating, false)
Application.put_env(:pleroma, :instance, instance)
conn =
build_conn()
|> Pleroma.Web.FederatingPlug.call(%{})
assert conn.status == 404
assert conn.halted
instance =
Application.get_env(:pleroma, :instance)
|> Keyword.put(:federating, true)
Application.put_env(:pleroma, :instance, instance)
end
test "does nothing when federating is enabled" do
conn =
build_conn()
|> Pleroma.Web.FederatingPlug.call(%{})
refute conn.status
refute conn.halted
end
end

View file

@ -100,6 +100,56 @@ test "returns statuses", %{conn: conn} do
assert length(response) == 10
end
test "returns 403 to unauthenticated request when the instance is not public" do
instance =
Application.get_env(:pleroma, :instance)
|> Keyword.put(:public, false)
Application.put_env(:pleroma, :instance, instance)
conn
|> get("/api/statuses/public_timeline.json")
|> json_response(403)
instance =
Application.get_env(:pleroma, :instance)
|> Keyword.put(:public, true)
Application.put_env(:pleroma, :instance, instance)
end
test "returns 200 to unauthenticated request when the instance is public" do
conn
|> get("/api/statuses/public_timeline.json")
|> json_response(200)
end
end
describe "GET /statuses/public_and_external_timeline.json" do
test "returns 403 to unauthenticated request when the instance is not public" do
instance =
Application.get_env(:pleroma, :instance)
|> Keyword.put(:public, false)
Application.put_env(:pleroma, :instance, instance)
conn
|> get("/api/statuses/public_and_external_timeline.json")
|> json_response(403)
instance =
Application.get_env(:pleroma, :instance)
|> Keyword.put(:public, true)
Application.put_env(:pleroma, :instance, instance)
end
test "returns 200 to unauthenticated request when the instance is public" do
conn
|> get("/api/statuses/public_and_external_timeline.json")
|> json_response(200)
end
end
describe "GET /statuses/show/:id.json" do