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 }