mirror of
https://github.com/aljazceru/python-teos.git
synced 2025-12-17 14:14:22 +01:00
Move config options used by inspector to the constructor
This commit is contained in:
@@ -17,8 +17,9 @@ logger = Logger("API")
|
|||||||
|
|
||||||
|
|
||||||
class API:
|
class API:
|
||||||
def __init__(self, watcher):
|
def __init__(self, watcher, config):
|
||||||
self.watcher = watcher
|
self.watcher = watcher
|
||||||
|
self.config = config
|
||||||
|
|
||||||
def add_appointment(self):
|
def add_appointment(self):
|
||||||
"""
|
"""
|
||||||
@@ -41,7 +42,7 @@ class API:
|
|||||||
|
|
||||||
# Check content type once if properly defined
|
# Check content type once if properly defined
|
||||||
request_data = json.loads(request.get_json())
|
request_data = json.loads(request.get_json())
|
||||||
inspector = Inspector()
|
inspector = Inspector(self.config)
|
||||||
appointment = inspector.inspect(
|
appointment = inspector.inspect(
|
||||||
request_data.get("appointment"), request_data.get("signature"), request_data.get("public_key")
|
request_data.get("appointment"), request_data.get("signature"), request_data.get("public_key")
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -5,7 +5,6 @@ from common.constants import LOCATOR_LEN_HEX
|
|||||||
from common.cryptographer import Cryptographer
|
from common.cryptographer import Cryptographer
|
||||||
|
|
||||||
from pisa import errors
|
from pisa import errors
|
||||||
import pisa.conf as conf
|
|
||||||
from common.logger import Logger
|
from common.logger import Logger
|
||||||
from common.appointment import Appointment
|
from common.appointment import Appointment
|
||||||
from pisa.block_processor import BlockProcessor
|
from pisa.block_processor import BlockProcessor
|
||||||
@@ -23,6 +22,9 @@ class Inspector:
|
|||||||
The :class:`Inspector` class is in charge of verifying that the appointment data provided by the user is correct.
|
The :class:`Inspector` class is in charge of verifying that the appointment data provided by the user is correct.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
def __init__(self, config):
|
||||||
|
self.config = config
|
||||||
|
|
||||||
def inspect(self, appointment_data, signature, public_key):
|
def inspect(self, appointment_data, signature, public_key):
|
||||||
"""
|
"""
|
||||||
Inspects whether the data provided by the user is correct.
|
Inspects whether the data provided by the user is correct.
|
||||||
@@ -221,8 +223,7 @@ class Inspector:
|
|||||||
|
|
||||||
return rcode, message
|
return rcode, message
|
||||||
|
|
||||||
@staticmethod
|
def check_to_self_delay(self, to_self_delay):
|
||||||
def check_to_self_delay(to_self_delay):
|
|
||||||
"""
|
"""
|
||||||
Checks if the provided ``to_self_delay`` is correct.
|
Checks if the provided ``to_self_delay`` is correct.
|
||||||
|
|
||||||
@@ -255,10 +256,10 @@ class Inspector:
|
|||||||
rcode = errors.APPOINTMENT_WRONG_FIELD_TYPE
|
rcode = errors.APPOINTMENT_WRONG_FIELD_TYPE
|
||||||
message = "wrong to_self_delay data type ({})".format(t)
|
message = "wrong to_self_delay data type ({})".format(t)
|
||||||
|
|
||||||
elif to_self_delay < conf.MIN_TO_SELF_DELAY:
|
elif to_self_delay < self.config.get("MIN_TO_SELF_DELAY"):
|
||||||
rcode = errors.APPOINTMENT_FIELD_TOO_SMALL
|
rcode = errors.APPOINTMENT_FIELD_TOO_SMALL
|
||||||
message = "to_self_delay too small. The to_self_delay should be at least {} (current: {})".format(
|
message = "to_self_delay too small. The to_self_delay should be at least {} (current: {})".format(
|
||||||
conf.MIN_TO_SELF_DELAY, to_self_delay
|
self.config.get("MIN_TO_SELF_DELAY"), to_self_delay
|
||||||
)
|
)
|
||||||
|
|
||||||
if message is not None:
|
if message is not None:
|
||||||
|
|||||||
@@ -7,16 +7,7 @@ from common.logger import Logger
|
|||||||
from pisa.api import API
|
from pisa.api import API
|
||||||
from pisa.watcher import Watcher
|
from pisa.watcher import Watcher
|
||||||
from pisa.builder import Builder
|
from pisa.builder import Builder
|
||||||
from pisa.conf import (
|
import pisa.conf as conf
|
||||||
BTC_NETWORK,
|
|
||||||
FEED_PROTOCOL,
|
|
||||||
FEED_ADDR,
|
|
||||||
FEED_PORT,
|
|
||||||
MAX_APPOINTMENTS,
|
|
||||||
EXPIRY_DELTA,
|
|
||||||
MIN_TO_SELF_DELAY,
|
|
||||||
PISA_SECRET_KEY,
|
|
||||||
)
|
|
||||||
from pisa.responder import Responder
|
from pisa.responder import Responder
|
||||||
from pisa.db_manager import DBManager
|
from pisa.db_manager import DBManager
|
||||||
from pisa.block_processor import BlockProcessor
|
from pisa.block_processor import BlockProcessor
|
||||||
@@ -108,7 +99,7 @@ if __name__ == "__main__":
|
|||||||
watcher.block_queue = Builder.build_block_queue(missed_blocks_watcher)
|
watcher.block_queue = Builder.build_block_queue(missed_blocks_watcher)
|
||||||
|
|
||||||
# Fire the API
|
# Fire the API
|
||||||
API(watcher).start()
|
API(watcher, config=pisa_config).start()
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error("An error occurred: {}. Shutting down".format(e))
|
logger.error("An error occurred: {}. Shutting down".format(e))
|
||||||
|
|||||||
@@ -9,7 +9,6 @@ from pisa.api import API
|
|||||||
from pisa.watcher import Watcher
|
from pisa.watcher import Watcher
|
||||||
from pisa.tools import bitcoin_cli
|
from pisa.tools import bitcoin_cli
|
||||||
from pisa import HOST, PORT
|
from pisa import HOST, PORT
|
||||||
from pisa.conf import MAX_APPOINTMENTS, EXPIRY_DELTA
|
|
||||||
|
|
||||||
from test.pisa.unit.conftest import (
|
from test.pisa.unit.conftest import (
|
||||||
generate_block,
|
generate_block,
|
||||||
@@ -29,6 +28,8 @@ MULTIPLE_APPOINTMENTS = 10
|
|||||||
appointments = []
|
appointments = []
|
||||||
locator_dispute_tx_map = {}
|
locator_dispute_tx_map = {}
|
||||||
|
|
||||||
|
config = get_config()
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture(scope="module")
|
@pytest.fixture(scope="module")
|
||||||
def run_api(db_manager):
|
def run_api(db_manager):
|
||||||
@@ -40,7 +41,7 @@ def run_api(db_manager):
|
|||||||
)
|
)
|
||||||
watcher = Watcher(db_manager, sk_der, get_config())
|
watcher = Watcher(db_manager, sk_der, get_config())
|
||||||
|
|
||||||
api_thread = Thread(target=API(watcher).start)
|
api_thread = Thread(target=API(watcher, config).start)
|
||||||
api_thread.daemon = True
|
api_thread.daemon = True
|
||||||
api_thread.start()
|
api_thread.start()
|
||||||
|
|
||||||
@@ -103,7 +104,7 @@ def test_request_multiple_appointments_same_locator(new_appt_data, n=MULTIPLE_AP
|
|||||||
|
|
||||||
|
|
||||||
def test_add_too_many_appointment(new_appt_data):
|
def test_add_too_many_appointment(new_appt_data):
|
||||||
for _ in range(MAX_APPOINTMENTS - len(appointments)):
|
for _ in range(config.get("MAX_APPOINTMENTS") - len(appointments)):
|
||||||
r = add_appointment(new_appt_data)
|
r = add_appointment(new_appt_data)
|
||||||
assert r.status_code == 200
|
assert r.status_code == 200
|
||||||
|
|
||||||
|
|||||||
@@ -10,13 +10,13 @@ from common.appointment import Appointment
|
|||||||
from pisa.block_processor import BlockProcessor
|
from pisa.block_processor import BlockProcessor
|
||||||
from pisa.conf import MIN_TO_SELF_DELAY
|
from pisa.conf import MIN_TO_SELF_DELAY
|
||||||
|
|
||||||
from test.pisa.unit.conftest import get_random_value_hex, generate_dummy_appointment_data, generate_keypair
|
from test.pisa.unit.conftest import get_random_value_hex, generate_dummy_appointment_data, generate_keypair, get_config
|
||||||
|
|
||||||
from common.constants import LOCATOR_LEN_BYTES, LOCATOR_LEN_HEX
|
from common.constants import LOCATOR_LEN_BYTES, LOCATOR_LEN_HEX
|
||||||
from common.cryptographer import Cryptographer
|
from common.cryptographer import Cryptographer
|
||||||
|
|
||||||
|
|
||||||
inspector = Inspector()
|
inspector = Inspector(get_config())
|
||||||
APPOINTMENT_OK = (0, None)
|
APPOINTMENT_OK = (0, None)
|
||||||
|
|
||||||
NO_HEX_STRINGS = [
|
NO_HEX_STRINGS = [
|
||||||
@@ -126,21 +126,21 @@ def test_check_to_self_delay():
|
|||||||
# Right value, right format
|
# Right value, right format
|
||||||
to_self_delays = [MIN_TO_SELF_DELAY, MIN_TO_SELF_DELAY + 1, MIN_TO_SELF_DELAY + 1000]
|
to_self_delays = [MIN_TO_SELF_DELAY, MIN_TO_SELF_DELAY + 1, MIN_TO_SELF_DELAY + 1000]
|
||||||
for to_self_delay in to_self_delays:
|
for to_self_delay in to_self_delays:
|
||||||
assert Inspector.check_to_self_delay(to_self_delay) == APPOINTMENT_OK
|
assert inspector.check_to_self_delay(to_self_delay) == APPOINTMENT_OK
|
||||||
|
|
||||||
# to_self_delay too small
|
# to_self_delay too small
|
||||||
to_self_delays = [MIN_TO_SELF_DELAY - 1, MIN_TO_SELF_DELAY - 2, 0, -1, -1000]
|
to_self_delays = [MIN_TO_SELF_DELAY - 1, MIN_TO_SELF_DELAY - 2, 0, -1, -1000]
|
||||||
for to_self_delay in to_self_delays:
|
for to_self_delay in to_self_delays:
|
||||||
assert Inspector.check_to_self_delay(to_self_delay)[0] == APPOINTMENT_FIELD_TOO_SMALL
|
assert inspector.check_to_self_delay(to_self_delay)[0] == APPOINTMENT_FIELD_TOO_SMALL
|
||||||
|
|
||||||
# Empty field
|
# Empty field
|
||||||
to_self_delay = None
|
to_self_delay = None
|
||||||
assert Inspector.check_to_self_delay(to_self_delay)[0] == APPOINTMENT_EMPTY_FIELD
|
assert inspector.check_to_self_delay(to_self_delay)[0] == APPOINTMENT_EMPTY_FIELD
|
||||||
|
|
||||||
# Wrong data type
|
# Wrong data type
|
||||||
to_self_delays = WRONG_TYPES
|
to_self_delays = WRONG_TYPES
|
||||||
for to_self_delay in to_self_delays:
|
for to_self_delay in to_self_delays:
|
||||||
assert Inspector.check_to_self_delay(to_self_delay)[0] == APPOINTMENT_WRONG_FIELD_TYPE
|
assert inspector.check_to_self_delay(to_self_delay)[0] == APPOINTMENT_WRONG_FIELD_TYPE
|
||||||
|
|
||||||
|
|
||||||
def test_check_blob():
|
def test_check_blob():
|
||||||
|
|||||||
Reference in New Issue
Block a user