summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/integration/api_container_test.py33
-rw-r--r--tests/integration/api_exec_test.py12
-rw-r--r--tests/integration/models_services_test.py1
-rw-r--r--tests/unit/api_container_test.py6
-rw-r--r--tests/unit/api_test.py14
-rw-r--r--tests/unit/client_test.py24
-rw-r--r--tests/unit/fake_api.py4
-rw-r--r--tests/unit/fake_api_client.py4
-rw-r--r--tests/unit/models_containers_test.py3
-rw-r--r--tests/unit/utils_test.py2
10 files changed, 80 insertions, 23 deletions
diff --git a/tests/integration/api_container_test.py b/tests/integration/api_container_test.py
index 5e30eee..5d06bc4 100644
--- a/tests/integration/api_container_test.py
+++ b/tests/integration/api_container_test.py
@@ -1,6 +1,7 @@
import os
import signal
import tempfile
+from datetime import datetime
import docker
from docker.constants import IS_WINDOWS_PLATFORM
@@ -9,6 +10,7 @@ from docker.utils.socket import read_exactly
import pytest
+import requests
import six
from .base import BUSYBOX, BaseAPIIntegrationTest
@@ -816,6 +818,21 @@ class WaitTest(BaseAPIIntegrationTest):
self.assertIn('ExitCode', inspect['State'])
self.assertEqual(inspect['State']['ExitCode'], exitcode)
+ @requires_api_version('1.30')
+ def test_wait_with_condition(self):
+ ctnr = self.client.create_container(BUSYBOX, 'true')
+ self.tmp_containers.append(ctnr)
+ with pytest.raises(requests.exceptions.ConnectionError):
+ self.client.wait(ctnr, condition='removed', timeout=1)
+
+ ctnr = self.client.create_container(
+ BUSYBOX, ['sleep', '3'],
+ host_config=self.client.create_host_config(auto_remove=True)
+ )
+ self.tmp_containers.append(ctnr)
+ self.client.start(ctnr)
+ assert self.client.wait(ctnr, condition='removed', timeout=5) == 0
+
class LogsTest(BaseAPIIntegrationTest):
def test_logs(self):
@@ -888,6 +905,22 @@ Line2'''
logs = self.client.logs(id, tail=0)
self.assertEqual(logs, ''.encode(encoding='ascii'))
+ @requires_api_version('1.35')
+ def test_logs_with_until(self):
+ snippet = 'Shanghai Teahouse (Hong Meiling)'
+ container = self.client.create_container(
+ BUSYBOX, 'echo "{0}"'.format(snippet)
+ )
+
+ self.tmp_containers.append(container)
+ self.client.start(container)
+ exitcode = self.client.wait(container)
+ assert exitcode == 0
+ logs_until_1 = self.client.logs(container, until=1)
+ assert logs_until_1 == b''
+ logs_until_now = self.client.logs(container, datetime.now())
+ assert logs_until_now == (snippet + '\n').encode(encoding='ascii')
+
class DiffTest(BaseAPIIntegrationTest):
def test_diff(self):
diff --git a/tests/integration/api_exec_test.py b/tests/integration/api_exec_test.py
index 7a65041..0d42e19 100644
--- a/tests/integration/api_exec_test.py
+++ b/tests/integration/api_exec_test.py
@@ -136,3 +136,15 @@ class ExecTest(BaseAPIIntegrationTest):
exec_log = self.client.exec_start(res)
assert b'X=Y\n' in exec_log
+
+ @requires_api_version('1.35')
+ def test_exec_command_with_workdir(self):
+ container = self.client.create_container(
+ BUSYBOX, 'cat', detach=True, stdin_open=True
+ )
+ self.tmp_containers.append(container)
+ self.client.start(container)
+
+ res = self.client.exec_create(container, 'pwd', workdir='/var/www')
+ exec_log = self.client.exec_start(res)
+ assert exec_log == b'/var/www\n'
diff --git a/tests/integration/models_services_test.py b/tests/integration/models_services_test.py
index ce83428..827242a 100644
--- a/tests/integration/models_services_test.py
+++ b/tests/integration/models_services_test.py
@@ -195,6 +195,7 @@ class ServiceTest(unittest.TestCase):
image="alpine",
command="sleep 300"
)
+ service.reload()
service.update(
# create argument
name=service.name,
diff --git a/tests/unit/api_container_test.py b/tests/unit/api_container_test.py
index 3b135a8..8a897cc 100644
--- a/tests/unit/api_container_test.py
+++ b/tests/unit/api_container_test.py
@@ -1263,7 +1263,8 @@ class ContainerTest(BaseAPIClientTest):
fake_request.assert_called_with(
'POST',
url_prefix + 'containers/3cc2351ab11b/wait',
- timeout=None
+ timeout=None,
+ params={}
)
def test_wait_with_dict_instead_of_id(self):
@@ -1272,7 +1273,8 @@ class ContainerTest(BaseAPIClientTest):
fake_request.assert_called_with(
'POST',
url_prefix + 'containers/3cc2351ab11b/wait',
- timeout=None
+ timeout=None,
+ params={}
)
def test_logs(self):
diff --git a/tests/unit/api_test.py b/tests/unit/api_test.py
index 6ac92c4..ab4cb42 100644
--- a/tests/unit/api_test.py
+++ b/tests/unit/api_test.py
@@ -104,7 +104,7 @@ class BaseAPIClientTest(unittest.TestCase):
_read_from_socket=fake_read_from_socket
)
self.patcher.start()
- self.client = APIClient()
+ self.client = APIClient(base_url='https://unittest:8080')
# Force-clear authconfig to avoid tampering with the tests
self.client._cfg = {'Configs': {}}
@@ -126,7 +126,7 @@ class BaseAPIClientTest(unittest.TestCase):
class DockerApiTest(BaseAPIClientTest):
def test_ctor(self):
with pytest.raises(docker.errors.DockerException) as excinfo:
- APIClient(version=1.12)
+ APIClient(base_url='https://unittest:8080', version=1.12)
self.assertEqual(
str(excinfo.value),
@@ -193,7 +193,7 @@ class DockerApiTest(BaseAPIClientTest):
)
def test_retrieve_server_version(self):
- client = APIClient(version="auto")
+ client = APIClient(version="auto", base_url='https://unittest:8080')
self.assertTrue(isinstance(client._version, six.string_types))
self.assertFalse(client._version == "auto")
client.close()
@@ -472,7 +472,7 @@ class UserAgentTest(unittest.TestCase):
self.patcher.stop()
def test_default_user_agent(self):
- client = APIClient()
+ client = APIClient(base_url='https://unittest:8080')
client.version()
self.assertEqual(self.mock_send.call_count, 1)
@@ -481,7 +481,9 @@ class UserAgentTest(unittest.TestCase):
self.assertEqual(headers['User-Agent'], expected)
def test_custom_user_agent(self):
- client = APIClient(user_agent='foo/bar')
+ client = APIClient(
+ base_url='https://unittest:8080', user_agent='foo/bar'
+ )
client.version()
self.assertEqual(self.mock_send.call_count, 1)
@@ -501,7 +503,7 @@ class DisableSocketTest(unittest.TestCase):
return self.timeout
def setUp(self):
- self.client = APIClient()
+ self.client = APIClient(base_url='https://unittest:8080')
def test_disable_socket_timeout(self):
"""Test that the timeout is disabled on a generic socket object."""
diff --git a/tests/unit/client_test.py b/tests/unit/client_test.py
index c4996f1..617b89a 100644
--- a/tests/unit/client_test.py
+++ b/tests/unit/client_test.py
@@ -18,39 +18,45 @@ except ImportError:
TEST_CERT_DIR = os.path.join(os.path.dirname(__file__), 'testdata/certs')
+def docker_from_env(*args, **kwargs):
+ return docker.from_env(
+ *args, environment={'DOCKER_HOST': 'https://unittest:8080'}, **kwargs
+ )
+
+
class ClientTest(unittest.TestCase):
@mock.patch('docker.api.APIClient.events')
def test_events(self, mock_func):
since = datetime.datetime(2016, 1, 1, 0, 0)
mock_func.return_value = fake_api.get_fake_events()[1]
- client = docker.from_env()
+ client = docker_from_env()
assert client.events(since=since) == mock_func.return_value
mock_func.assert_called_with(since=since)
@mock.patch('docker.api.APIClient.info')
def test_info(self, mock_func):
mock_func.return_value = fake_api.get_fake_info()[1]
- client = docker.from_env()
+ client = docker_from_env()
assert client.info() == mock_func.return_value
mock_func.assert_called_with()
@mock.patch('docker.api.APIClient.ping')
def test_ping(self, mock_func):
mock_func.return_value = True
- client = docker.from_env()
+ client = docker_from_env()
assert client.ping() is True
mock_func.assert_called_with()
@mock.patch('docker.api.APIClient.version')
def test_version(self, mock_func):
mock_func.return_value = fake_api.get_fake_version()[1]
- client = docker.from_env()
+ client = docker_from_env()
assert client.version() == mock_func.return_value
mock_func.assert_called_with()
def test_call_api_client_method(self):
- client = docker.from_env()
+ client = docker_from_env()
with self.assertRaises(AttributeError) as cm:
client.create_container()
s = str(cm.exception)
@@ -64,7 +70,9 @@ class ClientTest(unittest.TestCase):
assert "this method is now on the object APIClient" not in s
def test_call_containers(self):
- client = docker.DockerClient(**kwargs_from_env())
+ client = docker.DockerClient(
+ base_url='https://unittest:8080', **kwargs_from_env()
+ )
with self.assertRaises(TypeError) as cm:
client.containers()
@@ -101,11 +109,11 @@ class FromEnvTest(unittest.TestCase):
self.assertEqual(client.api._version, '2.32')
def test_from_env_without_version_uses_default(self):
- client = docker.from_env()
+ client = docker_from_env()
self.assertEqual(client.api._version, DEFAULT_DOCKER_API_VERSION)
def test_from_env_without_timeout_uses_default(self):
- client = docker.from_env()
+ client = docker_from_env()
self.assertEqual(client.api.timeout, DEFAULT_TIMEOUT_SECONDS)
diff --git a/tests/unit/fake_api.py b/tests/unit/fake_api.py
index 37154a3..5e351cb 100644
--- a/tests/unit/fake_api.py
+++ b/tests/unit/fake_api.py
@@ -497,9 +497,7 @@ def post_fake_network_disconnect():
# Maps real api url to fake response callback
-prefix = 'http+docker://localunixsocket'
-if constants.IS_WINDOWS_PLATFORM:
- prefix = 'http+docker://localnpipe'
+prefix = 'https://unittest:8080'
fake_responses = {
'{0}/version'.format(prefix):
diff --git a/tests/unit/fake_api_client.py b/tests/unit/fake_api_client.py
index f908355..e838c68 100644
--- a/tests/unit/fake_api_client.py
+++ b/tests/unit/fake_api_client.py
@@ -27,7 +27,7 @@ def make_fake_api_client():
This returns most of the default cases correctly, but most arguments that
change behaviour will not work.
"""
- api_client = docker.APIClient()
+ api_client = docker.APIClient(base_url='https://unittest:8080')
mock_client = CopyReturnMagicMock(**{
'build.return_value': fake_api.FAKE_IMAGE_ID,
'commit.return_value': fake_api.post_fake_commit()[1],
@@ -56,6 +56,6 @@ def make_fake_client():
"""
Returns a Client with a fake APIClient.
"""
- client = docker.DockerClient()
+ client = docker.DockerClient(base_url='https://unittest:8080')
client.api = make_fake_api_client()
return client
diff --git a/tests/unit/models_containers_test.py b/tests/unit/models_containers_test.py
index 95295a9..62a29b3 100644
--- a/tests/unit/models_containers_test.py
+++ b/tests/unit/models_containers_test.py
@@ -394,7 +394,8 @@ class ContainerTest(unittest.TestCase):
container.exec_run("echo hello world", privileged=True, stream=True)
client.api.exec_create.assert_called_with(
FAKE_CONTAINER_ID, "echo hello world", stdout=True, stderr=True,
- stdin=False, tty=False, privileged=True, user='', environment=None
+ stdin=False, tty=False, privileged=True, user='', environment=None,
+ workdir=None
)
client.api.exec_start.assert_called_with(
FAKE_EXEC_ID, detach=False, tty=False, stream=True, socket=False
diff --git a/tests/unit/utils_test.py b/tests/unit/utils_test.py
index 2fa1d05..91b885e 100644
--- a/tests/unit/utils_test.py
+++ b/tests/unit/utils_test.py
@@ -45,7 +45,7 @@ class DecoratorsTest(unittest.TestCase):
def f(self, headers=None):
return headers
- client = APIClient()
+ client = APIClient(base_url='https://unittest:8080')
client._auth_configs = {}
g = update_headers(f)