9 "github.com/stretchr/testify/assert"
12func testLinkedInProvider(hostname string) *LinkedInProvider {
13 p := NewLinkedInProvider(
17 RedeemURL: &url.URL{},
18 ProfileURL: &url.URL{},
19 ValidateURL: &url.URL{},
22 updateURL(p.Data().LoginURL, hostname)
23 updateURL(p.Data().RedeemURL, hostname)
24 updateURL(p.Data().ProfileURL, hostname)
29func testLinkedInBackend(payload string) *httptest.Server {
30 path := "/v1/people/~/email-address"
32 return httptest.NewServer(http.HandlerFunc(
33 func(w http.ResponseWriter, r *http.Request) {
34 if r.URL.Path != path {
36 } else if r.Header.Get("Authorization") != "Bearer imaginary_access_token" {
40 w.Write([]byte(payload))
45func TestLinkedInProviderDefaults(t *testing.T) {
46 p := testLinkedInProvider("")
47 assert.NotEqual(t, nil, p)
48 assert.Equal(t, "LinkedIn", p.Data().ProviderName)
49 assert.Equal(t, "https://www.linkedin.com/uas/oauth2/authorization",
50 p.Data().LoginURL.String())
51 assert.Equal(t, "https://www.linkedin.com/uas/oauth2/accessToken",
52 p.Data().RedeemURL.String())
53 assert.Equal(t, "https://www.linkedin.com/v1/people/~/email-address",
54 p.Data().ProfileURL.String())
55 assert.Equal(t, "https://www.linkedin.com/v1/people/~/email-address",
56 p.Data().ValidateURL.String())
57 assert.Equal(t, "r_emailaddress r_basicprofile", p.Data().Scope)
60func TestLinkedInProviderOverrides(t *testing.T) {
61 p := NewLinkedInProvider(
70 Path: "/oauth/token"},
74 Path: "/oauth/profile"},
75 ValidateURL: &url.URL{
78 Path: "/oauth/tokeninfo"},
80 assert.NotEqual(t, nil, p)
81 assert.Equal(t, "LinkedIn", p.Data().ProviderName)
82 assert.Equal(t, "https://example.com/oauth/auth",
83 p.Data().LoginURL.String())
84 assert.Equal(t, "https://example.com/oauth/token",
85 p.Data().RedeemURL.String())
86 assert.Equal(t, "https://example.com/oauth/profile",
87 p.Data().ProfileURL.String())
88 assert.Equal(t, "https://example.com/oauth/tokeninfo",
89 p.Data().ValidateURL.String())
90 assert.Equal(t, "profile", p.Data().Scope)
93func TestLinkedInProviderGetEmailAddress(t *testing.T) {
94 b := testLinkedInBackend(`"user@linkedin.com"`)
97 bURL, _ := url.Parse(b.URL)
98 p := testLinkedInProvider(bURL.Host)
100 session := &SessionState{AccessToken: "imaginary_access_token"}
101 email, err := p.GetEmailAddress(session)
102 assert.Equal(t, nil, err)
103 assert.Equal(t, "user@linkedin.com", email)
106func TestLinkedInProviderGetEmailAddressFailedRequest(t *testing.T) {
107 b := testLinkedInBackend("unused payload")
110 bURL, _ := url.Parse(b.URL)
111 p := testLinkedInProvider(bURL.Host)
113 // We'll trigger a request failure by using an unexpected access
114 // token. Alternatively, we could allow the parsing of the payload as
116 session := &SessionState{AccessToken: "unexpected_access_token"}
117 email, err := p.GetEmailAddress(session)
118 assert.NotEqual(t, nil, err)
119 assert.Equal(t, "", email)
122func TestLinkedInProviderGetEmailAddressEmailNotPresentInPayload(t *testing.T) {
123 b := testLinkedInBackend("{\"foo\": \"bar\"}")
126 bURL, _ := url.Parse(b.URL)
127 p := testLinkedInProvider(bURL.Host)
129 session := &SessionState{AccessToken: "imaginary_access_token"}
130 email, err := p.GetEmailAddress(session)
131 assert.NotEqual(t, nil, err)
132 assert.Equal(t, "", email)
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list