Skip to content
Snippets Groups Projects
Unverified Commit 28aaa8f5 authored by Maksim Nabokikh's avatar Maksim Nabokikh Committed by GitHub
Browse files

fix: Do not skip approval screen by default (#2897)

parent e568cdc9
Branches
Tags
No related merge requests found
...@@ -523,7 +523,7 @@ func (s *Server) finalizeLogin(identity connector.Identity, authReq storage.Auth ...@@ -523,7 +523,7 @@ func (s *Server) finalizeLogin(identity connector.Identity, authReq storage.Auth
authReq.ConnectorID, claims.Username, claims.PreferredUsername, email, claims.Groups) authReq.ConnectorID, claims.Username, claims.PreferredUsername, email, claims.Groups)
// we can skip the redirect to /approval and go ahead and send code if it's not required // we can skip the redirect to /approval and go ahead and send code if it's not required
if s.skipApproval || !authReq.ForceApprovalPrompt { if s.skipApproval && !authReq.ForceApprovalPrompt {
return "", true, nil return "", true, nil
} }
......
...@@ -10,7 +10,6 @@ import ( ...@@ -10,7 +10,6 @@ import (
"net/http/httptest" "net/http/httptest"
"net/url" "net/url"
"path" "path"
"strings"
"testing" "testing"
"time" "time"
...@@ -339,6 +338,7 @@ func TestHandlePasswordLoginWithSkipApproval(t *testing.T) { ...@@ -339,6 +338,7 @@ func TestHandlePasswordLoginWithSkipApproval(t *testing.T) {
name string name string
skipApproval bool skipApproval bool
authReq storage.AuthRequest authReq storage.AuthRequest
expectedRes string
}{ }{
{ {
name: "Force approval", name: "Force approval",
...@@ -351,6 +351,7 @@ func TestHandlePasswordLoginWithSkipApproval(t *testing.T) { ...@@ -351,6 +351,7 @@ func TestHandlePasswordLoginWithSkipApproval(t *testing.T) {
ResponseTypes: resTypes, ResponseTypes: resTypes,
ForceApprovalPrompt: true, ForceApprovalPrompt: true,
}, },
expectedRes: "/approval",
}, },
{ {
name: "Skip approval by server config", name: "Skip approval by server config",
...@@ -363,9 +364,10 @@ func TestHandlePasswordLoginWithSkipApproval(t *testing.T) { ...@@ -363,9 +364,10 @@ func TestHandlePasswordLoginWithSkipApproval(t *testing.T) {
ResponseTypes: resTypes, ResponseTypes: resTypes,
ForceApprovalPrompt: true, ForceApprovalPrompt: true,
}, },
expectedRes: "/approval",
}, },
{ {
name: "Skip approval by auth request", name: "No skip",
skipApproval: false, skipApproval: false,
authReq: storage.AuthRequest{ authReq: storage.AuthRequest{
ID: authReqID, ID: authReqID,
...@@ -375,6 +377,20 @@ func TestHandlePasswordLoginWithSkipApproval(t *testing.T) { ...@@ -375,6 +377,20 @@ func TestHandlePasswordLoginWithSkipApproval(t *testing.T) {
ResponseTypes: resTypes, ResponseTypes: resTypes,
ForceApprovalPrompt: false, ForceApprovalPrompt: false,
}, },
expectedRes: "/approval",
},
{
name: "Skip approval",
skipApproval: true,
authReq: storage.AuthRequest{
ID: authReqID,
ConnectorID: connID,
RedirectURI: "cb",
Expiry: expiry,
ResponseTypes: resTypes,
ForceApprovalPrompt: false,
},
expectedRes: "/auth/mockPw/cb",
}, },
} }
...@@ -410,15 +426,11 @@ func TestHandlePasswordLoginWithSkipApproval(t *testing.T) { ...@@ -410,15 +426,11 @@ func TestHandlePasswordLoginWithSkipApproval(t *testing.T) {
require.Equal(t, 303, rr.Code) require.Equal(t, 303, rr.Code)
resp := rr.Result() resp := rr.Result()
cbPath := strings.Split(resp.Header.Get("Location"), "?")[0]
if tc.skipApproval || !tc.authReq.ForceApprovalPrompt { defer resp.Body.Close()
require.Equal(t, "/auth/mockPw/cb", cbPath)
} else {
require.Equal(t, "/approval", cbPath)
}
resp.Body.Close() cb, _ := url.Parse(resp.Header.Get("Location"))
require.Equal(t, tc.expectedRes, cb.Path)
} }
} }
...@@ -435,6 +447,7 @@ func TestHandleConnectorCallbackWithSkipApproval(t *testing.T) { ...@@ -435,6 +447,7 @@ func TestHandleConnectorCallbackWithSkipApproval(t *testing.T) {
name string name string
skipApproval bool skipApproval bool
authReq storage.AuthRequest authReq storage.AuthRequest
expectedRes string
}{ }{
{ {
name: "Force approval", name: "Force approval",
...@@ -447,6 +460,7 @@ func TestHandleConnectorCallbackWithSkipApproval(t *testing.T) { ...@@ -447,6 +460,7 @@ func TestHandleConnectorCallbackWithSkipApproval(t *testing.T) {
ResponseTypes: resTypes, ResponseTypes: resTypes,
ForceApprovalPrompt: true, ForceApprovalPrompt: true,
}, },
expectedRes: "/approval",
}, },
{ {
name: "Skip approval by server config", name: "Skip approval by server config",
...@@ -459,6 +473,7 @@ func TestHandleConnectorCallbackWithSkipApproval(t *testing.T) { ...@@ -459,6 +473,7 @@ func TestHandleConnectorCallbackWithSkipApproval(t *testing.T) {
ResponseTypes: resTypes, ResponseTypes: resTypes,
ForceApprovalPrompt: true, ForceApprovalPrompt: true,
}, },
expectedRes: "/approval",
}, },
{ {
name: "Skip approval by auth request", name: "Skip approval by auth request",
...@@ -471,6 +486,20 @@ func TestHandleConnectorCallbackWithSkipApproval(t *testing.T) { ...@@ -471,6 +486,20 @@ func TestHandleConnectorCallbackWithSkipApproval(t *testing.T) {
ResponseTypes: resTypes, ResponseTypes: resTypes,
ForceApprovalPrompt: false, ForceApprovalPrompt: false,
}, },
expectedRes: "/approval",
},
{
name: "Skip approval",
skipApproval: true,
authReq: storage.AuthRequest{
ID: authReqID,
ConnectorID: connID,
RedirectURI: "cb",
Expiry: expiry,
ResponseTypes: resTypes,
ForceApprovalPrompt: false,
},
expectedRes: "/callback/cb",
}, },
} }
...@@ -492,14 +521,9 @@ func TestHandleConnectorCallbackWithSkipApproval(t *testing.T) { ...@@ -492,14 +521,9 @@ func TestHandleConnectorCallbackWithSkipApproval(t *testing.T) {
require.Equal(t, 303, rr.Code) require.Equal(t, 303, rr.Code)
resp := rr.Result() resp := rr.Result()
cbPath := strings.Split(resp.Header.Get("Location"), "?")[0] defer resp.Body.Close()
if tc.skipApproval || !tc.authReq.ForceApprovalPrompt {
require.Equal(t, "/callback/cb", cbPath)
} else {
require.Equal(t, "/approval", cbPath)
}
resp.Body.Close() cb, _ := url.Parse(resp.Header.Get("Location"))
require.Equal(t, tc.expectedRes, cb.Path)
} }
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment