From dc6ca7cd25d82039a89c6b0d34cb1cfe80d186e9 Mon Sep 17 00:00:00 2001 From: Earl Warren Date: Tue, 27 Jun 2023 10:38:30 +0200 Subject: [PATCH] [TESTS] oauth2: make it possible to use an alternate http.Client (cherry picked from commit aea4ab25a93642b9032544e82299ef652162a092) (cherry picked from commit d386b212c48d0b1c8b50f947f11f08a0ad8c6d63) (cherry picked from commit c4935f08adc2830747905fdd051c551a7e3a0434) --- services/auth/source/oauth2/http.go | 10 +++++++ .../auth/source/oauth2/providers_custom.go | 26 ++++++++++++++----- .../auth/source/oauth2/providers_openid.go | 1 + 3 files changed, 30 insertions(+), 7 deletions(-) create mode 100644 services/auth/source/oauth2/http.go diff --git a/services/auth/source/oauth2/http.go b/services/auth/source/oauth2/http.go new file mode 100644 index 0000000000..1ee52412ae --- /dev/null +++ b/services/auth/source/oauth2/http.go @@ -0,0 +1,10 @@ +// SPDX-FileCopyrightText: Copyright the Forgejo contributors +// SPDX-License-Identifier: MIT + +package oauth2 + +import ( + "net/http" +) + +var HTTPClient *http.Client diff --git a/services/auth/source/oauth2/providers_custom.go b/services/auth/source/oauth2/providers_custom.go index 65cf538ad7..41570b699e 100644 --- a/services/auth/source/oauth2/providers_custom.go +++ b/services/auth/source/oauth2/providers_custom.go @@ -63,7 +63,9 @@ func init() { if setting.OAuth2Client.EnableAutoRegistration { scopes = append(scopes, "user:email") } - return github.NewCustomisedURL(clientID, secret, callbackURL, custom.AuthURL, custom.TokenURL, custom.ProfileURL, custom.EmailURL, scopes...), nil + provider := github.NewCustomisedURL(clientID, secret, callbackURL, custom.AuthURL, custom.TokenURL, custom.ProfileURL, custom.EmailURL, scopes...) + provider.HTTPClient = HTTPClient + return provider, nil })) RegisterGothProvider(NewCustomProvider( @@ -73,7 +75,9 @@ func init() { ProfileURL: availableAttribute(gitlab.ProfileURL), }, func(clientID, secret, callbackURL string, custom *CustomURLMapping, scopes []string) (goth.Provider, error) { scopes = append(scopes, "read_user") - return gitlab.NewCustomisedURL(clientID, secret, callbackURL, custom.AuthURL, custom.TokenURL, custom.ProfileURL, scopes...), nil + provider := gitlab.NewCustomisedURL(clientID, secret, callbackURL, custom.AuthURL, custom.TokenURL, custom.ProfileURL, scopes...) + provider.HTTPClient = HTTPClient + return provider, nil })) RegisterGothProvider(NewCustomProvider( @@ -83,7 +87,9 @@ func init() { ProfileURL: requiredAttribute(gitea.ProfileURL), }, func(clientID, secret, callbackURL string, custom *CustomURLMapping, scopes []string) (goth.Provider, error) { - return gitea.NewCustomisedURL(clientID, secret, callbackURL, custom.AuthURL, custom.TokenURL, custom.ProfileURL, scopes...), nil + provider := gitea.NewCustomisedURL(clientID, secret, callbackURL, custom.AuthURL, custom.TokenURL, custom.ProfileURL, scopes...) + provider.HTTPClient = HTTPClient + return provider, nil })) RegisterGothProvider(NewCustomProvider( @@ -93,7 +99,9 @@ func init() { ProfileURL: requiredAttribute(nextcloud.ProfileURL), }, func(clientID, secret, callbackURL string, custom *CustomURLMapping, scopes []string) (goth.Provider, error) { - return nextcloud.NewCustomisedURL(clientID, secret, callbackURL, custom.AuthURL, custom.TokenURL, custom.ProfileURL, scopes...), nil + provider := nextcloud.NewCustomisedURL(clientID, secret, callbackURL, custom.AuthURL, custom.TokenURL, custom.ProfileURL, scopes...) + provider.HTTPClient = HTTPClient + return provider, nil })) RegisterGothProvider(NewCustomProvider( @@ -101,7 +109,9 @@ func init() { AuthURL: requiredAttribute(mastodon.InstanceURL), }, func(clientID, secret, callbackURL string, custom *CustomURLMapping, scopes []string) (goth.Provider, error) { - return mastodon.NewCustomisedURL(clientID, secret, callbackURL, custom.AuthURL, scopes...), nil + provider := mastodon.NewCustomisedURL(clientID, secret, callbackURL, custom.AuthURL, scopes...) + provider.HTTPClient = HTTPClient + return provider, nil })) RegisterGothProvider(NewCustomProvider( @@ -114,10 +124,12 @@ func init() { azureScopes[i] = azureadv2.ScopeType(scope) } - return azureadv2.New(clientID, secret, callbackURL, azureadv2.ProviderOptions{ + provider := azureadv2.New(clientID, secret, callbackURL, azureadv2.ProviderOptions{ Tenant: azureadv2.TenantType(custom.Tenant), Scopes: azureScopes, - }), nil + }) + provider.HTTPClient = HTTPClient + return provider, nil }, )) } diff --git a/services/auth/source/oauth2/providers_openid.go b/services/auth/source/oauth2/providers_openid.go index 54530ae8a8..5f7ac15828 100644 --- a/services/auth/source/oauth2/providers_openid.go +++ b/services/auth/source/oauth2/providers_openid.go @@ -43,6 +43,7 @@ func (o *OpenIDProvider) CreateGothProvider(providerName, callbackURL string, so if err != nil { log.Warn("Failed to create OpenID Connect Provider with name '%s' with url '%s': %v", providerName, source.OpenIDConnectAutoDiscoveryURL, err) } + provider.HTTPClient = HTTPClient return provider, err }