forked from p15670423/monkey
Island: Make Machine.network_interfaces immutable
This commit is contained in:
parent
a4a4613a66
commit
b6e04074a4
|
@ -1,7 +1,7 @@
|
|||
from ipaddress import IPv4Interface
|
||||
from typing import Optional, Sequence
|
||||
from typing import MutableSequence, Optional, Sequence
|
||||
|
||||
from pydantic import Field, PositiveInt
|
||||
from pydantic import Field, PositiveInt, validator
|
||||
|
||||
from common import OperatingSystems
|
||||
|
||||
|
@ -15,3 +15,10 @@ class Machine(MutableBaseModel):
|
|||
operating_system: OperatingSystems
|
||||
operating_system_version: str
|
||||
hostname: str
|
||||
|
||||
@validator("network_interfaces", pre=True)
|
||||
def _make_sequence_immutable(cls, sequence: Sequence):
|
||||
if isinstance(sequence, MutableSequence):
|
||||
return tuple(sequence)
|
||||
|
||||
return sequence
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
import uuid
|
||||
from ipaddress import IPv4Interface
|
||||
from types import MappingProxyType
|
||||
from typing import MutableSequence
|
||||
|
||||
import pytest
|
||||
|
||||
|
@ -125,6 +126,12 @@ def test_network_interfaces_set_invalid_value():
|
|||
m.network_interfaces = [IPv4Interface("172.1.2.3/24"), None]
|
||||
|
||||
|
||||
def test_network_interfaces_sequence_is_immutable():
|
||||
m = Machine(**MACHINE_OBJECT_DICT)
|
||||
|
||||
assert not isinstance(m.network_interfaces, MutableSequence)
|
||||
|
||||
|
||||
def test_operating_system_set_valid_value():
|
||||
m = Machine(**MACHINE_OBJECT_DICT)
|
||||
|
||||
|
|
|
@ -210,6 +210,7 @@ _serialize_credentials # unused method (monkey/common/credentials/credentials:6
|
|||
# Models
|
||||
_make_simulation # unused method (monkey/monkey_island/cc/models/simulation.py:19
|
||||
operating_system_version
|
||||
_make_sequence_immutable
|
||||
|
||||
# TODO DELETE AFTER RESOURCE REFACTORING
|
||||
|
||||
|
|
Loading…
Reference in New Issue