diff options
Diffstat (limited to 'test/web/ostatus')
| -rw-r--r-- | test/web/ostatus/ostatus_controller_test.exs | 91 | 
1 files changed, 52 insertions, 39 deletions
| diff --git a/test/web/ostatus/ostatus_controller_test.exs b/test/web/ostatus/ostatus_controller_test.exs index 50235dfef..bb349cb19 100644 --- a/test/web/ostatus/ostatus_controller_test.exs +++ b/test/web/ostatus/ostatus_controller_test.exs @@ -1,5 +1,5 @@  # Pleroma: A lightweight social networking server -# Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/> +# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>  # SPDX-License-Identifier: AGPL-3.0-only  defmodule Pleroma.Web.OStatus.OStatusControllerTest do @@ -7,6 +7,7 @@ defmodule Pleroma.Web.OStatus.OStatusControllerTest do    import Pleroma.Factory +  alias Pleroma.Config    alias Pleroma.Object    alias Pleroma.User    alias Pleroma.Web.CommonAPI @@ -16,22 +17,22 @@ defmodule Pleroma.Web.OStatus.OStatusControllerTest do      :ok    end -  clear_config_all([:instance, :federating]) do -    Pleroma.Config.put([:instance, :federating], true) -  end +  setup do: clear_config([:instance, :federating], true) + +  # Note: see ActivityPubControllerTest for JSON format tests +  describe "GET /objects/:uuid (text/html)" do +    setup %{conn: conn} do +      conn = put_req_header(conn, "accept", "text/html") +      %{conn: conn} +    end -  describe "GET object/2" do      test "redirects to /notice/id for html format", %{conn: conn} do        note_activity = insert(:note_activity)        object = Object.normalize(note_activity)        [_, uuid] = hd(Regex.scan(~r/.+\/([\w-]+)$/, object.data["id"]))        url = "/objects/#{uuid}" -      conn = -        conn -        |> put_req_header("accept", "text/html") -        |> get(url) - +      conn = get(conn, url)        assert redirected_to(conn) == "/notice/#{note_activity.id}"      end @@ -45,23 +46,25 @@ defmodule Pleroma.Web.OStatus.OStatusControllerTest do        |> response(404)      end -    test "404s on nonexisting objects", %{conn: conn} do +    test "404s on non-existing objects", %{conn: conn} do        conn        |> get("/objects/123")        |> response(404)      end    end -  describe "GET activity/2" do +  # Note: see ActivityPubControllerTest for JSON format tests +  describe "GET /activities/:uuid (text/html)" do +    setup %{conn: conn} do +      conn = put_req_header(conn, "accept", "text/html") +      %{conn: conn} +    end +      test "redirects to /notice/id for html format", %{conn: conn} do        note_activity = insert(:note_activity)        [_, uuid] = hd(Regex.scan(~r/.+\/([\w-]+)$/, note_activity.data["id"])) -      conn = -        conn -        |> put_req_header("accept", "text/html") -        |> get("/activities/#{uuid}") - +      conn = get(conn, "/activities/#{uuid}")        assert redirected_to(conn) == "/notice/#{note_activity.id}"      end @@ -79,19 +82,6 @@ defmodule Pleroma.Web.OStatus.OStatusControllerTest do        |> get("/activities/123")        |> response(404)      end - -    test "gets an activity in AS2 format", %{conn: conn} do -      note_activity = insert(:note_activity) -      [_, uuid] = hd(Regex.scan(~r/.+\/([\w-]+)$/, note_activity.data["id"])) -      url = "/activities/#{uuid}" - -      conn = -        conn -        |> put_req_header("accept", "application/activity+json") -        |> get(url) - -      assert json_response(conn, 200) -    end    end    describe "GET notice/2" do @@ -146,7 +136,7 @@ defmodule Pleroma.Web.OStatus.OStatusControllerTest do        user = insert(:user) -      {:ok, like_activity, _} = CommonAPI.favorite(note_activity.id, user) +      {:ok, like_activity} = CommonAPI.favorite(user, note_activity.id)        assert like_activity.data["type"] == "Like" @@ -170,7 +160,7 @@ defmodule Pleroma.Web.OStatus.OStatusControllerTest do        assert response(conn, 404)      end -    test "404s a nonexisting notice", %{conn: conn} do +    test "404s a non-existing notice", %{conn: conn} do        url = "/notice/123"        conn = @@ -179,10 +169,21 @@ defmodule Pleroma.Web.OStatus.OStatusControllerTest do        assert response(conn, 404)      end + +    test "it requires authentication if instance is NOT federating", %{ +      conn: conn +    } do +      user = insert(:user) +      note_activity = insert(:note_activity) + +      conn = put_req_header(conn, "accept", "text/html") + +      ensure_federating_or_authenticated(conn, "/notice/#{note_activity.id}", user) +    end    end    describe "GET /notice/:id/embed_player" do -    test "render embed player", %{conn: conn} do +    setup do        note_activity = insert(:note_activity)        object = Pleroma.Object.normalize(note_activity) @@ -204,9 +205,11 @@ defmodule Pleroma.Web.OStatus.OStatusControllerTest do        |> Ecto.Changeset.change(data: object_data)        |> Pleroma.Repo.update() -      conn = -        conn -        |> get("/notice/#{note_activity.id}/embed_player") +      %{note_activity: note_activity} +    end + +    test "renders embed player", %{conn: conn, note_activity: note_activity} do +      conn = get(conn, "/notice/#{note_activity.id}/embed_player")        assert Plug.Conn.get_resp_header(conn, "x-frame-options") == ["ALLOW"] @@ -272,9 +275,19 @@ defmodule Pleroma.Web.OStatus.OStatusControllerTest do        |> Ecto.Changeset.change(data: object_data)        |> Pleroma.Repo.update() -      assert conn -             |> get("/notice/#{note_activity.id}/embed_player") -             |> response(404) +      conn +      |> get("/notice/#{note_activity.id}/embed_player") +      |> response(404) +    end + +    test "it requires authentication if instance is NOT federating", %{ +      conn: conn, +      note_activity: note_activity +    } do +      user = insert(:user) +      conn = put_req_header(conn, "accept", "text/html") + +      ensure_federating_or_authenticated(conn, "/notice/#{note_activity.id}/embed_player", user)      end    end  end | 
