def test_process_invalid_payload(self): """Test if exception is raised when processing telegram with invalid payload.""" xknx = XKNX() remote_value = RemoteValue(xknx) with patch("xknx.remote_value.RemoteValue.payload_valid") as patch_valid, patch( "xknx.remote_value.RemoteValue.has_group_address" ) as patch_has_group_address: patch_valid.return_value = False patch_has_group_address.return_value = True telegram = Telegram(GroupAddress("1/2/1"), payload=DPTArray((0x01, 0x02))) with self.assertRaises(CouldNotParseTelegram): self.loop.run_until_complete(remote_value.process(telegram))
def test_process_unsupported_payload(self): """Test if exception is raised when processing telegram with unsupported payload.""" xknx = XKNX() remote_value = RemoteValue(xknx) with patch("xknx.remote_value.RemoteValue.payload_valid") as patch_valid, patch( "xknx.remote_value.RemoteValue.has_group_address" ) as patch_has_group_address: patch_valid.return_value = False patch_has_group_address.return_value = True telegram = Telegram( destination_address=GroupAddress("1/2/1"), payload=object(), ) with self.assertRaisesRegex( CouldNotParseTelegram, r".*payload not a GroupValueWrite or GroupValueResponse.*", ): self.loop.run_until_complete(remote_value.process(telegram))
def test_process_listening_address(self): """Test if listening group addresses are processed.""" xknx = XKNX() remote_value = RemoteValue( xknx, group_address="1/2/3", passive_group_addresses=["1/1/1"] ) self.assertTrue(remote_value.writable) self.assertFalse(remote_value.readable) # RemoteValue is initialized with only passive group address self.assertTrue(remote_value.initialized) with patch("xknx.remote_value.RemoteValue.payload_valid") as patch_valid: patch_valid.return_value = True test_payload = DPTArray((0x01, 0x02)) telegram = Telegram(GroupAddress("1/1/1"), payload=test_payload) self.assertTrue( self.loop.run_until_complete( asyncio.Task(remote_value.process(telegram)) ) ) self.assertEqual(remote_value.payload, test_payload)