aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/web/pleroma_api/controllers/backup_controller_test.exs84
1 files changed, 84 insertions, 0 deletions
diff --git a/test/web/pleroma_api/controllers/backup_controller_test.exs b/test/web/pleroma_api/controllers/backup_controller_test.exs
new file mode 100644
index 000000000..1ad1b63c4
--- /dev/null
+++ b/test/web/pleroma_api/controllers/backup_controller_test.exs
@@ -0,0 +1,84 @@
+# Pleroma: A lightweight social networking server
+# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
+# SPDX-License-Identifier: AGPL-3.0-only
+
+defmodule Pleroma.Web.PleromaAPI.BackupControllerTest do
+ use Pleroma.Web.ConnCase
+
+ alias Pleroma.Backup
+
+ setup do
+ clear_config([Pleroma.Upload, :uploader])
+ clear_config([Backup, :limit_days])
+ oauth_access(["read:accounts"])
+ end
+
+ test "GET /api/pleroma/backups", %{user: user, conn: conn} do
+ assert {:ok, %Oban.Job{args: %{"backup_id" => backup_id}}} = Backup.create(user)
+
+ backup = Backup.get(backup_id)
+
+ response =
+ conn
+ |> get("/api/pleroma/backups")
+ |> json_response_and_validate_schema(:ok)
+
+ assert [
+ %{
+ "content_type" => "application/zip",
+ "file_name" => file_name,
+ "file_size" => 0,
+ "processed" => false,
+ "inserted_at" => _
+ }
+ ] = response
+
+ assert file_name == backup.file_name
+
+ Pleroma.Tests.ObanHelpers.perform_all()
+
+ assert [
+ %{
+ "file_name" => ^file_name,
+ "processed" => true
+ }
+ ] =
+ conn
+ |> get("/api/pleroma/backups")
+ |> json_response_and_validate_schema(:ok)
+ end
+
+ test "POST /api/pleroma/backups", %{user: _user, conn: conn} do
+ assert [
+ %{
+ "content_type" => "application/zip",
+ "file_name" => file_name,
+ "file_size" => 0,
+ "processed" => false,
+ "inserted_at" => _
+ }
+ ] =
+ conn
+ |> post("/api/pleroma/backups")
+ |> json_response_and_validate_schema(:ok)
+
+ Pleroma.Tests.ObanHelpers.perform_all()
+
+ assert [
+ %{
+ "file_name" => ^file_name,
+ "processed" => true
+ }
+ ] =
+ conn
+ |> get("/api/pleroma/backups")
+ |> json_response_and_validate_schema(:ok)
+
+ days = Pleroma.Config.get([Backup, :limit_days])
+
+ assert %{"error" => "Last export was less than #{days} days ago"} ==
+ conn
+ |> post("/api/pleroma/backups")
+ |> json_response_and_validate_schema(400)
+ end
+end