301 lines
5.2 KiB
Go
301 lines
5.2 KiB
Go
|
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
|
|||
|
}
|
|||
|
}
|
|||
|
}
|