mirror of
https://github.com/pocketbase/pocketbase.git
synced 2025-03-26 07:52:18 +02:00
34 lines
776 B
Go
34 lines
776 B
Go
package tests
|
|
|
|
import (
|
|
"net/http"
|
|
"regexp"
|
|
"strings"
|
|
)
|
|
|
|
// ExpectHeaders checks whether specified headers match the expectations.
|
|
// The expectations map entry key is the header name.
|
|
// The expectations map entry value is the first header value. If wrapped with `^...$`
|
|
// it is compared as regular expression.
|
|
func ExpectHeaders(headers http.Header, expectations map[string]string) bool {
|
|
for h, expected := range expectations {
|
|
v := headers.Get(h)
|
|
|
|
pattern := expected
|
|
if !strings.HasPrefix(pattern, "^") && !strings.HasSuffix(pattern, "$") {
|
|
pattern = "^" + regexp.QuoteMeta(pattern) + "$"
|
|
}
|
|
|
|
expectedRegex, err := regexp.Compile(pattern)
|
|
if err != nil {
|
|
return false
|
|
}
|
|
|
|
if !expectedRegex.MatchString(v) {
|
|
return false
|
|
}
|
|
}
|
|
|
|
return true
|
|
}
|