Skip to content

Commit 5c02e7b

Browse files
committed
update and add unit tests
1 parent e412118 commit 5c02e7b

File tree

1 file changed

+132
-27
lines changed

1 file changed

+132
-27
lines changed

sidecar/pkg/configuration/tenant_configuration_test.go

+132-27
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,11 @@ import (
2525
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2626
)
2727

28+
const configSecretName = "config-secret"
29+
2830
func TestEnvVarsToFileContent(t *testing.T) {
2931
type args struct {
30-
envVars []corev1.EnvVar
32+
envVars []miniov2.EnvVar
3133
}
3234
tests := []struct {
3335
name string
@@ -37,7 +39,7 @@ func TestEnvVarsToFileContent(t *testing.T) {
3739
{
3840
name: "Basic test case",
3941
args: args{
40-
envVars: []corev1.EnvVar{
42+
envVars: []miniov2.EnvVar{
4143
{
4244
Name: "MINIO_UPDATE",
4345
Value: "on",
@@ -49,7 +51,7 @@ func TestEnvVarsToFileContent(t *testing.T) {
4951
{
5052
name: "Two Vars test case",
5153
args: args{
52-
envVars: []corev1.EnvVar{
54+
envVars: []miniov2.EnvVar{
5355
{
5456
Name: "MINIO_UPDATE",
5557
Value: "on",
@@ -77,20 +79,20 @@ export MINIO_UPDATE_MINISIGN_PUBKEY="RWTx5Zr1tiHQLwG9keckT0c45M3AGeHD6IvimQHpyRy
7779
func TestGetTenantConfiguration(t *testing.T) {
7880
type args struct {
7981
tenant *miniov2.Tenant
80-
cfgEnvExisting map[string]corev1.EnvVar
82+
cfgEnvExisting map[string]miniov2.EnvVar
8183
}
8284
tests := []struct {
8385
name string
8486
args args
85-
want []corev1.EnvVar
87+
want []miniov2.EnvVar
8688
}{
8789
{
8890
name: "Defaulted Values",
8991
args: args{
9092
tenant: &miniov2.Tenant{},
9193
cfgEnvExisting: nil,
9294
},
93-
want: []corev1.EnvVar{
95+
want: []miniov2.EnvVar{
9496
{
9597
Name: "MINIO_ARGS",
9698
Value: "",
@@ -118,7 +120,7 @@ func TestGetTenantConfiguration(t *testing.T) {
118120
args: args{
119121
tenant: &miniov2.Tenant{
120122
Spec: miniov2.TenantSpec{
121-
Env: []corev1.EnvVar{
123+
Env: []miniov2.EnvVar{
122124
{
123125
Name: "TEST",
124126
Value: "value",
@@ -128,7 +130,7 @@ func TestGetTenantConfiguration(t *testing.T) {
128130
},
129131
cfgEnvExisting: nil,
130132
},
131-
want: []corev1.EnvVar{
133+
want: []miniov2.EnvVar{
132134
{
133135
Name: "MINIO_ARGS",
134136
Value: "",
@@ -173,7 +175,7 @@ func TestParseConfEnvSecret(t *testing.T) {
173175
tests := []struct {
174176
name string
175177
args args
176-
want map[string]corev1.EnvVar
178+
want map[string]miniov2.EnvVar
177179
}{
178180
{
179181
name: "Basic case",
@@ -185,7 +187,7 @@ export MINIO_STORAGE_CLASS_STANDARD="EC:2"
185187
export MINIO_BROWSER="on"`)},
186188
},
187189
},
188-
want: map[string]corev1.EnvVar{
190+
want: map[string]miniov2.EnvVar{
189191
"MINIO_ROOT_USER": {
190192
Name: "MINIO_ROOT_USER",
191193
Value: "minio",
@@ -214,7 +216,7 @@ export MINIO_BROWSER="on"`)},
214216
export MINIO_BROWSER="on"`)},
215217
},
216218
},
217-
want: map[string]corev1.EnvVar{
219+
want: map[string]miniov2.EnvVar{
218220
"MINIO_ROOT_USER": {
219221
Name: "MINIO_ROOT_USER",
220222
Value: "minio",
@@ -245,8 +247,9 @@ export MINIO_BROWSER="on"`)},
245247

246248
func TestGetFullTenantConfig(t *testing.T) {
247249
type args struct {
248-
tenant *miniov2.Tenant
249-
configSecret *corev1.Secret
250+
tenant *miniov2.Tenant
251+
secrets map[string]*corev1.Secret
252+
configMaps map[string]*corev1.ConfigMap
250253
}
251254
tests := []struct {
252255
name string
@@ -258,19 +261,24 @@ func TestGetFullTenantConfig(t *testing.T) {
258261
args: args{
259262
tenant: &miniov2.Tenant{
260263
Spec: miniov2.TenantSpec{
261-
Env: []corev1.EnvVar{
264+
Configuration: &corev1.LocalObjectReference{
265+
Name: configSecretName,
266+
},
267+
Env: []miniov2.EnvVar{
262268
{
263269
Name: "TEST",
264270
Value: "value",
265271
},
266272
},
267273
},
268274
},
269-
configSecret: &corev1.Secret{
270-
Data: map[string][]byte{"config.env": []byte(`export MINIO_ROOT_USER="minio"
275+
secrets: map[string]*corev1.Secret{
276+
configSecretName: {
277+
Data: map[string][]byte{"config.env": []byte(`export MINIO_ROOT_USER="minio"
271278
export MINIO_ROOT_PASSWORD="minio123"
272279
export MINIO_STORAGE_CLASS_STANDARD="EC:2"
273280
export MINIO_BROWSER="on"`)},
281+
},
274282
},
275283
},
276284
want: `export MINIO_ARGS=""
@@ -290,7 +298,10 @@ export TEST="value"
290298
args: args{
291299
tenant: &miniov2.Tenant{
292300
Spec: miniov2.TenantSpec{
293-
Env: []corev1.EnvVar{
301+
Configuration: &corev1.LocalObjectReference{
302+
Name: configSecretName,
303+
},
304+
Env: []miniov2.EnvVar{
294305
{
295306
Name: "TEST",
296307
Value: "value",
@@ -303,11 +314,13 @@ export TEST="value"
303314
},
304315
},
305316
},
306-
configSecret: &corev1.Secret{
307-
Data: map[string][]byte{"config.env": []byte(`export MINIO_ROOT_USER="minio"
317+
secrets: map[string]*corev1.Secret{
318+
configSecretName: {
319+
Data: map[string][]byte{"config.env": []byte(`export MINIO_ROOT_USER="minio"
308320
export MINIO_ROOT_PASSWORD="minio123"
309321
export MINIO_STORAGE_CLASS_STANDARD="EC:2"
310322
export MINIO_BROWSER="on"`)},
323+
},
311324
},
312325
},
313326
want: `export MINIO_ARGS=""
@@ -332,7 +345,10 @@ export TEST="value"
332345
Namespace: "ns-x",
333346
},
334347
Spec: miniov2.TenantSpec{
335-
Env: []corev1.EnvVar{
348+
Configuration: &corev1.LocalObjectReference{
349+
Name: configSecretName,
350+
},
351+
Env: []miniov2.EnvVar{
336352
{
337353
Name: "TEST",
338354
Value: "value",
@@ -353,11 +369,102 @@ export TEST="value"
353369
},
354370
},
355371
},
356-
configSecret: &corev1.Secret{
357-
Data: map[string][]byte{"config.env": []byte(`export MINIO_ROOT_USER="minio"
372+
secrets: map[string]*corev1.Secret{
373+
configSecretName: {
374+
Data: map[string][]byte{"config.env": []byte(`export MINIO_ROOT_USER="minio"
375+
export MINIO_ROOT_PASSWORD="minio123"
376+
export MINIO_STORAGE_CLASS_STANDARD="EC:2"
377+
export MINIO_BROWSER="on"`)},
378+
},
379+
},
380+
},
381+
want: `export MINIO_ARGS="https://tenant-pool-0-{0...3}.tenant-hl.ns-x.svc.cluster.local/export{0...3}"
382+
export MINIO_BROWSER="on"
383+
export MINIO_BROWSER_REDIRECT_URL="http://console.minio"
384+
export MINIO_PROMETHEUS_JOB_ID="minio-job"
385+
export MINIO_ROOT_PASSWORD="minio123"
386+
export MINIO_ROOT_USER="minio"
387+
export MINIO_SERVER_URL="https://minio.ns-x.svc.cluster.local:443"
388+
export MINIO_STORAGE_CLASS_STANDARD="EC:2"
389+
export MINIO_UPDATE="on"
390+
export MINIO_UPDATE_MINISIGN_PUBKEY="RWTx5Zr1tiHQLwG9keckT0c45M3AGeHD6IvimQHpyRywVWGbP1aVSGav"
391+
export TEST="value"
392+
`,
393+
},
394+
{
395+
name: "Default with both a config-map and secret reference",
396+
args: args{
397+
tenant: &miniov2.Tenant{
398+
ObjectMeta: metav1.ObjectMeta{
399+
Name: "tenant",
400+
Namespace: "ns-x",
401+
},
402+
Spec: miniov2.TenantSpec{
403+
Configuration: &corev1.LocalObjectReference{
404+
Name: configSecretName,
405+
},
406+
Env: []miniov2.EnvVar{
407+
{
408+
Name: "TEST",
409+
Value: "value",
410+
},
411+
{
412+
Name: "TEST_CONFIGMAP",
413+
ValueFrom: &miniov2.EnvVarSource{
414+
ConfigMapKeyRef: &miniov2.ConfigMapKeySelector{
415+
LocalObjectReference: corev1.LocalObjectReference{
416+
Name: "test-configmap",
417+
},
418+
Key: "test-configmap-key",
419+
},
420+
},
421+
},
422+
{
423+
Name: "TEST_SECRET",
424+
ValueFrom: &miniov2.EnvVarSource{
425+
SecretKeyRef: &miniov2.SecretKeySelector{
426+
LocalObjectReference: corev1.LocalObjectReference{
427+
Name: "test-secret",
428+
},
429+
Key: "test-secret-key",
430+
},
431+
},
432+
},
433+
},
434+
Features: &miniov2.Features{
435+
Domains: &miniov2.TenantDomains{
436+
Console: "http://console.minio",
437+
},
438+
},
439+
Pools: []miniov2.Pool{
440+
{
441+
Name: "pool-0",
442+
Servers: 4,
443+
VolumesPerServer: 4,
444+
VolumeClaimTemplate: nil,
445+
},
446+
},
447+
},
448+
},
449+
secrets: map[string]*corev1.Secret{
450+
configSecretName: {
451+
Data: map[string][]byte{"config.env": []byte(`export MINIO_ROOT_USER="minio"
358452
export MINIO_ROOT_PASSWORD="minio123"
359453
export MINIO_STORAGE_CLASS_STANDARD="EC:2"
360454
export MINIO_BROWSER="on"`)},
455+
},
456+
"test-secret": {
457+
Data: map[string][]byte{
458+
"test-secret-key": []byte("test-secret-value"),
459+
},
460+
},
461+
},
462+
configMaps: map[string]*corev1.ConfigMap{
463+
"test-configmap": {
464+
Data: map[string]string{
465+
"test-configmap-key": "test-configmap-value",
466+
},
467+
},
361468
},
362469
},
363470
want: `export MINIO_ARGS="https://tenant-pool-0-{0...3}.tenant-hl.ns-x.svc.cluster.local/export{0...3}"
@@ -371,18 +478,16 @@ export MINIO_STORAGE_CLASS_STANDARD="EC:2"
371478
export MINIO_UPDATE="on"
372479
export MINIO_UPDATE_MINISIGN_PUBKEY="RWTx5Zr1tiHQLwG9keckT0c45M3AGeHD6IvimQHpyRywVWGbP1aVSGav"
373480
export TEST="value"
481+
export TEST_CONFIGMAP="test-configmap-value"
482+
export TEST_SECRET="test-secret-value"
374483
`,
375484
},
376485
}
377486
for _, tt := range tests {
378487
t.Run(tt.name, func(t *testing.T) {
379488
tt.args.tenant.EnsureDefaults()
380489

381-
var configMaps map[string]*corev1.ConfigMap
382-
secrets := map[string]*corev1.Secret{
383-
tt.args.tenant.ConfigurationSecretName(): tt.args.configSecret,
384-
}
385-
if got, _, _ := GetFullTenantConfig(tt.args.tenant, configMaps, secrets); got != tt.want {
490+
if got, _, _ := GetFullTenantConfig(tt.args.tenant, tt.args.configMaps, tt.args.secrets); got != tt.want {
386491
t.Errorf("GetFullTenantConfig() = `%v`, want `%v`", got, tt.want)
387492
}
388493
})

0 commit comments

Comments
 (0)