test_printer_schema.py 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. """Serial-number normalization on the printer schema (#1465).
  2. Bambu serial numbers are uppercase alphanumeric and the MQTT report topic
  3. ``device/<serial>/report`` is case-sensitive. A serial entered in the wrong
  4. case connects and subscribes without error but never receives a message, so
  5. the schema normalizes it on input.
  6. """
  7. import pytest
  8. from pydantic import ValidationError
  9. from backend.app.schemas.printer import PrinterCreate
  10. def _make(serial: str) -> PrinterCreate:
  11. return PrinterCreate(
  12. name="Test Printer",
  13. serial_number=serial,
  14. ip_address="192.168.1.50",
  15. access_code="12345678",
  16. )
  17. def test_serial_number_uppercased():
  18. assert _make("01p00a3b1234567").serial_number == "01P00A3B1234567"
  19. def test_serial_number_whitespace_stripped():
  20. assert _make(" 01P00A3B1234567 ").serial_number == "01P00A3B1234567"
  21. def test_serial_number_stripped_and_uppercased():
  22. assert _make(" 31b8c0ca1234567 ").serial_number == "31B8C0CA1234567"
  23. def test_already_normalized_serial_unchanged():
  24. assert _make("31B8C0CA1234567").serial_number == "31B8C0CA1234567"
  25. def test_blank_serial_number_rejected():
  26. with pytest.raises(ValidationError):
  27. _make(" ")