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.
164 lines
3.4 KiB
164 lines
3.4 KiB
package adminschema |
|
|
|
import ( |
|
"net/url" |
|
"testing" |
|
|
|
"github.com/coreos/go-oidc/oidc" |
|
"github.com/kylelemons/godebug/pretty" |
|
|
|
"github.com/coreos/dex/client" |
|
) |
|
|
|
func TestMapSchemaClientToClient(t *testing.T) { |
|
tests := []struct { |
|
sc Client |
|
want client.Client |
|
wantErr bool |
|
}{ |
|
{ |
|
sc: Client{ |
|
Id: "123", |
|
Secret: "sec_123", |
|
RedirectURIs: []string{ |
|
"https://client.example.com", |
|
"https://client2.example.com", |
|
}, |
|
ClientName: "Bill", |
|
LogoURI: "https://logo.example.com", |
|
ClientURI: "https://clientURI.example.com", |
|
}, |
|
want: client.Client{ |
|
Credentials: oidc.ClientCredentials{ |
|
ID: "123", |
|
Secret: "sec_123", |
|
}, |
|
Metadata: oidc.ClientMetadata{ |
|
RedirectURIs: []url.URL{ |
|
*mustParseURL(t, "https://client.example.com"), |
|
*mustParseURL(t, "https://client2.example.com"), |
|
}, |
|
ClientName: "Bill", |
|
LogoURI: mustParseURL(t, "https://logo.example.com"), |
|
ClientURI: mustParseURL(t, "https://clientURI.example.com"), |
|
}, |
|
}, |
|
}, { |
|
sc: Client{ |
|
Id: "456", |
|
Secret: "sec_456", |
|
ClientName: "Dave", |
|
Public: true, |
|
}, |
|
want: client.Client{ |
|
Credentials: oidc.ClientCredentials{ |
|
ID: "456", |
|
Secret: "sec_456", |
|
}, |
|
Metadata: oidc.ClientMetadata{ |
|
ClientName: "Dave", |
|
}, |
|
Public: true, |
|
}, |
|
}, { |
|
sc: Client{ |
|
Id: "123", |
|
Secret: "sec_123", |
|
RedirectURIs: []string{ |
|
"", |
|
}, |
|
}, |
|
wantErr: true, |
|
}, |
|
} |
|
|
|
for i, tt := range tests { |
|
got, err := MapSchemaClientToClient(tt.sc) |
|
if tt.wantErr { |
|
if err == nil { |
|
t.Errorf("case %d: want non-nil error", i) |
|
t.Logf(pretty.Sprint(got)) |
|
} |
|
continue |
|
} |
|
if err != nil { |
|
t.Errorf("case %d: unexpected error mapping: %v", i, err) |
|
} |
|
|
|
if diff := pretty.Compare(tt.want, got); diff != "" { |
|
t.Errorf("case %d: Compare(want, got): %v", i, diff) |
|
} |
|
|
|
} |
|
} |
|
|
|
func TestMapClientToClientSchema(t *testing.T) { |
|
tests := []struct { |
|
c client.Client |
|
want Client |
|
}{ |
|
{ |
|
want: Client{ |
|
Id: "123", |
|
Secret: "sec_123", |
|
RedirectURIs: []string{ |
|
"https://client.example.com", |
|
"https://client2.example.com", |
|
}, |
|
ClientName: "Bill", |
|
LogoURI: "https://logo.example.com", |
|
ClientURI: "https://clientURI.example.com", |
|
}, |
|
c: client.Client{ |
|
Credentials: oidc.ClientCredentials{ |
|
ID: "123", |
|
Secret: "sec_123", |
|
}, |
|
Metadata: oidc.ClientMetadata{ |
|
RedirectURIs: []url.URL{ |
|
*mustParseURL(t, "https://client.example.com"), |
|
*mustParseURL(t, "https://client2.example.com"), |
|
}, |
|
ClientName: "Bill", |
|
LogoURI: mustParseURL(t, "https://logo.example.com"), |
|
ClientURI: mustParseURL(t, "https://clientURI.example.com"), |
|
}, |
|
}, |
|
}, |
|
{ |
|
want: Client{ |
|
Id: "456", |
|
Secret: "sec_456", |
|
ClientName: "Dave", |
|
Public: true, |
|
}, |
|
c: client.Client{ |
|
Credentials: oidc.ClientCredentials{ |
|
ID: "456", |
|
Secret: "sec_456", |
|
}, |
|
Metadata: oidc.ClientMetadata{ |
|
ClientName: "Dave", |
|
}, |
|
Public: true, |
|
}, |
|
}, |
|
} |
|
|
|
for i, tt := range tests { |
|
got := MapClientToSchemaClient(tt.c) |
|
|
|
if diff := pretty.Compare(tt.want, got); diff != "" { |
|
t.Errorf("case %d: Compare(want, got): %v", i, diff) |
|
} |
|
|
|
} |
|
} |
|
|
|
func mustParseURL(t *testing.T, s string) *url.URL { |
|
u, err := url.Parse(s) |
|
if err != nil { |
|
t.Fatalf("Cannot parse %v as url: %v", s, err) |
|
} |
|
return u |
|
}
|
|
|