forked from AkkomaGang/akkoma
Add federating plug & public tests
This commit is contained in:
parent
6fe23c5458
commit
013f7ba8c1
4 changed files with 116 additions and 0 deletions
|
@ -527,6 +527,7 @@ def only_if_public_instance(conn, _) do
|
||||||
else
|
else
|
||||||
conn
|
conn
|
||||||
|> forbidden_json_reply("Invalid credentials.")
|
|> forbidden_json_reply("Invalid credentials.")
|
||||||
|
|> halt()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -14,4 +14,36 @@ test "nodeinfo shows staff accounts", %{conn: conn} do
|
||||||
|
|
||||||
assert user.ap_id in result["metadata"]["staffAccounts"]
|
assert user.ap_id in result["metadata"]["staffAccounts"]
|
||||||
end
|
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
|
end
|
||||||
|
|
33
test/web/plugs/federating_plug_test.exs
Normal file
33
test/web/plugs/federating_plug_test.exs
Normal 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
|
|
@ -100,6 +100,56 @@ test "returns statuses", %{conn: conn} do
|
||||||
|
|
||||||
assert length(response) == 10
|
assert length(response) == 10
|
||||||
end
|
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
|
end
|
||||||
|
|
||||||
describe "GET /statuses/show/:id.json" do
|
describe "GET /statuses/show/:id.json" do
|
||||||
|
|
Loading…
Reference in a new issue