From e3656d04dddf4e8812497830f260e01965595c01 Mon Sep 17 00:00:00 2001 From: Hunter Kehoe Date: Mon, 6 Mar 2023 19:16:18 -0700 Subject: [PATCH] convert query parameters to lowercase before reading them --- server/server_test.go | 12 ++++++++++++ server/util.go | 7 ++++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/server/server_test.go b/server/server_test.go index 032ec6ff..998b78cc 100644 --- a/server/server_test.go +++ b/server/server_test.go @@ -309,6 +309,18 @@ func TestServer_PublishGETOnlyOneTopic(t *testing.T) { require.Equal(t, 404, response.Code) } +func TestServer_PublishCaseInsensitiveQueryParam(t *testing.T) { + s := newTestServer(t, newTestConfig(t)) + response := request(t, s, "GET", "/mytopic/publish?MESSAGE=testing", "", nil) + require.Equal(t, "testing", toMessage(t, response.Body.String()).Message) +} + +func TestServer_PublishInvalidQueryParam(t *testing.T) { + s := newTestServer(t, newTestConfig(t)) + response := request(t, s, "GET", "/mytopic/publish?MESSAGE=testing&fakeParam=test", "", nil) + require.Equal(t, "testing", toMessage(t, response.Body.String()).Message) +} + func TestServer_PublishNoCache(t *testing.T) { s := newTestServer(t, newTestConfig(t)) diff --git a/server/util.go b/server/util.go index c719118b..c1b0f3e3 100644 --- a/server/util.go +++ b/server/util.go @@ -48,8 +48,13 @@ func readHeaderParam(r *http.Request, names ...string) string { } func readQueryParam(r *http.Request, names ...string) string { + lowerQueryParams := make(map[string]string, 0) + for k, vs := range r.URL.Query() { + lowerQueryParams[strings.ToLower(k)] = vs[0] + } + for _, name := range names { - value := r.URL.Query().Get(strings.ToLower(name)) + value := lowerQueryParams[strings.ToLower(name)] if value != "" { return strings.TrimSpace(value) }