Tests to validate client disclosure obeys user setting
authorMark Felder <feld@feld.me>
Thu, 18 Feb 2021 23:23:17 +0000 (17:23 -0600)
committerMark Felder <feld@feld.me>
Thu, 18 Feb 2021 23:23:17 +0000 (17:23 -0600)
lib/pleroma/web/mastodon_api/controllers/status_controller.ex
test/pleroma/web/mastodon_api/controllers/status_controller_test.exs

index 2e63c88695e9e609ab58b354d9d71cf9156540dc..2655d6b6e986483bff145942dd10a42e9ed2b0a2 100644 (file)
@@ -420,9 +420,13 @@ defmodule Pleroma.Web.MastodonAPI.StatusController do
     )
   end
 
-  defp put_application(params, %{assigns: %{token: %Token{} = token}} = _conn) do
-    %{client_name: client_name, website: website} = Repo.preload(token, :app).app
-    Map.put(params, :application, %{name: client_name, website: website})
+  defp put_application(params, %{assigns: %{token: %Token{user: %User{} = user} = token}} = _conn) do
+    if user.disclose_client do
+      %{client_name: client_name, website: website} = Repo.preload(token, :app).app
+      Map.put(params, :application, %{name: client_name, website: website})
+    else
+      Map.put(params, :application, nil)
+    end
   end
 
   defp put_application(params, _), do: Map.put(params, :application, nil)
index 1ca82954401a601dbcb84534d7d9d9d1898bad7b..bae2ad4bfad19f242cf4f63b957919f8a4ab9039 100644 (file)
@@ -358,8 +358,9 @@ defmodule Pleroma.Web.MastodonAPI.StatusControllerTest do
       assert activity.data["cc"] == []
     end
 
-    test "preserves client application metadata" do
-      %{user: _user, token: token, conn: conn} = oauth_access(["write:statuses"])
+    test "discloses application metadata when enabled" do
+      user = insert(:user, disclose_client: true)
+      %{user: _user, token: token, conn: conn} = oauth_access(["write:statuses"], user: user)
 
       %Pleroma.Web.OAuth.Token{
         app: %Pleroma.Web.OAuth.App{
@@ -383,6 +384,23 @@ defmodule Pleroma.Web.MastodonAPI.StatusControllerTest do
                }
              } = json_response_and_validate_schema(result, 200)
     end
+
+    test "hides application metadata when disabled" do
+      user = insert(:user, disclose_client: false)
+      %{user: _user, token: _token, conn: conn} = oauth_access(["write:statuses"], user: user)
+
+      result =
+        conn
+        |> put_req_header("content-type", "application/json")
+        |> post("/api/v1/statuses", %{
+          "status" => "club mate is my wingman"
+        })
+
+      assert %{
+               "content" => "club mate is my wingman",
+               "application" => nil
+             } = json_response_and_validate_schema(result, 200)
+    end
   end
 
   describe "posting scheduled statuses" do