Source code for dhcpkit.tests.ipv6.extensions.test_echo_request_option

"""
Test the EchoRequestOption implementation
"""
import unittest

from dhcpkit.ipv6.extensions.linklayer_id import OPTION_CLIENT_LINKLAYER_ADDR
from dhcpkit.ipv6.extensions.relay_echo_request import EchoRequestOption
from dhcpkit.ipv6.extensions.remote_id import OPTION_REMOTE_ID
from dhcpkit.ipv6.extensions.subscriber_id import OPTION_SUBSCRIBER_ID
from dhcpkit.protocol_element import ElementDataRepresentation
from dhcpkit.tests.ipv6.options import test_option


[docs]class EchoRequestOptionTestCase(test_option.OptionTestCase):
[docs] def setUp(self): self.option_bytes = bytes.fromhex('002b0006004f0026ffff') self.option_object = EchoRequestOption(requested_options=[OPTION_CLIENT_LINKLAYER_ADDR, OPTION_SUBSCRIBER_ID, 65535]) self.parse_option()
[docs] def test_validate_requested_options(self): self.option.requested_options = 65535 with self.assertRaisesRegex(ValueError, 'must be a list'): self.option.validate() self.option.requested_options = [OPTION_SUBSCRIBER_ID, 0, OPTION_REMOTE_ID] self.option.validate() self.option.requested_options = [OPTION_SUBSCRIBER_ID, -1, OPTION_REMOTE_ID] with self.assertRaisesRegex(ValueError, 'unsigned 16 bit integer'): self.option.validate() self.option.requested_options = [OPTION_SUBSCRIBER_ID, 65535, OPTION_REMOTE_ID] self.option.validate() self.option.requested_options = [OPTION_SUBSCRIBER_ID, 65536, OPTION_REMOTE_ID] with self.assertRaisesRegex(ValueError, 'unsigned 16 bit integer'): self.option.validate()
[docs] def test_display_requested_options(self): elements = self.option.display_requested_options() self.assertIsInstance(elements, list) for element in elements: self.assertIsInstance(element, ElementDataRepresentation) representation = [str(element) for element in elements] self.assertRegex(representation[0], r' \(79\)$') self.assertRegex(representation[1], r' \(38\)$') self.assertRegex(representation[2], r' \(65535\)$')
[docs] def test_bad_option_length(self): with self.assertRaisesRegex(ValueError, 'Invalid option length'): EchoRequestOption.parse(bytes.fromhex('002b000300030004'))
if __name__ == '__main__': # pragma: no cover unittest.main()