github.com/AbhinandanKurakure/podman/v3@v3.4.10/test/e2e/secret_test.go (about)

     1  package integration
     2  
     3  import (
     4  	"io/ioutil"
     5  	"os"
     6  	"path/filepath"
     7  
     8  	. "github.com/containers/podman/v3/test/utils"
     9  	. "github.com/onsi/ginkgo"
    10  	. "github.com/onsi/gomega"
    11  	. "github.com/onsi/gomega/gexec"
    12  )
    13  
    14  var _ = Describe("Podman secret", func() {
    15  	var (
    16  		tempdir    string
    17  		err        error
    18  		podmanTest *PodmanTestIntegration
    19  	)
    20  
    21  	BeforeEach(func() {
    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.CleanupSecrets()
    33  		f := CurrentGinkgoTestDescription()
    34  		processTestResult(f)
    35  
    36  	})
    37  
    38  	It("podman secret create", func() {
    39  		secretFilePath := filepath.Join(podmanTest.TempDir, "secret")
    40  		err := ioutil.WriteFile(secretFilePath, []byte("mysecret"), 0755)
    41  		Expect(err).To(BeNil())
    42  
    43  		session := podmanTest.Podman([]string{"secret", "create", "--driver-opts", "opt1=val", "a", secretFilePath})
    44  		session.WaitWithDefaultTimeout()
    45  		secrID := session.OutputToString()
    46  		Expect(session).Should(Exit(0))
    47  
    48  		inspect := podmanTest.Podman([]string{"secret", "inspect", "--format", "{{.ID}}", secrID})
    49  		inspect.WaitWithDefaultTimeout()
    50  		Expect(inspect).Should(Exit(0))
    51  		Expect(inspect.OutputToString()).To(Equal(secrID))
    52  		inspect = podmanTest.Podman([]string{"secret", "inspect", "--format", "{{.Spec.Driver.Options}}", secrID})
    53  		inspect.WaitWithDefaultTimeout()
    54  		Expect(inspect).Should(Exit(0))
    55  		Expect(inspect.OutputToString()).To(ContainSubstring("opt1:val"))
    56  	})
    57  
    58  	It("podman secret create bad name should fail", func() {
    59  		secretFilePath := filepath.Join(podmanTest.TempDir, "secret")
    60  		err := ioutil.WriteFile(secretFilePath, []byte("mysecret"), 0755)
    61  		Expect(err).To(BeNil())
    62  
    63  		session := podmanTest.Podman([]string{"secret", "create", "?!", secretFilePath})
    64  		session.WaitWithDefaultTimeout()
    65  		Expect(session).To(ExitWithError())
    66  	})
    67  
    68  	It("podman secret inspect", func() {
    69  		secretFilePath := filepath.Join(podmanTest.TempDir, "secret")
    70  		err := ioutil.WriteFile(secretFilePath, []byte("mysecret"), 0755)
    71  		Expect(err).To(BeNil())
    72  
    73  		session := podmanTest.Podman([]string{"secret", "create", "a", secretFilePath})
    74  		session.WaitWithDefaultTimeout()
    75  		secrID := session.OutputToString()
    76  		Expect(session).Should(Exit(0))
    77  
    78  		inspect := podmanTest.Podman([]string{"secret", "inspect", secrID})
    79  		inspect.WaitWithDefaultTimeout()
    80  		Expect(inspect).Should(Exit(0))
    81  		Expect(inspect.IsJSONOutputValid()).To(BeTrue())
    82  	})
    83  
    84  	It("podman secret inspect with --format", func() {
    85  		secretFilePath := filepath.Join(podmanTest.TempDir, "secret")
    86  		err := ioutil.WriteFile(secretFilePath, []byte("mysecret"), 0755)
    87  		Expect(err).To(BeNil())
    88  
    89  		session := podmanTest.Podman([]string{"secret", "create", "a", secretFilePath})
    90  		session.WaitWithDefaultTimeout()
    91  		secrID := session.OutputToString()
    92  		Expect(session).Should(Exit(0))
    93  
    94  		inspect := podmanTest.Podman([]string{"secret", "inspect", "--format", "{{.ID}}", secrID})
    95  		inspect.WaitWithDefaultTimeout()
    96  		Expect(inspect).Should(Exit(0))
    97  		Expect(inspect.OutputToString()).To(Equal(secrID))
    98  	})
    99  
   100  	It("podman secret inspect multiple secrets", func() {
   101  		secretFilePath := filepath.Join(podmanTest.TempDir, "secret")
   102  		err := ioutil.WriteFile(secretFilePath, []byte("mysecret"), 0755)
   103  		Expect(err).To(BeNil())
   104  
   105  		session := podmanTest.Podman([]string{"secret", "create", "a", secretFilePath})
   106  		session.WaitWithDefaultTimeout()
   107  		secrID := session.OutputToString()
   108  		Expect(session).Should(Exit(0))
   109  
   110  		session2 := podmanTest.Podman([]string{"secret", "create", "b", secretFilePath})
   111  		session2.WaitWithDefaultTimeout()
   112  		secrID2 := session2.OutputToString()
   113  		Expect(session2).Should(Exit(0))
   114  
   115  		inspect := podmanTest.Podman([]string{"secret", "inspect", secrID, secrID2})
   116  		inspect.WaitWithDefaultTimeout()
   117  		Expect(inspect).Should(Exit(0))
   118  		Expect(inspect.IsJSONOutputValid()).To(BeTrue())
   119  	})
   120  
   121  	It("podman secret inspect bogus", func() {
   122  		secretFilePath := filepath.Join(podmanTest.TempDir, "secret")
   123  		err := ioutil.WriteFile(secretFilePath, []byte("mysecret"), 0755)
   124  		Expect(err).To(BeNil())
   125  
   126  		inspect := podmanTest.Podman([]string{"secret", "inspect", "bogus"})
   127  		inspect.WaitWithDefaultTimeout()
   128  		Expect(inspect).To(ExitWithError())
   129  
   130  	})
   131  
   132  	It("podman secret ls", func() {
   133  		secretFilePath := filepath.Join(podmanTest.TempDir, "secret")
   134  		err := ioutil.WriteFile(secretFilePath, []byte("mysecret"), 0755)
   135  		Expect(err).To(BeNil())
   136  
   137  		session := podmanTest.Podman([]string{"secret", "create", "a", secretFilePath})
   138  		session.WaitWithDefaultTimeout()
   139  		Expect(session).Should(Exit(0))
   140  
   141  		list := podmanTest.Podman([]string{"secret", "ls"})
   142  		list.WaitWithDefaultTimeout()
   143  		Expect(list).Should(Exit(0))
   144  		Expect(len(list.OutputToStringArray())).To(Equal(2))
   145  
   146  	})
   147  
   148  	It("podman secret ls with Go template", func() {
   149  		secretFilePath := filepath.Join(podmanTest.TempDir, "secret")
   150  		err := ioutil.WriteFile(secretFilePath, []byte("mysecret"), 0755)
   151  		Expect(err).To(BeNil())
   152  
   153  		session := podmanTest.Podman([]string{"secret", "create", "a", secretFilePath})
   154  		session.WaitWithDefaultTimeout()
   155  		Expect(session).Should(Exit(0))
   156  
   157  		list := podmanTest.Podman([]string{"secret", "ls", "--format", "table {{.Name}}"})
   158  		list.WaitWithDefaultTimeout()
   159  
   160  		Expect(list).Should(Exit(0))
   161  		Expect(len(list.OutputToStringArray())).To(Equal(2), list.OutputToString())
   162  	})
   163  
   164  	It("podman secret rm", func() {
   165  		secretFilePath := filepath.Join(podmanTest.TempDir, "secret")
   166  		err := ioutil.WriteFile(secretFilePath, []byte("mysecret"), 0755)
   167  		Expect(err).To(BeNil())
   168  
   169  		session := podmanTest.Podman([]string{"secret", "create", "a", secretFilePath})
   170  		session.WaitWithDefaultTimeout()
   171  		secrID := session.OutputToString()
   172  		Expect(session).Should(Exit(0))
   173  
   174  		removed := podmanTest.Podman([]string{"secret", "rm", "a"})
   175  		removed.WaitWithDefaultTimeout()
   176  		Expect(removed).Should(Exit(0))
   177  		Expect(removed.OutputToString()).To(Equal(secrID))
   178  
   179  		session = podmanTest.Podman([]string{"secret", "ls"})
   180  		session.WaitWithDefaultTimeout()
   181  		Expect(session).Should(Exit(0))
   182  		Expect(len(session.OutputToStringArray())).To(Equal(1))
   183  	})
   184  
   185  	It("podman secret rm --all", func() {
   186  		secretFilePath := filepath.Join(podmanTest.TempDir, "secret")
   187  		err := ioutil.WriteFile(secretFilePath, []byte("mysecret"), 0755)
   188  		Expect(err).To(BeNil())
   189  
   190  		session := podmanTest.Podman([]string{"secret", "create", "a", secretFilePath})
   191  		session.WaitWithDefaultTimeout()
   192  		Expect(session).Should(Exit(0))
   193  		session = podmanTest.Podman([]string{"secret", "create", "b", secretFilePath})
   194  		session.WaitWithDefaultTimeout()
   195  		Expect(session).Should(Exit(0))
   196  
   197  		removed := podmanTest.Podman([]string{"secret", "rm", "-a"})
   198  		removed.WaitWithDefaultTimeout()
   199  		Expect(removed).Should(Exit(0))
   200  
   201  		session = podmanTest.Podman([]string{"secret", "ls"})
   202  		session.WaitWithDefaultTimeout()
   203  		Expect(session).Should(Exit(0))
   204  		Expect(len(session.OutputToStringArray())).To(Equal(1))
   205  	})
   206  
   207  	It("podman secret creates from environment variable", func() {
   208  		// no env variable set, should fail
   209  		session := podmanTest.Podman([]string{"secret", "create", "--env", "a", "MYENVVAR"})
   210  		session.WaitWithDefaultTimeout()
   211  		secrID := session.OutputToString()
   212  		Expect(session).To(ExitWithError())
   213  
   214  		os.Setenv("MYENVVAR", "somedata")
   215  		if IsRemote() {
   216  			podmanTest.RestartRemoteService()
   217  		}
   218  
   219  		session = podmanTest.Podman([]string{"secret", "create", "--env", "a", "MYENVVAR"})
   220  		session.WaitWithDefaultTimeout()
   221  		secrID = session.OutputToString()
   222  		Expect(session).Should(Exit(0))
   223  
   224  		inspect := podmanTest.Podman([]string{"secret", "inspect", "--format", "{{.ID}}", secrID})
   225  		inspect.WaitWithDefaultTimeout()
   226  		Expect(inspect).Should(Exit(0))
   227  		Expect(inspect.OutputToString()).To(Equal(secrID))
   228  	})
   229  
   230  })