@@ -19,7 +19,10 @@ package auth
19
19
import (
20
20
"context"
21
21
"testing"
22
+ "time"
22
23
24
+ "k8s.io/apimachinery/pkg/api/equality"
25
+ clientgotesting "k8s.io/client-go/testing"
23
26
duckv1 "knative.dev/pkg/apis/duck/v1"
24
27
kubeclient "knative.dev/pkg/client/injection/kube/client/fake"
25
28
@@ -133,18 +136,51 @@ func TestEnsureOIDCServiceAccountExistsForResource(t *testing.T) {
133
136
eventtypes := make ([]runtime.Object , 0 , 10 )
134
137
listers := rttestingv1 .NewListers (eventtypes )
135
138
136
- err := EnsureOIDCServiceAccountExistsForResource (ctx , listers .GetServiceAccountLister (), kubeclient .Get (ctx ), gvk , objectMeta )
137
- if err != nil {
138
- t .Errorf ("EnsureOIDCServiceAccountExistsForResource failed: %s" , err )
139
+ client := kubeclient .Get (ctx )
139
140
141
+ err := EnsureOIDCServiceAccountExistsForResource (ctx , listers .GetServiceAccountLister (), client , gvk , objectMeta )
142
+ if err != nil {
143
+ t .Fatalf ("EnsureOIDCServiceAccountExistsForResource failed: %s" , err )
140
144
}
141
145
expected := GetOIDCServiceAccountForResource (gvk , objectMeta )
142
146
sa , err := kubeclient .Get (ctx ).CoreV1 ().ServiceAccounts (objectMeta .Namespace ).Get (context .TODO (), expected .Name , metav1.GetOptions {})
143
147
if err != nil {
144
- t .Errorf ("get ServiceAccounts failed: %s" , err )
148
+ t .Fatalf ("get ServiceAccounts failed: %s" , err )
145
149
}
146
150
if sa == nil || sa .Name != expected .Name {
147
- t .Errorf ("EnsureOIDCServiceAccountExistsForResource create ServiceAccounts failed: %s" , err )
151
+ t .Fatalf ("EnsureOIDCServiceAccountExistsForResource create ServiceAccounts failed: %s" , err )
152
+ }
153
+
154
+ updated := expected .DeepCopy ()
155
+ updated .Secrets = []v1.ObjectReference {{
156
+ Kind : "Secret" ,
157
+ Name : "test-secret" ,
158
+ APIVersion : "v1" ,
159
+ }}
160
+ updated .Annotations ["testannotation" ] = "testvalue"
161
+ updated .CreationTimestamp = metav1.Time {Time : time .Now ()}
162
+
163
+ listers = rttestingv1 .NewListers ([]runtime.Object {updated })
164
+
165
+ _ , err = client .CoreV1 ().ServiceAccounts (objectMeta .Namespace ).Update (context .TODO (), updated , metav1.UpdateOptions {})
166
+ if err != nil {
167
+ t .Fatalf ("Update ServiceAccounts failed: %s" , err )
168
+ }
169
+ err = EnsureOIDCServiceAccountExistsForResource (ctx , listers .GetServiceAccountLister (), client , gvk , objectMeta )
170
+ if err != nil {
171
+ t .Fatalf ("EnsureOIDCServiceAccountExistsForResource failed: %s" , err )
172
+ }
173
+ client .Fake .AddReactor ("*" , "*" , func (action clientgotesting.Action ) (handled bool , ret runtime.Object , err error ) {
174
+ t .Fatalf ("Action detected %#v" , action )
175
+ return
176
+ })
177
+ sa , err = client .CoreV1 ().ServiceAccounts (objectMeta .Namespace ).Get (context .TODO (), expected .Name , metav1.GetOptions {})
178
+ if err != nil {
179
+ t .Fatalf ("get ServiceAccounts failed: %s" , err )
180
+ }
181
+
182
+ if len (sa .Secrets ) != len (updated .Secrets ) || ! equality .Semantic .DeepEqual (sa .Secrets , updated .Secrets ) {
183
+ t .Fatalf ("Got secrets is not equal to updated secret, got %#v, want %#v" , sa .Secrets , updated .Secrets )
148
184
}
149
185
}
150
186
0 commit comments