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  })