logo

pleroma

My custom branche(s) on git.pleroma.social/pleroma/pleroma git clone https://hacktivis.me/git/pleroma.git

digest_plug_test.exs (1734B)


  1. # Pleroma: A lightweight social networking server
  2. # Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
  3. # SPDX-License-Identifier: AGPL-3.0-only
  4. defmodule Pleroma.Web.Plugs.DigestPlugTest do
  5. use ExUnit.Case, async: true
  6. use Plug.Test
  7. test "digest algorithm is taken from digest header" do
  8. body = "{\"hello\": \"world\"}"
  9. digest = "X48E9qOokqqrvdts8nOJRJN3OWDUoyWxBf7kbu9DBPE="
  10. {:ok, ^body, conn} =
  11. :get
  12. |> conn("/", body)
  13. |> put_req_header("content-type", "application/json")
  14. |> put_req_header("digest", "sha-256=" <> digest)
  15. |> Pleroma.Web.Plugs.DigestPlug.read_body([])
  16. assert conn.assigns[:digest] == "sha-256=" <> digest
  17. {:ok, ^body, conn} =
  18. :get
  19. |> conn("/", body)
  20. |> put_req_header("content-type", "application/json")
  21. |> put_req_header("digest", "SHA-256=" <> digest)
  22. |> Pleroma.Web.Plugs.DigestPlug.read_body([])
  23. assert conn.assigns[:digest] == "SHA-256=" <> digest
  24. end
  25. test "error if digest algorithm is invalid" do
  26. body = "{\"hello\": \"world\"}"
  27. digest = "X48E9qOokqqrvdts8nOJRJN3OWDUoyWxBf7kbu9DBPE="
  28. assert_raise ArgumentError, "invalid value for digest algorithm, got: MD5", fn ->
  29. :get
  30. |> conn("/", body)
  31. |> put_req_header("content-type", "application/json")
  32. |> put_req_header("digest", "MD5=" <> digest)
  33. |> Pleroma.Web.Plugs.DigestPlug.read_body([])
  34. end
  35. assert_raise ArgumentError, "invalid value for digest algorithm, got: md5", fn ->
  36. :get
  37. |> conn("/", body)
  38. |> put_req_header("content-type", "application/json")
  39. |> put_req_header("digest", "md5=" <> digest)
  40. |> Pleroma.Web.Plugs.DigestPlug.read_body([])
  41. end
  42. end
  43. end