diff options
Diffstat (limited to 'test/tasks')
| -rw-r--r-- | test/tasks/config_test.exs | 47 | ||||
| -rw-r--r-- | test/tasks/emoji_test.exs | 13 | ||||
| -rw-r--r-- | test/tasks/refresh_counter_cache_test.exs | 2 | ||||
| -rw-r--r-- | test/tasks/relay_test.exs | 9 | ||||
| -rw-r--r-- | test/tasks/user_test.exs | 30 | 
5 files changed, 64 insertions, 37 deletions
| diff --git a/test/tasks/config_test.exs b/test/tasks/config_test.exs index 04bc947a9..71f36c0e3 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 @@ -48,25 +50,21 @@ defmodule Mix.Tasks.Pleroma.ConfigTest do        config3 = ConfigDB.get_by_params(%{group: ":quack", key: ":level"})        refute ConfigDB.get_by_params(%{group: ":pleroma", key: "Pleroma.Repo"})        refute ConfigDB.get_by_params(%{group: ":postgrex", key: ":json_library"}) +      refute ConfigDB.get_by_params(%{group: ":pleroma", key: ":database"}) -      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 +80,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 +95,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", @@ -134,14 +121,11 @@ defmodule Mix.Tasks.Pleroma.ConfigTest do            federation_reachability_timeout_days: 7,            federation_publisher_modules: [Pleroma.Web.ActivityPub.Publisher],            allow_relay: true, -          rewrite_policy: Pleroma.Web.ActivityPub.MRF.NoOpPolicy,            public: true,            quarantined_instances: [],            managed_config: true,            static_dir: "instance/static/",            allowed_post_formats: ["text/plain", "text/html", "text/markdown", "text/bbcode"], -          mrf_transparency: true, -          mrf_transparency_exclusions: [],            autofollowed_nicknames: [],            max_pinned_statuses: 1,            attachment_links: false, @@ -163,7 +147,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 +156,7 @@ defmodule Mix.Tasks.Pleroma.ConfigTest do              ]            ]          ] -      }) +      )        Mix.Tasks.Pleroma.Config.run(["migrate_from_db", "--env", "temp", "-d"]) @@ -189,7 +172,7 @@ defmodule Mix.Tasks.Pleroma.ConfigTest do          end        assert file == -               "#{header}\n\nconfig :pleroma, :instance,\n  name: \"Pleroma\",\n  email: \"example@example.com\",\n  notify_email: \"noreply@example.com\",\n  description: \"A Pleroma instance, an alternative fediverse server\",\n  limit: 5000,\n  chat_limit: 5000,\n  remote_limit: 100_000,\n  upload_limit: 16_000_000,\n  avatar_upload_limit: 2_000_000,\n  background_upload_limit: 4_000_000,\n  banner_upload_limit: 4_000_000,\n  poll_limits: %{\n    max_expiration: 31_536_000,\n    max_option_chars: 200,\n    max_options: 20,\n    min_expiration: 0\n  },\n  registrations_open: true,\n  federating: true,\n  federation_incoming_replies_max_depth: 100,\n  federation_reachability_timeout_days: 7,\n  federation_publisher_modules: [Pleroma.Web.ActivityPub.Publisher],\n  allow_relay: true,\n  rewrite_policy: Pleroma.Web.ActivityPub.MRF.NoOpPolicy,\n  public: true,\n  quarantined_instances: [],\n  managed_config: true,\n  static_dir: \"instance/static/\",\n  allowed_post_formats: [\"text/plain\", \"text/html\", \"text/markdown\", \"text/bbcode\"],\n  mrf_transparency: true,\n  mrf_transparency_exclusions: [],\n  autofollowed_nicknames: [],\n  max_pinned_statuses: 1,\n  attachment_links: false,\n  welcome_user_nickname: nil,\n  welcome_message: nil,\n  max_report_comment_size: 1000,\n  safe_dm_mentions: false,\n  healthcheck: false,\n  remote_post_retention_days: 90,\n  skip_thread_containment: true,\n  limit_to_local_content: :unauthenticated,\n  user_bio_length: 5000,\n  user_name_length: 100,\n  max_account_fields: 10,\n  max_remote_account_fields: 20,\n  account_field_name_length: 512,\n  account_field_value_length: 2048,\n  external_user_synchronization: true,\n  extended_nickname_format: true,\n  multi_factor_authentication: [\n    totp: [digits: 6, period: 30],\n    backup_codes: [number: 2, length: 6]\n  ]\n" +               "#{header}\n\nconfig :pleroma, :instance,\n  name: \"Pleroma\",\n  email: \"example@example.com\",\n  notify_email: \"noreply@example.com\",\n  description: \"A Pleroma instance, an alternative fediverse server\",\n  limit: 5000,\n  chat_limit: 5000,\n  remote_limit: 100_000,\n  upload_limit: 16_000_000,\n  avatar_upload_limit: 2_000_000,\n  background_upload_limit: 4_000_000,\n  banner_upload_limit: 4_000_000,\n  poll_limits: %{\n    max_expiration: 31_536_000,\n    max_option_chars: 200,\n    max_options: 20,\n    min_expiration: 0\n  },\n  registrations_open: true,\n  federating: true,\n  federation_incoming_replies_max_depth: 100,\n  federation_reachability_timeout_days: 7,\n  federation_publisher_modules: [Pleroma.Web.ActivityPub.Publisher],\n  allow_relay: true,\n  public: true,\n  quarantined_instances: [],\n  managed_config: true,\n  static_dir: \"instance/static/\",\n  allowed_post_formats: [\"text/plain\", \"text/html\", \"text/markdown\", \"text/bbcode\"],\n  autofollowed_nicknames: [],\n  max_pinned_statuses: 1,\n  attachment_links: false,\n  welcome_user_nickname: nil,\n  welcome_message: nil,\n  max_report_comment_size: 1000,\n  safe_dm_mentions: false,\n  healthcheck: false,\n  remote_post_retention_days: 90,\n  skip_thread_containment: true,\n  limit_to_local_content: :unauthenticated,\n  user_bio_length: 5000,\n  user_name_length: 100,\n  max_account_fields: 10,\n  max_remote_account_fields: 20,\n  account_field_name_length: 512,\n  account_field_value_length: 2048,\n  external_user_synchronization: true,\n  extended_nickname_format: true,\n  multi_factor_authentication: [\n    totp: [digits: 6, period: 30],\n    backup_codes: [number: 2, length: 6]\n  ]\n"      end    end  end 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/refresh_counter_cache_test.exs b/test/tasks/refresh_counter_cache_test.exs index 851971a77..6a1a9ac17 100644 --- a/test/tasks/refresh_counter_cache_test.exs +++ b/test/tasks/refresh_counter_cache_test.exs @@ -37,7 +37,7 @@ defmodule Mix.Tasks.Pleroma.RefreshCounterCacheTest do      assert capture_io(fn -> Mix.Tasks.Pleroma.RefreshCounterCache.run([]) end) =~ "Done\n" -    assert %{direct: 3, private: 4, public: 1, unlisted: 2} = +    assert %{"direct" => 3, "private" => 4, "public" => 1, "unlisted" => 2} =               Pleroma.Stats.get_status_visibility_count()    end  end 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 b55aa1cdb..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 @@ -278,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 -> | 
