@@ -20,78 +20,121 @@ func TestSecretSyncerReconciler(t *testing.T) {
20
20
authFileName := "test-auth.json"
21
21
for _ , tt := range []struct {
22
22
name string
23
- secret * corev1.Secret
24
- addSecret bool
23
+ secretKey * types.NamespacedName
24
+ sa * corev1.ServiceAccount
25
+ secrets []corev1.Secret
25
26
wantErr string
26
27
fileShouldExistBefore bool
27
28
fileShouldExistAfter bool
28
29
}{
29
30
{
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
+ },
38
42
},
39
43
},
40
- addSecret : true ,
41
44
fileShouldExistBefore : false ,
42
45
fileShouldExistAfter : true ,
43
46
},
44
47
{
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
+ },
53
59
},
54
60
},
55
- addSecret : true ,
56
61
fileShouldExistBefore : false ,
57
62
fileShouldExistAfter : true ,
58
63
},
59
64
{
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 {
62
73
ObjectMeta : metav1.ObjectMeta {
63
- Name : "test-secret " ,
74
+ Name : "test-sa " ,
64
75
Namespace : "test-secret-namespace" ,
65
76
},
66
- Data : map [string ][]byte {
67
- ".dockerconfigjson" : secretFullData ,
77
+ ImagePullSecrets : []corev1.LocalObjectReference {
78
+ {Name : "test-secret1" },
79
+ {Name : "test-secret2" },
68
80
},
69
81
},
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 ,
73
104
},
74
105
} {
75
106
t .Run (tt .name , func (t * testing.T ) {
76
107
ctx := context .Background ()
77
108
tempAuthFile := filepath .Join (t .TempDir (), authFileName )
78
109
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 )
81
115
}
82
116
cl := clientBuilder .Build ()
83
117
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
+ }
85
127
r := & PullSecretReconciler {
86
- Client : cl ,
87
- SecretKey : & secretKey ,
88
- AuthFilePath : tempAuthFile ,
128
+ Client : cl ,
129
+ SecretKey : tt .secretKey ,
130
+ ServiceAccountKey : saKey ,
131
+ AuthFilePath : tempAuthFile ,
89
132
}
90
133
if tt .fileShouldExistBefore {
91
134
err := os .WriteFile (tempAuthFile , secretFullData , 0600 )
92
135
require .NoError (t , err )
93
136
}
94
- res , err := r .Reconcile (ctx , ctrl.Request {NamespacedName : secretKey })
137
+ res , err := r .Reconcile (ctx , ctrl.Request {NamespacedName : triggerKey })
95
138
if tt .wantErr == "" {
96
139
require .NoError (t , err )
97
140
} else {
0 commit comments