summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/e2e/image_scp_test.go5
-rw-r--r--test/system/900-ssh.bats61
-rw-r--r--test/system/helpers.bash15
3 files changed, 81 insertions, 0 deletions
diff --git a/test/e2e/image_scp_test.go b/test/e2e/image_scp_test.go
index 77fe810bd..2c275d974 100644
--- a/test/e2e/image_scp_test.go
+++ b/test/e2e/image_scp_test.go
@@ -3,9 +3,11 @@ package integration
import (
"io/ioutil"
"os"
+ "path/filepath"
"github.com/containers/common/pkg/config"
. "github.com/containers/podman/v4/test/utils"
+ "github.com/containers/storage/pkg/homedir"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
. "github.com/onsi/gomega/gexec"
@@ -56,6 +58,9 @@ var _ = Describe("podman image scp", func() {
})
It("podman image scp with proper connection", func() {
+ if _, err := os.Stat(filepath.Join(homedir.Get(), ".ssh", "known_hosts")); err != nil {
+ Skip("known_hosts does not exist or is not accessible")
+ }
cmd := []string{"system", "connection", "add",
"--default",
"QA",
diff --git a/test/system/900-ssh.bats b/test/system/900-ssh.bats
new file mode 100644
index 000000000..0757f5838
--- /dev/null
+++ b/test/system/900-ssh.bats
@@ -0,0 +1,61 @@
+#!/usr/bin/env bats
+#
+# Simplest set of podman tests. If any of these fail, we have serious problems.
+#
+
+load helpers
+
+# Override standard setup! We don't yet trust podman-images or podman-rm
+function setup() {
+ if ! is_remote; then
+ skip "only applicable on podman-remote"
+ fi
+
+ basic_setup
+}
+
+function teardown() {
+ if ! is_remote; then
+ return
+ fi
+
+ # In case test function failed to clean up
+ if [[ -n $_SERVICE_PID ]]; then
+ run kill $_SERVICE_PID
+ fi
+
+ # see test/system/272-system-connection.bats for why this is needed
+ mount \
+ | grep $PODMAN_TMPDIR \
+ | awk '{print $3}' \
+ | xargs -l1 --no-run-if-empty umount
+
+ run_podman system connection rm --all
+
+ basic_teardown
+}
+
+function _run_podman_remote() {
+ PODMAN=${PODMAN%%--url*} run_podman "$@"
+}
+
+@test "podman --ssh test" {
+ skip_if_no_ssh "cannot run these tests without an ssh binary"
+ # Start server
+ _SERVICE_PORT=$(random_free_port 63000-64999)
+
+ ${PODMAN%%-remote*} --root ${PODMAN_TMPDIR}/root \
+ --runroot ${PODMAN_TMPDIR}/runroot \
+ system service -t 99 tcp:localhost:$_SERVICE_PORT &
+ _SERVICE_PID=$!
+ wait_for_port localhost $_SERVICE_PORT
+
+ notme=${PODMAN_ROOTLESS_USER}
+
+ uid=$(id -u $notme)
+
+ run_podman 125 --ssh=native system connection add testing ssh://$notme@localhost:22/run/user/$uid/podman/podman.sock
+ is "$output" "Error: exit status 255"
+
+ # need to figure out how to podman remote test with the new ssh
+}
diff --git a/test/system/helpers.bash b/test/system/helpers.bash
index 19bc6547c..b821175bb 100644
--- a/test/system/helpers.bash
+++ b/test/system/helpers.bash
@@ -347,6 +347,10 @@ function wait_for_port() {
# BEGIN miscellaneous tools
# Shortcuts for common needs:
+function no_ssh() {
+ [ "$(man ssh)" -ne 0 ]
+}
+
function is_ubuntu() {
grep -qiw ubuntu /etc/os-release
}
@@ -470,6 +474,17 @@ function _add_label_if_missing() {
}
######################
+# skip_if_no_ssh # ...with an optional message
+######################
+function skip_if_no_ssh() {
+ if no_ssh; then
+ local msg=$(_add_label_if_missing "$1" "ssh")
+ skip "${msg:-not applicable with no ssh binary}"
+ fi
+}
+
+
+######################
# skip_if_rootless # ...with an optional message
######################
function skip_if_rootless() {