diff options
author | aiordache <anca.iordache@docker.com> | 2021-02-18 12:56:46 +0100 |
---|---|---|
committer | Ulysses Souza <ulysses.souza@docker.com> | 2021-02-18 10:56:29 -0300 |
commit | 2807fde6c991596ac12853995c931c925128ee61 (patch) | |
tree | 511cbbccee20a5094febac6f94cc4a00f94aafd0 | |
parent | d065daf522195d9bc9d6da56a67a026f5ebe2c17 (diff) | |
download | docker-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.py | 8 | ||||
-rw-r--r-- | tests/unit/sshadapter_test.py | 32 |
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 |