# Pleroma: A lightweight social networking server
-# Copyright © 2017-2018 Pleroma Authors <https://pleroma.social/>
+# Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/>
# SPDX-License-Identifier: AGPL-3.0-only
defmodule Pleroma.Web.ActivityPub.ActivityPubControllerTest do
end
end
- describe "/object/:uuid/likes" do
- setup do
- like = insert(:like_activity)
- like_object_ap_id = Object.normalize(like).data["id"]
-
- uuid =
- like_object_ap_id
- |> String.split("/")
- |> List.last()
-
- [id: like.data["id"], uuid: uuid]
- end
-
- test "it returns the like activities in a collection", %{conn: conn, id: id, uuid: uuid} do
- result =
- conn
- |> put_req_header("accept", "application/activity+json")
- |> get("/objects/#{uuid}/likes")
- |> json_response(200)
-
- assert List.first(result["first"]["orderedItems"])["id"] == id
- assert result["type"] == "OrderedCollection"
- assert result["totalItems"] == 1
- refute result["first"]["next"]
- end
-
- test "it does not crash when page number is exceeded total pages", %{conn: conn, uuid: uuid} do
- result =
- conn
- |> put_req_header("accept", "application/activity+json")
- |> get("/objects/#{uuid}/likes?page=2")
- |> json_response(200)
-
- assert result["type"] == "OrderedCollectionPage"
- assert result["totalItems"] == 1
- refute result["next"]
- assert Enum.empty?(result["orderedItems"])
- end
-
- test "it contains the next key when likes count is more than 10", %{conn: conn} do
- note = insert(:note_activity)
- insert_list(11, :like_activity, note_activity: note)
-
- uuid =
- note
- |> Object.normalize()
- |> Map.get(:data)
- |> Map.get("id")
- |> String.split("/")
- |> List.last()
-
- result =
- conn
- |> put_req_header("accept", "application/activity+json")
- |> get("/objects/#{uuid}/likes?page=1")
- |> json_response(200)
-
- assert result["totalItems"] == 11
- assert length(result["orderedItems"]) == 10
- assert result["next"]
- end
- end
-
describe "/activities/:uuid" do
test "it returns a json representation of the activity", %{conn: conn} do
activity = insert(:note_activity)
conn
|> assign(:user, user)
|> put_req_header("accept", "application/activity+json")
- |> get("/users/#{user.nickname}/inbox")
+ |> get("/users/#{user.nickname}/inbox?page=true")
assert response(conn, 200) =~ note_object.data["content"]
end
conn =
conn
|> put_req_header("accept", "application/activity+json")
- |> get("/users/#{user.nickname}/outbox")
+ |> get("/users/#{user.nickname}/outbox?page=true")
assert response(conn, 200) =~ note_object.data["content"]
end
conn =
conn
|> put_req_header("accept", "application/activity+json")
- |> get("/users/#{user.nickname}/outbox")
+ |> get("/users/#{user.nickname}/outbox?page=true")
assert response(conn, 200) =~ announce_activity.data["object"]
end
assert Delivery.get(object.id, other_user.id)
end
end
+
+ describe "Additionnal ActivityPub C2S endpoints" do
+ test "/api/ap/whoami", %{conn: conn} do
+ user = insert(:user)
+
+ conn =
+ conn
+ |> assign(:user, user)
+ |> get("/api/ap/whoami")
+
+ user = User.get_cached_by_id(user.id)
+
+ assert UserView.render("user.json", %{user: user}) == json_response(conn, 200)
+ end
+
+ clear_config([:media_proxy])
+ clear_config([Pleroma.Upload])
+
+ test "uploadMedia", %{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 =
+ conn
+ |> assign(:user, user)
+ |> post("/api/ap/upload_media", %{"file" => image, "description" => desc})
+
+ assert object = json_response(conn, :created)
+ assert object["name"] == desc
+ assert object["type"] == "Document"
+ assert object["actor"] == user.ap_id
+ end
+ end
end