diff --git a/tests/unit/conftest.py b/tests/unit/conftest.py new file mode 100644 index 000000000..8a0d8cfe3 --- /dev/null +++ b/tests/unit/conftest.py @@ -0,0 +1,29 @@ +import pytest +from unittest.mock import Mock +from pytest_splunk_addon.standard_lib.addon_parser.eventtype_parser import ( + EventTypeParser, +) + + +@pytest.fixture() +def parser(): + class FakeConfigurationFile: + def __init__(self): + self.headers = [] + self.sects = { + "fake_splunkd": { + "name": "fake_splunkd", + "options": "index=_internal sourcetype=splunkd", + }, + "fake_for_tags_positive": { + "name": "fake_for_tags_positive", + "options": "sourcetype=splunkd", + }, + } + self.errors = [] + + FakeApp = Mock() + FakeApp.eventtypes = FakeConfigurationFile() + FakeApp.eventtypes_conf.return_value = FakeConfigurationFile() + + return EventTypeParser("fake_path", FakeApp) diff --git a/tests/unit/test_eventtype_parser.py b/tests/unit/test_eventtype_parser.py new file mode 100644 index 000000000..d76788f91 --- /dev/null +++ b/tests/unit/test_eventtype_parser.py @@ -0,0 +1,26 @@ +def test_eventtypes_can_be_parsed_and_extracted(parser): + assert hasattr( + parser.eventtypes, "sects" + ), "eventypes can not be called or does have sects attribute" + + +def test_eventtypes_can_be_parsed_and_returned(parser): + expected_outputs = [ + {"stanza": x} for x in ["fake_splunkd", "fake_for_tags_positive"] + ] + for i, event in enumerate(parser.get_eventtypes()): + assert event == expected_outputs[i], "expeceted event {} not found".format( + expected_outputs[i] + ) + + +def test_get_eventtypes_calls_app_get_config(parser): + for _ in parser.get_eventtypes(): + pass + parser.app.eventtypes_conf.assert_called_once() + + +def test_no_eventtype_config_file(parser): + parser.app.eventtypes_conf.side_effect = OSError + output = [eventtype for eventtype in parser.get_eventtypes() if eventtype] + assert output == [], "eventtypes created when no config file exists"