Helm Test Code는 Helm 차트의 정확성과 기능을 검증하기 위한 테스트 스크립트입니다. 이는 차트가 올바르게 설치되고 예상대로 작동하는지 확인하는 데 사용됩니다.
package main
import (
"testing"
"helm.sh/helm/v3/pkg/action"
"helm.sh/helm/v3/pkg/cli"
"helm.sh/helm/v3/pkg/release"
)
func TestHelmRelease(t *testing.T) {
// 설정
settings := cli.New()
actionConfig := new(action.Configuration)
if err := actionConfig.Init(settings.RESTClientGetter(), settings.Namespace(), os.Getenv("HELM_DRIVER"), log.Printf); err != nil {
t.Fatalf("Failed to initialize action config: %v", err)
}
// Helm 설치 실행
client := action.NewInstall(actionConfig)
client.Namespace = settings.Namespace()
client.ReleaseName = "test-release"
client.ChartPathOptions.RepoURL = "<https://charts.bitnami.com/bitnami>"
client.ChartPathOptions.Version = "9.3.0"
chartPath, err := client.ChartPathOptions.LocateChart("nginx", settings)
if err != nil {
t.Fatalf("Failed to locate chart: %v", err)
}
rel, err := client.Run(chartPath, nil)
if err != nil {
t.Fatalf("Failed to install chart: %v", err)
}
// 릴리스 상태 확인
if rel.Info.Status != release.StatusDeployed {
t.Errorf("Expected release status to be 'deployed', got '%s'", rel.Info.Status)
}
// 릴리스 이름 확인
if rel.Name != "test-release" {
t.Errorf("Expected release name to be 'test-release', got '%s'", rel.Name)
}
// 차트 버전 확인
if rel.Chart.Metadata.Version != "9.3.0" {
t.Errorf("Expected chart version to be '9.3.0', got '%s'", rel.Chart.Metadata.Version)
}
}