예제 #1
0
파일: header_test.py 프로젝트: mielune/xknx
 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)
예제 #2
0
 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)
예제 #3
0
파일: header_test.py 프로젝트: eXtenZy/xknx
 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)
예제 #4
0
파일: header_test.py 프로젝트: eXtenZy/xknx
 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)
예제 #5
0
 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)
예제 #6
0
파일: str_test.py 프로젝트: onkelbeh/xknx
 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" '
         "/>")
예제 #7
0
 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" '
         '/>')
예제 #8
0
파일: str_test.py 프로젝트: phbaer/xknx
 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" '
         '/>')
예제 #9
0
 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)
예제 #10
0
파일: header_test.py 프로젝트: XKNX/xknx
 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
예제 #11
0
파일: header_test.py 프로젝트: eXtenZy/xknx
 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))
예제 #12
0
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
예제 #13
0
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
예제 #14
0
파일: header_test.py 프로젝트: XKNX/xknx
 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
예제 #15
0
파일: header_test.py 프로젝트: eXtenZy/xknx
 def test_set_length_error(self):
     """Test setting length with wrong type."""
     header = KNXIPHeader()
     with self.assertRaises(TypeError):
         header.set_length(2)
예제 #16
0
파일: header_test.py 프로젝트: XKNX/xknx
 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)
예제 #17
0
파일: header_test.py 프로젝트: XKNX/xknx
 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)
예제 #18
0
 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)