drop local compat helper too

pull/360/head
Alexandre Detiste 2023-10-15 17:48:42 +02:00
rodzic 0f89d17812
commit 690ece95d9
1 zmienionych plików z 62 dodań i 80 usunięć

Wyświetl plik

@ -92,57 +92,39 @@ class Listener(StreamListener):
def handle_heartbeat(self):
self.heartbeats += 1
def handle_stream_(self, lines):
"""Test helper to avoid littering all tests with six.b()."""
def six_b(s):
return s.encode("latin-1")
class MockResponse():
def __init__(self, data):
self.data = data
def iter_content(self, chunk_size):
for line in self.data:
for byte in line:
bytearr = bytearray()
bytearr.append(byte)
yield(bytearr)
yield(b'\n')
return self.handle_stream(MockResponse(map(six_b, lines)))
def test_heartbeat():
listener = Listener()
listener.handle_stream_([':one', ':two'])
listener.handle_stream([b':one', b':two'])
assert listener.heartbeats == 2
def test_status():
listener = Listener()
listener.handle_stream_([
'event: update',
'data: {"foo": "bar"}',
'',
listener.handle_stream([
b'event: update',
b'data: {"foo": "bar"}',
b'',
])
assert listener.updates == [{"foo": "bar"}]
def test_notification():
listener = Listener()
listener.handle_stream_([
'event: notification',
'data: {"foo": "bar"}',
'',
listener.handle_stream([
b'event: notification',
b'data: {"foo": "bar"}',
b'',
])
assert listener.notifications == [{"foo": "bar"}]
def test_delete():
listener = Listener()
listener.handle_stream_([
'event: delete',
'data: 123',
'',
listener.handle_stream([
b'event: delete',
b'data: 123',
b'',
])
assert listener.deletes == ["123"]
@ -157,11 +139,11 @@ def test_delete():
def test_many(events):
listener = Listener()
stream = [
line
line.encode('latin1')
for event in events
for line in event
]
listener.handle_stream_(stream)
listener.handle_stream(stream)
assert listener.updates == [{"foo": "bar"}]
assert listener.notifications == [{"foo": "bar"}]
assert listener.deletes == ["123"]
@ -171,10 +153,10 @@ def test_many(events):
def test_unknown_event():
"""Be tolerant of new event types"""
listener = Listener()
listener.handle_stream_([
'event: blahblah',
'data: {}',
'',
listener.handle_stream([
b'event: blahblah',
b'data: {}',
b'',
])
assert listener.bla_called is True
assert listener.updates == []
@ -187,10 +169,10 @@ def test_unknown_handled_event():
listener = Listener()
listener.on_unknown_event = lambda name, payload: None
listener.handle_stream_([
'event: complete.new.event',
'data: {"k": "v"}',
'',
listener.handle_stream([
b'event: complete.new.event',
b'data: {"k": "v"}',
b'',
])
assert listener.updates == []
@ -201,10 +183,10 @@ def test_unknown_handled_event():
def test_dotted_unknown_event():
"""Be tolerant of new event types with dots in the event-name"""
listener = Listener()
listener.handle_stream_([
'event: do.something',
'data: {}',
'',
listener.handle_stream([
b'event: do.something',
b'data: {}',
b'',
])
assert listener.do_something_called is True
assert listener.updates == []
@ -216,18 +198,18 @@ def test_invalid_json():
"""But not too tolerant"""
listener = Listener()
with pytest.raises(MastodonMalformedEventError):
listener.handle_stream_([
'event: blahblah',
'data: {kjaslkdjalskdjasd asdkjhak ajdasldasd}',
'',
listener.handle_stream([
b'event: blahblah',
b'data: {kjaslkdjalskdjasd asdkjhak ajdasldasd}',
b'',
])
def test_missing_event_name():
listener = Listener()
with pytest.raises(MastodonMalformedEventError):
listener.handle_stream_([
'data: {}',
'',
listener.handle_stream([
b'data: {}',
b'',
])
assert listener.updates == []
@ -239,9 +221,9 @@ def test_missing_event_name():
def test_missing_data():
listener = Listener()
with pytest.raises(MastodonMalformedEventError):
listener.handle_stream_([
'event: update',
'',
listener.handle_stream([
b'event: update',
b'',
])
assert listener.updates == []
@ -252,10 +234,10 @@ def test_missing_data():
def test_sse_order_doesnt_matter():
listener = Listener()
listener.handle_stream_([
'data: {"foo": "bar"}',
'event: update',
'',
listener.handle_stream([
b'data: {"foo": "bar"}',
b'event: update',
b'',
])
assert listener.updates == [{"foo": "bar"}]
@ -267,13 +249,13 @@ def test_extra_keys_ignored():
and alleges that "All other field names are ignored".
"""
listener = Listener()
listener.handle_stream_([
'event: update',
'data: {"foo": "bar"}',
'id: 123',
'retry: 456',
'ignoreme: blah blah blah',
'',
listener.handle_stream([
b'event: update',
b'data: {"foo": "bar"}',
b'id: 123',
b'retry: 456',
b'ignoreme: blah blah blah',
b'',
])
assert listener.updates == [{"foo": "bar"}]
@ -281,10 +263,10 @@ def test_extra_keys_ignored():
def test_valid_utf8():
"""Snowman Cat Face With Tears Of Joy"""
listener = Listener()
listener.handle_stream_([
'event: update',
'data: {"foo": "\xE2\x98\x83\xF0\x9F\x98\xB9"}',
'',
listener.handle_stream([
b'event: update',
b'data: {"foo": "\xE2\x98\x83\xF0\x9F\x98\xB9"}',
b'',
])
assert listener.updates == [{"foo": u"\u2603\U0001F639"}]
@ -293,10 +275,10 @@ def test_invalid_utf8():
"""Cat Face With Tears O"""
listener = Listener()
with pytest.raises(MastodonMalformedEventError):
listener.handle_stream_([
'event: update',
'data: {"foo": "\xF0\x9F\x98"}',
'',
listener.handle_stream([
b'event: update',
b'data: {"foo": "\xF0\x9F\x98"}',
b'',
])
@ -309,12 +291,12 @@ def test_multiline_payload():
so let's handle this case.
"""
listener = Listener()
listener.handle_stream_([
'event: update',
'data: {"foo":',
'data: "bar"',
'data: }',
'',
listener.handle_stream([
b'event: update',
b'data: {"foo":',
b'data: "bar"',
b'data: }',
b'',
])
assert listener.updates == [{"foo": "bar"}]