1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- package request
- import (
- "net"
- "net/http"
- "testing"
- "time"
- "github.com/docker/docker/api"
- "github.com/docker/docker/client"
- "github.com/docker/go-connections/sockets"
- "github.com/docker/go-connections/tlsconfig"
- "github.com/stretchr/testify/require"
- )
- // NewAPIClient returns a docker API client configured from environment variables
- func NewAPIClient(t *testing.T) client.APIClient {
- clt, err := client.NewEnvClient()
- require.NoError(t, err)
- return clt
- }
- // NewTLSAPIClient returns a docker API client configured with the
- // provided TLS settings
- func NewTLSAPIClient(t *testing.T, host, cacertPath, certPath, keyPath string) (client.APIClient, error) {
- opts := tlsconfig.Options{
- CAFile: cacertPath,
- CertFile: certPath,
- KeyFile: keyPath,
- ExclusiveRootPools: true,
- }
- config, err := tlsconfig.Client(opts)
- require.Nil(t, err)
- tr := &http.Transport{
- TLSClientConfig: config,
- DialContext: (&net.Dialer{
- KeepAlive: 30 * time.Second,
- Timeout: 30 * time.Second,
- }).DialContext,
- }
- proto, addr, _, err := client.ParseHost(host)
- require.Nil(t, err)
- sockets.ConfigureTransport(tr, proto, addr)
- httpClient := &http.Client{
- Transport: tr,
- CheckRedirect: client.CheckRedirect,
- }
- verStr := api.DefaultVersion
- customHeaders := map[string]string{}
- return client.NewClient(host, verStr, httpClient, customHeaders)
- }
|