Skip to content

Commit 74dcf09

Browse files
committed
test(self-managed): render OpenBao credential workload
1 parent 2602b2c commit 74dcf09

1 file changed

Lines changed: 45 additions & 16 deletions

File tree

deploy/stacks/self-managed/tests/cassandra-openbao-credential-wiring.sh

Lines changed: 45 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -64,23 +64,8 @@ render_chart_values cassandra "$cassandra_values"
6464
render_chart_values openbao-server "$openbao_values"
6565

6666
cassandra_password="$(yq -r '.cassandra.serviceRolePassword // ""' "$cassandra_values")"
67-
openbao_password_count="$(yq -r '
68-
[.openbao.migrations.env[] |
69-
select(.name == "DEFAULT_CASSANDRA_PASSWORD")] |
70-
length
71-
' "$openbao_values")"
72-
test "$openbao_password_count" = "1" ||
73-
fail "OpenBao migrations must receive exactly one application-role password"
74-
openbao_password="$(yq -r '
75-
.openbao.migrations.env[] |
76-
select(.name == "DEFAULT_CASSANDRA_PASSWORD") |
77-
.value
78-
' "$openbao_values")"
79-
8067
test -n "$cassandra_password" ||
8168
fail "Cassandra migrations received no application-role password"
82-
test -n "$openbao_password" ||
83-
fail "OpenBao migrations received no application-role password"
8469

8570
cassandra_manifest="$work_dir/cassandra-manifest.yaml"
8671
helm template cassandra "$helm_dir/cassandra/helm" \
@@ -98,7 +83,51 @@ test -n "$cassandra_job_password" ||
9883
fail "Cassandra migration Job received no application-role password"
9984
test "$cassandra_job_password" = "$cassandra_password" ||
10085
fail "Cassandra migration Job did not receive the rendered stack password"
101-
test "$cassandra_job_password" = "$openbao_password" ||
86+
87+
# The wrapper chart's migration Job does not depend on upstream OpenBao
88+
# templates. Supply an empty dependency chart in the isolated copy so this
89+
# focused render stays offline while exercising the real wrapper template.
90+
openbao_chart="$work_dir/openbao-chart"
91+
cp -R "$helm_dir/openbao/helm" "$openbao_chart"
92+
mkdir -p "$openbao_chart/charts/openbao"
93+
openbao_dependency_version="$(yq -r '
94+
.dependencies[] |
95+
select(.name == "openbao") |
96+
.version
97+
' "$openbao_chart/Chart.yaml")"
98+
test -n "$openbao_dependency_version" ||
99+
fail "OpenBao wrapper chart has no OpenBao dependency version"
100+
printf '%s\n' \
101+
'apiVersion: v2' \
102+
'name: openbao' \
103+
"version: $openbao_dependency_version" >"$openbao_chart/charts/openbao/Chart.yaml"
104+
105+
openbao_manifest="$work_dir/openbao-manifest.yaml"
106+
helm template openbao-server "$openbao_chart" \
107+
--namespace vault-system \
108+
--values "$openbao_values" \
109+
--show-only templates/hook-post-02-migrations.yaml >"$openbao_manifest" ||
110+
fail "OpenBao migration Job did not render"
111+
openbao_job_password_count="$(yq -r '
112+
[.spec.template.spec.containers[] |
113+
select(.name == "bao-migrations") |
114+
.env[] |
115+
select(.name == "DEFAULT_CASSANDRA_PASSWORD")] |
116+
length
117+
' "$openbao_manifest")"
118+
test "$openbao_job_password_count" = "1" ||
119+
fail "OpenBao migration Job must receive exactly one application-role password"
120+
openbao_job_password="$(yq -r '
121+
.spec.template.spec.containers[] |
122+
select(.name == "bao-migrations") |
123+
.env[] |
124+
select(.name == "DEFAULT_CASSANDRA_PASSWORD") |
125+
.value
126+
' "$openbao_manifest")"
127+
128+
test -n "$openbao_job_password" ||
129+
fail "OpenBao migration Job received no application-role password"
130+
test "$cassandra_job_password" = "$openbao_job_password" ||
102131
fail "Cassandra and OpenBao migrations received different application-role passwords"
103132

104133
echo "cassandra-openbao-credential-wiring: all checks passed"

0 commit comments

Comments
 (0)