def test_smp_respond_nick_server_secret(self): context = self.setup_smp_context('nick@server', 'nick2@server') weechat_otr.command_cb( None, 'server_nick2_buffer', 'smp respond nick2 server secret') self.assertEqual(('secret', ), context.smp_got_secret)
def test_policy_default_server_nick_buffer(self): weechat_otr.command_cb(None, None, 'policy default') self.assertPrinted('server_nick_buffer', ( 'eval(${color:default}:! ${color:brown}otr${color:default} !:)\t' '(color default)' 'Current default OTR policies:\r\n' '(color default)' ' allow_v2 (allow OTR protocol version 2, effectively enable ' 'OTR since v2 is the only supported version) : on\r\n' '(color default)' ' html_escape (escape HTML special characters in outbound ' 'messages) : off\r\n' '(color default)' ' html_filter (filter HTML in incoming messages) : on\r\n' '(color default)' ' log (enable logging of OTR conversations) : off\r\n' '(color default)' ' require_encryption (refuse to send unencrypted messages when ' 'OTR is enabled) : off\r\n' '(color default)' ' send_tag (advertise your OTR capability using the whitespace ' 'tag) : off\r\n' '(color default)' 'Change default policies with: /otr policy default NAME on|off'))
def test_fingerprint_pattern(self): fpr_path1 = os.path.join(sys.modules['weechat'].weechat_dir, 'otr', '*****@*****.**') with open(fpr_path1, 'w') as f: for fields in [ ['notamachxxx@server', 'nick@server', 'irc', 'fp123', ''], ['matchxxxxxx@server', 'nick@server', 'irc', 'fp123', ''], ['beforematch@server', 'nick@server', 'irc', 'fp123', ''], ['before@servermatch', 'nick@server', 'irc', 'fp123', ''], ]: f.write("\t".join(fields)) f.write("\n") account1 = weechat_otr.ACCOUNTS['nick@server'] account1.getPrivkey() weechat_otr.command_cb(None, None, 'fingerprint match') self.assertNoPrintedContains('', 'notamachxxx@server') self.assertPrinted( '', ('eval(${color:default}:! ${color:brown}otr${color:default}' ' !:)\t' '(color default)before@servermatch |nick@server |F P 1 2 3 |' 'unverified\r\n' '(color default)beforematch@server |nick@server |F P 1 2 3 |' 'unverified\r\n' '(color default)matchxxxxxx@server |nick@server |F P 1 2 3 |' 'unverified'))
def test_smp_respond_nick_server_secret(self): context = self.setup_smp_context('nick@server', 'nick2@server') weechat_otr.command_cb(None, 'server_nick2_buffer', 'smp respond nick2 server secret') self.assertEqual(('secret', ), context.smp_got_secret)
def test_smp_ask_question_secret(self): context = self.setup_smp_context('nick@server', 'nick2@server') weechat_otr.command_cb(None, 'server_nick2_buffer', 'smp ask question secret') self.assertEqual(('secret', 'question'), context.smp_init)
def test_smp_ask_nick_server_secret(self): context = self.setup_context('nick@server', 'nick2@server') weechat_otr.command_cb( None, None, 'smp ask nick2 server secret') self.assertEqual(('secret', None), context.smp_init)
def test_smp_abort(self): context = self.setup_smp_context('nick@server', 'nick2@server') context.in_smp = True weechat_otr.command_cb(None, 'server_nick2_buffer', 'smp abort') self.assertEqual([('SMP aborted.', )], context.smp_finishes)
def test_fingerprint_pattern(self): fpr_path1 = os.path.join( sys.modules['weechat'].weechat_dir, 'otr', '*****@*****.**') with open(fpr_path1, 'w') as f: for fields in [ ['notamachxxx@server', 'nick@server', 'irc', 'fp123', ''], ['matchxxxxxx@server', 'nick@server', 'irc', 'fp123', ''], ['beforematch@server', 'nick@server', 'irc', 'fp123', ''], ['before@servermatch', 'nick@server', 'irc', 'fp123', ''], ]: f.write("\t".join(fields)) f.write("\n") account1 = weechat_otr.ACCOUNTS['nick@server'] account1.getPrivkey() weechat_otr.command_cb(None, None, 'fingerprint match') self.assertNoPrintedContains('', 'notamachxxx@server') self.assertPrinted('', ( 'eval(${color:default}:! ${color:brown}otr${color:default}' ' !:)\t' '(color default)before@servermatch |nick@server |F P 1 2 3 |' 'unverified\r\n' '(color default)beforematch@server |nick@server |F P 1 2 3 |' 'unverified\r\n' '(color default)matchxxxxxx@server |nick@server |F P 1 2 3 |' 'unverified'))
def test_smp_ask_question_secret(self): context = self.setup_smp_context('nick@server', 'nick2@server') weechat_otr.command_cb( None, 'server_nick2_buffer', 'smp ask question secret') self.assertEqual(('secret', 'question'), context.smp_init)
def test_smp_abort(self): context = self.setup_smp_context('nick@server', 'nick2@server') context.in_smp = True weechat_otr.command_cb(None, 'server_nick2_buffer', 'smp abort') self.assertEqual([('SMP aborted.',)], context.smp_finishes)
def f(self): sys.modules['weechat'].infos.update({ ('arg2', ): { 'irc_nick': '' }, ('arg2,arg1', ): { 'irc_buffer': 'arg2_arg1_buffer' }, }) sys.modules['weechat'].buffers.update({ 'arg2_arg1_buffer': { 'localvar_type': 'private', 'name': 'arg2_arg1_buffer_name', 'plugin': 'irc', }, }) args = ["arg{i}".format(i=i) for i in range(1, num_args + 1)] arg_str = ' '.join(args) try: weechat_otr.command_cb( None, None, "{command} {args}".format(command=command, args=arg_str)) except potr.context.NotEncryptedError: pass
def test_print_buffer_not_private(self): weechat_otr.command_cb(None, None, 'start no_window_nick server') self.assertPrinted('non_private_buffer', ( 'eval(${color:default}:! ${color:brown}otr${color:default} !:)\t' '(color lightblue)' '[no_window_nick] Sending OTR query... Please await confirmation ' 'of the OTR session being started before sending a message.'))
def test_smp_ask_nick_server_secret(self): context = self.setup_smp_context('nick@server', 'nick2@server') weechat_otr.command_cb( None, None, 'smp ask nick2 server secret') self.assertEqual(('secret', None), context.smp_init)
def test_command_cb_start_send_tag_off_with_hints(self): sys.modules['weechat'].config_options['otr.general.hints'] = 'on' weechat_otr.command_cb(None, None, 'start') self.assertPrinted('server_nick_buffer', 'otr\tTo try OTR on all conversations with nick@server: /otr ' + 'policy send_tag on')
def test_policy_default_server_nick_buffer(self): weechat_otr.command_cb(None, None, 'policy default') self.assertPrinted( 'server_nick_buffer', ('eval(${color:default}:! ${color:brown}otr${color:default} !:)\t' '(color default)' 'Current default OTR policies:\r\n' '(color default)' ' allow_v2 (allow OTR protocol version 2, effectively enable ' 'OTR since v2 is the only supported version) : on\r\n' '(color default)' ' html_escape (escape HTML special characters in outbound ' 'messages) : off\r\n' '(color default)' ' html_filter (filter HTML in incoming messages) : on\r\n' '(color default)' ' log (enable logging of OTR conversations) : off\r\n' '(color default)' ' require_encryption (refuse to send unencrypted messages when ' 'OTR is enabled) : off\r\n' '(color default)' ' send_tag (advertise your OTR capability using the whitespace ' 'tag) : off\r\n' '(color default)' 'Change default policies with: /otr policy default NAME on|off'))
def test_command_cb_start_send_tag_on(self): sys.modules['weechat'].config_options[ 'otr.policy.server.nick.nick.send_tag'] = 'on' weechat_otr.command_cb(None, None, 'start') self.assertPrinted('server_nick_buffer', 'otr\tSending OTR query... Please await confirmation of the OTR ' + 'session being started before sending a message.')
def test_print_buffer_not_private(self): weechat_otr.command_cb(None, None, 'start no_window_nick server') self.assertPrinted( 'non_private_buffer', ('eval(${color:default}:! ${color:brown}otr${color:default} !:)\t' '(color lightblue)' '[no_window_nick] Sending OTR query... Please await confirmation ' 'of the OTR session being started before sending a message.'))
def test_smp_ask_nick_server_secret_non_ascii(self): context = self.setup_smp_context('nick@server', 'nick2@server') weechat_otr.command_cb(None, None, weechat_otr.PYVER.to_str('smp ask nick2 server motörhead')) self.assertEqual((weechat_otr.PYVER.to_str('motörhead'), None), context.smp_init)
def test_smp_respond_secret_non_ascii(self): context = self.setup_smp_context('nick@server', 'nick2@server') weechat_otr.command_cb(None, 'server_nick2_buffer', weechat_otr.PYVER.to_str('smp respond deathtöngue')) self.assertEqual((weechat_otr.PYVER.to_str('deathtöngue'), ), context.smp_got_secret)
def test_smp_ask_nick_server_secret_non_ascii(self): context = self.setup_smp_context('nick@server', 'nick2@server') weechat_otr.command_cb( None, None, weechat_otr.PYVER.to_str('smp ask nick2 server motörhead')) self.assertEqual((weechat_otr.PYVER.to_str('motörhead'), None), context.smp_init)
def test_smp_respond_secret_non_ascii(self): context = self.setup_smp_context('nick@server', 'nick2@server') weechat_otr.command_cb( None, 'server_nick2_buffer', weechat_otr.PYVER.to_str('smp respond deathtöngue')) self.assertEqual((weechat_otr.PYVER.to_str('deathtöngue'), ), context.smp_got_secret)
def test_command_cb_start_send_tag_off_with_hints(self): sys.modules['weechat'].config_options['otr.general.hints'] = 'on' weechat_otr.command_cb(None, None, 'start') self.assertPrinted('server_nick_buffer', ( 'eval(${color:default}:! ${color:brown}otr${color:default} !:)\t' '(color lightblue)' 'To try OTR on all conversations with nick@server: /otr ' 'policy send_tag on'))
def test_command_cb_start_send_tag_off_with_hints(self): sys.modules['weechat'].config_options['otr.general.hints'] = 'on' weechat_otr.command_cb(None, None, 'start') self.assertPrinted( 'server_nick_buffer', ('eval(${color:default}:! ${color:brown}otr${color:default} !:)\t' '(color lightblue)' 'To try OTR on all conversations with nick@server: /otr ' 'policy send_tag on'))
def test_smp_ask_nick_server_question_secret_multiple_words(self): context = self.setup_smp_context('nick@server', 'nick2@server') weechat_otr.command_cb( None, None, "smp ask nick2 server 'what is the secret?' " "'eastmost penninsula is the secret'") self.assertEqual( ('eastmost penninsula is the secret', 'what is the secret?'), context.smp_init)
def test_command_cb_start_send_tag_off(self): weechat_otr.command_cb(None, None, 'start') self.assertPrinted('server_nick_buffer', 'otr\tSending OTR query... Please await confirmation of the OTR ' + 'session being started before sending a message.') self.assertPrinted('server_nick_buffer', 'otr\tTo try OTR on all conversations with nick@server: /otr ' + 'policy send_tag on')
def test_command_cb_start_send_tag_on(self): sys.modules['weechat'].config_options[ 'otr.policy.server.nick.nick.send_tag'] = 'on' weechat_otr.command_cb(None, None, 'start') self.assertPrinted('server_nick_buffer', ( 'eval(${color:default}:! ${color:brown}otr${color:default} !:)\t' '(color lightblue)' 'Sending OTR query... Please await confirmation of the OTR ' 'session being started before sending a message.'))
def test_command_cb_start_send_tag_on(self): sys.modules['weechat'].config_options[ 'otr.policy.server.nick.nick.send_tag'] = 'on' weechat_otr.command_cb(None, None, 'start') self.assertPrinted( 'server_nick_buffer', ('eval(${color:default}:! ${color:brown}otr${color:default} !:)\t' '(color lightblue)' 'Sending OTR query... Please await confirmation of the OTR ' 'session being started before sending a message.'))
def test_command_cb_start_send_tag_off(self): weechat_otr.command_cb(None, None, 'start') self.assertPrinted('server_nick_buffer', ( 'eval(${color:default}:! ${color:brown}otr${color:default} !:)\t' '(color lightblue)' 'Sending OTR query... Please await confirmation of the OTR ' 'session being started before sending a message.')) self.assertPrinted('server_nick_buffer', ( 'eval(${color:default}:! ${color:brown}otr${color:default} !:)\t' '(color lightblue)' 'To try OTR on all conversations with nick@server: /otr ' 'policy send_tag on'))
def test_policy_default_no_server_nick_buffer(self): weechat_otr.command_cb(None, 'non_private_buffer', 'policy default') self.assertPrinted('', ( 'Current default OTR policies:\n' ' allow_v2 (allow OTR protocol version 2) : on\n' ' html_escape (escape HTML special characters in outbound ' 'messages) : off\n' ' html_filter (filter HTML in incoming messages) : on\n' ' log (enable logging of OTR conversations) : off\n' ' require_encryption (refuse to send unencrypted messages) : ' 'off\n' ' send_tag (advertise your OTR capability using the whitespace ' 'tag) : off\n' 'Change default policies with: /otr policy default NAME on|off'))
def test_command_cb_start_send_tag_off(self): weechat_otr.command_cb(None, None, 'start') self.assertPrinted( 'server_nick_buffer', ('eval(${color:default}:! ${color:brown}otr${color:default} !:)\t' '(color lightblue)' 'Sending OTR query... Please await confirmation of the OTR ' 'session being started before sending a message.')) self.assertPrinted( 'server_nick_buffer', ('eval(${color:default}:! ${color:brown}otr${color:default} !:)\t' '(color lightblue)' 'To try OTR on all conversations with nick@server: /otr ' 'policy send_tag on'))
def test_fingerprint(self): account1 = weechat_otr.ACCOUNTS['nick@server'] account1.getPrivkey() account2 = weechat_otr.ACCOUNTS['nick2@server2'] account2.getPrivkey() weechat_otr.command_cb(None, None, 'fingerprint') self.assertPrinted( '', ('eval(${{color:default}}:! ${{color:brown}}otr${{color:default}}' ' !:)\t' '(color default)nick2@server2 |{fp2}\r\n' '(color default)nick@server |{fp1}').format( fp1=account1.getPrivkey(), fp2=account2.getPrivkey()))
def test_fingerprint(self): account1 = weechat_otr.ACCOUNTS['nick@server'] account1.getPrivkey() account2 = weechat_otr.ACCOUNTS['nick2@server2'] account2.getPrivkey() weechat_otr.command_cb(None, None, 'fingerprint') self.assertPrinted('', ( 'eval(${{color:default}}:! ${{color:brown}}otr${{color:default}}' ' !:)\t' '(color default)nick2@server2 |{fp2}\r\n' '(color default)nick@server |{fp1}').format( fp1=account1.getPrivkey(), fp2=account2.getPrivkey()))
def test_fingerprint_all(self): fpr_path1 = os.path.join( sys.modules['weechat'].weechat_dir, 'otr', '*****@*****.**') with open(fpr_path1, 'w') as f: for fields in [ ['peer1@server', 'nick@server', 'irc', 'fp111', ''], ['peer2@server', 'nick@server', 'irc', 'fp222', 'smp'], ['peer3@server', 'nick@server', 'irc', 'fp333', 'verified'], ]: f.write("\t".join(fields)) f.write("\n") account1 = weechat_otr.ACCOUNTS['nick@server'] account1.getPrivkey() fpr_path2 = os.path.join( sys.modules['weechat'].weechat_dir, 'otr', '*****@*****.**') with open(fpr_path2, 'w') as f: for fields in [ ['peer4@server2', 'nick2@server2', 'irc', 'fp444', 'verified'], ]: f.write("\t".join(fields)) f.write("\n") account2 = weechat_otr.ACCOUNTS['nick2@server2'] account2.getPrivkey() weechat_otr.command_cb(None, None, 'fingerprint all') self.assertPrinted('', ( 'eval(${color:default}:! ${color:brown}otr${color:default}' ' !:)\t' '(color default)peer4@server2 |nick2@server2 |F P 4 4 4 |' 'verified \r\n' '(color default)peer1@server |nick@server |F P 1 1 1 |' 'unverified \r\n' '(color default)peer2@server |nick@server |F P 2 2 2 |' 'SMP verified\r\n' '(color default)peer3@server |nick@server |F P 3 3 3 |' 'verified '))
def f(self): sys.modules['weechat'].infos.update({ ('arg2',) : {'irc_nick' : ''}, ('arg2,arg1',) : {'irc_buffer' : 'arg2_arg1_buffer'}, }) sys.modules['weechat'].buffers.update({ 'arg2_arg1_buffer' : { 'localvar_type' : 'private', 'name' : 'arg2_arg1_buffer_name', 'plugin' : 'irc', }, }) args = ["arg{i}".format(i=i) for i in range(1, num_args + 1)] arg_str = ' '.join(args) try: weechat_otr.command_cb(None, None, "{command} {args}".format(command=command, args=arg_str)) except potr.context.NotEncryptedError: pass
def test_fingerprint_all(self): fpr_path1 = os.path.join(sys.modules['weechat'].weechat_dir, 'otr', '*****@*****.**') with open(fpr_path1, 'w') as f: for fields in [ ['peer1@server', 'nick@server', 'irc', 'fp111', ''], ['peer2@server', 'nick@server', 'irc', 'fp222', 'smp'], ['peer3@server', 'nick@server', 'irc', 'fp333', 'verified'], ]: f.write("\t".join(fields)) f.write("\n") account1 = weechat_otr.ACCOUNTS['nick@server'] account1.getPrivkey() fpr_path2 = os.path.join(sys.modules['weechat'].weechat_dir, 'otr', '*****@*****.**') with open(fpr_path2, 'w') as f: for fields in [ ['peer4@server2', 'nick2@server2', 'irc', 'fp444', 'verified'], ]: f.write("\t".join(fields)) f.write("\n") account2 = weechat_otr.ACCOUNTS['nick2@server2'] account2.getPrivkey() weechat_otr.command_cb(None, None, 'fingerprint all') self.assertPrinted( '', ('eval(${color:default}:! ${color:brown}otr${color:default}' ' !:)\t' '(color default)peer4@server2 |nick2@server2 |F P 4 4 4 |' 'verified \r\n' '(color default)peer1@server |nick@server |F P 1 1 1 |' 'unverified \r\n' '(color default)peer2@server |nick@server |F P 2 2 2 |' 'SMP verified\r\n' '(color default)peer3@server |nick@server |F P 3 3 3 |' 'verified '))
def test_refresh_args(self): weechat_otr.command_cb(None, None, 'refresh nick2 server') self.assertIn((u'', '/quote -server server PRIVMSG nick2 :?OTR?'), sys.modules['weechat'].commands)
def test_print_buffer_not_private(self): weechat_otr.command_cb(None, None, 'start no_window_nick server') self.assertPrinted('non_private_buffer', 'otr\t[no_window_nick] Sending OTR query... Please await ' + 'confirmation of the OTR session being started before sending a ' + 'message.')
def test_end_buffer(self): weechat_otr.command_cb(None, 'server_nick2_buffer', 'end') self.assertEqual(self.context.disconnects, 1)
def test_start_buffer(self): weechat_otr.command_cb(None, 'server_nick2_buffer', 'start') self.assertIn( (u'', '/quote -server server PRIVMSG nick2 :?OTR?'), sys.modules['weechat'].commands)
def test_end_args(self): weechat_otr.command_cb(None, None, 'end nick2 server') self.assertEqual(self.context.disconnects, 1)
def test_refresh_args(self): weechat_otr.command_cb(None, None, 'refresh nick2 server') self.assertIn( (u'', '/quote -server server PRIVMSG nick2 :?OTR?'), sys.modules['weechat'].commands)
def test_start_buffer(self): weechat_otr.command_cb(None, 'server_nick2_buffer', 'start') self.assertIn((u'', '/quote -server server PRIVMSG nick2 :?OTR?'), sys.modules['weechat'].commands)