diff options
| -rw-r--r-- | lib/pleroma/web/ostatus/ostatus_controller.ex | 7 | ||||
| -rw-r--r-- | lib/pleroma/web/router.ex | 8 | ||||
| -rw-r--r-- | test/web/activity_pub/activity_pub_controller_test.exs | 71 | 
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()  | 
