docker_cli_secret_create_test.go 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. // +build !windows
  2. package main
  3. import (
  4. "github.com/docker/docker/api/types/swarm"
  5. "github.com/docker/docker/pkg/integration/checker"
  6. "github.com/go-check/check"
  7. )
  8. func (s *DockerSwarmSuite) TestSecretCreate(c *check.C) {
  9. d := s.AddDaemon(c, true, true)
  10. testName := "test_secret"
  11. id := d.CreateSecret(c, swarm.SecretSpec{
  12. swarm.Annotations{
  13. Name: testName,
  14. },
  15. []byte("TESTINGDATA"),
  16. })
  17. c.Assert(id, checker.Not(checker.Equals), "", check.Commentf("secrets: %s", id))
  18. secret := d.GetSecret(c, id)
  19. c.Assert(secret.Spec.Name, checker.Equals, testName)
  20. }
  21. func (s *DockerSwarmSuite) TestSecretCreateWithLabels(c *check.C) {
  22. d := s.AddDaemon(c, true, true)
  23. testName := "test_secret"
  24. id := d.CreateSecret(c, swarm.SecretSpec{
  25. swarm.Annotations{
  26. Name: testName,
  27. Labels: map[string]string{
  28. "key1": "value1",
  29. "key2": "value2",
  30. },
  31. },
  32. []byte("TESTINGDATA"),
  33. })
  34. c.Assert(id, checker.Not(checker.Equals), "", check.Commentf("secrets: %s", id))
  35. secret := d.GetSecret(c, id)
  36. c.Assert(secret.Spec.Name, checker.Equals, testName)
  37. c.Assert(len(secret.Spec.Labels), checker.Equals, 2)
  38. c.Assert(secret.Spec.Labels["key1"], checker.Equals, "value1")
  39. c.Assert(secret.Spec.Labels["key2"], checker.Equals, "value2")
  40. }
  41. // Test case for 28884
  42. func (s *DockerSwarmSuite) TestSecretCreateResolve(c *check.C) {
  43. d := s.AddDaemon(c, true, true)
  44. name := "foo"
  45. id := d.CreateSecret(c, swarm.SecretSpec{
  46. swarm.Annotations{
  47. Name: name,
  48. },
  49. []byte("foo"),
  50. })
  51. c.Assert(id, checker.Not(checker.Equals), "", check.Commentf("secrets: %s", id))
  52. fake := d.CreateSecret(c, swarm.SecretSpec{
  53. swarm.Annotations{
  54. Name: id,
  55. },
  56. []byte("fake foo"),
  57. })
  58. c.Assert(fake, checker.Not(checker.Equals), "", check.Commentf("secrets: %s", fake))
  59. out, err := d.Cmd("secret", "ls")
  60. c.Assert(err, checker.IsNil)
  61. c.Assert(out, checker.Contains, name)
  62. c.Assert(out, checker.Contains, fake)
  63. out, err = d.Cmd("secret", "rm", id)
  64. c.Assert(out, checker.Contains, id)
  65. // Fake one will remain
  66. out, err = d.Cmd("secret", "ls")
  67. c.Assert(err, checker.IsNil)
  68. c.Assert(out, checker.Not(checker.Contains), name)
  69. c.Assert(out, checker.Contains, fake)
  70. // Remove based on name prefix of the fake one
  71. // (which is the same as the ID of foo one) should not work
  72. // as search is only done based on:
  73. // - Full ID
  74. // - Full Name
  75. // - Partial ID (prefix)
  76. out, err = d.Cmd("secret", "rm", id[:5])
  77. c.Assert(out, checker.Not(checker.Contains), id)
  78. out, err = d.Cmd("secret", "ls")
  79. c.Assert(err, checker.IsNil)
  80. c.Assert(out, checker.Not(checker.Contains), name)
  81. c.Assert(out, checker.Contains, fake)
  82. // Remove based on ID prefix of the fake one should succeed
  83. out, err = d.Cmd("secret", "rm", fake[:5])
  84. c.Assert(out, checker.Contains, fake)
  85. out, err = d.Cmd("secret", "ls")
  86. c.Assert(err, checker.IsNil)
  87. c.Assert(out, checker.Not(checker.Contains), name)
  88. c.Assert(out, checker.Not(checker.Contains), id)
  89. c.Assert(out, checker.Not(checker.Contains), fake)
  90. }