1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102
|
package auth0_test
import (
"os"
"testing"
"github.com/markbates/goth"
"github.com/markbates/goth/providers/auth0"
"github.com/stretchr/testify/assert"
"gopkg.in/jarcoal/httpmock.v1"
)
func Test_New(t *testing.T) {
t.Parallel()
a := assert.New(t)
p := provider()
a.Equal(p.ClientKey, os.Getenv("AUTH0_KEY"))
a.Equal(p.Secret, os.Getenv("AUTH0_SECRET"))
a.Equal(p.Domain, os.Getenv("AUTH0_DOMAIN"))
a.Equal(p.CallbackURL, "/foo")
}
func Test_Implements_Provider(t *testing.T) {
t.Parallel()
a := assert.New(t)
a.Implements((*goth.Provider)(nil), provider())
}
func Test_BeginAuth(t *testing.T) {
t.Parallel()
a := assert.New(t)
p := provider()
session, err := p.BeginAuth("test_state")
s := session.(*auth0.Session)
a.NoError(err)
expectedAuthURL := "https://" + os.Getenv("AUTH0_DOMAIN") + "/oauth/authorize"
a.Contains(s.AuthURL, expectedAuthURL)
}
func Test_SessionFromJSON(t *testing.T) {
t.Parallel()
a := assert.New(t)
p := provider()
sessionResp := `{"AuthURL":"https://` + p.Domain + `/oauth/authorize","AccessToken":"1234567890"}`
session, err := p.UnmarshalSession(sessionResp)
a.NoError(err)
s := session.(*auth0.Session)
expectedAuthURL := "https://" + os.Getenv("AUTH0_DOMAIN") + "/oauth/authorize"
a.Equal(s.AuthURL, expectedAuthURL)
a.Equal(s.AccessToken, "1234567890")
}
func Test_FetchUser(t *testing.T) {
//t.Parallel()
a := assert.New(t)
httpmock.Activate()
defer httpmock.DeactivateAndReset()
sampleResp := `{
"email_verified": false,
"email": "test.account@userinfo.com",
"clientID": "q2hnj2iu...",
"updated_at": "2016-12-05T15:15:40.545Z",
"name": "test.account@userinfo.com",
"picture": "https://s.gravatar.com/avatar/dummy.png",
"user_id": "auth0|58454...",
"nickname": "test.account",
"identities": [
{
"user_id": "58454...",
"provider": "auth0",
"connection": "Username-Password-Authentication",
"isSocial": false
}],
"created_at": "2016-12-05T11:16:59.640Z",
"sub": "auth0|58454..."
}`
httpmock.RegisterResponder("GET", "https://"+os.Getenv("AUTH0_DOMAIN")+"/userinfo",
httpmock.NewStringResponder(200, sampleResp))
p := provider()
session, err := p.BeginAuth("test_state")
s := session.(*auth0.Session)
s.AccessToken = "token"
u, err := p.FetchUser(s)
a.Nil(err)
a.Equal(u.Email, "test.account@userinfo.com")
a.Equal(u.UserID, "auth0|58454...")
a.Equal(u.NickName, "test.account")
a.Equal(u.Name, "test.account@userinfo.com")
a.Equal("token", u.AccessToken)
}
func provider() *auth0.Provider {
return auth0.New(os.Getenv("AUTH0_KEY"), os.Getenv("AUTH0_SECRET"), "/foo", os.Getenv("AUTH0_DOMAIN"))
}
|