Refactor test oidc provider into its own package

This makes it easier to test other OIDC code.
This commit is contained in:
Bobby Rullo
2016-05-11 15:09:42 -07:00
parent f2135bdf90
commit c990462d0f
3 changed files with 283 additions and 174 deletions

View File

@@ -0,0 +1,75 @@
package oidc
import (
"testing"
"k8s.io/kubernetes/pkg/util/diff"
"github.com/coreos/go-oidc/jose"
)
func TestNewOIDCAuthProvider(t *testing.T) {
tests := []struct {
cfg map[string]string
wantErr bool
wantInitialIDToken jose.JWT
}{
{
cfg: map[string]string{
cfgIssuerUrl: "auth.example.com",
},
},
}
for i, tt := range tests {
ap, err := newOIDCAuthProvider("cluster.example.com", tt.cfg, nil)
if tt.wantErr {
if err == nil {
t.Errorf("case %d: want non-nil err", i)
continue
}
}
if err != nil {
t.Errorf("case %d: unexpected error on newOIDCAuthProvider: %v", i, err)
continue
}
oidcAP, ok := ap.(*oidcAuthProvider)
if !ok {
t.Errorf("case %d: expected ap to be an oidcAuthProvider", i)
continue
}
if diff := compareJWTs(tt.wantInitialIDToken, oidcAP.initialIDToken); diff != "" {
t.Errorf("case %d: compareJWTs(tt.wantInitialIDToken, oidcAP.initialIDToken)=%v", i, diff)
}
}
}
func compareJWTs(a, b jose.JWT) string {
if a.Encode() == b.Encode() {
return ""
}
var aClaims, bClaims jose.Claims
for _, j := range []struct {
claims *jose.Claims
jwt jose.JWT
}{
{&aClaims, a},
{&bClaims, b},
} {
var err error
*j.claims, err = j.jwt.Claims()
if err != nil {
*j.claims = jose.Claims(map[string]interface{}{
"msg": "bad claims",
"err": err,
})
}
}
return diff.ObjectDiff(a, b)
}