async def test_command_property_false(self):
     input = CommandActionTokens('', self.broadcaster, '', 'Kappa', '')
     self.assertIs(await channel.command_property(self.args, input), False)
     self.permissionSet['broadcaster'] = True
     self.assertIs(await channel.command_property(self.args, input), False)
     self.assertFalse(self.data.processCustomCommandProperty.called)
     self.assertFalse(self.channel.send.called)
 def test_level_blank(self):
     for level in ['', 'any', 'ANY', 'all', 'public']:
         message = Message('!command add level=%s Kappa' % level)
         self.assertEqual(
             library.parse_action_message(message, 'botgotsthis'),
             CommandActionTokens('add', 'botgotsthis', '', 'Kappa', ''),
             level)
 def test_level_global_moderator(self):
     for level in ['globalmod', 'globalMod', 'global_mod', 'gmod']:
         message = Message('!command add level=%s Kappa' % level)
         self.assertEqual(
             library.parse_action_message(message, 'botgotsthis'),
             CommandActionTokens('add', 'botgotsthis', 'globalMod', 'Kappa',
                                 ''), level)
 def test_level_admin(self):
     for level in ['admin', 'twitchadmin']:
         message = Message('!command add level=%s Kappa' % level)
         self.assertEqual(
             library.parse_action_message(message, 'botgotsthis'),
             CommandActionTokens('add', 'botgotsthis', 'admin', 'Kappa',
                                 ''), level)
 async def test_no_action(self):
     self.mock_input.return_value = CommandActionTokens(
         'test', self.broadcaster, '', 'Kappa', '')
     self.assertIs(
         await channel.process_command(self.args, self.broadcaster), False)
     self.mock_input.assert_called_once_with(self.message, self.broadcaster)
     self.assertFalse(self.channel.send.called)
 def test_level_owner(self):
     for level in ['owner', 'self', 'bot']:
         message = Message('!command add level=%s Kappa' % level)
         self.assertEqual(
             library.parse_action_message(message, 'botgotsthis'),
             CommandActionTokens('add', 'botgotsthis', 'owner', 'Kappa',
                                 ''), level)
 async def test_level_permission_wrong(self):
     self.mock_input.return_value = CommandActionTokens(
         'test', self.broadcaster, 'Kappa', 'Kappa', '')
     self.assertIs(
         await channel.process_command(self.args, self.broadcaster), True)
     self.mock_input.assert_called_once_with(self.message, self.broadcaster)
     self.channel.send.assert_called_once_with(
         StrContains(self.args.nick, 'Invalid level'))
 async def test_rename(self, mock_rename):
     mock_rename.return_value = True
     input = CommandActionTokens('rename', self.broadcaster, '', '', '')
     self.mock_input.return_value = input
     self.assertIs(
         await channel.process_command(self.args, self.broadcaster), True)
     self.mock_input.assert_called_once_with(self.message, self.broadcaster)
     mock_rename.assert_called_once_with(self.args, input)
     self.assertFalse(self.channel.send.called)
 async def test_level_command_dberror(self):
     input = CommandActionTokens('', self.broadcaster, '',
                                 'Kappa', 'moderator')
     self.data.levelCustomCommand.return_value = False
     self.assertIs(await channel.level_command(self.args, input), True)
     self.data.levelCustomCommand.assert_called_once_with(
         self.broadcaster, '', 'Kappa', 'botgotsthis', 'moderator')
     self.channel.send.assert_called_once_with(
         StrContains(self.args.nick, 'Kappa', 'change', 'not', 'success'))
 async def test_delete_command_dberror(self):
     input = CommandActionTokens('', self.broadcaster, '',
                                 'Kappa', 'PogChamp')
     self.data.deleteCustomCommand.return_value = False
     self.assertIs(await channel.delete_command(self.args, input), True)
     self.data.deleteCustomCommand.assert_called_once_with(
         self.broadcaster, '', 'Kappa', 'botgotsthis')
     self.channel.send.assert_called_once_with(
         StrContains(self.args.nick, 'Kappa', 'remove', 'not', 'success'))
 async def test_append_command(self):
     input = CommandActionTokens('', self.broadcaster, '',
                                 'Kappa', 'PogChamp')
     self.data.appendCustomCommand.return_value = True
     self.assertIs(await channel.append_command(self.args, input), True)
     self.data.appendCustomCommand.assert_called_once_with(
         self.broadcaster, '', 'Kappa', 'PogChamp', 'botgotsthis')
     self.channel.send.assert_called_once_with(
         StrContains(self.args.nick, 'Kappa', 'append', 'success'))
 async def test_level_command_unknown_level(self):
     input = CommandActionTokens('', self.broadcaster, '',
                                 'Kappa', 'PogChamp DansGame')
     self.data.levelCustomCommand.return_value = True
     self.assertIs(await channel.level_command(self.args, input), True)
     self.assertFalse(self.data.levelCustomCommand.called)
     self.channel.send.assert_called_once_with(
         StrContains(self.args.nick, 'PogChamp DansGame', 'invalid',
                     'permission'))
 async def test_command_property_empty(self, mock_list):
     mock_list.properties.return_value = []
     input = CommandActionTokens('', self.broadcaster, '',
                                 'Kappa', 'someproperty PogChamp')
     self.permissionSet['broadcaster'] = True
     self.assertIs(await channel.command_property(self.args, input), True)
     self.assertFalse(self.data.processCustomCommandProperty.called)
     self.channel.send.assert_called_once_with(
         StrContains(self.args.nick, 'someproperty', 'property', 'not',
                     'exist'))
 async def test_raw_command_not_exist(self, mock_whisper, mock_config):
     mock_config.messageLimit = 100
     input = CommandActionTokens('', self.broadcaster, '',
                                 'Kappa', 'PogChamp')
     self.data.getCustomCommand.return_value = None
     self.assertIs(await channel.raw_command(self.args, input), True)
     self.data.getCustomCommand.assert_called_once_with(
         self.broadcaster, '', 'Kappa')
     self.channel.send.assert_called_once_with(
         StrContains(self.args.nick, 'Kappa', 'not', 'exist'))
     self.assertFalse(mock_whisper.called)
 async def test_command_property_no_value(self, mock_list):
     mock_list.properties.return_value = ['someproperty']
     input = CommandActionTokens('', self.broadcaster, '',
                                 'Kappa', 'someproperty')
     self.data.processCustomCommandProperty.return_value = True
     self.permissionSet['broadcaster'] = True
     self.assertIs(await channel.command_property(self.args, input), True)
     self.data.processCustomCommandProperty.assert_called_once_with(
         self.broadcaster, '', 'Kappa', 'someproperty', None)
     self.channel.send.assert_called_once_with(
         StrContains(self.args.nick, 'Kappa', 'someproperty', 'unset'))
 async def test_raw_command(self, mock_whisper, mock_config):
     mock_config.messageLimit = 100
     input = CommandActionTokens('', self.broadcaster, '',
                                 'Kappa', 'PogChamp')
     self.data.getCustomCommand.return_value = 'KappaRoss KappaPride'
     self.assertIs(await channel.raw_command(self.args, input), True)
     self.data.getCustomCommand.assert_called_once_with(
         self.broadcaster, '', 'Kappa')
     mock_whisper.assert_called_once_with(
         'botgotsthis',
         IterableMatch('KappaRoss KappaPride'))
     self.assertFalse(self.channel.send.called)
