diff options
author | Lain Soykaf <lain@lain.com> | 2023-12-10 18:57:46 +0400 |
---|---|---|
committer | Lain Soykaf <lain@lain.com> | 2023-12-10 18:57:46 +0400 |
commit | c068a218eac02044cb5823abb1917051e1815b4f (patch) | |
tree | 09b5d5a55b0512756dc10a4116facdfad0eaf947 /test | |
parent | 20b76acc088f2c1ec43ee43c6713e2a67455cad4 (diff) | |
download | pleroma-c068a218eac02044cb5823abb1917051e1815b4f.tar.gz pleroma-c068a218eac02044cb5823abb1917051e1815b4f.zip |
Backup Tests: Split out async tests, use mox.
Diffstat (limited to 'test')
-rw-r--r-- | test/pleroma/user/backup_async_test.exs | 51 | ||||
-rw-r--r-- | test/support/mocks.ex | 2 |
2 files changed, 53 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 000000000..b0e965c5d --- /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.User.Backup + alias Pleroma.User.Backup.ProcessorMock + alias Pleroma.UnstubbedConfigMock, as: ConfigMock + + 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 diff --git a/test/support/mocks.ex b/test/support/mocks.ex index 9693095ba..b941f5bb3 100644 --- a/test/support/mocks.ex +++ b/test/support/mocks.ex @@ -29,3 +29,5 @@ Mox.defmock(Pleroma.ConfigMock, for: Pleroma.Config.Getting) Mox.defmock(Pleroma.UnstubbedConfigMock, for: Pleroma.Config.Getting) Mox.defmock(Pleroma.LoggerMock, for: Pleroma.Logging) + +Mox.defmock(Pleroma.User.Backup.ProcessorMock, for: Pleroma.User.Backup.ProcessorAPI) |