compatibility with #1204

This commit is contained in:
Shivaram Lingamneni 2020-07-23 23:13:17 -04:00
parent 829cb38863
commit 347e4fd74a

View File

@ -5,6 +5,16 @@ from irctest.irc_utils.junkdrawer import ircv3_timestamp_to_unixtime
from irctest.irc_utils.junkdrawer import to_history_message from irctest.irc_utils.junkdrawer import to_history_message
from irctest.irc_utils.random import random_name from irctest.irc_utils.random import random_name
def extract_playback_privmsgs(messages):
# convert the output of a playback command, drop the echo message
result = []
for msg in messages:
if msg.command == 'PRIVMSG' and msg.params[0].lower() != '*playback':
result.append(to_history_message(msg))
return result
class ZncPlaybackTestCase(cases.BaseServerTestCase): class ZncPlaybackTestCase(cases.BaseServerTestCase):
def customizedConfig(self): def customizedConfig(self):
@ -41,7 +51,7 @@ class ZncPlaybackTestCase(cases.BaseServerTestCase):
# reattach to 'bar' # reattach to 'bar'
self.connectClient(bar, name='viewer', capabilities=['batch', 'labeled-response', 'message-tags', 'server-time', 'echo-message'], password=pw) self.connectClient(bar, name='viewer', capabilities=['batch', 'labeled-response', 'message-tags', 'server-time', 'echo-message'], password=pw)
self.sendLine('viewer', 'PRIVMSG *playback :play * %d' % (early_time,)) self.sendLine('viewer', 'PRIVMSG *playback :play * %d' % (early_time,))
messages = [to_history_message(msg) for msg in self.getMessages('viewer') if msg.command == 'PRIVMSG'] messages = extract_playback_privmsgs(self.getMessages('viewer'))
self.assertEqual(set(messages), set([dm] + echo_messages)) self.assertEqual(set(messages), set([dm] + echo_messages))
self.sendLine('viewer', 'QUIT') self.sendLine('viewer', 'QUIT')
self.assertDisconnected('viewer') self.assertDisconnected('viewer')
@ -52,7 +62,7 @@ class ZncPlaybackTestCase(cases.BaseServerTestCase):
# exclude message 5 itself (oragono's CHATHISTORY implementation corrects for this, but znc.in/playback does not because whatever) # exclude message 5 itself (oragono's CHATHISTORY implementation corrects for this, but znc.in/playback does not because whatever)
mid_timestamp += .001 mid_timestamp += .001
self.sendLine('viewer', 'PRIVMSG *playback :play * %s' % (mid_timestamp,)) self.sendLine('viewer', 'PRIVMSG *playback :play * %s' % (mid_timestamp,))
messages = [to_history_message(msg) for msg in self.getMessages('viewer') if msg.command == 'PRIVMSG'] messages = extract_playback_privmsgs(self.getMessages('viewer'))
self.assertEqual(messages, echo_messages[6:]) self.assertEqual(messages, echo_messages[6:])
self.sendLine('viewer', 'QUIT') self.sendLine('viewer', 'QUIT')
self.assertDisconnected('viewer') self.assertDisconnected('viewer')
@ -63,14 +73,14 @@ class ZncPlaybackTestCase(cases.BaseServerTestCase):
start_timestamp += .001 start_timestamp += .001
end_timestamp = ircv3_timestamp_to_unixtime(echo_messages[7].time) end_timestamp = ircv3_timestamp_to_unixtime(echo_messages[7].time)
self.sendLine('viewer', 'PRIVMSG *playback :play %s %s %s' % (chname, start_timestamp, end_timestamp,)) self.sendLine('viewer', 'PRIVMSG *playback :play %s %s %s' % (chname, start_timestamp, end_timestamp,))
messages = [to_history_message(msg) for msg in self.getMessages('viewer') if msg.command == 'PRIVMSG'] messages = extract_playback_privmsgs(self.getMessages('viewer'))
self.assertEqual(messages, echo_messages[3:7]) self.assertEqual(messages, echo_messages[3:7])
# test nicknames as targets # test nicknames as targets
self.sendLine('viewer', 'PRIVMSG *playback :play %s %d' % (qux, early_time,)) self.sendLine('viewer', 'PRIVMSG *playback :play %s %d' % (qux, early_time,))
messages = [to_history_message(msg) for msg in self.getMessages('viewer') if msg.command == 'PRIVMSG'] messages = extract_playback_privmsgs(self.getMessages('viewer'))
self.assertEqual(messages, [dm]) self.assertEqual(messages, [dm])
self.sendLine('viewer', 'PRIVMSG *playback :play %s %d' % (qux.upper(), early_time,)) self.sendLine('viewer', 'PRIVMSG *playback :play %s %d' % (qux.upper(), early_time,))
messages = [to_history_message(msg) for msg in self.getMessages('viewer') if msg.command == 'PRIVMSG'] messages = extract_playback_privmsgs(self.getMessages('viewer'))
self.assertEqual(messages, [dm]) self.assertEqual(messages, [dm])
self.sendLine('viewer', 'QUIT') self.sendLine('viewer', 'QUIT')
self.assertDisconnected('viewer') self.assertDisconnected('viewer')
@ -78,13 +88,13 @@ class ZncPlaybackTestCase(cases.BaseServerTestCase):
# test 2-argument form # test 2-argument form
self.connectClient(bar, name='viewer', capabilities=['batch', 'labeled-response', 'message-tags', 'server-time', 'echo-message'], password=pw) self.connectClient(bar, name='viewer', capabilities=['batch', 'labeled-response', 'message-tags', 'server-time', 'echo-message'], password=pw)
self.sendLine('viewer', 'PRIVMSG *playback :play %s' % (chname,)) self.sendLine('viewer', 'PRIVMSG *playback :play %s' % (chname,))
messages = [to_history_message(msg) for msg in self.getMessages('viewer') if msg.command == 'PRIVMSG'] messages = extract_playback_privmsgs(self.getMessages('viewer'))
self.assertEqual(messages, echo_messages) self.assertEqual(messages, echo_messages)
self.sendLine('viewer', 'PRIVMSG *playback :play *self') self.sendLine('viewer', 'PRIVMSG *playback :play *self')
messages = [to_history_message(msg) for msg in self.getMessages('viewer') if msg.command == 'PRIVMSG'] messages = extract_playback_privmsgs(self.getMessages('viewer'))
self.assertEqual(messages, [dm]) self.assertEqual(messages, [dm])
self.sendLine('viewer', 'PRIVMSG *playback :play *') self.sendLine('viewer', 'PRIVMSG *playback :play *')
messages = [to_history_message(msg) for msg in self.getMessages('viewer') if msg.command == 'PRIVMSG'] messages = extract_playback_privmsgs(self.getMessages('viewer'))
self.assertEqual(set(messages), set([dm] + echo_messages)) self.assertEqual(set(messages), set([dm] + echo_messages))
self.sendLine('viewer', 'QUIT') self.sendLine('viewer', 'QUIT')
self.assertDisconnected('viewer') self.assertDisconnected('viewer')
@ -95,6 +105,6 @@ class ZncPlaybackTestCase(cases.BaseServerTestCase):
self.controller.rehash(self, config) self.controller.rehash(self, config)
self.connectClient(bar, name='viewer', capabilities=['batch', 'labeled-response', 'message-tags', 'server-time', 'echo-message'], password=pw) self.connectClient(bar, name='viewer', capabilities=['batch', 'labeled-response', 'message-tags', 'server-time', 'echo-message'], password=pw)
self.sendLine('viewer', 'PRIVMSG *playback :play %s %d' % (chname, int(time.time() - 60))) self.sendLine('viewer', 'PRIVMSG *playback :play %s %d' % (chname, int(time.time() - 60)))
messages = [to_history_message(msg) for msg in self.getMessages('viewer') if msg.command == 'PRIVMSG'] messages = extract_playback_privmsgs(self.getMessages('viewer'))
# should receive the latest 5 messages # should receive the latest 5 messages
self.assertEqual(messages, echo_messages[5:]) self.assertEqual(messages, echo_messages[5:])