Deprecate Pleroma.Web.base_url/0
[akkoma] / test / pleroma / web / admin_api / controllers / user_controller_test.exs
index 67b0c578c426b78068628ec4ff70ba9f040f46a1..af295be42b00d1f12cae82215cf230c0cdb33dfe 100644 (file)
@@ -1,5 +1,5 @@
 # Pleroma: A lightweight social networking server
-# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
+# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
 # SPDX-License-Identifier: AGPL-3.0-only
 
 defmodule Pleroma.Web.AdminAPI.UserControllerTest do
@@ -14,9 +14,9 @@ defmodule Pleroma.Web.AdminAPI.UserControllerTest do
   alias Pleroma.Repo
   alias Pleroma.Tests.ObanHelpers
   alias Pleroma.User
-  alias Pleroma.Web
   alias Pleroma.Web.ActivityPub.Relay
   alias Pleroma.Web.CommonAPI
+  alias Pleroma.Web.Endpoint
   alias Pleroma.Web.MediaProxy
 
   setup_all do
@@ -47,104 +47,47 @@ defmodule Pleroma.Web.AdminAPI.UserControllerTest do
     assert json_response(conn, 200)
   end
 
-  describe "with [:auth, :enforce_oauth_admin_scope_usage]," do
-    setup do: clear_config([:auth, :enforce_oauth_admin_scope_usage], true)
-
-    test "GET /api/pleroma/admin/users/:nickname requires admin:read:accounts or broader scope",
-         %{admin: admin} do
-      user = insert(:user)
-      url = "/api/pleroma/admin/users/#{user.nickname}"
-
-      good_token1 = insert(:oauth_token, user: admin, scopes: ["admin"])
-      good_token2 = insert(:oauth_token, user: admin, scopes: ["admin:read"])
-      good_token3 = insert(:oauth_token, user: admin, scopes: ["admin:read:accounts"])
-
-      bad_token1 = insert(:oauth_token, user: admin, scopes: ["read:accounts"])
-      bad_token2 = insert(:oauth_token, user: admin, scopes: ["admin:read:accounts:partial"])
-      bad_token3 = nil
-
-      for good_token <- [good_token1, good_token2, good_token3] do
-        conn =
-          build_conn()
-          |> assign(:user, admin)
-          |> assign(:token, good_token)
-          |> get(url)
+  test "GET /api/pleroma/admin/users/:nickname requires admin:read:accounts or broader scope",
+       %{admin: admin} do
+    user = insert(:user)
+    url = "/api/pleroma/admin/users/#{user.nickname}"
 
-        assert json_response(conn, 200)
-      end
+    good_token1 = insert(:oauth_token, user: admin, scopes: ["admin"])
+    good_token2 = insert(:oauth_token, user: admin, scopes: ["admin:read"])
+    good_token3 = insert(:oauth_token, user: admin, scopes: ["admin:read:accounts"])
 
-      for good_token <- [good_token1, good_token2, good_token3] do
-        conn =
-          build_conn()
-          |> assign(:user, nil)
-          |> assign(:token, good_token)
-          |> get(url)
+    bad_token1 = insert(:oauth_token, user: admin, scopes: ["read:accounts"])
+    bad_token2 = insert(:oauth_token, user: admin, scopes: ["admin:read:accounts:partial"])
+    bad_token3 = nil
 
-        assert json_response(conn, :forbidden)
-      end
-
-      for bad_token <- [bad_token1, bad_token2, bad_token3] do
-        conn =
-          build_conn()
-          |> assign(:user, admin)
-          |> assign(:token, bad_token)
-          |> get(url)
+    for good_token <- [good_token1, good_token2, good_token3] do
+      conn =
+        build_conn()
+        |> assign(:user, admin)
+        |> assign(:token, good_token)
+        |> get(url)
 
-        assert json_response(conn, :forbidden)
-      end
+      assert json_response(conn, 200)
     end
-  end
 
