Skip to content

Commit 84e9d11

Browse files
Add creation tests
1 parent 9a76413 commit 84e9d11

File tree

3 files changed

+62
-6
lines changed

3 files changed

+62
-6
lines changed

linode_api4/objects/linode.py

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1884,11 +1884,17 @@ def stats_for(self, dt):
18841884

18851885
def interface_create(
18861886
self,
1887-
firewall: Union[Firewall, int] = None,
1888-
default_route: Optional[LinodeInterfaceDefaultRouteOptions] = None,
1889-
public: Optional[LinodeInterfacePublicOptions] = None,
1890-
vlan: Optional[LinodeInterfaceVLANOptions] = None,
1891-
vpc: Optional[LinodeInterfaceVPCOptions] = None,
1887+
firewall: Optional[Union[Firewall, int]] = None,
1888+
default_route: Optional[
1889+
Union[Dict[str, Any], LinodeInterfaceDefaultRouteOptions]
1890+
] = None,
1891+
public: Optional[
1892+
Union[Dict[str, Any], LinodeInterfacePublicOptions]
1893+
] = None,
1894+
vlan: Optional[
1895+
Union[Dict[str, Any], LinodeInterfaceVLANOptions]
1896+
] = None,
1897+
vpc: Optional[Union[Dict[str, Any], LinodeInterfaceVPCOptions]] = None,
18921898
**kwargs,
18931899
):
18941900
params = {

test/unit/groups/linode_test.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ def test_create_with_placement_group(self):
107107

108108
def test_instance_create_with_interfaces_linode(self):
109109
"""
110-
Tests that a Linode can be created alongside LinodeInterfaces.
110+
Tests that a Linode can be created alongside multiple LinodeInterfaces.
111111
"""
112112

113113
interfaces = [

test/unit/objects/linode_test.py

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
from datetime import datetime
22
from test.unit.base import ClientBaseCase
3+
from test.unit.objects.linode_interface_test import (
4+
LinodeInterfaceTest,
5+
build_interface_options_public,
6+
build_interface_options_vlan,
7+
build_interface_options_vpc,
8+
)
39

410
from linode_api4 import InstanceDiskEncryptionType, NetworkInterface
511
from linode_api4.objects import (
@@ -578,6 +584,50 @@ def test_upgrade_interfaces_dry(self):
578584
assert result.interfaces[2].id == 789
579585
assert result.interfaces[2].vlan is not None
580586

587+
def test_create_interface_public(self):
588+
instance = Instance(self.client, 124)
589+
590+
iface = build_interface_options_public()
591+
592+
with self.mock_post("/linode/instances/124/interfaces/123") as m:
593+
result = instance.interface_create(**vars(iface))
594+
595+
assert m.call_data == {
596+
"firewall_id": iface.firewall_id,
597+
"default_route": iface.default_route._serialize(),
598+
"public": iface.public._serialize(),
599+
}
600+
601+
LinodeInterfaceTest.assert_linode_124_interface_123(result)
602+
603+
def test_create_interface_vpc(self):
604+
instance = Instance(self.client, 124)
605+
606+
iface = build_interface_options_vpc()
607+
608+
with self.mock_post("/linode/instances/124/interfaces/456") as m:
609+
result = instance.interface_create(**vars(iface))
610+
611+
assert m.call_data == {
612+
"firewall_id": iface.firewall_id,
613+
"default_route": iface.default_route._serialize(),
614+
"vpc": iface.vpc._serialize(),
615+
}
616+
617+
LinodeInterfaceTest.assert_linode_124_interface_456(result)
618+
619+
def test_create_interface_vlan(self):
620+
instance = Instance(self.client, 124)
621+
622+
iface = build_interface_options_vlan()
623+
624+
with self.mock_post("/linode/instances/124/interfaces/789") as m:
625+
result = instance.interface_create(**vars(iface))
626+
627+
assert m.call_data == {"vlan": iface.vlan._serialize()}
628+
629+
LinodeInterfaceTest.assert_linode_124_interface_789(result)
630+
581631

582632
class DiskTest(ClientBaseCase):
583633
"""

0 commit comments

Comments
 (0)