|
3 | 3 | import mock |
4 | 4 |
|
5 | 5 | from hcloud.actions.client import BoundAction |
6 | | -from hcloud.networks.client import BoundNetwork |
| 6 | +from hcloud.networks.client import BoundNetwork, NetworksClient |
7 | 7 | from hcloud.networks.domain import NetworkSubnet, NetworkRoute |
8 | 8 | from hcloud.servers.client import BoundServer |
9 | 9 |
|
@@ -118,3 +118,80 @@ def test_delete_route(self, hetzner_client, bound_network, generic_action): |
118 | 118 |
|
119 | 119 | assert action.id == 1 |
120 | 120 | 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