@@ -32,26 +32,63 @@ func TestChartTemplateSecurityEnabled(t *testing.T) {
32
32
"image.repository" : "marklogicdb/marklogic-db" ,
33
33
"image.tag" : "latest" ,
34
34
"persistence.enabled" : "false" ,
35
- "securityContext.enabled" : "true" ,
36
- "securityContext.runAsUser" : "1000" ,
37
- "securityContext.runAsNonRoot" : "true" ,
38
- "securityContext.allowPrivilegeEscalation" : "false" ,
35
+ "containerSecurityContext.enabled" : "true" ,
39
36
},
40
37
KubectlOptions : k8s .NewKubectlOptions ("" , "" , namespaceName ),
41
38
}
42
39
43
40
// render the tempate
44
41
output := helm .RenderTemplate (t , options , helmChartPath , releaseName , []string {"templates/statefulset.yaml" })
45
42
46
- var statefulset appsv1.Deployment
43
+ var statefulset appsv1.StatefulSet
47
44
helm .UnmarshalK8SYaml (t , output , & statefulset )
48
45
49
46
// Verify the name and namespace matches
50
47
require .Equal (t , namespaceName , statefulset .Namespace )
51
48
52
- // Verify the image matches
53
- expectedImage := "marklogicdb/marklogic-db:latest"
49
+ // Verify the securityContext values are set for container
50
+ expectedRunAsUser := 1000
54
51
statefulSetContainers := statefulset .Spec .Template .Spec .Containers
52
+ actualRunAsUser := * (statefulSetContainers [0 ].SecurityContext .RunAsUser )
55
53
require .Equal (t , len (statefulSetContainers ), 1 )
56
- require .Equal (t , statefulSetContainers [0 ].Image , expectedImage )
54
+ require .Equal (t , int (actualRunAsUser ), expectedRunAsUser )
55
+ }
56
+
57
+ func TestChartTemplateSecurityDisabled (t * testing.T ) {
58
+ t .Parallel ()
59
+
60
+ // Path to the helm chart we will test
61
+ helmChartPath , err := filepath .Abs ("../../charts" )
62
+ releaseName := "marklogic-sec-test"
63
+ t .Log (helmChartPath , releaseName )
64
+ require .NoError (t , err )
65
+
66
+ // Set up the namespace; confirm that the template renders the expected value for the namespace.
67
+ namespaceName := "marklogic-" + strings .ToLower (random .UniqueId ())
68
+ t .Logf ("Namespace: %s\n " , namespaceName )
69
+
70
+ // Setup the args for helm install
71
+ options := & helm.Options {
72
+ SetValues : map [string ]string {
73
+ "image.repository" : "marklogicdb/marklogic-db" ,
74
+ "image.tag" : "latest" ,
75
+ "persistence.enabled" : "false" ,
76
+ "containerSecurityContext.enabled" : "false" ,
77
+ },
78
+ KubectlOptions : k8s .NewKubectlOptions ("" , "" , namespaceName ),
79
+ }
80
+
81
+ // render the tempate
82
+ output := helm .RenderTemplate (t , options , helmChartPath , releaseName , []string {"templates/statefulset.yaml" })
83
+
84
+ var statefulset appsv1.StatefulSet
85
+ helm .UnmarshalK8SYaml (t , output , & statefulset )
86
+
87
+ // Verify the name and namespace matches
88
+ require .Equal (t , namespaceName , statefulset .Namespace )
89
+
90
+ // Verify SecurityContext is not set for container
91
+ statefulSetContainers := statefulset .Spec .Template .Spec .Containers
92
+ require .Equal (t , len (statefulSetContainers ), 1 )
93
+ require .Nil (t , statefulSetContainers [0 ].SecurityContext )
57
94
}
0 commit comments