From 9354ee7629bc36cf3dc26521308aae252a965fd0 Mon Sep 17 00:00:00 2001 From: Kim Tore Jensen Date: Mon, 23 Aug 2021 15:12:47 +0200 Subject: [PATCH] wip: mock authorization server --- pkg/router/idporten_mock_server_test.go | 38 +++++++++++++++++++++++++ pkg/router/router_test.go | 10 ++++--- 2 files changed, 44 insertions(+), 4 deletions(-) create mode 100644 pkg/router/idporten_mock_server_test.go diff --git a/pkg/router/idporten_mock_server_test.go b/pkg/router/idporten_mock_server_test.go new file mode 100644 index 0000000..b0e3106 --- /dev/null +++ b/pkg/router/idporten_mock_server_test.go @@ -0,0 +1,38 @@ +package router_test + +import ( + "encoding/json" + "github.com/go-chi/chi" + "net/http" +) + +type idporten struct { +} + +type TokenJSON struct { + AccessToken string `json:"access_token"` + TokenType string `json:"token_type"` + RefreshToken string `json:"refresh_token"` + ExpiresIn int32 `json:"expires_in"` + IDToken string `json:"id_token"` +} + +func (ip *idporten) Authorize(w http.ResponseWriter, r *http.Request) { + // fixme: generate valid access token and id token; sign them with the correct key + token := &TokenJSON{ + AccessToken: "access-token", + TokenType: "token-type", + RefreshToken: "refresh-token", + IDToken: "id-token", + ExpiresIn: 1200, + } + w.Header().Set("content-type", "application/json") + w.WriteHeader(http.StatusOK) + json.NewEncoder(w).Encode(token) +} + +func idportenRouter(ip *idporten) chi.Router { + r := chi.NewRouter() + r.Post("/authorize", ip.Authorize) + return r +} diff --git a/pkg/router/router_test.go b/pkg/router/router_test.go index 1800907..452a6a0 100644 --- a/pkg/router/router_test.go +++ b/pkg/router/router_test.go @@ -3,7 +3,6 @@ package router_test import ( "encoding/base64" "github.com/nais/wonderwall/pkg/cryptutil" - "golang.org/x/net/publicsuffix" "golang.org/x/oauth2" "net/http" "net/http/cookiejar" @@ -105,9 +104,12 @@ func TestHandler_Callback(t *testing.T) { r := router.New(h) server := httptest.NewServer(r) - jar, err := cookiejar.New(&cookiejar.Options{ - PublicSuffixList: publicsuffix.List, - }) + idp := &idporten{} + idprouter := idportenRouter(idp) + idpserver := httptest.NewServer(idprouter) + h.OauthConfig.Endpoint.TokenURL = idpserver.URL + "/authorize" + + jar, err := cookiejar.New(nil) assert.NoError(t, err) client := server.Client()