Skip to content

Commit

Permalink
Add tests for query params negative logic
Browse files Browse the repository at this point in the history
  • Loading branch information
Luan van Pletsen committed Apr 11, 2018
1 parent 3d405e1 commit 59dfcf3
Show file tree
Hide file tree
Showing 2 changed files with 97 additions and 9 deletions.
12 changes: 6 additions & 6 deletions mw_url_rewrite.go
Original file line number Diff line number Diff line change
Expand Up @@ -351,8 +351,6 @@ func checkHeaderTrigger(r *http.Request, options map[string]apidef.StringRegexMa
if ok {
for i, v := range vals {
triggered, b := mr.Check(v)
println("HEY CAN YOU SEE ME?")
println(triggered)
if triggered {
fCount++
if len(b) > 0 {
Expand Down Expand Up @@ -384,11 +382,13 @@ func checkQueryString(r *http.Request, options map[string]apidef.StringRegexMap,
vals, ok := qvals[mv]
if ok {
for i, v := range vals {
_, b := mr.Check(v)
if len(b) > 0 {
kn := fmt.Sprintf("trigger-%d-%s-%d", triggernum, mv, i)
contextData[kn] = b
triggered, b := mr.Check(v)
if triggered {
fCount++
if len(b) > 0 {
kn := fmt.Sprintf("trigger-%d-%s-%d", triggernum, mv, i)
contextData[kn] = b
}
}
}
}
Expand Down
94 changes: 91 additions & 3 deletions mw_url_rewrite_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -262,6 +262,36 @@ func TestRewriterTriggers(t *testing.T) {
func() TestDef {
r, _ := http.NewRequest("GET", "/test/straight/rewrite", nil)

r.Header.Set("x-test", "hello")
r.Header.Set("x-test-Two", "not matched")

hOpt := apidef.StringRegexMap{MatchPattern: "hello"}
hOpt.Init()
hOpt2 := apidef.StringRegexMap{NotMatchPattern: "bar"}
hOpt2.Init()

return TestDef{
"Header Multi Mixed All Pass",
"/test/straight/rewrite", "/change/to/me/ignore",
"/test/straight/rewrite", "/change/to/me/hello",
[]apidef.RoutingTrigger{
{
On: apidef.All,
Options: apidef.RoutingTriggerOptions{
HeaderMatches: map[string]apidef.StringRegexMap{
"x-test": hOpt,
"x-test-Two": hOpt2,
},
},
RewriteTo: "/change/to/me/$tyk_context.trigger-0-X-Test-0",
},
},
r,
}
},
func() TestDef {
r, _ := http.NewRequest("GET", "/test/straight/rewrite", nil)

r.Header.Set("y-test", "baz")
r.Header.Set("y-test-Two", "qux")

Expand Down Expand Up @@ -328,6 +358,30 @@ func TestRewriterTriggers(t *testing.T) {
r,
}
},
func() TestDef {
r, _ := http.NewRequest("GET", "/test/query/rewrite?x_test=not_matched", nil)

hOpt := apidef.StringRegexMap{NotMatchPattern: "foo"}
hOpt.Init()

return TestDef{
"Query Single Negative",
"/test/query/rewrite", "/change/to/me/ignore",
"/test/query/rewrite", "/change/to/me/rewritten",
[]apidef.RoutingTrigger{
{
On: apidef.Any,
Options: apidef.RoutingTriggerOptions{
QueryValMatches: map[string]apidef.StringRegexMap{
"x_test": hOpt,
},
},
RewriteTo: "/change/to/me/rewritten",
},
},
r,
}
},
func() TestDef {
r, _ := http.NewRequest("GET", "/test/query/rewrite?x_test=foo&y_test=bar", nil)

Expand Down Expand Up @@ -365,7 +419,7 @@ func TestRewriterTriggers(t *testing.T) {
hOpt2.Init()

return TestDef{
"Multi Multi Type Any",
"Multi Multi-Type Any",
"/test/query/rewrite", "/change/to/me/ignore",
"/test/query/rewrite", "/change/to/me/foo",
[]apidef.RoutingTrigger{
Expand Down Expand Up @@ -395,7 +449,7 @@ func TestRewriterTriggers(t *testing.T) {
hOpt2.Init()

return TestDef{
"Multi Multi Type All",
"Multi Multi-Type All",
"/test/query/rewrite", "/change/to/me/ignore",
"/test/query/rewrite", "/change/to/me/bar",
[]apidef.RoutingTrigger{
Expand Down Expand Up @@ -428,7 +482,41 @@ func TestRewriterTriggers(t *testing.T) {
hOpt3.Init()

return TestDef{
"Multi Multi Type All Fail",
"Multi Multi-Type All Fail",
"/test/query/rewrite", "/change/to/me/ignore",
"/test/query/rewrite", "/change/to/me/ignore",
[]apidef.RoutingTrigger{
{
On: apidef.All,
Options: apidef.RoutingTriggerOptions{
QueryValMatches: map[string]apidef.StringRegexMap{
"x_test": hOpt,
},
HeaderMatches: map[string]apidef.StringRegexMap{
"y-test": hOpt2,
"z-test": hOpt3,
},
},
RewriteTo: "/change/to/me/$tyk_context.trigger-0-Y-Test-0",
},
},
r,
}
},
func() TestDef {
r, _ := http.NewRequest("GET", "/test/query/rewrite?x_test=foo", nil)
r.Header.Set("y-test", "bar")
r.Header.Set("z-test", "baz")

hOpt := apidef.StringRegexMap{NotMatchPattern: "foo"}
hOpt.Init()
hOpt2 := apidef.StringRegexMap{MatchPattern: "bar"}
hOpt2.Init()
hOpt3 := apidef.StringRegexMap{MatchPattern: "baz"}
hOpt3.Init()

return TestDef{
"Multi Multi-Type Mixed-Logic All Fail",
"/test/query/rewrite", "/change/to/me/ignore",
"/test/query/rewrite", "/change/to/me/ignore",
[]apidef.RoutingTrigger{
Expand Down

0 comments on commit 59dfcf3

Please sign in to comment.