79 lines
3.9 KiB
Python
79 lines
3.9 KiB
Python
from unittest.mock import patch
|
|
|
|
import pytest
|
|
|
|
from incident.models import Incident
|
|
from incident_export.enums import ReceiverType, SysLogSendProtocol
|
|
from incident_export.models import SyslogReceiver, OpcuaReceiver, Receiver
|
|
from incident_export.tasks import export_incident_syslog, export_incident_opcua
|
|
|
|
|
|
@pytest.mark.django_db
|
|
class TestApi(object):
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def testing_incident_export_api(self, django_user_model):
|
|
for i in range(0, 5):
|
|
syslog_receiver_instance = Receiver.objects.create(type=ReceiverType.SYSLOG, export_status=True)
|
|
SyslogReceiver.objects.create(receiver=syslog_receiver_instance,
|
|
protocol=SysLogSendProtocol.UDP,
|
|
host=f'1.0.0.{i}',
|
|
port='514')
|
|
opcua_receiver_instance = Receiver.objects.create(type=ReceiverType.OPCUA,
|
|
export_status=True)
|
|
OpcuaReceiver.objects.create(receiver=opcua_receiver_instance,
|
|
host=f'127.0.0.{i}',
|
|
port='123',
|
|
node_number='50')
|
|
|
|
@pytest.mark.unit
|
|
def test_syslog_incident_export_api(self):
|
|
""" Test for checking if API executes correct amount of time for syslog receivers
|
|
PASSED: if API executes correct amount of times, that equals enabled syslog receivers
|
|
FAILED: Otherwise
|
|
"""
|
|
with patch('logging.Logger.info') as mock_info:
|
|
inc = Incident.objects.create(title='Incident',
|
|
importance=10,
|
|
event_count=10,
|
|
events='')
|
|
export_incident_syslog(inc)
|
|
assert len(Receiver.objects.filter(export_status=True,
|
|
type=ReceiverType.SYSLOG)) == mock_info.call_count
|
|
|
|
@pytest.mark.unit
|
|
def test_opcua_incident_export_api(self):
|
|
""" Test for checking if API executes correct amount of time for OPCUA receivers
|
|
PASSED: if API executes correct amount of times, that equals enabled OPCUA receivers
|
|
FAILED: Otherwise
|
|
"""
|
|
with patch('logging.Logger.info') as mock_info:
|
|
inc = Incident.objects.create(title='Incident',
|
|
importance=10,
|
|
event_count=10,
|
|
events='')
|
|
export_incident_opcua(inc)
|
|
assert len(Receiver.objects.filter(export_status=True,
|
|
type=ReceiverType.OPCUA)) == mock_info.call_count
|
|
|
|
@pytest.mark.unit
|
|
def test_incident_export_api_after_disable(self):
|
|
""" Test for checking if API doesnt trigger on disabled receivers
|
|
PASSED: if API executes different amount of times before and after disabling receiver
|
|
FAILED: otherwise
|
|
"""
|
|
with patch('logging.Logger.info') as mock_info:
|
|
inc = Incident.objects.create(title='Incident', importance=10, event_count=10, events='')
|
|
export_incident_syslog(inc)
|
|
# Get mock calls before any actions with receivers
|
|
mocks_before = mock_info.call_count
|
|
# Disabling receiver
|
|
syslog_receiver = SyslogReceiver.objects.get(host='1.0.0.0').receiver
|
|
syslog_receiver.export_status = False
|
|
syslog_receiver.save()
|
|
inc2 = Incident.objects.create(title='Incident', importance=10, event_count=10, events='')
|
|
export_incident_syslog(inc2)
|
|
# Get mock calls after second execution after disabling
|
|
mocks_after = mock_info.call_count
|
|
# Check if api executed different amount of times
|
|
assert mocks_before != mocks_after - mocks_before
|