44 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			Elixir
		
	
	
	
	
	
			
		
		
	
	
			44 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			Elixir
		
	
	
	
	
	
| 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
 | 
