github.com/kaisenlinux/docker.io@v0.0.0-20230510090727-ea55db55fac7/engine/client/volume_create_test.go (about) 1 package client // import "github.com/docker/docker/client" 2 3 import ( 4 "bytes" 5 "context" 6 "encoding/json" 7 "fmt" 8 "io" 9 "net/http" 10 "strings" 11 "testing" 12 13 "github.com/docker/docker/api/types" 14 volumetypes "github.com/docker/docker/api/types/volume" 15 "github.com/docker/docker/errdefs" 16 ) 17 18 func TestVolumeCreateError(t *testing.T) { 19 client := &Client{ 20 client: newMockClient(errorMock(http.StatusInternalServerError, "Server error")), 21 } 22 23 _, err := client.VolumeCreate(context.Background(), volumetypes.VolumeCreateBody{}) 24 if !errdefs.IsSystem(err) { 25 t.Fatalf("expected a Server Error, got %[1]T: %[1]v", err) 26 } 27 } 28 29 func TestVolumeCreate(t *testing.T) { 30 expectedURL := "/volumes/create" 31 32 client := &Client{ 33 client: newMockClient(func(req *http.Request) (*http.Response, error) { 34 if !strings.HasPrefix(req.URL.Path, expectedURL) { 35 return nil, fmt.Errorf("Expected URL '%s', got '%s'", expectedURL, req.URL) 36 } 37 38 if req.Method != http.MethodPost { 39 return nil, fmt.Errorf("expected POST method, got %s", req.Method) 40 } 41 42 content, err := json.Marshal(types.Volume{ 43 Name: "volume", 44 Driver: "local", 45 Mountpoint: "mountpoint", 46 }) 47 if err != nil { 48 return nil, err 49 } 50 return &http.Response{ 51 StatusCode: http.StatusOK, 52 Body: io.NopCloser(bytes.NewReader(content)), 53 }, nil 54 }), 55 } 56 57 volume, err := client.VolumeCreate(context.Background(), volumetypes.VolumeCreateBody{ 58 Name: "myvolume", 59 Driver: "mydriver", 60 DriverOpts: map[string]string{ 61 "opt-key": "opt-value", 62 }, 63 }) 64 if err != nil { 65 t.Fatal(err) 66 } 67 if volume.Name != "volume" { 68 t.Fatalf("expected volume.Name to be 'volume', got %s", volume.Name) 69 } 70 if volume.Driver != "local" { 71 t.Fatalf("expected volume.Driver to be 'local', got %s", volume.Driver) 72 } 73 if volume.Mountpoint != "mountpoint" { 74 t.Fatalf("expected volume.Mountpoint to be 'mountpoint', got %s", volume.Mountpoint) 75 } 76 }