diff options
Diffstat (limited to 'test/web/activity_pub')
| -rw-r--r-- | test/web/activity_pub/activity_pub_controller_test.exs | 67 | ||||
| -rw-r--r-- | test/web/activity_pub/views/user_view_test.exs | 25 | 
2 files changed, 86 insertions, 6 deletions
| diff --git a/test/web/activity_pub/activity_pub_controller_test.exs b/test/web/activity_pub/activity_pub_controller_test.exs index 1f8eb9d71..452172bb4 100644 --- a/test/web/activity_pub/activity_pub_controller_test.exs +++ b/test/web/activity_pub/activity_pub_controller_test.exs @@ -12,6 +12,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubControllerTest do    alias Pleroma.Web.ActivityPub.ObjectView    alias Pleroma.Web.ActivityPub.UserView    alias Pleroma.Web.ActivityPub.Utils +  alias Pleroma.Web.CommonAPI    setup_all do      Tesla.Mock.mock_global(fn env -> apply(HttpRequestMock, :request, [env]) end) @@ -551,7 +552,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubControllerTest do        assert result["first"]["orderedItems"] == [user.ap_id]      end -    test "it returns returns empty if the user has 'hide_followers' set", %{conn: conn} do +    test "it returns returns a uri if the user has 'hide_followers' set", %{conn: conn} do        user = insert(:user)        user_two = insert(:user, %{info: %{hide_followers: true}})        User.follow(user, user_two) @@ -561,8 +562,35 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubControllerTest do          |> get("/users/#{user_two.nickname}/followers")          |> json_response(200) -      assert result["first"]["orderedItems"] == [] -      assert result["totalItems"] == 0 +      assert is_binary(result["first"]) +    end + +    test "it returns a 403 error on pages, if the user has 'hide_followers' set and the request is not authenticated", +         %{conn: conn} do +      user = insert(:user, %{info: %{hide_followers: true}}) + +      result = +        conn +        |> get("/users/#{user.nickname}/followers?page=1") + +      assert result.status == 403 +      assert result.resp_body == "" +    end + +    test "it renders the page, if the user has 'hide_followers' set and the request is authenticated with the same user", +         %{conn: conn} do +      user = insert(:user, %{info: %{hide_followers: true}}) +      other_user = insert(:user) +      {:ok, _other_user, user, _activity} = CommonAPI.follow(other_user, user) + +      result = +        conn +        |> assign(:user, user) +        |> get("/users/#{user.nickname}/followers?page=1") +        |> json_response(200) + +      assert result["totalItems"] == 1 +      assert result["orderedItems"] == [other_user.ap_id]      end      test "it works for more than 10 users", %{conn: conn} do @@ -606,7 +634,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubControllerTest do        assert result["first"]["orderedItems"] == [user_two.ap_id]      end -    test "it returns returns empty if the user has 'hide_follows' set", %{conn: conn} do +    test "it returns a uri if the user has 'hide_follows' set", %{conn: conn} do        user = insert(:user, %{info: %{hide_follows: true}})        user_two = insert(:user)        User.follow(user, user_two) @@ -616,8 +644,35 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubControllerTest do          |> get("/users/#{user.nickname}/following")          |> json_response(200) -      assert result["first"]["orderedItems"] == [] -      assert result["totalItems"] == 0 +      assert is_binary(result["first"]) +    end + +    test "it returns a 403 error on pages, if the user has 'hide_follows' set and the request is not authenticated", +         %{conn: conn} do +      user = insert(:user, %{info: %{hide_follows: true}}) + +      result = +        conn +        |> get("/users/#{user.nickname}/following?page=1") + +      assert result.status == 403 +      assert result.resp_body == "" +    end + +    test "it renders the page, if the user has 'hide_follows' set and the request is authenticated with the same user", +         %{conn: conn} do +      user = insert(:user, %{info: %{hide_follows: true}}) +      other_user = insert(:user) +      {:ok, user, _other_user, _activity} = CommonAPI.follow(user, other_user) + +      result = +        conn +        |> assign(:user, user) +        |> get("/users/#{user.nickname}/following?page=1") +        |> json_response(200) + +      assert result["totalItems"] == 1 +      assert result["orderedItems"] == [other_user.ap_id]      end      test "it works for more than 10 users", %{conn: conn} do diff --git a/test/web/activity_pub/views/user_view_test.exs b/test/web/activity_pub/views/user_view_test.exs index 969860c4c..86254117f 100644 --- a/test/web/activity_pub/views/user_view_test.exs +++ b/test/web/activity_pub/views/user_view_test.exs @@ -8,6 +8,7 @@ defmodule Pleroma.Web.ActivityPub.UserViewTest do    alias Pleroma.User    alias Pleroma.Web.ActivityPub.UserView +  alias Pleroma.Web.CommonAPI    test "Renders a user, including the public key" do      user = insert(:user) @@ -82,4 +83,28 @@ defmodule Pleroma.Web.ActivityPub.UserViewTest do        refute result["endpoints"]["oauthTokenEndpoint"]      end    end + +  describe "followers" do +    test "sets totalItems to zero when followers are hidden" do +      user = insert(:user) +      other_user = insert(:user) +      {:ok, _other_user, user, _activity} = CommonAPI.follow(other_user, user) +      assert %{"totalItems" => 1} = UserView.render("followers.json", %{user: user}) +      info = Map.put(user.info, :hide_followers, true) +      user = Map.put(user, :info, info) +      assert %{"totalItems" => 0} = UserView.render("followers.json", %{user: user}) +    end +  end + +  describe "following" do +    test "sets totalItems to zero when follows are hidden" do +      user = insert(:user) +      other_user = insert(:user) +      {:ok, user, _other_user, _activity} = CommonAPI.follow(user, other_user) +      assert %{"totalItems" => 1} = UserView.render("following.json", %{user: user}) +      info = Map.put(user.info, :hide_follows, true) +      user = Map.put(user, :info, info) +      assert %{"totalItems" => 0} = UserView.render("following.json", %{user: user}) +    end +  end  end | 
