@@ -20,78 +20,121 @@ func TestSecretSyncerReconciler(t *testing.T) {
2020 authFileName := "test-auth.json"
2121 for _ , tt := range []struct {
2222 name string
23- secret * corev1.Secret
24- addSecret bool
23+ secretKey * types.NamespacedName
24+ sa * corev1.ServiceAccount
25+ secrets []corev1.Secret
2526 wantErr string
2627 fileShouldExistBefore bool
2728 fileShouldExistAfter bool
2829 }{
2930 {
30- name : "secret exists, dockerconfigjson content gets saved to authFile" ,
31- secret : & corev1.Secret {
32- ObjectMeta : metav1.ObjectMeta {
33- Name : "test-secret" ,
34- Namespace : "test-secret-namespace" ,
35- },
36- Data : map [string ][]byte {
37- ".dockerconfigjson" : secretFullData ,
31+ name : "secret exists, dockerconfigjson content gets saved to authFile" ,
32+ secretKey : & types.NamespacedName {Namespace : "test-secret-namespace" , Name : "test-secret" },
33+ secrets : []corev1.Secret {
34+ {
35+ ObjectMeta : metav1.ObjectMeta {
36+ Name : "test-secret" ,
37+ Namespace : "test-secret-namespace" ,
38+ },
39+ Data : map [string ][]byte {
40+ ".dockerconfigjson" : secretFullData ,
41+ },
3842 },
3943 },
40- addSecret : true ,
4144 fileShouldExistBefore : false ,
4245 fileShouldExistAfter : true ,
4346 },
4447 {
45- name : "secret exists, dockercfg content gets saved to authFile" ,
46- secret : & corev1.Secret {
47- ObjectMeta : metav1.ObjectMeta {
48- Name : "test-secret" ,
49- Namespace : "test-secret-namespace" ,
50- },
51- Data : map [string ][]byte {
52- ".dockercfg" : secretPartData ,
48+ name : "secret exists, dockercfg content gets saved to authFile" ,
49+ secretKey : & types.NamespacedName {Namespace : "test-secret-namespace" , Name : "test-secret" },
50+ secrets : []corev1.Secret {
51+ {
52+ ObjectMeta : metav1.ObjectMeta {
53+ Name : "test-secret" ,
54+ Namespace : "test-secret-namespace" ,
55+ },
56+ Data : map [string ][]byte {
57+ ".dockercfg" : secretPartData ,
58+ },
5359 },
5460 },
55- addSecret : true ,
5661 fileShouldExistBefore : false ,
5762 fileShouldExistAfter : true ,
5863 },
5964 {
60- name : "secret does not exist, file exists previously, file should get deleted" ,
61- secret : & corev1.Secret {
65+ name : "secret does not exist, file exists previously, file should get deleted" ,
66+ secretKey : & types.NamespacedName {Namespace : "test-secret-namespace" , Name : "test-secret" },
67+ fileShouldExistBefore : true ,
68+ fileShouldExistAfter : false ,
69+ },
70+ {
71+ name : "serviceaccount secrets, both dockerconfigjson and dockercfg content gets saved to authFile" ,
72+ sa : & corev1.ServiceAccount {
6273 ObjectMeta : metav1.ObjectMeta {
63- Name : "test-secret " ,
74+ Name : "test-sa " ,
6475 Namespace : "test-secret-namespace" ,
6576 },
66- Data : map [string ][]byte {
67- ".dockerconfigjson" : secretFullData ,
77+ ImagePullSecrets : []corev1.LocalObjectReference {
78+ {Name : "test-secret1" },
79+ {Name : "test-secret2" },
6880 },
6981 },
70- addSecret : false ,
71- fileShouldExistBefore : true ,
72- fileShouldExistAfter : false ,
82+ secrets : []corev1.Secret {
83+ {
84+ ObjectMeta : metav1.ObjectMeta {
85+ Name : "test-secret1" ,
86+ Namespace : "test-secret-namespace" ,
87+ },
88+ Data : map [string ][]byte {
89+ ".dockerconfigjson" : secretFullData ,
90+ },
91+ },
92+ {
93+ ObjectMeta : metav1.ObjectMeta {
94+ Name : "test-secret2" ,
95+ Namespace : "test-secret-namespace" ,
96+ },
97+ Data : map [string ][]byte {
98+ ".dockerconfigjson" : secretFullData ,
99+ },
100+ },
101+ },
102+ fileShouldExistBefore : false ,
103+ fileShouldExistAfter : true ,
73104 },
74105 } {
75106 t .Run (tt .name , func (t * testing.T ) {
76107 ctx := context .Background ()
77108 tempAuthFile := filepath .Join (t .TempDir (), authFileName )
78109 clientBuilder := fake .NewClientBuilder ()
79- if tt .addSecret {
80- clientBuilder = clientBuilder .WithObjects (tt .secret )
110+ for _ , ps := range tt .secrets {
111+ clientBuilder = clientBuilder .WithObjects (ps .DeepCopy ())
112+ }
113+ if tt .sa != nil {
114+ clientBuilder = clientBuilder .WithObjects (tt .sa )
81115 }
82116 cl := clientBuilder .Build ()
83117
84- secretKey := types.NamespacedName {Namespace : tt .secret .Namespace , Name : tt .secret .Name }
118+ var triggerKey types.NamespacedName
119+ if tt .secretKey != nil {
120+ triggerKey = * tt .secretKey
121+ }
122+ var saKey types.NamespacedName
123+ if tt .sa != nil {
124+ saKey = types.NamespacedName {Namespace : tt .sa .Namespace , Name : tt .sa .Name }
125+ triggerKey = saKey
126+ }
85127 r := & PullSecretReconciler {
86- Client : cl ,
87- SecretKey : & secretKey ,
88- AuthFilePath : tempAuthFile ,
128+ Client : cl ,
129+ SecretKey : tt .secretKey ,
130+ ServiceAccountKey : saKey ,
131+ AuthFilePath : tempAuthFile ,
89132 }
90133 if tt .fileShouldExistBefore {
91134 err := os .WriteFile (tempAuthFile , secretFullData , 0600 )
92135 require .NoError (t , err )
93136 }
94- res , err := r .Reconcile (ctx , ctrl.Request {NamespacedName : secretKey })
137+ res , err := r .Reconcile (ctx , ctrl.Request {NamespacedName : triggerKey })
95138 if tt .wantErr == "" {
96139 require .NoError (t , err )
97140 } else {
0 commit comments