logo

pleroma

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

backup_controller_test.exs (3010B)


  1. # Pleroma: A lightweight social networking server
  2. # Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
  3. # SPDX-License-Identifier: AGPL-3.0-only
  4. defmodule Pleroma.Web.PleromaAPI.BackupControllerTest do
  5. use Pleroma.Web.ConnCase
  6. alias Pleroma.UnstubbedConfigMock, as: ConfigMock
  7. alias Pleroma.User.Backup
  8. alias Pleroma.Web.PleromaAPI.BackupView
  9. setup do
  10. clear_config([Pleroma.Upload, :uploader])
  11. clear_config([Backup, :limit_days])
  12. ConfigMock
  13. |> Mox.stub_with(Pleroma.Config)
  14. oauth_access(["read:backups"])
  15. end
  16. test "GET /api/v1/pleroma/backups", %{user: user, conn: conn} do
  17. assert {:ok, %Oban.Job{args: %{"backup_id" => backup_id}}} = Backup.create(user)
  18. backup = Backup.get(backup_id)
  19. response =
  20. conn
  21. |> get("/api/v1/pleroma/backups")
  22. |> json_response_and_validate_schema(:ok)
  23. assert [
  24. %{
  25. "content_type" => "application/zip",
  26. "url" => url,
  27. "file_size" => 0,
  28. "processed" => false,
  29. "inserted_at" => _
  30. }
  31. ] = response
  32. assert url == BackupView.download_url(backup)
  33. Pleroma.Tests.ObanHelpers.perform_all()
  34. assert [
  35. %{
  36. "url" => ^url,
  37. "processed" => true
  38. }
  39. ] =
  40. conn
  41. |> get("/api/v1/pleroma/backups")
  42. |> json_response_and_validate_schema(:ok)
  43. end
  44. test "POST /api/v1/pleroma/backups", %{user: _user, conn: conn} do
  45. assert [
  46. %{
  47. "content_type" => "application/zip",
  48. "url" => url,
  49. "file_size" => 0,
  50. "processed" => false,
  51. "inserted_at" => _
  52. }
  53. ] =
  54. conn
  55. |> post("/api/v1/pleroma/backups")
  56. |> json_response_and_validate_schema(:ok)
  57. Pleroma.Tests.ObanHelpers.perform_all()
  58. assert [
  59. %{
  60. "url" => ^url,
  61. "processed" => true
  62. }
  63. ] =
  64. conn
  65. |> get("/api/v1/pleroma/backups")
  66. |> json_response_and_validate_schema(:ok)
  67. days = Pleroma.Config.get([Backup, :limit_days])
  68. assert %{"error" => "Last export was less than #{days} days ago"} ==
  69. conn
  70. |> post("/api/v1/pleroma/backups")
  71. |> json_response_and_validate_schema(400)
  72. end
  73. test "Backup without email address" do
  74. user = Pleroma.Factory.insert(:user, email: nil)
  75. %{conn: conn} = oauth_access(["read:backups"], user: user)
  76. assert is_nil(user.email)
  77. assert [
  78. %{
  79. "content_type" => "application/zip",
  80. "url" => _url,
  81. "file_size" => 0,
  82. "processed" => false,
  83. "inserted_at" => _
  84. }
  85. ] =
  86. conn
  87. |> post("/api/v1/pleroma/backups")
  88. |> json_response_and_validate_schema(:ok)
  89. end
  90. end