diff options
| -rw-r--r-- | lib/pleroma/web/mastodon_api/views/status_view.ex | 2 | ||||
| -rw-r--r-- | test/pleroma/web/mastodon_api/views/status_view_test.exs | 41 | 
2 files changed, 42 insertions, 1 deletions
| diff --git a/lib/pleroma/web/mastodon_api/views/status_view.ex b/lib/pleroma/web/mastodon_api/views/status_view.ex index 06adfb221..7360d1093 100644 --- a/lib/pleroma/web/mastodon_api/views/status_view.ex +++ b/lib/pleroma/web/mastodon_api/views/status_view.ex @@ -315,7 +315,7 @@ defmodule Pleroma.Web.MastodonAPI.StatusView do      quote_activity = get_quote(activity, opts)      quote_post = -      if quote_activity do +      if visible_for_user?(quote_activity, opts[:for]) do          quote_rendering_opts = Map.merge(opts, %{activity: quote_activity, show_quote: false})          render("show.json", quote_rendering_opts)        else diff --git a/test/pleroma/web/mastodon_api/views/status_view_test.exs b/test/pleroma/web/mastodon_api/views/status_view_test.exs index f50b02799..f41ef580d 100644 --- a/test/pleroma/web/mastodon_api/views/status_view_test.exs +++ b/test/pleroma/web/mastodon_api/views/status_view_test.exs @@ -446,6 +446,47 @@ defmodule Pleroma.Web.MastodonAPI.StatusViewTest do      assert status.pleroma.quote.id == to_string(quote_post.id)    end +  test "quoted private post" do +    user = insert(:user) + +    # Insert a private post +    private = insert(:followers_only_note_activity, user: user) +    private_object = Object.normalize(private) + +    # Create a public post quoting the private post +    quote_private = +      insert(:note_activity, note: insert(:note, data: %{"quoteUrl" => private_object.data["id"]})) + +    status = StatusView.render("show.json", %{activity: quote_private}) + +    # The quote isn't rendered +    refute status.pleroma.quote +    assert status.pleroma.quote_url == private_object.data["id"] + +    # After following the user, the quote is rendered +    follower = insert(:user) +    CommonAPI.follow(follower, user) + +    status = StatusView.render("show.json", %{activity: quote_private, for: follower}) +    assert status.pleroma.quote.id == to_string(private.id) +  end + +  test "quoted direct message" do +    # Insert a direct message +    direct = insert(:direct_note_activity) +    direct_object = Object.normalize(direct) + +    # Create a public post quoting the direct message +    quote_direct = +      insert(:note_activity, note: insert(:note, data: %{"quoteUrl" => direct_object.data["id"]})) + +    status = StatusView.render("show.json", %{activity: quote_direct}) + +    # The quote isn't rendered +    refute status.pleroma.quote +    assert status.pleroma.quote_url == direct_object.data["id"] +  end +    test "contains mentions" do      user = insert(:user)      mentioned = insert(:user) | 
