5 from collections
import deque
7 from websockets
.exceptions
import ConnectionClosed
10 from juju
.client
.connection
import Connection
14 def __init__(self
, responses
):
16 self
.responses
= deque(responses
)
19 async def send(self
, message
):
23 if not self
.responses
:
24 await asyncio
.sleep(1) # delay to give test time to finish
25 raise ConnectionClosed(0, 'ran out of responses')
26 return json
.dumps(self
.responses
.popleft())
28 async def close(self
):
33 async def test_out_of_order(event_loop
):
34 con
= Connection(*[None]*4)
40 expected_responses
= [
45 con
._get
_sll
= mock
.MagicMock()
47 with mock
.patch('websockets.connect', base
.AsyncMock(return_value
=ws
)):
51 actual_responses
.append(await con
.rpc({'version': 1}))
52 assert actual_responses
== expected_responses