From 204f77581d823a3693cf29d5a364c72fa5bae8da Mon Sep 17 00:00:00 2001 From: Trong Huu Nguyen Date: Mon, 18 Oct 2021 19:33:21 +0200 Subject: [PATCH] refactor: move redirect URI creation to openid pkg --- pkg/openid/redirect_uri.go | 23 +++++++++++++++++++ .../redirect_uri_test.go} | 13 +++++------ pkg/provider/provider.go | 19 +-------------- 3 files changed, 30 insertions(+), 25 deletions(-) create mode 100644 pkg/openid/redirect_uri.go rename pkg/{provider/provider_test.go => openid/redirect_uri_test.go} (76%) diff --git a/pkg/openid/redirect_uri.go b/pkg/openid/redirect_uri.go new file mode 100644 index 0000000..d7906aa --- /dev/null +++ b/pkg/openid/redirect_uri.go @@ -0,0 +1,23 @@ +package openid + +import ( + "fmt" + "net/url" + "path" + + "github.com/nais/wonderwall/pkg/router/paths" +) + +func RedirectURI(ingress string) (string, error) { + if len(ingress) == 0 { + return "", fmt.Errorf("ingress cannot be empty") + } + + base, err := url.Parse(ingress) + if err != nil { + return "", err + } + + base.Path = path.Join(base.Path, paths.OAuth2, paths.Callback) + return base.String(), nil +} diff --git a/pkg/provider/provider_test.go b/pkg/openid/redirect_uri_test.go similarity index 76% rename from pkg/provider/provider_test.go rename to pkg/openid/redirect_uri_test.go index eef22c5..0033797 100644 --- a/pkg/provider/provider_test.go +++ b/pkg/openid/redirect_uri_test.go @@ -1,4 +1,4 @@ -package provider_test +package openid_test import ( "fmt" @@ -6,14 +6,14 @@ import ( "github.com/stretchr/testify/assert" - "github.com/nais/wonderwall/pkg/provider" + "github.com/nais/wonderwall/pkg/openid" ) func TestRedirectURI(t *testing.T) { for _, test := range []struct { input string want string - err error + err error }{ { input: "https://nav.no/dagpenger", @@ -33,16 +33,15 @@ func TestRedirectURI(t *testing.T) { }, { input: "", - err: fmt.Errorf("ingress cannot be empty"), + err: fmt.Errorf("ingress cannot be empty"), }, } { - actual, err := provider.RedirectURI(test.input) + actual, err := openid.RedirectURI(test.input) if test.err != nil { assert.EqualError(t, err, test.err.Error()) } else { assert.NoError(t, err) + assert.Equal(t, test.want, actual) } - - assert.Equal(t, test.want, actual) } } diff --git a/pkg/provider/provider.go b/pkg/provider/provider.go index 0277aa0..3e5eeb8 100644 --- a/pkg/provider/provider.go +++ b/pkg/provider/provider.go @@ -3,14 +3,11 @@ package provider import ( "context" "fmt" - "net/url" - "path" "github.com/lestrrat-go/jwx/jwk" "github.com/nais/wonderwall/pkg/config" "github.com/nais/wonderwall/pkg/openid" - "github.com/nais/wonderwall/pkg/router/paths" ) type Provider interface { @@ -53,7 +50,7 @@ func NewProvider(cfg *config.Config) (Provider, error) { return nil, fmt.Errorf("missing required config %s", config.Ingress) } - redirectURI, err := RedirectURI(ingress) + redirectURI, err := openid.RedirectURI(ingress) if err != nil { return nil, fmt.Errorf("creating redirect URI from ingress: %w", err) } @@ -105,17 +102,3 @@ func NewProvider(cfg *config.Config) (Provider, error) { jwkSet: jwkSet, }, nil } - -func RedirectURI(ingress string) (string, error) { - if len(ingress) == 0 { - return "", fmt.Errorf("ingress cannot be empty") - } - - base, err := url.Parse(ingress) - if err != nil { - return "", err - } - - base.Path = path.Join(base.Path, paths.OAuth2, paths.Callback) - return base.String(), nil -}