summaryrefslogtreecommitdiff
path: root/modules/caddyhttp/matchers_test.go
diff options
context:
space:
mode:
authorMark Sargent <99003+sarge@users.noreply.github.com>2019-11-30 09:05:22 +1300
committerMatt Holt <mholt@users.noreply.github.com>2019-11-29 13:05:22 -0700
commit8b7d6a9ee8b7f62142df3516a9d9b96031be33fd (patch)
tree95796a3c617515b36453eb81855cb983f71070ac /modules/caddyhttp/matchers_test.go
parent7c7ef8d40e3af35444d522debc95451c04666615 (diff)
v2: fixes query matcher parsing (#2901)
* fixes query matcher parsing * return correct argument error when parsing query matcher
Diffstat (limited to 'modules/caddyhttp/matchers_test.go')
-rw-r--r--modules/caddyhttp/matchers_test.go56
1 files changed, 56 insertions, 0 deletions
diff --git a/modules/caddyhttp/matchers_test.go b/modules/caddyhttp/matchers_test.go
index 9fa7d8e..f5ec034 100644
--- a/modules/caddyhttp/matchers_test.go
+++ b/modules/caddyhttp/matchers_test.go
@@ -391,6 +391,62 @@ func TestHeaderMatcher(t *testing.T) {
}
}
+func TestQueryMatcher(t *testing.T) {
+ for i, tc := range []struct {
+ scenario string
+ match MatchQuery
+ input string
+ expect bool
+ }{
+ {
+ scenario: "non match against a specific value",
+ match: MatchQuery{"debug": []string{"1"}},
+ input: "/",
+ expect: false,
+ },
+ {
+ scenario: "match against a specific value",
+ match: MatchQuery{"debug": []string{"1"}},
+ input: "/?debug=1",
+ expect: true,
+ },
+ {
+ scenario: "match against a wildcard",
+ match: MatchQuery{"debug": []string{"*"}},
+ input: "/?debug=something",
+ expect: true,
+ },
+ {
+ scenario: "non match against a wildcarded",
+ match: MatchQuery{"debug": []string{"*"}},
+ input: "/?other=something",
+ expect: false,
+ },
+ {
+ scenario: "match against an empty value",
+ match: MatchQuery{"debug": []string{""}},
+ input: "/?debug",
+ expect: true,
+ },
+ {
+ scenario: "non match against an empty value",
+ match: MatchQuery{"debug": []string{""}},
+ input: "/?someparam",
+ expect: false,
+ },
+ } {
+
+ u, _ := url.Parse(tc.input)
+
+ req := &http.Request{URL: u}
+ actual := tc.match.Match(req)
+ if actual != tc.expect {
+ t.Errorf("Test %d %v: Expected %t, got %t for '%s'", i, tc.match, tc.expect, actual, tc.input)
+ continue
+ }
+ }
+}
+
func TestHeaderREMatcher(t *testing.T) {
for i, tc := range []struct {
match MatchHeaderRE