44import zigpy .exceptions
55import zigpy .state
66import zigpy .types as t
7+ import zigpy .zdo
78import zigpy .zdo .types as zdo_t
89
910from zigpy_xbee .api import XBee
@@ -105,17 +106,15 @@ def _test_rx(
105106def test_rx (app ):
106107 device = mock .MagicMock ()
107108 app .handle_message = mock .MagicMock ()
108- _test_rx (app , device , mock .sentinel .src_nwk , data = mock .sentinel .message )
109- assert app .handle_message .call_count == 1
110- assert app .handle_message .call_args == (
111- (
112- device ,
113- mock .sentinel .profile_id ,
114- mock .sentinel .cluster_id ,
115- mock .sentinel .src_ep ,
116- mock .sentinel .dst_ep ,
117- mock .sentinel .message ,
118- ),
109+ _test_rx (app , device , 0x1234 , data = b"\x01 \x02 \x03 \x04 " )
110+ app .handle_message .assert_called_once_with (
111+ sender = device ,
112+ profile = mock .sentinel .profile_id ,
113+ cluster = mock .sentinel .cluster_id ,
114+ src_ep = mock .sentinel .src_ep ,
115+ dst_ep = mock .sentinel .dst_ep ,
116+ message = b"\x01 \x02 \x03 \x04 " ,
117+ dst_addressing = t .AddrMode .NWK ,
119118 )
120119
121120
@@ -140,7 +139,8 @@ def test_rx_nwk_0000(app):
140139def test_rx_unknown_device (app , device ):
141140 """Unknown NWK, but existing device."""
142141 app .handle_message = mock .MagicMock ()
143- app .handle_join = mock .MagicMock ()
142+ app .create_task = mock .MagicMock ()
143+ app ._discover_unknown_device = mock .MagicMock ()
144144 dev = device (nwk = 0x1234 )
145145 app .devices [dev .ieee ] = dev
146146
@@ -155,15 +155,17 @@ def test_rx_unknown_device(app, device):
155155 mock .sentinel .rxopts ,
156156 b"" ,
157157 )
158- assert app .handle_join .call_count == 1
159- assert app .handle_message .call_count == 1
158+ assert app .create_task .call_count == 1
159+ app ._discover_unknown_device .assert_called_once_with (0x3334 )
160+ assert app .handle_message .call_count == 0
160161 assert len (app .devices ) == num_before_rx
161162
162163
163164def test_rx_unknown_device_ieee (app ):
164165 """Unknown NWK, and unknown IEEE."""
165166 app .handle_message = mock .MagicMock ()
166- app .handle_join = mock .MagicMock ()
167+ app .create_task = mock .MagicMock ()
168+ app ._discover_unknown_device = mock .MagicMock ()
167169 app .get_device = mock .MagicMock (side_effect = KeyError )
168170 app .handle_rx (
169171 b"\xff \xff \xff \xff \xff \xff \xff \xff " ,
@@ -175,7 +177,8 @@ def test_rx_unknown_device_ieee(app):
175177 mock .sentinel .rxopts ,
176178 b"" ,
177179 )
178- assert app .handle_join .call_count == 0
180+ assert app .create_task .call_count == 1
181+ app ._discover_unknown_device .assert_called_once_with (0x3334 )
179182 assert app .get_device .call_count == 2
180183 assert app .handle_message .call_count == 0
181184
@@ -201,6 +204,8 @@ def _device(new=False, zdo_init=False, nwk=t.uint16_t(0x1234)):
201204def _device_join (app , dev , data ):
202205 app .handle_message = mock .MagicMock ()
203206 app .handle_join = mock .MagicMock ()
207+ app .create_task = mock .MagicMock ()
208+ app ._discover_unknown_device = mock .MagicMock ()
204209
205210 dst_ep = 0
206211 cluster_id = 0x0013
@@ -212,21 +217,21 @@ def _device_join(app, dev, data):
212217
213218def test_device_join_new (app , device ):
214219 dev = device ()
215- data = b"\xee " + dev .nwk .serialize () + dev .ieee .serialize ()
220+ data = b"\xee " + dev .nwk .serialize () + dev .ieee .serialize () + b" \x40 "
216221
217222 _device_join (app , dev , data )
218223
219224
220225def test_device_join_inconsistent_nwk (app , device ):
221226 dev = device ()
222- data = b"\xee " + b"\x01 \x02 " + dev .ieee .serialize ()
227+ data = b"\xee " + b"\x01 \x02 " + dev .ieee .serialize () + b" \x40 "
223228
224229 _device_join (app , dev , data )
225230
226231
227232def test_device_join_inconsistent_ieee (app , device ):
228233 dev = device ()
229- data = b"\xee " + dev .nwk .serialize () + b"\x01 \x02 \x03 \x04 \x05 \x06 \x07 \x08 "
234+ data = b"\xee " + dev .nwk .serialize () + b"\x01 \x02 \x03 \x04 \x05 \x06 \x07 \x08 " + b" \x40 "
230235
231236 _device_join (app , dev , data )
232237
@@ -568,6 +573,7 @@ def test_rx_device_annce(app, ieee, nwk):
568573 cluster_id = zdo_t .ZDOCmd .Device_annce
569574 device = mock .MagicMock ()
570575 device .status = device .Status .NEW
576+ device .zdo = zigpy .zdo .ZDO (None )
571577 app .get_device = mock .MagicMock (return_value = device )
572578 app .handle_join = mock .MagicMock ()
573579 app .handle_message = mock .MagicMock ()
@@ -589,10 +595,7 @@ def test_rx_device_annce(app, ieee, nwk):
589595 )
590596
591597 assert app .handle_message .call_count == 1
592- assert app .handle_join .call_count == 1
593- assert app .handle_join .call_args [0 ][0 ] == nwk
594- assert app .handle_join .call_args [0 ][1 ] == ieee
595- assert app .handle_join .call_args [0 ][2 ] == 0
598+ app .handle_join .assert_called_once_with (nwk = nwk , ieee = ieee , parent_nwk = None )
596599
597600
598601async def _test_mrequest (app , send_success = True , send_timeout = False , ** kwargs ):
0 commit comments