v0.4.1 merge http and simple token into one file, workflow update
Test and Fuzz / Build, Test, and Fuzz (push) Canceled after 0s
Test and Fuzz / Build, Test, and Fuzz (push) Canceled after 0s
This commit is contained in:
1 parent
2bf8715e93
commit
5cf0a93676
6 files changed
+139
-250
No files matched your search
@@ -96,3 +96,54 @@ func TestSimpleTokenValidatorConcurrent(t *testing.T) {
|
||||
}
|
||||
eq(t, len(v.tokens), n/2, "surviving entries")
|
||||
}
|
||||
|
||||
func TestParseBearerToken(t *testing.T) {
|
||||
for _, tc := range []struct {
|
||||
header, token string
|
||||
want error
|
||||
}{
|
||||
{"Bearer abc.def-_/+~==", "abc.def-_/+~==", nil},
|
||||
{"bEaReR token", "token", nil},
|
||||
{"Bearer ", "", ErrAuthEmptyBearerToken},
|
||||
{"Bearer ", "", ErrAuthEmptyBearerToken},
|
||||
{"Bearer", "", ErrAuthInvalidBearerFormat},
|
||||
{"Bearer x y", "", ErrAuthInvalidBearerFormat},
|
||||
{"Bearer x ", "", ErrAuthInvalidBearerFormat},
|
||||
{"Bearer x\r\n", "", ErrAuthInvalidBearerFormat},
|
||||
{"Bearer x\ty", "", ErrAuthInvalidBearerFormat},
|
||||
{"Bearer =", "", ErrAuthInvalidBearerFormat},
|
||||
{"Bearer a=b", "", ErrAuthInvalidBearerFormat},
|
||||
{"Other x", "", ErrAuthInvalidBearerFormat},
|
||||
{"Bearer " + strings.Repeat("x", MaxTokenLen+1), "", ErrTokenTooLong},
|
||||
} {
|
||||
token, err := ParseBearerToken(tc.header)
|
||||
if tc.want != nil {
|
||||
errIs(t, err, tc.want, tc.header)
|
||||
} else {
|
||||
noErr(t, err, tc.header)
|
||||
}
|
||||
eq(t, token, tc.token, "token")
|
||||
}
|
||||
}
|
||||
|
||||
func FuzzParseBearerToken(f *testing.F) {
|
||||
for _, seed := range []string{"Bearer token", "bearer abc+/==", "Bearer x\n", "Bearer a=b", ""} {
|
||||
f.Add(seed)
|
||||
}
|
||||
f.Fuzz(func(t *testing.T, header string) {
|
||||
token, err := ParseBearerToken(header)
|
||||
if err != nil {
|
||||
if token != "" {
|
||||
t.Fatal("token with error")
|
||||
}
|
||||
return
|
||||
}
|
||||
if token == "" || len(token) > MaxTokenLen || strings.ContainsAny(token, " \t\r\n") {
|
||||
t.Fatal("invalid token accepted")
|
||||
}
|
||||
again, err := ParseBearerToken("Bearer " + token)
|
||||
if err != nil || again != token {
|
||||
t.Fatal("noncanonical roundtrip")
|
||||
}
|
||||
})
|
||||
}
|
||||
Reference in new issue
Block a user