diff options
| author | kaniini <ariadne@dereferenced.org> | 2019-07-19 16:57:24 +0000 | 
|---|---|---|
| committer | kaniini <ariadne@dereferenced.org> | 2019-07-19 16:57:24 +0000 | 
| commit | 716afc83cec6b61a4111fd5c9ea74bf4a6c065ae (patch) | |
| tree | 1367d82c0546d688ea82410b3d7c8a65ee93a007 /test/plugs/mapped_identity_to_signature_plug_test.exs | |
| parent | 6561709742dacc084ca2dc6a47b1c516b7f2ab78 (diff) | |
| parent | c947cfec5ab49f90fb2de83f61bda77568298d6f (diff) | |
| download | pleroma-716afc83cec6b61a4111fd5c9ea74bf4a6c065ae.tar.gz pleroma-716afc83cec6b61a4111fd5c9ea74bf4a6c065ae.zip  | |
Merge branch 'refactor/http-signature-plug' into 'develop'
http signature plug: separation of concerns
See merge request pleroma/pleroma!1449
Diffstat (limited to 'test/plugs/mapped_identity_to_signature_plug_test.exs')
| -rw-r--r-- | test/plugs/mapped_identity_to_signature_plug_test.exs | 59 | 
1 files changed, 59 insertions, 0 deletions
diff --git a/test/plugs/mapped_identity_to_signature_plug_test.exs b/test/plugs/mapped_identity_to_signature_plug_test.exs new file mode 100644 index 000000000..bb45d9edf --- /dev/null +++ b/test/plugs/mapped_identity_to_signature_plug_test.exs @@ -0,0 +1,59 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2018 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.Plugs.MappedSignatureToIdentityPlugTest do +  use Pleroma.Web.ConnCase +  alias Pleroma.Web.Plugs.MappedSignatureToIdentityPlug + +  import Tesla.Mock +  import Plug.Conn + +  setup do +    mock(fn env -> apply(HttpRequestMock, :request, [env]) end) +    :ok +  end + +  defp set_signature(conn, key_id) do +    conn +    |> put_req_header("signature", "keyId=\"#{key_id}\"") +    |> assign(:valid_signature, true) +  end + +  test "it successfully maps a valid identity with a valid signature" do +    conn = +      build_conn(:get, "/doesntmattter") +      |> set_signature("http://mastodon.example.org/users/admin") +      |> MappedSignatureToIdentityPlug.call(%{}) + +    refute is_nil(conn.assigns.user) +  end + +  test "it successfully maps a valid identity with a valid signature with payload" do +    conn = +      build_conn(:post, "/doesntmattter", %{"actor" => "http://mastodon.example.org/users/admin"}) +      |> set_signature("http://mastodon.example.org/users/admin") +      |> MappedSignatureToIdentityPlug.call(%{}) + +    refute is_nil(conn.assigns.user) +  end + +  test "it considers a mapped identity to be invalid when it mismatches a payload" do +    conn = +      build_conn(:post, "/doesntmattter", %{"actor" => "http://mastodon.example.org/users/admin"}) +      |> set_signature("https://niu.moe/users/rye") +      |> MappedSignatureToIdentityPlug.call(%{}) + +    assert %{valid_signature: false} == conn.assigns +  end + +  @tag skip: "known breakage; the testsuite presently depends on it" +  test "it considers a mapped identity to be invalid when the identity cannot be found" do +    conn = +      build_conn(:post, "/doesntmattter", %{"actor" => "http://mastodon.example.org/users/admin"}) +      |> set_signature("http://niu.moe/users/rye") +      |> MappedSignatureToIdentityPlug.call(%{}) + +    assert %{valid_signature: false} == conn.assigns +  end +end  | 
