github.com/helmwave/helmwave@v0.36.4-0.20240509190856-b35563eba4c6/pkg/release/sync_test.go (about) 1 //go:build integration 2 3 package release_test 4 5 import ( 6 "context" 7 "path/filepath" 8 "strings" 9 "testing" 10 11 "github.com/helmwave/helmwave/pkg/plan" 12 "github.com/helmwave/helmwave/pkg/release" 13 "github.com/helmwave/helmwave/pkg/repo" 14 "github.com/helmwave/helmwave/tests" 15 "github.com/stretchr/testify/suite" 16 "gopkg.in/yaml.v3" 17 ) 18 19 type SyncTestSuite struct { 20 suite.Suite 21 22 ctx context.Context 23 } 24 25 func TestSyncTestSuite(t *testing.T) { 26 t.Parallel() 27 suite.Run(t, new(SyncTestSuite)) 28 } 29 30 func (ts *SyncTestSuite) SetupSuite() { 31 ts.ctx = tests.GetContext(ts.T()) 32 33 var rs repo.Configs 34 str := ` 35 - name: prometheus-community 36 url: https://prometheus-community.github.io/helm-charts 37 - name: bitnami 38 url: https://charts.bitnami.com/bitnami 39 ` 40 err := yaml.Unmarshal([]byte(str), &rs) 41 42 ts.Require().NoError(err) 43 44 ts.Require().NoError(plan.SyncRepositories(ts.ctx, rs)) 45 } 46 47 func (ts *SyncTestSuite) TestInstallUpgrade() { 48 rel := release.NewConfig() 49 rel.NamespaceF = strings.ToLower(strings.ReplaceAll(ts.T().Name(), "/", "")) 50 rel.CreateNamespace = true 51 rel.Wait = false 52 rel.ChartF.Name = "bitnami/nginx" 53 rel.ValuesF = append(rel.ValuesF, release.ValuesReference{ 54 Dst: filepath.Join(tests.Root, "06_values.yaml"), 55 }) 56 57 r, err := rel.Sync(ts.ctx, false) 58 ts.Require().NoError(err) 59 ts.Require().NotNil(r) 60 61 r, err = rel.Sync(ts.ctx, false) 62 ts.Require().NoError(err) 63 ts.Require().NotNil(r) 64 } 65 66 func (ts *SyncTestSuite) TestInvalidValues() { 67 rel := release.NewConfig() 68 rel.NamespaceF = strings.ToLower(strings.ReplaceAll(ts.T().Name(), "/", "")) 69 rel.CreateNamespace = true 70 rel.Wait = false 71 rel.ChartF.Name = "bitnami/nginx" 72 rel.ValuesF = append(rel.ValuesF, release.ValuesReference{}) 73 74 r, err := rel.Sync(ts.ctx, false) 75 ts.Require().Error(err) 76 ts.Require().Nil(r) 77 } 78 79 func (ts *SyncTestSuite) TestSyncWithoutCRD() { 80 rel := release.NewConfig() 81 rel.NamespaceF = strings.ToLower(strings.ReplaceAll(ts.T().Name(), "/", "")) 82 rel.CreateNamespace = true 83 rel.Wait = false 84 rel.ChartF.Name = "prometheus-community/kube-prometheus-stack" 85 86 rel.DryRun(true) 87 88 r, err := rel.Sync(ts.ctx, false) 89 ts.Require().NoError(err) 90 ts.Require().NotNil(r) 91 }