github.com/helmwave/helmwave@v0.36.4-0.20240509190856-b35563eba4c6/pkg/plan/build_registries_internal_test.go (about)

     1  package plan
     2  
     3  import (
     4  	"fmt"
     5  	"path/filepath"
     6  	"testing"
     7  
     8  	"github.com/helmwave/helmwave/pkg/registry"
     9  	"github.com/helmwave/helmwave/pkg/release"
    10  	log "github.com/sirupsen/logrus"
    11  	"github.com/stretchr/testify/suite"
    12  	helmRegistry "helm.sh/helm/v3/pkg/registry"
    13  )
    14  
    15  type BuildRegistriesTestSuite struct {
    16  	suite.Suite
    17  }
    18  
    19  func TestBuildRegistriesTestSuite(t *testing.T) {
    20  	t.Parallel()
    21  	suite.Run(t, new(BuildRegistriesTestSuite))
    22  }
    23  
    24  func (ts *BuildRegistriesTestSuite) TestUnusedRegistry() {
    25  	tmpDir := ts.T().TempDir()
    26  	p := New(filepath.Join(tmpDir, Dir))
    27  
    28  	regi := &MockRegistryConfig{}
    29  	p.SetRegistries(regi)
    30  
    31  	regis, err := p.buildRegistries()
    32  	ts.Require().NoError(err)
    33  	ts.Require().Empty(regis)
    34  
    35  	regi.AssertExpectations(ts.T())
    36  }
    37  
    38  func (ts *BuildRegistriesTestSuite) TestNoOCIRegistries() {
    39  	tmpDir := ts.T().TempDir()
    40  	p := New(filepath.Join(tmpDir, Dir))
    41  
    42  	mockedRelease := &MockReleaseConfig{}
    43  	mockedRelease.On("Chart").Return(&release.Chart{})
    44  
    45  	p.SetReleases(mockedRelease)
    46  
    47  	repos, err := p.buildRegistries()
    48  	ts.Require().NoError(err)
    49  	ts.Require().Empty(repos)
    50  
    51  	mockedRelease.AssertExpectations(ts.T())
    52  }
    53  
    54  func (ts *BuildRegistriesTestSuite) TestMissingRegistry() {
    55  	tmpDir := ts.T().TempDir()
    56  	p := New(filepath.Join(tmpDir, Dir))
    57  
    58  	regiName := "blablanami"
    59  
    60  	mockedRelease := &MockReleaseConfig{}
    61  	mockedRelease.On("Name").Return("redis")
    62  	mockedRelease.On("Repo").Return(regiName)
    63  	mockedRelease.On("Namespace").Return("defaultblabla")
    64  	mockedRelease.On("Uniq").Return()
    65  	mockedRelease.On("Logger").Return(log.WithField("test", ts.T().Name()))
    66  	mockedRelease.On("Chart").Return(&release.Chart{Name: fmt.Sprintf("%s://%s", helmRegistry.OCIScheme, regiName)})
    67  
    68  	p.SetReleases(mockedRelease)
    69  
    70  	repos, err := p.buildRegistries()
    71  
    72  	var e *registry.NotFoundError
    73  	ts.Require().ErrorAs(err, &e)
    74  	ts.Equal(regiName, e.Host)
    75  
    76  	ts.Empty(repos)
    77  
    78  	mockedRelease.AssertExpectations(ts.T())
    79  }
    80  
    81  func (ts *BuildRegistriesTestSuite) TestSuccess() {
    82  	tmpDir := ts.T().TempDir()
    83  	p := New(filepath.Join(tmpDir, Dir))
    84  
    85  	regiHost := "blablanami"
    86  
    87  	mockedRelease := &MockReleaseConfig{}
    88  	mockedRelease.On("Name").Return("redis")
    89  	mockedRelease.On("Repo").Return(regiHost)
    90  	mockedRelease.On("Namespace").Return("defaultblabla")
    91  	mockedRelease.On("Uniq").Return()
    92  	mockedRelease.On("Logger").Return(log.WithField("test", ts.T().Name()))
    93  	mockedRelease.On("Chart").Return(&release.Chart{Name: fmt.Sprintf("%s://", helmRegistry.OCIScheme)})
    94  
    95  	regi := &MockRegistryConfig{}
    96  	regi.On("Host").Return(regiHost)
    97  
    98  	p.SetReleases(mockedRelease)
    99  	p.SetRegistries(regi)
   100  
   101  	repos, err := p.buildRegistries()
   102  
   103  	ts.Require().NoError(err)
   104  	ts.Require().Len(repos, 1)
   105  	ts.Require().Contains(repos, regi)
   106  
   107  	mockedRelease.AssertExpectations(ts.T())
   108  	regi.AssertExpectations(ts.T())
   109  }