github.com/argoproj-labs/argocd-operator@v0.10.0/controllers/argoutil/env_test.go (about) 1 package argoutil 2 3 import ( 4 "reflect" 5 "testing" 6 7 "github.com/stretchr/testify/assert" 8 corev1 "k8s.io/api/core/v1" 9 ) 10 11 func Test_EnvMerge(t *testing.T) { 12 t.Run("Merge non-existing env", func(t *testing.T) { 13 e := []corev1.EnvVar{ 14 { 15 Name: "FOO", 16 Value: "BAR", 17 }, 18 { 19 Name: "BAR", 20 Value: "FOO", 21 }, 22 } 23 r := EnvMerge(e, []corev1.EnvVar{{Name: "BAZ", Value: "BAZ"}}, false) 24 // New element 25 assert.Len(t, r, 3) 26 assert.Contains(t, r, corev1.EnvVar{Name: "BAZ", Value: "BAZ"}) 27 }) 28 t.Run("Merge multiple non-existing and existing env", func(t *testing.T) { 29 e := []corev1.EnvVar{ 30 { 31 Name: "FOO", 32 Value: "BAR", 33 }, 34 { 35 Name: "BAR", 36 Value: "FOO", 37 }, 38 } 39 r := EnvMerge(e, []corev1.EnvVar{{Name: "BAZ", Value: "BAZ"}, {Name: "FOO", Value: "FOO"}}, false) 40 // New element 41 assert.Equal(t, len(r), 3) 42 // New variable should be the one we added 43 assert.Contains(t, r, corev1.EnvVar{Name: "BAR", Value: "FOO"}) 44 assert.Contains(t, r, corev1.EnvVar{Name: "FOO", Value: "BAR"}) 45 assert.Contains(t, r, corev1.EnvVar{Name: "BAZ", Value: "BAZ"}) 46 assert.NotContains(t, r, corev1.EnvVar{Name: "FOO", Value: "FOO"}) 47 }) 48 t.Run("Merge existing env with override", func(t *testing.T) { 49 e := []corev1.EnvVar{ 50 { 51 Name: "FOO", 52 Value: "BAR", 53 }, 54 { 55 Name: "BAR", 56 Value: "FOO", 57 }, 58 } 59 r := EnvMerge(e, []corev1.EnvVar{{Name: "FOO", Value: "FOO"}}, true) 60 // No new element 61 assert.Equal(t, len(r), 2) 62 // Variable has been overwritten 63 assert.Contains(t, r, corev1.EnvVar{Name: "FOO", Value: "FOO"}) 64 assert.Contains(t, r, corev1.EnvVar{Name: "BAR", Value: "FOO"}) 65 }) 66 t.Run("Merge existing env without override", func(t *testing.T) { 67 e := []corev1.EnvVar{ 68 { 69 Name: "FOO", 70 Value: "BAR", 71 }, 72 { 73 Name: "BAR", 74 Value: "FOO", 75 }, 76 } 77 r := EnvMerge(e, []corev1.EnvVar{{Name: "FOO", Value: "FOO"}}, false) 78 // No new element 79 assert.Equal(t, len(r), 2) 80 // Variable has not been changed 81 assert.Contains(t, r, corev1.EnvVar{Name: "FOO", Value: "BAR"}) 82 assert.Contains(t, r, corev1.EnvVar{Name: "BAR", Value: "FOO"}) 83 }) 84 } 85 86 func Test_EnvMerge_testSorted(t *testing.T) { 87 t.Run("Merge non-existing env", func(t *testing.T) { 88 e := []corev1.EnvVar{ 89 { 90 Name: "FOO", 91 Value: "BAR", 92 }, 93 { 94 Name: "BAR", 95 Value: "FOO", 96 }, 97 } 98 r := EnvMerge(e, []corev1.EnvVar{{Name: "BAZ", Value: "BAZ"}}, false) 99 100 // verify if the Env Vars are sorted by names 101 s := []corev1.EnvVar{ 102 { 103 Name: "BAR", 104 Value: "FOO", 105 }, 106 { 107 Name: "BAZ", 108 Value: "BAZ", 109 }, 110 { 111 Name: "FOO", 112 Value: "BAR", 113 }, 114 } 115 if !reflect.DeepEqual(r, s) { 116 assert.Fail(t, "environmental variables are not sorted") 117 } 118 }) 119 t.Run("Merge multiple non-existing and existing env", func(t *testing.T) { 120 e := []corev1.EnvVar{ 121 { 122 Name: "FOO", 123 Value: "BAR", 124 }, 125 { 126 Name: "BAR", 127 Value: "FOO", 128 }, 129 } 130 r := EnvMerge(e, []corev1.EnvVar{{Name: "BAZ", Value: "BAZ"}, {Name: "FOO", Value: "FOO"}}, true) 131 132 // verify if the Env Vars are sorted by names 133 s := []corev1.EnvVar{ 134 { 135 Name: "BAR", 136 Value: "FOO", 137 }, 138 { 139 Name: "BAZ", 140 Value: "BAZ", 141 }, 142 { 143 Name: "FOO", 144 Value: "FOO", 145 }, 146 } 147 // New variable should be the one we added 148 if !reflect.DeepEqual(r, s) { 149 assert.Fail(t, "environmental variables are not sorted") 150 } 151 }) 152 }