summaryrefslogtreecommitdiff
path: root/modules/caddyhttp/matchers_test.go
diff options
context:
space:
mode:
authorMatthew Holt <mholt@users.noreply.github.com>2019-11-30 17:53:38 -0700
committerMatthew Holt <mholt@users.noreply.github.com>2019-11-30 17:53:38 -0700
commit52ae5f70d24ad1153ead53e132505afa8e7fdbcc (patch)
tree4698f939807495f3c94c2093f8c51883907b860d /modules/caddyhttp/matchers_test.go
parent44f23a67bbc00c7325ba02cfe27392db78c251bc (diff)
parent8b7d6a9ee8b7f62142df3516a9d9b96031be33fd (diff)
Merge branch 'v2' of ssh://github.com/caddyserver/caddy into v2
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