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