Skip to content

Commit

Permalink
add test for providers with custom scopes for #163
Browse files Browse the repository at this point in the history
  • Loading branch information
umputun committed Sep 10, 2023
1 parent ef1a340 commit 1dc2abe
Showing 1 changed file with 74 additions and 29 deletions.
103 changes: 74 additions & 29 deletions provider/providers_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,47 +12,92 @@ func TestProviders_NewGoogle(t *testing.T) {
r := NewGoogle(Params{URL: "http://demo.remark42.com", Cid: "cid", Csecret: "cs"})
assert.Equal(t, "google", r.Name())

udata := UserData{"sub": "1234567890", "name": "test user", "picture": "http://demo.remark42.com/blah.png"}
user := r.mapUser(udata, nil)
assert.Equal(t, token.User{Name: "test user", ID: "google_01b307acba4f54f55aafc33bb06bbbf6ca803e9a",
Picture: "http://demo.remark42.com/blah.png", IP: ""}, user, "got %+v", user)

// no name in data
udata = UserData{"sub": "1234567890", "picture": "http://demo.remark42.com/blah.png"}
user = r.mapUser(udata, nil)
assert.Equal(t, token.User{Name: "noname_1b30", ID: "google_01b307acba4f54f55aafc33bb06bbbf6ca803e9a",
Picture: "http://demo.remark42.com/blah.png", IP: ""}, user, "got %+v", user)
t.Run("with all data", func(t *testing.T) {
udata := UserData{"sub": "1234567890", "name": "test user", "picture": "http://demo.remark42.com/blah.png"}
user := r.mapUser(udata, nil)
assert.Equal(t, token.User{Name: "test user", ID: "google_01b307acba4f54f55aafc33bb06bbbf6ca803e9a",
Picture: "http://demo.remark42.com/blah.png", IP: ""}, user, "got %+v", user)
})

t.Run("with no name", func(t *testing.T) {
udata := UserData{"sub": "1234567890", "picture": "http://demo.remark42.com/blah.png"}
user := r.mapUser(udata, nil)
assert.Equal(t, token.User{Name: "noname_1b30", ID: "google_01b307acba4f54f55aafc33bb06bbbf6ca803e9a",
Picture: "http://demo.remark42.com/blah.png", IP: ""}, user, "got %+v", user)
})

t.Run("with extra scopes", func(t *testing.T) {
r := NewGoogle(Params{URL: "http://demo.remark42.com", Cid: "cid", Csecret: "cs",
UserAttributes: map[string]string{"email": "email"}})
assert.Equal(t, "google", r.Name())
udata := UserData{"sub": "1234567890", "name": "test user", "picture": "http://demo.remark42.com/blah.png",
"email": "test@email.com"}
user := r.mapUser(udata, nil)
assert.Equal(t, token.User{Name: "test user", ID: "google_01b307acba4f54f55aafc33bb06bbbf6ca803e9a",
Picture: "http://demo.remark42.com/blah.png", IP: "", Attributes: map[string]interface{}{"email": "test@email.com"}}, user, "got %+v", user)
})
}

