feat(dashboard): launch supervised competence tests

This commit is contained in:
Dom
2026-06-01 12:09:09 +02:00
parent 1a58a0d1f1
commit 335d576830
4 changed files with 476 additions and 3 deletions

View File

@@ -12,6 +12,7 @@ import pytest
# Ajouter le répertoire racine au path
sys.path.insert(0, str(Path(__file__).parent.parent.parent))
import web_dashboard.app as dashboard_app
from web_dashboard.app import app
@@ -62,6 +63,82 @@ class TestDashboardRoutes:
assert 'competences' in data
assert 'items' in data['competences']
def test_dashboard_replay_competence_proxy(self, client, monkeypatch):
"""Le dashboard lance un replay competence supervise via streaming."""
calls = []
def fake_streaming(method, path, *, payload=None, timeout=10):
calls.append({
'method': method,
'path': path,
'payload': payload,
'timeout': timeout,
})
return dashboard_app.jsonify({
'success': True,
'status': 'started',
'replay': {'replay_id': 'replay_free_test'},
}), 200
monkeypatch.setattr(
dashboard_app,
'_dashboard_streaming_json_request',
fake_streaming,
)
resp = client.post(
'/api/v1/lea/competences/key_win_r_wait_explorer_exe/replay',
json={},
)
assert resp.status_code == 200
assert resp.get_json()['replay']['replay_id'] == 'replay_free_test'
assert calls == [{
'method': 'POST',
'path': '/api/v1/lea/competences/key_win_r_wait_explorer_exe/replay',
'payload': {
'supervised': True,
'start_replay': True,
'session_id': '',
},
'timeout': 30,
}]
def test_dashboard_submit_competence_verdict(self, client, monkeypatch):
"""Le dashboard journalise un verdict sans write-back YAML."""
import core.competences.verdicts as verdicts_module
def fake_store(competence_id, payload):
assert competence_id == 'key_win_r_wait_explorer_exe'
assert payload['verdict_kind'] == 'valid'
return {
'verdict_id': payload['verdict_id'],
'competence_id': competence_id,
'verdict_kind': 'valid',
'duplicate': False,
'write_back_enabled': False,
'yaml_write': False,
}
monkeypatch.setattr(verdicts_module, 'store_competence_verdict', fake_store)
resp = client.post(
'/api/v1/lea/competences/key_win_r_wait_explorer_exe/verdict',
json={
'verdict_id': '123e4567-e89b-42d3-a456-426614174000',
'verdict_kind': 'valid',
'workflow_id': 'free_task:test',
'step_results': [{'step_id': 's1', 'status': 'success'}],
'context_signature': {'machine_id': 'DESKTOP-58D5CAC_windows'},
},
)
assert resp.status_code == 201
data = resp.get_json()
assert data['success'] is True
assert data['write_back_enabled'] is False
assert data['yaml_write'] is False
def test_version(self, client):
"""L'API version retourne la version actuelle."""
resp = client.get('/api/version')