github.com/containers/podman/v4@v4.9.4/pkg/bindings/test/secrets_test.go (about)

     1  package bindings_test
     2  
     3  import (
     4  	"context"
     5  	"net/http"
     6  	"strings"
     7  	"time"
     8  
     9  	"github.com/containers/podman/v4/pkg/bindings"
    10  	"github.com/containers/podman/v4/pkg/bindings/secrets"
    11  	. "github.com/onsi/ginkgo/v2"
    12  	. "github.com/onsi/gomega"
    13  	"github.com/onsi/gomega/gexec"
    14  )
    15  
    16  var _ = Describe("Podman secrets", func() {
    17  	var (
    18  		bt       *bindingTest
    19  		s        *gexec.Session
    20  		connText context.Context
    21  		err      error
    22  	)
    23  
    24  	BeforeEach(func() {
    25  		bt = newBindingTest()
    26  		bt.RestoreImagesFromCache()
    27  		s = bt.startAPIService()
    28  		time.Sleep(1 * time.Second)
    29  		connText, err = bindings.NewConnection(context.Background(), bt.sock)
    30  		Expect(err).ToNot(HaveOccurred())
    31  	})
    32  
    33  	AfterEach(func() {
    34  
    35  		s.Kill()
    36  		bt.cleanup()
    37  	})
    38  
    39  	It("create secret", func() {
    40  		r := strings.NewReader("mysecret")
    41  		name := "mysecret"
    42  		opts := &secrets.CreateOptions{
    43  			Name: &name,
    44  		}
    45  		_, err := secrets.Create(connText, r, opts)
    46  		Expect(err).ToNot(HaveOccurred())
    47  
    48  		// should not be allowed to create duplicate secret name
    49  		_, err = secrets.Create(connText, r, opts)
    50  		Expect(err).To(HaveOccurred())
    51  	})
    52  
    53  	It("inspect secret", func() {
    54  		r := strings.NewReader("mysecret")
    55  		name := "mysecret"
    56  		opts := &secrets.CreateOptions{
    57  			Name: &name,
    58  		}
    59  		_, err := secrets.Create(connText, r, opts)
    60  		Expect(err).ToNot(HaveOccurred())
    61  
    62  		data, err := secrets.Inspect(connText, name, nil)
    63  		Expect(err).ToNot(HaveOccurred())
    64  		Expect(data.Spec.Name).To(Equal(name))
    65  
    66  		// inspecting non-existent secret should fail
    67  		_, err = secrets.Inspect(connText, "notasecret", nil)
    68  		code, _ := bindings.CheckResponseCode(err)
    69  		Expect(code).To(BeNumerically("==", http.StatusNotFound))
    70  	})
    71  
    72  	It("list secret", func() {
    73  		r := strings.NewReader("mysecret")
    74  		name := "mysecret"
    75  		opts := &secrets.CreateOptions{
    76  			Name: &name,
    77  		}
    78  		_, err := secrets.Create(connText, r, opts)
    79  		Expect(err).ToNot(HaveOccurred())
    80  
    81  		data, err := secrets.List(connText, nil)
    82  		Expect(err).ToNot(HaveOccurred())
    83  		Expect(data[0].Spec.Name).To(Equal(name))
    84  	})
    85  
    86  	It("list multiple secret", func() {
    87  		r := strings.NewReader("mysecret")
    88  		name := "mysecret"
    89  		opts := &secrets.CreateOptions{
    90  			Name: &name,
    91  		}
    92  		_, err := secrets.Create(connText, r, opts)
    93  		Expect(err).ToNot(HaveOccurred())
    94  
    95  		r2 := strings.NewReader("mysecret2")
    96  		name2 := "mysecret2"
    97  		opts2 := &secrets.CreateOptions{
    98  			Name: &name2,
    99  		}
   100  		_, err = secrets.Create(connText, r2, opts2)
   101  		Expect(err).ToNot(HaveOccurred())
   102  
   103  		data, err := secrets.List(connText, nil)
   104  		Expect(err).ToNot(HaveOccurred())
   105  		Expect(data).To(HaveLen(2))
   106  	})
   107  
   108  	It("list no secrets", func() {
   109  		data, err := secrets.List(connText, nil)
   110  		Expect(err).ToNot(HaveOccurred())
   111  		Expect(data).To(BeEmpty())
   112  	})
   113  
   114  	It("remove secret", func() {
   115  		r := strings.NewReader("mysecret")
   116  		name := "mysecret"
   117  		opts := &secrets.CreateOptions{
   118  			Name: &name,
   119  		}
   120  		_, err := secrets.Create(connText, r, opts)
   121  		Expect(err).ToNot(HaveOccurred())
   122  
   123  		err = secrets.Remove(connText, name)
   124  		Expect(err).ToNot(HaveOccurred())
   125  
   126  		// removing non-existent secret should fail
   127  		err = secrets.Remove(connText, "nosecret")
   128  		Expect(err).To(HaveOccurred())
   129  		code, _ := bindings.CheckResponseCode(err)
   130  		Expect(code).To(BeNumerically("==", http.StatusNotFound))
   131  	})
   132  
   133  })