174 lines
5.0 KiB
Bash
174 lines
5.0 KiB
Bash
#!/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"
|
|
}
|
|
|
|
assert_source_contains() {
|
|
local file="$1"
|
|
local source="$2"
|
|
local needle="$3"
|
|
local in_source=0
|
|
local found=0
|
|
local line
|
|
|
|
while IFS= read -r line; do
|
|
if [[ "$line" == '# Source: openwork-ee/templates/'* ]]; then
|
|
if [[ "$line" == "# Source: openwork-ee/templates/$source" ]]; then
|
|
in_source=1
|
|
else
|
|
in_source=0
|
|
fi
|
|
fi
|
|
if [[ "$in_source" == 1 && "$line" == *"$needle"* ]]; then
|
|
found=1
|
|
break
|
|
fi
|
|
done < "$file"
|
|
|
|
if [[ "$found" != 1 ]]; then
|
|
printf 'Expected %s to contain %s\n' "$source" "$needle" >&2
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
assert_source_not_contains() {
|
|
local file="$1"
|
|
local source="$2"
|
|
local needle="$3"
|
|
local in_source=0
|
|
local line
|
|
|
|
while IFS= read -r line; do
|
|
if [[ "$line" == '# Source: openwork-ee/templates/'* ]]; then
|
|
if [[ "$line" == "# Source: openwork-ee/templates/$source" ]]; then
|
|
in_source=1
|
|
else
|
|
in_source=0
|
|
fi
|
|
fi
|
|
if [[ "$in_source" == 1 && "$line" == *"$needle"* ]]; then
|
|
printf 'Expected %s not to contain %s\n' "$source" "$needle" >&2
|
|
return 1
|
|
fi
|
|
done < "$file"
|
|
}
|
|
|
|
default_rendered="$tmp_dir/default.yaml"
|
|
helm template openwork-ee "$chart_dir" > "$default_rendered"
|
|
assert_count "$default_rendered" 'DEN_ALLOW_PRIVATE_MCP_URLS' 0
|
|
assert_not_contains "$default_rendered" 'openwork-ee-den-api-private-mcp-urls'
|
|
|
|
enabled_values="$tmp_dir/enabled-values.yaml"
|
|
enabled_rendered="$tmp_dir/enabled.yaml"
|
|
cat > "$enabled_values" <<'YAML'
|
|
inference:
|
|
enabled: true
|
|
config:
|
|
public:
|
|
allowPrivateMcpUrls: "1"
|
|
YAML
|
|
helm template openwork-ee "$chart_dir" -f "$enabled_values" > "$enabled_rendered"
|
|
assert_count "$enabled_rendered" 'DEN_ALLOW_PRIVATE_MCP_URLS' 2
|
|
assert_count "$enabled_rendered" 'name: DEN_ALLOW_PRIVATE_MCP_URLS' 2
|
|
assert_count "$enabled_rendered" 'value: "1"' 2
|
|
assert_not_contains "$enabled_rendered" 'key: DEN_ALLOW_PRIVATE_MCP_URLS'
|
|
assert_not_contains "$enabled_rendered" 'configMapKeyRef:'
|
|
assert_not_contains "$enabled_rendered" 'openwork-ee-den-api-private-mcp-urls'
|
|
assert_source_contains "$enabled_rendered" 'den-api.yaml' 'name: DEN_ALLOW_PRIVATE_MCP_URLS'
|
|
assert_source_contains "$enabled_rendered" 'den-api.yaml' 'value: "1"'
|
|
assert_source_not_contains "$enabled_rendered" 'den-web.yaml' 'DEN_ALLOW_PRIVATE_MCP_URLS'
|
|
assert_source_not_contains "$enabled_rendered" 'inference.yaml' 'DEN_ALLOW_PRIVATE_MCP_URLS'
|
|
|
|
disabled_values="$tmp_dir/disabled-values.yaml"
|
|
disabled_rendered="$tmp_dir/disabled.yaml"
|
|
cat > "$disabled_values" <<'YAML'
|
|
config:
|
|
public:
|
|
allowPrivateMcpUrls: "0"
|
|
YAML
|
|
helm template openwork-ee "$chart_dir" -f "$disabled_values" > "$disabled_rendered"
|
|
assert_count "$disabled_rendered" 'DEN_ALLOW_PRIVATE_MCP_URLS' 0
|
|
|
|
false_values="$tmp_dir/false-values.yaml"
|
|
false_rendered="$tmp_dir/false.yaml"
|
|
cat > "$false_values" <<'YAML'
|
|
config:
|
|
public:
|
|
allowPrivateMcpUrls: "false"
|
|
YAML
|
|
helm template openwork-ee "$chart_dir" -f "$false_values" > "$false_rendered"
|
|
assert_count "$false_rendered" 'DEN_ALLOW_PRIVATE_MCP_URLS' 0
|
|
|
|
blank_values="$tmp_dir/blank-values.yaml"
|
|
blank_rendered="$tmp_dir/blank.yaml"
|
|
cat > "$blank_values" <<'YAML'
|
|
config:
|
|
public:
|
|
allowPrivateMcpUrls: ""
|
|
YAML
|
|
helm template openwork-ee "$chart_dir" -f "$blank_values" > "$blank_rendered"
|
|
assert_count "$blank_rendered" 'DEN_ALLOW_PRIVATE_MCP_URLS' 0
|
|
|
|
invalid_true_values="$tmp_dir/invalid-true-values.yaml"
|
|
cat > "$invalid_true_values" <<'YAML'
|
|
config:
|
|
public:
|
|
allowPrivateMcpUrls: "true"
|
|
YAML
|
|
assert_failure "$invalid_true_values" 'config.public.allowPrivateMcpUrls must be blank, 0, false, or "1"'
|
|
|
|
invalid_yes_values="$tmp_dir/invalid-yes-values.yaml"
|
|
cat > "$invalid_yes_values" <<'YAML'
|
|
config:
|
|
public:
|
|
allowPrivateMcpUrls: "yes"
|
|
YAML
|
|
assert_failure "$invalid_yes_values" 'config.public.allowPrivateMcpUrls must be blank, 0, false, or "1"'
|
|
|
|
printf 'private-mcp-urls chart checks passed\n'
|