docker_api_exec_test.go 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. // +build !test_no_exec
  2. package main
  3. import (
  4. "bytes"
  5. "encoding/json"
  6. "fmt"
  7. "net/http"
  8. "github.com/go-check/check"
  9. )
  10. // Regression test for #9414
  11. func (s *DockerSuite) TestExecApiCreateNoCmd(c *check.C) {
  12. testRequires(c, DaemonIsLinux)
  13. name := "exec_test"
  14. dockerCmd(c, "run", "-d", "-t", "--name", name, "busybox", "/bin/sh")
  15. status, body, err := sockRequest("POST", fmt.Sprintf("/containers/%s/exec", name), map[string]interface{}{"Cmd": nil})
  16. c.Assert(err, check.IsNil)
  17. c.Assert(status, check.Equals, http.StatusInternalServerError)
  18. if !bytes.Contains(body, []byte("No exec command specified")) {
  19. c.Fatalf("Expected message when creating exec command with no Cmd specified")
  20. }
  21. }
  22. func (s *DockerSuite) TestExecApiCreateNoValidContentType(c *check.C) {
  23. testRequires(c, DaemonIsLinux)
  24. name := "exec_test"
  25. dockerCmd(c, "run", "-d", "-t", "--name", name, "busybox", "/bin/sh")
  26. jsonData := bytes.NewBuffer(nil)
  27. if err := json.NewEncoder(jsonData).Encode(map[string]interface{}{"Cmd": nil}); err != nil {
  28. c.Fatalf("Can not encode data to json %s", err)
  29. }
  30. res, body, err := sockRequestRaw("POST", fmt.Sprintf("/containers/%s/exec", name), jsonData, "text/plain")
  31. c.Assert(err, check.IsNil)
  32. c.Assert(res.StatusCode, check.Equals, http.StatusInternalServerError)
  33. b, err := readBody(body)
  34. c.Assert(err, check.IsNil)
  35. if !bytes.Contains(b, []byte("Content-Type specified")) {
  36. c.Fatalf("Expected message when creating exec command with invalid Content-Type specified")
  37. }
  38. }