Skip to content

Commit f0de9a0

Browse files
msomanathanaxelsrz
andauthored
Payload sender unit test (#1666)
* payload receiver unit test * senderTest * disconnect * fixWarning Co-authored-by: Axel Suarez <axsuarez@microsoft.com>
1 parent c7b8faf commit f0de9a0

File tree

1 file changed

+56
-0
lines changed

1 file changed

+56
-0
lines changed
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
from asyncio import Semaphore
2+
from typing import List
3+
from uuid import UUID, uuid4
4+
5+
import aiounittest
6+
from botbuilder.streaming.payload_transport import PayloadSender
7+
from botbuilder.streaming.payloads import HeaderSerializer
8+
from botbuilder.streaming.payloads.models import Header
9+
from botbuilder.streaming.transport import TransportSenderBase
10+
11+
12+
class MockTransportSender(TransportSenderBase):
13+
def __init__(self):
14+
super().__init__()
15+
self.send_called = Semaphore(0)
16+
17+
async def send(self, buffer: List[int], offset: int, count: int) -> int:
18+
# Assert
19+
if count == 48: # Header
20+
print("Validating Header...")
21+
header = HeaderSerializer.deserialize(buffer, offset, count)
22+
assert header.type == "A"
23+
assert header.payload_length == 3
24+
assert header.end
25+
else: # Payload
26+
print("Validating Payload...")
27+
assert count == 3
28+
self.send_called.release()
29+
30+
return count
31+
32+
def close(self):
33+
pass
34+
35+
36+
class TestPayloadSender(aiounittest.AsyncTestCase):
37+
async def test_send(self):
38+
# Arrange
39+
sut = PayloadSender()
40+
sender = MockTransportSender()
41+
sut.connect(sender)
42+
43+
headerId: UUID = uuid4()
44+
header = Header(type="A", id=headerId, end=True)
45+
header.payload_length = 3
46+
payload = [1, 2, 3]
47+
48+
async def mock_sent_callback(h: Header):
49+
print(f"{h.type}.{h.payload_length}.{h.id}.{h.end}")
50+
51+
# Act
52+
sut.send_payload(header, payload, is_length_known=True, sent_callback=mock_sent_callback)
53+
54+
# Assert
55+
await sender.send_called.acquire()
56+
await sut.disconnect()

0 commit comments

Comments
 (0)