diff options
| -rw-r--r-- | lib/pleroma/backup.ex | 10 | ||||
| -rw-r--r-- | test/web/admin_api/controllers/admin_api_controller_test.exs | 24 | 
2 files changed, 30 insertions, 4 deletions
| diff --git a/lib/pleroma/backup.ex b/lib/pleroma/backup.ex index f5f39431d..e2673db80 100644 --- a/lib/pleroma/backup.ex +++ b/lib/pleroma/backup.ex @@ -30,12 +30,12 @@ defmodule Pleroma.Backup do      timestamps()    end -  def create(user, admin_user_id \\ nil) do +  def create(user, admin_id \\ nil) do      with :ok <- validate_email_enabled(),           :ok <- validate_user_email(user), -         :ok <- validate_limit(user), +         :ok <- validate_limit(user, admin_id),           {:ok, backup} <- user |> new() |> Repo.insert() do -      BackupWorker.process(backup, admin_user_id) +      BackupWorker.process(backup, admin_id)      end    end @@ -59,7 +59,9 @@ defmodule Pleroma.Backup do      end    end -  defp validate_limit(user) do +  defp validate_limit(_user, admin_id) when is_binary(admin_id), do: :ok + +  defp validate_limit(user, nil) do      case get_last(user.id) do        %__MODULE__{inserted_at: inserted_at} ->          days = Pleroma.Config.get([Pleroma.Backup, :limit_days]) diff --git a/test/web/admin_api/controllers/admin_api_controller_test.exs b/test/web/admin_api/controllers/admin_api_controller_test.exs index 4d331779e..4b3abce0d 100644 --- a/test/web/admin_api/controllers/admin_api_controller_test.exs +++ b/test/web/admin_api/controllers/admin_api_controller_test.exs @@ -2044,6 +2044,30 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do        assert_email_sent(Pleroma.Emails.UserEmail.backup_is_ready_email(backup, admin.id))      end + +    test "it doesn't limit admins", %{conn: conn} do +      admin = insert(:user, is_admin: true) +      token = insert(:oauth_admin_token, user: admin) +      user = insert(:user) + +      assert "" == +               conn +               |> assign(:user, admin) +               |> assign(:token, token) +               |> post("/api/pleroma/admin/backups", %{nickname: user.nickname}) +               |> json_response(200) + +      assert [_backup] = Repo.all(Pleroma.Backup) + +      assert "" == +               conn +               |> assign(:user, admin) +               |> assign(:token, token) +               |> post("/api/pleroma/admin/backups", %{nickname: user.nickname}) +               |> json_response(200) + +      assert Repo.aggregate(Pleroma.Backup, :count) == 2 +    end    end  end | 
