Skip to content

Commit c922bce

Browse files
committed
Add first batch of unit tests for the NetworkClient
1 parent 3d0d9a2 commit c922bce

2 files changed

Lines changed: 79 additions & 4 deletions

File tree

tests/unit/networks/conftest.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,6 @@ def two_networks_response():
6060
"type": "vswitch",
6161
"ip_range": "10.0.3.0/24",
6262
"network_zone": "eu-central",
63-
"vswitch_id": 333,
6463
"gateway": "10.0.3.1"
6564
}
6665
],
@@ -80,7 +79,7 @@ def two_networks_response():
8079
},
8180
{
8281
"id": 2,
83-
"name": "mynother-net",
82+
"name": "myanothernet",
8483
"created": "2016-01-30T23:50:11+00:00",
8584
"ip_range": "12.0.0.0/8",
8685
"subnets": [
@@ -129,7 +128,6 @@ def one_network_response():
129128
"type": "vswitch",
130129
"ip_range": "10.0.3.0/24",
131130
"network_zone": "eu-central",
132-
"vswitch_id": 333,
133131
"gateway": "10.0.3.1"
134132
}
135133
],

tests/unit/networks/test_client.py

Lines changed: 78 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import mock
44

55
from hcloud.actions.client import BoundAction
6-
from hcloud.networks.client import BoundNetwork
6+
from hcloud.networks.client import BoundNetwork, NetworksClient
77
from hcloud.networks.domain import NetworkSubnet, NetworkRoute
88
from hcloud.servers.client import BoundServer
99

@@ -118,3 +118,80 @@ def test_delete_route(self, hetzner_client, bound_network, generic_action):
118118

119119
assert action.id == 1
120120
assert action.progress == 0
121+
122+
123+
class TestNetworksClient(object):
124+
125+
@pytest.fixture()
126+
def networks_client(self):
127+
return NetworksClient(client=mock.MagicMock())
128+
129+
def test_get_by_id(self, networks_client, network_response):
130+
networks_client._client.request.return_value = network_response
131+
bound_network = networks_client.get_by_id(1)
132+
networks_client._client.request.assert_called_with(url="/networks/1", method="GET")
133+
assert bound_network._client is networks_client
134+
assert bound_network.id == 1
135+
assert bound_network.name == "mynet"
136+
137+
@pytest.mark.parametrize(
138+
"params",
139+
[
140+
{'label_selector': "label1", 'page': 1, 'per_page': 10},
141+
{}
142+
]
143+
)
144+
def test_get_list(self, networks_client, two_networks_response, params):
145+
networks_client._client.request.return_value = two_networks_response
146+
result = networks_client.get_list(**params)
147+
networks_client._client.request.assert_called_with(url="/networks", method="GET", params=params)
148+
149+
bound_networks = result.networks
150+
assert result.meta is None
151+
152+
assert len(bound_networks) == 2
153+
154+
bound_network1 = bound_networks[0]
155+
bound_network2 = bound_networks[1]
156+
157+
assert bound_network1._client is networks_client
158+
assert bound_network1.id == 1
159+
assert bound_network1.name == "mynet"
160+
161+
assert bound_network2._client is networks_client
162+
assert bound_network2.id == 2
163+
assert bound_network2.name == "myanothernet"
164+
165+
@pytest.mark.parametrize("params", [{'label_selector': "label1"}])
166+
def test_get_all(self, networks_client, two_networks_response, params):
167+
networks_client._client.request.return_value = two_networks_response
168+
bound_networks = networks_client.get_all(**params)
169+
170+
params.update({'page': 1, 'per_page': 50})
171+
172+
networks_client._client.request.assert_called_with(url="/networks", method="GET", params=params)
173+
174+
assert len(bound_networks) == 2
175+
176+
bound_network1 = bound_networks[0]
177+
bound_network2 = bound_networks[1]
178+
179+
assert bound_network1._client is networks_client
180+
assert bound_network1.id == 1
181+
assert bound_network1.name == "mynet"
182+
183+
assert bound_network2._client is networks_client
184+
assert bound_network2.id == 2
185+
assert bound_network2.name == "myanothernet"
186+
187+
def test_get_by_name(self, networks_client, one_network_response):
188+
networks_client._client.request.return_value = one_network_response
189+
bound_network = networks_client.get_by_name("mynet")
190+
191+
params = {'name': "mynet"}
192+
193+
networks_client._client.request.assert_called_with(url="/networks", method="GET", params=params)
194+
195+
assert bound_network._client is networks_client
196+
assert bound_network.id == 1
197+
assert bound_network.name == "mynet"

0 commit comments

Comments
 (0)