From 17d06d3003a796c76c7c5d8bfb0cab0aeb1bbf8f Mon Sep 17 00:00:00 2001 From: Kevin Lyda Date: Sun, 22 Jan 2017 23:25:20 +0000 Subject: Create a gitlab auth source. Defaults to public gitlab.com, but easily redirected to self-hosted installation. --- server/auth/gitlab/gitlab_test.go | 98 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 server/auth/gitlab/gitlab_test.go (limited to 'server/auth/gitlab/gitlab_test.go') diff --git a/server/auth/gitlab/gitlab_test.go b/server/auth/gitlab/gitlab_test.go new file mode 100644 index 0000000..39c2701 --- /dev/null +++ b/server/auth/gitlab/gitlab_test.go @@ -0,0 +1,98 @@ +package gitlab + +import ( + "fmt" + "testing" + + "github.com/nsheridan/cashier/server/auth" + "github.com/nsheridan/cashier/server/config" + "github.com/stretchr/testify/assert" +) + +var ( + oauthClientID = "id" + oauthClientSecret = "secret" + oauthCallbackURL = "url" + allusers = "" + siteurl = "https://exampleorg/" + group = "exampleorg" +) + +func TestNew(t *testing.T) { + a := assert.New(t) + + p, _ := newGitlab() + g := p.(*Config) + a.Equal(g.config.ClientID, oauthClientID) + a.Equal(g.config.ClientSecret, oauthClientSecret) + a.Equal(g.config.RedirectURL, oauthCallbackURL) +} + +func TestNewBrokenSiteURL(t *testing.T) { + siteurl = "https://exampleorg" + a := assert.New(t) + + _, err := newGitlab() + a.EqualError(err, "gitlab_opts siteurl must end in /") + + siteurl = "https://exampleorg/" +} + +func TestBadAllUsers(t *testing.T) { + allusers = "true" + siteurl = "" + a := assert.New(t) + + _, err := newGitlab() + a.EqualError(err, "gitlab_opts if allusers is set, siteurl must be set") + + allusers = "" + siteurl = "https://exampleorg/" +} + +func TestGoodAllUsers(t *testing.T) { + allusers = "true" + a := assert.New(t) + + p, _ := newGitlab() + s := p.StartSession("test_state") + a.Contains(s.AuthURL, "exampleorg/oauth/authorize") + a.Contains(s.AuthURL, "state=test_state") + a.Contains(s.AuthURL, fmt.Sprintf("client_id=%s", oauthClientID)) + + allusers = "" +} + +func TestNewEmptyGroupList(t *testing.T) { + group = "" + a := assert.New(t) + + _, err := newGitlab() + a.EqualError(err, "gitlab_opts group and the users whitelist must not be both empty if allusers isn't true") + + group = "exampleorg" +} + +func TestStartSession(t *testing.T) { + a := assert.New(t) + + p, _ := newGitlab() + s := p.StartSession("test_state") + a.Contains(s.AuthURL, "exampleorg/oauth/authorize") + a.Contains(s.AuthURL, "state=test_state") + a.Contains(s.AuthURL, fmt.Sprintf("client_id=%s", oauthClientID)) +} + +func newGitlab() (auth.Provider, error) { + c := &config.Auth{ + OauthClientID: oauthClientID, + OauthClientSecret: oauthClientSecret, + OauthCallbackURL: oauthCallbackURL, + ProviderOpts: map[string]string{ + "group": group, + "siteurl": siteurl, + "allusers": allusers, + }, + } + return New(c) +} -- cgit v1.2.3