go-httpbearer/parse_test.go

301 lines
5.2 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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
}
}
}