git.iko.soy/typeable/oauth2-proxy
on master help sign in
De-duplicate code in GetLoginURL of in logingov provider
9a64e67Alexander Block
providers/logingov.go+5−13
@@ -225,19 +225,11 @@ func (p *LoginGovProvider) Redeem(ctx context.Context, redirectURL, code string)
225
225
226// GetLoginURL overrides GetLoginURL to add login.gov parameters
226// GetLoginURL overrides GetLoginURL to add login.gov parameters
227func (p *LoginGovProvider) GetLoginURL(redirectURI, state string) string {
227func (p *LoginGovProvider) GetLoginURL(redirectURI, state string) string {
228− a := *p.LoginURL
228+ a, params := DefaultGetLoginURL(p.ProviderData, redirectURI, state)
229− params, _ := url.ParseQuery(a.RawQuery)
230− params.Set("redirect_uri", redirectURI)
231− params.Set("approval_prompt", p.ApprovalPrompt)
232− params.Add("scope", p.Scope)
233− params.Set("client_id", p.ClientID)
234− params.Set("response_type", "code")
235− params.Add("state", state)
236− acr := p.AcrValues
229+ if p.AcrValues == "" {
237− if acr == "" {
238− acr = "http://idmanagement.gov/ns/assurance/loa/1"
230+ acr := "http://idmanagement.gov/ns/assurance/loa/1"
239− }
240− params.Add("acr_values", acr)
231+ params.Add("acr_values", acr)
232+ }
241 params.Add("nonce", p.Nonce)
233 params.Add("nonce", p.Nonce)
242 a.RawQuery = params.Encode()
234 a.RawQuery = params.Encode()
243 return a.String()
235 return a.String()
providers/logingov_test.go+7
@@ -289,3 +289,10 @@ func TestLoginGovProviderBadNonce(t *testing.T) {
289 // The "badfakenonce" in the idtoken above should cause this to error out
289 // The "badfakenonce" in the idtoken above should cause this to error out
290 assert.Error(t, err)
290 assert.Error(t, err)
291}
291}
292+
293+func TestLoginGovProviderGetLoginURL(t *testing.T) {
294+ p, _, _ := newLoginGovProvider()
295+ result := p.GetLoginURL("http://redirect/", "")
296+ assert.Contains(t, result, "acr_values="+url.QueryEscape("http://idmanagement.gov/ns/assurance/loa/1"))
297+ assert.Contains(t, result, "nonce=fakenonce")
298+}