@@ -26,6 +26,7 @@ func TestHandler(t *testing.T) {
2626 res authorization.Response
2727 fgaMocks func (openfga * mocks.OpenFGAServiceClient )
2828 k8sMocks func (client * mocks.Client , cluster * mocks.Cluster )
29+ rmpMocks func (rmp * mocks.Provider )
2930 }{
3031 {
3132 name : "should skip processing if no extra attrs present" ,
@@ -65,6 +66,43 @@ func TestHandler(t *testing.T) {
6566
6667 },
6768 },
69+ {
70+ name : "should skip processing if restmapper cannot be retrieved" ,
71+ req : authorization.Request {
72+ SubjectAccessReview : v1.SubjectAccessReview {
73+ Spec : v1.SubjectAccessReviewSpec {
74+ Extra : map [string ]v1.ExtraValue {
75+ "authorization.kubernetes.io/cluster-name" : {"a" },
76+ },
77+ ResourceAttributes : & v1.ResourceAttributes {},
78+ },
79+ },
80+ },
81+ res : authorization .NoOpinion (),
82+ k8sMocks : func (cl * mocks.Client , cluster * mocks.Cluster ) {
83+ cl .EXPECT ().
84+ Get (mock .Anything , mock .Anything , mock .Anything , mock .Anything ).
85+ RunAndReturn (
86+ func (ctx context.Context , key client.ObjectKey , obj client.Object , opts ... client.GetOption ) error {
87+ acc := obj .(* v1alpha1.AccountInfo )
88+
89+ * acc = v1alpha1.AccountInfo {
90+ Spec : v1alpha1.AccountInfoSpec {
91+ Account : v1alpha1.AccountLocation {
92+ OriginClusterId : "origin" ,
93+ Name : "origin-account" ,
94+ },
95+ },
96+ }
97+ return nil
98+ },
99+ )
100+
101+ },
102+ rmpMocks : func (rmp * mocks.Provider ) {
103+ rmp .EXPECT ().Get (mock .Anything ).Return (nil , false )
104+ },
105+ },
68106 {
69107 name : "should process request non-parent, non-namespaced successfully" ,
70108 req : authorization.Request {
@@ -103,6 +141,8 @@ func TestHandler(t *testing.T) {
103141 },
104142 )
105143
144+ },
145+ rmpMocks : func (rmp * mocks.Provider ) {
106146 rm := meta .NewDefaultRESTMapper ([]schema.GroupVersion {})
107147
108148 gv := schema.GroupVersion {
@@ -117,7 +157,7 @@ func TestHandler(t *testing.T) {
117157 meta .RESTScopeRoot ,
118158 )
119159
120- cluster .EXPECT ().GetRESTMapper ( ).Return (rm )
160+ rmp .EXPECT ().Get ( mock . Anything ).Return (rm , true )
121161 },
122162 fgaMocks : func (openfga * mocks.OpenFGAServiceClient ) {
123163 openfga .EXPECT ().Check (mock .Anything , mock .Anything ).RunAndReturn (
@@ -181,7 +221,8 @@ func TestHandler(t *testing.T) {
181221 return nil
182222 },
183223 )
184-
224+ },
225+ rmpMocks : func (rmp * mocks.Provider ) {
185226 rm := meta .NewDefaultRESTMapper ([]schema.GroupVersion {})
186227
187228 gv := schema.GroupVersion {
@@ -196,7 +237,7 @@ func TestHandler(t *testing.T) {
196237 meta .RESTScopeNamespace ,
197238 )
198239
199- cluster .EXPECT ().GetRESTMapper ( ).Return (rm )
240+ rmp .EXPECT ().Get ( mock . Anything ).Return (rm , true )
200241 },
201242 fgaMocks : func (openfga * mocks.OpenFGAServiceClient ) {
202243 openfga .EXPECT ().Check (mock .Anything , mock .Anything ).RunAndReturn (
@@ -268,7 +309,8 @@ func TestHandler(t *testing.T) {
268309 return nil
269310 },
270311 )
271-
312+ },
313+ rmpMocks : func (rmp * mocks.Provider ) {
272314 rm := meta .NewDefaultRESTMapper ([]schema.GroupVersion {})
273315
274316 gv := schema.GroupVersion {
@@ -283,7 +325,7 @@ func TestHandler(t *testing.T) {
283325 meta .RESTScopeNamespace ,
284326 )
285327
286- cluster .EXPECT ().GetRESTMapper ( ).Return (rm )
328+ rmp .EXPECT ().Get ( mock . Anything ).Return (rm , true )
287329 },
288330 fgaMocks : func (openfga * mocks.OpenFGAServiceClient ) {
289331 openfga .EXPECT ().Check (mock .Anything , mock .Anything ).RunAndReturn (
@@ -346,7 +388,8 @@ func TestHandler(t *testing.T) {
346388 return nil
347389 },
348390 )
349-
391+ },
392+ rmpMocks : func (rmp * mocks.Provider ) {
350393 rm := meta .NewDefaultRESTMapper ([]schema.GroupVersion {})
351394
352395 gv := schema.GroupVersion {
@@ -361,7 +404,7 @@ func TestHandler(t *testing.T) {
361404 meta .RESTScopeRoot ,
362405 )
363406
364- cluster .EXPECT ().GetRESTMapper ( ).Return (rm )
407+ rmp .EXPECT ().Get ( mock . Anything ).Return (rm , true )
365408 },
366409 fgaMocks : func (openfga * mocks.OpenFGAServiceClient ) {
367410 openfga .EXPECT ().Check (mock .Anything , mock .Anything ).RunAndReturn (
@@ -398,6 +441,11 @@ func TestHandler(t *testing.T) {
398441 test .k8sMocks (client , cluster )
399442 }
400443
444+ rmp := mocks .NewProvider (t )
445+ if test .rmpMocks != nil {
446+ test .rmpMocks (rmp )
447+ }
448+
401449 mgr .EXPECT ().GetCluster (mock .Anything , mock .Anything ).Return (cluster , nil ).Maybe ()
402450 cluster .EXPECT ().GetClient ().Return (client ).Maybe ()
403451
@@ -406,7 +454,7 @@ func TestHandler(t *testing.T) {
406454 test .fgaMocks (openfga )
407455 }
408456
409- h := contextual .New (mgr , openfga , "authorization.kubernetes.io/cluster-name" )
457+ h := contextual .New (mgr , openfga , rmp , "authorization.kubernetes.io/cluster-name" )
410458
411459 ctx := t .Context ()
412460
0 commit comments