-  describe "unless [:auth, :enforce_oauth_admin_scope_usage]," do
-    setup do: clear_config([:auth, :enforce_oauth_admin_scope_usage], false)
-
-    test "GET /api/pleroma/admin/users/:nickname requires " <>
-           "read:accounts or admin:read:accounts or broader scope",
-         %{admin: admin} do
-      user = insert(:user)
-      url = "/api/pleroma/admin/users/#{user.nickname}"
-
-      good_token1 = insert(:oauth_token, user: admin, scopes: ["admin"])
-      good_token2 = insert(:oauth_token, user: admin, scopes: ["admin:read"])
-      good_token3 = insert(:oauth_token, user: admin, scopes: ["admin:read:accounts"])
-      good_token4 = insert(:oauth_token, user: admin, scopes: ["read:accounts"])
-      good_token5 = insert(:oauth_token, user: admin, scopes: ["read"])
-
-      good_tokens = [good_token1, good_token2, good_token3, good_token4, good_token5]
-
-      bad_token1 = insert(:oauth_token, user: admin, scopes: ["read:accounts:partial"])
-      bad_token2 = insert(:oauth_token, user: admin, scopes: ["admin:read:accounts:partial"])
-      bad_token3 = nil
-
-      for good_token <- good_tokens do
-        conn =
-          build_conn()
-          |> assign(:user, admin)
-          |> assign(:token, good_token)
-          |> get(url)
-
-        assert json_response(conn, 200)
-      end
-
-      for good_token <- good_tokens do
-        conn =
-          build_conn()
-          |> assign(:user, nil)
-          |> assign(:token, good_token)
-          |> get(url)
+    for good_token <- [good_token1, good_token2, good_token3] do
+      conn =
+        build_conn()
+        |> assign(:user, nil)
+        |> assign(:token, good_token)
+        |> get(url)
 
-        assert json_response(conn, :forbidden)
-      end
+      assert json_response(conn, :forbidden)
+    end
 
-      for bad_token <- [bad_token1, bad_token2, bad_token3] do
-        conn =
-          build_conn()
-          |> assign(:user, admin)
-          |> assign(:token, bad_token)
-          |> get(url)
+    for bad_token <- [bad_token1, bad_token2, bad_token3] do
+      conn =
+        build_conn()
+        |> assign(:user, admin)
+        |> assign(:token, bad_token)
+        |> get(url)
 
-        assert json_response(conn, :forbidden)
-      end
+      assert json_response(conn, :forbidden)
     end
   end
 
@@ -169,7 +112,7 @@ defmodule Pleroma.Web.AdminAPI.UserControllerTest do
       assert user.note_count == 1
       assert user.follower_count == 1
       assert user.following_count == 1
-      refute user.deactivated
+      assert user.is_active
 
       with_mock Pleroma.Web.Federator,
         publish: fn _ -> nil end,
@@ -181,7 +124,7 @@ defmodule Pleroma.Web.AdminAPI.UserControllerTest do
 
         ObanHelpers.perform_all()
 
-        assert User.get_by_nickname(user.nickname).deactivated
+        refute User.get_by_nickname(user.nickname).is_active
 
         log_entry = Repo.one(ModerationLog)
 
@@ -191,7 +134,7 @@ defmodule Pleroma.Web.AdminAPI.UserControllerTest do
         assert json_response(conn, 200) == [user.nickname]
 
         user = Repo.get(User, user.id)
-        assert user.deactivated
+        refute user.is_active
 
         assert user.avatar == %{}
         assert user.banner == %{}
@@ -429,7 +372,7 @@ defmodule Pleroma.Web.AdminAPI.UserControllerTest do
   describe "GET /api/pleroma/admin/users" do
     test "renders users array for the first page", %{conn: conn, admin: admin} do
       user = insert(:user, local: false, tags: ["foo", "bar"])
-      user2 = insert(:user, approval_pending: true, registration_reason: "I'm a chill dude")
+      user2 = insert(:user, is_approved: false, registration_reason: "I'm a chill dude")
 
       conn = get(conn, "/api/pleroma/admin/users?page=1")
 
@@ -444,7 +387,7 @@ defmodule Pleroma.Web.AdminAPI.UserControllerTest do
             user2,
             %{
               "local" => true,
-              "approval_pending" => true,
+              "is_approved" => false,
               "registration_reason" => "I'm a chill dude",
               "actor_type" => "Person"
             }
@@ -460,7 +403,7 @@ defmodule Pleroma.Web.AdminAPI.UserControllerTest do
     end
 
     test "pagination works correctly with service users", %{conn: conn} do
-      service1 = User.get_or_create_service_actor_by_ap_id(Web.base_url() <> "/meido", "meido")
+      service1 = User.get_or_create_service_actor_by_ap_id(Endpoint.url() <> "/meido", "meido")
 
       insert_list(25, :user)
 
@@ -621,7 +564,7 @@ defmodule Pleroma.Web.AdminAPI.UserControllerTest do
             "roles" => %{"admin" => true, "moderator" => false}
           }),
           user_response(old_admin, %{
-            "deactivated" => false,
+            "is_active" => true,
             "roles" => %{"admin" => true, "moderator" => false}
           })
         ]
@@ -635,11 +578,11 @@ defmodule Pleroma.Web.AdminAPI.UserControllerTest do
     end
 
     test "only unconfirmed users", %{conn: conn} do
-      sad_user = insert(:user, nickname: "sadboy", confirmation_pending: true)
-      old_user = insert(:user, nickname: "oldboy", confirmation_pending: true)
+      sad_user = insert(:user, nickname: "sadboy", is_confirmed: false)
+      old_user = insert(:user, nickname: "oldboy", is_confirmed: false)
 
-      insert(:user, nickname: "happyboy", approval_pending: false)
-      insert(:user, confirmation_pending: false)
+      insert(:user, nickname: "happyboy", is_approved: true)
+      insert(:user, is_confirmed: true)
 
       result =
         conn
@@ -649,8 +592,8 @@ defmodule Pleroma.Web.AdminAPI.UserControllerTest do
       users =
         Enum.map([old_user, sad_user], fn user ->
           user_response(user, %{
-            "confirmation_pending" => true,
-            "approval_pending" => false
+            "is_confirmed" => false,
+            "is_approved" => true
           })
         end)
         |> Enum.sort_by(& &1["nickname"])
@@ -662,18 +605,18 @@ defmodule Pleroma.Web.AdminAPI.UserControllerTest do
       user =
         insert(:user,
           nickname: "sadboy",
-          approval_pending: true,
+          is_approved: false,
           registration_reason: "Plz let me in!"
         )
 
-      insert(:user, nickname: "happyboy", approval_pending: false)
+      insert(:user, nickname: "happyboy", is_approved: true)
 
       conn = get(conn, "/api/pleroma/admin/users?filters=need_approval")
 
       users = [
         user_response(
           user,
-          %{"approval_pending" => true, "registration_reason" => "Plz let me in!"}
+          %{"is_approved" => false, "registration_reason" => "Plz let me in!"}
         )
       ]
 
@@ -694,11 +637,11 @@ defmodule Pleroma.Web.AdminAPI.UserControllerTest do
       users =
         [
           user_response(admin, %{
-            "deactivated" => false,
+            "is_active" => true,
             "roles" => %{"admin" => true, "moderator" => false}
           }),
           user_response(second_admin, %{
-            "deactivated" => false,
+            "is_active" => true,
             "roles" => %{"admin" => true, "moderator" => false}
           })
         ]
@@ -723,7 +666,7 @@ defmodule Pleroma.Web.AdminAPI.UserControllerTest do
                "page_size" => 50,
                "users" => [
                  user_response(moderator, %{
-                   "deactivated" => false,
+                   "is_active" => true,
                    "roles" => %{"admin" => false, "moderator" => true}
                  })
                ]
@@ -816,8 +759,8 @@ defmodule Pleroma.Web.AdminAPI.UserControllerTest do
     end
 
     test "`active` filters out users pending approval", %{token: token} do
-      insert(:user, approval_pending: true)
-      %{id: user_id} = insert(:user, approval_pending: false)
+      insert(:user, is_approved: false)
+      %{id: user_id} = insert(:user, is_approved: true)
       %{id: admin_id} = token.user
 
       conn =
@@ -839,10 +782,10 @@ defmodule Pleroma.Web.AdminAPI.UserControllerTest do
     test "it works with multiple filters" do
       admin = insert(:user, nickname: "john", is_admin: true)
       token = insert(:oauth_admin_token, user: admin)
