diff options
Diffstat (limited to 'test/tasks')
| -rw-r--r-- | test/tasks/config_test.exs | 13 | ||||
| -rw-r--r-- | test/tasks/database_test.exs | 64 | ||||
| -rw-r--r-- | test/tasks/digest_test.exs | 2 | ||||
| -rw-r--r-- | test/tasks/email_test.exs | 2 | ||||
| -rw-r--r-- | test/tasks/frontend_test.exs | 85 | ||||
| -rw-r--r-- | test/tasks/relay_test.exs | 10 | 
6 files changed, 144 insertions, 32 deletions
| diff --git a/test/tasks/config_test.exs b/test/tasks/config_test.exs index fb12e7fb3..f36648829 100644 --- a/test/tasks/config_test.exs +++ b/test/tasks/config_test.exs @@ -40,6 +40,19 @@ defmodule Mix.Tasks.Pleroma.ConfigTest do        on_exit(fn -> Application.put_env(:quack, :level, initial) end)      end +    @tag capture_log: true +    test "config migration refused when deprecated settings are found" do +      clear_config([:media_proxy, :whitelist], ["domain_without_scheme.com"]) +      assert Repo.all(ConfigDB) == [] + +      Mix.Tasks.Pleroma.Config.migrate_to_db("test/fixtures/config/temp.secret.exs") + +      assert_received {:mix_shell, :error, [message]} + +      assert message =~ +               "Migration is not allowed until all deprecation warnings have been resolved." +    end +      test "filtered settings are migrated to db" do        assert Repo.all(ConfigDB) == [] diff --git a/test/tasks/database_test.exs b/test/tasks/database_test.exs index 3a28aa133..292a5ef5f 100644 --- a/test/tasks/database_test.exs +++ b/test/tasks/database_test.exs @@ -3,14 +3,15 @@  # SPDX-License-Identifier: AGPL-3.0-only  defmodule Mix.Tasks.Pleroma.DatabaseTest do +  use Pleroma.DataCase +  use Oban.Testing, repo: Pleroma.Repo +    alias Pleroma.Activity    alias Pleroma.Object    alias Pleroma.Repo    alias Pleroma.User    alias Pleroma.Web.CommonAPI -  use Pleroma.DataCase -    import Pleroma.Factory    setup_all do @@ -130,40 +131,45 @@ defmodule Mix.Tasks.Pleroma.DatabaseTest do    describe "ensure_expiration" do      test "it adds to expiration old statuses" do -      %{id: activity_id1} = insert(:note_activity) +      activity1 = insert(:note_activity) -      %{id: activity_id2} = -        insert(:note_activity, %{inserted_at: NaiveDateTime.from_iso8601!("2015-01-23 23:50:07")}) +      {:ok, inserted_at, 0} = DateTime.from_iso8601("2015-01-23T23:50:07Z") +      activity2 = insert(:note_activity, %{inserted_at: inserted_at}) -      %{id: activity_id3} = activity3 = insert(:note_activity) +      %{id: activity_id3} = insert(:note_activity) -      expires_at = -        NaiveDateTime.utc_now() -        |> NaiveDateTime.add(60 * 61, :second) -        |> NaiveDateTime.truncate(:second) +      expires_at = DateTime.add(DateTime.utc_now(), 60 * 61) -      Pleroma.ActivityExpiration.create(activity3, expires_at) +      Pleroma.Workers.PurgeExpiredActivity.enqueue(%{ +        activity_id: activity_id3, +        expires_at: expires_at +      })        Mix.Tasks.Pleroma.Database.run(["ensure_expiration"]) -      expirations = -        Pleroma.ActivityExpiration -        |> order_by(:activity_id) -        |> Repo.all() - -      assert [ -               %Pleroma.ActivityExpiration{ -                 activity_id: ^activity_id1 -               }, -               %Pleroma.ActivityExpiration{ -                 activity_id: ^activity_id2, -                 scheduled_at: ~N[2016-01-23 23:50:07] -               }, -               %Pleroma.ActivityExpiration{ -                 activity_id: ^activity_id3, -                 scheduled_at: ^expires_at -               } -             ] = expirations +      assert_enqueued( +        worker: Pleroma.Workers.PurgeExpiredActivity, +        args: %{activity_id: activity1.id}, +        scheduled_at: +          activity1.inserted_at +          |> DateTime.from_naive!("Etc/UTC") +          |> Timex.shift(days: 365) +      ) + +      assert_enqueued( +        worker: Pleroma.Workers.PurgeExpiredActivity, +        args: %{activity_id: activity2.id}, +        scheduled_at: +          activity2.inserted_at +          |> DateTime.from_naive!("Etc/UTC") +          |> Timex.shift(days: 365) +      ) + +      assert_enqueued( +        worker: Pleroma.Workers.PurgeExpiredActivity, +        args: %{activity_id: activity_id3}, +        scheduled_at: expires_at +      )      end    end  end diff --git a/test/tasks/digest_test.exs b/test/tasks/digest_test.exs index eefbc8936..0b444c86d 100644 --- a/test/tasks/digest_test.exs +++ b/test/tasks/digest_test.exs @@ -17,6 +17,8 @@ defmodule Mix.Tasks.Pleroma.DigestTest do      :ok    end +  setup do: clear_config([Pleroma.Emails.Mailer, :enabled], true) +    describe "pleroma.digest test" do      test "Sends digest to the given user" do        user1 = insert(:user) diff --git a/test/tasks/email_test.exs b/test/tasks/email_test.exs index 944c07064..c3af7ef68 100644 --- a/test/tasks/email_test.exs +++ b/test/tasks/email_test.exs @@ -16,6 +16,8 @@ defmodule Mix.Tasks.Pleroma.EmailTest do      :ok    end +  setup do: clear_config([Pleroma.Emails.Mailer, :enabled], true) +    describe "pleroma.email test" do      test "Sends test email with no given address" do        mail_to = Config.get([:instance, :email]) diff --git a/test/tasks/frontend_test.exs b/test/tasks/frontend_test.exs new file mode 100644 index 000000000..022ae51be --- /dev/null +++ b/test/tasks/frontend_test.exs @@ -0,0 +1,85 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.FrontendTest do +  use Pleroma.DataCase +  alias Mix.Tasks.Pleroma.Frontend + +  import ExUnit.CaptureIO, only: [capture_io: 1] + +  @dir "test/frontend_static_test" + +  setup do +    File.mkdir_p!(@dir) +    clear_config([:instance, :static_dir], @dir) + +    on_exit(fn -> +      File.rm_rf(@dir) +    end) +  end + +  test "it downloads and unzips a known frontend" do +    clear_config([:frontends, :available], %{ +      "pleroma" => %{ +        "ref" => "fantasy", +        "name" => "pleroma", +        "build_url" => "http://gensokyo.2hu/builds/${ref}" +      } +    }) + +    Tesla.Mock.mock(fn %{url: "http://gensokyo.2hu/builds/fantasy"} -> +      %Tesla.Env{status: 200, body: File.read!("test/fixtures/tesla_mock/frontend_dist.zip")} +    end) + +    capture_io(fn -> +      Frontend.run(["install", "pleroma"]) +    end) + +    assert File.exists?(Path.join([@dir, "frontends", "pleroma", "fantasy", "test.txt"])) +  end + +  test "it also works given a file" do +    clear_config([:frontends, :available], %{ +      "pleroma" => %{ +        "ref" => "fantasy", +        "name" => "pleroma", +        "build_dir" => "" +      } +    }) + +    folder = Path.join([@dir, "frontends", "pleroma", "fantasy"]) +    previously_existing = Path.join([folder, "temp"]) +    File.mkdir_p!(folder) +    File.write!(previously_existing, "yey") +    assert File.exists?(previously_existing) + +    capture_io(fn -> +      Frontend.run(["install", "pleroma", "--file", "test/fixtures/tesla_mock/frontend.zip"]) +    end) + +    assert File.exists?(Path.join([folder, "test.txt"])) +    refute File.exists?(previously_existing) +  end + +  test "it downloads and unzips unknown frontends" do +    Tesla.Mock.mock(fn %{url: "http://gensokyo.2hu/madeup.zip"} -> +      %Tesla.Env{status: 200, body: File.read!("test/fixtures/tesla_mock/frontend.zip")} +    end) + +    capture_io(fn -> +      Frontend.run([ +        "install", +        "unknown", +        "--ref", +        "baka", +        "--build-url", +        "http://gensokyo.2hu/madeup.zip", +        "--build-dir", +        "" +      ]) +    end) + +    assert File.exists?(Path.join([@dir, "frontends", "unknown", "baka", "test.txt"])) +  end +end diff --git a/test/tasks/relay_test.exs b/test/tasks/relay_test.exs index 79ab72002..e5225b64c 100644 --- a/test/tasks/relay_test.exs +++ b/test/tasks/relay_test.exs @@ -42,7 +42,11 @@ defmodule Mix.Tasks.Pleroma.RelayTest do        assert activity.data["object"] == target_user.ap_id        :ok = Mix.Tasks.Pleroma.Relay.run(["list"]) -      assert_receive {:mix_shell, :info, ["mastodon.example.org (no Accept received)"]} + +      assert_receive {:mix_shell, :info, +                      [ +                        "http://mastodon.example.org/users/admin - no Accept received (relay didn't follow back)" +                      ]}      end    end @@ -95,8 +99,8 @@ defmodule Mix.Tasks.Pleroma.RelayTest do        :ok = Mix.Tasks.Pleroma.Relay.run(["list"]) -      assert_receive {:mix_shell, :info, ["mstdn.io"]} -      assert_receive {:mix_shell, :info, ["mastodon.example.org"]} +      assert_receive {:mix_shell, :info, ["https://mstdn.io/users/mayuutann"]} +      assert_receive {:mix_shell, :info, ["http://mastodon.example.org/users/admin"]}      end    end  end | 
