@@ -38,6 +38,7 @@ import (
38
38
"k8s.io/apiserver/pkg/audit/policy"
39
39
"k8s.io/apiserver/pkg/authentication/authenticator"
40
40
"k8s.io/apiserver/pkg/authentication/user"
41
+ "k8s.io/apiserver/pkg/authorization/authorizer"
41
42
"k8s.io/apiserver/pkg/endpoints/request"
42
43
"k8s.io/apiserver/pkg/server/healthz"
43
44
utilfeature "k8s.io/apiserver/pkg/util/feature"
@@ -83,6 +84,34 @@ func TestAuthorizeClientBearerTokenNoops(t *testing.T) {
83
84
}
84
85
}
85
86
87
+ func TestAuthorizeClientBearerTokenRequiredGroups (t * testing.T ) {
88
+ fakeAuthenticator := authenticator .RequestFunc (func (req * http.Request ) (* authenticator.Response , bool , error ) {
89
+ return & authenticator.Response {User : & user.DefaultInfo {}}, false , nil
90
+ })
91
+ fakeAuthorizer := authorizer .AuthorizerFunc (func (ctx context.Context , a authorizer.Attributes ) (authorizer.Decision , string , error ) {
92
+ return authorizer .DecisionAllow , "" , nil
93
+ })
94
+ target := & rest.Config {BearerToken : "secretToken" }
95
+ authN := & AuthenticationInfo {Authenticator : fakeAuthenticator }
96
+ authC := & AuthorizationInfo {Authorizer : fakeAuthorizer }
97
+
98
+ AuthorizeClientBearerToken (target , authN , authC )
99
+
100
+ fakeRequest , err := http .NewRequest ("" , "" , nil )
101
+ if err != nil {
102
+ t .Fatal (err )
103
+ }
104
+ fakeRequest .Header .Set ("Authorization" , "bearer secretToken" )
105
+ rsp , _ , err := authN .Authenticator .AuthenticateRequest (fakeRequest )
106
+ if err != nil {
107
+ t .Fatal (err )
108
+ }
109
+ expectedGroups := []string {user .AllAuthenticated , user .SystemPrivilegedGroup }
110
+ if ! reflect .DeepEqual (expectedGroups , rsp .User .GetGroups ()) {
111
+ t .Fatalf ("unexpected groups = %v returned, expected = %v" , rsp .User .GetGroups (), expectedGroups )
112
+ }
113
+ }
114
+
86
115
func TestNewWithDelegate (t * testing.T ) {
87
116
_ , ctx := ktesting .NewTestContext (t )
88
117
ctx , cancel := context .WithCancelCause (ctx )
0 commit comments