-      user = insert(:user, nickname: "bob", local: false, deactivated: true)
+      user = insert(:user, nickname: "bob", local: false, is_active: false)
 
-      insert(:user, nickname: "ken", local: true, deactivated: true)
-      insert(:user, nickname: "bobb", local: false, deactivated: false)
+      insert(:user, nickname: "ken", local: true, is_active: false)
+      insert(:user, nickname: "bobb", local: false, is_active: true)
 
       conn =
         build_conn()
@@ -873,8 +816,8 @@ defmodule Pleroma.Web.AdminAPI.UserControllerTest do
   end
 
   test "PATCH /api/pleroma/admin/users/activate", %{admin: admin, conn: conn} do
-    user_one = insert(:user, deactivated: true)
-    user_two = insert(:user, deactivated: true)
+    user_one = insert(:user, is_active: false)
+    user_two = insert(:user, is_active: false)
 
     conn =
       patch(
@@ -884,7 +827,7 @@ defmodule Pleroma.Web.AdminAPI.UserControllerTest do
       )
 
     response = json_response(conn, 200)
-    assert Enum.map(response["users"], & &1["deactivated"]) == [false, false]
+    assert Enum.map(response["users"], & &1["is_active"]) == [true, true]
 
     log_entry = Repo.one(ModerationLog)
 
@@ -893,8 +836,8 @@ defmodule Pleroma.Web.AdminAPI.UserControllerTest do
   end
 
   test "PATCH /api/pleroma/admin/users/deactivate", %{admin: admin, conn: conn} do
-    user_one = insert(:user, deactivated: false)
-    user_two = insert(:user, deactivated: false)
+    user_one = insert(:user, is_active: true)
+    user_two = insert(:user, is_active: true)
 
     conn =
       patch(
@@ -904,7 +847,7 @@ defmodule Pleroma.Web.AdminAPI.UserControllerTest do
       )
 
     response = json_response(conn, 200)
-    assert Enum.map(response["users"], & &1["deactivated"]) == [true, true]
+    assert Enum.map(response["users"], & &1["is_active"]) == [false, false]
 
     log_entry = Repo.one(ModerationLog)
 
@@ -913,8 +856,8 @@ defmodule Pleroma.Web.AdminAPI.UserControllerTest do
   end
 
   test "PATCH /api/pleroma/admin/users/approve", %{admin: admin, conn: conn} do
-    user_one = insert(:user, approval_pending: true)
-    user_two = insert(:user, approval_pending: true)
+    user_one = insert(:user, is_approved: false)
+    user_two = insert(:user, is_approved: false)
 
     conn =
       patch(
@@ -924,7 +867,7 @@ defmodule Pleroma.Web.AdminAPI.UserControllerTest do
       )
 
     response = json_response(conn, 200)
-    assert Enum.map(response["users"], & &1["approval_pending"]) == [false, false]
+    assert Enum.map(response["users"], & &1["is_approved"]) == [true, true]
 
     log_entry = Repo.one(ModerationLog)
 
@@ -940,7 +883,7 @@ defmodule Pleroma.Web.AdminAPI.UserControllerTest do
     assert json_response(conn, 200) ==
              user_response(
                user,
-               %{"deactivated" => !user.deactivated}
+               %{"is_active" => !user.is_active}
              )
 
     log_entry = Repo.one(ModerationLog)
@@ -951,7 +894,7 @@ defmodule Pleroma.Web.AdminAPI.UserControllerTest do
 
   defp user_response(user, attrs \\ %{}) do
     %{
-      "deactivated" => user.deactivated,
+      "is_active" => user.is_active,
       "id" => user.id,
       "email" => user.email,
       "nickname" => user.nickname,
@@ -960,8 +903,8 @@ defmodule Pleroma.Web.AdminAPI.UserControllerTest do
       "tags" => [],
       "avatar" => User.avatar_url(user) |> MediaProxy.url(),
       "display_name" => HTML.strip_tags(user.name || user.nickname),
-      "confirmation_pending" => false,
-      "approval_pending" => false,
+      "is_confirmed" => true,
+      "is_approved" => true,
       "url" => user.ap_id,
       "registration_reason" => nil,
       "actor_type" => "Person"