110 lines
3.2 KiB
Python
110 lines
3.2 KiB
Python
from flask import Flask
|
|
import importlib.util
|
|
from pathlib import Path
|
|
|
|
|
|
MODULE_PATH = (
|
|
Path(__file__).resolve().parents[2]
|
|
/ "visual_workflow_builder"
|
|
/ "backend"
|
|
/ "api"
|
|
/ "lea_competences.py"
|
|
)
|
|
SPEC = importlib.util.spec_from_file_location("lea_competences_test_module", MODULE_PATH)
|
|
lea_competences_module = importlib.util.module_from_spec(SPEC)
|
|
assert SPEC and SPEC.loader
|
|
SPEC.loader.exec_module(lea_competences_module)
|
|
lea_competences_bp = lea_competences_module.lea_competences_bp
|
|
|
|
|
|
def _app():
|
|
app = Flask(__name__)
|
|
app.register_blueprint(lea_competences_bp)
|
|
return app
|
|
|
|
|
|
def test_submit_competence_verdict_endpoint(monkeypatch):
|
|
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(
|
|
lea_competences_module,
|
|
"store_competence_verdict",
|
|
fake_store,
|
|
)
|
|
|
|
with _app().test_client() as client:
|
|
response = client.post(
|
|
"/api/v1/lea/competences/key_win_r_wait_explorer_exe/verdict",
|
|
json={
|
|
"verdict_id": "123e4567-e89b-42d3-a456-426614174000",
|
|
"verdict_kind": "valid",
|
|
},
|
|
)
|
|
|
|
assert response.status_code == 201
|
|
data = response.get_json()
|
|
assert data["success"] is True
|
|
assert data["write_back_enabled"] is False
|
|
assert data["yaml_write"] is False
|
|
assert data["verdict"]["duplicate"] is False
|
|
|
|
|
|
def test_submit_competence_verdict_endpoint_returns_duplicate_200(monkeypatch):
|
|
def fake_store(_competence_id, payload):
|
|
return {
|
|
"verdict_id": payload["verdict_id"],
|
|
"competence_id": "key_win_r_wait_explorer_exe",
|
|
"verdict_kind": "valid",
|
|
"duplicate": True,
|
|
"write_back_enabled": False,
|
|
"yaml_write": False,
|
|
}
|
|
|
|
monkeypatch.setattr(
|
|
lea_competences_module,
|
|
"store_competence_verdict",
|
|
fake_store,
|
|
)
|
|
|
|
with _app().test_client() as client:
|
|
response = client.post(
|
|
"/api/v1/lea/competences/key_win_r_wait_explorer_exe/verdict",
|
|
json={
|
|
"verdict_id": "123e4567-e89b-42d3-a456-426614174000",
|
|
"verdict_kind": "valid",
|
|
},
|
|
)
|
|
|
|
assert response.status_code == 200
|
|
assert response.get_json()["duplicate"] is True
|
|
|
|
|
|
def test_list_competence_verdicts_endpoint(monkeypatch):
|
|
monkeypatch.setattr(
|
|
lea_competences_module,
|
|
"iter_competence_verdicts",
|
|
lambda competence_id: [{"competence_id": competence_id, "verdict_kind": "valid"}],
|
|
)
|
|
|
|
with _app().test_client() as client:
|
|
response = client.get(
|
|
"/api/v1/lea/competences/key_win_r_wait_explorer_exe/verdicts"
|
|
)
|
|
|
|
data = response.get_json()
|
|
assert response.status_code == 200
|
|
assert data["success"] is True
|
|
assert data["verdicts"] == [
|
|
{"competence_id": "key_win_r_wait_explorer_exe", "verdict_kind": "valid"}
|
|
]
|