172 lines
4.2 KiB
Go
172 lines
4.2 KiB
Go
package unittest
|
|
|
|
import (
|
|
"os"
|
|
"testing"
|
|
|
|
"github.com/gruntwork-io/terratest/modules/helm"
|
|
"github.com/gruntwork-io/terratest/modules/logger"
|
|
"github.com/stretchr/testify/suite"
|
|
appsV1 "k8s.io/api/apps/v1"
|
|
)
|
|
|
|
type TrivyStatefulSetTestSuite struct {
|
|
suite.Suite
|
|
}
|
|
|
|
func (suite *TrivyStatefulSetTestSuite) render(values map[string]string) *appsV1.StatefulSet {
|
|
helmChartPath := "../../"
|
|
|
|
options := &helm.Options{
|
|
SetValues: values,
|
|
}
|
|
|
|
debug := os.Getenv("debug")
|
|
if debug != "true" {
|
|
options.Logger = logger.Discard
|
|
}
|
|
|
|
output := helm.RenderTemplate(suite.T(), options, helmChartPath, "harbor", []string{"templates/trivy/trivy-sts.yaml"})
|
|
|
|
var ss appsV1.StatefulSet
|
|
helm.UnmarshalK8SYaml(suite.T(), output, &ss)
|
|
|
|
return &ss
|
|
}
|
|
|
|
func (suite *TrivyStatefulSetTestSuite) TestPersistenceDisabled() {
|
|
values := map[string]string{
|
|
"persistence.enabled": "false",
|
|
"persistence.persistentVolumeClaim.trivy.existingClaim": "trivy-data",
|
|
}
|
|
|
|
ss := suite.render(values)
|
|
suite.Len(ss.Spec.Template.Spec.Volumes, 1)
|
|
suite.NotNil(ss.Spec.Template.Spec.Volumes[0].EmptyDir)
|
|
suite.Len(ss.Spec.VolumeClaimTemplates, 0)
|
|
}
|
|
|
|
func (suite *TrivyStatefulSetTestSuite) TestPersistenceEnabled() {
|
|
values := map[string]string{
|
|
"persistence.enabled": "true",
|
|
}
|
|
|
|
ss := suite.render(values)
|
|
suite.Len(ss.Spec.Template.Spec.Volumes, 0)
|
|
suite.Len(ss.Spec.VolumeClaimTemplates, 1)
|
|
}
|
|
|
|
func (suite *TrivyStatefulSetTestSuite) TestExistingClaim() {
|
|
values := map[string]string{
|
|
"persistence.enabled": "true",
|
|
"persistence.persistentVolumeClaim.trivy.existingClaim": "trivy-data",
|
|
}
|
|
|
|
ss := suite.render(values)
|
|
suite.Len(ss.Spec.Template.Spec.Volumes, 1)
|
|
suite.NotNil(ss.Spec.Template.Spec.Volumes[0].PersistentVolumeClaim)
|
|
suite.Equal("trivy-data", ss.Spec.Template.Spec.Volumes[0].PersistentVolumeClaim.ClaimName)
|
|
suite.Len(ss.Spec.VolumeClaimTemplates, 0)
|
|
}
|
|
|
|
func (suite *TrivyStatefulSetTestSuite) TestInternalTLSEnabled() {
|
|
{
|
|
values := map[string]string{
|
|
"internalTLS.enabled": "true",
|
|
"persistence.enabled": "false",
|
|
}
|
|
|
|
ss := suite.render(values)
|
|
suite.Len(ss.Spec.Template.Spec.Volumes, 2)
|
|
suite.Len(ss.Spec.VolumeClaimTemplates, 0)
|
|
}
|
|
|
|
{
|
|
values := map[string]string{
|
|
"internalTLS.enabled": "true",
|
|
"persistence.enabled": "true",
|
|
}
|
|
|
|
ss := suite.render(values)
|
|
suite.Len(ss.Spec.Template.Spec.Volumes, 1)
|
|
suite.Len(ss.Spec.VolumeClaimTemplates, 1)
|
|
}
|
|
|
|
{
|
|
values := map[string]string{
|
|
"internalTLS.enabled": "true",
|
|
"persistence.enabled": "true",
|
|
"persistence.persistentVolumeClaim.trivy.existingClaim": "trivy-data",
|
|
}
|
|
|
|
ss := suite.render(values)
|
|
suite.Len(ss.Spec.Template.Spec.Volumes, 2)
|
|
suite.Len(ss.Spec.VolumeClaimTemplates, 0)
|
|
}
|
|
}
|
|
|
|
func (suite *TrivyStatefulSetTestSuite) TestCustomCA() {
|
|
{
|
|
values := map[string]string{
|
|
"caBundleSecretName": "ca-bundle-secret",
|
|
"persistence.enabled": "false",
|
|
}
|
|
|
|
ss := suite.render(values)
|
|
suite.Len(ss.Spec.Template.Spec.Volumes, 2)
|
|
suite.Len(ss.Spec.VolumeClaimTemplates, 0)
|
|
}
|
|
|
|
{
|
|
values := map[string]string{
|
|
"caBundleSecretName": "ca-bundle-secret",
|
|
"internalTLS.enabled": "true",
|
|
"persistence.enabled": "false",
|
|
}
|
|
|
|
ss := suite.render(values)
|
|
suite.Len(ss.Spec.Template.Spec.Volumes, 3)
|
|
suite.Len(ss.Spec.VolumeClaimTemplates, 0)
|
|
}
|
|
|
|
{
|
|
values := map[string]string{
|
|
"caBundleSecretName": "ca-bundle-secret",
|
|
"internalTLS.enabled": "true",
|
|
"persistence.enabled": "true",
|
|
"persistence.persistentVolumeClaim.trivy.existingClaim": "trivy-data",
|
|
}
|
|
|
|
ss := suite.render(values)
|
|
suite.Len(ss.Spec.Template.Spec.Volumes, 3)
|
|
suite.Len(ss.Spec.VolumeClaimTemplates, 0)
|
|
}
|
|
|
|
{
|
|
values := map[string]string{
|
|
"caBundleSecretName": "ca-bundle-secret",
|
|
"persistence.enabled": "true",
|
|
}
|
|
|
|
ss := suite.render(values)
|
|
suite.Len(ss.Spec.Template.Spec.Volumes, 1)
|
|
suite.Len(ss.Spec.VolumeClaimTemplates, 1)
|
|
}
|
|
|
|
{
|
|
values := map[string]string{
|
|
"caBundleSecretName": "ca-bundle-secret",
|
|
"persistence.enabled": "true",
|
|
"persistence.persistentVolumeClaim.trivy.existingClaim": "trivy-data",
|
|
}
|
|
|
|
ss := suite.render(values)
|
|
suite.Len(ss.Spec.Template.Spec.Volumes, 2)
|
|
suite.Len(ss.Spec.VolumeClaimTemplates, 0)
|
|
}
|
|
}
|
|
|
|
func TestTrivyStatefulSetTestSuite(t *testing.T) {
|
|
suite.Run(t, &TrivyStatefulSetTestSuite{})
|
|
}
|