mirror of https://github.com/microsoft/autogen.git
38 lines
1.4 KiB
Python
38 lines
1.4 KiB
Python
# api/routes/validation.py
|
|
|
|
from fastapi import APIRouter
|
|
|
|
from ...validation.component_test_service import ComponentTestRequest, ComponentTestResult, ComponentTestService
|
|
from ...validation.validation_service import ValidationError, ValidationRequest, ValidationResponse, ValidationService
|
|
|
|
router = APIRouter()
|
|
|
|
|
|
@router.post("/")
|
|
async def validate_component(request: ValidationRequest) -> ValidationResponse:
|
|
"""Validate a component configuration"""
|
|
try:
|
|
return ValidationService.validate(request.component)
|
|
except Exception as e:
|
|
return ValidationResponse(
|
|
is_valid=False, errors=[ValidationError(field="validation", error=str(e))], warnings=[]
|
|
)
|
|
|
|
|
|
@router.post("/test")
|
|
async def test_component(request: ComponentTestRequest) -> ComponentTestResult:
|
|
"""Test a component functionality with appropriate inputs based on type"""
|
|
# First validate the component configuration
|
|
validation_result = ValidationService.validate(request.component)
|
|
|
|
# Only proceed with testing if the component is valid
|
|
if not validation_result.is_valid:
|
|
return ComponentTestResult(
|
|
status=False, message="Component validation failed", logs=[e.error for e in validation_result.errors]
|
|
)
|
|
|
|
# If validation passed, run the functional test
|
|
return await ComponentTestService.test_component(
|
|
component=request.component, timeout=request.timeout if request.timeout else 60
|
|
)
|