container_resize_test.go 2.4 KB

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