123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- package main
- import (
- "fmt"
- "io"
- "log"
- "net/http"
- "net/http/httptest"
- "net/url"
- "os/exec"
- "strings"
- "testing"
- "gotest.tools/v3/assert"
- )
- type DockerCLISNISuite struct {
- ds *DockerSuite
- }
- func (s *DockerCLISNISuite) TearDownTest(c *testing.T) {
- s.ds.TearDownTest(c)
- }
- func (s *DockerCLISNISuite) OnTimeout(c *testing.T) {
- s.ds.OnTimeout(c)
- }
- func (s *DockerCLISNISuite) TestClientSetsTLSServerName(c *testing.T) {
- c.Skip("Flakey test")
- // there may be more than one hit to the server for each registry request
- var serverNameReceived []string
- var serverName string
- virtualHostServer := httptest.NewTLSServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
- serverNameReceived = append(serverNameReceived, r.TLS.ServerName)
- }))
- defer virtualHostServer.Close()
- // discard TLS handshake errors written by default to os.Stderr
- virtualHostServer.Config.ErrorLog = log.New(io.Discard, "", 0)
- u, err := url.Parse(virtualHostServer.URL)
- assert.NilError(c, err)
- hostPort := u.Host
- serverName = strings.Split(hostPort, ":")[0]
- repoName := fmt.Sprintf("%v/dockercli/image:latest", hostPort)
- cmd := exec.Command(dockerBinary, "pull", repoName)
- cmd.Run()
- // check that the fake server was hit at least once
- assert.Assert(c, len(serverNameReceived) > 0)
- // check that for each hit the right server name was received
- for _, item := range serverNameReceived {
- assert.Check(c, item == serverName)
- }
- }
|