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