Allow dashes in domain name search
[akkoma] / test / pleroma / user / backup_test.exs
index 7fb4c5fbe9eae59069982b4dcfd6eae44cf1f058..029bbbf5644640dbb4bea8c68aca12a3f5ef8f7c 100644 (file)
@@ -22,15 +22,15 @@ defmodule Pleroma.User.BackupTest do
     clear_config([Pleroma.Emails.Mailer, :enabled], true)
   end
 
-  test "it requries enabled email" do
-    Pleroma.Config.put([Pleroma.Emails.Mailer, :enabled], false)
+  test "it does not requrie enabled email" do
+    clear_config([Pleroma.Emails.Mailer, :enabled], false)
     user = insert(:user)
-    assert {:error, "Backups require enabled email"} == Backup.create(user)
+    assert {:ok, _} = Backup.create(user)
   end
 
-  test "it requries user's email" do
+  test "it does not require user's email" do
     user = insert(:user, %{email: nil})
-    assert {:error, "Email is required"} == Backup.create(user)
+    assert {:ok, _} = Backup.create(user)
   end
 
   test "it creates a backup record and an Oban job" do
@@ -53,7 +53,7 @@ defmodule Pleroma.User.BackupTest do
   end
 
   test "it process a backup record" do
-    Pleroma.Config.put([Pleroma.Upload, :uploader], Pleroma.Uploaders.Local)
+    clear_config([Pleroma.Upload, :uploader], Pleroma.Uploaders.Local)
     %{id: user_id} = user = insert(:user)
 
     assert {:ok, %Oban.Job{args: %{"backup_id" => backup_id} = args}} = Backup.create(user)
@@ -75,9 +75,46 @@ defmodule Pleroma.User.BackupTest do
     )
   end
 
+  test "it does not send an email if the user does not have an email" do
+    clear_config([Pleroma.Upload, :uploader], Pleroma.Uploaders.Local)
+    %{id: user_id} = user = insert(:user, %{email: nil})
+
+    assert {:ok, %Oban.Job{args: %{"backup_id" => backup_id} = args}} = Backup.create(user)
+    assert {:ok, backup} = perform_job(BackupWorker, args)
+    assert backup.file_size > 0
+    assert %Backup{id: ^backup_id, processed: true, user_id: ^user_id} = backup
+
+    assert_no_email_sent()
+  end
+
+  test "it does not send an email if mailer is not on" do
+    clear_config([Pleroma.Emails.Mailer, :enabled], false)
+    clear_config([Pleroma.Upload, :uploader], Pleroma.Uploaders.Local)
+    %{id: user_id} = user = insert(:user)
+
+    assert {:ok, %Oban.Job{args: %{"backup_id" => backup_id} = args}} = Backup.create(user)
+    assert {:ok, backup} = perform_job(BackupWorker, args)
+    assert backup.file_size > 0
+    assert %Backup{id: ^backup_id, processed: true, user_id: ^user_id} = backup
+
+    assert_no_email_sent()
+  end
+
+  test "it does not send an email if the user has an empty email" do
+    clear_config([Pleroma.Upload, :uploader], Pleroma.Uploaders.Local)
+    %{id: user_id} = user = insert(:user, %{email: ""})
+
+    assert {:ok, %Oban.Job{args: %{"backup_id" => backup_id} = args}} = Backup.create(user)
+    assert {:ok, backup} = perform_job(BackupWorker, args)
+    assert backup.file_size > 0
+    assert %Backup{id: ^backup_id, processed: true, user_id: ^user_id} = backup
+
+    assert_no_email_sent()
+  end
+
   test "it removes outdated backups after creating a fresh one" do
-    Pleroma.Config.put([Backup, :limit_days], -1)
-    Pleroma.Config.put([Pleroma.Upload, :uploader], Pleroma.Uploaders.Local)
+    clear_config([Backup, :limit_days], -1)
+    clear_config([Pleroma.Upload, :uploader], Pleroma.Uploaders.Local)
     user = insert(:user)
 
     assert {:ok, job1} = Backup.create(user)
@@ -195,12 +232,8 @@ defmodule Pleroma.User.BackupTest do
 
   describe "it uploads and deletes a backup archive" do
     setup do
-      clear_config(Pleroma.Uploaders.S3,
-        bucket: "test_bucket",
-        public_endpoint: "https://s3.amazonaws.com"
-      )
-
-      clear_config([Pleroma.Upload, :uploader])
+      clear_config([Pleroma.Upload, :base_url], "https://s3.amazonaws.com")
+      clear_config([Pleroma.Uploaders.S3, :bucket], "test_bucket")
 
       user = insert(:user, %{nickname: "cofe", name: "Cofe", ap_id: "http://cofe.io/users/cofe"})
 
@@ -219,7 +252,8 @@ defmodule Pleroma.User.BackupTest do
     end
 
     test "S3", %{path: path, backup: backup} do
-      Pleroma.Config.put([Pleroma.Upload, :uploader], Pleroma.Uploaders.S3)
+      clear_config([Pleroma.Upload, :uploader], Pleroma.Uploaders.S3)
+      clear_config([Pleroma.Uploaders.S3, :streaming_enabled], false)
 
       with_mock ExAws,
         request: fn
@@ -229,13 +263,10 @@ defmodule Pleroma.User.BackupTest do
         assert {:ok, %Pleroma.Upload{}} = Backup.upload(backup, path)
         assert {:ok, _backup} = Backup.delete(backup)
       end
-
-      with_mock ExAws, request: fn %{http_method: :delete} -> {:ok, %{status_code: 204}} end do
-      end
     end
 
     test "Local", %{path: path, backup: backup} do
-      Pleroma.Config.put([Pleroma.Upload, :uploader], Pleroma.Uploaders.Local)
+      clear_config([Pleroma.Upload, :uploader], Pleroma.Uploaders.Local)
 
       assert {:ok, %Pleroma.Upload{}} = Backup.upload(backup, path)
       assert {:ok, _backup} = Backup.delete(backup)