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  }