69 lines
2.4 KiB
Python
69 lines
2.4 KiB
Python
from unittest.mock import patch
|
|
|
|
import pytest
|
|
|
|
from devices.models.endpoint_device import EndpointModel
|
|
from inputs.enums import LogInputType
|
|
from inputs.models import LogInput, LogInputArmaIF, LogInputEndpoint
|
|
from inputs.serializers import InputSerializer
|
|
from inputs.enums import SensorType, SensorScheme
|
|
from devices.models.sensor import ArmaSensor
|
|
|
|
TEST_PORTS = (
|
|
(5000, False),
|
|
(5001, False),
|
|
(5002, True),
|
|
)
|
|
|
|
SENSOR_DATA = {
|
|
"name": "SENSOR_TEST",
|
|
"ip": "1.1.1.1",
|
|
"port": 5000,
|
|
"type": 'firewall'
|
|
}
|
|
|
|
|
|
@pytest.mark.django_db
|
|
@patch('django.conf.settings.LOGSTASH_CONFIG_DIR', '/tmp')
|
|
class TestLogInputSerializer:
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def setup_test(self) -> None:
|
|
test_sensor = ArmaSensor.objects.create(**SENSOR_DATA)
|
|
test_input = LogInput.objects.create(label='test_input', type=LogInputType.ARMAIF)
|
|
LogInputArmaIF.objects.create(input=test_input, port=5000, sensor=test_sensor)
|
|
|
|
endpoint = EndpointModel.objects.create(
|
|
name='Test endpoint to copy',
|
|
description='Description',
|
|
ip='1.2.3.4',
|
|
port=5555,
|
|
integrity_control_enabled=False,
|
|
whitelist_enabled=True,
|
|
device_control_enabled=True,
|
|
prohibit_cd_access=True,
|
|
usb_control_enabled=True
|
|
)
|
|
log_input = LogInput.objects.create(label=endpoint.name, type=LogInputType.ENDPOINT, can_delete=False)
|
|
LogInputEndpoint.objects.create(endpoint=endpoint, input=log_input, port=5001)
|
|
|
|
@pytest.mark.unit
|
|
@pytest.mark.parametrize('port, is_valid', TEST_PORTS)
|
|
def test_log_input_armaif_serializer(self, port: int, is_valid: bool):
|
|
data = {'port': port, 'type': 'armaif', 'label': 'label'}
|
|
serializer = InputSerializer(data=data)
|
|
|
|
assert serializer.is_valid() == is_valid
|
|
if not is_valid:
|
|
assert 'port' in serializer.errors
|
|
assert 'This port is already in use' in serializer.errors['port']
|
|
|
|
@pytest.mark.unit
|
|
@pytest.mark.parametrize('port, is_valid', TEST_PORTS)
|
|
def test_log_input_endpoint_form(self, port: int, is_valid: bool):
|
|
data = {'port': port, 'type': 'endpoint', 'label': 'label'}
|
|
serializer = InputSerializer(data=data)
|
|
assert serializer.is_valid() == is_valid
|
|
if not is_valid:
|
|
assert 'port' in serializer.errors
|
|
assert 'This port is already in use' in serializer.errors['port']
|