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  }