docker_cli_config_create_test.go 3.8 KB

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