diff options
Diffstat (limited to 'test/tasks')
| -rw-r--r-- | test/tasks/config_test.exs | 41 | ||||
| -rw-r--r-- | test/tasks/emoji_test.exs | 13 | ||||
| -rw-r--r-- | test/tasks/instance_test.exs | 3 | ||||
| -rw-r--r-- | test/tasks/relay_test.exs | 9 | ||||
| -rw-r--r-- | test/tasks/user_test.exs | 51 | 
5 files changed, 75 insertions, 42 deletions
| diff --git a/test/tasks/config_test.exs b/test/tasks/config_test.exs index 04bc947a9..e1bddfebf 100644 --- a/test/tasks/config_test.exs +++ b/test/tasks/config_test.exs @@ -5,6 +5,8 @@  defmodule Mix.Tasks.Pleroma.ConfigTest do    use Pleroma.DataCase +  import Pleroma.Factory +    alias Pleroma.ConfigDB    alias Pleroma.Repo @@ -49,24 +51,19 @@ defmodule Mix.Tasks.Pleroma.ConfigTest do        refute ConfigDB.get_by_params(%{group: ":pleroma", key: "Pleroma.Repo"})        refute ConfigDB.get_by_params(%{group: ":postgrex", key: ":json_library"}) -      assert ConfigDB.from_binary(config1.value) == [key: "value", key2: [Repo]] -      assert ConfigDB.from_binary(config2.value) == [key: "value2", key2: ["Activity"]] -      assert ConfigDB.from_binary(config3.value) == :info +      assert config1.value == [key: "value", key2: [Repo]] +      assert config2.value == [key: "value2", key2: ["Activity"]] +      assert config3.value == :info      end      test "config table is truncated before migration" do -      ConfigDB.create(%{ -        group: ":pleroma", -        key: ":first_setting", -        value: [key: "value", key2: ["Activity"]] -      }) - +      insert(:config, key: :first_setting, value: [key: "value", key2: ["Activity"]])        assert Repo.aggregate(ConfigDB, :count, :id) == 1        Mix.Tasks.Pleroma.Config.migrate_to_db("test/fixtures/config/temp.secret.exs")        config = ConfigDB.get_by_params(%{group: ":pleroma", key: ":first_setting"}) -      assert ConfigDB.from_binary(config.value) == [key: "value", key2: [Repo]] +      assert config.value == [key: "value", key2: [Repo]]      end    end @@ -82,19 +79,9 @@ defmodule Mix.Tasks.Pleroma.ConfigTest do      end      test "settings are migrated to file and deleted from db", %{temp_file: temp_file} do -      ConfigDB.create(%{ -        group: ":pleroma", -        key: ":setting_first", -        value: [key: "value", key2: ["Activity"]] -      }) - -      ConfigDB.create(%{ -        group: ":pleroma", -        key: ":setting_second", -        value: [key: "value2", key2: [Repo]] -      }) - -      ConfigDB.create(%{group: ":quack", key: ":level", value: :info}) +      insert(:config, key: :setting_first, value: [key: "value", key2: ["Activity"]]) +      insert(:config, key: :setting_second, value: [key: "value2", key2: [Repo]]) +      insert(:config, group: :quack, key: :level, value: :info)        Mix.Tasks.Pleroma.Config.run(["migrate_from_db", "--env", "temp", "-d"]) @@ -107,9 +94,8 @@ defmodule Mix.Tasks.Pleroma.ConfigTest do      end      test "load a settings with large values and pass to file", %{temp_file: temp_file} do -      ConfigDB.create(%{ -        group: ":pleroma", -        key: ":instance", +      insert(:config, +        key: :instance,          value: [            name: "Pleroma",            email: "example@example.com", @@ -163,7 +149,6 @@ defmodule Mix.Tasks.Pleroma.ConfigTest do            extended_nickname_format: true,            multi_factor_authentication: [              totp: [ -              # digits 6 or 8                digits: 6,                period: 30              ], @@ -173,7 +158,7 @@ defmodule Mix.Tasks.Pleroma.ConfigTest do              ]            ]          ] -      }) +      )        Mix.Tasks.Pleroma.Config.run(["migrate_from_db", "--env", "temp", "-d"]) diff --git a/test/tasks/emoji_test.exs b/test/tasks/emoji_test.exs index f5de3ef0e..499f098c2 100644 --- a/test/tasks/emoji_test.exs +++ b/test/tasks/emoji_test.exs @@ -73,6 +73,19 @@ defmodule Mix.Tasks.Pleroma.EmojiTest do        on_exit(fn -> File.rm_rf!("test/instance_static/emoji/finmoji") end)      end +    test "install local emoji pack" do +      assert capture_io(fn -> +               Emoji.run([ +                 "get-packs", +                 "local", +                 "--manifest", +                 "test/instance_static/local_pack/manifest.json" +               ]) +             end) =~ "Writing pack.json for" + +      on_exit(fn -> File.rm_rf!("test/instance_static/emoji/local") end) +    end +      test "pack not found" do        mock(fn          %{ diff --git a/test/tasks/instance_test.exs b/test/tasks/instance_test.exs index f6a4ba508..3b4c041d9 100644 --- a/test/tasks/instance_test.exs +++ b/test/tasks/instance_test.exs @@ -63,7 +63,7 @@ defmodule Pleroma.InstanceTest do          "--uploads-dir",          "test/uploads",          "--static-dir", -        "instance/static/" +        "./test/../test/instance/static/"        ])      end @@ -83,6 +83,7 @@ defmodule Pleroma.InstanceTest do      assert generated_config =~ "configurable_from_database: true"      assert generated_config =~ "http: [ip: {127, 0, 0, 1}, port: 4000]"      assert File.read!(tmp_path() <> "setup.psql") == generated_setup_psql() +    assert File.exists?(Path.expand("./test/instance/static/robots.txt"))    end    defp generated_setup_psql do diff --git a/test/tasks/relay_test.exs b/test/tasks/relay_test.exs index d3d88467d..a8ba0658d 100644 --- a/test/tasks/relay_test.exs +++ b/test/tasks/relay_test.exs @@ -62,10 +62,11 @@ defmodule Mix.Tasks.Pleroma.RelayTest do        [undo_activity] =          ActivityPub.fetch_activities([], %{ -          "type" => "Undo", -          "actor_id" => follower_id, -          "limit" => 1, -          "skip_preload" => true +          type: "Undo", +          actor_id: follower_id, +          limit: 1, +          skip_preload: true, +          invisible_actors: true          })        assert undo_activity.data["type"] == "Undo" diff --git a/test/tasks/user_test.exs b/test/tasks/user_test.exs index 4aa873f0b..9220d23fc 100644 --- a/test/tasks/user_test.exs +++ b/test/tasks/user_test.exs @@ -4,6 +4,7 @@  defmodule Mix.Tasks.Pleroma.UserTest do    alias Pleroma.Activity +  alias Pleroma.MFA    alias Pleroma.Object    alias Pleroma.Repo    alias Pleroma.Tests.ObanHelpers @@ -91,6 +92,7 @@ defmodule Mix.Tasks.Pleroma.UserTest do    describe "running rm" do      test "user is deleted" do +      clear_config([:instance, :federating], true)        user = insert(:user)        with_mock Pleroma.Web.Federator, @@ -108,8 +110,10 @@ defmodule Mix.Tasks.Pleroma.UserTest do      test "a remote user's create activity is deleted when the object has been pruned" do        user = insert(:user) -        {:ok, post} = CommonAPI.post(user, %{status: "uguu"}) + +      clear_config([:instance, :federating], true) +        object = Object.normalize(post)        Object.prune(object) @@ -169,31 +173,31 @@ defmodule Mix.Tasks.Pleroma.UserTest do      end    end -  describe "running unsubscribe" do +  describe "running deactivate" do      test "user is unsubscribed" do        followed = insert(:user) +      remote_followed = insert(:user, local: false)        user = insert(:user) +        User.follow(user, followed, :follow_accept) +      User.follow(user, remote_followed, :follow_accept) -      Mix.Tasks.Pleroma.User.run(["unsubscribe", user.nickname]) +      Mix.Tasks.Pleroma.User.run(["deactivate", user.nickname])        assert_received {:mix_shell, :info, [message]}        assert message =~ "Deactivating" -      assert_received {:mix_shell, :info, [message]} -      assert message =~ "Unsubscribing" -        # Note that the task has delay :timer.sleep(500)        assert_received {:mix_shell, :info, [message]}        assert message =~ "Successfully unsubscribed"        user = User.get_cached_by_nickname(user.nickname) -      assert Enum.empty?(User.get_friends(user)) +      assert Enum.empty?(Enum.filter(User.get_friends(user), & &1.local))        assert user.deactivated      end -    test "no user to unsubscribe" do -      Mix.Tasks.Pleroma.User.run(["unsubscribe", "nonexistent"]) +    test "no user to deactivate" do +      Mix.Tasks.Pleroma.User.run(["deactivate", "nonexistent"])        assert_received {:mix_shell, :error, [message]}        assert message =~ "No user" @@ -275,6 +279,35 @@ defmodule Mix.Tasks.Pleroma.UserTest do      end    end +  describe "running reset_mfa" do +    test "disables MFA" do +      user = +        insert(:user, +          multi_factor_authentication_settings: %MFA.Settings{ +            enabled: true, +            totp: %MFA.Settings.TOTP{secret: "xx", confirmed: true} +          } +        ) + +      Mix.Tasks.Pleroma.User.run(["reset_mfa", user.nickname]) + +      assert_received {:mix_shell, :info, [message]} +      assert message == "Multi-Factor Authentication disabled for #{user.nickname}" + +      assert %{enabled: false, totp: false} == +               user.nickname +               |> User.get_cached_by_nickname() +               |> MFA.mfa_settings() +    end + +    test "no user to reset MFA" do +      Mix.Tasks.Pleroma.User.run(["reset_password", "nonexistent"]) + +      assert_received {:mix_shell, :error, [message]} +      assert message =~ "No local user" +    end +  end +    describe "running invite" do      test "invite token is generated" do        assert capture_io(fn -> | 
