feat(schema): add enodia.event.v1 EVE-style event envelope
This commit is contained in:
parent
8d929b50bd
commit
54bd8ff1f4
4 changed files with 111 additions and 0 deletions
47
tests/test_event_envelope.py
Normal file
47
tests/test_event_envelope.py
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
"""Compatibility tests for the enodia.event.v1 envelope."""
|
||||
import os
|
||||
import unittest
|
||||
from datetime import datetime
|
||||
|
||||
from enodia_sentinel import event, schemas
|
||||
|
||||
|
||||
class TestEventEnvelope(unittest.TestCase):
|
||||
def test_schema_id_is_stable(self):
|
||||
self.assertEqual(schemas.EVENT_V1, "enodia.event.v1")
|
||||
|
||||
def test_build_event_shape_and_types(self):
|
||||
env = event.build_event("alert", {"sid": 100010})
|
||||
self.assertEqual(env["schema"], schemas.EVENT_V1)
|
||||
self.assertEqual(env["event_type"], "alert")
|
||||
self.assertIsInstance(env["timestamp"], str)
|
||||
self.assertIsInstance(env["host"], str)
|
||||
# EVE-style: payload lives under a key named by event_type.
|
||||
self.assertEqual(env["alert"], {"sid": 100010})
|
||||
|
||||
def test_timestamp_defaults_to_iso8601(self):
|
||||
env = event.build_event("status", {"running": True})
|
||||
# Parses as ISO-8601 without raising.
|
||||
datetime.fromisoformat(env["timestamp"])
|
||||
|
||||
def test_host_defaults_to_nodename(self):
|
||||
env = event.build_event("status", {"running": True})
|
||||
self.assertEqual(env["host"], os.uname().nodename)
|
||||
|
||||
def test_overrides_are_respected(self):
|
||||
env = event.build_event(
|
||||
"incident", {"id": "x"}, host="host-a", timestamp="2026-07-10T00:00:00-07:00")
|
||||
self.assertEqual(env["host"], "host-a")
|
||||
self.assertEqual(env["timestamp"], "2026-07-10T00:00:00-07:00")
|
||||
|
||||
def test_unknown_event_type_rejected(self):
|
||||
with self.assertRaises(ValueError):
|
||||
event.build_event("nope", {})
|
||||
|
||||
def test_event_types_is_closed_set(self):
|
||||
self.assertEqual(event.EVENT_TYPES, frozenset({"alert", "incident", "status"}))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Loading…
Add table
Add a link
Reference in a new issue