46 lines
1.4 KiB
Go
46 lines
1.4 KiB
Go
|
package libtrust
|
||
|
|
||
|
import (
|
||
|
"encoding/pem"
|
||
|
"reflect"
|
||
|
"testing"
|
||
|
)
|
||
|
|
||
|
func TestAddPEMHeadersToKey(t *testing.T) {
|
||
|
pk := &rsaPublicKey{nil, map[string]interface{}{}}
|
||
|
blk := &pem.Block{Headers: map[string]string{"hosts": "localhost,127.0.0.1"}}
|
||
|
addPEMHeadersToKey(blk, pk)
|
||
|
|
||
|
val := pk.GetExtendedField("hosts")
|
||
|
hosts, ok := val.([]string)
|
||
|
if !ok {
|
||
|
t.Fatalf("hosts type(%v), expected []string", reflect.TypeOf(val))
|
||
|
}
|
||
|
expected := []string{"localhost", "127.0.0.1"}
|
||
|
if !reflect.DeepEqual(hosts, expected) {
|
||
|
t.Errorf("hosts(%v), expected %v", hosts, expected)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestBase64URL(t *testing.T) {
|
||
|
clean := "eyJhbGciOiJQQkVTMi1IUzI1NitBMTI4S1ciLCJwMnMiOiIyV0NUY0paMVJ2ZF9DSnVKcmlwUTF3IiwicDJjIjo0MDk2LCJlbmMiOiJBMTI4Q0JDLUhTMjU2IiwiY3R5IjoiandrK2pzb24ifQ"
|
||
|
|
||
|
tests := []string{
|
||
|
clean, // clean roundtrip
|
||
|
"eyJhbGciOiJQQkVTMi1IUzI1NitBMTI4S1ciLCJwMnMiOiIyV0NUY0paMVJ2\nZF9DSnVKcmlwUTF3IiwicDJjIjo0MDk2LCJlbmMiOiJBMTI4Q0JDLUhTMjU2\nIiwiY3R5IjoiandrK2pzb24ifQ", // with newlines
|
||
|
"eyJhbGciOiJQQkVTMi1IUzI1NitBMTI4S1ciLCJwMnMiOiIyV0NUY0paMVJ2 \n ZF9DSnVKcmlwUTF3IiwicDJjIjo0MDk2LCJlbmMiOiJBMTI4Q0JDLUhTMjU2 \n IiwiY3R5IjoiandrK2pzb24ifQ", // with newlines and spaces
|
||
|
}
|
||
|
|
||
|
for i, test := range tests {
|
||
|
b, err := joseBase64UrlDecode(test)
|
||
|
if err != nil {
|
||
|
t.Fatalf("on test %d: %s", i, err)
|
||
|
}
|
||
|
got := joseBase64UrlEncode(b)
|
||
|
|
||
|
if got != clean {
|
||
|
t.Errorf("expected %q, got %q", clean, got)
|
||
|
}
|
||
|
}
|
||
|
}
|