diff options
Diffstat (limited to 'test/plugs')
| -rw-r--r-- | test/plugs/authentication_plug_test.exs | 7 | ||||
| -rw-r--r-- | test/plugs/legacy_authentication_plug_test.exs | 6 | ||||
| -rw-r--r-- | test/plugs/oauth_scopes_plug_test.exs | 12 | ||||
| -rw-r--r-- | test/plugs/rate_limiter_test.exs | 31 | 
4 files changed, 43 insertions, 13 deletions
diff --git a/test/plugs/authentication_plug_test.exs b/test/plugs/authentication_plug_test.exs index ae2f3f8ec..646bda9d3 100644 --- a/test/plugs/authentication_plug_test.exs +++ b/test/plugs/authentication_plug_test.exs @@ -6,6 +6,8 @@ defmodule Pleroma.Plugs.AuthenticationPlugTest do    use Pleroma.Web.ConnCase, async: true    alias Pleroma.Plugs.AuthenticationPlug +  alias Pleroma.Plugs.OAuthScopesPlug +  alias Pleroma.Plugs.PlugHelper    alias Pleroma.User    import ExUnit.CaptureLog @@ -36,13 +38,16 @@ defmodule Pleroma.Plugs.AuthenticationPlugTest do      assert ret_conn == conn    end -  test "with a correct password in the credentials, it assigns the auth_user", %{conn: conn} do +  test "with a correct password in the credentials, " <> +         "it assigns the auth_user and marks OAuthScopesPlug as skipped", +       %{conn: conn} do      conn =        conn        |> assign(:auth_credentials, %{password: "guy"})        |> AuthenticationPlug.call(%{})      assert conn.assigns.user == conn.assigns.auth_user +    assert PlugHelper.plug_skipped?(conn, OAuthScopesPlug)    end    test "with a wrong password in the credentials, it does nothing", %{conn: conn} do diff --git a/test/plugs/legacy_authentication_plug_test.exs b/test/plugs/legacy_authentication_plug_test.exs index 7559de7d3..3b8c07627 100644 --- a/test/plugs/legacy_authentication_plug_test.exs +++ b/test/plugs/legacy_authentication_plug_test.exs @@ -8,6 +8,8 @@ defmodule Pleroma.Plugs.LegacyAuthenticationPlugTest do    import Pleroma.Factory    alias Pleroma.Plugs.LegacyAuthenticationPlug +  alias Pleroma.Plugs.OAuthScopesPlug +  alias Pleroma.Plugs.PlugHelper    alias Pleroma.User    setup do @@ -36,7 +38,8 @@ defmodule Pleroma.Plugs.LegacyAuthenticationPlugTest do    end    @tag :skip_on_mac -  test "it authenticates the auth_user if present and password is correct and resets the password", +  test "if `auth_user` is present and password is correct, " <> +         "it authenticates the user, resets the password, marks OAuthScopesPlug as skipped",         %{           conn: conn,           user: user @@ -49,6 +52,7 @@ defmodule Pleroma.Plugs.LegacyAuthenticationPlugTest do      conn = LegacyAuthenticationPlug.call(conn, %{})      assert conn.assigns.user.id == user.id +    assert PlugHelper.plug_skipped?(conn, OAuthScopesPlug)    end    @tag :skip_on_mac diff --git a/test/plugs/oauth_scopes_plug_test.exs b/test/plugs/oauth_scopes_plug_test.exs index e79ecf263..edbc94227 100644 --- a/test/plugs/oauth_scopes_plug_test.exs +++ b/test/plugs/oauth_scopes_plug_test.exs @@ -16,6 +16,18 @@ defmodule Pleroma.Plugs.OAuthScopesPlugTest do      :ok    end +  test "is not performed if marked as skipped", %{conn: conn} do +    with_mock OAuthScopesPlug, [:passthrough], perform: &passthrough([&1, &2]) do +      conn = +        conn +        |> OAuthScopesPlug.skip_plug() +        |> OAuthScopesPlug.call(%{scopes: ["random_scope"]}) + +      refute called(OAuthScopesPlug.perform(:_, :_)) +      refute conn.halted +    end +  end +    test "if `token.scopes` fulfills specified 'any of' conditions, " <>           "proceeds with no op",         %{conn: conn} do diff --git a/test/plugs/rate_limiter_test.exs b/test/plugs/rate_limiter_test.exs index 0ce9f3a0a..4d3d694f4 100644 --- a/test/plugs/rate_limiter_test.exs +++ b/test/plugs/rate_limiter_test.exs @@ -5,8 +5,10 @@  defmodule Pleroma.Plugs.RateLimiterTest do    use Pleroma.Web.ConnCase +  alias Phoenix.ConnTest    alias Pleroma.Config    alias Pleroma.Plugs.RateLimiter +  alias Plug.Conn    import Pleroma.Factory    import Pleroma.Tests.Helpers, only: [clear_config: 1, clear_config: 2] @@ -36,8 +38,15 @@ defmodule Pleroma.Plugs.RateLimiterTest do    end    test "it is disabled if it remote ip plug is enabled but no remote ip is found" do -    Config.put([Pleroma.Web.Endpoint, :http, :ip], {127, 0, 0, 1}) -    assert RateLimiter.disabled?(Plug.Conn.assign(build_conn(), :remote_ip_found, false)) +    assert RateLimiter.disabled?(Conn.assign(build_conn(), :remote_ip_found, false)) +  end + +  test "it is enabled if remote ip found" do +    refute RateLimiter.disabled?(Conn.assign(build_conn(), :remote_ip_found, true)) +  end + +  test "it is enabled if remote_ip_found flag doesn't exist" do +    refute RateLimiter.disabled?(build_conn())    end    test "it restricts based on config values" do @@ -58,7 +67,7 @@ defmodule Pleroma.Plugs.RateLimiterTest do      end      conn = RateLimiter.call(conn, plug_opts) -    assert %{"error" => "Throttled"} = Phoenix.ConnTest.json_response(conn, :too_many_requests) +    assert %{"error" => "Throttled"} = ConnTest.json_response(conn, :too_many_requests)      assert conn.halted      Process.sleep(50) @@ -68,7 +77,7 @@ defmodule Pleroma.Plugs.RateLimiterTest do      conn = RateLimiter.call(conn, plug_opts)      assert {1, 4} = RateLimiter.inspect_bucket(conn, limiter_name, plug_opts) -    refute conn.status == Plug.Conn.Status.code(:too_many_requests) +    refute conn.status == Conn.Status.code(:too_many_requests)      refute conn.resp_body      refute conn.halted    end @@ -98,7 +107,7 @@ defmodule Pleroma.Plugs.RateLimiterTest do        plug_opts = RateLimiter.init(name: limiter_name, params: ["id"])        conn = build_conn(:get, "/?id=1") -      conn = Plug.Conn.fetch_query_params(conn) +      conn = Conn.fetch_query_params(conn)        conn_2 = build_conn(:get, "/?id=2")        RateLimiter.call(conn, plug_opts) @@ -119,7 +128,7 @@ defmodule Pleroma.Plugs.RateLimiterTest do        id = "100"        conn = build_conn(:get, "/?id=#{id}") -      conn = Plug.Conn.fetch_query_params(conn) +      conn = Conn.fetch_query_params(conn)        conn_2 = build_conn(:get, "/?id=#{101}")        RateLimiter.call(conn, plug_opts) @@ -147,13 +156,13 @@ defmodule Pleroma.Plugs.RateLimiterTest do        conn = RateLimiter.call(conn, plug_opts) -      assert %{"error" => "Throttled"} = Phoenix.ConnTest.json_response(conn, :too_many_requests) +      assert %{"error" => "Throttled"} = ConnTest.json_response(conn, :too_many_requests)        assert conn.halted        conn_2 = RateLimiter.call(conn_2, plug_opts)        assert {1, 4} = RateLimiter.inspect_bucket(conn_2, limiter_name, plug_opts) -      refute conn_2.status == Plug.Conn.Status.code(:too_many_requests) +      refute conn_2.status == Conn.Status.code(:too_many_requests)        refute conn_2.resp_body        refute conn_2.halted      end @@ -187,7 +196,7 @@ defmodule Pleroma.Plugs.RateLimiterTest do        conn = RateLimiter.call(conn, plug_opts) -      assert %{"error" => "Throttled"} = Phoenix.ConnTest.json_response(conn, :too_many_requests) +      assert %{"error" => "Throttled"} = ConnTest.json_response(conn, :too_many_requests)        assert conn.halted      end @@ -210,12 +219,12 @@ defmodule Pleroma.Plugs.RateLimiterTest do        end        conn = RateLimiter.call(conn, plug_opts) -      assert %{"error" => "Throttled"} = Phoenix.ConnTest.json_response(conn, :too_many_requests) +      assert %{"error" => "Throttled"} = ConnTest.json_response(conn, :too_many_requests)        assert conn.halted        conn_2 = RateLimiter.call(conn_2, plug_opts)        assert {1, 4} = RateLimiter.inspect_bucket(conn_2, limiter_name, plug_opts) -      refute conn_2.status == Plug.Conn.Status.code(:too_many_requests) +      refute conn_2.status == Conn.Status.code(:too_many_requests)        refute conn_2.resp_body        refute conn_2.halted      end  | 
