github.com/zhouyu0/docker-note@v0.0.0-20190722021225-b8d3825084db/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/integration-cli/checker" 12 "github.com/go-check/check" 13 ) 14 15 // Test case for 28884 16 func (s *DockerSwarmSuite) TestSecretCreateResolve(c *check.C) { 17 d := s.AddDaemon(c, true, true) 18 19 name := "test_secret" 20 id := d.CreateSecret(c, swarm.SecretSpec{ 21 Annotations: swarm.Annotations{ 22 Name: name, 23 }, 24 Data: []byte("foo"), 25 }) 26 c.Assert(id, checker.Not(checker.Equals), "", check.Commentf("secrets: %s", id)) 27 28 fake := d.CreateSecret(c, swarm.SecretSpec{ 29 Annotations: swarm.Annotations{ 30 Name: id, 31 }, 32 Data: []byte("fake foo"), 33 }) 34 c.Assert(fake, checker.Not(checker.Equals), "", check.Commentf("secrets: %s", fake)) 35 36 out, err := d.Cmd("secret", "ls") 37 c.Assert(err, checker.IsNil) 38 c.Assert(out, checker.Contains, name) 39 c.Assert(out, checker.Contains, fake) 40 41 out, err = d.Cmd("secret", "rm", id) 42 c.Assert(err, checker.IsNil) 43 c.Assert(out, checker.Contains, id) 44 45 // Fake one will remain 46 out, err = d.Cmd("secret", "ls") 47 c.Assert(err, checker.IsNil) 48 c.Assert(out, checker.Not(checker.Contains), name) 49 c.Assert(out, checker.Contains, fake) 50 51 // Remove based on name prefix of the fake one 52 // (which is the same as the ID of foo one) should not work 53 // as search is only done based on: 54 // - Full ID 55 // - Full Name 56 // - Partial ID (prefix) 57 out, err = d.Cmd("secret", "rm", id[:5]) 58 c.Assert(err, checker.Not(checker.IsNil)) 59 c.Assert(out, checker.Not(checker.Contains), id) 60 out, err = d.Cmd("secret", "ls") 61 c.Assert(err, checker.IsNil) 62 c.Assert(out, checker.Not(checker.Contains), name) 63 c.Assert(out, checker.Contains, fake) 64 65 // Remove based on ID prefix of the fake one should succeed 66 out, err = d.Cmd("secret", "rm", fake[:5]) 67 c.Assert(err, checker.IsNil) 68 c.Assert(out, checker.Contains, fake[:5]) 69 out, err = d.Cmd("secret", "ls") 70 c.Assert(err, checker.IsNil) 71 c.Assert(out, checker.Not(checker.Contains), name) 72 c.Assert(out, checker.Not(checker.Contains), id) 73 c.Assert(out, checker.Not(checker.Contains), fake) 74 } 75 76 func (s *DockerSwarmSuite) TestSecretCreateWithFile(c *check.C) { 77 d := s.AddDaemon(c, true, true) 78 79 testFile, err := ioutil.TempFile("", "secretCreateTest") 80 c.Assert(err, checker.IsNil, check.Commentf("failed to create temporary file")) 81 defer os.Remove(testFile.Name()) 82 83 testData := "TESTINGDATA" 84 _, err = testFile.Write([]byte(testData)) 85 c.Assert(err, checker.IsNil, check.Commentf("failed to write to temporary file")) 86 87 testName := "test_secret" 88 out, err := d.Cmd("secret", "create", testName, testFile.Name()) 89 c.Assert(err, checker.IsNil) 90 c.Assert(strings.TrimSpace(out), checker.Not(checker.Equals), "", check.Commentf("%s", out)) 91 92 id := strings.TrimSpace(out) 93 secret := d.GetSecret(c, id) 94 c.Assert(secret.Spec.Name, checker.Equals, testName) 95 }