diff options
Diffstat (limited to 'test')
4 files changed, 165 insertions, 15 deletions
| diff --git a/test/web/activity_pub/activity_pub_test.exs b/test/web/activity_pub/activity_pub_test.exs index c9f2a92e7..3a5a2f984 100644 --- a/test/web/activity_pub/activity_pub_test.exs +++ b/test/web/activity_pub/activity_pub_test.exs @@ -87,6 +87,66 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do      end    end +  describe "fetching excluded by visibility" do +    test "it excludes by the appropriate visibility" do +      user = insert(:user) + +      {:ok, public_activity} = CommonAPI.post(user, %{"status" => ".", "visibility" => "public"}) + +      {:ok, direct_activity} = CommonAPI.post(user, %{"status" => ".", "visibility" => "direct"}) + +      {:ok, unlisted_activity} = +        CommonAPI.post(user, %{"status" => ".", "visibility" => "unlisted"}) + +      {:ok, private_activity} = +        CommonAPI.post(user, %{"status" => ".", "visibility" => "private"}) + +      activities = +        ActivityPub.fetch_activities([], %{ +          "exclude_visibilities" => "direct", +          "actor_id" => user.ap_id +        }) + +      assert public_activity in activities +      assert unlisted_activity in activities +      assert private_activity in activities +      refute direct_activity in activities + +      activities = +        ActivityPub.fetch_activities([], %{ +          "exclude_visibilities" => "unlisted", +          "actor_id" => user.ap_id +        }) + +      assert public_activity in activities +      refute unlisted_activity in activities +      assert private_activity in activities +      assert direct_activity in activities + +      activities = +        ActivityPub.fetch_activities([], %{ +          "exclude_visibilities" => "private", +          "actor_id" => user.ap_id +        }) + +      assert public_activity in activities +      assert unlisted_activity in activities +      refute private_activity in activities +      assert direct_activity in activities + +      activities = +        ActivityPub.fetch_activities([], %{ +          "exclude_visibilities" => "public", +          "actor_id" => user.ap_id +        }) + +      refute public_activity in activities +      assert unlisted_activity in activities +      assert private_activity in activities +      assert direct_activity in activities +    end +  end +    describe "building a user from his ap id" do      test "it returns a user" do        user_id = "http://mastodon.example.org/users/admin" diff --git a/test/web/mastodon_api/controllers/account_controller_test.exs b/test/web/mastodon_api/controllers/account_controller_test.exs index 6a59c3d94..745383757 100644 --- a/test/web/mastodon_api/controllers/account_controller_test.exs +++ b/test/web/mastodon_api/controllers/account_controller_test.exs @@ -237,6 +237,20 @@ defmodule Pleroma.Web.MastodonAPI.AccountControllerTest do        assert [%{"id" => id}] = json_response(conn, 200)        assert id == to_string(post.id)      end + +    test "the user views their own timelines and excludes direct messages", %{conn: conn} do +      user = insert(:user) +      {:ok, public_activity} = CommonAPI.post(user, %{"status" => ".", "visibility" => "public"}) +      {:ok, _direct_activity} = CommonAPI.post(user, %{"status" => ".", "visibility" => "direct"}) + +      conn = +        conn +        |> assign(:user, user) +        |> get("/api/v1/accounts/#{user.id}/statuses", %{"exclude_visibilities" => ["direct"]}) + +      assert [%{"id" => id}] = json_response(conn, 200) +      assert id == to_string(public_activity.id) +    end    end    describe "followers" do diff --git a/test/web/mastodon_api/controllers/notification_controller_test.exs b/test/web/mastodon_api/controllers/notification_controller_test.exs index e4137e92c..fa55a7cf9 100644 --- a/test/web/mastodon_api/controllers/notification_controller_test.exs +++ b/test/web/mastodon_api/controllers/notification_controller_test.exs @@ -137,6 +137,57 @@ defmodule Pleroma.Web.MastodonAPI.NotificationControllerTest do      assert [%{"id" => ^notification3_id}, %{"id" => ^notification2_id}] = result    end +  test "filters notifications using exclude_visibilities", %{conn: conn} do +    user = insert(:user) +    other_user = insert(:user) + +    {:ok, public_activity} = +      CommonAPI.post(other_user, %{"status" => "@#{user.nickname}", "visibility" => "public"}) + +    {:ok, direct_activity} = +      CommonAPI.post(other_user, %{"status" => "@#{user.nickname}", "visibility" => "direct"}) + +    {:ok, unlisted_activity} = +      CommonAPI.post(other_user, %{"status" => "@#{user.nickname}", "visibility" => "unlisted"}) + +    {:ok, private_activity} = +      CommonAPI.post(other_user, %{"status" => "@#{user.nickname}", "visibility" => "private"}) + +    conn = assign(conn, :user, user) + +    conn_res = +      get(conn, "/api/v1/notifications", %{ +        exclude_visibilities: ["public", "unlisted", "private"] +      }) + +    assert [%{"status" => %{"id" => id}}] = json_response(conn_res, 200) +    assert id == direct_activity.id + +    conn_res = +      get(conn, "/api/v1/notifications", %{ +        exclude_visibilities: ["public", "unlisted", "direct"] +      }) + +    assert [%{"status" => %{"id" => id}}] = json_response(conn_res, 200) +    assert id == private_activity.id + +    conn_res = +      get(conn, "/api/v1/notifications", %{ +        exclude_visibilities: ["public", "private", "direct"] +      }) + +    assert [%{"status" => %{"id" => id}}] = json_response(conn_res, 200) +    assert id == unlisted_activity.id + +    conn_res = +      get(conn, "/api/v1/notifications", %{ +        exclude_visibilities: ["unlisted", "private", "direct"] +      }) + +    assert [%{"status" => %{"id" => id}}] = json_response(conn_res, 200) +    assert id == public_activity.id +  end +    test "filters notifications using exclude_types", %{conn: conn} do      user = insert(:user)      other_user = insert(:user) diff --git a/test/web/mastodon_api/controllers/timeline_controller_test.exs b/test/web/mastodon_api/controllers/timeline_controller_test.exs index d3652d964..fc45c25de 100644 --- a/test/web/mastodon_api/controllers/timeline_controller_test.exs +++ b/test/web/mastodon_api/controllers/timeline_controller_test.exs @@ -20,27 +20,52 @@ defmodule Pleroma.Web.MastodonAPI.TimelineControllerTest do      :ok    end -  test "the home timeline", %{conn: conn} do -    user = insert(:user) -    following = insert(:user) +  describe "home" do +    test "the home timeline", %{conn: conn} do +      user = insert(:user) +      following = insert(:user) -    {:ok, _activity} = CommonAPI.post(following, %{"status" => "test"}) +      {:ok, _activity} = CommonAPI.post(following, %{"status" => "test"}) -    conn = -      conn -      |> assign(:user, user) -      |> get("/api/v1/timelines/home") +      conn = +        conn +        |> assign(:user, user) +        |> get("/api/v1/timelines/home") -    assert Enum.empty?(json_response(conn, :ok)) +      assert Enum.empty?(json_response(conn, :ok)) -    {:ok, user} = User.follow(user, following) +      {:ok, user} = User.follow(user, following) -    conn = -      build_conn() -      |> assign(:user, user) -      |> get("/api/v1/timelines/home") +      conn = +        build_conn() +        |> assign(:user, user) +        |> get("/api/v1/timelines/home") -    assert [%{"content" => "test"}] = json_response(conn, :ok) +      assert [%{"content" => "test"}] = json_response(conn, :ok) +    end + +    test "the home timeline when the direct messages are excluded", %{conn: conn} do +      user = insert(:user) +      {:ok, public_activity} = CommonAPI.post(user, %{"status" => ".", "visibility" => "public"}) +      {:ok, direct_activity} = CommonAPI.post(user, %{"status" => ".", "visibility" => "direct"}) + +      {:ok, unlisted_activity} = +        CommonAPI.post(user, %{"status" => ".", "visibility" => "unlisted"}) + +      {:ok, private_activity} = +        CommonAPI.post(user, %{"status" => ".", "visibility" => "private"}) + +      conn = +        conn +        |> assign(:user, user) +        |> get("/api/v1/timelines/home", %{"exclude_visibilities" => ["direct"]}) + +      assert status_ids = json_response(conn, :ok) |> Enum.map(& &1["id"]) +      assert public_activity.id in status_ids +      assert unlisted_activity.id in status_ids +      assert private_activity.id in status_ids +      refute direct_activity.id in status_ids +    end    end    describe "public" do | 
