summaryrefslogtreecommitdiff
path: root/tests/unit/swarm_test.py
blob: 438538028127b8f7dedf4ea9a63123d7e8055dcc (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
# -*- coding: utf-8 -*-

import json

from . import fake_api
from ..helpers import requires_api_version
from .api_test import BaseAPIClientTest, url_prefix, fake_request


class SwarmTest(BaseAPIClientTest):
    @requires_api_version('1.24')
    def test_node_update(self):
        node_spec = {
            'Availability': 'active',
            'Name': 'node-name',
            'Role': 'manager',
            'Labels': {'foo': 'bar'}
        }

        self.client.update_node(
            node_id=fake_api.FAKE_NODE_ID, version=1, node_spec=node_spec
        )
        args = fake_request.call_args
        assert args[0][1] == (
            url_prefix + 'nodes/24ifsmvkjbyhk/update?version=1'
        )
        assert json.loads(args[1]['data']) == node_spec
        assert args[1]['headers']['Content-Type'] == 'application/json'

    @requires_api_version('1.24')
    def test_join_swarm(self):
        remote_addr = ['1.2.3.4:2377']
        listen_addr = '2.3.4.5:2377'
        join_token = 'A_BEAUTIFUL_JOIN_TOKEN'

        data = {
            'RemoteAddrs': remote_addr,
            'ListenAddr': listen_addr,
            'JoinToken': join_token
        }

        self.client.join_swarm(
            remote_addrs=remote_addr,
            listen_addr=listen_addr,
            join_token=join_token
        )

        args = fake_request.call_args

        assert (args[0][1] == url_prefix + 'swarm/join')
        assert (json.loads(args[1]['data']) == data)
        assert (args[1]['headers']['Content-Type'] == 'application/json')

    @requires_api_version('1.24')
    def test_join_swarm_no_listen_address_takes_default(self):
        remote_addr = ['1.2.3.4:2377']
        join_token = 'A_BEAUTIFUL_JOIN_TOKEN'

        data = {
            'RemoteAddrs': remote_addr,
            'ListenAddr': '0.0.0.0:2377',
            'JoinToken': join_token
        }

        self.client.join_swarm(remote_addrs=remote_addr, join_token=join_token)

        args = fake_request.call_args

        assert (args[0][1] == url_prefix + 'swarm/join')
        assert (json.loads(args[1]['data']) == data)
        assert (args[1]['headers']['Content-Type'] == 'application/json')