diff options
Diffstat (limited to 'test')
| -rw-r--r-- | test/pleroma/config/transfer_task_test.exs | 4 | ||||
| -rw-r--r-- | test/pleroma/user/query_test.exs | 10 | ||||
| -rw-r--r-- | test/pleroma/user_test.exs | 32 | ||||
| -rw-r--r-- | test/pleroma/web/admin_api/controllers/user_controller_test.exs | 51 | ||||
| -rw-r--r-- | test/pleroma/web/manifest_controller_test.exs | 17 | ||||
| -rw-r--r-- | test/pleroma/web/mastodon_api/controllers/suggestion_controller_test.exs | 67 | ||||
| -rw-r--r-- | test/pleroma/web/mastodon_api/views/account_view_test.exs | 2 | ||||
| -rw-r--r-- | test/pleroma/web/mastodon_api/views/suggestion_view_test.exs | 34 | ||||
| -rw-r--r-- | test/pleroma/web/plugs/frontend_static_plug_test.exs | 2 | ||||
| -rw-r--r-- | test/pleroma/web/plugs/rate_limiter_test.exs | 4 | ||||
| -rw-r--r-- | test/test_helper.exs | 2 | 
11 files changed, 223 insertions, 2 deletions
| diff --git a/test/pleroma/config/transfer_task_test.exs b/test/pleroma/config/transfer_task_test.exs index 7d51fd84c..9e3f11f1a 100644 --- a/test/pleroma/config/transfer_task_test.exs +++ b/test/pleroma/config/transfer_task_test.exs @@ -82,6 +82,7 @@ defmodule Pleroma.Config.TransferTaskTest do        on_exit(fn -> Restarter.Pleroma.refresh() end)      end +    @tag :erratic      test "don't restart if no reboot time settings were changed" do        clear_config(:emoji)        insert(:config, key: :emoji, value: [groups: [a: 1, b: 2]]) @@ -92,18 +93,21 @@ defmodule Pleroma.Config.TransferTaskTest do               )      end +    @tag :erratic      test "on reboot time key" do        clear_config(:shout)        insert(:config, key: :shout, value: [enabled: false])        assert capture_log(fn -> TransferTask.start_link([]) end) =~ "pleroma restarted"      end +    @tag :erratic      test "on reboot time subkey" do        clear_config(Pleroma.Captcha)        insert(:config, key: Pleroma.Captcha, value: [seconds_valid: 60])        assert capture_log(fn -> TransferTask.start_link([]) end) =~ "pleroma restarted"      end +    @tag :erratic      test "don't restart pleroma on reboot time key and subkey if there is false flag" do        clear_config(:shout)        clear_config(Pleroma.Captcha) diff --git a/test/pleroma/user/query_test.exs b/test/pleroma/user/query_test.exs index 357016e3e..363da7665 100644 --- a/test/pleroma/user/query_test.exs +++ b/test/pleroma/user/query_test.exs @@ -34,4 +34,14 @@ defmodule Pleroma.User.QueryTest do        assert %{internal: true} |> Query.build() |> Repo.aggregate(:count) == 2      end    end + +  test "is_suggested param" do +    _user1 = insert(:user, is_suggested: false) +    user2 = insert(:user, is_suggested: true) + +    assert [^user2] = +             %{is_suggested: true} +             |> User.Query.build() +             |> Repo.all() +  end  end diff --git a/test/pleroma/user_test.exs b/test/pleroma/user_test.exs index 12d5d5db6..6cd93c34c 100644 --- a/test/pleroma/user_test.exs +++ b/test/pleroma/user_test.exs @@ -1718,6 +1718,38 @@ defmodule Pleroma.UserTest do      assert user.banner == %{}    end +  describe "set_suggestion" do +    test "suggests a user" do +      user = insert(:user, is_suggested: false) +      refute user.is_suggested +      {:ok, user} = User.set_suggestion(user, true) +      assert user.is_suggested +    end + +    test "suggests a list of users" do +      unsuggested_users = [ +        insert(:user, is_suggested: false), +        insert(:user, is_suggested: false), +        insert(:user, is_suggested: false) +      ] + +      {:ok, users} = User.set_suggestion(unsuggested_users, true) + +      assert Enum.count(users) == 3 + +      Enum.each(users, fn user -> +        assert user.is_suggested +      end) +    end + +    test "unsuggests a user" do +      user = insert(:user, is_suggested: true) +      assert user.is_suggested +      {:ok, user} = User.set_suggestion(user, false) +      refute user.is_suggested +    end +  end +    test "get_public_key_for_ap_id fetches a user that's not in the db" do      assert {:ok, _key} = User.get_public_key_for_ap_id("http://mastodon.example.org/users/admin")    end diff --git a/test/pleroma/web/admin_api/controllers/user_controller_test.exs b/test/pleroma/web/admin_api/controllers/user_controller_test.exs index d9da34f6e..b199fa704 100644 --- a/test/pleroma/web/admin_api/controllers/user_controller_test.exs +++ b/test/pleroma/web/admin_api/controllers/user_controller_test.exs @@ -873,6 +873,56 @@ defmodule Pleroma.Web.AdminAPI.UserControllerTest do               "@#{admin.nickname} approved users: @#{user_one.nickname}, @#{user_two.nickname}"    end +  test "PATCH /api/pleroma/admin/users/suggest", %{admin: admin, conn: conn} do +    user1 = insert(:user, is_suggested: false) +    user2 = insert(:user, is_suggested: false) + +    response = +      conn +      |> put_req_header("content-type", "application/json") +      |> patch( +        "/api/pleroma/admin/users/suggest", +        %{nicknames: [user1.nickname, user2.nickname]} +      ) +      |> json_response_and_validate_schema(200) + +    assert Enum.map(response["users"], & &1["is_suggested"]) == [true, true] +    [user1, user2] = Repo.reload!([user1, user2]) + +    assert user1.is_suggested +    assert user2.is_suggested + +    log_entry = Repo.one(ModerationLog) + +    assert ModerationLog.get_log_entry_message(log_entry) == +             "@#{admin.nickname} added suggested users: @#{user1.nickname}, @#{user2.nickname}" +  end + +  test "PATCH /api/pleroma/admin/users/unsuggest", %{admin: admin, conn: conn} do +    user1 = insert(:user, is_suggested: true) +    user2 = insert(:user, is_suggested: true) + +    response = +      conn +      |> put_req_header("content-type", "application/json") +      |> patch( +        "/api/pleroma/admin/users/unsuggest", +        %{nicknames: [user1.nickname, user2.nickname]} +      ) +      |> json_response_and_validate_schema(200) + +    assert Enum.map(response["users"], & &1["is_suggested"]) == [false, false] +    [user1, user2] = Repo.reload!([user1, user2]) + +    refute user1.is_suggested +    refute user2.is_suggested + +    log_entry = Repo.one(ModerationLog) + +    assert ModerationLog.get_log_entry_message(log_entry) == +             "@#{admin.nickname} removed suggested users: @#{user1.nickname}, @#{user2.nickname}" +  end +    test "PATCH /api/pleroma/admin/users/:nickname/toggle_activation", %{admin: admin, conn: conn} do      user = insert(:user) @@ -906,6 +956,7 @@ defmodule Pleroma.Web.AdminAPI.UserControllerTest do        "display_name" => HTML.strip_tags(user.name || user.nickname),        "is_confirmed" => true,        "is_approved" => true, +      "is_suggested" => false,        "url" => user.ap_id,        "registration_reason" => nil,        "actor_type" => "Person", diff --git a/test/pleroma/web/manifest_controller_test.exs b/test/pleroma/web/manifest_controller_test.exs new file mode 100644 index 000000000..b7a4940db --- /dev/null +++ b/test/pleroma/web/manifest_controller_test.exs @@ -0,0 +1,17 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.ManifestControllerTest do +  use Pleroma.Web.ConnCase + +  setup do +    clear_config([:instance, :name], "Manifest Test") +    clear_config([:manifest, :theme_color], "#ff0000") +  end + +  test "manifest.json", %{conn: conn} do +    conn = get(conn, "/manifest.json") +    assert %{"name" => "Manifest Test", "theme_color" => "#ff0000"} = json_response(conn, 200) +  end +end diff --git a/test/pleroma/web/mastodon_api/controllers/suggestion_controller_test.exs b/test/pleroma/web/mastodon_api/controllers/suggestion_controller_test.exs index 168966fc9..89273e67b 100644 --- a/test/pleroma/web/mastodon_api/controllers/suggestion_controller_test.exs +++ b/test/pleroma/web/mastodon_api/controllers/suggestion_controller_test.exs @@ -4,8 +4,11 @@  defmodule Pleroma.Web.MastodonAPI.SuggestionControllerTest do    use Pleroma.Web.ConnCase, async: true +  alias Pleroma.UserRelationship +  alias Pleroma.Web.CommonAPI +  import Pleroma.Factory -  setup do: oauth_access(["read"]) +  setup do: oauth_access(["read", "write"])    test "returns empty result", %{conn: conn} do      res = @@ -15,4 +18,66 @@ defmodule Pleroma.Web.MastodonAPI.SuggestionControllerTest do      assert res == []    end + +  test "returns v2 suggestions", %{conn: conn} do +    %{id: user_id} = insert(:user, is_suggested: true) + +    res = +      conn +      |> get("/api/v2/suggestions") +      |> json_response_and_validate_schema(200) + +    assert [%{"source" => "staff", "account" => %{"id" => ^user_id}}] = res +  end + +  test "returns v2 suggestions excluding dismissed accounts", %{conn: conn} do +    %{id: user_id} = insert(:user, is_suggested: true) + +    conn +    |> delete("/api/v1/suggestions/#{user_id}") +    |> json_response_and_validate_schema(200) + +    res = +      conn +      |> get("/api/v2/suggestions") +      |> json_response_and_validate_schema(200) + +    assert [] = res +  end + +  test "returns v2 suggestions excluding blocked accounts", %{conn: conn, user: blocker} do +    blocked = insert(:user, is_suggested: true) +    {:ok, _} = CommonAPI.block(blocker, blocked) + +    res = +      conn +      |> get("/api/v2/suggestions") +      |> json_response_and_validate_schema(200) + +    assert [] = res +  end + +  test "returns v2 suggestions excluding followed accounts", %{conn: conn, user: follower} do +    followed = insert(:user, is_suggested: true) +    {:ok, _, _, _} = CommonAPI.follow(follower, followed) + +    res = +      conn +      |> get("/api/v2/suggestions") +      |> json_response_and_validate_schema(200) + +    assert [] = res +  end + +  test "dismiss suggestion", %{conn: conn, user: source} do +    target = insert(:user, is_suggested: true) + +    res = +      conn +      |> delete("/api/v1/suggestions/#{target.id}") +      |> json_response_and_validate_schema(200) + +    assert res == %{} +    assert UserRelationship.exists?(:suggestion_dismiss, source, target) +  end  end diff --git a/test/pleroma/web/mastodon_api/views/account_view_test.exs b/test/pleroma/web/mastodon_api/views/account_view_test.exs index 60881756d..9af588778 100644 --- a/test/pleroma/web/mastodon_api/views/account_view_test.exs +++ b/test/pleroma/web/mastodon_api/views/account_view_test.exs @@ -83,6 +83,7 @@ defmodule Pleroma.Web.MastodonAPI.AccountViewTest do          tags: [],          is_admin: false,          is_moderator: false, +        is_suggested: false,          hide_favorites: true,          hide_followers: false,          hide_follows: false, @@ -183,6 +184,7 @@ defmodule Pleroma.Web.MastodonAPI.AccountViewTest do          tags: [],          is_admin: false,          is_moderator: false, +        is_suggested: false,          hide_favorites: true,          hide_followers: false,          hide_follows: false, diff --git a/test/pleroma/web/mastodon_api/views/suggestion_view_test.exs b/test/pleroma/web/mastodon_api/views/suggestion_view_test.exs new file mode 100644 index 000000000..5aae36ce9 --- /dev/null +++ b/test/pleroma/web/mastodon_api/views/suggestion_view_test.exs @@ -0,0 +1,34 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.MastodonAPI.SuggestionViewTest do +  use Pleroma.DataCase, async: true +  import Pleroma.Factory +  alias Pleroma.Web.MastodonAPI.SuggestionView, as: View + +  test "show.json" do +    user = insert(:user, is_suggested: true) +    json = View.render("show.json", %{user: user, source: :staff, skip_visibility_check: true}) + +    assert json.source == :staff +    assert json.account.id == user.id +  end + +  test "index.json" do +    user1 = insert(:user, is_suggested: true) +    user2 = insert(:user, is_suggested: true) +    user3 = insert(:user, is_suggested: true) + +    [suggestion1, suggestion2, suggestion3] = +      View.render("index.json", %{ +        users: [user1, user2, user3], +        source: :staff, +        skip_visibility_check: true +      }) + +    assert suggestion1.source == :staff +    assert suggestion2.account.id == user2.id +    assert suggestion3.account.url == user3.ap_id +  end +end diff --git a/test/pleroma/web/plugs/frontend_static_plug_test.exs b/test/pleroma/web/plugs/frontend_static_plug_test.exs index 82e955c25..52379b86a 100644 --- a/test/pleroma/web/plugs/frontend_static_plug_test.exs +++ b/test/pleroma/web/plugs/frontend_static_plug_test.exs @@ -94,8 +94,10 @@ defmodule Pleroma.Web.Plugs.FrontendStaticPlugTest do        "internal",        ".well-known",        "nodeinfo", +      "manifest.json",        "auth",        "proxy", +      "phoenix",        "test",        "user_exists",        "check_password" diff --git a/test/pleroma/web/plugs/rate_limiter_test.exs b/test/pleroma/web/plugs/rate_limiter_test.exs index d007e3f26..b7cfde1f7 100644 --- a/test/pleroma/web/plugs/rate_limiter_test.exs +++ b/test/pleroma/web/plugs/rate_limiter_test.exs @@ -48,6 +48,7 @@ defmodule Pleroma.Web.Plugs.RateLimiterTest do      refute RateLimiter.disabled?(build_conn())    end +  @tag :erratic    test "it restricts based on config values" do      limiter_name = :test_plug_opts      scale = 80 @@ -137,6 +138,7 @@ defmodule Pleroma.Web.Plugs.RateLimiterTest do    end    describe "unauthenticated users" do +    @tag :erratic      test "are restricted based on remote IP" do        limiter_name = :test_unauthenticated        clear_config([:rate_limit, limiter_name], [{1000, 5}, {1, 10}]) @@ -174,6 +176,7 @@ defmodule Pleroma.Web.Plugs.RateLimiterTest do        :ok      end +    @tag :erratic      test "can have limits separate from unauthenticated connections" do        limiter_name = :test_authenticated1 @@ -199,6 +202,7 @@ defmodule Pleroma.Web.Plugs.RateLimiterTest do        assert conn.halted      end +    @tag :erratic      test "different users are counted independently" do        limiter_name = :test_authenticated2        clear_config([:rate_limit, limiter_name], [{1, 10}, {1000, 5}]) diff --git a/test/test_helper.exs b/test/test_helper.exs index 0c9783076..9fb41e985 100644 --- a/test/test_helper.exs +++ b/test/test_helper.exs @@ -3,7 +3,7 @@  # SPDX-License-Identifier: AGPL-3.0-only  os_exclude = if :os.type() == {:unix, :darwin}, do: [skip_on_mac: true], else: [] -ExUnit.start(exclude: [:federated | os_exclude]) +ExUnit.start(exclude: [:federated, :erratic] ++ os_exclude)  Ecto.Adapters.SQL.Sandbox.mode(Pleroma.Repo, :manual) | 
