aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/backup_test.exs47
-rw-r--r--test/support/oban_helpers.ex3
2 files changed, 45 insertions, 5 deletions
diff --git a/test/backup_test.exs b/test/backup_test.exs
index f343b0361..59aebe360 100644
--- a/test/backup_test.exs
+++ b/test/backup_test.exs
@@ -13,8 +13,12 @@ defmodule Pleroma.BackupTest do
alias Pleroma.Bookmark
alias Pleroma.Web.CommonAPI
alias Pleroma.Workers.BackupWorker
+ alias Pleroma.Tests.ObanHelpers
- setup do: clear_config([Pleroma.Upload, :uploader])
+ setup do
+ clear_config([Pleroma.Upload, :uploader])
+ clear_config([Pleroma.Backup, :limit_days])
+ end
test "it creates a backup record and an Oban job" do
%{id: user_id} = user = insert(:user)
@@ -38,10 +42,34 @@ defmodule Pleroma.BackupTest do
test "it process a backup record" do
Pleroma.Config.put([Pleroma.Upload, :uploader], Pleroma.Uploaders.Local)
%{id: user_id} = user = insert(:user)
- assert {:ok, %Oban.Job{args: %{"backup_id" => backup_id}} = job} = Backup.create(user)
- assert {:ok, backup} = BackupWorker.perform(job)
+
+ assert {:ok, %Oban.Job{args: %{"backup_id" => backup_id} = args}} = Backup.create(user)
+ assert {:ok, backup} = perform_job(BackupWorker, args)
assert backup.file_size > 0
assert %Backup{id: ^backup_id, processed: true, user_id: ^user_id} = backup
+
+ delete_job_args = %{"op" => "delete", "backup_id" => backup_id}
+
+ assert_enqueued(worker: BackupWorker, args: delete_job_args)
+ assert {:ok, backup} = perform_job(BackupWorker, delete_job_args)
+ refute Backup.get(backup_id)
+ end
+
+ test "it removes outdated backups after creating a fresh one" do
+ Pleroma.Config.put([Pleroma.Backup, :limit_days], -1)
+ Pleroma.Config.put([Pleroma.Upload, :uploader], Pleroma.Uploaders.Local)
+ user = insert(:user)
+
+ assert {:ok, job1} = Backup.create(user)
+
+ assert {:ok, %Backup{id: backup1_id}} = ObanHelpers.perform(job1)
+ assert {:ok, job2} = Backup.create(user)
+ assert Pleroma.Repo.aggregate(Backup, :count) == 2
+ assert {:ok, backup2} = ObanHelpers.perform(job2)
+
+ ObanHelpers.perform_all()
+
+ assert [^backup2] = Pleroma.Repo.all(Backup)
end
test "it creates a zip archive with user data" do
@@ -145,7 +173,7 @@ defmodule Pleroma.BackupTest do
File.rm!(path)
end
- describe "it uploads a backup archive" do
+ describe "it uploads and deletes a backup archive" do
setup do
clear_config(Pleroma.Uploaders.S3,
bucket: "test_bucket",
@@ -173,8 +201,16 @@ defmodule Pleroma.BackupTest do
test "S3", %{path: path, backup: backup} do
Pleroma.Config.put([Pleroma.Upload, :uploader], Pleroma.Uploaders.S3)
- with_mock ExAws, request: fn _ -> {:ok, :ok} end do
+ with_mock ExAws,
+ request: fn
+ %{http_method: :put} -> {:ok, :ok}
+ %{http_method: :delete} -> {:ok, %{status_code: 204}}
+ end do
assert {:ok, %Pleroma.Upload{}} = Backup.upload(backup, path)
+ assert {:ok, _backup} = Backup.delete(backup)
+ end
+
+ with_mock ExAws, request: fn %{http_method: :delete} -> {:ok, %{status_code: 204}} end do
end
end
@@ -182,6 +218,7 @@ defmodule Pleroma.BackupTest do
Pleroma.Config.put([Pleroma.Upload, :uploader], Pleroma.Uploaders.Local)
assert {:ok, %Pleroma.Upload{}} = Backup.upload(backup, path)
+ assert {:ok, _backup} = Backup.delete(backup)
end
end
end
diff --git a/test/support/oban_helpers.ex b/test/support/oban_helpers.ex
index 9f90a821c..2468f66dc 100644
--- a/test/support/oban_helpers.ex
+++ b/test/support/oban_helpers.ex
@@ -7,6 +7,8 @@ defmodule Pleroma.Tests.ObanHelpers do
Oban test helpers.
"""
+ require Ecto.Query
+
alias Pleroma.Repo
def wipe_all do
@@ -15,6 +17,7 @@ defmodule Pleroma.Tests.ObanHelpers do
def perform_all do
Oban.Job
+ |> Ecto.Query.where(state: "available")
|> Repo.all()
|> perform()
end