This is a fork of:
https://github.com/roglew/puppy
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
64 lines
2.0 KiB
64 lines
2.0 KiB
package puppy |
|
|
|
import ( |
|
"runtime" |
|
"strconv" |
|
"testing" |
|
) |
|
|
|
func checkSearch(t *testing.T, req *ProxyRequest, expected bool, args ...interface{}) { |
|
checker, err := NewRequestChecker(args...) |
|
if err != nil { |
|
t.Error(err.Error()) |
|
} |
|
result := checker(req) |
|
if result != expected { |
|
_, f, ln, _ := runtime.Caller(1) |
|
t.Errorf("Failed search test at %s:%d. Expected %s, got %s", f, ln, strconv.FormatBool(expected), strconv.FormatBool(result)) |
|
} |
|
} |
|
|
|
func TestAllSearch(t *testing.T) { |
|
checker, err := NewRequestChecker(FieldAll, StrContains, "foo") |
|
if err != nil { |
|
t.Error(err.Error()) |
|
} |
|
req := testReq() |
|
if !checker(req) { |
|
t.Error("Failed to match FieldAll, StrContains") |
|
} |
|
} |
|
|
|
func TestBodySearch(t *testing.T) { |
|
req := testReq() |
|
|
|
checkSearch(t, req, true, FieldAllBody, StrContains, "foo") |
|
checkSearch(t, req, true, FieldAllBody, StrContains, "oo=b") |
|
checkSearch(t, req, true, FieldAllBody, StrContains, "BBBB") |
|
checkSearch(t, req, false, FieldAllBody, StrContains, "FOO") |
|
|
|
checkSearch(t, req, true, FieldResponseBody, StrContains, "BBBB") |
|
checkSearch(t, req, false, FieldResponseBody, StrContains, "foo") |
|
|
|
checkSearch(t, req, false, FieldRequestBody, StrContains, "BBBB") |
|
checkSearch(t, req, true, FieldRequestBody, StrContains, "foo") |
|
} |
|
|
|
func TestHeaderSearch(t *testing.T) { |
|
req := testReq() |
|
|
|
checkSearch(t, req, true, FieldBothHeaders, StrContains, "Foo") |
|
checkSearch(t, req, true, FieldBothHeaders, StrContains, "Bar") |
|
checkSearch(t, req, true, FieldBothHeaders, StrContains, "Foo", StrContains, "Bar") |
|
checkSearch(t, req, false, FieldBothHeaders, StrContains, "Bar", StrContains, "Bar") |
|
checkSearch(t, req, false, FieldBothHeaders, StrContains, "Foo", StrContains, "Foo") |
|
} |
|
|
|
func TestRegexpSearch(t *testing.T) { |
|
req := testReq() |
|
|
|
checkSearch(t, req, true, FieldRequestBody, StrContainsRegexp, "o.b") |
|
checkSearch(t, req, true, FieldRequestBody, StrContainsRegexp, "baz$") |
|
checkSearch(t, req, true, FieldRequestBody, StrContainsRegexp, "^f.+z") |
|
checkSearch(t, req, false, FieldRequestBody, StrContainsRegexp, "^baz") |
|
}
|
|
|