@@ -7,12 +7,13 @@ import (
10+ "github.com/oauth2-proxy/oauth2-proxy/v7/pkg/apis/options"
10 "github.com/oauth2-proxy/oauth2-proxy/v7/pkg/apis/sessions"
11 "github.com/oauth2-proxy/oauth2-proxy/v7/pkg/apis/sessions"
11 . "github.com/onsi/gomega"
12 . "github.com/onsi/gomega"
12 "github.com/stretchr/testify/assert"
13 "github.com/stretchr/testify/assert"
15−func testGitHubProvider(hostname string) *GitHubProvider {
16+func testGitHubProvider(hostname string, opts options.GitHubOptions) *GitHubProvider {
16 p := NewGitHubProvider(
17 p := NewGitHubProvider(
17 &ProviderData{
18 &ProviderData{
18 ProviderName: "",
19 ProviderName: "",
@@ -20,7 +21,8 @@ func testGitHubProvider(hostname string) *GitHubProvider {
20 RedeemURL: &url.URL{},
21 RedeemURL: &url.URL{},
21 ProfileURL: &url.URL{},
22 ProfileURL: &url.URL{},
22 ValidateURL: &url.URL{},
23 ValidateURL: &url.URL{},
23− Scope: ""})
24+ Scope: ""},
24 if hostname != "" {
26 if hostname != "" {
25 updateURL(p.Data().LoginURL, hostname)
27 updateURL(p.Data().LoginURL, hostname)
26 updateURL(p.Data().RedeemURL, hostname)
28 updateURL(p.Data().RedeemURL, hostname)
@@ -71,7 +73,7 @@ func TestNewGitHubProvider(t *testing.T) {
71 g := NewWithT(t)
73 g := NewWithT(t)
73 // Test that defaults are set when calling for a new provider with nothing set
75 // Test that defaults are set when calling for a new provider with nothing set
74− providerData := NewGitHubProvider(&ProviderData{}).Data()
76+ providerData := NewGitHubProvider(&ProviderData{}, options.GitHubOptions{}).Data()
75 g.Expect(providerData.ProviderName).To(Equal("GitHub"))
77 g.Expect(providerData.ProviderName).To(Equal("GitHub"))
76 g.Expect(providerData.LoginURL.String()).To(Equal("https://github.com/login/oauth/authorize"))
78 g.Expect(providerData.LoginURL.String()).To(Equal("https://github.com/login/oauth/authorize"))
77 g.Expect(providerData.RedeemURL.String()).To(Equal("https://github.com/login/oauth/access_token"))
79 g.Expect(providerData.RedeemURL.String()).To(Equal("https://github.com/login/oauth/access_token"))
@@ -95,7 +97,8 @@ func TestGitHubProviderOverrides(t *testing.T) {
95 Scheme: "https",
97 Scheme: "https",
96 Host: "api.example.com",
98 Host: "api.example.com",
97 Path: "/"},
99 Path: "/"},
98− Scope: "profile"})
100+ Scope: "profile"},
101+ options.GitHubOptions{})
99 assert.NotEqual(t, nil, p)
102 assert.NotEqual(t, nil, p)
100 assert.Equal(t, "GitHub", p.Data().ProviderName)
103 assert.Equal(t, "GitHub", p.Data().ProviderName)
101 assert.Equal(t, "https://example.com/login/oauth/authorize",
104 assert.Equal(t, "https://example.com/login/oauth/authorize",
@@ -114,7 +117,7 @@ func TestGitHubProvider_getEmail(t *testing.T) {
114 defer b.Close()
117 defer b.Close()
116 bURL, _ := url.Parse(b.URL)
119 bURL, _ := url.Parse(b.URL)
117− p := testGitHubProvider(bURL.Host)
120+ p := testGitHubProvider(bURL.Host, options.GitHubOptions{})
119 session := CreateAuthorizedSession()
122 session := CreateAuthorizedSession()
120 err := p.getEmail(context.Background(), session)
123 err := p.getEmail(context.Background(), session)
@@ -129,7 +132,7 @@ func TestGitHubProvider_getEmailNotVerified(t *testing.T) {
129 defer b.Close()
132 defer b.Close()
131 bURL, _ := url.Parse(b.URL)
134 bURL, _ := url.Parse(b.URL)
132− p := testGitHubProvider(bURL.Host)
135+ p := testGitHubProvider(bURL.Host, options.GitHubOptions{})
134 session := CreateAuthorizedSession()
137 session := CreateAuthorizedSession()
135 err := p.getEmail(context.Background(), session)
138 err := p.getEmail(context.Background(), session)
@@ -149,8 +152,11 @@ func TestGitHubProvider_getEmailWithOrg(t *testing.T) {
149 defer b.Close()
152 defer b.Close()
151 bURL, _ := url.Parse(b.URL)
154 bURL, _ := url.Parse(b.URL)
152− p := testGitHubProvider(bURL.Host)
155+ p := testGitHubProvider(bURL.Host,
156+ options.GitHubOptions{
153− p.Org = "testorg1"
157+ Org: "testorg1",
155 session := CreateAuthorizedSession()
161 session := CreateAuthorizedSession()
156 err := p.getEmail(context.Background(), session)
162 err := p.getEmail(context.Background(), session)
@@ -166,8 +172,12 @@ func TestGitHubProvider_getEmailWithWriteAccessToPublicRepo(t *testing.T) {
166 defer b.Close()
172 defer b.Close()
168 bURL, _ := url.Parse(b.URL)
174 bURL, _ := url.Parse(b.URL)
169− p := testGitHubProvider(bURL.Host)
175+ p := testGitHubProvider(bURL.Host,
176+ options.GitHubOptions{
170− p.SetRepo("oauth2-proxy/oauth2-proxy", "")
177+ Repo: "oauth2-proxy/oauth2-proxy",
172 session := CreateAuthorizedSession()
182 session := CreateAuthorizedSession()
173 err := p.getEmail(context.Background(), session)
183 err := p.getEmail(context.Background(), session)
@@ -183,8 +193,12 @@ func TestGitHubProvider_getEmailWithReadOnlyAccessToPrivateRepo(t *testing.T) {
183 defer b.Close()
193 defer b.Close()
185 bURL, _ := url.Parse(b.URL)
195 bURL, _ := url.Parse(b.URL)
186− p := testGitHubProvider(bURL.Host)
196+ p := testGitHubProvider(bURL.Host,
197+ options.GitHubOptions{
187− p.SetRepo("oauth2-proxy/oauth2-proxy", "")
198+ Repo: "oauth2-proxy/oauth2-proxy",
189 session := CreateAuthorizedSession()
203 session := CreateAuthorizedSession()
190 err := p.getEmail(context.Background(), session)
204 err := p.getEmail(context.Background(), session)
@@ -200,8 +214,12 @@ func TestGitHubProvider_getEmailWithWriteAccessToPrivateRepo(t *testing.T) {
200 defer b.Close()
214 defer b.Close()
202 bURL, _ := url.Parse(b.URL)
216 bURL, _ := url.Parse(b.URL)
203− p := testGitHubProvider(bURL.Host)
217+ p := testGitHubProvider(bURL.Host,
218+ options.GitHubOptions{
204− p.SetRepo("oauth2-proxy/oauth2-proxy", "")
219+ Repo: "oauth2-proxy/oauth2-proxy",
206 session := CreateAuthorizedSession()
224 session := CreateAuthorizedSession()
207 err := p.getEmail(context.Background(), session)
225 err := p.getEmail(context.Background(), session)
@@ -216,8 +234,11 @@ func TestGitHubProvider_getEmailWithNoAccessToPrivateRepo(t *testing.T) {
216 defer b.Close()
234 defer b.Close()
218 bURL, _ := url.Parse(b.URL)
236 bURL, _ := url.Parse(b.URL)
219− p := testGitHubProvider(bURL.Host)
237+ p := testGitHubProvider(bURL.Host,
238+ options.GitHubOptions{
220− p.SetRepo("oauth2-proxy/oauth2-proxy", "")
239+ Repo: "oauth2-proxy/oauth2-proxy",
222 session := CreateAuthorizedSession()
243 session := CreateAuthorizedSession()
223 err := p.getEmail(context.Background(), session)
244 err := p.getEmail(context.Background(), session)
@@ -232,8 +253,12 @@ func TestGitHubProvider_getEmailWithToken(t *testing.T) {
232 defer b.Close()
253 defer b.Close()
234 bURL, _ := url.Parse(b.URL)
255 bURL, _ := url.Parse(b.URL)
235− p := testGitHubProvider(bURL.Host)
256+ p := testGitHubProvider(bURL.Host,
257+ options.GitHubOptions{
236− p.SetRepo("oauth2-proxy/oauth2-proxy", "token")
258+ Repo: "oauth2-proxy/oauth2-proxy",
238 session := CreateAuthorizedSession()
263 session := CreateAuthorizedSession()
239 err := p.getEmail(context.Background(), session)
264 err := p.getEmail(context.Background(), session)
@@ -248,7 +273,7 @@ func TestGitHubProvider_getEmailFailedRequest(t *testing.T) {
248 defer b.Close()
273 defer b.Close()
250 bURL, _ := url.Parse(b.URL)
275 bURL, _ := url.Parse(b.URL)
251− p := testGitHubProvider(bURL.Host)
276+ p := testGitHubProvider(bURL.Host, options.GitHubOptions{})
253 // We'll trigger a request failure by using an unexpected access
278 // We'll trigger a request failure by using an unexpected access
254 // token. Alternatively, we could allow the parsing of the payload as
279 // token. Alternatively, we could allow the parsing of the payload as
@@ -266,7 +291,7 @@ func TestGitHubProvider_getEmailNotPresentInPayload(t *testing.T) {
266 defer b.Close()
291 defer b.Close()
268 bURL, _ := url.Parse(b.URL)
293 bURL, _ := url.Parse(b.URL)
269− p := testGitHubProvider(bURL.Host)
294+ p := testGitHubProvider(bURL.Host, options.GitHubOptions{})
271 session := CreateAuthorizedSession()
296 session := CreateAuthorizedSession()
272 err := p.getEmail(context.Background(), session)
297 err := p.getEmail(context.Background(), session)
@@ -281,7 +306,7 @@ func TestGitHubProvider_getUser(t *testing.T) {
281 defer b.Close()
306 defer b.Close()
283 bURL, _ := url.Parse(b.URL)
308 bURL, _ := url.Parse(b.URL)
284− p := testGitHubProvider(bURL.Host)
309+ p := testGitHubProvider(bURL.Host, options.GitHubOptions{})
286 session := CreateAuthorizedSession()
311 session := CreateAuthorizedSession()
287 err := p.getUser(context.Background(), session)
312 err := p.getUser(context.Background(), session)
@@ -297,8 +322,12 @@ func TestGitHubProvider_getUserWithRepoAndToken(t *testing.T) {
297 defer b.Close()
322 defer b.Close()
299 bURL, _ := url.Parse(b.URL)
324 bURL, _ := url.Parse(b.URL)
300− p := testGitHubProvider(bURL.Host)
325+ p := testGitHubProvider(bURL.Host,
326+ options.GitHubOptions{
301− p.SetRepo("oauth2-proxy/oauth2-proxy", "token")
327+ Repo: "oauth2-proxy/oauth2-proxy",
303 session := CreateAuthorizedSession()
332 session := CreateAuthorizedSession()
304 err := p.getUser(context.Background(), session)
333 err := p.getUser(context.Background(), session)
@@ -311,8 +340,12 @@ func TestGitHubProvider_getUserWithRepoAndTokenWithoutPushAccess(t *testing.T) {
311 defer b.Close()
340 defer b.Close()
313 bURL, _ := url.Parse(b.URL)
342 bURL, _ := url.Parse(b.URL)
314− p := testGitHubProvider(bURL.Host)
343+ p := testGitHubProvider(bURL.Host,
344+ options.GitHubOptions{
315− p.SetRepo("oauth2-proxy/oauth2-proxy", "token")
345+ Repo: "oauth2-proxy/oauth2-proxy",
317 session := CreateAuthorizedSession()
350 session := CreateAuthorizedSession()
318 err := p.getUser(context.Background(), session)
351 err := p.getUser(context.Background(), session)
@@ -328,8 +361,11 @@ func TestGitHubProvider_getEmailWithUsername(t *testing.T) {
328 defer b.Close()
361 defer b.Close()
330 bURL, _ := url.Parse(b.URL)
363 bURL, _ := url.Parse(b.URL)
331− p := testGitHubProvider(bURL.Host)
364+ p := testGitHubProvider(bURL.Host,
365+ options.GitHubOptions{
332− p.SetUsers([]string{"mbland", "octocat"})
366+ Users: []string{"mbland", "octocat"},
334 session := CreateAuthorizedSession()
370 session := CreateAuthorizedSession()
335 err := p.getEmail(context.Background(), session)
371 err := p.getEmail(context.Background(), session)
@@ -345,8 +381,11 @@ func TestGitHubProvider_getEmailWithNotAllowedUsername(t *testing.T) {
345 defer b.Close()
381 defer b.Close()
347 bURL, _ := url.Parse(b.URL)
383 bURL, _ := url.Parse(b.URL)
348− p := testGitHubProvider(bURL.Host)
384+ p := testGitHubProvider(bURL.Host,
385+ options.GitHubOptions{
349− p.SetUsers([]string{"octocat"})
386+ Users: []string{"octocat"},
351 session := CreateAuthorizedSession()
390 session := CreateAuthorizedSession()
352 err := p.getEmail(context.Background(), session)
391 err := p.getEmail(context.Background(), session)
@@ -366,9 +405,12 @@ func TestGitHubProvider_getEmailWithUsernameAndNotBelongToOrg(t *testing.T) {
366 defer b.Close()
405 defer b.Close()
368 bURL, _ := url.Parse(b.URL)
407 bURL, _ := url.Parse(b.URL)
369− p := testGitHubProvider(bURL.Host)
408+ p := testGitHubProvider(bURL.Host,
370− p.SetOrgTeam("not_belong_to", "")
409+ options.GitHubOptions{
410+ Org: "not_belog_to",
371− p.SetUsers([]string{"mbland"})
411+ Users: []string{"mbland"},
373 session := CreateAuthorizedSession()
415 session := CreateAuthorizedSession()
374 err := p.getEmail(context.Background(), session)
416 err := p.getEmail(context.Background(), session)
@@ -385,9 +427,13 @@ func TestGitHubProvider_getEmailWithUsernameAndNoAccessToPrivateRepo(t *testing.
385 defer b.Close()
427 defer b.Close()
387 bURL, _ := url.Parse(b.URL)
429 bURL, _ := url.Parse(b.URL)
388− p := testGitHubProvider(bURL.Host)
430+ p := testGitHubProvider(bURL.Host,
431+ options.GitHubOptions{
389− p.SetRepo("oauth2-proxy/oauth2-proxy", "")
432+ Repo: "oauth2-proxy/oauth2-proxy",
390− p.SetUsers([]string{"mbland"})
434+ Users: []string{"mbland"},
392 session := CreateAuthorizedSession()
438 session := CreateAuthorizedSession()
393 err := p.getEmail(context.Background(), session)
439 err := p.getEmail(context.Background(), session)