summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoraiordache <anca.iordache@docker.com>2021-02-18 12:56:46 +0100
committerUlysses Souza <ulysses.souza@docker.com>2021-02-18 10:56:29 -0300
commit2807fde6c991596ac12853995c931c925128ee61 (patch)
tree511cbbccee20a5094febac6f94cc4a00f94aafd0
parentd065daf522195d9bc9d6da56a67a026f5ebe2c17 (diff)
downloaddocker-py-2807fde6c991596ac12853995c931c925128ee61.tar.gz
Fix SSH port parsing and add regression tests
Signed-off-by: aiordache <anca.iordache@docker.com>
-rw-r--r--docker/transport/sshconn.py8
-rw-r--r--tests/unit/sshadapter_test.py32
2 files changed, 36 insertions, 4 deletions
diff --git a/docker/transport/sshconn.py b/docker/transport/sshconn.py
index 7593b5b..fbfdf41 100644
--- a/docker/transport/sshconn.py
+++ b/docker/transport/sshconn.py
@@ -30,10 +30,10 @@ class SSHSocket(socket.socket):
self.host = host
self.port = None
self.user = None
- if ':' in host:
- self.host, self.port = host.split(':')
+ if ':' in self.host:
+ self.host, self.port = self.host.split(':')
if '@' in self.host:
- self.user, self.host = host.split('@')
+ self.user, self.host = self.host.split('@')
self.proc = None
@@ -167,7 +167,7 @@ class SSHHTTPAdapter(BaseHTTPAdapter):
def __init__(self, base_url, timeout=60,
pool_connections=constants.DEFAULT_NUM_POOLS,
max_pool_size=constants.DEFAULT_MAX_POOL_SIZE,
- shell_out=True):
+ shell_out=False):
self.ssh_client = None
if not shell_out:
self._create_paramiko_client(base_url)
diff --git a/tests/unit/sshadapter_test.py b/tests/unit/sshadapter_test.py
new file mode 100644
index 0000000..ddee592
--- /dev/null
+++ b/tests/unit/sshadapter_test.py
@@ -0,0 +1,32 @@
+import unittest
+import docker
+from docker.transport.sshconn import SSHSocket
+
+class SSHAdapterTest(unittest.TestCase):
+ def test_ssh_hostname_prefix_trim(self):
+ conn = docker.transport.SSHHTTPAdapter(base_url="ssh://user@hostname:1234", shell_out=True)
+ assert conn.ssh_host == "user@hostname:1234"
+
+ def test_ssh_parse_url(self):
+ c = SSHSocket(host="user@hostname:1234")
+ assert c.host == "hostname"
+ assert c.port == "1234"
+ assert c.user == "user"
+
+ def test_ssh_parse_hostname_only(self):
+ c = SSHSocket(host="hostname")
+ assert c.host == "hostname"
+ assert c.port == None
+ assert c.user == None
+
+ def test_ssh_parse_user_and_hostname(self):
+ c = SSHSocket(host="user@hostname")
+ assert c.host == "hostname"
+ assert c.port == None
+ assert c.user == "user"
+
+ def test_ssh_parse_hostname_and_port(self):
+ c = SSHSocket(host="hostname:22")
+ assert c.host == "hostname"
+ assert c.port == "22"
+ assert c.user == None \ No newline at end of file