github.com/docker/docker@v299999999.0.0-20200612211812-aaf470eca7b5+incompatible/client/container_resize_test.go (about)

     1  package client // import "github.com/docker/docker/client"
     2  
     3  import (
     4  	"bytes"
     5  	"context"
     6  	"fmt"
     7  	"io/ioutil"
     8  	"net/http"
     9  	"strings"
    10  	"testing"
    11  
    12  	"github.com/docker/docker/api/types"
    13  	"github.com/docker/docker/errdefs"
    14  )
    15  
    16  func TestContainerResizeError(t *testing.T) {
    17  	client := &Client{
    18  		client: newMockClient(errorMock(http.StatusInternalServerError, "Server error")),
    19  	}
    20  	err := client.ContainerResize(context.Background(), "container_id", types.ResizeOptions{})
    21  	if !errdefs.IsSystem(err) {
    22  		t.Fatalf("expected a Server Error, got %[1]T: %[1]v", err)
    23  	}
    24  }
    25  
    26  func TestContainerExecResizeError(t *testing.T) {
    27  	client := &Client{
    28  		client: newMockClient(errorMock(http.StatusInternalServerError, "Server error")),
    29  	}
    30  	err := client.ContainerExecResize(context.Background(), "exec_id", types.ResizeOptions{})
    31  	if !errdefs.IsSystem(err) {
    32  		t.Fatalf("expected a Server Error, got %[1]T: %[1]v", err)
    33  	}
    34  }
    35  
    36  func TestContainerResize(t *testing.T) {
    37  	client := &Client{
    38  		client: newMockClient(resizeTransport("/containers/container_id/resize")),
    39  	}
    40  
    41  	err := client.ContainerResize(context.Background(), "container_id", types.ResizeOptions{
    42  		Height: 500,
    43  		Width:  600,
    44  	})
    45  	if err != nil {
    46  		t.Fatal(err)
    47  	}
    48  }
    49  
    50  func TestContainerExecResize(t *testing.T) {
    51  	client := &Client{
    52  		client: newMockClient(resizeTransport("/exec/exec_id/resize")),
    53  	}
    54  
    55  	err := client.ContainerExecResize(context.Background(), "exec_id", types.ResizeOptions{
    56  		Height: 500,
    57  		Width:  600,
    58  	})
    59  	if err != nil {
    60  		t.Fatal(err)
    61  	}
    62  }
    63  
    64  func resizeTransport(expectedURL string) func(req *http.Request) (*http.Response, error) {
    65  	return func(req *http.Request) (*http.Response, error) {
    66  		if !strings.HasPrefix(req.URL.Path, expectedURL) {
    67  			return nil, fmt.Errorf("Expected URL '%s', got '%s'", expectedURL, req.URL)
    68  		}
    69  		query := req.URL.Query()
    70  		h := query.Get("h")
    71  		if h != "500" {
    72  			return nil, fmt.Errorf("h not set in URL query properly. Expected '500', got %s", h)
    73  		}
    74  		w := query.Get("w")
    75  		if w != "600" {
    76  			return nil, fmt.Errorf("w not set in URL query properly. Expected '600', got %s", w)
    77  		}
    78  		return &http.Response{
    79  			StatusCode: http.StatusOK,
    80  			Body:       ioutil.NopCloser(bytes.NewReader([]byte(""))),
    81  		}, nil
    82  	}
    83  }