mirror of https://github.com/dexidp/dex.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
137 lines
2.7 KiB
137 lines
2.7 KiB
package connector |
|
|
|
import ( |
|
"reflect" |
|
"strings" |
|
"testing" |
|
|
|
"github.com/kylelemons/godebug/pretty" |
|
|
|
"github.com/coreos/dex/user" |
|
) |
|
|
|
func TestNewConnectorConfigFromType(t *testing.T) { |
|
tests := []struct { |
|
typ string |
|
want interface{} |
|
}{ |
|
{ |
|
typ: LocalConnectorType, |
|
want: &LocalConnectorConfig{}, |
|
}, |
|
{ |
|
typ: OIDCConnectorType, |
|
want: &OIDCConnectorConfig{}, |
|
}, |
|
} |
|
|
|
for i, tt := range tests { |
|
got, err := NewConnectorConfigFromType(tt.typ) |
|
if err != nil { |
|
t.Errorf("case %d: expected nil err: %v", i, err) |
|
continue |
|
} |
|
if !reflect.DeepEqual(tt.want, got) { |
|
t.Errorf("case %d: want=%v got=%v", i, tt.want, got) |
|
} |
|
} |
|
} |
|
|
|
func TestNewConnectorConfigFromTypeUnrecognized(t *testing.T) { |
|
_, err := NewConnectorConfigFromType("foo") |
|
if err == nil { |
|
t.Fatalf("Expected non-nil error") |
|
} |
|
} |
|
|
|
func TestNewConnectorConfigFromMap(t *testing.T) { |
|
user.PasswordHasher = func(plaintext string) ([]byte, error) { |
|
return []byte(strings.ToUpper(plaintext)), nil |
|
} |
|
defer func() { |
|
user.PasswordHasher = user.DefaultPasswordHasher |
|
}() |
|
|
|
tests := []struct { |
|
m map[string]interface{} |
|
want ConnectorConfig |
|
}{ |
|
{ |
|
m: map[string]interface{}{ |
|
"type": "local", |
|
"id": "foo", |
|
"passwordInfos": []map[string]string{ |
|
{"userId": "abc", "passwordHash": "PING"}, |
|
{"userId": "271", "passwordPlaintext": "pong"}, |
|
}, |
|
}, |
|
want: &LocalConnectorConfig{ |
|
ID: "foo", |
|
PasswordInfos: []user.PasswordInfo{ |
|
user.PasswordInfo{ |
|
UserID: "abc", |
|
Password: user.Password("PING"), |
|
}, |
|
user.PasswordInfo{ |
|
UserID: "271", |
|
Password: user.Password("PONG"), |
|
}, |
|
}, |
|
}, |
|
}, |
|
{ |
|
m: map[string]interface{}{ |
|
"type": "oidc", |
|
"id": "bar", |
|
"issuerURL": "http://example.com", |
|
"clientID": "client123", |
|
"clientSecret": "whaaaaa", |
|
}, |
|
want: &OIDCConnectorConfig{ |
|
ID: "bar", |
|
IssuerURL: "http://example.com", |
|
ClientID: "client123", |
|
ClientSecret: "whaaaaa", |
|
}, |
|
}, |
|
} |
|
|
|
for i, tt := range tests { |
|
got, err := newConnectorConfigFromMap(tt.m) |
|
if err != nil { |
|
t.Errorf("case %d: want nil error: %v", i, err) |
|
continue |
|
} |
|
|
|
if diff := pretty.Compare(tt.want, got); diff != "" { |
|
t.Errorf("case %d: Compare(want, got): %v", i, diff) |
|
} |
|
} |
|
} |
|
|
|
func TestNewConnectorConfigFromMapFail(t *testing.T) { |
|
tests := []map[string]interface{}{ |
|
// invalid local connector |
|
map[string]interface{}{ |
|
"type": "local", |
|
"passwordInfos": "invalid", |
|
}, |
|
|
|
// no type |
|
map[string]interface{}{ |
|
"id": "bar", |
|
}, |
|
|
|
// type not string |
|
map[string]interface{}{ |
|
"id": 123, |
|
}, |
|
} |
|
|
|
for i, tt := range tests { |
|
_, err := newConnectorConfigFromMap(tt) |
|
if err == nil { |
|
t.Errorf("case %d: want non-nil error", i) |
|
} |
|
} |
|
}
|
|
|