diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/integration/api_container_test.py | 33 | ||||
-rw-r--r-- | tests/integration/api_exec_test.py | 12 | ||||
-rw-r--r-- | tests/integration/models_services_test.py | 1 | ||||
-rw-r--r-- | tests/unit/api_container_test.py | 6 | ||||
-rw-r--r-- | tests/unit/api_test.py | 14 | ||||
-rw-r--r-- | tests/unit/client_test.py | 24 | ||||
-rw-r--r-- | tests/unit/fake_api.py | 4 | ||||
-rw-r--r-- | tests/unit/fake_api_client.py | 4 | ||||
-rw-r--r-- | tests/unit/models_containers_test.py | 3 | ||||
-rw-r--r-- | tests/unit/utils_test.py | 2 |
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) |