diff options
| -rw-r--r-- | lib/pleroma/web/twitter_api/views/remote_follow_view.ex | 6 | ||||
| -rw-r--r-- | test/pleroma/web/twitter_api/remote_follow_controller_test.exs | 45 | 
2 files changed, 50 insertions, 1 deletions
| diff --git a/lib/pleroma/web/twitter_api/views/remote_follow_view.ex b/lib/pleroma/web/twitter_api/views/remote_follow_view.ex index bd33d4c0a..8902261b0 100644 --- a/lib/pleroma/web/twitter_api/views/remote_follow_view.ex +++ b/lib/pleroma/web/twitter_api/views/remote_follow_view.ex @@ -7,5 +7,9 @@ defmodule Pleroma.Web.TwitterAPI.RemoteFollowView do    import Phoenix.HTML.Form    alias Pleroma.Web.Gettext -  defdelegate avatar_url(user), to: Pleroma.User +  def avatar_url(user) do +    user +    |> Pleroma.User.avatar_url() +    |> Pleroma.Web.MediaProxy.url() +  end  end diff --git a/test/pleroma/web/twitter_api/remote_follow_controller_test.exs b/test/pleroma/web/twitter_api/remote_follow_controller_test.exs index a493dc9f6..2b57a42a4 100644 --- a/test/pleroma/web/twitter_api/remote_follow_controller_test.exs +++ b/test/pleroma/web/twitter_api/remote_follow_controller_test.exs @@ -410,4 +410,49 @@ defmodule Pleroma.Web.TwitterAPI.RemoteFollowControllerTest do        assert response =~ "Error following account"      end    end + +  describe "avatar url" do +    test "without media proxy" do +      clear_config([:media_proxy, :enabled], false) + +      user = +        insert(:user, %{ +          local: false, +          avatar: %{"url" => [%{"href" => "https://remote.org/avatar.png"}]} +        }) + +      avatar_url = Pleroma.Web.TwitterAPI.RemoteFollowView.avatar_url(user) + +      assert avatar_url == "https://remote.org/avatar.png" +    end + +    test "with media proxy" do +      clear_config([:media_proxy, :enabled], true) + +      user = +        insert(:user, %{ +          local: false, +          avatar: %{"url" => [%{"href" => "https://remote.org/avatar.png"}]} +        }) + +      avatar_url = Pleroma.Web.TwitterAPI.RemoteFollowView.avatar_url(user) +      url = Pleroma.Web.Endpoint.url() + +      assert String.starts_with?(avatar_url, url) +    end + +    test "local avatar is not proxied" do +      clear_config([:media_proxy, :enabled], true) + +      user = +        insert(:user, %{ +          local: true, +          avatar: %{"url" => [%{"href" => "#{Pleroma.Web.Endpoint.url()}/localuser/avatar.png"}]} +        }) + +      avatar_url = Pleroma.Web.TwitterAPI.RemoteFollowView.avatar_url(user) + +      assert avatar_url == "#{Pleroma.Web.Endpoint.url()}/localuser/avatar.png" +    end +  end  end | 
