77 lines
1.4 KiB
Go
77 lines
1.4 KiB
Go
package oidc
|
|
|
|
import (
|
|
"encoding/json"
|
|
"reflect"
|
|
"testing"
|
|
)
|
|
|
|
func TestClientVerifier(t *testing.T) {
|
|
tests := []struct {
|
|
clientID string
|
|
aud []string
|
|
wantErr bool
|
|
}{
|
|
{
|
|
clientID: "1",
|
|
aud: []string{"1"},
|
|
},
|
|
{
|
|
clientID: "1",
|
|
aud: []string{"2"},
|
|
wantErr: true,
|
|
},
|
|
{
|
|
clientID: "1",
|
|
aud: []string{"2", "1"},
|
|
},
|
|
{
|
|
clientID: "3",
|
|
aud: []string{"1", "2"},
|
|
wantErr: true,
|
|
},
|
|
}
|
|
|
|
for i, tc := range tests {
|
|
token := IDToken{Audience: tc.aud}
|
|
err := (clientVerifier{tc.clientID}).verifyIDToken(&token)
|
|
if err != nil && !tc.wantErr {
|
|
t.Errorf("case %d: %v", i)
|
|
}
|
|
if err == nil && tc.wantErr {
|
|
t.Errorf("case %d: expected error")
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestUnmarshalAudience(t *testing.T) {
|
|
tests := []struct {
|
|
data string
|
|
want audience
|
|
wantErr bool
|
|
}{
|
|
{`"foo"`, audience{"foo"}, false},
|
|
{`["foo","bar"]`, audience{"foo", "bar"}, false},
|
|
{"foo", nil, true}, // invalid JSON
|
|
}
|
|
|
|
for _, tc := range tests {
|
|
var a audience
|
|
if err := json.Unmarshal([]byte(tc.data), &a); err != nil {
|
|
if !tc.wantErr {
|
|
t.Errorf("failed to unmarshal %q: %v", tc.data, err)
|
|
}
|
|
continue
|
|
}
|
|
|
|
if tc.wantErr {
|
|
t.Errorf("did not expected to be able to unmarshal %q", tc.data)
|
|
continue
|
|
}
|
|
|
|
if !reflect.DeepEqual(tc.want, a) {
|
|
t.Errorf("from %q expected %q got %q", tc.data, tc.want, a)
|
|
}
|
|
}
|
|
}
|