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