github.com/cookieai-jar/moby@v17.12.1-ce-rc2+incompatible/integration-cli/docker_api_swarm_secret_test.go (about) 1 // +build !windows 2 3 package main 4 5 import ( 6 "net/http" 7 8 "github.com/docker/docker/api/types/swarm" 9 "github.com/docker/docker/integration-cli/checker" 10 "github.com/go-check/check" 11 "golang.org/x/net/context" 12 ) 13 14 func (s *DockerSwarmSuite) TestAPISwarmSecretsEmptyList(c *check.C) { 15 d := s.AddDaemon(c, true, true) 16 17 secrets := d.ListSecrets(c) 18 c.Assert(secrets, checker.NotNil) 19 c.Assert(len(secrets), checker.Equals, 0, check.Commentf("secrets: %#v", secrets)) 20 } 21 22 func (s *DockerSwarmSuite) TestAPISwarmSecretsCreate(c *check.C) { 23 d := s.AddDaemon(c, true, true) 24 25 testName := "test_secret" 26 secretSpec := swarm.SecretSpec{ 27 Annotations: swarm.Annotations{ 28 Name: testName, 29 }, 30 Data: []byte("TESTINGDATA"), 31 } 32 33 id := d.CreateSecret(c, secretSpec) 34 c.Assert(id, checker.Not(checker.Equals), "", check.Commentf("secrets: %s", id)) 35 36 secrets := d.ListSecrets(c) 37 c.Assert(len(secrets), checker.Equals, 1, check.Commentf("secrets: %#v", secrets)) 38 name := secrets[0].Spec.Annotations.Name 39 c.Assert(name, checker.Equals, testName, check.Commentf("secret: %s", name)) 40 41 // create an already existing secret, daemon should return a status code of 409 42 status, out, err := d.SockRequest("POST", "/secrets/create", secretSpec) 43 c.Assert(err, checker.IsNil) 44 c.Assert(status, checker.Equals, http.StatusConflict, check.Commentf("secret create: %s", string(out))) 45 } 46 47 func (s *DockerSwarmSuite) TestAPISwarmSecretsDelete(c *check.C) { 48 d := s.AddDaemon(c, true, true) 49 50 testName := "test_secret" 51 id := d.CreateSecret(c, swarm.SecretSpec{Annotations: swarm.Annotations{ 52 Name: testName, 53 }, 54 Data: []byte("TESTINGDATA"), 55 }) 56 c.Assert(id, checker.Not(checker.Equals), "", check.Commentf("secrets: %s", id)) 57 58 secret := d.GetSecret(c, id) 59 c.Assert(secret.ID, checker.Equals, id, check.Commentf("secret: %v", secret)) 60 61 d.DeleteSecret(c, secret.ID) 62 63 cli, err := d.NewClient() 64 c.Assert(err, checker.IsNil) 65 defer cli.Close() 66 67 _, _, err = cli.SecretInspectWithRaw(context.Background(), id) 68 c.Assert(err.Error(), checker.Contains, "No such secret") 69 70 id = "non-existing" 71 err = cli.SecretRemove(context.Background(), id) 72 c.Assert(err.Error(), checker.Contains, "No such secret: non-existing") 73 } 74 75 func (s *DockerSwarmSuite) TestAPISwarmSecretsUpdate(c *check.C) { 76 d := s.AddDaemon(c, true, true) 77 78 testName := "test_secret" 79 id := d.CreateSecret(c, swarm.SecretSpec{ 80 Annotations: swarm.Annotations{ 81 Name: testName, 82 Labels: map[string]string{ 83 "test": "test1", 84 }, 85 }, 86 Data: []byte("TESTINGDATA"), 87 }) 88 c.Assert(id, checker.Not(checker.Equals), "", check.Commentf("secrets: %s", id)) 89 90 secret := d.GetSecret(c, id) 91 c.Assert(secret.ID, checker.Equals, id, check.Commentf("secret: %v", secret)) 92 93 // test UpdateSecret with full ID 94 d.UpdateSecret(c, id, func(s *swarm.Secret) { 95 s.Spec.Labels = map[string]string{ 96 "test": "test1", 97 } 98 }) 99 100 secret = d.GetSecret(c, id) 101 c.Assert(secret.Spec.Labels["test"], checker.Equals, "test1", check.Commentf("secret: %v", secret)) 102 103 // test UpdateSecret with full name 104 d.UpdateSecret(c, secret.Spec.Name, func(s *swarm.Secret) { 105 s.Spec.Labels = map[string]string{ 106 "test": "test2", 107 } 108 }) 109 110 secret = d.GetSecret(c, id) 111 c.Assert(secret.Spec.Labels["test"], checker.Equals, "test2", check.Commentf("secret: %v", secret)) 112 113 // test UpdateSecret with prefix ID 114 d.UpdateSecret(c, id[:1], func(s *swarm.Secret) { 115 s.Spec.Labels = map[string]string{ 116 "test": "test3", 117 } 118 }) 119 120 secret = d.GetSecret(c, id) 121 c.Assert(secret.Spec.Labels["test"], checker.Equals, "test3", check.Commentf("secret: %v", secret)) 122 123 // test UpdateSecret in updating Data which is not supported in daemon 124 // this test will produce an error in func UpdateSecret 125 secret = d.GetSecret(c, id) 126 secret.Spec.Data = []byte("TESTINGDATA2") 127 128 cli, err := d.NewClient() 129 c.Assert(err, checker.IsNil) 130 defer cli.Close() 131 132 expected := "only updates to Labels are allowed" 133 134 err = cli.SecretUpdate(context.Background(), secret.ID, secret.Version, secret.Spec) 135 c.Assert(err.Error(), checker.Contains, expected) 136 }