Files
Igor SirotinandClaude Fable 5 a81e255b77 refactor!: drop the version() API method (#80)
Modules don't self-report versions — Logos Core is the authority: the
version lives in the module's embedded metadata.json and is served by
the core's module registry (core_service.getModuleInfo). version() also
hardcoded a stale "1.1.0" module version, and its liblogosdelivery
suffix duplicated getNodeInfo("Version").

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-31 12:28:29 +01:00

48 lines
1.7 KiB
Python

"""Single-daemon e2e checks.
These prove delivery_module loads into a real logoscore daemon and answers over
RPC — the codegen + transport + StdLogosResult path the in-process C++ tests
don't exercise. Each uses a fresh daemon (createNode is once-per-context).
"""
from __future__ import annotations
from libs.constants import CONTENT_TOPIC
from libs.helpers import LogosDelivery, make_delivery_config
def test_create_start_and_stop_node(solo_daemon):
delivery = LogosDelivery(solo_daemon.client())
delivery.load()
delivery.create_node(make_delivery_config())
delivery.start()
delivery.stop()
def test_createNode_twice_rejected(solo_daemon):
delivery = LogosDelivery(solo_daemon.client())
delivery.load()
delivery.create_node(make_delivery_config())
second = delivery.create_node_result(make_delivery_config())
assert second.get("success") is False, f"expected the second createNode to be rejected, got {second!r}"
assert second.get("error"), "rejection carried no error message"
def test_query_and_subscribe_methods(solo_daemon):
"""Every post-start RPC method round-trips: the queries, plus subscribe +
unsubscribe (the only public methods otherwise unexercised e2e)."""
delivery = LogosDelivery(solo_daemon.client())
delivery.load()
delivery.create_node(make_delivery_config())
delivery.start()
assert delivery.get_available_configs(), "getAvailableConfigs returned empty"
assert delivery.get_available_node_info_ids(), "getAvailableNodeInfoIDs returned empty"
for info_id in ("Version", "MyPeerId", "MyMultiaddresses"):
delivery.get_node_info(info_id)
delivery.subscribe(CONTENT_TOPIC)
delivery.unsubscribe(CONTENT_TOPIC)