Merge branch 'develop' into openapi/admin/config
authorEgor Kislitsyn <egor@kislitsyn.com>
Thu, 4 Jun 2020 09:28:00 +0000 (13:28 +0400)
committerEgor Kislitsyn <egor@kislitsyn.com>
Thu, 4 Jun 2020 09:28:00 +0000 (13:28 +0400)
1  2 
lib/pleroma/web/admin_api/controllers/admin_api_controller.ex
lib/pleroma/web/router.ex
test/web/admin_api/controllers/admin_api_controller_test.exs

index 52900026f85cb5375faa5530deecc9babc2a7e0a,467d05375e3e98c53510f5c492bfdddb69b22d07..bf24581ccc8c0966e64b1da1319e554f96516dcf
@@@ -7,8 -7,8 +7,7 @@@ defmodule Pleroma.Web.AdminAPI.AdminAPI
  
    import Pleroma.Web.ControllerHelper, only: [json_response: 3]
  
-   alias Pleroma.Activity
    alias Pleroma.Config
 -  alias Pleroma.ConfigDB
    alias Pleroma.MFA
    alias Pleroma.ModerationLog
    alias Pleroma.Plugs.OAuthScopesPlug
    alias Pleroma.Web.ActivityPub.Builder
    alias Pleroma.Web.ActivityPub.Pipeline
    alias Pleroma.Web.ActivityPub.Relay
-   alias Pleroma.Web.ActivityPub.Utils
    alias Pleroma.Web.AdminAPI
    alias Pleroma.Web.AdminAPI.AccountView
 -  alias Pleroma.Web.AdminAPI.ConfigView
    alias Pleroma.Web.AdminAPI.ModerationLogView
-   alias Pleroma.Web.AdminAPI.Report
-   alias Pleroma.Web.AdminAPI.ReportView
    alias Pleroma.Web.AdminAPI.Search
-   alias Pleroma.Web.CommonAPI
    alias Pleroma.Web.Endpoint
-   alias Pleroma.Web.MastodonAPI
-   alias Pleroma.Web.MastodonAPI.AppView
-   alias Pleroma.Web.OAuth.App
    alias Pleroma.Web.Router
  
    require Logger
      %{scopes: ["write"], admin: true}
      when action in [
             :restart,
 -           :config_update,
             :resend_confirmation_email,
             :confirm_email,
-            :oauth_app_create,
-            :oauth_app_list,
-            :oauth_app_update,
-            :oauth_app_delete,
             :reload_emoji
           ]
    )
Simple merge
index bd44ffed30c6c23a05d2d969927f56cdd5e2ee8c,a1bff5688aeea9a0aec89f84505ee7e6cc46b60d..f4c37ae6e3a579ebe4849048af2bff8ca99882b1
@@@ -1317,392 -1197,1175 +1196,6 @@@ defmodule Pleroma.Web.AdminAPI.AdminAPI
      end
    end
  
-   describe "POST /api/pleroma/admin/users/invite_token" do
-     test "without options", %{conn: conn} do
-       conn = post(conn, "/api/pleroma/admin/users/invite_token")
 -  describe "GET /api/pleroma/admin/config" do
 -    setup do: clear_config(:configurable_from_database, true)
--
-       invite_json = json_response(conn, 200)
-       invite = UserInviteToken.find_by_token!(invite_json["token"])
-       refute invite.used
-       refute invite.expires_at
-       refute invite.max_use
-       assert invite.invite_type == "one_time"
 -    test "when configuration from database is off", %{conn: conn} do
 -      Config.put(:configurable_from_database, false)
 -      conn = get(conn, "/api/pleroma/admin/config")
 -
 -      assert json_response(conn, 400) ==
 -               %{
 -                 "error" => "To use this endpoint you need to enable configuration from database."
 -               }
--    end
--
-     test "with expires_at", %{conn: conn} do
-       conn =
-         post(conn, "/api/pleroma/admin/users/invite_token", %{
-           "expires_at" => Date.to_string(Date.utc_today())
-         })
 -    test "with settings only in db", %{conn: conn} do
 -      config1 = insert(:config)
 -      config2 = insert(:config)
--
-       invite_json = json_response(conn, 200)
-       invite = UserInviteToken.find_by_token!(invite_json["token"])
 -      conn = get(conn, "/api/pleroma/admin/config", %{"only_db" => true})
--
-       refute invite.used
-       assert invite.expires_at == Date.utc_today()
-       refute invite.max_use
-       assert invite.invite_type == "date_limited"
 -      %{
 -        "configs" => [
 -          %{
 -            "group" => ":pleroma",
 -            "key" => key1,
 -            "value" => _
 -          },
 -          %{
 -            "group" => ":pleroma",
 -            "key" => key2,
 -            "value" => _
 -          }
 -        ]
 -      } = json_response(conn, 200)
 -
 -      assert key1 == config1.key
 -      assert key2 == config2.key
--    end
--
-     test "with max_use", %{conn: conn} do
-       conn = post(conn, "/api/pleroma/admin/users/invite_token", %{"max_use" => 150})
 -    test "db is added to settings that are in db", %{conn: conn} do
 -      _config = insert(:config, key: ":instance", value: ConfigDB.to_binary(name: "Some name"))
--
-       invite_json = json_response(conn, 200)
-       invite = UserInviteToken.find_by_token!(invite_json["token"])
-       refute invite.used
-       refute invite.expires_at
-       assert invite.max_use == 150
-       assert invite.invite_type == "reusable"
 -      %{"configs" => configs} =
 -        conn
 -        |> get("/api/pleroma/admin/config")
 -        |> json_response(200)
 -
 -      [instance_config] =
 -        Enum.filter(configs, fn %{"group" => group, "key" => key} ->
 -          group == ":pleroma" and key == ":instance"
 -        end)
 -
 -      assert instance_config["db"] == [":name"]
--    end
--
-     test "with max use and expires_at", %{conn: conn} do
-       conn =
-         post(conn, "/api/pleroma/admin/users/invite_token", %{
-           "max_use" => 150,
-           "expires_at" => Date.to_string(Date.utc_today())
-         })
 -    test "merged default setting with db settings", %{conn: conn} do
 -      config1 = insert(:config)
 -      config2 = insert(:config)
