summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authortusooa <tusooa@kazv.moe>2022-12-18 15:55:52 -0500
committertusooa <tusooa@kazv.moe>2022-12-24 00:04:51 -0500
commit7d3e4eaeb94a5381d56a3281e5813b7e0c63c8dd (patch)
treef50c6a499c90578d6351f41fd98f557f19a1edbe /test
parent070fbb89e1bc51669b03555b72c6852a769f1e15 (diff)
downloadpleroma-7d3e4eaeb94a5381d56a3281e5813b7e0c63c8dd.tar.gz
pleroma-7d3e4eaeb94a5381d56a3281e5813b7e0c63c8dd.zip
Log errors more extensively
Diffstat (limited to 'test')
-rw-r--r--test/pleroma/user/backup_test.exs50
1 files changed, 50 insertions, 0 deletions
diff --git a/test/pleroma/user/backup_test.exs b/test/pleroma/user/backup_test.exs
index a536b4a4a..066bf6ba8 100644
--- a/test/pleroma/user/backup_test.exs
+++ b/test/pleroma/user/backup_test.exs
@@ -270,6 +270,56 @@ defmodule Pleroma.User.BackupTest do
Backup.delete(backup)
end
+ test "it handles errors" do
+ user = insert(:user, %{nickname: "cofe", name: "Cofe", ap_id: "http://cofe.io/users/cofe"})
+
+ Enum.map(1..120, fn i ->
+ {:ok, _status} = CommonAPI.post(user, %{status: "status #{i}"})
+ end)
+
+ assert {:ok, backup} = user |> Backup.new() |> Repo.insert()
+
+ with_mock Pleroma.Web.ActivityPub.Transmogrifier,
+ [:passthrough],
+ prepare_outgoing: fn data ->
+ object =
+ data["object"]
+ |> Pleroma.Object.normalize(fetch: false)
+ |> Map.get(:data)
+
+ data = data |> Map.put("object", object)
+
+ if String.contains?(data["object"]["content"], "119"),
+ do: raise(%Postgrex.Error{}),
+ else: {:ok, data}
+ end do
+ {:ok, backup} = Backup.process(backup)
+ assert backup.processed
+ assert backup.state == :complete
+ assert backup.processed_number == 1 + 119
+
+ Backup.delete(backup)
+ end
+ end
+
+ test "it handles unrecoverable exceptions" do
+ user = insert(:user, %{nickname: "cofe", name: "Cofe", ap_id: "http://cofe.io/users/cofe"})
+
+ assert {:ok, backup} = user |> Backup.new() |> Repo.insert()
+
+ with_mock Backup, [:passthrough], do_process: fn _, _ -> raise "mock exception" end do
+ {:error, %{backup: backup, reason: :exit}} = Backup.process(backup)
+
+ assert backup.state == :failed
+ end
+
+ with_mock Backup, [:passthrough], do_process: fn _, _ -> Process.sleep(:timer.seconds(32)) end do
+ {:error, %{backup: backup, reason: :timeout}} = Backup.process(backup)
+
+ assert backup.state == :failed
+ end
+ end
+
describe "it uploads and deletes a backup archive" do
setup do
clear_config([Pleroma.Upload, :base_url], "https://s3.amazonaws.com")