diff --git a/examples/python/snippets/getting_started.py b/examples/python/snippets/getting_started.py index 5c4fa1764..73c340091 100644 --- a/examples/python/snippets/getting_started.py +++ b/examples/python/snippets/getting_started.py @@ -1,3 +1,6 @@ +import os +import sys +from pathlib import Path import bip39 # type: ignore from glclient import Credentials, Signer, Scheduler # type: ignore from pathlib import Path @@ -48,7 +51,7 @@ def register_node(seed: bytes, developer_cert_path: str, developer_key_path: str # ---8<--- [end: dev_creds] # ---8<--- [start: init_signer] - network = "bitcoin" + network = "regtest" signer = Signer(seed, network, developer_creds) # ---8<--- [end: init_signer] @@ -66,16 +69,21 @@ def register_node(seed: bytes, developer_cert_path: str, developer_key_path: str # ---8<--- [end: register_node] + return scheduler, device_creds, signer + + +def get_node(scheduler: Scheduler, device_creds: Credentials) -> dict: # ---8<--- [start: get_node] scheduler = scheduler.authenticate(device_creds) node = scheduler.node() # ---8<--- [end: get_node] + return node # TODO: Remove node_id from signature and add node_id to credentials def start_node(device_creds_path: str, node_id: bytes) -> None: # ---8<--- [start: start_node] - network = "bitcoin" + network = "regtest" device_creds = Credentials.from_path(device_creds_path) scheduler = Scheduler(network, device_creds) @@ -106,7 +114,7 @@ def start_node(device_creds_path: str, node_id: bytes) -> None: def recover_node(developer_cert: bytes, developer_key: bytes) -> None: # ---8<--- [start: recover_node] seed = read_file("seed") - network = "bitcoin" + network = "regtest" signer_creds = Credentials.nobody_with(developer_cert, developer_key) signer = Signer(seed, network, signer_creds) @@ -124,3 +132,42 @@ def recover_node(developer_cert: bytes, developer_key: bytes) -> None: scheduler.recover(signer) # ---8<--- [end: recover_node] + +def main(): + NETWORK = "regtest" + base_dir = "/tmp/gltests/gl-testserver/certs/users" + developer_cert_path = Path(base_dir) / "nobody.crt" + developer_key_path = Path(base_dir) / "nobody-key.pem" + + # Verify files exist + if not os.path.exists(developer_cert_path): + print(f"Error: Developer certificate not found at {developer_cert_path}") + sys.exit(1) + + if not os.path.exists(developer_key_path): + print(f"Error: Developer key not found at {developer_key_path}") + sys.exit(1) + + # Step 1: Create seed + print("Creating seed...") + seed = create_seed() + + # Step 2: Register node + print("Registering node...") + my_scheduler, device_creds, signer = register_node(seed, developer_cert_path, developer_key_path) + + # Step 3: Get GL node + print("Getting GL node info...") + node = get_node(my_scheduler, device_creds) + + # Step 3: Get lightning node's information + print("Fetching lightning node getinfo...") + info = node.get_info() + print('Node information:') + print(info) + + # Remove the assert False to let the script complete normally + print("Script completed successfully!") + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/libs/gl-testing/pyproject.toml b/libs/gl-testing/pyproject.toml index eb17ce0cf..2a8526573 100644 --- a/libs/gl-testing/pyproject.toml +++ b/libs/gl-testing/pyproject.toml @@ -20,6 +20,7 @@ dependencies = [ "sh>=1.14.3", "sonora>=0.2.3", "cln-version-manager", + "bip39>=0.0.2", ] diff --git a/libs/gl-testing/tests/test_node.py b/libs/gl-testing/tests/test_node.py index c7bcd0748..b127e31ef 100644 --- a/libs/gl-testing/tests/test_node.py +++ b/libs/gl-testing/tests/test_node.py @@ -1,8 +1,9 @@ +from examples.python.snippets.getting_started import ( create_seed, register_node, get_node ) from gltesting.identity import Identity from gltesting.fixtures import * from pyln.testing.utils import wait_for from rich.pretty import pprint -from glclient import nodepb +from glclient import Credentials, Signer, Scheduler from pyln import grpc as clnpb from flaky import flaky @@ -10,6 +11,41 @@ import pytest +def test_code_snippets(scheduler, clients): + NETWORK="regtest" + base_dir = "/tmp/gltests/gl-testserver/certs/users" + developer_cert_path = Path(base_dir) / "nobody.crt" + developer_key_path = Path(base_dir) / "nobody-key.pem" + + # Verify files exist + if not os.path.exists(developer_cert_path): + print(f"Error: Developer certificate not found at {developer_cert_path}") + sys.exit(1) + + if not os.path.exists(developer_key_path): + print(f"Error: Developer key not found at {developer_key_path}") + sys.exit(1) + + # Step 1: Create seed + print("Creating seed...") + seed = create_seed() + + # Step 2: Register node + print("Registering node...") + my_scheduler, device_creds, signer = register_node(seed, developer_cert_path, developer_key_path) + + # Step 3: Get GL node + print("Getting GL node...") + node = get_node(my_scheduler, device_creds) + + # Step 4: Get lightning node's information + print("Fetching lightning node getinfo...") + info = node.get_info() + print('Node information:') + print(info) + assert False + + def test_node_start(scheduler, clients): c = clients.new() res = c.register(configure=True)