From ba61bad4c1191aeb3f12b827cd3f18a8113ab358 Mon Sep 17 00:00:00 2001 From: Yagiz Nizipli Date: Thu, 7 Mar 2024 12:57:47 -0500 Subject: [PATCH 1/3] test: validate missing encoding in to_string --- tests/url_search_params.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/tests/url_search_params.cpp b/tests/url_search_params.cpp index 558c242fd..6b584226a 100644 --- a/tests/url_search_params.cpp +++ b/tests/url_search_params.cpp @@ -219,3 +219,14 @@ TEST(url_search_params, iterators) { SUCCEED(); } + +// https://github.com/cloudflare/workerd/issues/1777 +TEST(url_search_params, test_to_string_encoding) { + auto search_params = ada::url_search_params("q1=foo&q2=foo+bar&q3=foo bar&q4=foo/bar"); + ASSERT_EQ(search_params.get("q1").value(), "foo"); + ASSERT_EQ(search_params.get("q2").value(), "foo bar"); + ASSERT_EQ(search_params.get("q3").value(), "foo bar"); + ASSERT_EQ(search_params.get("q4").value(), "foo/bar"); + ASSERT_EQ(search_params.to_string(), "q1=foo&q2=foo+bar&q3=foo+bar&q4=foo%2Fbar"); + SUCCEED(); +} From 0d523d8e90e178076a9a288c00026ec20493a68f Mon Sep 17 00:00:00 2001 From: Yagiz Nizipli Date: Thu, 7 Mar 2024 13:07:33 -0500 Subject: [PATCH 2/3] fix: update encoding set to represent reality --- include/ada/character_sets-inl.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/ada/character_sets-inl.h b/include/ada/character_sets-inl.h index 1813f4927..0da407e1b 100644 --- a/include/ada/character_sets-inl.h +++ b/include/ada/character_sets-inl.h @@ -458,7 +458,7 @@ constexpr uint8_t WWW_FORM_URLENCODED_PERCENT_ENCODE[32] = { // 20 21 22 23 24 25 26 27 0x00 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80, // 28 29 2A 2B 2C 2D 2E 2F - 0x01 | 0x02 | 0x00 | 0x08 | 0x10 | 0x00 | 0x00 | 0x00, + 0x01 | 0x02 | 0x00 | 0x08 | 0x10 | 0x00 | 0x00 | 0x80, // 30 31 32 33 34 35 36 37 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00, // 38 39 3A 3B 3C 3D 3E 3F From a4c9ca4c49fd993d56809af77097941e7ee7ee08 Mon Sep 17 00:00:00 2001 From: Yagiz Nizipli Date: Thu, 7 Mar 2024 13:09:58 -0500 Subject: [PATCH 3/3] fix formatting --- tests/url_search_params.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tests/url_search_params.cpp b/tests/url_search_params.cpp index 6b584226a..2aee98d5e 100644 --- a/tests/url_search_params.cpp +++ b/tests/url_search_params.cpp @@ -222,11 +222,13 @@ TEST(url_search_params, iterators) { // https://github.com/cloudflare/workerd/issues/1777 TEST(url_search_params, test_to_string_encoding) { - auto search_params = ada::url_search_params("q1=foo&q2=foo+bar&q3=foo bar&q4=foo/bar"); + auto search_params = + ada::url_search_params("q1=foo&q2=foo+bar&q3=foo bar&q4=foo/bar"); ASSERT_EQ(search_params.get("q1").value(), "foo"); ASSERT_EQ(search_params.get("q2").value(), "foo bar"); ASSERT_EQ(search_params.get("q3").value(), "foo bar"); ASSERT_EQ(search_params.get("q4").value(), "foo/bar"); - ASSERT_EQ(search_params.to_string(), "q1=foo&q2=foo+bar&q3=foo+bar&q4=foo%2Fbar"); + ASSERT_EQ(search_params.to_string(), + "q1=foo&q2=foo+bar&q3=foo+bar&q4=foo%2Fbar"); SUCCEED(); }