Move config options used by inspector to the constructor

This commit is contained in:
Turtle
2019-12-23 22:40:33 -05:00
parent 7aa74d5953
commit c22bf220f0
5 changed files with 21 additions and 27 deletions

View File

@@ -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")
) )

View File

@@ -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:

View File

@@ -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))

View File

@@ -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

View File

@@ -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():