Skip to content

Commit 2144fad

Browse files
committed
fixup! Support serviceaccount pull secrets
Signed-off-by: Todd Short <[email protected]>
1 parent c80fae0 commit 2144fad

File tree

1 file changed

+78
-35
lines changed

1 file changed

+78
-35
lines changed

internal/shared/controllers/pull_secret_controller_test.go

Lines changed: 78 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)