git.iko.soy/typeable/oauth2-proxy
on master help sign in
De-duplicate code in GetLoginURL of in logingov provider

Also add unit test to ensure logingov specific logic is applied.

commit9a64e67d5bacf69ee8ec363842aa652260ff3fa4 authorAlexander Block <ablock84@gmail.com> dateMon 14 Sep 2020, 13:55 (6 years ago) parentfde09be
2 files changed+12−13
providers/logingov.go+5−13 providers/logingov_test.go+7
providers/logingov.go+5−13
@@ -225,19 +225,11 @@ func (p *LoginGovProvider) Redeem(ctx context.Context, redirectURL, code string)
225225
226226// GetLoginURL overrides GetLoginURL to add login.gov parameters
227227func (p *LoginGovProvider) GetLoginURL(redirectURI, state string) string {
228− a := *p.LoginURL
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
237− if acr == "" {
238− acr = "http://idmanagement.gov/ns/assurance/loa/1"
239− }
240− params.Add("acr_values", acr)
228+ a, params := DefaultGetLoginURL(p.ProviderData, redirectURI, state)
229+ if p.AcrValues == "" {
230+ acr := "http://idmanagement.gov/ns/assurance/loa/1"
231+ params.Add("acr_values", acr)
232+ }
241233 params.Add("nonce", p.Nonce)
242234 a.RawQuery = params.Encode()
243235 return a.String()
providers/logingov_test.go+7
@@ -289,3 +289,10 @@ func TestLoginGovProviderBadNonce(t *testing.T) {
289289 // The "badfakenonce" in the idtoken above should cause this to error out
290290 assert.Error(t, err)
291291}
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+}