kopia lustrzana https://github.com/halcy/Mastodon.py
drop local compat helper too
rodzic
0f89d17812
commit
690ece95d9
|
@ -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"}]
|
||||||
|
|
||||||
|
|
Ładowanie…
Reference in New Issue