190 lines
6.7 KiB
Bash
Executable File
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"
|