mirror of
				https://github.com/jlu5/PyLink.git
				synced 2025-11-04 00:47:21 +01:00 
			
		
		
		
	Fixes to clientbot._get_UID() behaviour
This commit is contained in:
		
							parent
							
								
									27eed3334b
								
							
						
					
					
						commit
						304631ebd0
					
				@ -929,7 +929,7 @@ class PyLinkNetworkCoreWithUtils(PyLinkNetworkCore):
 | 
			
		||||
                        log.debug('Mode %s: This mode is a prefix mode.', mode)
 | 
			
		||||
                        arg = args.pop(0)
 | 
			
		||||
                        # Convert nicks to UIDs implicitly
 | 
			
		||||
                        arg = self._get_UID(arg) or arg
 | 
			
		||||
                        arg = self._get_UID(arg)
 | 
			
		||||
                        if arg not in self.users:  # Target doesn't exist, skip it.
 | 
			
		||||
                            log.debug('(%s) Skipping setting mode "%s %s"; the '
 | 
			
		||||
                                      'target doesn\'t seem to exist!', self.name,
 | 
			
		||||
 | 
			
		||||
@ -44,7 +44,7 @@ class ClientbotBaseProtocol(PyLinkNetworkCoreWithUtils):
 | 
			
		||||
            # If this sender doesn't already exist, spawn a new client.
 | 
			
		||||
            idsource = self.spawn_client(nick, ident or 'unknown', host or 'unknown',
 | 
			
		||||
                                         server=self.uplink, realname=FALLBACK_REALNAME).uid
 | 
			
		||||
        return idsource
 | 
			
		||||
        return idsource or nick  # Return input if missing per upstream spec
 | 
			
		||||
 | 
			
		||||
    def away(self, source, text):
 | 
			
		||||
        """STUB: sets away messages for internal clients."""
 | 
			
		||||
 | 
			
		||||
@ -1,17 +1,37 @@
 | 
			
		||||
import unittest
 | 
			
		||||
import unittest.mock
 | 
			
		||||
 | 
			
		||||
from pylinkirc.protocols import clientbot
 | 
			
		||||
from pylinkirc.classes import User
 | 
			
		||||
 | 
			
		||||
import protocol_test_fixture as ptf
 | 
			
		||||
 | 
			
		||||
class UnrealProtocolTest(ptf.BaseProtocolTest):
 | 
			
		||||
class ClientbotProtocolTest(ptf.BaseProtocolTest):
 | 
			
		||||
    proto_class = clientbot.ClientbotWrapperProtocol
 | 
			
		||||
 | 
			
		||||
    def setUp(self):
 | 
			
		||||
        super().setUp()
 | 
			
		||||
        self.p.pseudoclient = self._make_user('PyLink', uid='ClientbotInternal@0')
 | 
			
		||||
 | 
			
		||||
    def test_get_UID(self):
 | 
			
		||||
        u_internal = self._make_user('you', uid='100')
 | 
			
		||||
        check = lambda inp, expected: self.assertEqual(self.p._get_UID(inp), expected)
 | 
			
		||||
 | 
			
		||||
        # External clients are returned by the matcher
 | 
			
		||||
        with unittest.mock.patch.object(self.proto_class, 'is_internal_client', return_value=False) as m:
 | 
			
		||||
            check('you', '100')    # nick to UID
 | 
			
		||||
            check('YOu', '100')
 | 
			
		||||
            check('100', '100')    # already a UID
 | 
			
		||||
            check('Test', 'Test')  # non-existent
 | 
			
		||||
 | 
			
		||||
        # Internal clients are ignored
 | 
			
		||||
        with unittest.mock.patch.object(self.proto_class, 'is_internal_client', return_value=True) as m:
 | 
			
		||||
            check('you', 'you')
 | 
			
		||||
            check('YOu', 'YOu')
 | 
			
		||||
            check('100', '100')    # already a UID
 | 
			
		||||
            check('Test', 'Test')  # non-existent
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    # In the future we will have protocol specific test cases here
 | 
			
		||||
 | 
			
		||||
if __name__ == '__main__':
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user