diff options
author | Mark Felder <feld@feld.me> | 2023-11-28 18:54:50 +0000 |
---|---|---|
committer | Mark Felder <feld@feld.me> | 2023-12-29 22:50:26 -0500 |
commit | e121e0621467ec6ce87b11f146656ba655feda56 (patch) | |
tree | 4ab538010db81895669b44286ff60114bc68b3b4 /test/support | |
parent | e7d6b835ae908be8e9f6a303a77c87860fb7a377 (diff) | |
download | pleroma-e121e0621467ec6ce87b11f146656ba655feda56.tar.gz pleroma-e121e0621467ec6ce87b11f146656ba655feda56.zip |
Implement a custom uri_equal?/2 to fix comparisons of URLs with unordered query parameters
Diffstat (limited to 'test/support')
-rw-r--r-- | test/support/helpers.ex | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/test/support/helpers.ex b/test/support/helpers.ex index e3bfa73d2..ee18753ed 100644 --- a/test/support/helpers.ex +++ b/test/support/helpers.ex @@ -10,6 +10,22 @@ defmodule Pleroma.Tests.Helpers do require Logger + @doc "Accepts two URLs/URIs and sorts the query parameters before comparing" + def uri_equal?(a, b) do + a_parsed = URI.parse(a) + b_parsed = URI.parse(b) + + query_sort = fn query -> String.split(query, "&") |> Enum.sort() |> Enum.join("&") end + + a_sorted_query = query_sort.(a_parsed.query) + b_sorted_query = query_sort.(b_parsed.query) + + a_sorted = Map.put(a_parsed, :query, a_sorted_query) + b_sorted = Map.put(b_parsed, :query, b_sorted_query) + + match?(^a_sorted, b_sorted) + end + defmacro clear_config(config_path) do quote do clear_config(unquote(config_path)) do |