Skip to content

Commit 1b527fc

Browse files
LKaemmerlingLD250
authored andcommitted
Add unit tests for the new server actions
1 parent 1b42981 commit 1b527fc

3 files changed

Lines changed: 150 additions & 1 deletion

File tree

hcloud/servers/client.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -805,7 +805,7 @@ def attach_to_network(self, server, network, ip=None, alias_ips=None):
805805
if ip is not None:
806806
data.update({"ip": ip})
807807
if alias_ips is not None:
808-
data.update({"alias_ips": ip})
808+
data.update({"alias_ips": alias_ips})
809809
response = self._client.request(
810810
url="/servers/{server_id}/actions/attach_to_network".format(server_id=server.id), method="POST",
811811
json=data)

tests/unit/servers/conftest.py

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -902,3 +902,87 @@ def response_get_actions():
902902
}
903903
]
904904
}
905+
906+
907+
@pytest.fixture()
908+
def response_attach_to_network():
909+
return {
910+
"action": {
911+
"id": 1,
912+
"command": "attach_to_network",
913+
"status": "running",
914+
"progress": 0,
915+
"started": "2016-01-30T23:50:00+00:00",
916+
"finished": None,
917+
"resources": [
918+
{
919+
"id": 42,
920+
"type": "server"
921+
},
922+
{
923+
"id": 4711,
924+
"type": "network"
925+
}
926+
],
927+
"error": {
928+
"code": "action_failed",
929+
"message": "Action failed"
930+
}
931+
}
932+
}
933+
934+
935+
@pytest.fixture()
936+
def response_detach_from_network():
937+
return {
938+
"action": {
939+
"id": 1,
940+
"command": "detach_from_network",
941+
"status": "running",
942+
"progress": 0,
943+
"started": "2016-01-30T23:50:00+00:00",
944+
"finished": None,
945+
"resources": [
946+
{
947+
"id": 42,
948+
"type": "server"
949+
},
950+
{
951+
"id": 4711,
952+
"type": "network"
953+
}
954+
],
955+
"error": {
956+
"code": "action_failed",
957+
"message": "Action failed"
958+
}
959+
}
960+
}
961+
962+
963+
@pytest.fixture()
964+
def response_change_alias_ips():
965+
return {
966+
"action": {
967+
"id": 1,
968+
"command": "change_alias_ips",
969+
"status": "running",
970+
"progress": 0,
971+
"started": "2016-01-30T23:50:00+00:00",
972+
"finished": None,
973+
"resources": [
974+
{
975+
"id": 42,
976+
"type": "server"
977+
},
978+
{
979+
"id": 4711,
980+
"type": "network"
981+
}
982+
],
983+
"error": {
984+
"code": "action_failed",
985+
"message": "Action failed"
986+
}
987+
}
988+
}

tests/unit/servers/test_client.py

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717
from hcloud.actions.client import BoundAction
1818
from hcloud.server_types.client import BoundServerType
1919
from hcloud.server_types.domain import ServerType
20+
from hcloud.networks.domain import Network
21+
from hcloud.networks.client import BoundNetwork
2022

2123

