diff options
author | Maxim Filippov <colixer@gmail.com> | 2019-07-24 02:42:28 +0300 |
---|---|---|
committer | Maxim Filippov <colixer@gmail.com> | 2019-07-24 02:42:28 +0300 |
commit | f46805bb40bf29cd67acb33b6b65ed1e4e28d3e1 (patch) | |
tree | 7542dbbe178183e4dd3c3451aa7744f18117fa37 /test/plugs/mapped_identity_to_signature_plug_test.exs | |
parent | 03471151d6089e318abaf5265d42ffedf7a5b902 (diff) | |
parent | 1a751529fb2cd3929e3373a908bec5db5cc32f1b (diff) | |
download | pleroma-f46805bb40bf29cd67acb33b6b65ed1e4e28d3e1.tar.gz pleroma-f46805bb40bf29cd67acb33b6b65ed1e4e28d3e1.zip |
Merge branch 'develop' into feature/admin-api-user-statuses
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 |