Specify default scope in verify_credentials
authorWill Pearson <uiri00@gmail.com>
Sat, 1 Sep 2018 03:59:43 +0000 (20:59 -0700)
committerWill Pearson <uiri00@gmail.com>
Sat, 1 Sep 2018 04:04:46 +0000 (21:04 -0700)
Certain Mastodon/Pleroma front ends call verify_credentials to get the
default scope of a new toot.

Currently, Pleroma hardcodes this value to "public".

This patch changes it to the user's default_scope value.

lib/pleroma/user.ex
lib/pleroma/web/mastodon_api/views/account_view.ex
test/web/mastodon_api/mastodon_api_controller_test.exs

index fca490cb1843c6227d6e8013c1d5962a02929370..64c69b209cddc9ae339f4e1a13b2aad6d6361d87 100644 (file)
@@ -68,7 +68,8 @@ defmodule Pleroma.User do
       following_count: length(user.following) - oneself,
       note_count: user.info["note_count"] || 0,
       follower_count: user.info["follower_count"] || 0,
-      locked: user.info["locked"] || false
+      locked: user.info["locked"] || false,
+      default_scope: user.info["default_scope"] || "public"
     }
   end
 
index 133cae3b5b541e443ee7ea344b824dc68b928194..7bc32e688ffc180e7318b25c226e1473e3c65044 100644 (file)
@@ -46,7 +46,7 @@ defmodule Pleroma.Web.MastodonAPI.AccountView do
       fields: [],
       source: %{
         note: "",
-        privacy: "public",
+        privacy: user_info.default_scope,
         sensitive: "false"
       }
     }
index d4ff16c68e116381d830d9529899980334caa35d..60dafcf0309f609505f348d544fe6f29416fcdcc 100644 (file)
@@ -206,7 +206,19 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do
       |> assign(:user, user)
       |> get("/api/v1/accounts/verify_credentials")
 
-    assert %{"id" => id} = json_response(conn, 200)
+    assert %{"id" => id, "source" => %{"privacy" => "public"}} = json_response(conn, 200)
+    assert id == to_string(user.id)
+  end
+
+  test "verify_credentials default scope unlisted", %{conn: conn} do
+    user = insert(:user, %{info: %{"default_scope" => "unlisted"}})
+
+    conn =
+      conn
+      |> assign(:user, user)
+      |> get("/api/v1/accounts/verify_credentials")
+
+    assert %{"id" => id, "source" => %{"privacy" => "unlisted"}} = json_response(conn, 200)
     assert id == to_string(user.id)
   end
 
@@ -715,6 +727,18 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do
       assert User.following?(other_user, user) == true
     end
 
+    test "verify_credentials", %{conn: conn} do
+      user = insert(:user, %{info: %{"default_scope" => "private"}})
+
+      conn =
+        conn
+        |> assign(:user, user)
+        |> get("/api/v1/accounts/verify_credentials")
+
+      assert %{"id" => id, "source" => %{"privacy" => "private"}} = json_response(conn, 200)
+      assert id == to_string(user.id)
+    end
+
     test "/api/v1/follow_requests/:id/reject works" do
       user = insert(:user, %{info: %{"locked" => true}})
       other_user = insert(:user)