func TestProviders_NewGithub(t *testing.T) {
r := NewGithub(Params{URL: "http://demo.remark42.com", Cid: "cid", Csecret: "cs"})
assert.Equal(t, "github", r.Name())

udata := UserData{"login": "lll", "name": "test user", "avatar_url": "http://demo.remark42.com/blah.png"}
user := r.mapUser(udata, nil)
assert.Equal(t, token.User{Name: "test user", ID: "github_e80b2d2608711cbb3312db7c4727a46fbad9601a",
Picture: "http://demo.remark42.com/blah.png", IP: ""}, user, "got %+v", user)

// nil name in data (json response contains `"name": null`); using login, it's always required
udata = UserData{"login": "lll", "name": nil, "avatar_url": "http://demo.remark42.com/blah.png"}
user = r.mapUser(udata, nil)
assert.Equal(t, token.User{Name: "lll", ID: "github_e80b2d2608711cbb3312db7c4727a46fbad9601a",
Picture: "http://demo.remark42.com/blah.png", IP: ""}, user, "got %+v", user)
t.Run("with all data", func(t *testing.T) {
udata := UserData{"login": "lll", "name": "test user", "avatar_url": "http://demo.remark42.com/blah.png"}
user := r.mapUser(udata, nil)
assert.Equal(t, token.User{Name: "test user", ID: "github_e80b2d2608711cbb3312db7c4727a46fbad9601a",
Picture: "http://demo.remark42.com/blah.png", IP: ""}, user, "got %+v", user)
})

t.Run("with no name", func(t *testing.T) {
// nil name in data (json response contains `"name": null`); using login, it's always required
udata := UserData{"login": "lll", "name": nil, "avatar_url": "http://demo.remark42.com/blah.png"}
user := r.mapUser(udata, nil)
assert.Equal(t, token.User{Name: "lll", ID: "github_e80b2d2608711cbb3312db7c4727a46fbad9601a",
Picture: "http://demo.remark42.com/blah.png", IP: ""}, user, "got %+v", user)
})

t.Run("with extra scopes", func(t *testing.T) {
r := NewGithub(Params{URL: "http://demo.remark42.com", Cid: "cid", Csecret: "cs",
UserAttributes: map[string]string{"email": "email"}})
assert.Equal(t, "github", r.Name())
udata := UserData{"login": "lll", "name": "test user", "avatar_url": "http://demo.remark42.com/blah.png",
"email": "test@email.com"}
user := r.mapUser(udata, nil)
assert.Equal(t, token.User{Name: "test user", ID: "github_e80b2d2608711cbb3312db7c4727a46fbad9601a",
Picture: "http://demo.remark42.com/blah.png", IP: "", Attributes: map[string]interface{}{"email": "test@email.com"}}, user, "got %+v", user)
})
}

func TestProviders_NewFacebook(t *testing.T) {
r := NewFacebook(Params{URL: "http://demo.remark42.com", Cid: "cid", Csecret: "cs"})
assert.Equal(t, "facebook", r.Name())

udata := UserData{"id": "myid", "name": "test user"}
user := r.mapUser(udata, []byte(`{"picture": {"data": {"url": "http://demo.remark42.com/blah.png"} }}`))
assert.Equal(t, token.User{Name: "test user", ID: "facebook_6e34471f84557e1713012d64a7477c71bfdac631",
Picture: "http://demo.remark42.com/blah.png", IP: ""}, user, "got %+v", user)

udata = UserData{"id": "myid", "name": ""}
user = r.mapUser(udata, []byte(`{"picture": {"data": {"url": "http://demo.remark42.com/blah.png"} }}`))
assert.Equal(t, token.User{Name: "facebook_6e34471", ID: "facebook_6e34471f84557e1713012d64a7477c71bfdac631",
Picture: "http://demo.remark42.com/blah.png", IP: ""}, user, "got %+v", user)
t.Run("with all data", func(t *testing.T) {
udata := UserData{"id": "myid", "name": "test user"}
user := r.mapUser(udata, []byte(`{"picture": {"data": {"url": "http://demo.remark42.com/blah.png"} }}`))
assert.Equal(t, token.User{Name: "test user", ID: "facebook_6e34471f84557e1713012d64a7477c71bfdac631",
Picture: "http://demo.remark42.com/blah.png", IP: ""}, user, "got %+v", user)
})

t.Run("with no name", func(t *testing.T) {
udata := UserData{"id": "myid", "name": ""}
user := r.mapUser(udata, []byte(`{"picture": {"data": {"url": "http://demo.remark42.com/blah.png"} }}`))
assert.Equal(t, token.User{Name: "facebook_6e34471", ID: "facebook_6e34471f84557e1713012d64a7477c71bfdac631",
Picture: "http://demo.remark42.com/blah.png", IP: ""}, user, "got %+v", user)
})

t.Run("with extra scopes", func(t *testing.T) {
r := NewFacebook(Params{URL: "http://demo.remark42.com", Cid: "cid", Csecret: "cs",
UserAttributes: map[string]string{"email": "email"}})
assert.Equal(t, "facebook", r.Name())
udata := UserData{"id": "myid", "name": "test user", "email": "test@email.com"}
user := r.mapUser(udata, []byte(`{"picture": {"data": {"url": "http://demo.remark42.com/blah.png"} }}`))
assert.Equal(t, token.User{Name: "test user", ID: "facebook_6e34471f84557e1713012d64a7477c71bfdac631",
Picture: "http://demo.remark42.com/blah.png", IP: "", Attributes: map[string]interface{}{"email": "test@email.com"}},
user, "got %+v", user)

})
}

func TestProviders_NewYandex(t *testing.T) {
Expand Down

0 comments on commit 1dc2abe

Please sign in to comment.