def test_from_knx_wrong_header(self): """Test parsing and streaming wrong Header (wrong length).""" raw = (0x06, 0x10, 0x04, 0x21, 0x00) xknx = XKNX() header = KNXIPHeader(xknx) with self.assertRaises(CouldNotParseKNXIP): header.from_knx(raw)
def test_from_knx_wrong_header3(self): """Test parsing and streaming wrong Header (wrong protocol version).""" raw = ((0x06, 0x11, 0x04, 0x21, 0x00, 0x0a)) xknx = XKNX(loop=self.loop) header = KNXIPHeader(xknx) with self.assertRaises(CouldNotParseKNXIP): header.from_knx(raw)
def test_set_length(self): """Test setting length.""" xknx = XKNX() header = KNXIPHeader() header.set_length(DisconnectRequest(xknx)) # 6 (header) + 2 + 8 (HPAI length) self.assertEqual(header.total_length, 16)
def test_from_knx_wrong_header4(self): """Test parsing and streaming wrong Header (unsupported service type).""" # 0x0000 as service type raw = (0x06, 0x10, 0x00, 0x00, 0x00, 0x0A) header = KNXIPHeader() with self.assertRaises(CouldNotParseKNXIP): header.from_knx(raw)
def test_from_knx_wrong_header2(self): """Test parsing and streaming wrong Header (wrong length byte).""" raw = ((0x05, 0x10, 0x04, 0x21, 0x00, 0x0a)) xknx = XKNX(loop=self.loop) header = KNXIPHeader(xknx) with self.assertRaises(CouldNotParseKNXIP): header.from_knx(raw)
def test_header(self): """Test string representation of KNX/IP-Header.""" header = KNXIPHeader() header.total_length = 42 assert ( str(header) == '<KNXIPHeader HeaderLength="6" ProtocolVersion="16" KNXIPServiceType="ROUTING_INDICATION" Reserve="0" TotalLength="42" ' "/>")
def test_header(self): """Test string representation of KNX/IP-Header.""" xknx = XKNX(loop=self.loop) header = KNXIPHeader(xknx) header.total_length = 42 self.assertEqual( str(header), '<KNXIPHeader HeaderLength="6" ProtocolVersion="16" KNXIPServiceType="KNXIPServiceType.ROUTING_INDICATION" Reserve="0" TotalLength="42" ' '/>')
def test_from_knx(self): """Test parsing and streaming wrong Header (wrong length byte).""" raw = (0x06, 0x10, 0x04, 0x21, 0x00, 0x0A) header = KNXIPHeader() assert header.from_knx(raw) == 6 assert header.header_length == 6 assert header.protocol_version == 16 assert header.service_type_ident == KNXIPServiceType.TUNNELLING_ACK assert header.b4_reserve == 0 assert header.total_length == 10 assert header.to_knx() == list(raw)
def test_from_knx(self): """Test parsing and streaming wrong Header (wrong length byte).""" raw = bytes((0x06, 0x10, 0x04, 0x21, 0x00, 0x0A)) header = KNXIPHeader() assert header.from_knx(raw) == 6 assert header.HEADERLENGTH == 6 assert header.PROTOCOLVERSION == 16 assert header.service_type_ident == KNXIPServiceType.TUNNELLING_ACK assert header.b4_reserve == 0 assert header.total_length == 10 assert header.to_knx() == raw
def test_from_knx(self): """Test parsing and streaming wrong Header (wrong length byte).""" raw = (0x06, 0x10, 0x04, 0x21, 0x00, 0x0A) header = KNXIPHeader() self.assertEqual(header.from_knx(raw), 6) self.assertEqual(header.header_length, 6) self.assertEqual(header.protocol_version, 16) self.assertEqual(header.service_type_ident, KNXIPServiceType.TUNNELLING_ACK) self.assertEqual(header.b4_reserve, 0) self.assertEqual(header.total_length, 10) self.assertEqual(header.to_knx(), list(raw))
def fake_router_search_response(xknx: XKNX) -> SearchResponse: """Return the SearchResponse of a KNX/IP Router.""" _frame_header = KNXIPHeader(xknx) _frame_header.service_type_ident = KNXIPServiceType.SEARCH_RESPONSE _frame_body = SearchResponse(xknx) _frame_body.control_endpoint = HPAI(ip_addr="192.168.42.10", port=3671) _device_information = DIBDeviceInformation() _device_information.name = "Gira KNX/IP-Router" _device_information.serial_number = "11:22:33:44:55:66" _device_information.individual_address = PhysicalAddress("1.1.0") _device_information.mac_address = "01:02:03:04:05:06" _svc_families = DIBSuppSVCFamilies() _svc_families.families.append( DIBSuppSVCFamilies.Family(name=DIBServiceFamily.CORE, version=1)) _svc_families.families.append( DIBSuppSVCFamilies.Family(name=DIBServiceFamily.DEVICE_MANAGEMENT, version=2)) _svc_families.families.append( DIBSuppSVCFamilies.Family(name=DIBServiceFamily.TUNNELING, version=1)) _svc_families.families.append( DIBSuppSVCFamilies.Family(name=DIBServiceFamily.ROUTING, version=1)) _svc_families.families.append( DIBSuppSVCFamilies.Family(name=DIBServiceFamily.REMOTE_CONFIGURATION_DIAGNOSIS, version=1)) _frame_body.dibs.append(_device_information) _frame_body.dibs.append(_svc_families) _frame_header.set_length(_frame_body) search_response = KNXIPFrame(xknx) search_response.init(KNXIPServiceType.SEARCH_RESPONSE) search_response.header = _frame_header search_response.body = _frame_body search_response.normalize() return search_response
def fake_router_search_response(xknx: XKNX) -> SearchResponse: """Return the SearchResponse of a KNX/IP Router.""" _frame_header = KNXIPHeader(xknx) _frame_header.service_type_ident = KNXIPServiceType.SEARCH_RESPONSE _frame_body = SearchResponse(xknx) _frame_body.control_endpoint = HPAI(ip_addr="192.168.42.10", port=3671) _device_information = DIBDeviceInformation() _device_information.name = "Gira KNX/IP-Router" _device_information.serial_number = "11:22:33:44:55:66" _device_information.individual_address = PhysicalAddress("1.1.0") _device_information.mac_address = "01:02:03:04:05:06" _svc_families = DIBSuppSVCFamilies() _svc_families.families.append( DIBSuppSVCFamilies.Family(name=DIBServiceFamily.CORE, version=1)) _svc_families.families.append( DIBSuppSVCFamilies.Family(name=DIBServiceFamily.DEVICE_MANAGEMENT, version=2)) _svc_families.families.append( DIBSuppSVCFamilies.Family(name=DIBServiceFamily.TUNNELING, version=1)) _svc_families.families.append( DIBSuppSVCFamilies.Family(name=DIBServiceFamily.ROUTING, version=1)) _svc_families.families.append( DIBSuppSVCFamilies.Family( name=DIBServiceFamily.REMOTE_CONFIGURATION_DIAGNOSIS, version=1)) _frame_body.dibs.append(_device_information) _frame_body.dibs.append(_svc_families) _frame_header.set_length(_frame_body) search_response = KNXIPFrame(xknx) search_response.init(KNXIPServiceType.SEARCH_RESPONSE) search_response.header = _frame_header search_response.body = _frame_body search_response.normalize() return search_response
def test_set_length(self): """Test setting length.""" header = KNXIPHeader() header.set_length(DisconnectRequest()) # 6 (header) + 2 + 8 (HPAI length) assert header.total_length == 16
def test_set_length_error(self): """Test setting length with wrong type.""" header = KNXIPHeader() with self.assertRaises(TypeError): header.set_length(2)
def test_from_knx_wrong_header2(self): """Test parsing and streaming wrong Header (wrong length byte).""" raw = bytes((0x05, 0x10, 0x04, 0x21, 0x00, 0x0A)) header = KNXIPHeader() with pytest.raises(CouldNotParseKNXIP): header.from_knx(raw)
def test_from_knx_wrong_header3(self): """Test parsing and streaming wrong Header (wrong protocol version).""" raw = bytes((0x06, 0x11, 0x04, 0x21, 0x00, 0x0A)) header = KNXIPHeader() with pytest.raises(CouldNotParseKNXIP): header.from_knx(raw)
def test_set_length_error(self): """Test setting length with wrong type.""" xknx = XKNX(loop=self.loop) header = KNXIPHeader(xknx) with self.assertRaises(TypeError): header.set_length(2)