--
-       invite_json = json_response(conn, 200)
-       invite = UserInviteToken.find_by_token!(invite_json["token"])
-       refute invite.used
-       assert invite.expires_at == Date.utc_today()
-       assert invite.max_use == 150
-       assert invite.invite_type == "reusable_date_limited"
 -      config3 =
 -        insert(:config,
 -          value: ConfigDB.to_binary(k1: :v1, k2: :v2)
 -        )
 -
 -      %{"configs" => configs} =
 -        conn
 -        |> get("/api/pleroma/admin/config")
 -        |> json_response(200)
 -
 -      assert length(configs) > 3
 -
 -      received_configs =
 -        Enum.filter(configs, fn %{"group" => group, "key" => key} ->
 -          group == ":pleroma" and key in [config1.key, config2.key, config3.key]
 -        end)
 -
 -      assert length(received_configs) == 3
 -
 -      db_keys =
 -        config3.value
 -        |> ConfigDB.from_binary()
 -        |> Keyword.keys()
 -        |> ConfigDB.convert()
 -
 -      Enum.each(received_configs, fn %{"value" => value, "db" => db} ->
 -        assert db in [[config1.key], [config2.key], db_keys]
 -
 -        assert value in [
 -                 ConfigDB.from_binary_with_convert(config1.value),
 -                 ConfigDB.from_binary_with_convert(config2.value),
 -                 ConfigDB.from_binary_with_convert(config3.value)
 -               ]
 -      end)
 -    end
 -
 -    test "subkeys with full update right merge", %{conn: conn} do
 -      config1 =
 -        insert(:config,
 -          key: ":emoji",
 -          value: ConfigDB.to_binary(groups: [a: 1, b: 2], key: [a: 1])
 -        )
 -
 -      config2 =
 -        insert(:config,
 -          key: ":assets",
 -          value: ConfigDB.to_binary(mascots: [a: 1, b: 2], key: [a: 1])
 -        )
 -
 -      %{"configs" => configs} =
 -        conn
 -        |> get("/api/pleroma/admin/config")
 -        |> json_response(200)
 -
 -      vals =
 -        Enum.filter(configs, fn %{"group" => group, "key" => key} ->
 -          group == ":pleroma" and key in [config1.key, config2.key]
 -        end)
 -
 -      emoji = Enum.find(vals, fn %{"key" => key} -> key == ":emoji" end)
 -      assets = Enum.find(vals, fn %{"key" => key} -> key == ":assets" end)
 -
 -      emoji_val = ConfigDB.transform_with_out_binary(emoji["value"])
 -      assets_val = ConfigDB.transform_with_out_binary(assets["value"])
 -
 -      assert emoji_val[:groups] == [a: 1, b: 2]
 -      assert assets_val[:mascots] == [a: 1, b: 2]
--    end
--  end
--
-   describe "GET /api/pleroma/admin/users/invites" do
-     test "no invites", %{conn: conn} do
-       conn = get(conn, "/api/pleroma/admin/users/invites")
 -  test "POST /api/pleroma/admin/config error", %{conn: conn} do
 -    conn = post(conn, "/api/pleroma/admin/config", %{"configs" => []})
--
-       assert json_response(conn, 200) == %{"invites" => []}
 -    assert json_response(conn, 400) ==
 -             %{"error" => "To use this endpoint you need to enable configuration from database."}
 -  end
 -
 -  describe "POST /api/pleroma/admin/config" do
 -    setup do
 -      http = Application.get_env(:pleroma, :http)
 -
 -      on_exit(fn ->
 -        Application.delete_env(:pleroma, :key1)
 -        Application.delete_env(:pleroma, :key2)
 -        Application.delete_env(:pleroma, :key3)
 -        Application.delete_env(:pleroma, :key4)
 -        Application.delete_env(:pleroma, :keyaa1)
 -        Application.delete_env(:pleroma, :keyaa2)
 -        Application.delete_env(:pleroma, Pleroma.Web.Endpoint.NotReal)
 -        Application.delete_env(:pleroma, Pleroma.Captcha.NotReal)
 -        Application.put_env(:pleroma, :http, http)
 -        Application.put_env(:tesla, :adapter, Tesla.Mock)
 -        Restarter.Pleroma.refresh()
 -      end)
--    end
--
-     test "with invite", %{conn: conn} do
-       {:ok, invite} = UserInviteToken.create_invite()
 -    setup do: clear_config(:configurable_from_database, true)
--
-       conn = get(conn, "/api/pleroma/admin/users/invites")
 -    @tag capture_log: true
 -    test "create new config setting in db", %{conn: conn} do
 -      ueberauth = Application.get_env(:ueberauth, Ueberauth)
 -      on_exit(fn -> Application.put_env(:ueberauth, Ueberauth, ueberauth) end)
 -
 -      conn =
 -        post(conn, "/api/pleroma/admin/config", %{
 -          configs: [
 -            %{group: ":pleroma", key: ":key1", value: "value1"},
 -            %{
 -              group: ":ueberauth",
 -              key: "Ueberauth",
 -              value: [%{"tuple" => [":consumer_secret", "aaaa"]}]
 -            },
 -            %{
 -              group: ":pleroma",
 -              key: ":key2",
 -              value: %{
 -                ":nested_1" => "nested_value1",
 -                ":nested_2" => [
 -                  %{":nested_22" => "nested_value222"},
 -                  %{":nested_33" => %{":nested_44" => "nested_444"}}
 -                ]
 -              }
 -            },
 -            %{
 -              group: ":pleroma",
 -              key: ":key3",
 -              value: [
 -                %{"nested_3" => ":nested_3", "nested_33" => "nested_33"},
 -                %{"nested_4" => true}
 -              ]
 -            },
 -            %{
 -              group: ":pleroma",
 -              key: ":key4",
 -              value: %{":nested_5" => ":upload", "endpoint" => "https://example.com"}
 -            },
 -            %{
 -              group: ":idna",
 -              key: ":key5",
 -              value: %{"tuple" => ["string", "Pleroma.Captcha.NotReal", []]}
 -            }
 -          ]
 -        })
