mirror of
https://github.com/pomerium/pomerium.git
synced 2025-04-29 18:36:30 +02:00
authenticate: add tests to signing endpoints (#759)
Signed-off-by: Bobby DeSimone <bobbydesimone@gmail.com>
This commit is contained in:
parent
b7f4c0ce2b
commit
2d02f2dfa0
2 changed files with 49 additions and 0 deletions
|
@ -97,6 +97,15 @@ func TestNew(t *testing.T) {
|
||||||
emptyProviderURL.Provider = "oidc"
|
emptyProviderURL.Provider = "oidc"
|
||||||
emptyProviderURL.ProviderURL = ""
|
emptyProviderURL.ProviderURL = ""
|
||||||
|
|
||||||
|
goodSigningKey := newTestOptions(t)
|
||||||
|
goodSigningKey.SigningKey = "LS0tLS1CRUdJTiBFQyBQUklWQVRFIEtFWS0tLS0tCk1IY0NBUUVFSUpCMFZkbko1VjEvbVlpYUlIWHhnd2Q0Yzd5YWRTeXMxb3Y0bzA1b0F3ekdvQW9HQ0NxR1NNNDkKQXdFSG9VUURRZ0FFVUc1eENQMEpUVDFINklvbDhqS3VUSVBWTE0wNENnVzlQbEV5cE5SbVdsb29LRVhSOUhUMwpPYnp6aktZaWN6YjArMUt3VjJmTVRFMTh1dy82MXJVQ0JBPT0KLS0tLS1FTkQgRUMgUFJJVkFURSBLRVktLS0tLQo="
|
||||||
|
|
||||||
|
badSigningKey := newTestOptions(t)
|
||||||
|
badSigningKey.SigningKey = "%"
|
||||||
|
|
||||||
|
badSigninKeyPublic := newTestOptions(t)
|
||||||
|
badSigninKeyPublic.SigningKey = "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJFakNCdWdJSkFNWUdtVzhpYWd1TU1Bb0dDQ3FHU000OUJBTUNNQkV4RHpBTkJnTlZCQU1NQm5WdWRYTmwKWkRBZ0Z3MHlNREExTWpJeU1EUTFNalJhR0E4ME56VTRNRFF4T1RJd05EVXlORm93RVRFUE1BMEdBMVVFQXd3RwpkVzUxYzJWa01Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRVVHNXhDUDBKVFQxSDZJb2w4akt1ClRJUFZMTTA0Q2dXOVBsRXlwTlJtV2xvb0tFWFI5SFQzT2J6empLWWljemIwKzFLd1YyZk1URTE4dXcvNjFyVUMKQkRBS0JnZ3Foa2pPUFFRREFnTkhBREJFQWlBSFFDUFh2WG5oeHlDTGNhZ3N3eWt4RUM1NFV5RmdyUVJVRmVCYwpPUzVCSFFJZ1Y3T2FXY2pMeHdsRlIrWDZTQ2daZDI5bXBtOVZKNnpXQURhWGdEN3FURW89Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K"
|
||||||
|
|
||||||
tests := []struct {
|
tests := []struct {
|
||||||
name string
|
name string
|
||||||
opts *config.Options
|
opts *config.Options
|
||||||
|
@ -110,6 +119,9 @@ func TestNew(t *testing.T) {
|
||||||
{"bad provider", badProvider, true},
|
{"bad provider", badProvider, true},
|
||||||
{"bad cache url", badGRPCConn, true},
|
{"bad cache url", badGRPCConn, true},
|
||||||
{"empty provider url", emptyProviderURL, true},
|
{"empty provider url", emptyProviderURL, true},
|
||||||
|
{"good signing key", goodSigningKey, false},
|
||||||
|
{"bad signing key", badSigningKey, true},
|
||||||
|
{"bad public signing key", badSigninKeyPublic, true},
|
||||||
}
|
}
|
||||||
for _, tt := range tests {
|
for _, tt := range tests {
|
||||||
t.Run(tt.name, func(t *testing.T) {
|
t.Run(tt.name, func(t *testing.T) {
|
||||||
|
|
|
@ -29,6 +29,7 @@ import (
|
||||||
"github.com/golang/mock/gomock"
|
"github.com/golang/mock/gomock"
|
||||||
"github.com/google/go-cmp/cmp"
|
"github.com/google/go-cmp/cmp"
|
||||||
"github.com/gorilla/mux"
|
"github.com/gorilla/mux"
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
"golang.org/x/crypto/chacha20poly1305"
|
"golang.org/x/crypto/chacha20poly1305"
|
||||||
"golang.org/x/oauth2"
|
"golang.org/x/oauth2"
|
||||||
"gopkg.in/square/go-jose.v2/jwt"
|
"gopkg.in/square/go-jose.v2/jwt"
|
||||||
|
@ -591,3 +592,39 @@ func TestAuthenticate_Refresh(t *testing.T) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestWellKnownEndpoint(t *testing.T) {
|
||||||
|
auth := testAuthenticate()
|
||||||
|
|
||||||
|
h := auth.Handler()
|
||||||
|
if h == nil {
|
||||||
|
t.Error("handler cannot be nil")
|
||||||
|
}
|
||||||
|
req := httptest.NewRequest("GET", "/.well-known/pomerium/", nil)
|
||||||
|
req.Header.Set("Accept", "application/json")
|
||||||
|
rr := httptest.NewRecorder()
|
||||||
|
h.ServeHTTP(rr, req)
|
||||||
|
body := rr.Body.String()
|
||||||
|
expected := `{"jwks_uri":"https://auth.example.com/.well-known/pomerium/jwks.json","authentication_callback_endpoint":"https://auth.example.com/oauth2/callback","api_refresh_endpoint":"https://auth.example.com/api/v1/refresh"}`
|
||||||
|
assert.Equal(t, body, expected)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestJwksEndpoint(t *testing.T) {
|
||||||
|
o := newTestOptions(t)
|
||||||
|
o.SigningKey = "LS0tLS1CRUdJTiBFQyBQUklWQVRFIEtFWS0tLS0tCk1IY0NBUUVFSUpCMFZkbko1VjEvbVlpYUlIWHhnd2Q0Yzd5YWRTeXMxb3Y0bzA1b0F3ekdvQW9HQ0NxR1NNNDkKQXdFSG9VUURRZ0FFVUc1eENQMEpUVDFINklvbDhqS3VUSVBWTE0wNENnVzlQbEV5cE5SbVdsb29LRVhSOUhUMwpPYnp6aktZaWN6YjArMUt3VjJmTVRFMTh1dy82MXJVQ0JBPT0KLS0tLS1FTkQgRUMgUFJJVkFURSBLRVktLS0tLQo="
|
||||||
|
auth, err := New(*o)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
h := auth.Handler()
|
||||||
|
if h == nil {
|
||||||
|
t.Error("handler cannot be nil")
|
||||||
|
}
|
||||||
|
req := httptest.NewRequest("GET", "/.well-known/pomerium/jwks.json", nil)
|
||||||
|
req.Header.Set("Accept", "application/json")
|
||||||
|
rr := httptest.NewRecorder()
|
||||||
|
h.ServeHTTP(rr, req)
|
||||||
|
body := rr.Body.String()
|
||||||
|
expected := `{"keys":[{"use":"sig","kty":"EC","kid":"5b419ade1895fec2d2def6cd33b1b9a018df60db231dc5ecb85cbed6d942813c","crv":"P-256","alg":"ES256","x":"UG5xCP0JTT1H6Iol8jKuTIPVLM04CgW9PlEypNRmWlo","y":"KChF0fR09zm884ymInM29PtSsFdnzExNfLsP-ta1AgQ"}]}`
|
||||||
|
assert.Equal(t, body, expected)
|
||||||
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue