proxy-pool/deploy/kubernetes_overlay_test.go

74 lines
2.6 KiB
Go

package deploy
import (
"os"
"os/exec"
"regexp"
"strings"
"testing"
)
func TestKubernetesDevelopmentMTLSOverlayRendersCertificateDerivedIdentities(t *testing.T) {
kubectl, err := exec.LookPath("kubectl")
if err != nil {
t.Skip("kubectl is required to render the Kubernetes development mTLS overlay")
}
command := exec.Command(kubectl, "kustomize", "kubernetes/overlays/development-mtls")
command.Dir = "."
payload, err := command.CombinedOutput()
if err != nil {
t.Fatalf("render development mTLS overlay: %v\n%s", err, payload)
}
rendered := string(payload)
for _, required := range []string{
"mode: mtls",
"trustDomain: proxy-pool.local",
"value: controller:8443",
"name: PROXY_POOL_AUTO_IDENTITY",
"value: \"true\"",
"secretName: proxy-pool-controlplane-server-tls",
"secretName: proxy-pool-controlplane-gateway-tls",
"secretName: proxy-pool-controlplane-checker-tls",
"name: proxy-checker",
"name: checker-control-plane",
"minReplicas: 1",
"maxReplicas: 1",
} {
if !strings.Contains(rendered, required) {
t.Errorf("development mTLS overlay does not render %q", required)
}
}
for _, forbidden := range []string{"name: PROXY_POOL_WORKER_ID", "name: PROXY_POOL_INSTANCE_ID", "name: PROXY_POOL_CHECKER_ID", "name: PROXY_POOL_CHECKER_INSTANCE_ID"} {
if strings.Contains(rendered, forbidden) {
t.Errorf("development mTLS overlay still renders manual identity %q", forbidden)
}
}
}
func TestKubernetesDevelopmentMTLSOverlayUsesVersionedConfigMap(t *testing.T) {
payload, err := os.ReadFile("kubernetes/overlays/development-mtls/kustomization.yaml")
if err != nil {
t.Fatalf("read development mTLS kustomization: %v", err)
}
if strings.Contains(string(payload), "disableNameSuffixHash: true") {
t.Fatal("development mTLS overlay disables ConfigMap versioning")
}
kubectl, err := exec.LookPath("kubectl")
if err != nil {
t.Skip("kubectl is required to render the Kubernetes development mTLS overlay")
}
command := exec.Command(kubectl, "kustomize", "kubernetes/overlays/development-mtls")
command.Dir = "."
renderedPayload, err := command.CombinedOutput()
if err != nil {
t.Fatalf("render development mTLS overlay: %v\n%s", err, renderedPayload)
}
matched := regexp.MustCompile(`(?m)^ name: (proxy-pool-runtime-config-[a-z0-9]+)$`).FindStringSubmatch(string(renderedPayload))
if len(matched) != 2 {
t.Fatalf("rendered overlay has no versioned config map: %s", renderedPayload)
}
if occurrences := strings.Count(string(renderedPayload), "name: "+matched[1]); occurrences != 4 {
t.Fatalf("versioned config map reference count = %d, want config map plus three workload volumes", occurrences)
}
}