github.com/vvnotw/moby@v1.13.1/integration-cli/docker_cli_secret_create_test.go (about) 1 // +build !windows 2 3 package main 4 5 import ( 6 "io/ioutil" 7 "os" 8 "strings" 9 10 "github.com/docker/docker/api/types/swarm" 11 "github.com/docker/docker/pkg/integration/checker" 12 "github.com/go-check/check" 13 ) 14 15 func (s *DockerSwarmSuite) TestSecretCreate(c *check.C) { 16 d := s.AddDaemon(c, true, true) 17 18 testName := "test_secret" 19 id := d.createSecret(c, swarm.SecretSpec{ 20 swarm.Annotations{ 21 Name: testName, 22 }, 23 []byte("TESTINGDATA"), 24 }) 25 c.Assert(id, checker.Not(checker.Equals), "", check.Commentf("secrets: %s", id)) 26 27 secret := d.getSecret(c, id) 28 c.Assert(secret.Spec.Name, checker.Equals, testName) 29 } 30 31 func (s *DockerSwarmSuite) TestSecretCreateWithLabels(c *check.C) { 32 d := s.AddDaemon(c, true, true) 33 34 testName := "test_secret" 35 id := d.createSecret(c, swarm.SecretSpec{ 36 swarm.Annotations{ 37 Name: testName, 38 Labels: map[string]string{ 39 "key1": "value1", 40 "key2": "value2", 41 }, 42 }, 43 []byte("TESTINGDATA"), 44 }) 45 c.Assert(id, checker.Not(checker.Equals), "", check.Commentf("secrets: %s", id)) 46 47 secret := d.getSecret(c, id) 48 c.Assert(secret.Spec.Name, checker.Equals, testName) 49 c.Assert(len(secret.Spec.Labels), checker.Equals, 2) 50 c.Assert(secret.Spec.Labels["key1"], checker.Equals, "value1") 51 c.Assert(secret.Spec.Labels["key2"], checker.Equals, "value2") 52 } 53 54 // Test case for 28884 55 func (s *DockerSwarmSuite) TestSecretCreateResolve(c *check.C) { 56 d := s.AddDaemon(c, true, true) 57 58 name := "foo" 59 id := d.createSecret(c, swarm.SecretSpec{ 60 swarm.Annotations{ 61 Name: name, 62 }, 63 []byte("foo"), 64 }) 65 c.Assert(id, checker.Not(checker.Equals), "", check.Commentf("secrets: %s", id)) 66 67 fake := d.createSecret(c, swarm.SecretSpec{ 68 swarm.Annotations{ 69 Name: id, 70 }, 71 []byte("fake foo"), 72 }) 73 c.Assert(fake, checker.Not(checker.Equals), "", check.Commentf("secrets: %s", fake)) 74 75 out, err := d.Cmd("secret", "ls") 76 c.Assert(err, checker.IsNil) 77 c.Assert(out, checker.Contains, name) 78 c.Assert(out, checker.Contains, fake) 79 80 out, err = d.Cmd("secret", "rm", id) 81 c.Assert(out, checker.Contains, id) 82 83 // Fake one will remain 84 out, err = d.Cmd("secret", "ls") 85 c.Assert(err, checker.IsNil) 86 c.Assert(out, checker.Not(checker.Contains), name) 87 c.Assert(out, checker.Contains, fake) 88 89 // Remove based on name prefix of the fake one 90 // (which is the same as the ID of foo one) should not work 91 // as search is only done based on: 92 // - Full ID 93 // - Full Name 94 // - Partial ID (prefix) 95 out, err = d.Cmd("secret", "rm", id[:5]) 96 c.Assert(out, checker.Not(checker.Contains), id) 97 out, err = d.Cmd("secret", "ls") 98 c.Assert(err, checker.IsNil) 99 c.Assert(out, checker.Not(checker.Contains), name) 100 c.Assert(out, checker.Contains, fake) 101 102 // Remove based on ID prefix of the fake one should succeed 103 out, err = d.Cmd("secret", "rm", fake[:5]) 104 c.Assert(out, checker.Contains, fake) 105 out, err = d.Cmd("secret", "ls") 106 c.Assert(err, checker.IsNil) 107 c.Assert(out, checker.Not(checker.Contains), name) 108 c.Assert(out, checker.Not(checker.Contains), id) 109 c.Assert(out, checker.Not(checker.Contains), fake) 110 } 111 112 func (s *DockerSwarmSuite) TestSecretCreateWithFile(c *check.C) { 113 d := s.AddDaemon(c, true, true) 114 115 testFile, err := ioutil.TempFile("", "secretCreateTest") 116 c.Assert(err, checker.IsNil, check.Commentf("failed to create temporary file")) 117 defer os.Remove(testFile.Name()) 118 119 testData := "TESTINGDATA" 120 _, err = testFile.Write([]byte(testData)) 121 c.Assert(err, checker.IsNil, check.Commentf("failed to write to temporary file")) 122 123 testName := "test_secret" 124 out, err := d.Cmd("secret", "create", testName, testFile.Name()) 125 c.Assert(err, checker.IsNil) 126 c.Assert(strings.TrimSpace(out), checker.Not(checker.Equals), "", check.Commentf(out)) 127 128 id := strings.TrimSpace(out) 129 secret := d.getSecret(c, id) 130 c.Assert(secret.Spec.Name, checker.Equals, testName) 131 }