diff options
Diffstat (limited to 'test/web')
| -rw-r--r-- | test/web/activity_pub/activity_pub_controller_test.exs | 61 | ||||
| -rw-r--r-- | test/web/ostatus/ostatus_controller_test.exs | 45 | 
2 files changed, 105 insertions, 1 deletions
| diff --git a/test/web/activity_pub/activity_pub_controller_test.exs b/test/web/activity_pub/activity_pub_controller_test.exs index c432c90e3..dd2a48a61 100644 --- a/test/web/activity_pub/activity_pub_controller_test.exs +++ b/test/web/activity_pub/activity_pub_controller_test.exs @@ -6,7 +6,6 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubControllerTest do    use Pleroma.Web.ConnCase    use Oban.Testing, repo: Pleroma.Repo -  import Pleroma.Factory    alias Pleroma.Activity    alias Pleroma.Config    alias Pleroma.Delivery @@ -14,13 +13,19 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubControllerTest do    alias Pleroma.Object    alias Pleroma.Tests.ObanHelpers    alias Pleroma.User +  alias Pleroma.Web.ActivityPub.ActivityPub    alias Pleroma.Web.ActivityPub.ObjectView    alias Pleroma.Web.ActivityPub.Relay    alias Pleroma.Web.ActivityPub.UserView    alias Pleroma.Web.ActivityPub.Utils    alias Pleroma.Web.CommonAPI +  alias Pleroma.Web.Endpoint    alias Pleroma.Workers.ReceiverWorker +  import Pleroma.Factory + +  require Pleroma.Constants +    setup_all do      Tesla.Mock.mock_global(fn env -> apply(HttpRequestMock, :request, [env]) end)      :ok @@ -168,6 +173,60 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubControllerTest do      end    end +  describe "mastodon compatibility routes" do +    test "it returns a json representation of the object with accept application/json", %{ +      conn: conn +    } do +      {:ok, object} = +        %{ +          "type" => "Note", +          "content" => "hey", +          "id" => Endpoint.url() <> "/users/raymoo/statuses/999999999", +          "actor" => Endpoint.url() <> "/users/raymoo", +          "to" => [Pleroma.Constants.as_public()] +        } +        |> Object.create() + +      conn = +        conn +        |> put_req_header("accept", "application/json") +        |> get("/users/raymoo/statuses/999999999") + +      assert json_response(conn, 200) == ObjectView.render("object.json", %{object: object}) +    end + +    test "it returns a json representation of the activity with accept application/json", %{ +      conn: conn +    } do +      {:ok, object} = +        %{ +          "type" => "Note", +          "content" => "hey", +          "id" => Endpoint.url() <> "/users/raymoo/statuses/999999999", +          "actor" => Endpoint.url() <> "/users/raymoo", +          "to" => [Pleroma.Constants.as_public()] +        } +        |> Object.create() + +      {:ok, activity, _} = +        %{ +          "id" => object.data["id"] <> "/activity", +          "type" => "Create", +          "object" => object.data["id"], +          "actor" => object.data["actor"], +          "to" => object.data["to"] +        } +        |> ActivityPub.persist(local: true) + +      conn = +        conn +        |> put_req_header("accept", "application/json") +        |> get("/users/raymoo/statuses/999999999/activity") + +      assert json_response(conn, 200) == ObjectView.render("object.json", %{object: activity}) +    end +  end +    describe "/objects/:uuid" do      test "it returns a json representation of the object with accept application/json", %{        conn: conn diff --git a/test/web/ostatus/ostatus_controller_test.exs b/test/web/ostatus/ostatus_controller_test.exs index bb349cb19..ee498f4b5 100644 --- a/test/web/ostatus/ostatus_controller_test.exs +++ b/test/web/ostatus/ostatus_controller_test.exs @@ -10,7 +10,11 @@ defmodule Pleroma.Web.OStatus.OStatusControllerTest do    alias Pleroma.Config    alias Pleroma.Object    alias Pleroma.User +  alias Pleroma.Web.ActivityPub.ActivityPub    alias Pleroma.Web.CommonAPI +  alias Pleroma.Web.Endpoint + +  require Pleroma.Constants    setup_all do      Tesla.Mock.mock_global(fn env -> apply(HttpRequestMock, :request, [env]) end) @@ -19,6 +23,47 @@ defmodule Pleroma.Web.OStatus.OStatusControllerTest do    setup do: clear_config([:instance, :federating], true) +  describe "Mastodon compatibility routes" do +    setup %{conn: conn} do +      conn = put_req_header(conn, "accept", "text/html") + +      {:ok, object} = +        %{ +          "type" => "Note", +          "content" => "hey", +          "id" => Endpoint.url() <> "/users/raymoo/statuses/999999999", +          "actor" => Endpoint.url() <> "/users/raymoo", +          "to" => [Pleroma.Constants.as_public()] +        } +        |> Object.create() + +      {:ok, activity, _} = +        %{ +          "id" => object.data["id"] <> "/activity", +          "type" => "Create", +          "object" => object.data["id"], +          "actor" => object.data["actor"], +          "to" => object.data["to"] +        } +        |> ActivityPub.persist(local: true) + +      %{conn: conn, activity: activity} +    end + +    test "redirects to /notice/:id for html format", %{conn: conn, activity: activity} do +      conn = get(conn, "/users/raymoo/statuses/999999999") +      assert redirected_to(conn) == "/notice/#{activity.id}" +    end + +    test "redirects to /notice/:id for html format for activity", %{ +      conn: conn, +      activity: activity +    } do +      conn = get(conn, "/users/raymoo/statuses/999999999/activity") +      assert redirected_to(conn) == "/notice/#{activity.id}" +    end +  end +    # Note: see ActivityPubControllerTest for JSON format tests    describe "GET /objects/:uuid (text/html)" do      setup %{conn: conn} do | 
