ChannelLogger: write tests for relayed privmsg

This commit is contained in:
Valentin Lorentz 2020-08-30 14:36:50 +02:00
parent 7887001ea3
commit 01dc289cd6
2 changed files with 45 additions and 2 deletions

View File

@ -302,8 +302,8 @@ class ChannelLogger(callbacks.Plugin):
if msg.command in ('PRIVMSG', 'NOTICE'):
rewriteRelayed = self.registryValue(
'rewriteRelayed', msg.channel, irc.network)
if rewriteRelayed and 'echo-message' in self.state.capabilities_ack:
assert 'labeled-response' in self.state.capabilities_ack, \
if rewriteRelayed and 'echo-message' in irc.state.capabilities_ack:
assert 'labeled-response' in irc.state.capabilities_ack, \
'echo-message was negotiated without labeled-response.'
# If we negotiated the echo-message cap, we have to remember
# this message was relayed when the server sends it back to us.

View File

@ -102,6 +102,49 @@ class ChannelLoggerTestCase(ChannelPluginTestCase):
timestamp_re + '<foo> test message\n'
)
@patch_open
def testLogRewriteRelayedEmulatedEcho(self, mock_open):
with conf.supybot.plugins.ChannelLogger.rewriteRelayed.context(True):
log_file = io.StringIO()
mock_open.return_value = log_file
msg = ircmsgs.privmsg('#foo', '<someone> test message')
msg.tag('relayedMsg')
self.irc.getCallback('ChannelLogger').outFilter(self.irc, msg)
self.irc.feedMsg(msg)
self.assertRegex(
log_file.getvalue(),
timestamp_re + '<someone> test message\n'
)
@patch_open
def testLogRewriteRelayedRealEcho(self, mock_open):
with conf.supybot.plugins.ChannelLogger.rewriteRelayed.context(True):
log_file = io.StringIO()
mock_open.return_value = log_file
original_caps = self.irc.state.capabilities_ack
self.irc.state.capabilities_ack |= {
'echo-message', 'labeled-response'
}
try:
out_msg = ircmsgs.privmsg('#foo', '<someone> test message')
out_msg.tag('relayedMsg')
self.irc.getCallback('ChannelLogger').outFilter(self.irc, out_msg)
finally:
self.irc.state.capabilities_ack = original_caps
msg = ircmsgs.privmsg('#foo', '<someone> test message')
msg.server_tags['label'] = out_msg.server_tags['label']
self.irc.feedMsg(msg)
self.assertRegex(
log_file.getvalue(),
timestamp_re + '<someone> test message\n'
)
@patch_open
def testLogNotice(self, mock_open):
log_file = io.StringIO()