# HG changeset patch
# User Jeff Forcier <jeff@bitprophet.org>
# Date 1667598824 14400
#      Fri Nov 04 17:53:44 2022 -0400
# Node ID 83057e0532f44a493ca755a9151c974850633563
# Parent  fbd252532ab7462a12a8f884d68a4ff407549eb2
Write basic test re #2125, including kwarg default value tweak

diff --git a/paramiko/client.py b/paramiko/client.py
--- a/paramiko/client.py
+++ b/paramiko/client.py
@@ -237,7 +237,7 @@
         gss_trust_dns=True,
         passphrase=None,
         disabled_algorithms=None,
-        transport_factory=Transport,
+        transport_factory=None,
     ):
         """
         Connect to an SSH server and authenticate to it.  The server's host key
@@ -376,6 +376,8 @@
             if len(errors) == len(to_try):
                 raise NoValidConnectionsError(errors)
 
+        if transport_factory is None:
+            transport_factory = Transport
         t = self._transport = transport_factory(
             sock,
             gss_kex=gss_kex,
diff --git a/tests/test_client.py b/tests/test_client.py
--- a/tests/test_client.py
+++ b/tests/test_client.py
@@ -739,6 +739,40 @@
         call_arg = Transport.call_args[1]["disabled_algorithms"]
         assert call_arg == {"keys": ["ssh-dss"]}
 
+    @patch("paramiko.client.Transport")
+    def test_transport_factory_defaults_to_Transport(self, Transport):
+        sock, kex, creds, algos = Mock(), Mock(), Mock(), Mock()
+        SSHClient().connect(
+            "host",
+            sock=sock,
+            password="no",
+            gss_kex=kex,
+            gss_deleg_creds=creds,
+            disabled_algorithms=algos,
+        )
+        Transport.assert_called_once_with(
+            sock, gss_kex=kex, gss_deleg_creds=creds, disabled_algorithms=algos
+        )
+
+    @patch("paramiko.client.Transport")
+    def test_transport_factory_may_be_specified(self, Transport):
+        factory = Mock()
+        sock, kex, creds, algos = Mock(), Mock(), Mock(), Mock()
+        SSHClient().connect(
+            "host",
+            sock=sock,
+            password="no",
+            gss_kex=kex,
+            gss_deleg_creds=creds,
+            disabled_algorithms=algos,
+            transport_factory=factory,
+        )
+        factory.assert_called_once_with(
+            sock, gss_kex=kex, gss_deleg_creds=creds, disabled_algorithms=algos
+        )
+        # Safety check
+        assert not Transport.called
+
 
 class PasswordPassphraseTests(ClientTest):
     # TODO: most of these could reasonably be set up to use mocks/assertions