summaryrefslogtreecommitdiff
path: root/modules/caddyhttp/matchers_test.go
diff options
context:
space:
mode:
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