summaryrefslogtreecommitdiff
path: root/test/support/helpers.ex
diff options
context:
space:
mode:
authorMark Felder <feld@feld.me>2023-11-28 18:54:50 +0000
committerMark Felder <feld@feld.me>2023-12-29 22:50:26 -0500
commite121e0621467ec6ce87b11f146656ba655feda56 (patch)
tree4ab538010db81895669b44286ff60114bc68b3b4 /test/support/helpers.ex
parente7d6b835ae908be8e9f6a303a77c87860fb7a377 (diff)
downloadpleroma-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/helpers.ex')
-rw-r--r--test/support/helpers.ex16
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