test_modbus_schema.py 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839
  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. read={"function_code": 3, "address": 0, "quantity": 10},
  10. )
  11. self.assertEqual("ModbusTCP", request.device_type)
  12. def test_port_is_required(self):
  13. with self.assertRaises(ValidationError) as context:
  14. ModbusRawReadRequest(
  15. ip="192.168.75.248",
  16. read={"function_code": 3, "address": 0, "quantity": 10},
  17. )
  18. self.assertIn("port", str(context.exception))
  19. def test_ip_must_be_valid_address(self):
  20. with self.assertRaises(ValidationError) as context:
  21. ModbusRawReadRequest(
  22. ip="not-an-ip",
  23. port=5512,
  24. read={"function_code": 3, "address": 0, "quantity": 10},
  25. )
  26. self.assertIn("ip must be a valid IP address", str(context.exception))
  27. if __name__ == "__main__":
  28. unittest.main()