Exemple #17
0
def parse_action_message(message: Message,
                         broadcaster: str) -> Optional[CommandActionTokens]:
    try:
        action = message.lower[1]
        i = 2
        level: Optional[str] = None
        if message[2].startswith('level='):
            i = 3
            level = message.lower[2][len('level='):]
        if level in permissions:
            level = permissions[level]
        else:
            level = None
        command = message[i]
        text = message[i + 1:]

        return CommandActionTokens(action, broadcaster, level, command, text)
    except Exception:
        return None
 def test_level_unknown(self):
     message = Message('!command add level=abc Kappa')
     self.assertEqual(
         library.parse_action_message(message, 'botgotsthis'),
         CommandActionTokens('add', 'botgotsthis', None, 'Kappa', ''))
 def test_level_5_args(self):
     message = Message('!command add level=owner Kappa PogChamp  KreyGasm')
     self.assertEqual(
         library.parse_action_message(message, 'botgotsthis'),
         CommandActionTokens('add', 'botgotsthis', 'owner', 'Kappa',
                             'PogChamp  KreyGasm'))
 def test_wrong_level_2_args(self):
     message = Message('!command level=owner add')
     self.assertEqual(
         library.parse_action_message(message, 'botgotsthis'),
         CommandActionTokens('level=owner', 'botgotsthis', '', 'add', ''))
 def test_4_args(self):
     message = Message('!command add Kappa PogChamp')
     self.assertEqual(
         library.parse_action_message(message, 'botgotsthis'),
         CommandActionTokens('add', 'botgotsthis', '', 'Kappa', 'PogChamp'))
 async def test_rename_command_blank(self):
     input = CommandActionTokens('', self.broadcaster, '', 'Kappa', '')
     self.assertIs(await channel.rename_command(self.args, input), True)
     self.assertFalse(self.data.renameCustomCommand.called)
     self.channel.send.assert_called_once_with(
         StrContains(self.args.nick, 'specify', 'command', 'rename'))