go-httpbearer/parse_test.go

301 lines
5.2 KiB
Go
Raw Permalink Normal View History

2023-09-22 09:25:02 +00:00
package httpbearer
import (
"testing"
)
func TestParse(t *testing.T) {
tests := []struct{
Value string
Expected string
}{
{
Value: "Bearer ",
Expected: "",
},
{
Value: "Bearer 0",
Expected: "0",
},
{
Value: "Bearer 1",
Expected: "1",
},
{
Value: "Bearer a",
Expected: "a",
},
{
Value: "Bearer x",
Expected: "x",
},
{
Value: "Bearer B",
Expected: "B",
},
{
Value: "Bearer Z",
Expected: "Z",
},
{
Value: "Bearer ۴",
Expected: "۴",
},
{
Value: "Bearer ۵",
Expected: "۵",
},
{
Value: "Bearer 🙂",
Expected: "🙂",
},
{
Value: "Bearer 😈",
Expected: "😈",
},
{
Value: "Bearer a",
Expected: "a",
},
{
Value: "Bearer ab",
Expected: "ab",
},
{
Value: "Bearer abc",
Expected: "abc",
},
{
Value: "Bearer abcd",
Expected: "abcd",
},
{
Value: "Bearer abcde",
Expected: "abcde",
},
{
Value: "Bearer a ",
Expected: "a",
},
{
Value: "Bearer ab ",
Expected: "ab",
},
{
Value: "Bearer abc ",
Expected: "abc",
},
{
Value: "Bearer abcd ",
Expected: "abcd",
},
{
Value: "Bearer abcde ",
Expected: "abcde",
},
{
Value: "Bearer a\t",
Expected: "a",
},
{
Value: "Bearer ab\t",
Expected: "ab",
},
{
Value: "Bearer abc\t",
Expected: "abc",
},
{
Value: "Bearer abcd\t",
Expected: "abcd",
},
{
Value: "Bearer abcde\t",
Expected: "abcde",
},
{
Value: "Bearer a\r\n ",
Expected: "a",
},
{
Value: "Bearer ab\r\n ",
Expected: "ab",
},
{
Value: "Bearer abc\r\n ",
Expected: "abc",
},
{
Value: "Bearer abcd\r\n ",
Expected: "abcd",
},
{
Value: "Bearer abcde\r\n ",
Expected: "abcde",
},
{
Value: "Bearer a\r\n\t",
Expected: "a",
},
{
Value: "Bearer ab\r\n\t",
Expected: "ab",
},
{
Value: "Bearer abc\r\n\t",
Expected: "abc",
},
{
Value: "Bearer abcd\r\n\t",
Expected: "abcd",
},
{
Value: "Bearer abcde\r\n\t",
Expected: "abcde",
},
{
Value: "Bearer XYZ123\r",
Expected: "XYZ123\r",
},
{
Value: "Bearer XYZ123\r ",
Expected: "XYZ123\r",
},
{
Value: "Bearer XYZ123\r\t",
Expected: "XYZ123\r",
},
{
Value: "Bearer XYZ123\r\r\n ",
Expected: "XYZ123\r",
},
{
Value: "Bearer XYZ123\r\r\n\t",
Expected: "XYZ123\r",
},
{
Value: "Bearer awcQ.j/YQLCF-yhC0Dah@wCn_NJe3e[VwKv1gzj!!SP3PHtj",
Expected: "awcQ.j/YQLCF-yhC0Dah@wCn_NJe3e[VwKv1gzj!!SP3PHtj",
},
{
Value: "Bearer\tawcQ.j/YQLCF-yhC0Dah@wCn_NJe3e[VwKv1gzj!!SP3PHtj",
Expected: "awcQ.j/YQLCF-yhC0Dah@wCn_NJe3e[VwKv1gzj!!SP3PHtj",
},
{
Value: "Bearer \tawcQ.j/YQLCF-yhC0Dah@wCn_NJe3e[VwKv1gzj!!SP3PHtj",
Expected: "awcQ.j/YQLCF-yhC0Dah@wCn_NJe3e[VwKv1gzj!!SP3PHtj",
},
{
Value: "Bearer\t awcQ.j/YQLCF-yhC0Dah@wCn_NJe3e[VwKv1gzj!!SP3PHtj",
Expected: "awcQ.j/YQLCF-yhC0Dah@wCn_NJe3e[VwKv1gzj!!SP3PHtj",
},
{
Value: "Bearer\r\n\tawcQ.j/YQLCF-yhC0Dah@wCn_NJe3e[VwKv1gzj!!SP3PHtj",
Expected: "awcQ.j/YQLCF-yhC0Dah@wCn_NJe3e[VwKv1gzj!!SP3PHtj",
},
{
Value: "Bearer \r\n\t awcQ.j/YQLCF-yhC0Dah@wCn_NJe3e[VwKv1gzj!!SP3PHtj",
Expected: "awcQ.j/YQLCF-yhC0Dah@wCn_NJe3e[VwKv1gzj!!SP3PHtj",
},
{
Value: "Bearer awcQ.j/YQLCF-yhC0Dah@wCn_NJe3e[VwKv1gzj!!SP3PHtj ",
Expected: "awcQ.j/YQLCF-yhC0Dah@wCn_NJe3e[VwKv1gzj!!SP3PHtj",
},
{
Value: "Bearer awcQ.j/YQLCF-yhC0Dah@wCn_NJe3e[VwKv1gzj!!SP3PHtj\t",
Expected: "awcQ.j/YQLCF-yhC0Dah@wCn_NJe3e[VwKv1gzj!!SP3PHtj",
},
{
Value: "Bearer awcQ.j/YQLCF-yhC0Dah@wCn_NJe3e[VwKv1gzj!!SP3PHtj\r\n\t ",
Expected: "awcQ.j/YQLCF-yhC0Dah@wCn_NJe3e[VwKv1gzj!!SP3PHtj",
},
}
for testNumber, test := range tests {
actual, successful := Parse(test.Value)
expected := test.Expected
if !successful {
t.Errorf("For test #%d, expected to be able to parse HTTP bearer token successfully but actually didn't.", testNumber)
t.Logf("VALUE: %q", test.Value)
continue
}
if expected != actual {
t.Errorf("For test #%d, the actual bearer token is not what was expected.", testNumber)
t.Logf("EXPECTED: %q", expected)
t.Logf("ACTUAL: %q", actual)
t.Logf("VALUE: %q", test.Value)
continue
}
}
}
func TestParse_fail(t *testing.T) {
tests := []struct{
Value string
}{
{
Value: "",
},
{
Value: "bearer awcQ.j/YQLCF-yhC0Dah@wCn_NJe3e[VwKv1gzj!!SP3PHtj",
},
{
Value: "Token awcQ.j/YQLCF-yhC0Dah@wCn_NJe3e[VwKv1gzj!!SP3PHtj",
},
{
Value: "Bearer",
},
}
for testNumber, test := range tests {
actual, successful := Parse(test.Value)
if successful {
t.Errorf("For test #%d, expected parseing of HTTP bearer token to be unsuccessfully but actually was.", testNumber)
t.Logf("VALUE: %q", test.Value)
continue
}
if expected := ""; expected != actual {
t.Errorf("For test #%d, expected result to be empty string but actually wasn't.", testNumber)
t.Logf("EXPECTED: %q", expected)
t.Logf("ACTUAL: %q", actual)
t.Logf("VALUE: %q", test.Value)
continue
}
}
}