forked from mystiq/dex
64 lines
1 KiB
Go
64 lines
1 KiB
Go
package jose
|
|
|
|
import (
|
|
"testing"
|
|
)
|
|
|
|
func TestDecodeBase64URLPaddingOptional(t *testing.T) {
|
|
tests := []struct {
|
|
encoded string
|
|
decoded string
|
|
err bool
|
|
}{
|
|
{
|
|
// With padding
|
|
encoded: "VGVjdG9uaWM=",
|
|
decoded: "Tectonic",
|
|
},
|
|
{
|
|
// Without padding
|
|
encoded: "VGVjdG9uaWM",
|
|
decoded: "Tectonic",
|
|
},
|
|
{
|
|
// Even More padding
|
|
encoded: "VGVjdG9uaQ==",
|
|
decoded: "Tectoni",
|
|
},
|
|
{
|
|
// And take it away!
|
|
encoded: "VGVjdG9uaQ",
|
|
decoded: "Tectoni",
|
|
},
|
|
{
|
|
// Too much padding.
|
|
encoded: "VGVjdG9uaWNh=",
|
|
decoded: "",
|
|
err: true,
|
|
},
|
|
{
|
|
// Too much padding.
|
|
encoded: "VGVjdG9uaWNh=",
|
|
decoded: "",
|
|
err: true,
|
|
},
|
|
}
|
|
|
|
for i, tt := range tests {
|
|
got, err := decodeBase64URLPaddingOptional(tt.encoded)
|
|
if tt.err {
|
|
if err == nil {
|
|
t.Errorf("case %d: expected non-nil err", i)
|
|
}
|
|
continue
|
|
}
|
|
|
|
if err != nil {
|
|
t.Errorf("case %d: want nil err, got: %v", i, err)
|
|
}
|
|
|
|
if string(got) != tt.decoded {
|
|
t.Errorf("case %d: want=%q, got=%q", i, tt.decoded, got)
|
|
}
|
|
}
|
|
}
|