mirror of https://github.com/docker/docker-py.git
116 lines
3.8 KiB
Python
116 lines
3.8 KiB
Python
import json
|
|
|
|
import pytest
|
|
|
|
from ..helpers import requires_api_version
|
|
from .api_test import BaseAPIClientTest, url_prefix, fake_request
|
|
|
|
|
|
class VolumeTest(BaseAPIClientTest):
|
|
def test_list_volumes(self):
|
|
volumes = self.client.volumes()
|
|
assert 'Volumes' in volumes
|
|
assert len(volumes['Volumes']) == 2
|
|
args = fake_request.call_args
|
|
|
|
assert args[0][0] == 'GET'
|
|
assert args[0][1] == url_prefix + 'volumes'
|
|
|
|
def test_list_volumes_and_filters(self):
|
|
volumes = self.client.volumes(filters={'dangling': True})
|
|
assert 'Volumes' in volumes
|
|
assert len(volumes['Volumes']) == 2
|
|
args = fake_request.call_args
|
|
|
|
assert args[0][0] == 'GET'
|
|
assert args[0][1] == url_prefix + 'volumes'
|
|
assert args[1] == {'params': {'filters': '{"dangling": ["true"]}'},
|
|
'timeout': 60}
|
|
|
|
def test_create_volume(self):
|
|
name = 'perfectcherryblossom'
|
|
result = self.client.create_volume(name)
|
|
assert 'Name' in result
|
|
assert result['Name'] == name
|
|
assert 'Driver' in result
|
|
assert result['Driver'] == 'local'
|
|
args = fake_request.call_args
|
|
|
|
assert args[0][0] == 'POST'
|
|
assert args[0][1] == url_prefix + 'volumes/create'
|
|
assert json.loads(args[1]['data']) == {'Name': name}
|
|
|
|
@requires_api_version('1.23')
|
|
def test_create_volume_with_labels(self):
|
|
name = 'perfectcherryblossom'
|
|
result = self.client.create_volume(name, labels={
|
|
'com.example.some-label': 'some-value'
|
|
})
|
|
assert result["Labels"] == {
|
|
'com.example.some-label': 'some-value'
|
|
}
|
|
|
|
@requires_api_version('1.23')
|
|
def test_create_volume_with_invalid_labels(self):
|
|
name = 'perfectcherryblossom'
|
|
with pytest.raises(TypeError):
|
|
self.client.create_volume(name, labels=1)
|
|
|
|
def test_create_volume_with_driver(self):
|
|
name = 'perfectcherryblossom'
|
|
driver_name = 'sshfs'
|
|
self.client.create_volume(name, driver=driver_name)
|
|
args = fake_request.call_args
|
|
|
|
assert args[0][0] == 'POST'
|
|
assert args[0][1] == url_prefix + 'volumes/create'
|
|
data = json.loads(args[1]['data'])
|
|
assert 'Driver' in data
|
|
assert data['Driver'] == driver_name
|
|
|
|
def test_create_volume_invalid_opts_type(self):
|
|
with pytest.raises(TypeError):
|
|
self.client.create_volume(
|
|
'perfectcherryblossom', driver_opts='hello=world'
|
|
)
|
|
|
|
with pytest.raises(TypeError):
|
|
self.client.create_volume(
|
|
'perfectcherryblossom', driver_opts=['hello=world']
|
|
)
|
|
|
|
with pytest.raises(TypeError):
|
|
self.client.create_volume(
|
|
'perfectcherryblossom', driver_opts=''
|
|
)
|
|
|
|
@requires_api_version('1.24')
|
|
def test_create_volume_with_no_specified_name(self):
|
|
result = self.client.create_volume(name=None)
|
|
assert 'Name' in result
|
|
assert result['Name'] is not None
|
|
assert 'Driver' in result
|
|
assert result['Driver'] == 'local'
|
|
assert 'Scope' in result
|
|
assert result['Scope'] == 'local'
|
|
|
|
def test_inspect_volume(self):
|
|
name = 'perfectcherryblossom'
|
|
result = self.client.inspect_volume(name)
|
|
assert 'Name' in result
|
|
assert result['Name'] == name
|
|
assert 'Driver' in result
|
|
assert result['Driver'] == 'local'
|
|
args = fake_request.call_args
|
|
|
|
assert args[0][0] == 'GET'
|
|
assert args[0][1] == '{0}volumes/{1}'.format(url_prefix, name)
|
|
|
|
def test_remove_volume(self):
|
|
name = 'perfectcherryblossom'
|
|
self.client.remove_volume(name)
|
|
args = fake_request.call_args
|
|
|
|
assert args[0][0] == 'DELETE'
|
|
assert args[0][1] == '{0}volumes/{1}'.format(url_prefix, name)
|