test_workflow_repository.py 1.2 KB

12345678910111213141516171819202122232425262728293031323334
  1. def test_workflow_hash_is_canonical_and_credentials_are_redacted():
  2. from app.core.data_flow.workflow_repository import safe_workflow_snapshot, workflow_hash
  3. first = {"nodes": [{"id": "1", "credentials": {"postgres": {"id": "secret"}}}], "name": "flow", "updatedAt": "today"}
  4. second = {"name": "flow", "nodes": [{"credentials": {"postgres": {"id": "changed"}}, "id": "1"}], "updatedAt": "tomorrow"}
  5. assert workflow_hash(first) == workflow_hash(second)
  6. snapshot = safe_workflow_snapshot(first)
  7. assert snapshot["nodes"][0]["credentials"] == "[redacted]"
  8. assert "updatedAt" not in snapshot
  9. def test_numeric_dataflow_ids_are_rejected():
  10. import pytest
  11. from app.core.data_flow.workflow_repository import validate_dataflow_uid
  12. with pytest.raises(ValueError):
  13. validate_dataflow_uid("123")
  14. def test_legacy_n8n_repository_populates_engine_neutral_columns():
  15. from pathlib import Path
  16. repository = (
  17. Path(__file__).resolve().parents[1]
  18. / "app"
  19. / "core"
  20. / "data_flow"
  21. / "workflow_repository.py"
  22. ).read_text(encoding="utf-8")
  23. assert "engine_type" in repository
  24. assert "engine_definition_id" in repository
  25. assert '"n8n"' in repository