aboutsummaryrefslogtreecommitdiff
path: root/test/pleroma/user/backup_async_test.exs
diff options
context:
space:
mode:
authordcc <dcc@logografos.com>2024-05-15 00:57:23 -0700
committerdcc <dcc@logografos.com>2024-05-15 00:57:23 -0700
commitb31a934a804aed3f35442ceafe2080b0955e7317 (patch)
tree947b13a0388ecea81e05dd980baa10f7546860b9 /test/pleroma/user/backup_async_test.exs
parentea33a0d3427f8b30b82a6ddbc0ff7429cfaf8d91 (diff)
downloadanni-b31a934a804aed3f35442ceafe2080b0955e7317.tar.gz
anni-b31a934a804aed3f35442ceafe2080b0955e7317.tar.bz2
anni-b31a934a804aed3f35442ceafe2080b0955e7317.zip
total rebaseHEADmaster
Diffstat (limited to 'test/pleroma/user/backup_async_test.exs')
-rw-r--r--test/pleroma/user/backup_async_test.exs51
1 files changed, 51 insertions, 0 deletions
diff --git a/test/pleroma/user/backup_async_test.exs b/test/pleroma/user/backup_async_test.exs
new file mode 100644
index 0000000..76716d6
--- /dev/null
+++ b/test/pleroma/user/backup_async_test.exs
@@ -0,0 +1,51 @@
+# Pleroma: A lightweight social networking server
+# Copyright © 2017-2023 Pleroma Authors <https://pleroma.social/>
+# SPDX-License-Identifier: AGPL-3.0-only
+
+defmodule Pleroma.User.BackupAsyncTest do
+ use Pleroma.DataCase, async: true
+
+ import Pleroma.Factory
+ import Mox
+
+ alias Pleroma.UnstubbedConfigMock, as: ConfigMock
+ alias Pleroma.User.Backup
+ alias Pleroma.User.Backup.ProcessorMock
+
+ setup do
+ user = insert(:user, %{nickname: "cofe", name: "Cofe", ap_id: "http://cofe.io/users/cofe"})
+
+ {:ok, backup} = user |> Backup.new() |> Repo.insert()
+ %{backup: backup}
+ end
+
+ @tag capture_log: true
+ test "it handles unrecoverable exceptions", %{backup: backup} do
+ ProcessorMock
+ |> expect(:do_process, fn _, _ ->
+ raise "mock exception"
+ end)
+
+ ConfigMock
+ |> stub_with(Pleroma.Config)
+
+ {:error, %{backup: backup, reason: :exit}} = Backup.process(backup, ProcessorMock)
+
+ assert backup.state == :failed
+ end
+
+ @tag capture_log: true
+ test "it handles timeouts", %{backup: backup} do
+ ProcessorMock
+ |> expect(:do_process, fn _, _ ->
+ Process.sleep(:timer.seconds(4))
+ end)
+
+ ConfigMock
+ |> expect(:get, fn [Pleroma.User.Backup, :process_wait_time] -> :timer.seconds(2) end)
+
+ {:error, %{backup: backup, reason: :timeout}} = Backup.process(backup, ProcessorMock)
+
+ assert backup.state == :failed
+ end
+end