Files
openwork/packaging/helm/openwork-ee/tests/custom-ca.sh
T

190 lines
6.7 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
chart_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
tmp_dir="$(mktemp -d)"
trap 'rm -rf "$tmp_dir"' EXIT
assert_count() {
local file="$1"
local needle="$2"
local expected="$3"
local count
count="$(grep -F -c -- "$needle" "$file" || true)"
if [[ "$count" != "$expected" ]]; then
printf 'Expected %s occurrences of %s, found %s\n' "$expected" "$needle" "$count" >&2
return 1
fi
}
assert_contains() {
local file="$1"
local needle="$2"
if ! grep -F -q -- "$needle" "$file"; then
printf 'Expected rendered chart to contain %s\n' "$needle" >&2
return 1
fi
}
assert_not_contains() {
local file="$1"
local needle="$2"
if grep -F -q -- "$needle" "$file"; then
printf 'Expected rendered chart not to contain %s\n' "$needle" >&2
return 1
fi
}
assert_failure() {
local values_file="$1"
local expected="$2"
local output_file="$tmp_dir/failure-output.yaml"
local error_file="$tmp_dir/failure-error.txt"
if helm template openwork-ee "$chart_dir" -f "$values_file" > "$output_file" 2> "$error_file"; then
printf 'Expected helm template to fail for %s\n' "$values_file" >&2
return 1
fi
assert_contains "$error_file" "$expected"
}
default_rendered="$tmp_dir/default.yaml"
disabled_values="$tmp_dir/disabled-values.yaml"
disabled_rendered="$tmp_dir/disabled.yaml"
helm template openwork-ee "$chart_dir" --set inference.enabled=true > "$default_rendered"
cat > "$disabled_values" <<'YAML'
inference:
enabled: true
customCa:
enabled: false
existingSecret: ignored-ca-secret
key: ignored.pem
YAML
helm template openwork-ee "$chart_dir" -f "$disabled_values" > "$disabled_rendered"
cmp -s "$default_rendered" "$disabled_rendered"
assert_not_contains "$default_rendered" 'name: NODE_EXTRA_CA_CERTS'
assert_not_contains "$default_rendered" '/etc/openwork/custom-ca'
assert_not_contains "$default_rendered" 'name: custom-ca'
secret_values="$tmp_dir/secret-values.yaml"
secret_rendered="$tmp_dir/secret.yaml"
cat > "$secret_values" <<'YAML'
customCa:
enabled: true
existingSecret: openwork-ca-secret
key: corp-root.pem
YAML
helm template openwork-ee "$chart_dir" -f "$secret_values" > "$secret_rendered"
assert_count "$secret_rendered" 'name: NODE_EXTRA_CA_CERTS' 4
assert_count "$secret_rendered" 'value: "/etc/openwork/custom-ca/ca-bundle.pem"' 5
assert_count "$secret_rendered" 'name: custom-ca' 8
assert_count "$secret_rendered" 'secretName: "openwork-ca-secret"' 4
assert_count "$secret_rendered" 'key: "corp-root.pem"' 4
assert_count "$secret_rendered" 'path: ca-bundle.pem' 4
assert_count "$secret_rendered" 'mountPath: "/etc/openwork/custom-ca"' 4
assert_not_contains "$secret_rendered" 'subPath:'
assert_not_contains "$secret_rendered" 'name: "openwork-ca-config"'
assert_not_contains "$secret_rendered" 'name: openwork-ee-inference'
configmap_values="$tmp_dir/configmap-values.yaml"
configmap_rendered="$tmp_dir/configmap.yaml"
cat > "$configmap_values" <<'YAML'
inference:
enabled: true
customCa:
enabled: true
existingConfigMap: openwork-ca-config
key: ca.crt
YAML
helm template openwork-ee "$chart_dir" -f "$configmap_values" > "$configmap_rendered"
assert_contains "$configmap_rendered" 'name: openwork-ee-den-api'
assert_contains "$configmap_rendered" 'name: openwork-ee-den-web'
assert_contains "$configmap_rendered" 'name: openwork-ee-inference'
assert_contains "$configmap_rendered" 'name: openwork-ee-migrate'
assert_count "$configmap_rendered" 'name: NODE_EXTRA_CA_CERTS' 5
assert_count "$configmap_rendered" 'value: "/etc/openwork/custom-ca/ca-bundle.pem"' 6
assert_count "$configmap_rendered" 'name: custom-ca' 10
assert_count "$configmap_rendered" 'name: "openwork-ca-config"' 5
assert_count "$configmap_rendered" 'key: "ca.crt"' 5
assert_count "$configmap_rendered" 'path: ca-bundle.pem' 5
assert_count "$configmap_rendered" 'mountPath: "/etc/openwork/custom-ca"' 5
assert_not_contains "$configmap_rendered" 'subPath:'
assert_not_contains "$configmap_rendered" 'secretName: "openwork-ca-secret"'
installer_values="$tmp_dir/installer-values.yaml"
installer_rendered="$tmp_dir/installer.yaml"
cat > "$installer_values" <<'YAML'
customCa:
enabled: true
existingSecret: openwork-ca-secret
installerArtifacts:
enabled: true
existingClaim: installer-artifacts-pvc
YAML
helm template openwork-ee "$chart_dir" -f "$installer_values" > "$installer_rendered"
assert_contains "$installer_rendered" 'name: installer-artifacts'
assert_contains "$installer_rendered" 'claimName: "installer-artifacts-pvc"'
assert_contains "$installer_rendered" 'name: OPENWORK_INSTALLER_ARTIFACTS_DIR'
assert_contains "$installer_rendered" 'name: custom-ca'
assert_contains "$installer_rendered" 'name: NODE_EXTRA_CA_CERTS'
missing_source_values="$tmp_dir/missing-source-values.yaml"
cat > "$missing_source_values" <<'YAML'
customCa:
enabled: true
YAML
assert_failure "$missing_source_values" 'customCa.existingSecret or customCa.existingConfigMap is required when customCa.enabled=true'
multiple_sources_values="$tmp_dir/multiple-sources-values.yaml"
cat > "$multiple_sources_values" <<'YAML'
customCa:
enabled: true
existingSecret: openwork-ca-secret
existingConfigMap: openwork-ca-config
YAML
assert_failure "$multiple_sources_values" 'customCa.existingSecret and customCa.existingConfigMap are mutually exclusive when customCa.enabled=true'
empty_key_values="$tmp_dir/empty-key-values.yaml"
cat > "$empty_key_values" <<'YAML'
customCa:
enabled: true
existingSecret: openwork-ca-secret
key: ""
YAML
assert_failure "$empty_key_values" 'customCa.key is required when customCa.enabled=true'
den_api_conflict_values="$tmp_dir/den-api-conflict-values.yaml"
cat > "$den_api_conflict_values" <<'YAML'
customCa:
enabled: true
existingSecret: openwork-ca-secret
denApi:
env:
NODE_EXTRA_CA_CERTS: /already/set.pem
YAML
assert_failure "$den_api_conflict_values" 'denApi.env.NODE_EXTRA_CA_CERTS conflicts with customCa.enabled=true; remove it and use customCa instead'
den_web_conflict_values="$tmp_dir/den-web-conflict-values.yaml"
cat > "$den_web_conflict_values" <<'YAML'
customCa:
enabled: true
existingSecret: openwork-ca-secret
denWeb:
env:
NODE_EXTRA_CA_CERTS: /already/set.pem
YAML
assert_failure "$den_web_conflict_values" 'denWeb.env.NODE_EXTRA_CA_CERTS conflicts with customCa.enabled=true; remove it and use customCa instead'
inference_conflict_values="$tmp_dir/inference-conflict-values.yaml"
cat > "$inference_conflict_values" <<'YAML'
customCa:
enabled: true
existingSecret: openwork-ca-secret
inference:
env:
NODE_EXTRA_CA_CERTS: /already/set.pem
YAML
assert_failure "$inference_conflict_values" 'inference.env.NODE_EXTRA_CA_CERTS conflicts with customCa.enabled=true; remove it and use customCa instead'
node "$chart_dir/tests/custom-ca-node-trust.mjs"