summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIvan Tashkinov <ivantashkinov@gmail.com>2020-03-02 21:43:18 +0300
committerIvan Tashkinov <ivantashkinov@gmail.com>2020-03-02 21:43:18 +0300
commitb4367125e9afc92ac27ff12552775f8e765140f1 (patch)
treee0c35f2e1d869ca63ddec06dd7a5ff9b0d574df3
parent99a6c660a909d8c74289015b3f69357196256112 (diff)
downloadpleroma-b4367125e9afc92ac27ff12552775f8e765140f1.tar.gz
pleroma-b4367125e9afc92ac27ff12552775f8e765140f1.zip
[#1560] Added tests for non-federating instance bahaviour to ActivityPubControllerTest.
-rw-r--r--docs/API/differences_in_mastoapi_responses.md2
-rw-r--r--docs/clients.md2
-rw-r--r--test/plugs/oauth_plug_test.exs2
-rw-r--r--test/web/activity_pub/activity_pub_controller_test.exs91
4 files changed, 90 insertions, 7 deletions
diff --git a/docs/API/differences_in_mastoapi_responses.md b/docs/API/differences_in_mastoapi_responses.md
index 06de90f71..476a4a2bf 100644
--- a/docs/API/differences_in_mastoapi_responses.md
+++ b/docs/API/differences_in_mastoapi_responses.md
@@ -180,7 +180,7 @@ Post here request with grant_type=refresh_token to obtain new access token. Retu
## Account Registration
`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
* `bio`: optional
* `captcha_solution`: optional, contains provider-specific captcha solution,
diff --git a/docs/clients.md b/docs/clients.md
index 8ac9ad3de..1eae0f0c6 100644
--- a/docs/clients.md
+++ b/docs/clients.md
@@ -1,5 +1,5 @@
# 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!
## Desktop
diff --git a/test/plugs/oauth_plug_test.exs b/test/plugs/oauth_plug_test.exs
index dea11cdb0..0eef27c1f 100644
--- a/test/plugs/oauth_plug_test.exs
+++ b/test/plugs/oauth_plug_test.exs
@@ -38,7 +38,7 @@ defmodule Pleroma.Plugs.OAuthPlugTest do
assert conn.assigns[:user] == opts[:user]
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 =
:get
|> build_conn("/?access_token=#{opts[:token]}")
diff --git a/test/web/activity_pub/activity_pub_controller_test.exs b/test/web/activity_pub/activity_pub_controller_test.exs
index ba2ce1dd9..af0417406 100644
--- a/test/web/activity_pub/activity_pub_controller_test.exs
+++ b/test/web/activity_pub/activity_pub_controller_test.exs
@@ -25,9 +25,9 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubControllerTest do
:ok
end
- clear_config_all([:instance, :federating],
- do: Pleroma.Config.put([:instance, :federating], true)
- )
+ clear_config_all([:instance, :federating]) do
+ Pleroma.Config.put([:instance, :federating], true)
+ end
describe "/relay" do
clear_config([:instance, :allow_relay])
@@ -1008,7 +1008,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubControllerTest do
end
end
- describe "Additionnal ActivityPub C2S endpoints" do
+ describe "Additional ActivityPub C2S endpoints" do
test "/api/ap/whoami", %{conn: conn} do
user = insert(:user)
@@ -1047,4 +1047,87 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubControllerTest do
assert object["actor"] == user.ap_id
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