feat(dashboard): launch supervised competence tests
This commit is contained in:
@@ -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')
|
||||
|
||||
Reference in New Issue
Block a user