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 }