def createVirtualDevice(self): self.banner = 'Welcome to %s!\n' % self.hostname self.prompt = self.hostname + '> ' self.device = VirtualDevice(self.hostname, echo=True) ls_response = '-rw-r--r-- 1 sab nmc 1628 Aug 18 10:02 file' self.device.add_command('ls', ls_response) self.device.add_command('df', 'foobar') self.device.add_command('exit', '') self.device.add_command('this-command-causes-an-error', '\ncommand not found')
def __init__(self, device=None, **kwargs): """ @note: Also supports all keyword arguments that L{Protocol} supports. @keyword device: The L{Exscript.emulators.VirtualDevice} with which to communicate. """ Protocol.__init__(self, **kwargs) self.device = device self.init_done = False self.cancel = False self.response = None if not self.device: self.device = VirtualDevice('dummy', strict=False)
def __init__(self, device=None, **kwargs): """ .. HINT:: Also supports all keyword arguments that :class:`Protocol` supports. :keyword device: The :class:`Exscript.emulators.VirtualDevice` with which to communicate. """ Protocol.__init__(self, **kwargs) self.device = device self.init_done = False self.cancel = False self.response = None if not self.device: self.device = VirtualDevice('dummy', strict=False)
def setUp(self): self.host = 'localhost' self.port = 1235 self.device = VirtualDevice(self.host, echo=False) self.daemon = Server(self.host, self.port, self.device) self.device.set_prompt(self.host + ':' + str(self.port) + '> ')
def testDummy(self): # Test simple instance with banner. protocol = Dummy(device = self.device) protocol.connect('testhost') self.assertEqual(str(protocol.buffer), '') self.assertEqual(protocol.response, None) protocol.close() # Test login. protocol = Dummy(device = self.device) protocol.connect('testhost') self.assertEqual(str(protocol.buffer), '') self.assertEqual(protocol.response, None) protocol.login(self.account, flush = False) self.assertEqual(protocol.buffer.tail(len(self.prompt)), self.prompt) protocol.close() # Test login with user prompt. device = VirtualDevice(self.hostname, echo = True, login_type = VirtualDevice.LOGIN_TYPE_USERONLY) protocol = self._create_dummy_and_eat_banner(device) self.assertEqual(str(protocol.buffer), 'User: '******'Password: '******'User: '******'') self.assertEqual(protocol.response, self.user + '\r') protocol.close() # Test login with password prompt and wait parameter. device = VirtualDevice(self.hostname, echo = True, login_type = VirtualDevice.LOGIN_TYPE_PASSWORDONLY) protocol = self._create_dummy_and_eat_banner(device) self.assertEqual(str(protocol.buffer), 'Password: '******'') self.assertEqual(protocol.response, self.password + '\r') protocol.close() # Test login with port number. protocol = self._create_dummy_and_eat_banner(device, 1234) self.assertEqual(str(protocol.buffer), 'Password: '******'') self.assertEqual(protocol.response, self.password + '\r') protocol.close() # Test a custom response. device = VirtualDevice(self.hostname, echo = True, login_type = VirtualDevice.LOGIN_TYPE_NONE) protocol = Dummy(device = device) command = re.compile(r'testcommand') response = 'hello world\r\n%s> ' % self.hostname device.add_command(command, response, prompt = False) protocol.set_prompt(re.compile(r'> $')) protocol.connect('testhost') protocol.expect(re.compile(re.escape(self.banner))) self.assertEqual(protocol.response, '') self.assertEqual(str(protocol.buffer), self.prompt) protocol.expect_prompt() self.assertEqual(str(protocol.buffer), '') self.assertEqual(protocol.response, self.hostname) protocol.execute('testcommand') expected = 'testcommand\rhello world\r\n' + self.hostname self.assertEqual(protocol.response, expected) self.assertEqual(str(protocol.buffer), '') protocol.close()