github.com/jenkins-x/jx/v2@v2.1.155/pkg/helm/mocks/mock_helpers.go (about) 1 package helm_test 2 3 import ( 4 "io/ioutil" 5 "os" 6 "path/filepath" 7 8 "github.com/jenkins-x/jx-logging/pkg/log" 9 "github.com/jenkins-x/jx/v2/pkg/helm" 10 "github.com/jenkins-x/jx/v2/pkg/util" 11 "github.com/petergtz/pegomock" 12 "k8s.io/helm/pkg/proto/hapi/chart" 13 ) 14 15 // StubFetchChart stubs out the FetchChart operations on MockHelmer creating the chart. 16 func StubFetchChart(name string, version string, repo string, chartToCreate *chart.Chart, mockHelmer *MockHelmer) { 17 if name == "" { 18 name = pegomock.AnyString() 19 } else { 20 name = pegomock.EqString(name) 21 } 22 if version == "" { 23 version = pegomock.AnyString() 24 } else { 25 version = pegomock.EqString(version) 26 } 27 untar := pegomock.AnyBool() 28 untardir := pegomock.AnyString() 29 if repo == "" { 30 repo = pegomock.AnyString() 31 } else { 32 repo = pegomock.EqString(repo) 33 } 34 35 pegomock.When(mockHelmer.FetchChart( 36 name, 37 version, 38 untar, 39 untardir, 40 repo, 41 pegomock.AnyString(), 42 pegomock.AnyString())). 43 Then(func(params []pegomock.Param) pegomock.ReturnValues { 44 45 // We need to create the chart in dir 46 fetchDir, err := util.AsString(params[3]) 47 if err != nil { 48 return pegomock.ReturnValues{ 49 err, 50 } 51 } 52 dir := filepath.Join(fetchDir, chartToCreate.Metadata.Name) 53 err = os.MkdirAll(dir, 0700) 54 if err != nil { 55 return pegomock.ReturnValues{ 56 err, 57 } 58 } 59 log.Logger().Infof("Creating mock chart %s in %s", chartToCreate.Metadata.Name, dir) 60 err = helm.SaveFile(filepath.Join(dir, helm.ChartFileName), chartToCreate.Metadata) 61 if err != nil { 62 return pegomock.ReturnValues{ 63 err, 64 } 65 } 66 err = helm.SaveFile(filepath.Join(dir, helm.RequirementsFileName), chartToCreate.Dependencies) 67 if err != nil { 68 return pegomock.ReturnValues{ 69 err, 70 } 71 } 72 err = helm.SaveFile(filepath.Join(dir, helm.ValuesFileName), chartToCreate.Values) 73 if err != nil { 74 return pegomock.ReturnValues{ 75 err, 76 } 77 } 78 err = os.MkdirAll(filepath.Join(dir, "templates"), 0700) 79 if err != nil { 80 return pegomock.ReturnValues{ 81 err, 82 } 83 } 84 for _, t := range chartToCreate.Templates { 85 err = ioutil.WriteFile(filepath.Join(dir, "templates", t.Name), t.Data, 0600) 86 if err != nil { 87 return pegomock.ReturnValues{ 88 err, 89 } 90 } 91 } 92 for _, f := range chartToCreate.Files { 93 err = ioutil.WriteFile(filepath.Join(dir, f.TypeUrl), f.Value, 0600) 94 if err != nil { 95 return pegomock.ReturnValues{ 96 err, 97 } 98 } 99 } 100 return pegomock.ReturnValues{ 101 nil, 102 } 103 }) 104 }