From 07eb99bdb669121bcd27559d9f11d0633f5a8877 Mon Sep 17 00:00:00 2001 From: Stanislav Zapolsky Date: Mon, 3 Dec 2018 15:54:29 +0500 Subject: [PATCH] rule: Ignore query parameters when matching url in rules. (#139) Signed-off-by: Stanislav Zapolsky --- rule/rule.go | 3 ++- rule/rule_test.go | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/rule/rule.go b/rule/rule.go index 21ada0f63e..e297b32fd1 100644 --- a/rule/rule.go +++ b/rule/rule.go @@ -22,6 +22,7 @@ package rule import ( "encoding/json" + "fmt" "hash/crc32" "net/url" "regexp" @@ -124,7 +125,7 @@ func (r *Rule) IsMatching(method string, u *url.URL) error { return errors.WithStack(err) } - if !c.MatchString(u.String()) { + if !c.MatchString(fmt.Sprintf("%s://%s%s", u.Scheme, u.Host, u.Path)) { return errors.Errorf("rule %s does not match URL %s", r.ID, u) } diff --git a/rule/rule_test.go b/rule/rule_test.go index c8abf62a3e..80d32aa282 100644 --- a/rule/rule_test.go +++ b/rule/rule_test.go @@ -43,5 +43,6 @@ func TestRule(t *testing.T) { } assert.NoError(t, r.IsMatching("DELETE", mustParse(t, "https://localhost/users/1234"))) + assert.NoError(t, r.IsMatching("DELETE", mustParse(t, "https://localhost/users/1234?key=value&key1=value1"))) assert.Error(t, r.IsMatching("DELETE", mustParse(t, "https://localhost/users/abcd"))) }