Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions pcapkit/protocols/internet/hip.py
Original file line number Diff line number Diff line change
Expand Up @@ -5033,10 +5033,10 @@ def _make_param_echo_request_unsigned(self, code: 'Enum_Parameter', param: 'Opti
opaque=opaque,
)

def _make_param_echo_response_unsigned(self, code: 'Enum_Parameter', param: 'Optional[Data_EchoRequestUnsignedParameter]' = None, *, # pylint: disable=unused-argument
def _make_param_echo_response_unsigned(self, code: 'Enum_Parameter', param: 'Optional[Data_EchoResponseUnsignedParameter]' = None, *, # pylint: disable=unused-argument
version: 'int',
opaque: 'bytes' = b'',
**kwargs: 'Any') -> 'Schema_EchoRequestUnsignedParameter':
**kwargs: 'Any') -> 'Schema_EchoResponseUnsignedParameter':
"""Make HIP ``ECHO_RESPONSE_UNSIGNED`` parameter.

Args:
Expand All @@ -5053,7 +5053,7 @@ def _make_param_echo_response_unsigned(self, code: 'Enum_Parameter', param: 'Opt
if param is not None:
opaque = param.opaque

return Schema_EchoRequestUnsignedParameter(
return Schema_EchoResponseUnsignedParameter(
type=code,
len=len(opaque),
opaque=opaque,
Expand Down
25 changes: 25 additions & 0 deletions tests/protocols/internet/test_hip_unit.py
Original file line number Diff line number Diff line change
Expand Up @@ -3514,6 +3514,31 @@ def rfc_total(length: int) -> int:
with self.assertRaisesRegex(FieldValueError, 'invalid parameter length'):
hip_schema.encrypted_data_len({'len': 19, 'iv': b'\x11' * 16})

def test_hip_echo_response_unsigned_maker_builds_the_response_schema(self) -> None:
# #2170: the maker built the ECHO_REQUEST_UNSIGNED schema class, and its
# ``param`` and return annotations named the Request classes.
from pcapkit.const.hip.parameter import Parameter
from pcapkit.protocols.data.internet import hip as hip_data
from pcapkit.protocols.internet.hip import HIP
from pcapkit.protocols.schema.internet import hip as hip_schema

proto = object.__new__(HIP)
param = hip_data.EchoResponseUnsignedParameter(type=Parameter.ECHO_RESPONSE_UNSIGNED,
critical=False, length=4, opaque=b'abcd')
for name, schema in (
('keywords', proto._make_param_echo_response_unsigned(
Parameter.ECHO_RESPONSE_UNSIGNED, version=2, opaque=b'abcd')),
('data', proto._make_param_echo_response_unsigned(
Parameter.ECHO_RESPONSE_UNSIGNED, param, version=2)),
):
with self.subTest(source=name):
self.assertIs(type(schema), hip_schema.EchoResponseUnsignedParameter)
self.assertEqual(schema.opaque, b'abcd')

hints = HIP._make_param_echo_response_unsigned.__annotations__
self.assertEqual(hints['param'], 'Optional[Data_EchoResponseUnsignedParameter]')
self.assertEqual(hints['return'], 'Schema_EchoResponseUnsignedParameter')


if __name__ == '__main__':
unittest.main()
Loading