github.com/adityamillind98/moby@v23.0.0-rc.4+incompatible/client/container_remove_test.go (about) 1 package client // import "github.com/docker/docker/client" 2 3 import ( 4 "bytes" 5 "context" 6 "fmt" 7 "io" 8 "net/http" 9 "strings" 10 "testing" 11 12 "github.com/docker/docker/api/types" 13 "github.com/docker/docker/errdefs" 14 "gotest.tools/v3/assert" 15 ) 16 17 func TestContainerRemoveError(t *testing.T) { 18 client := &Client{ 19 client: newMockClient(errorMock(http.StatusInternalServerError, "Server error")), 20 } 21 err := client.ContainerRemove(context.Background(), "container_id", types.ContainerRemoveOptions{}) 22 if !errdefs.IsSystem(err) { 23 t.Fatalf("expected a Server Error, got %[1]T: %[1]v", err) 24 } 25 } 26 27 func TestContainerRemoveNotFoundError(t *testing.T) { 28 client := &Client{ 29 client: newMockClient(errorMock(http.StatusNotFound, "no such container: container_id")), 30 } 31 err := client.ContainerRemove(context.Background(), "container_id", types.ContainerRemoveOptions{}) 32 assert.ErrorContains(t, err, "no such container: container_id") 33 assert.Check(t, IsErrNotFound(err)) 34 } 35 36 func TestContainerRemove(t *testing.T) { 37 expectedURL := "/containers/container_id" 38 client := &Client{ 39 client: newMockClient(func(req *http.Request) (*http.Response, error) { 40 if !strings.HasPrefix(req.URL.Path, expectedURL) { 41 return nil, fmt.Errorf("Expected URL '%s', got '%s'", expectedURL, req.URL) 42 } 43 query := req.URL.Query() 44 volume := query.Get("v") 45 if volume != "1" { 46 return nil, fmt.Errorf("v (volume) not set in URL query properly. Expected '1', got %s", volume) 47 } 48 force := query.Get("force") 49 if force != "1" { 50 return nil, fmt.Errorf("force not set in URL query properly. Expected '1', got %s", force) 51 } 52 link := query.Get("link") 53 if link != "" { 54 return nil, fmt.Errorf("link should have not be present in query, go %s", link) 55 } 56 return &http.Response{ 57 StatusCode: http.StatusOK, 58 Body: io.NopCloser(bytes.NewReader([]byte(""))), 59 }, nil 60 }), 61 } 62 63 err := client.ContainerRemove(context.Background(), "container_id", types.ContainerRemoveOptions{ 64 RemoveVolumes: true, 65 Force: true, 66 }) 67 assert.Check(t, err) 68 }