Files
OpenBB/cli/tests/test_dispatchers_protocol.py
Danglewood 869cfed125 [Release] openbb-v5.0.0 (#7741)
* merge branch develop with main

* bump desktop version

* fix the merge

* sync Cargo.lock to desktop 2.0.0

* fix cli conftest.py

---------

Co-authored-by: deeleeramone <>
2026-09-29 10:58:44 -07:00

54 lines
1.4 KiB
Python

"""Tests for openbb_cli.dispatchers.protocol — Request/Response wire models."""
import pytest
from pydantic import ValidationError
from openbb_cli.dispatchers.protocol import Request, Response, ResponseError
def test_request_defaults():
req = Request(command="economy.gdp")
assert req.command == "economy.gdp"
assert req.params == {}
assert req.id is None
def test_request_with_id_and_params():
req = Request(
id="abc", command="equity.price.historical", params={"symbol": "AAPL"}
)
assert req.id == "abc"
assert req.params == {"symbol": "AAPL"}
def test_request_rejects_extra_fields():
with pytest.raises(ValidationError):
Request(command="x", unknown_field=True)
def test_request_requires_command():
with pytest.raises(ValidationError):
Request()
def test_response_ok():
resp = Response(ok=True, result={"a": 1})
assert resp.ok is True
assert resp.error is None
def test_response_error_round_trip():
err = ResponseError(type="ValueError", message="bad")
resp = Response(id="42", ok=False, error=err)
assert resp.ok is False
assert resp.error is not None
assert resp.error.type == "ValueError"
assert resp.error.message == "bad"
def test_response_serialization():
resp = Response(id="1", ok=True, result=[1, 2, 3])
payload = resp.model_dump_json()
assert '"ok":true' in payload
assert '"id":"1"' in payload