github.com/AbhinandanKurakure/podman/v3@v3.4.10/test/e2e/import_test.go (about) 1 package integration 2 3 import ( 4 "os" 5 "path/filepath" 6 7 . "github.com/containers/podman/v3/test/utils" 8 . "github.com/onsi/ginkgo" 9 . "github.com/onsi/gomega" 10 . "github.com/onsi/gomega/gexec" 11 ) 12 13 var _ = Describe("Podman import", func() { 14 var ( 15 tempdir string 16 err error 17 podmanTest *PodmanTestIntegration 18 ) 19 20 BeforeEach(func() { 21 SkipIfRemote("FIXME: These look like it is supposed to work in remote") 22 tempdir, err = CreateTempDirInTempDir() 23 if err != nil { 24 os.Exit(1) 25 } 26 podmanTest = PodmanTestCreate(tempdir) 27 podmanTest.Setup() 28 podmanTest.SeedImages() 29 }) 30 31 AfterEach(func() { 32 podmanTest.Cleanup() 33 f := CurrentGinkgoTestDescription() 34 processTestResult(f) 35 36 }) 37 38 It("podman import with source and reference", func() { 39 outfile := filepath.Join(podmanTest.TempDir, "container.tar") 40 _, ec, cid := podmanTest.RunLsContainer("") 41 Expect(ec).To(Equal(0)) 42 43 export := podmanTest.Podman([]string{"export", "-o", outfile, cid}) 44 export.WaitWithDefaultTimeout() 45 Expect(export).Should(Exit(0)) 46 47 importImage := podmanTest.Podman([]string{"import", outfile, "foobar.com/imported-image:latest"}) 48 importImage.WaitWithDefaultTimeout() 49 Expect(importImage).Should(Exit(0)) 50 51 results := podmanTest.Podman([]string{"inspect", "--type", "image", "foobar.com/imported-image:latest"}) 52 results.WaitWithDefaultTimeout() 53 Expect(results).Should(Exit(0)) 54 }) 55 56 It("podman import without reference", func() { 57 outfile := filepath.Join(podmanTest.TempDir, "container.tar") 58 _, ec, cid := podmanTest.RunLsContainer("") 59 Expect(ec).To(Equal(0)) 60 61 export := podmanTest.Podman([]string{"export", "-o", outfile, cid}) 62 export.WaitWithDefaultTimeout() 63 Expect(export).Should(Exit(0)) 64 65 importImage := podmanTest.Podman([]string{"import", outfile}) 66 importImage.WaitWithDefaultTimeout() 67 Expect(importImage).Should(Exit(0)) 68 69 // tag the image which proves it is in R/W storage 70 tag := podmanTest.Podman([]string{"tag", importImage.OutputToString(), "foo"}) 71 tag.WaitWithDefaultTimeout() 72 Expect(tag).Should(Exit(0)) 73 }) 74 75 It("podman import with message flag", func() { 76 outfile := filepath.Join(podmanTest.TempDir, "container.tar") 77 _, ec, cid := podmanTest.RunLsContainer("") 78 Expect(ec).To(Equal(0)) 79 80 export := podmanTest.Podman([]string{"export", "-o", outfile, cid}) 81 export.WaitWithDefaultTimeout() 82 Expect(export).Should(Exit(0)) 83 84 importImage := podmanTest.Podman([]string{"import", "--message", "importing container test message", outfile, "imported-image"}) 85 importImage.WaitWithDefaultTimeout() 86 Expect(importImage).Should(Exit(0)) 87 88 results := podmanTest.Podman([]string{"history", "imported-image", "--format", "{{.Comment}}"}) 89 results.WaitWithDefaultTimeout() 90 Expect(results).Should(Exit(0)) 91 Expect(results.LineInOutputStartsWith("importing container test message")).To(BeTrue()) 92 }) 93 94 It("podman import with change flag CMD=<path>", func() { 95 outfile := filepath.Join(podmanTest.TempDir, "container.tar") 96 _, ec, cid := podmanTest.RunLsContainer("") 97 Expect(ec).To(Equal(0)) 98 99 export := podmanTest.Podman([]string{"export", "-o", outfile, cid}) 100 export.WaitWithDefaultTimeout() 101 Expect(export).Should(Exit(0)) 102 103 importImage := podmanTest.Podman([]string{"import", "--change", "CMD=/bin/bash", outfile, "imported-image"}) 104 importImage.WaitWithDefaultTimeout() 105 Expect(importImage).Should(Exit(0)) 106 107 results := podmanTest.Podman([]string{"inspect", "imported-image"}) 108 results.WaitWithDefaultTimeout() 109 Expect(results).Should(Exit(0)) 110 imageData := results.InspectImageJSON() 111 Expect(imageData[0].Config.Cmd[0]).To(Equal("/bin/sh")) 112 Expect(imageData[0].Config.Cmd[1]).To(Equal("-c")) 113 Expect(imageData[0].Config.Cmd[2]).To(Equal("/bin/bash")) 114 }) 115 116 It("podman import with change flag CMD <path>", func() { 117 outfile := filepath.Join(podmanTest.TempDir, "container.tar") 118 _, ec, cid := podmanTest.RunLsContainer("") 119 Expect(ec).To(Equal(0)) 120 121 export := podmanTest.Podman([]string{"export", "-o", outfile, cid}) 122 export.WaitWithDefaultTimeout() 123 Expect(export).Should(Exit(0)) 124 125 importImage := podmanTest.Podman([]string{"import", "--change", "CMD /bin/sh", outfile, "imported-image"}) 126 importImage.WaitWithDefaultTimeout() 127 Expect(importImage).Should(Exit(0)) 128 129 results := podmanTest.Podman([]string{"inspect", "imported-image"}) 130 results.WaitWithDefaultTimeout() 131 Expect(results).Should(Exit(0)) 132 imageData := results.InspectImageJSON() 133 Expect(imageData[0].Config.Cmd[0]).To(Equal("/bin/sh")) 134 Expect(imageData[0].Config.Cmd[1]).To(Equal("-c")) 135 Expect(imageData[0].Config.Cmd[2]).To(Equal("/bin/sh")) 136 }) 137 138 It("podman import with change flag CMD [\"path\",\"path'\"", func() { 139 outfile := filepath.Join(podmanTest.TempDir, "container.tar") 140 _, ec, cid := podmanTest.RunLsContainer("") 141 Expect(ec).To(Equal(0)) 142 143 export := podmanTest.Podman([]string{"export", "-o", outfile, cid}) 144 export.WaitWithDefaultTimeout() 145 Expect(export).Should(Exit(0)) 146 147 importImage := podmanTest.Podman([]string{"import", "--change", "CMD [\"/bin/bash\"]", outfile, "imported-image"}) 148 importImage.WaitWithDefaultTimeout() 149 Expect(importImage).Should(Exit(0)) 150 151 results := podmanTest.Podman([]string{"inspect", "imported-image"}) 152 results.WaitWithDefaultTimeout() 153 Expect(results).Should(Exit(0)) 154 imageData := results.InspectImageJSON() 155 Expect(imageData[0].Config.Cmd[0]).To(Equal("/bin/bash")) 156 }) 157 158 It("podman import with signature", func() { 159 outfile := filepath.Join(podmanTest.TempDir, "container.tar") 160 _, ec, cid := podmanTest.RunLsContainer("") 161 Expect(ec).To(Equal(0)) 162 163 export := podmanTest.Podman([]string{"export", "-o", outfile, cid}) 164 export.WaitWithDefaultTimeout() 165 Expect(export).Should(Exit(0)) 166 167 importImage := podmanTest.Podman([]string{"import", "--signature-policy", "/no/such/file", outfile}) 168 importImage.WaitWithDefaultTimeout() 169 Expect(importImage).To(ExitWithError()) 170 171 result := podmanTest.Podman([]string{"import", "--signature-policy", "/etc/containers/policy.json", outfile}) 172 result.WaitWithDefaultTimeout() 173 Expect(result).Should(Exit(0)) 174 }) 175 })