Skip to content

Commit c73cef7

Browse files
RottenRatSinelnikov Michailldmonster
authored
Update module https test (#145)
Signed-off-by: Sinelnikov Michail <[email protected]> Signed-off-by: Pavel Okhlopkov <[email protected]> Signed-off-by: Michail Sinelnikov <[email protected]> Co-authored-by: Sinelnikov Michail <[email protected]> Co-authored-by: Pavel Okhlopkov <[email protected]>
1 parent 26df90c commit c73cef7

File tree

2 files changed

+161
-4
lines changed

2 files changed

+161
-4
lines changed

charts/helm_lib/templates/_module_https.tpl

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,27 @@ certManager:
129129
{{- $mode := include "helm_lib_module_https_mode" $context -}}
130130
{{- if eq $mode "CustomCertificate" -}}
131131
{{- $module_values := (index $context.Values (include "helm_lib_module_camelcase_name" $context)) -}}
132+
{{- $customCertificateData := $module_values.internal.customCertificateData -}}
133+
{{- if not $customCertificateData -}}
134+
{{- fail (printf "internal.customCertificateData is required to copy custom certificate for secret prefix '%s'" $secret_name_prefix) -}}
135+
{{- end -}}
136+
{{- if not (kindIs "map" $customCertificateData) -}}
137+
{{- fail (printf "internal.customCertificateData must be a map to copy custom certificate for secret prefix '%s'" $secret_name_prefix) -}}
138+
{{- end -}}
139+
{{- $tlsCrt := index $customCertificateData "tls.crt" -}}
140+
{{- $tlsKey := index $customCertificateData "tls.key" -}}
141+
{{- if not $tlsCrt -}}
142+
{{- fail (printf "internal.customCertificateData.tls.crt is required to copy custom certificate for secret prefix '%s'" $secret_name_prefix) -}}
143+
{{- end -}}
144+
{{- if not $tlsKey -}}
145+
{{- fail (printf "internal.customCertificateData.tls.key is required to copy custom certificate for secret prefix '%s'" $secret_name_prefix) -}}
146+
{{- end -}}
147+
{{- if not (kindIs "string" $tlsCrt) -}}
148+
{{- fail (printf "internal.customCertificateData.tls.crt must be a string to copy custom certificate for secret prefix '%s'" $secret_name_prefix) -}}
149+
{{- end -}}
150+
{{- if not (kindIs "string" $tlsKey) -}}
151+
{{- fail (printf "internal.customCertificateData.tls.key must be a string to copy custom certificate for secret prefix '%s'" $secret_name_prefix) -}}
152+
{{- end -}}
132153
{{- $secret_name := include "helm_lib_module_https_secret_name" (list $context $secret_name_prefix) -}}
133154
---
134155
apiVersion: v1
@@ -138,7 +159,15 @@ metadata:
138159
namespace: {{ $namespace }}
139160
{{- include "helm_lib_module_labels" (list $context) | nindent 2 }}
140161
type: kubernetes.io/tls
141-
data: {{ $module_values.internal.customCertificateData | toJson }}
162+
data:
163+
{{- if (hasKey $customCertificateData "ca.crt") }}
164+
{{- $caCrt := index $customCertificateData "ca.crt" -}}
165+
{{- if and $caCrt (kindIs "string" $caCrt) }}
166+
ca.crt: {{ $caCrt | b64enc }}
167+
{{- end }}
168+
{{- end }}
169+
tls.crt: {{ $tlsCrt | b64enc }}
170+
tls.key: {{ $tlsKey | b64enc }}
142171
{{- end -}}
143172
{{- end -}}
144173

tests/tests/helm_lib_module_https_copy_custom_certificate_test.yaml

Lines changed: 131 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,138 @@ tests:
3232
- equal:
3333
path: "data"
3434
value:
35-
tls.crt: "certdata"
36-
tls.key: "keydata"
35+
tls.crt: "Y2VydGRhdGE="
36+
tls.key: "a2V5ZGF0YQ=="
3737
- equal:
3838
path: "metadata.labels"
3939
value:
4040
heritage: "deckhouse"
41-
module: "test-module"
41+
module: "test-module"
42+
- it: should fail when internal.customCertificateData is missing
43+
set:
44+
Chart:
45+
Name: "testModule"
46+
testModule:
47+
https:
48+
mode: "CustomCertificate"
49+
internal: {}
50+
asserts:
51+
- failedTemplate:
52+
errorMessage: "internal.customCertificateData is required to copy custom certificate for secret prefix 'test-prefix'"
53+
- it: should fail when internal.customCertificateData is not a map
54+
set:
55+
Chart:
56+
Name: "testModule"
57+
testModule:
58+
https:
59+
mode: "CustomCertificate"
60+
internal:
61+
customCertificateData: "not-a-map"
62+
asserts:
63+
- failedTemplate:
64+
errorMessage: "internal.customCertificateData must be a map to copy custom certificate for secret prefix 'test-prefix'"
65+
- it: should fail when tls.crt is missing
66+
set:
67+
Chart:
68+
Name: "testModule"
69+
testModule:
70+
https:
71+
mode: "CustomCertificate"
72+
internal:
73+
customCertificateData:
74+
tls.key: "keydata"
75+
asserts:
76+
- failedTemplate:
77+
errorMessage: "internal.customCertificateData.tls.crt is required to copy custom certificate for secret prefix 'test-prefix'"
78+
- it: should fail when tls.key is missing
79+
set:
80+
Chart:
81+
Name: "testModule"
82+
testModule:
83+
https:
84+
mode: "CustomCertificate"
85+
internal:
86+
customCertificateData:
87+
tls.crt: "certdata"
88+
asserts:
89+
- failedTemplate:
90+
errorMessage: "internal.customCertificateData.tls.key is required to copy custom certificate for secret prefix 'test-prefix'"
91+
- it: should fail when tls.crt is not a string
92+
set:
93+
Chart:
94+
Name: "testModule"
95+
testModule:
96+
https:
97+
mode: "CustomCertificate"
98+
internal:
99+
customCertificateData:
100+
tls.crt: 123
101+
tls.key: "keydata"
102+
asserts:
103+
- failedTemplate:
104+
errorMessage: "internal.customCertificateData.tls.crt must be a string to copy custom certificate for secret prefix 'test-prefix'"
105+
- it: should fail when tls.key is not a string
106+
set:
107+
Chart:
108+
Name: "testModule"
109+
testModule:
110+
https:
111+
mode: "CustomCertificate"
112+
internal:
113+
customCertificateData:
114+
tls.crt: "certdata"
115+
tls.key: true
116+
asserts:
117+
- failedTemplate:
118+
errorMessage: "internal.customCertificateData.tls.key must be a string to copy custom certificate for secret prefix 'test-prefix'"
119+
- it: should render secret with ca.crt when ca.crt is a string
120+
set:
121+
Chart:
122+
Name: "testModule"
123+
testModule:
124+
https:
125+
mode: "CustomCertificate"
126+
internal:
127+
customCertificateData:
128+
tls.crt: "certdata"
129+
tls.key: "keydata"
130+
ca.crt: "cadata"
131+
asserts:
132+
- equal:
133+
path: "data"
134+
value:
135+
tls.crt: "Y2VydGRhdGE="
136+
tls.key: "a2V5ZGF0YQ=="
137+
ca.crt: "Y2FkYXRh"
138+
- it: should not include ca.crt when ca.crt is not a string
139+
set:
140+
Chart:
141+
Name: "testModule"
142+
testModule:
143+
https:
144+
mode: "CustomCertificate"
145+
internal:
146+
customCertificateData:
147+
tls.crt: "certdata"
148+
tls.key: "keydata"
149+
ca.crt: 123
150+
asserts:
151+
- equal:
152+
path: "data"
153+
value:
154+
tls.crt: "Y2VydGRhdGE="
155+
tls.key: "a2V5ZGF0YQ=="
156+
- it: should not render anything when https mode is not CustomCertificate
157+
set:
158+
Chart:
159+
Name: "testModule"
160+
testModule:
161+
https:
162+
mode: "Disabled"
163+
internal:
164+
customCertificateData:
165+
tls.crt: "certdata"
166+
tls.key: "keydata"
167+
asserts:
168+
- hasDocuments:
169+
count: 0

0 commit comments

Comments
 (0)