Adds ExtendedAppointent unit tests and simplifies Appointment's

This commit is contained in:
Sergi Delgado Segura
2020-04-15 15:44:31 +02:00
parent 4e1c3e83cf
commit 8e3caadc5c
3 changed files with 59 additions and 8 deletions

View File

@@ -15,7 +15,7 @@ class ExtendedAppointment(Appointment):
Args:
appointment_data (:obj:`dict`): a dictionary containing the following keys:
``{locator, to_self_delay, encrypted_blob, expiry}``
``{locator, to_self_delay, encrypted_blob, user_id}``
Returns:
:obj:`ExtendedAppointment <teos.extended_appointment.ExtendedAppointment>`: An appointment initialized

View File

@@ -1,5 +1,6 @@
import struct
import binascii
import pytest
from pytest import fixture
from common.appointment import Appointment
@@ -29,8 +30,6 @@ def appointment_data():
def test_init_appointment(appointment_data):
# The appointment has no checks whatsoever, since the inspector is the one taking care or that, and the only one
# creating appointments.
# DISCUSS: whether this makes sense by design or checks should be ported from the inspector to the appointment
# 35-appointment-checks
appointment = Appointment(
appointment_data["locator"],
appointment_data["start_time"],
@@ -78,13 +77,9 @@ def test_from_dict(appointment_data):
prev_val = appointment_data[key]
appointment_data[key] = None
try:
with pytest.raises(ValueError, match="Wrong appointment data"):
Appointment.from_dict(appointment_data)
assert False
except ValueError:
appointment_data[key] = prev_val
assert True
def test_serialize(appointment_data):

View File

@@ -0,0 +1,56 @@
import pytest
from pytest import fixture
from common.constants import LOCATOR_LEN_BYTES
from teos.extended_appointment import ExtendedAppointment
from test.common.unit.conftest import get_random_value_hex
# Parent methods are not tested.
@fixture
def appointment_data():
locator = get_random_value_hex(LOCATOR_LEN_BYTES)
to_self_delay = 20
user_id = get_random_value_hex(16)
encrypted_blob_data = get_random_value_hex(100)
return {
"locator": locator,
"to_self_delay": to_self_delay,
"encrypted_blob": encrypted_blob_data,
"user_id": user_id,
}
def test_init_appointment(appointment_data):
# The appointment has no checks whatsoever, since the inspector is the one taking care or that, and the only one
# creating appointments.
appointment = ExtendedAppointment(
appointment_data["locator"],
appointment_data["to_self_delay"],
appointment_data["encrypted_blob"],
appointment_data["user_id"],
)
assert (
appointment_data["locator"] == appointment.locator
and appointment_data["to_self_delay"] == appointment.to_self_delay
and appointment_data["encrypted_blob"] == appointment.encrypted_blob
and appointment_data["user_id"] == appointment.user_id
)
def test_from_dict(appointment_data):
# The appointment should be build if we don't miss any field
appointment = ExtendedAppointment.from_dict(appointment_data)
assert isinstance(appointment, ExtendedAppointment)
# Otherwise it should fail
for key in appointment_data.keys():
prev_val = appointment_data[key]
appointment_data[key] = None
with pytest.raises(ValueError, match="Wrong appointment data"):
ExtendedAppointment.from_dict(appointment_data)
appointment_data[key] = prev_val