func authEndpointHandler(t *testing.T, oauth2 fosite.OAuth2Provider, session fosite.Session) func(rw http.ResponseWriter, req *http.Request) { return func(rw http.ResponseWriter, req *http.Request) { ctx := fosite.NewContext() ar, err := oauth2.NewAuthorizeRequest(ctx, req) if err != nil { t.Logf("Access request failed because %s.", err.Error()) t.Logf("Request: %s.", ar) t.Logf("Stack: %s.", err.(stackTracer).StackTrace()) oauth2.WriteAuthorizeError(rw, ar, err) return } if ar.GetRequestedScopes().Has("fosite") { ar.GrantScope("fosite") } if ar.GetRequestedScopes().Has("offline") { ar.GrantScope("offline") } if ar.GetRequestedScopes().Has("openid") { ar.GrantScope("openid") } // Normally, this would be the place where you would check if the user is logged in and gives his consent. // For this test, let's assume that the user exists, is logged in, and gives his consent... response, err := oauth2.NewAuthorizeResponse(ctx, req, ar, session) if err != nil { t.Logf("Access request failed because %s.", err.Error()) t.Logf("Request: %s.", ar) t.Logf("Stack: %s.", err.(stackTracer).StackTrace()) oauth2.WriteAuthorizeError(rw, ar, err) return } oauth2.WriteAuthorizeResponse(rw, ar, response) } }