@@ -50,3 +50,69 @@ func (tc *TestHelper) AssertVolumeMountExists(name string, subPath string, volum
50
50
51
51
return exist
52
52
}
53
+
54
+ // AssertVolumeMountPathExists - Returns true if mountPath and subPath exist in
55
+ // the volumeMounts array.
56
+ // Assumptions:
57
+ // - an empty []corev1.VolumeMount results in a failure
58
+ // - an empty "name" results in a failure
59
+ // - when no mountPath and no subPath are passed (empty string) it results in a
60
+ // failure
61
+ // - if no mountPath is provided it is skipped during the evaluation and
62
+ // - if no subPath is provided it is skipped during the evaluation
63
+ // - when both mountPath and subPath are passed, it returns true only when
64
+ // both are found in the volumeMount array
65
+ func (tc * TestHelper ) AssertVolumeMountPathExists (
66
+ name string ,
67
+ mountPath string ,
68
+ subPath string ,
69
+ volumeMounts []corev1.VolumeMount ,
70
+ ) bool {
71
+ // Early return for an empty volumeMounts list
72
+ if len (volumeMounts ) == 0 {
73
+ gomega .Expect (false ).To (gomega .BeTrue (), "Volume mounts list is empty" )
74
+ return false
75
+ }
76
+
77
+ // Early return for an empty VolumeMount name
78
+ if name == "" {
79
+ gomega .Expect (false ).To (gomega .BeTrue (), "Volume name cannot be empty" )
80
+ return false
81
+ }
82
+
83
+ // Early return if both mountPath and subPath are empty strings
84
+ if mountPath == "" && subPath == "" {
85
+ gomega .Expect (false ).To (gomega .BeTrue (), "Both mountPath and subPath are empty" )
86
+ return false
87
+ }
88
+
89
+ // init two bool variables to represent the status of mountPath and
90
+ // subPath check: when the function reaches this point we have at least an
91
+ // input that should be checked
92
+ mountPathExists := mountPath == ""
93
+ subPathExists := subPath == ""
94
+
95
+ for _ , v := range volumeMounts {
96
+ // only process the current volumeMount if the name
97
+ // mathes
98
+ if v .Name == name {
99
+ // mountPath is passed as input and it has not
100
+ // been evaluated
101
+ if v .MountPath == mountPath && ! mountPathExists {
102
+ mountPathExists = true
103
+ }
104
+ // subPath is passed as input and it has not
105
+ // been evaluated
106
+ if v .SubPath == subPath && ! subPathExists {
107
+ subPathExists = true
108
+ }
109
+ }
110
+ // check if we can break early and optimize the
111
+ // iterations
112
+ if mountPathExists && subPathExists {
113
+ break
114
+ }
115
+ }
116
+ gomega .Expect (mountPathExists && subPathExists ).To (gomega .BeTrue ())
117
+ return (mountPathExists && subPathExists )
118
+ }
0 commit comments