logo

pleroma

My custom branche(s) on git.pleroma.social/pleroma/pleroma git clone https://hacktivis.me/git/pleroma.git

backup_async_test.exs (1385B)


  1. # Pleroma: A lightweight social networking server
  2. # Copyright © 2017-2023 Pleroma Authors <https://pleroma.social/>
  3. # SPDX-License-Identifier: AGPL-3.0-only
  4. defmodule Pleroma.User.BackupAsyncTest do
  5. use Pleroma.DataCase, async: true
  6. import Pleroma.Factory
  7. import Mox
  8. alias Pleroma.UnstubbedConfigMock, as: ConfigMock
  9. alias Pleroma.User.Backup
  10. alias Pleroma.User.Backup.ProcessorMock
  11. setup do
  12. user = insert(:user, %{nickname: "cofe", name: "Cofe", ap_id: "http://cofe.io/users/cofe"})
  13. {:ok, backup} = user |> Backup.new() |> Repo.insert()
  14. %{backup: backup}
  15. end
  16. @tag capture_log: true
  17. test "it handles unrecoverable exceptions", %{backup: backup} do
  18. ProcessorMock
  19. |> expect(:do_process, fn _, _ ->
  20. raise "mock exception"
  21. end)
  22. ConfigMock
  23. |> stub_with(Pleroma.Config)
  24. {:error, %{backup: backup, reason: :exit}} = Backup.process(backup, ProcessorMock)
  25. assert backup.state == :failed
  26. end
  27. @tag capture_log: true
  28. test "it handles timeouts", %{backup: backup} do
  29. ProcessorMock
  30. |> expect(:do_process, fn _, _ ->
  31. Process.sleep(:timer.seconds(4))
  32. end)
  33. ConfigMock
  34. |> expect(:get, fn [Pleroma.User.Backup, :process_wait_time] -> :timer.seconds(2) end)
  35. {:error, %{backup: backup, reason: :timeout}} = Backup.process(backup, ProcessorMock)
  36. assert backup.state == :failed
  37. end
  38. end