Ejemplo n.º 1
0
 def test_loginTimeout(self):
     """
     Test that the login times out.
     """
     timeoutAuthServer = userauth.SSHUserAuthServer()
     timeoutAuthServer.clock = task.Clock()
     timeoutAuthServer.transport = FakeTransport(self.portal)
     timeoutAuthServer.serviceStarted()
     timeoutAuthServer.clock.advance(11 * 60 * 60)
     timeoutAuthServer.serviceStopped()
     self.assertEqual(
         timeoutAuthServer.transport.packets,
         [(transport.MSG_DISCONNECT, '\x00' * 3 +
           chr(transport.DISCONNECT_NO_MORE_AUTH_METHODS_AVAILABLE) +
           NS("you took too long") + NS(''))])
     self.assertTrue(timeoutAuthServer.transport.lostConnection)
Ejemplo n.º 2
0
 def test_ignoreUnknownCredInterfaces(self):
     """
     L{SSHUserAuthServer} sets up
     C{SSHUserAuthServer.supportedAuthentications} by checking the portal's
     credentials interfaces and mapping them to SSH authentication method
     strings.  If the Portal advertises an interface that
     L{SSHUserAuthServer} can't map, it should be ignored.  This is a white
     box test.
     """
     server = userauth.SSHUserAuthServer()
     server.transport = FakeTransport(self.portal)
     self.portal.registerChecker(AnonymousChecker())
     server.serviceStarted()
     server.serviceStopped()
     server.supportedAuthentications.sort()  # give a consistent order
     self.assertEqual(server.supportedAuthentications,
                      [b'password', b'publickey'])
Ejemplo n.º 3
0
    def test_loopback(self):
        """
        Test that the userauth server and client play nicely with each other.
        """
        server = userauth.SSHUserAuthServer()
        client = ClientUserAuth('foo', self.Factory.Service())

        # set up transports
        server.transport = transport.SSHTransportBase()
        server.transport.service = server
        server.transport.isEncrypted = lambda x: True
        client.transport = transport.SSHTransportBase()
        client.transport.service = client
        server.transport.sessionID = client.transport.sessionID = ''
        # don't send key exchange packet
        server.transport.sendKexInit = client.transport.sendKexInit = \
                lambda: None

        # set up server authentication
        server.transport.factory = self.Factory()
        server.passwordDelay = 0  # remove bad password delay
        realm = Realm()
        portal = Portal(realm)
        checker = SSHProtocolChecker()
        checker.registerChecker(PasswordChecker())
        checker.registerChecker(PrivateKeyChecker())
        checker.registerChecker(PAMChecker())
        checker.areDone = lambda aId: (len(checker.successfulCredentials[aId])
                                       == 3)
        portal.registerChecker(checker)
        server.transport.factory.portal = portal

        d = loopback.loopbackAsync(server.transport, client.transport)
        server.transport.transport.logPrefix = lambda: '_ServerLoopback'
        client.transport.transport.logPrefix = lambda: '_ClientLoopback'

        server.serviceStarted()
        client.serviceStarted()

        def check(ignored):
            self.assertEquals(server.transport.service.name, 'TestService')

        return d.addCallback(check)