github.com/YousefHaggyHeroku/pack@v1.5.5/internal/commands/set_run_image_mirrors_test.go (about)

     1  package commands_test
     2  
     3  import (
     4  	"bytes"
     5  	"io/ioutil"
     6  	"os"
     7  	"testing"
     8  
     9  	"github.com/sclevine/spec"
    10  	"github.com/sclevine/spec/report"
    11  	"github.com/spf13/cobra"
    12  
    13  	"github.com/YousefHaggyHeroku/pack/internal/commands"
    14  	"github.com/YousefHaggyHeroku/pack/internal/config"
    15  	ilogging "github.com/YousefHaggyHeroku/pack/internal/logging"
    16  	"github.com/YousefHaggyHeroku/pack/logging"
    17  	h "github.com/YousefHaggyHeroku/pack/testhelpers"
    18  )
    19  
    20  func TestSetRunImageMirrorsCommand(t *testing.T) {
    21  	spec.Run(t, "Commands", testSetRunImageMirrorsCommand, spec.Sequential(), spec.Report(report.Terminal{}))
    22  }
    23  
    24  func testSetRunImageMirrorsCommand(t *testing.T, when spec.G, it spec.S) {
    25  	var (
    26  		command      *cobra.Command
    27  		logger       logging.Logger
    28  		outBuf       bytes.Buffer
    29  		cfg          config.Config
    30  		tempPackHome string
    31  	)
    32  
    33  	it.Before(func() {
    34  		logger = ilogging.NewLogWithWriters(&outBuf, &outBuf)
    35  		cfg = config.Config{}
    36  		command = commands.SetRunImagesMirrors(logger, cfg)
    37  
    38  		var err error
    39  		tempPackHome, err = ioutil.TempDir("", "pack-home")
    40  		h.AssertNil(t, err)
    41  		h.AssertNil(t, os.Setenv("PACK_HOME", tempPackHome))
    42  	})
    43  
    44  	it.After(func() {
    45  		h.AssertNil(t, os.Unsetenv("PACK_HOME"))
    46  		h.AssertNil(t, os.RemoveAll(tempPackHome))
    47  	})
    48  
    49  	when("#SetRunImageMirrors", func() {
    50  		var (
    51  			runImage        string
    52  			testMirror1     string
    53  			testMirror2     string
    54  			testRunImageCfg []config.RunImage
    55  		)
    56  		it.Before(func() {
    57  			runImage = "test/image"
    58  			testMirror1 = "example.com/some/run1"
    59  			testMirror2 = "example.com/some/run2"
    60  			testRunImageCfg = []config.RunImage{{
    61  				Image:   runImage,
    62  				Mirrors: []string{testMirror1, testMirror2},
    63  			}}
    64  		})
    65  
    66  		when("no run image is specified", func() {
    67  			it("fails to run", func() {
    68  				err := command.Execute()
    69  				h.AssertError(t, err, "accepts 1 arg")
    70  			})
    71  		})
    72  
    73  		when("mirrors are provided", func() {
    74  			it("adds them as mirrors to the config", func() {
    75  				command.SetArgs([]string{runImage, "-m", testMirror1, "-m", testMirror2})
    76  				h.AssertNil(t, command.Execute())
    77  				cfg := h.ReadPackConfig(t)
    78  				h.AssertEq(t, cfg.RunImages, testRunImageCfg)
    79  			})
    80  		})
    81  
    82  		when("no mirrors are provided", func() {
    83  			it.Before(func() {
    84  				cfg.RunImages = testRunImageCfg
    85  				command = commands.SetRunImagesMirrors(logger, cfg)
    86  			})
    87  
    88  			it("removes all mirrors for the run image", func() {
    89  				command.SetArgs([]string{runImage})
    90  				h.AssertNil(t, command.Execute())
    91  
    92  				cfg := h.ReadPackConfig(t)
    93  				h.AssertEq(t, cfg.RunImages, []config.RunImage{{Image: runImage}})
    94  			})
    95  		})
    96  	})
    97  }