Files
aitbc/tests/e2e/conftest.py
aitbc e4f1a96172
Some checks failed
Blockchain Synchronization Verification / sync-verification (push) Failing after 8s
CLI Tests / test-cli (push) Successful in 10s
Contract Performance Benchmarks / benchmark-gas-usage (push) Successful in 1m22s
Contract Performance Benchmarks / benchmark-execution-time (push) Successful in 1m11s
Contract Performance Benchmarks / benchmark-throughput (push) Successful in 1m13s
Cross-Chain Functionality Tests / test-cross-chain-sync (push) Failing after 5s
Cross-Chain Functionality Tests / test-cross-chain-transactions (push) Successful in 5s
Cross-Chain Functionality Tests / test-cross-chain-bridge (push) Has been skipped
Cross-Chain Functionality Tests / test-multi-chain-consensus (push) Failing after 3s
Cross-Chain Functionality Tests / aggregate-results (push) Has been skipped
Cross-Node Transaction Testing / transaction-test (push) Successful in 5s
Deploy to Testnet / deploy-testnet (push) Successful in 1m14s
Contract Performance Benchmarks / compare-benchmarks (push) Has been cancelled
Documentation Validation / validate-docs (push) Failing after 10s
Multi-Node Stress Testing / stress-test (push) Has been cancelled
Node Failover Simulation / failover-test (push) Has been cancelled
Security Scanning / security-scan (push) Has been cancelled
Smart Contract Tests / test-solidity (map[name:aitbc-contracts path:contracts]) (push) Has been cancelled
Smart Contract Tests / test-solidity (map[name:aitbc-token path:packages/solidity/aitbc-token]) (push) Has been cancelled
Smart Contract Tests / test-foundry (push) Has been cancelled
Smart Contract Tests / lint-solidity (push) Has been cancelled
Smart Contract Tests / deploy-contracts (push) Has been cancelled
Documentation Validation / validate-policies-strict (push) Successful in 3s
Integration Tests / test-service-integration (push) Failing after 45s
Multi-Chain Island Architecture Tests / test-multi-chain-island (push) Failing after 2s
Multi-Node Blockchain Health Monitoring / health-check (push) Successful in 5s
P2P Network Verification / p2p-verification (push) Successful in 3s
Production Tests / Production Integration Tests (push) Failing after 7s
Python Tests / test-python (push) Failing after 46s
Staking Tests / test-staking-service (push) Failing after 2s
Staking Tests / test-staking-integration (push) Has been skipped
Staking Tests / test-staking-contract (push) Has been skipped
Staking Tests / run-staking-test-runner (push) Has been skipped
Systemd Sync / sync-systemd (push) Successful in 21s
API Endpoint Tests / test-api-endpoints (push) Failing after 12m19s
ci: standardize pytest invocation and add security scanning
- Changed pytest calls to use `venv/bin/python -m pytest` with explicit config
- Added `--rootdir "$PWD"` and `--import-mode=importlib` for consistent imports
- Fixed PYTHONPATH to use absolute paths with $PWD prefix
- Added smart contract security scanning for Solidity files
- Added Circom circuit security checks for ZK proof circuits
- Added ZK proof implementation security validation
- Added contracts/** to security scanning workflow
2026-05-11 13:46:42 +02:00

94 lines
2.7 KiB
Python

"""
End-to-End Test Configuration
Fixtures and setup for E2E tests
"""
import pytest
import httpx
import os
from typing import AsyncGenerator, Generator
@pytest.fixture(scope="session")
def coordinator_url() -> str:
"""Coordinator API URL"""
return os.getenv("COORDINATOR_URL", "http://localhost:8011")
@pytest.fixture(scope="session")
def blockchain_url() -> str:
"""Blockchain RPC URL"""
return os.getenv("BLOCKCHAIN_URL", "http://localhost:8080")
@pytest.fixture(scope="session")
def marketplace_url() -> str:
"""Marketplace URL"""
return os.getenv("MARKETPLACE_URL", "http://localhost:8102")
@pytest.fixture(scope="session")
def api_key() -> str:
"""Test API key"""
return os.getenv("TEST_API_KEY", "test-api-key")
@pytest.fixture(scope="function")
async def http_client() -> AsyncGenerator[httpx.AsyncClient, None]:
"""HTTP client for API calls"""
async with httpx.AsyncClient(timeout=30.0) as client:
yield client
@pytest.fixture(scope="session")
def sync_http_client() -> Generator[httpx.Client, None, None]:
"""Synchronous HTTP client for API calls"""
with httpx.Client(timeout=30.0) as client:
yield client
@pytest.fixture(scope="session")
def test_data():
"""Test data fixture"""
return {
"test_user": {
"user_id": "e2e-test-user-001",
"email": "e2e-test@example.com",
"wallet_address": "ait1e2etestuser001"
},
"test_job": {
"job_type": "ai_inference",
"parameters": {
"model": "gpt-4",
"prompt": "E2E test prompt",
"max_tokens": 100
}
}
}
@pytest.fixture(scope="session")
def service_health_check(coordinator_url, blockchain_url, marketplace_url):
"""Check if required services are healthy"""
import time
def _check_service(url: str, service_name: str, max_retries: int = 30, health_path: str = "/v1/health") -> bool:
"""Check if a service is healthy"""
for i in range(max_retries):
try:
response = httpx.get(f"{url}{health_path}", timeout=5.0)
if response.status_code == 200:
return True
except Exception:
if i < max_retries - 1:
time.sleep(2)
pytest.skip(f"{service_name} not available at {url}")
return False
# Check all services with appropriate health endpoints
_check_service(coordinator_url, "Coordinator API", health_path="/v1/health")
_check_service(blockchain_url, "Blockchain Node", health_path="/health")
_check_service(marketplace_url, "Marketplace", health_path="/health")
return True