1 # Pleroma: A lightweight social networking server
2 # Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
3 # SPDX-License-Identifier: AGPL-3.0-only
5 defmodule Pleroma.Web.PleromaAPI.BackupControllerTest do
6 use Pleroma.Web.ConnCase
8 alias Pleroma.User.Backup
9 alias Pleroma.Web.PleromaAPI.BackupView
12 clear_config([Pleroma.Upload, :uploader])
13 clear_config([Backup, :limit_days])
14 oauth_access(["read:accounts"])
17 test "GET /api/v1/pleroma/backups", %{user: user, conn: conn} do
18 assert {:ok, %Oban.Job{args: %{"backup_id" => backup_id}}} = Backup.create(user)
20 backup = Backup.get(backup_id)
24 |> get("/api/v1/pleroma/backups")
25 |> json_response_and_validate_schema(:ok)
29 "content_type" => "application/zip",
37 assert url == BackupView.download_url(backup)
39 Pleroma.Tests.ObanHelpers.perform_all()
48 |> get("/api/v1/pleroma/backups")
49 |> json_response_and_validate_schema(:ok)
52 test "POST /api/v1/pleroma/backups", %{user: _user, conn: conn} do
55 "content_type" => "application/zip",
63 |> post("/api/v1/pleroma/backups")
64 |> json_response_and_validate_schema(:ok)
66 Pleroma.Tests.ObanHelpers.perform_all()
75 |> get("/api/v1/pleroma/backups")
76 |> json_response_and_validate_schema(:ok)
78 days = Pleroma.Config.get([Backup, :limit_days])
80 assert %{"error" => "Last export was less than #{days} days ago"} ==
82 |> post("/api/v1/pleroma/backups")
83 |> json_response_and_validate_schema(400)