@@ -10,6 +10,7 @@ import (
10
10
11
11
appsv1 "k8s.io/api/apps/v1"
12
12
corev1 "k8s.io/api/core/v1"
13
+ "k8s.io/apimachinery/pkg/api/resource"
13
14
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
14
15
)
15
16
@@ -23,7 +24,10 @@ func Test_AsFunctionStatus(t *testing.T) {
23
24
annotations := map [string ]string {"data" : "datavalue" }
24
25
namespace := "func-namespace"
25
26
envProcess := "process string here"
27
+ envVars := map [string ]string {"env1" : "env1value" , "env2" : "env2value" }
26
28
secrets := []string {"0-imagepullsecret" , "1-genericsecret" , "2-genericsecret" }
29
+ readOnlyRootFilesystem := false
30
+ constraints := []string {"node-label=node-value" }
27
31
28
32
deploy := appsv1.Deployment {
29
33
ObjectMeta : metav1.ObjectMeta {
@@ -39,6 +43,9 @@ func Test_AsFunctionStatus(t *testing.T) {
39
43
Labels : labels ,
40
44
},
41
45
Spec : corev1.PodSpec {
46
+ NodeSelector : map [string ]string {
47
+ "node-label" : "node-value" ,
48
+ },
42
49
ImagePullSecrets : []corev1.LocalObjectReference {
43
50
{Name : "0-imagepullsecret" },
44
51
},
@@ -48,7 +55,8 @@ func Test_AsFunctionStatus(t *testing.T) {
48
55
Image : image ,
49
56
Env : []corev1.EnvVar {
50
57
{Name : "fprocess" , Value : envProcess },
51
- {Name : "customEnv" , Value : "customValue" },
58
+ {Name : "env1" , Value : "env1value" },
59
+ {Name : "env2" , Value : "env2value" },
52
60
},
53
61
},
54
62
},
@@ -122,4 +130,73 @@ func Test_AsFunctionStatus(t *testing.T) {
122
130
t .Errorf ("incorrect Secrets: expected %v, got : %v" , secrets , status .Secrets )
123
131
}
124
132
133
+ if ! reflect .DeepEqual (status .EnvVars , envVars ) {
134
+ t .Errorf ("incorrect EnvVars: expected %+v, got %+v" , envVars , status .EnvVars )
135
+ }
136
+
137
+ if ! reflect .DeepEqual (status .Constraints , constraints ) {
138
+ t .Errorf ("incorrect Constraints: expected %+v, got %+v" , constraints , status .Constraints )
139
+ }
140
+
141
+ if status .ReadOnlyRootFilesystem != readOnlyRootFilesystem {
142
+ t .Errorf ("incorrect ReadOnlyRootFilesystem: expected %v, got : %v" , readOnlyRootFilesystem , status .ReadOnlyRootFilesystem )
143
+ }
144
+
145
+ t .Run ("can parse readonly root filesystem when nil" , func (t * testing.T ) {
146
+ readOnlyRootFilesystem := false
147
+ deployment := deploy
148
+ deployment .Spec .Template .Spec .Containers [0 ].SecurityContext = & corev1.SecurityContext {}
149
+
150
+ status := AsFunctionStatus (deployment )
151
+ if status .ReadOnlyRootFilesystem != readOnlyRootFilesystem {
152
+ t .Errorf ("incorrect ReadOnlyRootFilesystem: expected %v, got : %v" , readOnlyRootFilesystem , status .ReadOnlyRootFilesystem )
153
+ }
154
+ })
155
+
156
+ t .Run ("can parse readonly root filesystem enabled" , func (t * testing.T ) {
157
+ readOnlyRootFilesystem := true
158
+ deployment := deploy
159
+ deployment .Spec .Template .Spec .Containers [0 ].SecurityContext = & corev1.SecurityContext {
160
+ ReadOnlyRootFilesystem : & readOnlyRootFilesystem ,
161
+ }
162
+
163
+ status := AsFunctionStatus (deployment )
164
+ if status .ReadOnlyRootFilesystem != readOnlyRootFilesystem {
165
+ t .Errorf ("incorrect ReadOnlyRootFilesystem: expected %v, got : %v" , readOnlyRootFilesystem , status .ReadOnlyRootFilesystem )
166
+ }
167
+ })
168
+
169
+ t .Run ("returns non-empty resource requests" , func (t * testing.T ) {
170
+ deployment := deploy
171
+ deployment .Spec .Template .Spec .Containers [0 ].Resources .Requests = corev1.ResourceList {
172
+ corev1 .ResourceCPU : resource .MustParse ("100m" ),
173
+ corev1 .ResourceMemory : resource .MustParse ("100Mi" ),
174
+ }
175
+
176
+ status := AsFunctionStatus (deployment )
177
+ if status .Requests .CPU != "100m" {
178
+ t .Errorf ("incorrect Requests.CPU: expected %s, got %s" , "100m" , status .Requests .CPU )
179
+ }
180
+
181
+ if status .Requests .Memory != "100Mi" {
182
+ t .Errorf ("incorrect Requests.Memory: expected %s, got %s" , "100Mi" , status .Requests .Memory )
183
+ }
184
+ })
185
+
186
+ t .Run ("returns non-empty resource limits" , func (t * testing.T ) {
187
+ deployment := deploy
188
+ deployment .Spec .Template .Spec .Containers [0 ].Resources .Limits = corev1.ResourceList {
189
+ corev1 .ResourceCPU : resource .MustParse ("100m" ),
190
+ corev1 .ResourceMemory : resource .MustParse ("100Mi" ),
191
+ }
192
+
193
+ status := AsFunctionStatus (deployment )
194
+ if status .Limits .CPU != "100m" {
195
+ t .Errorf ("incorrect Limits.CPU: expected %s, got %s" , "100m" , status .Limits .CPU )
196
+ }
197
+
198
+ if status .Limits .Memory != "100Mi" {
199
+ t .Errorf ("incorrect Limits.Memory: expected %s, got %s" , "100Mi" , status .Limits .Memory )
200
+ }
201
+ })
125
202
}
0 commit comments