[#1560] Added tests for non-federating instance bahaviour to ActivityPubControllerTest.

This commit is contained in:
Ivan Tashkinov 2020-03-02 21:43:18 +03:00
parent 99a6c660a9
commit b4367125e9
4 changed files with 90 additions and 7 deletions

View file

@ -180,7 +180,7 @@ Post here request with grant_type=refresh_token to obtain new access token. Retu
## Account Registration ## Account Registration
`POST /api/v1/accounts` `POST /api/v1/accounts`
Has theses additionnal parameters (which are the same as in Pleroma-API): Has theses additional parameters (which are the same as in Pleroma-API):
* `fullname`: optional * `fullname`: optional
* `bio`: optional * `bio`: optional
* `captcha_solution`: optional, contains provider-specific captcha solution, * `captcha_solution`: optional, contains provider-specific captcha solution,

View file

@ -1,5 +1,5 @@
# Pleroma Clients # Pleroma Clients
Note: Additionnal clients may be working but theses are officially supporting Pleroma. Note: Additional clients may be working but theses are officially supporting Pleroma.
Feel free to contact us to be added to this list! Feel free to contact us to be added to this list!
## Desktop ## Desktop

View file

@ -38,7 +38,7 @@ test "with valid token(downcase), it assigns the user", %{conn: conn} = opts do
assert conn.assigns[:user] == opts[:user] assert conn.assigns[:user] == opts[:user]
end end
test "with valid token(downcase) in url parameters, it assings the user", opts do test "with valid token(downcase) in url parameters, it assigns the user", opts do
conn = conn =
:get :get
|> build_conn("/?access_token=#{opts[:token]}") |> build_conn("/?access_token=#{opts[:token]}")

View file

@ -25,9 +25,9 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubControllerTest do
:ok :ok
end end
clear_config_all([:instance, :federating], clear_config_all([:instance, :federating]) do
do: Pleroma.Config.put([:instance, :federating], true) Pleroma.Config.put([:instance, :federating], true)
) end
describe "/relay" do describe "/relay" do
clear_config([:instance, :allow_relay]) clear_config([:instance, :allow_relay])
@ -1008,7 +1008,7 @@ test "it tracks a signed activity fetch when the json is cached", %{conn: conn}
end end
end end
describe "Additionnal ActivityPub C2S endpoints" do describe "Additional ActivityPub C2S endpoints" do
test "/api/ap/whoami", %{conn: conn} do test "/api/ap/whoami", %{conn: conn} do
user = insert(:user) user = insert(:user)
@ -1047,4 +1047,87 @@ test "uploadMedia", %{conn: conn} do
assert object["actor"] == user.ap_id assert object["actor"] == user.ap_id
end end
end end
describe "when instance is not federating," do
clear_config([:instance, :federating]) do
Pleroma.Config.put([:instance, :federating], false)
end
test "returns 404 for GET routes", %{conn: conn} do
user = insert(:user)
conn = put_req_header(conn, "accept", "application/json")
get_uris = [
"/users/#{user.nickname}",
"/users/#{user.nickname}/outbox",
"/users/#{user.nickname}/inbox?page=true",
"/users/#{user.nickname}/followers",
"/users/#{user.nickname}/following",
"/internal/fetch",
"/relay",
"/relay/following",
"/relay/followers",
"/api/ap/whoami"
]
for get_uri <- get_uris do
conn
|> get(get_uri)
|> json_response(404)
conn
|> assign(:user, user)
|> get(get_uri)
|> json_response(404)
end
end
test "returns 404 for activity-related POST routes", %{conn: conn} do
user = insert(:user)
conn =
conn
|> assign(:valid_signature, true)
|> put_req_header("content-type", "application/activity+json")
post_activity_data =
"test/fixtures/mastodon-post-activity.json"
|> File.read!()
|> Poison.decode!()
post_activity_uris = [
"/inbox",
"/relay/inbox",
"/users/#{user.nickname}/inbox",
"/users/#{user.nickname}/outbox"
]
for post_activity_uri <- post_activity_uris do
conn
|> post(post_activity_uri, post_activity_data)
|> json_response(404)
conn
|> assign(:user, user)
|> post(post_activity_uri, post_activity_data)
|> json_response(404)
end
end
test "returns 404 for media upload attempt", %{conn: conn} do
user = insert(:user)
desc = "Description of the image"
image = %Plug.Upload{
content_type: "image/jpg",
path: Path.absname("test/fixtures/image.jpg"),
filename: "an_image.jpg"
}
conn
|> assign(:user, user)
|> post("/api/ap/upload_media", %{"file" => image, "description" => desc})
|> json_response(404)
end
end
end end