def test_userstream_user_with_user(self): agent, client = self._agent_and_TwitterClient() uri = 'https://userstream.twitter.com/1.1/user.json' stream = FakeResponse(None) agent.add_expected_request('GET', uri, { 'stringify_friend_ids': 'true', 'with': 'user', }, stream) connected = Deferred() tweets = [] svc = client.userstream_user(tweets.append, with_='user') svc.set_connect_callback(connected.callback) svc.startService() connected_svc = yield connected self.assertIs(svc, connected_svc) self.assertEqual(tweets, []) stream.deliver_data( '{"friends_str": []}\r\n' '{"id_str": "1", "text": "Tweet 1", "user": {}}\r\n') self.assertEqual(tweets, [ {"friends_str": []}, {"id_str": "1", "text": "Tweet 1", "user": {}}, ]) stream.deliver_data( '{"id_str": "2", "text": "Tweet 2", "user": {}}\r\n') self.assertEqual(tweets, [ {"friends_str": []}, {"id_str": "1", "text": "Tweet 1", "user": {}}, {"id_str": "2", "text": "Tweet 2", "user": {}}, ]) yield svc.stopService() stream.finished()
def test_stream_filter_track(self): agent, client = self._agent_and_TwitterClient() uri = 'https://stream.twitter.com/1.1/statuses/filter.json' stream = FakeResponse(None) agent.add_expected_request('POST', uri, {'track': 'foo,bar'}, stream) connected = Deferred() tweets = [] svc = client.stream_filter(tweets.append, track=['foo', 'bar']) svc.set_connect_callback(connected.callback) svc.startService() connected_svc = yield connected self.assertIs(svc, connected_svc) self.assertEqual(tweets, []) stream.deliver_data( '{"id_str": "1", "text": "Tweet 1", "user": {}}\r\n') self.assertEqual(tweets, [ {"id_str": "1", "text": "Tweet 1", "user": {}}, ]) stream.deliver_data( '{"id_str": "2", "text": "Tweet 2", "user": {}}\r\n') self.assertEqual(tweets, [ {"id_str": "1", "text": "Tweet 1", "user": {}}, {"id_str": "2", "text": "Tweet 2", "user": {}}, ]) yield svc.stopService() stream.finished()
def test_userstream_user_with_user(self): agent, client = self._agent_and_TwitterClient() uri = 'https://userstream.twitter.com/1.1/user.json' stream = FakeResponse(None) agent.add_expected_request('GET', uri, { 'stringify_friend_ids': 'true', 'with': 'user', }, stream) connected = Deferred() tweets = [] svc = client.userstream_user(tweets.append, with_='user') svc.set_connect_callback(connected.callback) svc.startService() connected_svc = yield connected self.assertIs(svc, connected_svc) self.assertEqual(tweets, []) stream.deliver_data( '{"friends_str": []}\r\n' '{"id_str": "1", "text": "Tweet 1", "user": {}}\r\n') self.assertEqual(tweets, [ { "friends_str": [] }, { "id_str": "1", "text": "Tweet 1", "user": {} }, ]) stream.deliver_data( '{"id_str": "2", "text": "Tweet 2", "user": {}}\r\n') self.assertEqual(tweets, [ { "friends_str": [] }, { "id_str": "1", "text": "Tweet 1", "user": {} }, { "id_str": "2", "text": "Tweet 2", "user": {} }, ]) yield svc.stopService() stream.finished()
class FakeStream(object): def __init__(self): self.resp = FakeResponse(None) self._message_types = {} def add_message_type(self, message_type, predicate): self._message_types[message_type] = predicate def accepts(self, message_type, data): predicate = self._message_types.get(message_type) return predicate is not None and predicate(data) def deliver(self, data): self.resp.deliver_data(json.dumps(data)) self.resp.deliver_data('\r\n')
def test_stream_filter_track(self): agent, client = self._agent_and_TwitterClient() uri = 'https://stream.twitter.com/1.1/statuses/filter.json' stream = FakeResponse(None) agent.add_expected_request('POST', uri, {'track': 'foo,bar'}, stream) connected = Deferred() tweets = [] svc = client.stream_filter(tweets.append, track=['foo', 'bar']) svc.set_connect_callback(connected.callback) svc.startService() connected_svc = yield connected self.assertIs(svc, connected_svc) self.assertEqual(tweets, []) stream.deliver_data( '{"id_str": "1", "text": "Tweet 1", "user": {}}\r\n') self.assertEqual(tweets, [ { "id_str": "1", "text": "Tweet 1", "user": {} }, ]) stream.deliver_data( '{"id_str": "2", "text": "Tweet 2", "user": {}}\r\n') self.assertEqual(tweets, [ { "id_str": "1", "text": "Tweet 1", "user": {} }, { "id_str": "2", "text": "Tweet 2", "user": {} }, ]) yield svc.stopService() stream.finished()