diff options
Diffstat (limited to 'test/plugs')
| -rw-r--r-- | test/plugs/authentication_plug_test.exs | 44 | ||||
| -rw-r--r-- | test/plugs/http_signature_plug_test.exs | 44 | 
2 files changed, 69 insertions, 19 deletions
| diff --git a/test/plugs/authentication_plug_test.exs b/test/plugs/authentication_plug_test.exs index 5480dab43..729ac8ae5 100644 --- a/test/plugs/authentication_plug_test.exs +++ b/test/plugs/authentication_plug_test.exs @@ -37,22 +37,24 @@ defmodule Pleroma.Plugs.AuthenticationPlugTest do    describe "without an authorization header" do      test "it halts the application" do -      conn = build_conn() -      |> Plug.Session.call(Plug.Session.init(@session_opts)) -      |> fetch_session -      |> AuthenticationPlug.call(%{}) +      conn = +        build_conn() +        |> Plug.Session.call(Plug.Session.init(@session_opts)) +        |> fetch_session +        |> AuthenticationPlug.call(%{})        assert conn.status == 403        assert conn.halted == true      end      test "it assigns a nil user if the 'optional' option is used" do -      conn = build_conn() -      |> Plug.Session.call(Plug.Session.init(@session_opts)) -      |> fetch_session -      |> AuthenticationPlug.call(%{optional: true}) +      conn = +        build_conn() +        |> Plug.Session.call(Plug.Session.init(@session_opts)) +        |> fetch_session +        |> AuthenticationPlug.call(%{optional: true}) -      assert %{ user: nil } == conn.assigns +      assert %{user: nil} == conn.assigns      end    end @@ -73,9 +75,9 @@ defmodule Pleroma.Plugs.AuthenticationPlugTest do          build_conn()          |> Plug.Session.call(Plug.Session.init(@session_opts))          |> fetch_session -        |> AuthenticationPlug.call(%{optional: true, fetcher: &fetch_nil/1 }) +        |> AuthenticationPlug.call(%{optional: true, fetcher: &fetch_nil/1}) -      assert %{ user: nil } == conn.assigns +      assert %{user: nil} == conn.assigns      end    end @@ -113,7 +115,7 @@ defmodule Pleroma.Plugs.AuthenticationPlugTest do          |> put_req_header("authorization", header)          |> AuthenticationPlug.call(opts) -      assert %{ user: nil } == conn.assigns +      assert %{user: nil} == conn.assigns      end    end @@ -126,13 +128,14 @@ defmodule Pleroma.Plugs.AuthenticationPlugTest do        header = basic_auth_enc("dude", "guy") -      conn = conn +      conn = +        conn          |> Plug.Session.call(Plug.Session.init(@session_opts))          |> fetch_session          |> put_req_header("authorization", header)          |> AuthenticationPlug.call(opts) -      assert %{ user: @user } == conn.assigns +      assert %{user: @user} == conn.assigns        assert get_session(conn, :user_id) == @user.id        assert conn.halted == false      end @@ -147,7 +150,8 @@ defmodule Pleroma.Plugs.AuthenticationPlugTest do        header = basic_auth_enc("dude", "guy") -      conn = conn +      conn = +        conn          |> Plug.Session.call(Plug.Session.init(@session_opts))          |> fetch_session          |> put_req_header("authorization", header) @@ -167,14 +171,15 @@ defmodule Pleroma.Plugs.AuthenticationPlugTest do        header = basic_auth_enc("dude", "THIS IS WRONG") -      conn = conn +      conn = +        conn          |> Plug.Session.call(Plug.Session.init(@session_opts))          |> fetch_session          |> put_session(:user_id, @user.id)          |> put_req_header("authorization", header)          |> AuthenticationPlug.call(opts) -      assert %{ user: @user } == conn.assigns +      assert %{user: @user} == conn.assigns        assert get_session(conn, :user_id) == @user.id        assert conn.halted == false      end @@ -182,8 +187,9 @@ defmodule Pleroma.Plugs.AuthenticationPlugTest do    describe "with an assigned user" do      test "it does nothing, returning the incoming conn", %{conn: conn} do -      conn = conn -      |> assign(:user, @user) +      conn = +        conn +        |> assign(:user, @user)        conn_result = AuthenticationPlug.call(conn, %{}) diff --git a/test/plugs/http_signature_plug_test.exs b/test/plugs/http_signature_plug_test.exs new file mode 100644 index 000000000..a15c5b470 --- /dev/null +++ b/test/plugs/http_signature_plug_test.exs @@ -0,0 +1,44 @@ +defmodule Pleroma.Web.Plugs.HTTPSignaturePlugTest do +  use Pleroma.Web.ConnCase +  alias Pleroma.Web.HTTPSignatures +  alias Pleroma.Web.Plugs.HTTPSignaturePlug + +  import Plug.Conn +  import Mock + +  test "it call HTTPSignatures to check validity if the actor sighed it" do +    params = %{"actor" => "http://mastodon.example.org/users/admin"} +    conn = build_conn(:get, "/doesntmattter", params) + +    with_mock HTTPSignatures, validate_conn: fn _ -> true end do +      conn = +        conn +        |> put_req_header( +          "signature", +          "keyId=\"http://mastodon.example.org/users/admin#main-key" +        ) +        |> HTTPSignaturePlug.call(%{}) + +      assert conn.assigns.valid_signature == true +      assert called(HTTPSignatures.validate_conn(:_)) +    end +  end + +  test "bails out early if the signature isn't by the activity actor" do +    params = %{"actor" => "https://mst3k.interlinked.me/users/luciferMysticus"} +    conn = build_conn(:get, "/doesntmattter", params) + +    with_mock HTTPSignatures, validate_conn: fn _ -> false end do +      conn = +        conn +        |> put_req_header( +          "signature", +          "keyId=\"http://mastodon.example.org/users/admin#main-key" +        ) +        |> HTTPSignaturePlug.call(%{}) + +      assert conn.assigns.valid_signature == false +      refute called(HTTPSignatures.validate_conn(:_)) +    end +  end +end | 