2224
class TestBoundServer(object):
@@ -293,6 +295,36 @@ def test_request_console(self, hetzner_client, bound_server, response_server_req
293295
assert response.wss_url == "wss://console.hetzner.cloud/?server_id=1&token=3db32d15-af2f-459c-8bf8-dee1fd05f49c"
294296
assert response.password == "9MQaTg2VAGI0FIpc10k3UpRXcHj2wQ6x"
295297

298+
@pytest.mark.parametrize("network", [Network(id=4711), BoundNetwork(mock.MagicMock(), dict(id=4711))])
299+
def test_attach_to_network(self, hetzner_client, bound_server, network, response_attach_to_network):
300+
hetzner_client.request.return_value = response_attach_to_network
301+
action = bound_server.attach_to_network(network, "10.0.1.1", ["10.0.1.2", "10.0.1.3"])
302+
hetzner_client.request.assert_called_with(url="/servers/14/actions/attach_to_network", method="POST", json={"network": 4711, "ip": "10.0.1.1", "alias_ips": ["10.0.1.2", "10.0.1.3"]})
303+
304+
assert action.id == 1
305+
assert action.progress == 0
306+
assert action.command == "attach_to_network"
307+
308+
@pytest.mark.parametrize("network", [Network(id=4711), BoundNetwork(mock.MagicMock(), dict(id=4711))])
309+
def test_detach_from_network(self, hetzner_client, bound_server, network, response_detach_from_network):
310+
hetzner_client.request.return_value = response_detach_from_network
311+
action = bound_server.detach_from_network(network)
312+
hetzner_client.request.assert_called_with(url="/servers/14/actions/detach_from_network", method="POST", json={"network": 4711})
313+
314+
assert action.id == 1
315+
assert action.progress == 0
316+
assert action.command == "detach_from_network"
317+
318+
@pytest.mark.parametrize("network", [Network(id=4711), BoundNetwork(mock.MagicMock(), dict(id=4711))])
319+
def test_change_alias_ips(self, hetzner_client, bound_server, network, response_change_alias_ips):
320+
hetzner_client.request.return_value = response_change_alias_ips
321+
action = bound_server.change_alias_ips(network, ["10.0.1.2", "10.0.1.3"])
322+
hetzner_client.request.assert_called_with(url="/servers/14/actions/change_alias_ips", method="POST", json={"network": 4711, "alias_ips": ["10.0.1.2", "10.0.1.3"]})
323+
324+
assert action.id == 1
325+
assert action.progress == 0
326+
assert action.command == "change_alias_ips"
327+
296328

297329
class TestServersClient(object):
298330

@@ -691,3 +723,36 @@ def test_request_console(self, servers_client, server, response_server_request_c
691723
assert response.action.progress == 0
692724
assert response.wss_url == "wss://console.hetzner.cloud/?server_id=1&token=3db32d15-af2f-459c-8bf8-dee1fd05f49c"
693725
assert response.password == "9MQaTg2VAGI0FIpc10k3UpRXcHj2wQ6x"
726+
727+
@pytest.mark.parametrize("server", [Server(id=1), BoundServer(mock.MagicMock(), dict(id=1))])
728+
@pytest.mark.parametrize("network", [Network(id=4711), BoundNetwork(mock.MagicMock(), dict(id=4711))])
729+
def test_attach_to_network(self, servers_client, server, network, response_attach_to_network):
730+
servers_client._client.request.return_value = response_attach_to_network
731+
action = servers_client.attach_to_network(server, network, "10.0.1.1", ["10.0.1.2", "10.0.1.3"])
732+
servers_client._client.request.assert_called_with(url="/servers/1/actions/attach_to_network", method="POST", json={"network": 4711, "ip": "10.0.1.1", "alias_ips": ["10.0.1.2", "10.0.1.3"]})
733+
734+
assert action.id == 1
735+
assert action.progress == 0
736+
assert action.command == "attach_to_network"
737+
738+
@pytest.mark.parametrize("server", [Server(id=1), BoundServer(mock.MagicMock(), dict(id=1))])
739+
@pytest.mark.parametrize("network", [Network(id=4711), BoundNetwork(mock.MagicMock(), dict(id=4711))])
740+
def test_detach_from_network(self, servers_client, server, network, response_detach_from_network):
741+
servers_client._client.request.return_value = response_detach_from_network
742+
action = servers_client.detach_from_network(server, network)
743+
servers_client._client.request.assert_called_with(url="/servers/1/actions/detach_from_network", method="POST", json={"network": 4711})
744+
745+
assert action.id == 1
746+
assert action.progress == 0
747+
assert action.command == "detach_from_network"
748+
749+
@pytest.mark.parametrize("server", [Server(id=1), BoundServer(mock.MagicMock(), dict(id=1))])
750+
@pytest.mark.parametrize("network", [Network(id=4711), BoundNetwork(mock.MagicMock(), dict(id=4711))])
751+
def test_change_alias_ips(self, servers_client, server, network, response_change_alias_ips):
752+
servers_client._client.request.return_value = response_change_alias_ips
753+
action = servers_client.change_alias_ips(server, network, ["10.0.1.2", "10.0.1.3"])
754+
servers_client._client.request.assert_called_with(url="/servers/1/actions/change_alias_ips", method="POST", json={"network": 4711, "alias_ips": ["10.0.1.2", "10.0.1.3"]})
755+
756+
assert action.id == 1
757+
assert action.progress == 0
758+
assert action.command == "change_alias_ips"

0 commit comments

Comments
 (0)