docker_api_create_test.go 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. package main
  2. import (
  3. "net/http"
  4. "github.com/docker/docker/integration-cli/checker"
  5. "github.com/docker/docker/integration-cli/request"
  6. "github.com/go-check/check"
  7. )
  8. func (s *DockerSuite) TestAPICreateWithNotExistImage(c *check.C) {
  9. name := "test"
  10. config := map[string]interface{}{
  11. "Image": "test456:v1",
  12. "Volumes": map[string]struct{}{"/tmp": {}},
  13. }
  14. status, body, err := request.SockRequest("POST", "/containers/create?name="+name, config, daemonHost())
  15. c.Assert(err, check.IsNil)
  16. c.Assert(status, check.Equals, http.StatusNotFound)
  17. expected := "No such image: test456:v1"
  18. c.Assert(getErrorMessage(c, body), checker.Contains, expected)
  19. config2 := map[string]interface{}{
  20. "Image": "test456",
  21. "Volumes": map[string]struct{}{"/tmp": {}},
  22. }
  23. status, body, err = request.SockRequest("POST", "/containers/create?name="+name, config2, daemonHost())
  24. c.Assert(err, check.IsNil)
  25. c.Assert(status, check.Equals, http.StatusNotFound)
  26. expected = "No such image: test456:latest"
  27. c.Assert(getErrorMessage(c, body), checker.Equals, expected)
  28. config3 := map[string]interface{}{
  29. "Image": "sha256:0cb40641836c461bc97c793971d84d758371ed682042457523e4ae701efeaaaa",
  30. }
  31. status, body, err = request.SockRequest("POST", "/containers/create?name="+name, config3, daemonHost())
  32. c.Assert(err, check.IsNil)
  33. c.Assert(status, check.Equals, http.StatusNotFound)
  34. expected = "No such image: sha256:0cb40641836c461bc97c793971d84d758371ed682042457523e4ae701efeaaaa"
  35. c.Assert(getErrorMessage(c, body), checker.Equals, expected)
  36. }
  37. // Test for #25099
  38. func (s *DockerSuite) TestAPICreateEmptyEnv(c *check.C) {
  39. name := "test1"
  40. config := map[string]interface{}{
  41. "Image": "busybox",
  42. "Env": []string{"", "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"},
  43. "Cmd": []string{"true"},
  44. }
  45. status, body, err := request.SockRequest("POST", "/containers/create?name="+name, config, daemonHost())
  46. c.Assert(err, check.IsNil)
  47. c.Assert(status, check.Equals, http.StatusInternalServerError)
  48. expected := "invalid environment variable:"
  49. c.Assert(getErrorMessage(c, body), checker.Contains, expected)
  50. name = "test2"
  51. config = map[string]interface{}{
  52. "Image": "busybox",
  53. "Env": []string{"=", "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"},
  54. "Cmd": []string{"true"},
  55. }
  56. status, body, err = request.SockRequest("POST", "/containers/create?name="+name, config, daemonHost())
  57. c.Assert(err, check.IsNil)
  58. c.Assert(status, check.Equals, http.StatusInternalServerError)
  59. expected = "invalid environment variable: ="
  60. c.Assert(getErrorMessage(c, body), checker.Contains, expected)
  61. name = "test3"
  62. config = map[string]interface{}{
  63. "Image": "busybox",
  64. "Env": []string{"=foo", "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"},
  65. "Cmd": []string{"true"},
  66. }
  67. status, body, err = request.SockRequest("POST", "/containers/create?name="+name, config, daemonHost())
  68. c.Assert(err, check.IsNil)
  69. c.Assert(status, check.Equals, http.StatusInternalServerError)
  70. expected = "invalid environment variable: =foo"
  71. c.Assert(getErrorMessage(c, body), checker.Contains, expected)
  72. }