session_test.go 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. package session // import "github.com/docker/docker/integration/session"
  2. import (
  3. "net/http"
  4. "testing"
  5. "github.com/docker/docker/api/types/versions"
  6. req "github.com/docker/docker/testutil/request"
  7. "gotest.tools/v3/assert"
  8. is "gotest.tools/v3/assert/cmp"
  9. "gotest.tools/v3/skip"
  10. )
  11. func TestSessionCreate(t *testing.T) {
  12. skip.If(t, testEnv.OSType == "windows", "FIXME")
  13. skip.If(t, versions.LessThan(testEnv.DaemonAPIVersion(), "1.39"), "experimental in older versions")
  14. defer setupTest(t)()
  15. daemonHost := req.DaemonHost()
  16. res, body, err := req.Post("/session",
  17. req.Host(daemonHost),
  18. req.With(func(r *http.Request) error {
  19. r.Header.Set("X-Docker-Expose-Session-Uuid", "testsessioncreate") // so we don't block default name if something else is using it
  20. r.Header.Set("Upgrade", "h2c")
  21. return nil
  22. }),
  23. )
  24. assert.NilError(t, err)
  25. assert.NilError(t, body.Close())
  26. assert.Check(t, is.DeepEqual(res.StatusCode, http.StatusSwitchingProtocols))
  27. assert.Check(t, is.Equal(res.Header.Get("Upgrade"), "h2c"))
  28. }
  29. func TestSessionCreateWithBadUpgrade(t *testing.T) {
  30. skip.If(t, testEnv.OSType == "windows", "FIXME")
  31. skip.If(t, versions.LessThan(testEnv.DaemonAPIVersion(), "1.39"), "experimental in older versions")
  32. defer setupTest(t)()
  33. daemonHost := req.DaemonHost()
  34. res, body, err := req.Post("/session", req.Host(daemonHost))
  35. assert.NilError(t, err)
  36. assert.Check(t, is.DeepEqual(res.StatusCode, http.StatusBadRequest))
  37. buf, err := req.ReadBody(body)
  38. assert.NilError(t, err)
  39. assert.Check(t, is.Contains(string(buf), "no upgrade"))
  40. res, body, err = req.Post("/session",
  41. req.Host(daemonHost),
  42. req.With(func(r *http.Request) error {
  43. r.Header.Set("Upgrade", "foo")
  44. return nil
  45. }),
  46. )
  47. assert.NilError(t, err)
  48. assert.Check(t, is.DeepEqual(res.StatusCode, http.StatusBadRequest))
  49. buf, err = req.ReadBody(body)
  50. assert.NilError(t, err)
  51. assert.Check(t, is.Contains(string(buf), "not supported"))
  52. }