ping_test.go 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. package system // import "github.com/docker/docker/integration/system"
  2. import (
  3. "net/http"
  4. "strings"
  5. "testing"
  6. "github.com/docker/docker/api/types/versions"
  7. "github.com/docker/docker/testutil/request"
  8. "gotest.tools/v3/assert"
  9. "gotest.tools/v3/skip"
  10. )
  11. func TestPingCacheHeaders(t *testing.T) {
  12. skip.If(t, versions.LessThan(testEnv.DaemonAPIVersion(), "1.40"), "skip test from new feature")
  13. defer setupTest(t)()
  14. res, _, err := request.Get("/_ping")
  15. assert.NilError(t, err)
  16. assert.Equal(t, res.StatusCode, http.StatusOK)
  17. assert.Equal(t, hdr(res, "Cache-Control"), "no-cache, no-store, must-revalidate")
  18. assert.Equal(t, hdr(res, "Pragma"), "no-cache")
  19. }
  20. func TestPingGet(t *testing.T) {
  21. defer setupTest(t)()
  22. res, body, err := request.Get("/_ping")
  23. assert.NilError(t, err)
  24. b, err := request.ReadBody(body)
  25. assert.NilError(t, err)
  26. assert.Equal(t, string(b), "OK")
  27. assert.Equal(t, res.StatusCode, http.StatusOK)
  28. assert.Check(t, hdr(res, "API-Version") != "")
  29. }
  30. func TestPingHead(t *testing.T) {
  31. skip.If(t, versions.LessThan(testEnv.DaemonAPIVersion(), "1.40"), "skip test from new feature")
  32. defer setupTest(t)()
  33. res, body, err := request.Head("/_ping")
  34. assert.NilError(t, err)
  35. b, err := request.ReadBody(body)
  36. assert.NilError(t, err)
  37. assert.Equal(t, 0, len(b))
  38. assert.Equal(t, res.StatusCode, http.StatusOK)
  39. assert.Check(t, hdr(res, "API-Version") != "")
  40. }
  41. func hdr(res *http.Response, name string) string {
  42. val, ok := res.Header[http.CanonicalHeaderKey(name)]
  43. if !ok || len(val) == 0 {
  44. return ""
  45. }
  46. return strings.Join(val, ", ")
  47. }