Skip to content
Snippets Groups Projects
Commit c598d076 authored by Niall Sheridan's avatar Niall Sheridan
Browse files

Update authprovider tests

parent 17b17fc8
No related branches found
No related tags found
No related merge requests found
......@@ -25,8 +25,10 @@ type Config struct {
whitelist map[string]bool
}
var _ auth.Provider = (*Config)(nil)
// New creates a new Github provider from a configuration.
func New(c *config.Auth) (auth.Provider, error) {
func New(c *config.Auth) (*Config, error) {
uw := make(map[string]bool)
for _, u := range c.UsersWhitelist {
uw[u] = true
......
......@@ -4,7 +4,6 @@ import (
"fmt"
"testing"
"github.com/nsheridan/cashier/server/auth"
"github.com/nsheridan/cashier/server/config"
"github.com/stretchr/testify/assert"
)
......@@ -14,25 +13,48 @@ var (
oauthClientSecret = "secret"
oauthCallbackURL = "url"
organization = "exampleorg"
users = []string{"user"}
)
func TestNew(t *testing.T) {
a := assert.New(t)
p, _ := newGithub()
g := p.(*Config)
a.Equal(g.config.ClientID, oauthClientID)
a.Equal(g.config.ClientSecret, oauthClientSecret)
a.Equal(g.config.RedirectURL, oauthCallbackURL)
a.Equal(g.organization, organization)
p, _ := New(&config.Auth{
OauthClientID: oauthClientID,
OauthClientSecret: oauthClientSecret,
OauthCallbackURL: oauthCallbackURL,
ProviderOpts: map[string]string{"organization": organization},
UsersWhitelist: users,
})
a.Equal(p.config.ClientID, oauthClientID)
a.Equal(p.config.ClientSecret, oauthClientSecret)
a.Equal(p.config.RedirectURL, oauthCallbackURL)
a.Equal(p.organization, organization)
a.Equal(p.whitelist, map[string]bool{"user": true})
}
func TestNewEmptyOrganization(t *testing.T) {
organization = ""
if _, err := newGithub(); err == nil {
func TestWhitelist(t *testing.T) {
c := &config.Auth{
OauthClientID: oauthClientID,
OauthClientSecret: oauthClientSecret,
OauthCallbackURL: oauthCallbackURL,
ProviderOpts: map[string]string{"organization": ""},
UsersWhitelist: []string{},
}
if _, err := New(c); err == nil {
t.Error("creating a provider without an organization set should return an error")
}
organization = "exampleorg"
// Set a user whitelist but no domain
c.UsersWhitelist = users
if _, err := New(c); err != nil {
t.Error("creating a provider with users but no organization should not return an error")
}
// Unset the user whitelist and set a domain
c.UsersWhitelist = []string{}
c.ProviderOpts = map[string]string{"organization": organization}
if _, err := New(c); err != nil {
t.Error("creating a provider with an organization set but without a user whitelist should not return an error")
}
}
func TestStartSession(t *testing.T) {
......@@ -45,7 +67,7 @@ func TestStartSession(t *testing.T) {
a.Contains(s.AuthURL, fmt.Sprintf("client_id=%s", oauthClientID))
}
func newGithub() (auth.Provider, error) {
func newGithub() (*Config, error) {
c := &config.Auth{
OauthClientID: oauthClientID,
OauthClientSecret: oauthClientSecret,
......
......@@ -27,8 +27,10 @@ type Config struct {
whitelist map[string]bool
}
var _ auth.Provider = (*Config)(nil)
// New creates a new Google provider from a configuration.
func New(c *config.Auth) (auth.Provider, error) {
func New(c *config.Auth) (*Config, error) {
uw := make(map[string]bool)
for _, u := range c.UsersWhitelist {
uw[u] = true
......
......@@ -4,7 +4,6 @@ import (
"fmt"
"testing"
"github.com/nsheridan/cashier/server/auth"
"github.com/nsheridan/cashier/server/config"
"github.com/stretchr/testify/assert"
)
......@@ -14,27 +13,42 @@ var (
oauthClientSecret = "secret"
oauthCallbackURL = "url"
domain = "example.com"
users = []string{"user"}
)
func TestNew(t *testing.T) {
a := assert.New(t)
p, _ := newGoogle()
g := p.(*Config)
a.Equal(g.config.ClientID, oauthClientID)
a.Equal(g.config.ClientSecret, oauthClientSecret)
a.Equal(g.config.RedirectURL, oauthCallbackURL)
a.Equal(g.domain, domain)
p, err := newGoogle()
a.NoError(err)
a.Equal(p.config.ClientID, oauthClientID)
a.Equal(p.config.ClientSecret, oauthClientSecret)
a.Equal(p.config.RedirectURL, oauthCallbackURL)
a.Equal(p.domain, domain)
a.Equal(p.whitelist, map[string]bool{"user": true})
}
func TestNewWithoutDomain(t *testing.T) {
domain = ""
if _, err := newGoogle(); err == nil {
func TestWhitelist(t *testing.T) {
c := &config.Auth{
OauthClientID: oauthClientID,
OauthClientSecret: oauthClientSecret,
OauthCallbackURL: oauthCallbackURL,
ProviderOpts: map[string]string{"domain": ""},
UsersWhitelist: []string{},
}
if _, err := New(c); err == nil {
t.Error("creating a provider without a domain set should return an error")
}
domain = "example.com"
// Set a user whitelist but no domain
c.UsersWhitelist = users
if _, err := New(c); err != nil {
t.Error("creating a provider with users but no domain should not return an error")
}
// Unset the user whitelist and set a domain
c.UsersWhitelist = []string{}
c.ProviderOpts = map[string]string{"domain": domain}
if _, err := New(c); err != nil {
t.Error("creating a provider with a domain set but without a user whitelist should not return an error")
}
}
func TestStartSession(t *testing.T) {
......@@ -49,12 +63,13 @@ func TestStartSession(t *testing.T) {
a.Contains(s.AuthURL, fmt.Sprintf("client_id=%s", oauthClientID))
}
func newGoogle() (auth.Provider, error) {
func newGoogle() (*Config, error) {
c := &config.Auth{
OauthClientID: oauthClientID,
OauthClientSecret: oauthClientSecret,
OauthCallbackURL: oauthCallbackURL,
ProviderOpts: map[string]string{"domain": domain},
UsersWhitelist: users,
}
return New(c)
}
......@@ -15,8 +15,10 @@ const (
// Config is an implementation of `auth.Provider` for testing.
type Config struct{}
var _ auth.Provider = (*Config)(nil)
// New creates a new provider.
func New() auth.Provider {
func New() *Config {
return &Config{}
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment