test_datasource_frontend_contract.py 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. from pathlib import Path
  2. LISTING = Path("frontend/src/views/dataGovernance/dataSource/index.vue")
  3. EDITOR = Path(
  4. "frontend/src/views/dataGovernance/dataSource/components/edit.vue"
  5. )
  6. API = Path("frontend/src/api/dataOrigin.js")
  7. POOL_PAGE = Path(
  8. "frontend/src/views/dataFactory/connectionPool/index.vue"
  9. )
  10. ROUTES = Path("frontend/src/router/routes.js")
  11. def test_datasource_ui_does_not_render_or_replay_stored_credentials():
  12. listing = LISTING.read_text(encoding="utf-8")
  13. editor = EDITOR.read_text(encoding="utf-8")
  14. assert "value: 'username'" not in listing
  15. assert "value: 'param'" not in listing
  16. assert "credential_configured" in listing
  17. assert "Object.assign(this.formValues, this.itemData)" not in editor
  18. assert "datasourceParse" not in editor
  19. assert "key: 'param'" not in editor
  20. assert "value: 'postgresql'" in editor
  21. assert "value: 'mysql'" in editor
  22. def test_datasource_ui_uses_uid_and_omits_blank_credentials():
  23. listing = LISTING.read_text(encoding="utf-8")
  24. editor = EDITOR.read_text(encoding="utf-8")
  25. api = API.read_text(encoding="utf-8")
  26. assert "handleDelete(item.uid)" in listing
  27. assert "data.uid = this.itemData.uid" in listing
  28. assert "delete payload.username" in editor
  29. assert "delete payload.password" in editor
  30. assert "datasourceParse" not in api
  31. def test_datasource_pool_management_is_admin_only_and_secret_free():
  32. api = API.read_text(encoding="utf-8")
  33. page = POOL_PAGE.read_text(encoding="utf-8")
  34. routes = ROUTES.read_text(encoding="utf-8")
  35. assert "http.get('/datasource/pools')" in api
  36. assert "/pool/invalidate" in api
  37. assert "reason: 'admin_reset'" in api
  38. assert "component: 'dataFactory/connectionPool'" in routes
  39. assert "permissions: ['datasources:pools:manage']" in routes
  40. assert "首次业务访问时创建" in page
  41. assert "安全重置连接池" in page
  42. assert "item.password" not in page
  43. assert "item.username" not in page