--
--      assert json_response(conn, 200) == %{
-                "invites" => [
 -               "configs" => [
--                 %{
-                    "expires_at" => nil,
-                    "id" => invite.id,
-                    "invite_type" => "one_time",
-                    "max_use" => nil,
-                    "token" => invite.token,
-                    "used" => false,
-                    "uses" => 0
 -                   "group" => ":pleroma",
 -                   "key" => ":key1",
 -                   "value" => "value1",
 -                   "db" => [":key1"]
 -                 },
 -                 %{
 -                   "group" => ":ueberauth",
 -                   "key" => "Ueberauth",
 -                   "value" => [%{"tuple" => [":consumer_secret", "aaaa"]}],
 -                   "db" => [":consumer_secret"]
 -                 },
 -                 %{
 -                   "group" => ":pleroma",
 -                   "key" => ":key2",
 -                   "value" => %{
 -                     ":nested_1" => "nested_value1",
 -                     ":nested_2" => [
 -                       %{":nested_22" => "nested_value222"},
 -                       %{":nested_33" => %{":nested_44" => "nested_444"}}
 -                     ]
 -                   },
 -                   "db" => [":key2"]
 -                 },
 -                 %{
 -                   "group" => ":pleroma",
 -                   "key" => ":key3",
 -                   "value" => [
 -                     %{"nested_3" => ":nested_3", "nested_33" => "nested_33"},
 -                     %{"nested_4" => true}
 -                   ],
 -                   "db" => [":key3"]
 -                 },
 -                 %{
 -                   "group" => ":pleroma",
 -                   "key" => ":key4",
 -                   "value" => %{"endpoint" => "https://example.com", ":nested_5" => ":upload"},
 -                   "db" => [":key4"]
 -                 },
 -                 %{
 -                   "group" => ":idna",
 -                   "key" => ":key5",
 -                   "value" => %{"tuple" => ["string", "Pleroma.Captcha.NotReal", []]},
 -                   "db" => [":key5"]
--                 }
 -               ]
 -             }
 -
 -      assert Application.get_env(:pleroma, :key1) == "value1"
 -
 -      assert Application.get_env(:pleroma, :key2) == %{
 -               nested_1: "nested_value1",
 -               nested_2: [
 -                 %{nested_22: "nested_value222"},
 -                 %{nested_33: %{nested_44: "nested_444"}}
--               ]
 -             }
 -
 -      assert Application.get_env(:pleroma, :key3) == [
 -               %{"nested_3" => :nested_3, "nested_33" => "nested_33"},
 -               %{"nested_4" => true}
 -             ]
 -
 -      assert Application.get_env(:pleroma, :key4) == %{
 -               "endpoint" => "https://example.com",
 -               nested_5: :upload
--             }
 -
 -      assert Application.get_env(:idna, :key5) == {"string", Pleroma.Captcha.NotReal, []}
--    end
-   end
--
-   describe "POST /api/pleroma/admin/users/revoke_invite" do
-     test "with token", %{conn: conn} do
-       {:ok, invite} = UserInviteToken.create_invite()
 -    test "save configs setting without explicit key", %{conn: conn} do
 -      level = Application.get_env(:quack, :level)
 -      meta = Application.get_env(:quack, :meta)
 -      webhook_url = Application.get_env(:quack, :webhook_url)
--
-       conn = post(conn, "/api/pleroma/admin/users/revoke_invite", %{"token" => invite.token})
 -      on_exit(fn ->
 -        Application.put_env(:quack, :level, level)
 -        Application.put_env(:quack, :meta, meta)
 -        Application.put_env(:quack, :webhook_url, webhook_url)
 -      end)
 -
 -      conn =
 -        post(conn, "/api/pleroma/admin/config", %{
 -          configs: [
 -            %{
 -              group: ":quack",
 -              key: ":level",
 -              value: ":info"
 -            },
 -            %{
 -              group: ":quack",
 -              key: ":meta",
 -              value: [":none"]
 -            },
 -            %{
 -              group: ":quack",
 -              key: ":webhook_url",
 -              value: "https://hooks.slack.com/services/KEY"
 -            }
 -          ]
 -        })
--
--      assert json_response(conn, 200) == %{
-                "expires_at" => nil,
-                "id" => invite.id,
-                "invite_type" => "one_time",
-                "max_use" => nil,
-                "token" => invite.token,
-                "used" => true,
-                "uses" => 0
 -               "configs" => [
 -                 %{
 -                   "group" => ":quack",
 -                   "key" => ":level",
 -                   "value" => ":info",
 -                   "db" => [":level"]
 -                 },
 -                 %{
 -                   "group" => ":quack",
 -                   "key" => ":meta",
 -                   "value" => [":none"],
 -                   "db" => [":meta"]
 -                 },
 -                 %{
 -                   "group" => ":quack",
 -                   "key" => ":webhook_url",
 -                   "value" => "https://hooks.slack.com/services/KEY",
 -                   "db" => [":webhook_url"]
 -                 }
 -               ]
--             }
 -
 -      assert Application.get_env(:quack, :level) == :info
 -      assert Application.get_env(:quack, :meta) == [:none]
 -      assert Application.get_env(:quack, :webhook_url) == "https://hooks.slack.com/services/KEY"
--    end
--
-     test "with invalid token", %{conn: conn} do
-       conn = post(conn, "/api/pleroma/admin/users/revoke_invite", %{"token" => "foo"})
 -    test "saving config with partial update", %{conn: conn} do
 -      config = insert(:config, key: ":key1", value: :erlang.term_to_binary(key1: 1, key2: 2))
--
-       assert json_response(conn, :not_found) == %{"error" => "Not found"}
 -      conn =
 -        post(conn, "/api/pleroma/admin/config", %{
 -          configs: [
 -            %{group: config.group, key: config.key, value: [%{"tuple" => [":key3", 3]}]}
 -          ]
 -        })
 -
 -      assert json_response(conn, 200) == %{
 -               "configs" => [
 -                 %{
 -                   "group" => ":pleroma",
 -                   "key" => ":key1",
 -                   "value" => [
 -                     %{"tuple" => [":key1", 1]},
 -                     %{"tuple" => [":key2", 2]},
 -                     %{"tuple" => [":key3", 3]}
 -                   ],
 -                   "db" => [":key1", ":key2", ":key3"]
 -                 }
 -               ]
 -             }
--    end
-   end
--
-   describe "GET /api/pleroma/admin/reports/:id" do
-     test "returns report by its id", %{conn: conn} do
-       [reporter, target_user] = insert_pair(:user)
-       activity = insert(:note_activity, user: target_user)
 -    test "saving config which need pleroma reboot", %{conn: conn} do
 -      chat = Config.get(:chat)
 -      on_exit(fn -> Config.put(:chat, chat) end)
--
-       {:ok, %{id: report_id}} =
-         CommonAPI.report(reporter, %{
-           account_id: target_user.id,
-           comment: "I feel offended",
-           status_ids: [activity.id]
-         })
 -      assert post(
 -               conn,
 -               "/api/pleroma/admin/config",
 -               %{
 -                 configs: [
 -                   %{group: ":pleroma", key: ":chat", value: [%{"tuple" => [":enabled", true]}]}
 -                 ]
 -               }
 -             )
 -             |> json_response(200) == %{
 -               "configs" => [
 -                 %{
 -                   "db" => [":enabled"],
 -                   "group" => ":pleroma",
 -                   "key" => ":chat",
 -                   "value" => [%{"tuple" => [":enabled", true]}]
 -                 }
 -               ],
 -               "need_reboot" => true
 -             }
--
-       response =
 -      configs =
--        conn
-         |> get("/api/pleroma/admin/reports/#{report_id}")
-         |> json_response(:ok)
 -        |> get("/api/pleroma/admin/config")
 -        |> json_response(200)
--
-       assert response["id"] == report_id
-     end
 -      assert configs["need_reboot"]
--
-     test "returns 404 when report id is invalid", %{conn: conn} do
-       conn = get(conn, "/api/pleroma/admin/reports/test")
 -      capture_log(fn ->
 -        assert conn |> get("/api/pleroma/admin/restart") |> json_response(200) == %{}
 -      end) =~ "pleroma restarted"
--
-       assert json_response(conn, :not_found) == %{"error" => "Not found"}
 -      configs =
 -        conn
 -        |> get("/api/pleroma/admin/config")
 -        |> json_response(200)
 -
 -      assert configs["need_reboot"] == false
--    end
-   end
--
-   describe "PATCH /api/pleroma/admin/reports" do
-     setup do
-       [reporter, target_user] = insert_pair(:user)
-       activity = insert(:note_activity, user: target_user)
 -    test "update setting which need reboot, don't change reboot flag until reboot", %{conn: conn} do
 -      chat = Config.get(:chat)
 -      on_exit(fn -> Config.put(:chat, chat) end)
--
-       {:ok, %{id: report_id}} =
-         CommonAPI.report(reporter, %{
-           account_id: target_user.id,
-           comment: "I feel offended",
-           status_ids: [activity.id]
-         })
 -      assert post(
 -               conn,
 -               "/api/pleroma/admin/config",
 -               %{
 -                 configs: [
 -                   %{group: ":pleroma", key: ":chat", value: [%{"tuple" => [":enabled", true]}]}
 -                 ]
 -               }
 -             )
 -             |> json_response(200) == %{
 -               "configs" => [
 -                 %{
 -                   "db" => [":enabled"],
 -                   "group" => ":pleroma",
 -                   "key" => ":chat",
 -                   "value" => [%{"tuple" => [":enabled", true]}]
 -                 }
 -               ],
 -               "need_reboot" => true
 -             }
--
-       {:ok, %{id: second_report_id}} =
-         CommonAPI.report(reporter, %{
-           account_id: target_user.id,
-           comment: "I feel very offended",
-           status_ids: [activity.id]
-         })
 -      assert post(conn, "/api/pleroma/admin/config", %{
 -               configs: [
 -                 %{group: ":pleroma", key: ":key1", value: [%{"tuple" => [":key3", 3]}]}
 -               ]
 -             })
 -             |> json_response(200) == %{
 -               "configs" => [
 -                 %{
 -                   "group" => ":pleroma",
 -                   "key" => ":key1",
 -                   "value" => [
 -                     %{"tuple" => [":key3", 3]}
 -                   ],
 -                   "db" => [":key3"]
 -                 }
 -               ],
 -               "need_reboot" => true
 -             }
--
-       %{
-         id: report_id,
-         second_report_id: second_report_id
-       }
 -      capture_log(fn ->
 -        assert conn |> get("/api/pleroma/admin/restart") |> json_response(200) == %{}
 -      end) =~ "pleroma restarted"
 -
 -      configs =
 -        conn
 -        |> get("/api/pleroma/admin/config")
 -        |> json_response(200)
 -
 -      assert configs["need_reboot"] == false
--    end
--
-     test "requires admin:write:reports scope", %{conn: conn, id: id, admin: admin} do
-       read_token = insert(:oauth_token, user: admin, scopes: ["admin:read"])
-       write_token = insert(:oauth_token, user: admin, scopes: ["admin:write:reports"])
 -    test "saving config with nested merge", %{conn: conn} do
 -      config =
 -        insert(:config, key: ":key1", value: :erlang.term_to_binary(key1: 1, key2: [k1: 1, k2: 2]))
--
-       response =
-         conn
-         |> assign(:token, read_token)
-         |> patch("/api/pleroma/admin/reports", %{
-           "reports" => [%{"state" => "resolved", "id" => id}]
 -      conn =
 -        post(conn, "/api/pleroma/admin/config", %{
 -          configs: [
 -            %{
 -              group: config.group,
 -              key: config.key,
 -              value: [
 -                %{"tuple" => [":key3", 3]},
 -                %{
 -                  "tuple" => [
 -                    ":key2",
 -                    [
 -                      %{"tuple" => [":k2", 1]},
 -                      %{"tuple" => [":k3", 3]}
 -                    ]
 -                  ]
 -                }
 -              ]
 -            }
 -          ]
--        })
-         |> json_response(403)
--
-       assert response == %{
-                "error" => "Insufficient permissions: admin:write:reports."
 -      assert json_response(conn, 200) == %{
 -               "configs" => [
 -                 %{
 -                   "group" => ":pleroma",
 -                   "key" => ":key1",
 -                   "value" => [
 -                     %{"tuple" => [":key1", 1]},
 -                     %{"tuple" => [":key3", 3]},
 -                     %{
 -                       "tuple" => [
 -                         ":key2",
 -                         [
 -                           %{"tuple" => [":k1", 1]},
 -                           %{"tuple" => [":k2", 1]},
 -                           %{"tuple" => [":k3", 3]}
 -                         ]
 -                       ]
 -                     }
 -                   ],
 -                   "db" => [":key1", ":key3", ":key2"]
 -                 }
 -               ]
--             }
-       conn
-       |> assign(:token, write_token)
-       |> patch("/api/pleroma/admin/reports", %{
-         "reports" => [%{"state" => "resolved", "id" => id}]
-       })
-       |> json_response(:no_content)
--    end
-     test "mark report as resolved", %{conn: conn, id: id, admin: admin} do
-       conn
-       |> patch("/api/pleroma/admin/reports", %{
-         "reports" => [
-           %{"state" => "resolved", "id" => id}
-         ]
-       })
-       |> json_response(:no_content)
--
-       activity = Activity.get_by_id(id)
-       assert activity.data["state"] == "resolved"
 -    test "saving special atoms", %{conn: conn} do
 -      conn =
 -        post(conn, "/api/pleroma/admin/config", %{
 -          "configs" => [
 -            %{
 -              "group" => ":pleroma",
 -              "key" => ":key1",
 -              "value" => [
 -                %{
 -                  "tuple" => [
 -                    ":ssl_options",
 -                    [%{"tuple" => [":versions", [":tlsv1", ":tlsv1.1", ":tlsv1.2"]]}]
 -                  ]
 -                }
 -              ]
 -            }
 -          ]
 -        })
--
-       log_entry = Repo.one(ModerationLog)
 -      assert json_response(conn, 200) == %{
 -               "configs" => [
 -                 %{
 -                   "group" => ":pleroma",
 -                   "key" => ":key1",
 -                   "value" => [
 -                     %{
 -                       "tuple" => [
 -                         ":ssl_options",
 -                         [%{"tuple" => [":versions", [":tlsv1", ":tlsv1.1", ":tlsv1.2"]]}]
 -                       ]
 -                     }
 -                   ],
 -                   "db" => [":ssl_options"]
 -                 }
 -               ]
 -             }
--
-       assert ModerationLog.get_log_entry_message(log_entry) ==
-                "@#{admin.nickname} updated report ##{id} with 'resolved' state"
 -      assert Application.get_env(:pleroma, :key1) == [
 -               ssl_options: [versions: [:tlsv1, :"tlsv1.1", :"tlsv1.2"]]
 -             ]
--    end
--
-     test "closes report", %{conn: conn, id: id, admin: admin} do
-       conn
-       |> patch("/api/pleroma/admin/reports", %{
-         "reports" => [
-           %{"state" => "closed", "id" => id}
-         ]
-       })
-       |> json_response(:no_content)
 -    test "saving full setting if value is in full_key_update list", %{conn: conn} do
 -      backends = Application.get_env(:logger, :backends)
 -      on_exit(fn -> Application.put_env(:logger, :backends, backends) end)
--
-       activity = Activity.get_by_id(id)
-       assert activity.data["state"] == "closed"
 -      config =
 -        insert(:config,
 -          group: ":logger",
 -          key: ":backends",
 -          value: :erlang.term_to_binary([])
 -        )
--
-       log_entry = Repo.one(ModerationLog)
 -      Pleroma.Config.TransferTask.load_and_update_env([], false)
--
-       assert ModerationLog.get_log_entry_message(log_entry) ==
-                "@#{admin.nickname} updated report ##{id} with 'closed' state"
-     end
 -      assert Application.get_env(:logger, :backends) == []
--
-     test "returns 400 when state is unknown", %{conn: conn, id: id} do
--      conn =
-         conn
-         |> patch("/api/pleroma/admin/reports", %{
-           "reports" => [
-             %{"state" => "test", "id" => id}
 -        post(conn, "/api/pleroma/admin/config", %{
 -          configs: [
 -            %{
 -              group: config.group,
 -              key: config.key,
 -              value: [":console"]
 -            }
--          ]
--        })
--
-       assert hd(json_response(conn, :bad_request))["error"] == "Unsupported state"
 -      assert json_response(conn, 200) == %{
 -               "configs" => [
 -                 %{
 -                   "group" => ":logger",
 -                   "key" => ":backends",
 -                   "value" => [
 -                     ":console"
 -                   ],
 -                   "db" => [":backends"]
 -                 }
 -               ]
 -             }
 -
 -      assert Application.get_env(:logger, :backends) == [
 -               :console
 -             ]
--    end
--
-     test "returns 404 when report is not exist", %{conn: conn} do
 -    test "saving full setting if value is not keyword", %{conn: conn} do
 -      config =
 -        insert(:config,
 -          group: ":tesla",
 -          key: ":adapter",
 -          value: :erlang.term_to_binary(Tesla.Adapter.Hackey)
 -        )
 -
--      conn =
-         conn
-         |> patch("/api/pleroma/admin/reports", %{
-           "reports" => [
-             %{"state" => "closed", "id" => "test"}
 -        post(conn, "/api/pleroma/admin/config", %{
 -          configs: [
 -            %{group: config.group, key: config.key, value: "Tesla.Adapter.Httpc"}
--          ]
--        })
--
-       assert hd(json_response(conn, :bad_request))["error"] == "not_found"
 -      assert json_response(conn, 200) == %{
 -               "configs" => [
 -                 %{
 -                   "group" => ":tesla",
 -                   "key" => ":adapter",
 -                   "value" => "Tesla.Adapter.Httpc",
 -                   "db" => [":adapter"]
 -                 }
 -               ]
 -             }
--    end
--
-     test "updates state of multiple reports", %{
 -    test "update config setting & delete with fallback to default value", %{
--      conn: conn,
-       id: id,
--      admin: admin,
-       second_report_id: second_report_id
 -      token: token
--    } do
-       conn
-       |> patch("/api/pleroma/admin/reports", %{
-         "reports" => [
-           %{"state" => "resolved", "id" => id},
-           %{"state" => "closed", "id" => second_report_id}
-         ]
-       })
-       |> json_response(:no_content)
 -      ueberauth = Application.get_env(:ueberauth, Ueberauth)
 -      config1 = insert(:config, key: ":keyaa1")
 -      config2 = insert(:config, key: ":keyaa2")
--
-       activity = Activity.get_by_id(id)
-       second_activity = Activity.get_by_id(second_report_id)
-       assert activity.data["state"] == "resolved"
-       assert second_activity.data["state"] == "closed"
 -      config3 =
 -        insert(:config,
 -          group: ":ueberauth",
 -          key: "Ueberauth"
 -        )
--
-       [first_log_entry, second_log_entry] = Repo.all(ModerationLog)
 -      conn =
 -        post(conn, "/api/pleroma/admin/config", %{
 -          configs: [
 -            %{group: config1.group, key: config1.key, value: "another_value"},
 -            %{group: config2.group, key: config2.key, value: "another_value"}
 -          ]
 -        })
--
-       assert ModerationLog.get_log_entry_message(first_log_entry) ==
-                "@#{admin.nickname} updated report ##{id} with 'resolved' state"
 -      assert json_response(conn, 200) == %{
 -               "configs" => [
 -                 %{
 -                   "group" => ":pleroma",
 -                   "key" => config1.key,
 -                   "value" => "another_value",
 -                   "db" => [":keyaa1"]
 -                 },
 -                 %{
 -                   "group" => ":pleroma",
 -                   "key" => config2.key,
 -                   "value" => "another_value",
 -                   "db" => [":keyaa2"]
 -                 }
 -               ]
 -             }
--
-       assert ModerationLog.get_log_entry_message(second_log_entry) ==
-                "@#{admin.nickname} updated report ##{second_report_id} with 'closed' state"
-     end
-   end
 -      assert Application.get_env(:pleroma, :keyaa1) == "another_value"
 -      assert Application.get_env(:pleroma, :keyaa2) == "another_value"
 -      assert Application.get_env(:ueberauth, Ueberauth) == ConfigDB.from_binary(config3.value)
--
-   describe "GET /api/pleroma/admin/reports" do
-     test "returns empty response when no reports created", %{conn: conn} do
-       response =
-         conn
-         |> get("/api/pleroma/admin/reports")
-         |> json_response(:ok)
 -      conn =
 -        build_conn()
 -        |> assign(:user, admin)
 -        |> assign(:token, token)
 -        |> post("/api/pleroma/admin/config", %{
 -          configs: [
 -            %{group: config2.group, key: config2.key, delete: true},
 -            %{
 -              group: ":ueberauth",
 -              key: "Ueberauth",
 -              delete: true
 -            }
 -          ]
 -        })
--
-       assert Enum.empty?(response["reports"])
-       assert response["total"] == 0
-     end
 -      assert json_response(conn, 200) == %{
 -               "configs" => []
 -             }
--
-     test "returns reports", %{conn: conn} do
-       [reporter, target_user] = insert_pair(:user)
-       activity = insert(:note_activity, user: target_user)
 -      assert Application.get_env(:ueberauth, Ueberauth) == ueberauth
 -      refute Keyword.has_key?(Application.get_all_env(:pleroma), :keyaa2)
 -    end
--
-       {:ok, %{id: report_id}} =
-         CommonAPI.report(reporter, %{
-           account_id: target_user.id,
-           comment: "I feel offended",
-           status_ids: [activity.id]
 -    test "common config example", %{conn: conn} do
 -      conn =
 -        post(conn, "/api/pleroma/admin/config", %{
 -          configs: [
 -            %{
 -              "group" => ":pleroma",
 -              "key" => "Pleroma.Captcha.NotReal",
 -              "value" => [
 -                %{"tuple" => [":enabled", false]},
 -                %{"tuple" => [":method", "Pleroma.Captcha.Kocaptcha"]},
 -                %{"tuple" => [":seconds_valid", 60]},
 -                %{"tuple" => [":path", ""]},
 -                %{"tuple" => [":key1", nil]},
 -                %{"tuple" => [":partial_chain", "&:hackney_connect.partial_chain/1"]},
 -                %{"tuple" => [":regex1", "~r/https:\/\/example.com/"]},
 -                %{"tuple" => [":regex2", "~r/https:\/\/example.com/u"]},
 -                %{"tuple" => [":regex3", "~r/https:\/\/example.com/i"]},
 -                %{"tuple" => [":regex4", "~r/https:\/\/example.com/s"]},
 -                %{"tuple" => [":name", "Pleroma"]}
 -              ]
 -            }
 -          ]
--        })
--
-       response =
-         conn
-         |> get("/api/pleroma/admin/reports")
-         |> json_response(:ok)
 -      assert Config.get([Pleroma.Captcha.NotReal, :name]) == "Pleroma"
--
-       [report] = response["reports"]
 -      assert json_response(conn, 200) == %{
 -               "configs" => [
 -                 %{
 -                   "group" => ":pleroma",
 -                   "key" => "Pleroma.Captcha.NotReal",
 -                   "value" => [
 -                     %{"tuple" => [":enabled", false]},
 -                     %{"tuple" => [":method", "Pleroma.Captcha.Kocaptcha"]},
 -                     %{"tuple" => [":seconds_valid", 60]},
 -                     %{"tuple" => [":path", ""]},
 -                     %{"tuple" => [":key1", nil]},
 -                     %{"tuple" => [":partial_chain", "&:hackney_connect.partial_chain/1"]},
 -                     %{"tuple" => [":regex1", "~r/https:\\/\\/example.com/"]},
 -                     %{"tuple" => [":regex2", "~r/https:\\/\\/example.com/u"]},
 -                     %{"tuple" => [":regex3", "~r/https:\\/\\/example.com/i"]},
 -                     %{"tuple" => [":regex4", "~r/https:\\/\\/example.com/s"]},
 -                     %{"tuple" => [":name", "Pleroma"]}
 -                   ],
 -                   "db" => [
 -                     ":enabled",
 -                     ":method",
 -                     ":seconds_valid",
 -                     ":path",
 -                     ":key1",
 -                     ":partial_chain",
 -                     ":regex1",
 -                     ":regex2",
 -                     ":regex3",
 -                     ":regex4",
 -                     ":name"
 -                   ]
 -                 }
 -               ]
 -             }
 -    end
--
-       assert length(response["reports"]) == 1
-       assert report["id"] == report_id
 -    test "tuples with more than two values", %{conn: conn} do
 -      conn =
 -        post(conn, "/api/pleroma/admin/config", %{
 -          configs: [
 -            %{
 -              "group" => ":pleroma",
 -              "key" => "Pleroma.Web.Endpoint.NotReal",
 -              "value" => [
 -                %{
 -                  "tuple" => [
 -                    ":http",
 -                    [
 -                      %{
 -                        "tuple" => [
 -                          ":key2",
 -                          [
 -                            %{
 -                              "tuple" => [
 -                                ":_",
 -                                [
 -                                  %{
 -                                    "tuple" => [
 -                                      "/api/v1/streaming",
 -                                      "Pleroma.Web.MastodonAPI.WebsocketHandler",
 -                                      []
 -                                    ]
 -                                  },
 -                                  %{
 -                                    "tuple" => [
 -                                      "/websocket",
 -                                      "Phoenix.Endpoint.CowboyWebSocket",
 -                                      %{
 -                                        "tuple" => [
 -                                          "Phoenix.Transports.WebSocket",
 -                                          %{
 -                                            "tuple" => [
 -                                              "Pleroma.Web.Endpoint",
 -                                              "Pleroma.Web.UserSocket",
 -                                              []
 -                                            ]
 -                                          }
 -                                        ]
 -                                      }
 -                                    ]
 -                                  },
 -                                  %{
 -                                    "tuple" => [
 -                                      ":_",
 -                                      "Phoenix.Endpoint.Cowboy2Handler",
 -                                      %{"tuple" => ["Pleroma.Web.Endpoint", []]}
 -                                    ]
 -                                  }
 -                                ]
 -                              ]
 -                            }
 -                          ]
 -                        ]
 -                      }
 -                    ]
 -                  ]
 -                }
 -              ]
 -            }
 -          ]
 -        })
--
-       assert response["total"] == 1
 -      assert json_response(conn, 200) == %{
 -               "configs" => [
 -                 %{
 -                   "group" => ":pleroma",
 -                   "key" => "Pleroma.Web.Endpoint.NotReal",
 -                   "value" => [
 -                     %{
 -                       "tuple" => [
 -                         ":http",
 -                         [
 -                           %{
 -                             "tuple" => [
 -                               ":key2",
 -                               [
 -                                 %{
 -                                   "tuple" => [
 -                                     ":_",
 -                                     [
 -                                       %{
 -                                         "tuple" => [
 -                                           "/api/v1/streaming",
 -                                           "Pleroma.Web.MastodonAPI.WebsocketHandler",
 -                                           []
 -                                         ]
 -                                       },
 -                                       %{
 -                                         "tuple" => [
 -                                           "/websocket",
 -                                           "Phoenix.Endpoint.CowboyWebSocket",
 -                                           %{
 -                                             "tuple" => [
 -                                               "Phoenix.Transports.WebSocket",
 -                                               %{
 -                                                 "tuple" => [
 -                                                   "Pleroma.Web.Endpoint",
 -                                                   "Pleroma.Web.UserSocket",
 -                                                   []
 -                                                 ]
 -                                               }
 -                                             ]
 -                                           }
 -                                         ]
 -                                       },
 -                                       %{
 -                                         "tuple" => [
 -                                           ":_",
 -                                           "Phoenix.Endpoint.Cowboy2Handler",
 -                                           %{"tuple" => ["Pleroma.Web.Endpoint", []]}
 -                                         ]
 -                                       }
 -                                     ]
 -                                   ]
 -                                 }
 -                               ]
 -                             ]
 -                           }
 -                         ]
 -                       ]
 -                     }
 -                   ],
 -                   "db" => [":http"]
 -                 }
 -               ]
 -             }
--    end
-     test "returns reports with specified state", %{conn: conn} do
-       [reporter, target_user] = insert_pair(:user)
-       activity = insert(:note_activity, user: target_user)
--
-       {:ok, %{id: first_report_id}} =
-         CommonAPI.report(reporter, %{
-           account_id: target_user.id,
-           comment: "I feel offended",
-           status_ids: [activity.id]
 -    test "settings with nesting map", %{conn: conn} do
 -      conn =
 -        post(conn, "/api/pleroma/admin/config", %{
 -          configs: [
 -            %{
 -              "group" => ":pleroma",
 -              "key" => ":key1",
 -              "value" => [
 -                %{"tuple" => [":key2", "some_val"]},
 -                %{
 -                  "tuple" => [
 -                    ":key3",
 -                    %{
 -                      ":max_options" => 20,
 -                      ":max_option_chars" => 200,
 -                      ":min_expiration" => 0,
 -                      ":max_expiration" => 31_536_000,
 -                      "nested" => %{
 -                        ":max_options" => 20,
 -                        ":max_option_chars" => 200,
 -                        ":min_expiration" => 0,
 -                        ":max_expiration" => 31_536_000
 -                      }
 -                    }
 -                  ]
 -                }
 -              ]
 -            }
 -          ]
--        })
--
-       {:ok, %{id: second_report_id}} =
-         CommonAPI.report(reporter, %{
-           account_id: target_user.id,
-           comment: "I don't like this user"
 -      assert json_response(conn, 200) ==
 -               %{
 -                 "configs" => [
 -                   %{
 -                     "group" => ":pleroma",
 -                     "key" => ":key1",
 -                     "value" => [
 -                       %{"tuple" => [":key2", "some_val"]},
 -                       %{
 -                         "tuple" => [
 -                           ":key3",
 -                           %{
 -                             ":max_expiration" => 31_536_000,
 -                             ":max_option_chars" => 200,
 -                             ":max_options" => 20,
 -                             ":min_expiration" => 0,
 -                             "nested" => %{
 -                               ":max_expiration" => 31_536_000,
 -                               ":max_option_chars" => 200,
 -                               ":max_options" => 20,
 -                               ":min_expiration" => 0
 -                             }
 -                           }
 -                         ]
 -                       }
 -                     ],
 -                     "db" => [":key2", ":key3"]
 -                   }
 -                 ]
 -               }
 -    end
 -
 -    test "value as map", %{conn: conn} do
 -      conn =
 -        post(conn, "/api/pleroma/admin/config", %{
 -          configs: [
 -            %{
 -              "group" => ":pleroma",
 -              "key" => ":key1",
 -              "value" => %{"key" => "some_val"}
 -            }
 -          ]
--        })
--
-       CommonAPI.update_report_state(second_report_id, "closed")
 -      assert json_response(conn, 200) ==
 -               %{
 -                 "configs" => [
 -                   %{
 -                     "group" => ":pleroma",
 -                     "key" => ":key1",
 -                     "value" => %{"key" => "some_val"},
 -                     "db" => [":key1"]
 -                   }
 -                 ]
 -               }
 -    end
--
-       response =
-         conn
-         |> get("/api/pleroma/admin/reports", %{
-           "state" => "open"
 -    test "queues key as atom", %{conn: conn} do
 -      conn =
 -        post(conn, "/api/pleroma/admin/config", %{
 -          configs: [
 -            %{
 -              "group" => ":oban",
 -              "key" => ":queues",
 -              "value" => [
 -                %{"tuple" => [":federator_incoming", 50]},
 -                %{"tuple" => [":federator_outgoing", 50]},
 -                %{"tuple" => [":web_push", 50]},
 -                %{"tuple" => [":mailer", 10]},
 -                %{"tuple" => [":transmogrifier", 20]},
 -                %{"tuple" => [":scheduled_activities", 10]},
 -                %{"tuple" => [":background", 5]}
 -              ]
 -            }
 -          ]
--        })
-         |> json_response(:ok)
-       [open_report] = response["reports"]
--
-       assert length(response["reports"]) == 1
-       assert open_report["id"] == first_report_id
 -      assert json_response(conn, 200) == %{
 -               "configs" => [
 -                 %{
 -                   "group" => ":oban",
 -                   "key" => ":queues",
 -                   "value" => [
 -                     %{"tuple" => [":federator_incoming", 50]},
 -                     %{"tuple" => [":federator_outgoing", 50]},
 -                     %{"tuple" => [":web_push", 50]},
 -                     %{"tuple" => [":mailer", 10]},
 -                     %{"tuple" => [":transmogrifier", 20]},
 -                     %{"tuple" => [":scheduled_activities", 10]},
 -                     %{"tuple" => [":background", 5]}
 -                   ],
 -                   "db" => [
 -                     ":federator_incoming",
 -                     ":federator_outgoing",
 -                     ":web_push",
 -                     ":mailer",
 -                     ":transmogrifier",
 -                     ":scheduled_activities",
 -                     ":background"
 -                   ]
 -                 }
 -               ]
 -             }
 -    end
--
-       assert response["total"] == 1
 -    test "delete part of settings by atom subkeys", %{conn: conn} do
 -      config =
 -        insert(:config,
 -          key: ":keyaa1",
 -          value: :erlang.term_to_binary(subkey1: "val1", subkey2: "val2", subkey3: "val3")
 -        )
--
-       response =
-         conn
-         |> get("/api/pleroma/admin/reports", %{
-           "state" => "closed"
 -      conn =
 -        post(conn, "/api/pleroma/admin/config", %{
 -          configs: [
 -            %{
 -              group: config.group,
 -              key: config.key,
 -              subkeys: [":subkey1", ":subkey3"],
 -              delete: true
 -            }
 -          ]
--        })
-         |> json_response(:ok)
--
-       [closed_report] = response["reports"]
 -      assert json_response(conn, 200) == %{
 -               "configs" => [
 -                 %{
 -                   "group" => ":pleroma",
 -                   "key" => ":keyaa1",
 -                   "value" => [%{"tuple" => [":subkey2", "val2"]}],
 -                   "db" => [":subkey2"]
 -                 }
 -               ]
 -             }
 -    end
--
-       assert length(response["reports"]) == 1
-       assert closed_report["id"] == second_report_id
 -    test "proxy tuple localhost", %{conn: conn} do
 -      conn =
 -        post(conn, "/api/pleroma/admin/config", %{
 -          configs: [
 -            %{
 -              group: ":pleroma",
 -              key: ":http",
 -              value: [
 -                %{"tuple" => [":proxy_url", %{"tuple" => [":socks5", "localhost", 1234]}]}
 -              ]
 -            }
 -          ]
 -        })
--
-       assert response["total"] == 1
 -      assert %{
 -               "configs" => [
 -                 %{
 -                   "group" => ":pleroma",
 -                   "key" => ":http",
 -                   "value" => value,
 -                   "db" => db
 -                 }
 -               ]
 -             } = json_response(conn, 200)
--
-       response =
-         conn
-         |> get("/api/pleroma/admin/reports", %{
-           "state" => "resolved"
 -      assert %{"tuple" => [":proxy_url", %{"tuple" => [":socks5", "localhost", 1234]}]} in value
 -      assert ":proxy_url" in db
 -    end
 -
 -    test "proxy tuple domain", %{conn: conn} do
 -      conn =
 -        post(conn, "/api/pleroma/admin/config", %{
 -          configs: [
 -            %{
 -              group: ":pleroma",
 -              key: ":http",
 -              value: [
 -                %{"tuple" => [":proxy_url", %{"tuple" => [":socks5", "domain.com", 1234]}]}
 -              ]
 -            }
 -          ]
--        })
-         |> json_response(:ok)
--
-       assert Enum.empty?(response["reports"])
-       assert response["total"] == 0
-     end
 -      assert %{
 -               "configs" => [
 -                 %{
 -                   "group" => ":pleroma",
 -                   "key" => ":http",
 -                   "value" => value,
 -                   "db" => db
 -                 }
 -               ]
 -             } = json_response(conn, 200)
--
-     test "returns 403 when requested by a non-admin" do
-       user = insert(:user)
-       token = insert(:oauth_token, user: user)
 -      assert %{"tuple" => [":proxy_url", %{"tuple" => [":socks5", "domain.com", 1234]}]} in value
 -      assert ":proxy_url" in db
 -    end
--
 -    test "proxy tuple ip", %{conn: conn} do
--      conn =
-         build_conn()
-         |> assign(:user, user)
-         |> assign(:token, token)
-         |> get("/api/pleroma/admin/reports")
 -        post(conn, "/api/pleroma/admin/config", %{
 -          configs: [
 -            %{
 -              group: ":pleroma",
 -              key: ":http",
 -              value: [
 -                %{"tuple" => [":proxy_url", %{"tuple" => [":socks5", "127.0.0.1", 1234]}]}
 -              ]
 -            }
 -          ]
 -        })
--
-       assert json_response(conn, :forbidden) ==
-                %{"error" => "User is not an admin or OAuth admin scope is not granted."}
 -      assert %{
 -               "configs" => [
 -                 %{
 -                   "group" => ":pleroma",
 -                   "key" => ":http",
 -                   "value" => value,
 -                   "db" => db
 -                 }
 -               ]
 -             } = json_response(conn, 200)
 -
 -      assert %{"tuple" => [":proxy_url", %{"tuple" => [":socks5", "127.0.0.1", 1234]}]} in value
 -      assert ":proxy_url" in db
--    end
--
-     test "returns 403 when requested by anonymous" do
-       conn = get(build_conn(), "/api/pleroma/admin/reports")
 -    @tag capture_log: true
 -    test "doesn't set keys not in the whitelist", %{conn: conn} do
 -      clear_config(:database_config_whitelist, [
 -        {:pleroma, :key1},
 -        {:pleroma, :key2},
 -        {:pleroma, Pleroma.Captcha.NotReal},
 -        {:not_real}
 -      ])
--
-       assert json_response(conn, :forbidden) == %{"error" => "Invalid credentials."}
 -      post(conn, "/api/pleroma/admin/config", %{
 -        configs: [
 -          %{group: ":pleroma", key: ":key1", value: "value1"},
 -          %{group: ":pleroma", key: ":key2", value: "value2"},
 -          %{group: ":pleroma", key: ":key3", value: "value3"},
 -          %{group: ":pleroma", key: "Pleroma.Web.Endpoint.NotReal", value: "value4"},
 -          %{group: ":pleroma", key: "Pleroma.Captcha.NotReal", value: "value5"},
 -          %{group: ":not_real", key: ":anything", value: "value6"}
 -        ]
 -      })
 -
 -      assert Application.get_env(:pleroma, :key1) == "value1"
 -      assert Application.get_env(:pleroma, :key2) == "value2"
 -      assert Application.get_env(:pleroma, :key3) == nil
 -      assert Application.get_env(:pleroma, Pleroma.Web.Endpoint.NotReal) == nil
 -      assert Application.get_env(:pleroma, Pleroma.Captcha.NotReal) == "value5"
 -      assert Application.get_env(:not_real, :anything) == "value6"
--    end
--  end
--
    describe "GET /api/pleroma/admin/restart" do
      setup do: clear_config(:configurable_from_database, true)
  
      end
    end
  
-   describe "POST /reports/:id/notes" do
-     setup %{conn: conn, admin: admin} do
-       [reporter, target_user] = insert_pair(:user)
-       activity = insert(:note_activity, user: target_user)
-       {:ok, %{id: report_id}} =
-         CommonAPI.report(reporter, %{
-           account_id: target_user.id,
-           comment: "I feel offended",
-           status_ids: [activity.id]
-         })
 -  describe "GET /api/pleroma/admin/config/descriptions" do
 -    test "structure", %{conn: conn} do
 -      admin = insert(:user, is_admin: true)
--
-       post(conn, "/api/pleroma/admin/reports/#{report_id}/notes", %{
-         content: "this is disgusting!"
-       })
 -      conn =
 -        assign(conn, :user, admin)
 -        |> get("/api/pleroma/admin/config/descriptions")
--
-       post(conn, "/api/pleroma/admin/reports/#{report_id}/notes", %{
-         content: "this is disgusting2!"
-       })
 -      assert [child | _others] = json_response(conn, 200)
--
-       %{
-         admin_id: admin.id,
-         report_id: report_id
-       }
 -      assert child["children"]
 -      assert child["key"]
 -      assert String.starts_with?(child["group"], ":")
 -      assert child["description"]
--    end
--
-     test "it creates report note", %{admin_id: admin_id, report_id: report_id} do
-       [note, _] = Repo.all(ReportNote)
 -    test "filters by database configuration whitelist", %{conn: conn} do
 -      clear_config(:database_config_whitelist, [
 -        {:pleroma, :instance},
 -        {:pleroma, :activitypub},
 -        {:pleroma, Pleroma.Upload},
 -        {:esshd}
 -      ])
--
-       assert %{
-                activity_id: ^report_id,
-                content: "this is disgusting!",
-                user_id: ^admin_id
-              } = note
-     end
 -      admin = insert(:user, is_admin: true)
--
-     test "it returns reports with notes", %{conn: conn, admin: admin} do
-       conn = get(conn, "/api/pleroma/admin/reports")
 -      conn =
 -        assign(conn, :user, admin)
 -        |> get("/api/pleroma/admin/config/descriptions")
--
-       response = json_response(conn, 200)
-       notes = hd(response["reports"])["notes"]
-       [note, _] = notes
 -      children = json_response(conn, 200)
--
-       assert note["user"]["nickname"] == admin.nickname
-       assert note["content"] == "this is disgusting!"
-       assert note["created_at"]
-       assert response["total"] == 1
-     end
 -      assert length(children) == 4
--
-     test "it deletes the note", %{conn: conn, report_id: report_id} do
-       assert ReportNote |> Repo.all() |> length() == 2
 -      assert Enum.count(children, fn c -> c["group"] == ":pleroma" end) == 3
--
-       [note, _] = Repo.all(ReportNote)
 -      instance = Enum.find(children, fn c -> c["key"] == ":instance" end)
 -      assert instance["children"]
--
-       delete(conn, "/api/pleroma/admin/reports/#{report_id}/notes/#{note.id}")
 -      activitypub = Enum.find(children, fn c -> c["key"] == ":activitypub" end)
 -      assert activitypub["children"]
--
-       assert ReportNote |> Repo.all() |> length() == 1
 -      web_endpoint = Enum.find(children, fn c -> c["key"] == "Pleroma.Upload" end)
 -      assert web_endpoint["children"]
 -
 -      esshd = Enum.find(children, fn c -> c["group"] == ":esshd" end)
 -      assert esshd["children"]
--    end
--  end
  
    describe "/api/pleroma/admin/stats" do
      test "status visibility count", %{conn: conn} do