From 737f1f21e1454b9876493d83980ac40a003a31ac Mon Sep 17 00:00:00 2001 From: Jean-Paul Calderone Date: Tue, 24 Nov 2020 14:04:35 -0500 Subject: [PATCH 1/3] news fragment --- newsfragments/3520.minor | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 newsfragments/3520.minor diff --git a/newsfragments/3520.minor b/newsfragments/3520.minor new file mode 100644 index 000000000..e69de29bb From 1a5efa5ec9a9c1c5f30b9832725e5ec043d33ec8 Mon Sep 17 00:00:00 2001 From: Jean-Paul Calderone Date: Tue, 24 Nov 2020 14:05:00 -0500 Subject: [PATCH 2/3] Just let the test use the real SFTPServer service --- src/allmydata/client.py | 2 +- src/allmydata/frontends/sftpd.py | 2 ++ src/allmydata/test/data/openssh-rsa-2048 | 27 ++++++++++++++++++ src/allmydata/test/data/openssh-rsa-2048.pub | 1 + src/allmydata/test/test_client.py | 30 ++++++++++++++------ 5 files changed, 52 insertions(+), 10 deletions(-) create mode 100644 src/allmydata/test/data/openssh-rsa-2048 create mode 100644 src/allmydata/test/data/openssh-rsa-2048.pub diff --git a/src/allmydata/client.py b/src/allmydata/client.py index a768ba354..47073dbca 100644 --- a/src/allmydata/client.py +++ b/src/allmydata/client.py @@ -1071,7 +1071,7 @@ class _Client(node.Node, pollmixin.PollMixin): if accountfile: accountfile = self.config.get_config_path(accountfile) accounturl = self.config.get_config("sftpd", "accounts.url", None) - sftp_portstr = self.config.get_config("sftpd", "port", "8022") + sftp_portstr = self.config.get_config("sftpd", "port", "tcp:8022") pubkey_file = self.config.get_config("sftpd", "host_pubkey_file") privkey_file = self.config.get_config("sftpd", "host_privkey_file") diff --git a/src/allmydata/frontends/sftpd.py b/src/allmydata/frontends/sftpd.py index db914fa45..b25ac0270 100644 --- a/src/allmydata/frontends/sftpd.py +++ b/src/allmydata/frontends/sftpd.py @@ -1975,6 +1975,8 @@ class Dispatcher(object): class SFTPServer(service.MultiService): + name = "frontend:sftp" + def __init__(self, client, accountfile, accounturl, sftp_portstr, pubkey_file, privkey_file): precondition(isinstance(accountfile, (unicode, NoneType)), accountfile) diff --git a/src/allmydata/test/data/openssh-rsa-2048 b/src/allmydata/test/data/openssh-rsa-2048 new file mode 100644 index 000000000..9c8669d03 --- /dev/null +++ b/src/allmydata/test/data/openssh-rsa-2048 @@ -0,0 +1,27 @@ +-----BEGIN OPENSSH PRIVATE KEY----- +b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABFwAAAAdzc2gtcn +NhAAAAAwEAAQAAAQEA8eSX2j8BNsH1yEHJpRrXvRDwG605hzxjhfz7me9Vz2t5mUxzEELn +PefYJi8bqZnHOaOI2HvFU8E+m2zZemDPh5gry911R9AanTNpaSgkwf1s0gMhVL/IEo0FV3 +pEZvcBevbWZD67narrUy4al1OREolM34VPgsR0FvpAH9dGHfUevFdX/I5LloxKHlXwpbY+ +zuX0ZaaLqE15/NzFAFwdyf8A46Y546dj8b1y9seWgh7c3dVghhJrVmx2b0QNWtBBNt9831 +zR4OMS3d8nFKgMaEZQnAtt9IrVAV7a+KoAzM0XbC/hxlq3CfuMns5UI/pfJnO74ubITU+x +w0X74v6xOwAAA8gG6fYoBun2KAAAAAdzc2gtcnNhAAABAQDx5JfaPwE2wfXIQcmlGte9EP +AbrTmHPGOF/PuZ71XPa3mZTHMQQuc959gmLxupmcc5o4jYe8VTwT6bbNl6YM+HmCvL3XVH +0BqdM2lpKCTB/WzSAyFUv8gSjQVXekRm9wF69tZkPrudqutTLhqXU5ESiUzfhU+CxHQW+k +Af10Yd9R68V1f8jkuWjEoeVfCltj7O5fRlpouoTXn83MUAXB3J/wDjpjnjp2PxvXL2x5aC +Htzd1WCGEmtWbHZvRA1a0EE233zfXNHg4xLd3ycUqAxoRlCcC230itUBXtr4qgDMzRdsL+ +HGWrcJ+4yezlQj+l8mc7vi5shNT7HDRfvi/rE7AAAAAwEAAQAAAQBc8ukC/RjbULbAJ79z +SRhDV2HcULj9ZVAc6XRI13XSyUqlhIHmar7uw8sECTAJAMVUOanY/d56a5RCJxZ+dvrn8K +pLoSJy4N2JMHs95CYTwOzy2i8RoMwhjLzTu3DTW/DerkD9rjlrwYTBpsKjCYKCa+31KgW+ +ivzM44aGdbNEyO+yHaxdcyEr3OLcRMppgZmwTieFnG053lCP5XyYRQmZ1a78G6WOzpOgbO +2N6Z1sbEqTMVd3oxFZAbmqA8kE4jLJzRcso/SSK5NDs22JzMfxByJQSlitWzDDvHdWpQpy +8C6Eu7+48ataLI68VOOXuDWDy9Dck0ev89u7Z4vNLWBhAAAAgAndOZZ0C179Um6sn6gmfM +0ttXEaSIqYNGRhkoYqn9vvw03bOMbSnqdEJiwFhbE/rWv7PypB5MeY7tRoCyBMWsUYj0pA +HKSl68diLr5g5EOIRGAWu8e//7T2HgZKOo+VaG1IXgmb7PUoAJ6Tzsmb4jdnYfg+BP/TDd +e9yCcoiT2fAAAAgQD6T7Kr6ECg0ME8vt/ixsjKdA2zS9SIHyjCMXbdMv1Ok1hkr5rRWbbZ +jm79fF+a8pOQUg30Qw2JUx7II50akt2xL6zesGDDUcOHD2GE/B6Ftji53G3fwWZCqeQ5sD +YP25qAWlrqDBGJvF+hkEdlceS8etYJ3XWXjNIYwfR7frQvkQAAAIEA92Pq3FWH63TS3Lqe +mQjhfNV75tU0AwENG+xlI1g0nQb7Qsdbm6rIg6XqewUfw03Q+/AqPvwG/1mbyVF7jRZ+qw +cl69yM70c9qY74GHjIIOOcC8Kgv29LQrm/VqVp0Lesn5RA8SIiLcMfyYBTEX8V9VY99Zkd +v6WwRr4XK1bPRgsAAAAOZXhhcmt1bkBiYXJ5b24BAgMEBQ== +-----END OPENSSH PRIVATE KEY----- diff --git a/src/allmydata/test/data/openssh-rsa-2048.pub b/src/allmydata/test/data/openssh-rsa-2048.pub new file mode 100644 index 000000000..3c7a32df6 --- /dev/null +++ b/src/allmydata/test/data/openssh-rsa-2048.pub @@ -0,0 +1 @@ +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDx5JfaPwE2wfXIQcmlGte9EPAbrTmHPGOF/PuZ71XPa3mZTHMQQuc959gmLxupmcc5o4jYe8VTwT6bbNl6YM+HmCvL3XVH0BqdM2lpKCTB/WzSAyFUv8gSjQVXekRm9wF69tZkPrudqutTLhqXU5ESiUzfhU+CxHQW+kAf10Yd9R68V1f8jkuWjEoeVfCltj7O5fRlpouoTXn83MUAXB3J/wDjpjnjp2PxvXL2x5aCHtzd1WCGEmtWbHZvRA1a0EE233zfXNHg4xLd3ycUqAxoRlCcC230itUBXtr4qgDMzRdsL+HGWrcJ+4yezlQj+l8mc7vi5shNT7HDRfvi/rE7 exarkun@baryon diff --git a/src/allmydata/test/test_client.py b/src/allmydata/test/test_client.py index 0f0648a4c..f6d3d4b84 100644 --- a/src/allmydata/test/test_client.py +++ b/src/allmydata/test/test_client.py @@ -1,5 +1,4 @@ import os, sys -import mock from functools import ( partial, ) @@ -422,19 +421,32 @@ class Basic(testutil.ReallyEqualMixin, unittest.TestCase): """ configuration for sftpd results in it being started """ + root = FilePath(self.mktemp()) + root.makedirs() + accounts = root.child(b"sftp-accounts") + accounts.touch() + + data = FilePath(__file__).sibling(b"data") + privkey = data.child(b"openssh-rsa-2048") + pubkey = data.child(b"openssh-rsa-2048.pub") + basedir = u"client.Basic.test_ftp_create" create_node_dir(basedir, "testing") with open(os.path.join(basedir, "tahoe.cfg"), "w") as f: - f.write( + f.write(( '[sftpd]\n' 'enabled = true\n' - 'accounts.file = foo\n' - 'host_pubkey_file = pubkey\n' - 'host_privkey_file = privkey\n' - ) - with mock.patch('allmydata.frontends.sftpd.SFTPServer') as p: - yield client.create_client(basedir) - self.assertTrue(p.called) + 'accounts.file = {}\n' + 'host_pubkey_file = {}\n' + 'host_privkey_file = {}\n' + ).format(accounts.path, pubkey.path, privkey.path)) + + client_node = yield client.create_client( + basedir, + ) + sftp = client_node.getServiceNamed("frontend:sftp") + self.assertIs(sftp.parent, client_node) + @defer.inlineCallbacks def test_ftp_auth_keyfile(self): From 17ed8afd2f7a33bb38a2d2249f1754662898f673 Mon Sep 17 00:00:00 2001 From: Jean-Paul Calderone Date: Mon, 30 Nov 2020 13:37:21 -0500 Subject: [PATCH 3/3] Make the new test data files installable There's an existing rule that matches *.txt --- .../data/{openssh-rsa-2048.pub => openssh-rsa-2048.pub.txt} | 0 .../test/data/{openssh-rsa-2048 => openssh-rsa-2048.txt} | 0 src/allmydata/test/test_client.py | 4 ++-- 3 files changed, 2 insertions(+), 2 deletions(-) rename src/allmydata/test/data/{openssh-rsa-2048.pub => openssh-rsa-2048.pub.txt} (100%) rename src/allmydata/test/data/{openssh-rsa-2048 => openssh-rsa-2048.txt} (100%) diff --git a/src/allmydata/test/data/openssh-rsa-2048.pub b/src/allmydata/test/data/openssh-rsa-2048.pub.txt similarity index 100% rename from src/allmydata/test/data/openssh-rsa-2048.pub rename to src/allmydata/test/data/openssh-rsa-2048.pub.txt diff --git a/src/allmydata/test/data/openssh-rsa-2048 b/src/allmydata/test/data/openssh-rsa-2048.txt similarity index 100% rename from src/allmydata/test/data/openssh-rsa-2048 rename to src/allmydata/test/data/openssh-rsa-2048.txt diff --git a/src/allmydata/test/test_client.py b/src/allmydata/test/test_client.py index f6d3d4b84..3fdec8a5f 100644 --- a/src/allmydata/test/test_client.py +++ b/src/allmydata/test/test_client.py @@ -427,8 +427,8 @@ class Basic(testutil.ReallyEqualMixin, unittest.TestCase): accounts.touch() data = FilePath(__file__).sibling(b"data") - privkey = data.child(b"openssh-rsa-2048") - pubkey = data.child(b"openssh-rsa-2048.pub") + privkey = data.child(b"openssh-rsa-2048.txt") + pubkey = data.child(b"openssh-rsa-2048.pub.txt") basedir = u"client.Basic.test_ftp_create" create_node_dir(basedir, "testing")