aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlambda <pleromagit@rogerbraun.net>2019-02-21 08:14:24 +0000
committerlambda <pleromagit@rogerbraun.net>2019-02-21 08:14:24 +0000
commit19bd799bd705bfe8829f0510931f6683de107752 (patch)
treed69a0dcf78faae04044b6c2f5750a970f25b5128
parent45b06860d37d588868669081e6f2fbd83695e1aa (diff)
parente95dbecf3e3c831a3bff201b06a5e901c401ae89 (diff)
downloadpleroma-19bd799bd705bfe8829f0510931f6683de107752.tar.gz
Merge branch 'bugfix/as2-accept-json' into 'develop'
accept application/json mimetype for fetching AS2 objects See merge request pleroma/pleroma!846
-rw-r--r--lib/pleroma/web/ostatus/ostatus_controller.ex7
-rw-r--r--lib/pleroma/web/router.ex8
-rw-r--r--test/web/activity_pub/activity_pub_controller_test.exs71
3 files changed, 78 insertions, 8 deletions
diff --git a/lib/pleroma/web/ostatus/ostatus_controller.ex b/lib/pleroma/web/ostatus/ostatus_controller.ex
index bab3da2b0..ee2e3d6ec 100644
--- a/lib/pleroma/web/ostatus/ostatus_controller.ex
+++ b/lib/pleroma/web/ostatus/ostatus_controller.ex
@@ -33,6 +33,9 @@ defmodule Pleroma.Web.OStatus.OStatusController do
"activity+json" ->
ActivityPubController.call(conn, :user)
+ "json" ->
+ ActivityPubController.call(conn, :user)
+
_ ->
with %User{} = user <- User.get_cached_by_nickname(nickname) do
redirect(conn, external: OStatus.feed_path(user))
@@ -94,7 +97,7 @@ defmodule Pleroma.Web.OStatus.OStatusController do
end
def object(conn, %{"uuid" => uuid}) do
- if get_format(conn) == "activity+json" do
+ if get_format(conn) in ["activity+json", "json"] do
ActivityPubController.call(conn, :object)
else
with id <- o_status_url(conn, :object, uuid),
@@ -119,7 +122,7 @@ defmodule Pleroma.Web.OStatus.OStatusController do
end
def activity(conn, %{"uuid" => uuid}) do
- if get_format(conn) == "activity+json" do
+ if get_format(conn) in ["activity+json", "json"] do
ActivityPubController.call(conn, :activity)
else
with id <- o_status_url(conn, :activity, uuid),
diff --git a/lib/pleroma/web/router.ex b/lib/pleroma/web/router.ex
index 357ed7843..a372610d4 100644
--- a/lib/pleroma/web/router.ex
+++ b/lib/pleroma/web/router.ex
@@ -488,11 +488,11 @@ defmodule Pleroma.Web.Router do
end
pipeline :ap_relay do
- plug(:accepts, ["activity+json"])
+ plug(:accepts, ["activity+json", "json"])
end
pipeline :ostatus do
- plug(:accepts, ["html", "xml", "atom", "activity+json"])
+ plug(:accepts, ["html", "xml", "atom", "activity+json", "json"])
end
pipeline :oembed do
@@ -521,7 +521,7 @@ defmodule Pleroma.Web.Router do
end
pipeline :activitypub do
- plug(:accepts, ["activity+json"])
+ plug(:accepts, ["activity+json", "json"])
plug(Pleroma.Web.Plugs.HTTPSignaturePlug)
end
@@ -536,7 +536,7 @@ defmodule Pleroma.Web.Router do
end
pipeline :activitypub_client do
- plug(:accepts, ["activity+json"])
+ plug(:accepts, ["activity+json", "json"])
plug(:fetch_session)
plug(Pleroma.Plugs.OAuthPlug)
plug(Pleroma.Plugs.BasicAuthDecoderPlug)
diff --git a/test/web/activity_pub/activity_pub_controller_test.exs b/test/web/activity_pub/activity_pub_controller_test.exs
index 398bedf77..a809c15b1 100644
--- a/test/web/activity_pub/activity_pub_controller_test.exs
+++ b/test/web/activity_pub/activity_pub_controller_test.exs
@@ -41,7 +41,24 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubControllerTest do
end
describe "/users/:nickname" do
- test "it returns a json representation of the user", %{conn: conn} do
+ test "it returns a json representation of the user with accept application/json", %{
+ conn: conn
+ } do
+ user = insert(:user)
+
+ conn =
+ conn
+ |> put_req_header("accept", "application/json")
+ |> get("/users/#{user.nickname}")
+
+ user = Repo.get(User, user.id)
+
+ assert json_response(conn, 200) == UserView.render("user.json", %{user: user})
+ end
+
+ test "it returns a json representation of the user with accept application/activity+json", %{
+ conn: conn
+ } do
user = insert(:user)
conn =
@@ -53,10 +70,43 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubControllerTest do
assert json_response(conn, 200) == UserView.render("user.json", %{user: user})
end
+
+ test "it returns a json representation of the user with accept application/ld+json", %{
+ conn: conn
+ } do
+ user = insert(:user)
+
+ conn =
+ conn
+ |> put_req_header(
+ "accept",
+ "application/ld+json; profile=\"https://www.w3.org/ns/activitystreams\""
+ )
+ |> get("/users/#{user.nickname}")
+
+ user = Repo.get(User, user.id)
+
+ assert json_response(conn, 200) == UserView.render("user.json", %{user: user})
+ end
end
describe "/object/:uuid" do
- test "it returns a json representation of the object", %{conn: conn} do
+ test "it returns a json representation of the object with accept application/json", %{
+ conn: conn
+ } do
+ note = insert(:note)
+ uuid = String.split(note.data["id"], "/") |> List.last()
+
+ conn =
+ conn
+ |> put_req_header("accept", "application/json")
+ |> get("/objects/#{uuid}")
+
+ assert json_response(conn, 200) == ObjectView.render("object.json", %{object: note})
+ end
+
+ test "it returns a json representation of the object with accept application/activity+json",
+ %{conn: conn} do
note = insert(:note)
uuid = String.split(note.data["id"], "/") |> List.last()
@@ -68,6 +118,23 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubControllerTest do
assert json_response(conn, 200) == ObjectView.render("object.json", %{object: note})
end
+ test "it returns a json representation of the object with accept application/ld+json", %{
+ conn: conn
+ } do
+ note = insert(:note)
+ uuid = String.split(note.data["id"], "/") |> List.last()
+
+ conn =
+ conn
+ |> put_req_header(
+ "accept",
+ "application/ld+json; profile=\"https://www.w3.org/ns/activitystreams\""
+ )
+ |> get("/objects/#{uuid}")
+
+ assert json_response(conn, 200) == ObjectView.render("object.json", %{object: note})
+ end
+
test "it returns 404 for non-public messages", %{conn: conn} do
note = insert(:direct_note)
uuid = String.split(note.data["id"], "/") |> List.last()