docker_api_exec_test.go 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  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. name := "exec_test"
  13. dockerCmd(c, "run", "-d", "-t", "--name", name, "busybox", "/bin/sh")
  14. status, body, err := sockRequest("POST", fmt.Sprintf("/containers/%s/exec", name), map[string]interface{}{"Cmd": nil})
  15. c.Assert(err, check.IsNil)
  16. c.Assert(status, check.Equals, http.StatusInternalServerError)
  17. if !bytes.Contains(body, []byte("No exec command specified")) {
  18. c.Fatalf("Expected message when creating exec command with no Cmd specified")
  19. }
  20. }
  21. func (s *DockerSuite) TestExecApiCreateNoValidContentType(c *check.C) {
  22. name := "exec_test"
  23. dockerCmd(c, "run", "-d", "-t", "--name", name, "busybox", "/bin/sh")
  24. jsonData := bytes.NewBuffer(nil)
  25. if err := json.NewEncoder(jsonData).Encode(map[string]interface{}{"Cmd": nil}); err != nil {
  26. c.Fatalf("Can not encode data to json %s", err)
  27. }
  28. res, body, err := sockRequestRaw("POST", fmt.Sprintf("/containers/%s/exec", name), jsonData, "text/plain")
  29. c.Assert(err, check.IsNil)
  30. c.Assert(res.StatusCode, check.Equals, http.StatusInternalServerError)
  31. b, err := readBody(body)
  32. c.Assert(err, check.IsNil)
  33. if !bytes.Contains(b, []byte("Content-Type specified")) {
  34. c.Fatalf("Expected message when creating exec command with invalid Content-Type specified")
  35. }
  36. }