test_modbus_schema.py 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. import unittest
  2. from pydantic import ValidationError
  3. from app.schemas.modbus import ModbusRawReadRequest
  4. class ModbusSchemaTest(unittest.TestCase):
  5. def test_device_type_defaults_to_modbus_tcp(self):
  6. request = ModbusRawReadRequest(
  7. ip="192.168.75.248",
  8. port=5512,
  9. slave_id=1,
  10. read={"function_code": 3, "address": 0, "quantity": 10},
  11. )
  12. self.assertEqual("ModbusTCP", request.device_type)
  13. def test_port_is_required(self):
  14. with self.assertRaises(ValidationError) as context:
  15. ModbusRawReadRequest(
  16. ip="192.168.75.248",
  17. read={"function_code": 3, "address": 0, "quantity": 10},
  18. )
  19. self.assertIn("port", str(context.exception))
  20. def test_slave_id_is_required(self):
  21. with self.assertRaises(ValidationError) as context:
  22. ModbusRawReadRequest(
  23. ip="192.168.75.248",
  24. port=5512,
  25. read={"function_code": 3, "address": 0, "quantity": 10},
  26. )
  27. self.assertIn("slave_id", str(context.exception))
  28. def test_ip_must_be_valid_address(self):
  29. with self.assertRaises(ValidationError) as context:
  30. ModbusRawReadRequest(
  31. ip="not-an-ip",
  32. port=5512,
  33. slave_id=1,
  34. read={"function_code": 3, "address": 0, "quantity": 10},
  35. )
  36. self.assertIn("ip must be a valid IP address", str(context.exception))
  37. if __name__ == "__main__":
  38. unittest.main()