github.com/vieux/docker@v0.6.3-0.20161004191708-e097c2a938c7/integration-cli/docker_api_volumes_test.go (about) 1 package main 2 3 import ( 4 "encoding/json" 5 "net/http" 6 "path/filepath" 7 8 "github.com/docker/docker/api/types" 9 "github.com/docker/docker/pkg/integration/checker" 10 "github.com/go-check/check" 11 ) 12 13 func (s *DockerSuite) TestVolumesAPIList(c *check.C) { 14 prefix, _ := getPrefixAndSlashFromDaemonPlatform() 15 dockerCmd(c, "run", "-v", prefix+"/foo", "busybox") 16 17 status, b, err := sockRequest("GET", "/volumes", nil) 18 c.Assert(err, checker.IsNil) 19 c.Assert(status, checker.Equals, http.StatusOK) 20 21 var volumes types.VolumesListResponse 22 c.Assert(json.Unmarshal(b, &volumes), checker.IsNil) 23 24 c.Assert(len(volumes.Volumes), checker.Equals, 1, check.Commentf("\n%v", volumes.Volumes)) 25 } 26 27 func (s *DockerSuite) TestVolumesAPICreate(c *check.C) { 28 config := types.VolumeCreateRequest{ 29 Name: "test", 30 } 31 status, b, err := sockRequest("POST", "/volumes/create", config) 32 c.Assert(err, check.IsNil) 33 c.Assert(status, check.Equals, http.StatusCreated, check.Commentf(string(b))) 34 35 var vol types.Volume 36 err = json.Unmarshal(b, &vol) 37 c.Assert(err, checker.IsNil) 38 39 c.Assert(filepath.Base(filepath.Dir(vol.Mountpoint)), checker.Equals, config.Name) 40 } 41 42 func (s *DockerSuite) TestVolumesAPIRemove(c *check.C) { 43 prefix, _ := getPrefixAndSlashFromDaemonPlatform() 44 dockerCmd(c, "run", "-v", prefix+"/foo", "--name=test", "busybox") 45 46 status, b, err := sockRequest("GET", "/volumes", nil) 47 c.Assert(err, checker.IsNil) 48 c.Assert(status, checker.Equals, http.StatusOK) 49 50 var volumes types.VolumesListResponse 51 c.Assert(json.Unmarshal(b, &volumes), checker.IsNil) 52 c.Assert(len(volumes.Volumes), checker.Equals, 1, check.Commentf("\n%v", volumes.Volumes)) 53 54 v := volumes.Volumes[0] 55 status, _, err = sockRequest("DELETE", "/volumes/"+v.Name, nil) 56 c.Assert(err, checker.IsNil) 57 c.Assert(status, checker.Equals, http.StatusConflict, check.Commentf("Should not be able to remove a volume that is in use")) 58 59 dockerCmd(c, "rm", "-f", "test") 60 status, data, err := sockRequest("DELETE", "/volumes/"+v.Name, nil) 61 c.Assert(err, checker.IsNil) 62 c.Assert(status, checker.Equals, http.StatusNoContent, check.Commentf(string(data))) 63 64 } 65 66 func (s *DockerSuite) TestVolumesAPIInspect(c *check.C) { 67 config := types.VolumeCreateRequest{ 68 Name: "test", 69 } 70 status, b, err := sockRequest("POST", "/volumes/create", config) 71 c.Assert(err, check.IsNil) 72 c.Assert(status, check.Equals, http.StatusCreated, check.Commentf(string(b))) 73 74 status, b, err = sockRequest("GET", "/volumes", nil) 75 c.Assert(err, checker.IsNil) 76 c.Assert(status, checker.Equals, http.StatusOK, check.Commentf(string(b))) 77 78 var volumes types.VolumesListResponse 79 c.Assert(json.Unmarshal(b, &volumes), checker.IsNil) 80 c.Assert(len(volumes.Volumes), checker.Equals, 1, check.Commentf("\n%v", volumes.Volumes)) 81 82 var vol types.Volume 83 status, b, err = sockRequest("GET", "/volumes/"+config.Name, nil) 84 c.Assert(err, checker.IsNil) 85 c.Assert(status, checker.Equals, http.StatusOK, check.Commentf(string(b))) 86 c.Assert(json.Unmarshal(b, &vol), checker.IsNil) 87 c.Assert(vol.Name, checker.Equals, config.Name) 88 }