github.com/lazyboychen7/engine@v17.12.1-ce-rc2+incompatible/integration-cli/docker_api_session_test.go (about)

     1  package main
     2  
     3  import (
     4  	"net/http"
     5  
     6  	"github.com/docker/docker/integration-cli/checker"
     7  	"github.com/docker/docker/integration-cli/request"
     8  	"github.com/go-check/check"
     9  )
    10  
    11  func (s *DockerSuite) TestSessionCreate(c *check.C) {
    12  	testRequires(c, ExperimentalDaemon)
    13  
    14  	res, body, err := request.Post("/session", func(r *http.Request) error {
    15  		r.Header.Set("X-Docker-Expose-Session-Uuid", "testsessioncreate") // so we don't block default name if something else is using it
    16  		r.Header.Set("Upgrade", "h2c")
    17  		return nil
    18  	})
    19  	c.Assert(err, checker.IsNil)
    20  	c.Assert(res.StatusCode, checker.Equals, http.StatusSwitchingProtocols)
    21  	c.Assert(res.Header.Get("Upgrade"), checker.Equals, "h2c")
    22  	c.Assert(body.Close(), checker.IsNil)
    23  }
    24  
    25  func (s *DockerSuite) TestSessionCreateWithBadUpgrade(c *check.C) {
    26  	testRequires(c, ExperimentalDaemon)
    27  
    28  	res, body, err := request.Post("/session")
    29  	c.Assert(err, checker.IsNil)
    30  	c.Assert(res.StatusCode, checker.Equals, http.StatusBadRequest)
    31  	buf, err := request.ReadBody(body)
    32  	c.Assert(err, checker.IsNil)
    33  
    34  	out := string(buf)
    35  	c.Assert(out, checker.Contains, "no upgrade")
    36  
    37  	res, body, err = request.Post("/session", func(r *http.Request) error {
    38  		r.Header.Set("Upgrade", "foo")
    39  		return nil
    40  	})
    41  	c.Assert(err, checker.IsNil)
    42  	c.Assert(res.StatusCode, checker.Equals, http.StatusBadRequest)
    43  	buf, err = request.ReadBody(body)
    44  	c.Assert(err, checker.IsNil)
    45  
    46  	out = string(buf)
    47  	c.Assert(out, checker.Contains, "not supported")
    48  }