def test_loseConnectionTwice(self): """ If TLSMemoryBIOProtocol.loseConnection is called multiple times, all but the first call have no effect. """ wrapperFactory = TLSMemoryBIOFactory(ClientContextFactory(), True, ClientFactory()) tlsProtocol = TLSMemoryBIOProtocol(wrapperFactory, Protocol()) transport = StringTransport() tlsProtocol.makeConnection(transport) self.assertEqual(tlsProtocol.disconnecting, False) # Make sure loseConnection calls _shutdownTLS the first time (mostly # to make sure we've overriding it correctly): calls = [] def _shutdownTLS(shutdown=tlsProtocol._shutdownTLS): calls.append(1) return shutdown() tlsProtocol._shutdownTLS = _shutdownTLS tlsProtocol.loseConnection() self.assertEqual(tlsProtocol.disconnecting, True) self.assertEqual(calls, [1]) # Make sure _shutdownTLS isn't called a second time: tlsProtocol.loseConnection() self.assertEqual(calls, [1])