mirror of https://github.com/dexidp/dex.git
8 changed files with 132 additions and 59 deletions
@ -0,0 +1,78 @@
|
||||
package server |
||||
|
||||
import ( |
||||
"strings" |
||||
"testing" |
||||
|
||||
"github.com/coreos/dex/user" |
||||
"github.com/kylelemons/godebug/pretty" |
||||
) |
||||
|
||||
func TestLoadUsers(t *testing.T) { |
||||
tests := []struct { |
||||
// The raw JSON file
|
||||
raw string |
||||
expUsers []user.UserWithRemoteIdentities |
||||
// userid -> plaintext password
|
||||
expPasswds map[string]string |
||||
}{ |
||||
{ |
||||
raw: `[ |
||||
{ |
||||
"id": "elroy-id", |
||||
"email": "elroy77@example.com", |
||||
"displayName": "Elroy Jonez", |
||||
"password": "bones", |
||||
"remoteIdentities": [ |
||||
{ |
||||
"connectorId": "local", |
||||
"id": "elroy-id" |
||||
} |
||||
] |
||||
} |
||||
]`, |
||||
expUsers: []user.UserWithRemoteIdentities{ |
||||
{ |
||||
User: user.User{ |
||||
ID: "elroy-id", |
||||
Email: "elroy77@example.com", |
||||
DisplayName: "Elroy Jonez", |
||||
}, |
||||
RemoteIdentities: []user.RemoteIdentity{ |
||||
{ |
||||
ConnectorID: "local", |
||||
ID: "elroy-id", |
||||
}, |
||||
}, |
||||
}, |
||||
}, |
||||
expPasswds: map[string]string{ |
||||
"elroy-id": "bones", |
||||
}, |
||||
}, |
||||
} |
||||
|
||||
for i, tt := range tests { |
||||
users, pwInfos, err := loadUsersFromReader(strings.NewReader(tt.raw)) |
||||
if err != nil { |
||||
t.Errorf("case %d: failed to load user: %v", i, err) |
||||
return |
||||
} |
||||
|
||||
if diff := pretty.Compare(tt.expUsers, users); diff != "" { |
||||
t.Errorf("case: %d: wantUsers!=gotUsers: %s", i, diff) |
||||
} |
||||
|
||||
// For each password info loaded, verify the password.
|
||||
for _, pwInfo := range pwInfos { |
||||
expPW, ok := tt.expPasswds[pwInfo.UserID] |
||||
if !ok { |
||||
t.Errorf("no password entry for %s", pwInfo.UserID) |
||||
continue |
||||
} |
||||
if _, err := pwInfo.Authenticate(expPW); err != nil { |
||||
t.Errorf("case %d: user %s's password did not match", i, pwInfo.UserID) |
||||
} |
||||
} |
||||
} |
||||
} |
||||
Loading…
Reference in new issue