From 9896b64f54d4568a7b42ddd11e647021a20c1378 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Tue, 28 Nov 2023 17:17:46 +0000 Subject: Elixir 1.15: Chase the Logger.warn deprecation --- test/support/helpers.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'test/support/helpers.ex') diff --git a/test/support/helpers.ex b/test/support/helpers.ex index 0bd487f39..e3bfa73d2 100644 --- a/test/support/helpers.ex +++ b/test/support/helpers.ex @@ -41,7 +41,7 @@ defmodule Pleroma.Tests.Helpers do # NOTE: `clear_config([section, key], value)` != `clear_config([section], key: value)` (!) # Displaying a warning to prevent unintentional clearing of all but one keys in section if Keyword.keyword?(temp_setting) and length(temp_setting) == 1 do - Logger.warn( + Logger.warning( "Please change `clear_config([section], key: value)` to `clear_config([section, key], value)`" ) end -- cgit v1.2.3 From e121e0621467ec6ce87b11f146656ba655feda56 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Tue, 28 Nov 2023 18:54:50 +0000 Subject: Implement a custom uri_equal?/2 to fix comparisons of URLs with unordered query parameters --- test/support/helpers.ex | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'test/support/helpers.ex') 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 -- cgit v1.2.3 From e7c6410192cfb115246acd4f9bf80f0c42aece90 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Mon, 15 Jan 2024 17:07:13 -0500 Subject: Add Pleroma.Support.Helpers.uri_query_sort/1 for easy sorting of a URL's query parameters --- test/support/helpers.ex | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) (limited to 'test/support/helpers.ex') diff --git a/test/support/helpers.ex b/test/support/helpers.ex index ee18753ed..bcdc49e4f 100644 --- a/test/support/helpers.ex +++ b/test/support/helpers.ex @@ -12,18 +12,24 @@ defmodule Pleroma.Tests.Helpers do @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) + a_sorted = uri_query_sort(a) + b_sorted = uri_query_sort(b) - query_sort = fn query -> String.split(query, "&") |> Enum.sort() |> Enum.join("&") end + match?(^a_sorted, b_sorted) + end - a_sorted_query = query_sort.(a_parsed.query) - b_sorted_query = query_sort.(b_parsed.query) + @doc "Accepts a URL/URI and sorts the query parameters" + def uri_query_sort(uri) do + parsed = URI.parse(uri) - a_sorted = Map.put(a_parsed, :query, a_sorted_query) - b_sorted = Map.put(b_parsed, :query, b_sorted_query) + sorted_query = + String.split(parsed.query, "&") + |> Enum.sort() + |> Enum.join("&") - match?(^a_sorted, b_sorted) + parsed + |> Map.put(:query, sorted_query) + |> URI.to_string() end defmacro clear_config(config_path) do -- cgit v1.2.3 From 8bd8ee03c23bf1d318f67215195a1aca7465e3ae Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Mon, 15 Jan 2024 17:32:15 -0500 Subject: Add Pleroma.Test.Helpers.get_query_parameter/2 to retrieve specific query parameter values --- test/support/helpers.ex | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'test/support/helpers.ex') diff --git a/test/support/helpers.ex b/test/support/helpers.ex index bcdc49e4f..7fa6c31a4 100644 --- a/test/support/helpers.ex +++ b/test/support/helpers.ex @@ -32,6 +32,17 @@ defmodule Pleroma.Tests.Helpers do |> URI.to_string() end + @doc "Returns the value of the specified query parameter for the provided URL" + def get_query_parameter(url, param) do + url + |> URI.parse() + |> Map.get(:query) + |> URI.query_decoder() + |> Enum.to_list() + |> Enum.into(%{}, fn {x, y} -> {x, y} end) + |> Map.get(param) + end + defmacro clear_config(config_path) do quote do clear_config(unquote(config_path)) do -- cgit v1.2.3