import getpass from unittest import TestCase from dvc.remote.ssh import RemoteSSH class TestRemoteSSH(TestCase): def test_user(self): url = "ssh://127.0.0.1:/path/to/dir" config = {"url": url} remote = RemoteSSH(None, config) self.assertEqual(remote.user, getpass.getuser()) user = "test1" url = "ssh://{}@127.0.0.1:/path/to/dir".format(user) config = {"url": url} remote = RemoteSSH(None, config) self.assertEqual(remote.user, user) user = "test2" config["user"] = user remote = RemoteSSH(None, config) self.assertEqual(remote.user, user) def test_url(self): user = "test" host = "123.45.67.89" port = 1234 path = "/path/to/dir" # URL ssh://[user@]host.xz[:port]/path url = "ssh://{}@{}:{}{}".format(user, host, port, path) config = {"url": url} remote = RemoteSSH(None, config) self.assertEqual(remote.user, user) self.assertEqual(remote.host, host) self.assertEqual(remote.port, port) self.assertEqual(remote.prefix, path) # SCP-like URL ssh://[user@]host.xz:path url = "ssh://{}@{}:{}".format(user, host, path) config = {"url": url} remote = RemoteSSH(None, config) self.assertEqual(remote.user, user) self.assertEqual(remote.host, host) self.assertEqual(remote.port, remote.DEFAULT_PORT) self.assertEqual(remote.prefix, path) def test_port(self): url = "ssh://127.0.0.1/path/to/dir" config = {"url": url} remote = RemoteSSH(None, config) self.assertEqual(remote.port, remote.DEFAULT_PORT) port = 1234 url = "ssh://127.0.0.1:{}/path/to/dir".format(port) config = {"url": url} remote = RemoteSSH(None, config) self.assertEqual(remote.port, port) port = 4321 config["port"] = port remote = RemoteSSH(None, config) self.assertEqual(remote.port, port)