github.com/khulnasoft-lab/khulnasoft@v26.0.1-0.20240328202558-330a6f959fe0+incompatible/integration-cli/docker_cli_sni_test.go (about) 1 package main 2 3 import ( 4 "context" 5 "fmt" 6 "io" 7 "log" 8 "net/http" 9 "net/http/httptest" 10 "net/url" 11 "os/exec" 12 "strings" 13 "testing" 14 15 "gotest.tools/v3/assert" 16 ) 17 18 type DockerCLISNISuite struct { 19 ds *DockerSuite 20 } 21 22 func (s *DockerCLISNISuite) TearDownTest(ctx context.Context, c *testing.T) { 23 s.ds.TearDownTest(ctx, c) 24 } 25 26 func (s *DockerCLISNISuite) OnTimeout(c *testing.T) { 27 s.ds.OnTimeout(c) 28 } 29 30 func (s *DockerCLISNISuite) TestClientSetsTLSServerName(c *testing.T) { 31 c.Skip("Flakey test") 32 // there may be more than one hit to the server for each registry request 33 var serverNameReceived []string 34 var serverName string 35 36 virtualHostServer := httptest.NewTLSServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { 37 serverNameReceived = append(serverNameReceived, r.TLS.ServerName) 38 })) 39 defer virtualHostServer.Close() 40 // discard TLS handshake errors written by default to os.Stderr 41 virtualHostServer.Config.ErrorLog = log.New(io.Discard, "", 0) 42 43 u, err := url.Parse(virtualHostServer.URL) 44 assert.NilError(c, err) 45 hostPort := u.Host 46 serverName = strings.Split(hostPort, ":")[0] 47 48 repoName := fmt.Sprintf("%v/dockercli/image:latest", hostPort) 49 cmd := exec.Command(dockerBinary, "pull", repoName) 50 cmd.Run() 51 52 // check that the fake server was hit at least once 53 assert.Assert(c, len(serverNameReceived) > 0) 54 // check that for each hit the right server name was received 55 for _, item := range serverNameReceived { 56 assert.Check(c, item == serverName) 57 } 58 }