Create peer with default port (#569)

* Added unit test for create peer

* Got test working for create peer with default port

* Use namedtuple for squeak peer class

* Rename test name in test create peer

* Use type hints for insert squeak peer
This commit is contained in:
Jonathan Zernik 2021-01-06 23:47:03 -08:00 committed by GitHub
parent c587dc0d5f
commit 62c13ddaba
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 54 additions and 7 deletions

View file

@ -89,6 +89,8 @@ class WebadminConfig(Config):
@section('core')
class CoreConfig(Config):
network = key(cast=str, required=False, default=DEFAULT_NETWORK)
default_peer_rpc_port = key(
cast=int, required=False, default=DEFAULT_SERVER_RPC_PORT)
price_msat = key(cast=int, required=False, default=DEFAULT_PRICE_MSAT)
max_squeaks_per_address_per_hour = key(
cast=int, required=False, default=DEFAULT_MAX_SQUEAKS_PER_ADDRESS_PER_HOUR)

View file

@ -222,7 +222,8 @@ class SqueakController:
logger.info("Deleted number of offers : {}".format(num_deleted_offers))
return self.squeak_store.delete_squeak(squeak_hash)
def create_peer(self, peer_name, host, port):
def create_peer(self, peer_name: str, host: str, port: int):
port = port or self.config.core.default_peer_rpc_port
squeak_peer = SqueakPeer(
peer_id=None,
peer_name=peer_name,

View file

@ -1,6 +1,11 @@
from collections import namedtuple
from typing import NamedTuple
from typing import Optional
SqueakPeer = namedtuple(
"SqueakPeer",
"peer_id, peer_name, host, port, uploading, downloading",
)
class SqueakPeer(NamedTuple):
peer_id: Optional[int]
peer_name: str
host: str
port: int
uploading: bool
downloading: bool

View file

@ -664,7 +664,7 @@ class SqueakDb:
# with self.get_cursor() as curs:
# curs.execute(sql, (squeak_hash_str,))
def insert_peer(self, squeak_peer):
def insert_peer(self, squeak_peer: SqueakPeer):
""" Insert a new squeak peer. """
ins = self.peers.insert().values(
peer_name=squeak_peer.peer_name,

View file

@ -5,6 +5,7 @@ from squeaknode.bitcoin.blockchain_client import BlockchainClient
from squeaknode.config.config import SqueaknodeConfig
from squeaknode.core.lightning_address import LightningAddressHostPort
from squeaknode.core.squeak_controller import SqueakController
from squeaknode.core.squeak_peer import SqueakPeer
from squeaknode.db.squeak_db import SqueakDb
from squeaknode.node.squeak_store import SqueakStore
from squeaknode.node.squeak_whitelist import SqueakWhitelist
@ -128,3 +129,41 @@ def test_get_network_regtest(regtest_squeak_controller):
# print(config.squeaknode_network)
# assert squeak_controller.get_network() == "regtest"
def test_create_peer(squeak_db, squeak_controller):
squeak_controller.create_peer(
"fake_peer_name",
"fake_host",
5678,
)
squeak_db.insert_peer.assert_called_with(
SqueakPeer(
peer_id=None,
peer_name="fake_peer_name",
host="fake_host",
port=5678,
uploading=False,
downloading=False,
)
)
def test_create_peer_default_port(config, squeak_db, squeak_controller):
squeak_controller.create_peer(
"fake_peer_name",
"fake_host",
0,
)
squeak_db.insert_peer.assert_called_with(
SqueakPeer(
peer_id=None,
peer_name="fake_peer_name",
host="fake_host",
port=config.core.default_peer_rpc_port,
uploading=False,
downloading=False,
)
)