test_source_upload.py 1.2 KB

1234567891011121314151617181920212223242526272829303132
  1. import json
  2. import pytest
  3. from ontorefactor_governance.service import GovernanceError
  4. from ontorefactor_governance.source_upload import MAX_SOURCE_BYTES, prepare_uploaded_source
  5. def test_auto_detects_openapi_yaml_and_inventory_json():
  6. openapi = prepare_uploaded_source(
  7. "contract.yaml",
  8. b"openapi: 3.0.3\npaths:\n /health:\n get:\n operationId: health\n",
  9. )
  10. assert openapi["source_type"] == "openapi"
  11. assert openapi["detected"]["apis"] == 1
  12. inventory_content = json.dumps({"tables": [{"schema": "crm", "name": "customer", "columns": []}]})
  13. inventory = prepare_uploaded_source("assets.json", inventory_content.encode())
  14. assert inventory["source_type"] == "inventory"
  15. assert inventory["detected"]["tables"] == 1
  16. def test_inventory_yaml_and_upload_limits_are_supported():
  17. inventory = prepare_uploaded_source(
  18. "assets.yml",
  19. b"tables:\n - schema: crm\n name: customer\n columns: []\napis: []\nschemas: []\n",
  20. )
  21. assert inventory["source_type"] == "inventory"
  22. with pytest.raises(GovernanceError) as exc:
  23. prepare_uploaded_source("too-large.sql", b"x" * (MAX_SOURCE_BYTES + 1), "ddl")
  24. assert exc.value.code == "SOURCE_TOO_LARGE"