summaryrefslogtreecommitdiff
path: root/tests/unit/api_exec_test.py
blob: a9d2dd5b659220a87950ced7346f31dee7f31a60 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
import json

from . import fake_api
from .api_test import (
    BaseAPIClientTest, url_prefix, fake_request, DEFAULT_TIMEOUT_SECONDS,
)


class ExecTest(BaseAPIClientTest):
    def test_exec_create(self):
        self.client.exec_create(fake_api.FAKE_CONTAINER_ID, ['ls', '-1'])

        args = fake_request.call_args
        assert 'POST' == args[0][0], url_prefix + 'containers/{0}/exec'.format(
            fake_api.FAKE_CONTAINER_ID
        )

        assert json.loads(args[1]['data']) == {
            'Tty': False,
            'AttachStdout': True,
            'Container': fake_api.FAKE_CONTAINER_ID,
            'Cmd': ['ls', '-1'],
            'Privileged': False,
            'AttachStdin': False,
            'AttachStderr': True,
            'User': ''
        }

        assert args[1]['headers'] == {'Content-Type': 'application/json'}

    def test_exec_start(self):
        self.client.exec_start(fake_api.FAKE_EXEC_ID)

        args = fake_request.call_args
        assert args[0][1] == url_prefix + 'exec/{0}/start'.format(
            fake_api.FAKE_EXEC_ID
        )

        assert json.loads(args[1]['data']) == {
            'Tty': False,
            'Detach': False,
        }

        assert args[1]['headers'] == {
            'Content-Type': 'application/json',
            'Connection': 'Upgrade',
            'Upgrade': 'tcp'
        }

    def test_exec_start_detached(self):
        self.client.exec_start(fake_api.FAKE_EXEC_ID, detach=True)

        args = fake_request.call_args
        assert args[0][1] == url_prefix + 'exec/{0}/start'.format(
            fake_api.FAKE_EXEC_ID
        )

        assert json.loads(args[1]['data']) == {
            'Tty': False,
            'Detach': True
        }

        assert args[1]['headers'] == {
            'Content-Type': 'application/json'
        }

    def test_exec_inspect(self):
        self.client.exec_inspect(fake_api.FAKE_EXEC_ID)

        args = fake_request.call_args
        assert args[0][1] == url_prefix + 'exec/{0}/json'.format(
            fake_api.FAKE_EXEC_ID
        )

    def test_exec_resize(self):
        self.client.exec_resize(fake_api.FAKE_EXEC_ID, height=20, width=60)

        fake_request.assert_called_with(
            'POST',
            url_prefix + 'exec/{0}/resize'.format(fake_api.FAKE_EXEC_ID),
            params={'h': 20, 'w': 60},
            timeout=DEFAULT_TIMEOUT_SECONDS
        )