Skip to content

Commit

Permalink
Merge pull request openwsn-berkeley#304 from geonnave/python-test-par…
Browse files Browse the repository at this point in the history
…ameterize-cred-transfer

Python: parameterize test for cred transfer
  • Loading branch information
geonnave authored Aug 19, 2024
2 parents fd4c797 + d5d0ab9 commit 21e5e73
Showing 1 changed file with 13 additions and 13 deletions.
26 changes: 13 additions & 13 deletions lakers-python/test/test_lakers.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import lakers
import cbor2
import pytest
from lakers import CredentialTransfer, EdhocInitiator, EdhocResponder

# values from RFC9529, but CRED_I shortened so that passing by value is possible in a 256 byte message
CRED_I = bytes.fromhex("A202617808A101A5010202412B2001215820AC75E9ECE3E50BFC8ED60399889522405C47BF16DF96660A41298CB4307F7EB62258206E5DE611388A4B8A8211334AC7D37ECB52A387D257E6DB3C2A93DF21FF3AFFC8")
Expand All @@ -15,12 +16,12 @@ def test_gen_keys():
assert len(pub) == 32

def test_initiator():
initiator = lakers.EdhocInitiator()
initiator = EdhocInitiator()
message_1 = initiator.prepare_message_1(c_i=None, ead_1=None)
assert type(message_1) == bytes

def test_responder():
responder = lakers.EdhocResponder(R, CRED_R)
responder = EdhocResponder(R, CRED_R)

def test_ccs_consruction():
# The main crednetials we use can be parsed as they are:
Expand All @@ -36,12 +37,12 @@ def test_ccs_consruction():
assert repr(cred_r_manual) == repr(cred_r)

# Both forms are accepted for constructing equivalent responders
_ = lakers.EdhocResponder(R, CRED_R)
_ = lakers.EdhocResponder(R, cred_r_manual)
_ = EdhocResponder(R, CRED_R)
_ = EdhocResponder(R, cred_r_manual)

def _test_handshake(cred_r_transfer, cred_i_transfer):
initiator = lakers.EdhocInitiator()
responder = lakers.EdhocResponder(R, CRED_R)
initiator = EdhocInitiator()
responder = EdhocResponder(R, CRED_R)

# initiator
message_1 = initiator.prepare_message_1(c_i=None, ead_1=None)
Expand Down Expand Up @@ -81,19 +82,18 @@ def _test_handshake(cred_r_transfer, cred_i_transfer):
assert i_prk_out_new == r_prk_out_new

def test_edhoc_error():
responder = lakers.EdhocResponder(R, CRED_R)
responder = EdhocResponder(R, CRED_R)
with pytest.raises(ValueError) as err:
_ = responder.process_message_1([1, 2, 3])
assert str(err.value) == "EDHOCError::ParsingError"

def test_buffer_error():
initiator = lakers.EdhocInitiator()
initiator = EdhocInitiator()
with pytest.raises(ValueError) as err:
_ = initiator.parse_message_2([1] * 1000)
assert str(err.value) == "MessageBufferError::SliceTooLong"

def test_handshake_byvalue_byreference():
_test_handshake(lakers.CredentialTransfer.ByValue, lakers.CredentialTransfer.ByReference)

def test_handshake_byreference_byvalue():
_test_handshake(lakers.CredentialTransfer.ByReference, lakers.CredentialTransfer.ByValue)
@pytest.mark.parametrize("cred_r_transfer", [CredentialTransfer.ByReference, CredentialTransfer.ByValue])
@pytest.mark.parametrize("cred_i_transfer", [CredentialTransfer.ByReference, CredentialTransfer.ByValue])
def test_handshake_credential_transfer_by(cred_r_transfer, cred_i_transfer):
_test_handshake(cred_r_transfer, cred_i_transfer)

0 comments on commit 21e5e73

Please sign in to comment.