support/testing: add runtime tests for python-scp
Add a basic test involving a local SSH connection (based on dropbear server). The test validates that we are able, through python-scp, to fetch the /etc/hostname file. The test needs some basic key initialization to allow connecting to the dropbear server, hence the custom run_sample_scripts method. Signed-off-by: Alexis Lothoré <alexis.lothore@bootlin.com> [Julien: - remove unneeded os import in test script - execute setup commands with assertRunOk() - create /root/.ssh with 0700 mode - run sample scripts using super() - check in the sample file that copied files are the same ] Signed-off-by: Julien Olivain <ju.o@free.fr>
This commit is contained in:
committed by
Julien Olivain
parent
3963c3c06e
commit
7470587cfa
15
support/testing/tests/package/sample_python_scp.py
Normal file
15
support/testing/tests/package/sample_python_scp.py
Normal file
@@ -0,0 +1,15 @@
|
||||
import filecmp
|
||||
|
||||
from paramiko import SSHClient
|
||||
from paramiko.client import AutoAddPolicy
|
||||
|
||||
from scp import SCPClient
|
||||
|
||||
ssh_client = SSHClient()
|
||||
ssh_client.load_system_host_keys()
|
||||
ssh_client.set_missing_host_key_policy(AutoAddPolicy)
|
||||
ssh_client.connect('127.0.0.1', username='root')
|
||||
scp_client = SCPClient(ssh_client.get_transport())
|
||||
scp_client.get("/etc/hostname", "/tmp/hostname")
|
||||
|
||||
assert filecmp("/etc/hostname", "/tmp/hostname")
|
||||
21
support/testing/tests/package/test_python_scp.py
Normal file
21
support/testing/tests/package/test_python_scp.py
Normal file
@@ -0,0 +1,21 @@
|
||||
from tests.package.test_python import TestPythonPackageBase
|
||||
|
||||
|
||||
class TestPythonSCP(TestPythonPackageBase):
|
||||
__test__ = True
|
||||
config = TestPythonPackageBase.config + \
|
||||
"""
|
||||
BR2_PACKAGE_DROPBEAR=y
|
||||
BR2_PACKAGE_PYTHON3=y
|
||||
BR2_PACKAGE_PYTHON_SCP=y
|
||||
"""
|
||||
sample_scripts = ["tests/package/sample_python_scp.py"]
|
||||
|
||||
def run_sample_scripts(self):
|
||||
# Allow passwordless root login in SSH server
|
||||
self.assertRunOk("mkdir -m 0700 /root/.ssh")
|
||||
self.assertRunOk("dropbearkey -t ed25519 -f .ssh/id_dropbear")
|
||||
self.assertRunOk("dropbearkey -y -f .ssh/id_dropbear | grep '^ssh-ed25519' > .ssh/authorized_keys")
|
||||
self.assertRunOk("dropbearconvert dropbear openssh .ssh/id_dropbear .ssh/id_ed25519")
|
||||
|
||||
super().run_sample_scripts()
|
||||
Reference in New Issue
Block a user