From 22b1e5bc7c32e24b7b39435af2321ba281018dd6 Mon Sep 17 00:00:00 2001 From: Andreas Schneider Date: Sun, 6 Feb 2011 15:33:17 +0100 Subject: tests: Added test for sftp directory functions. --- tests/client/CMakeLists.txt | 1 + tests/client/torture_sftp_dir.c | 67 +++++++++++++++++++++++++++++++++++++++++ tests/torture.c | 5 +++ 3 files changed, 73 insertions(+) create mode 100644 tests/client/torture_sftp_dir.c (limited to 'tests') diff --git a/tests/client/CMakeLists.txt b/tests/client/CMakeLists.txt index 820df172..cfce09ea 100644 --- a/tests/client/CMakeLists.txt +++ b/tests/client/CMakeLists.txt @@ -7,4 +7,5 @@ add_cmockery_test(torture_knownhosts torture_knownhosts.c ${TORTURE_LIBRARY}) add_cmockery_test(torture_proxycommand torture_proxycommand.c ${TORTURE_LIBRARY}) if (WITH_SFTP) add_cmockery_test(torture_sftp_static torture_sftp_static.c ${TORTURE_LIBRARY}) + add_cmockery_test(torture_sftp_dir torture_sftp_dir.c ${TORTURE_LIBRARY}) endif (WITH_SFTP) diff --git a/tests/client/torture_sftp_dir.c b/tests/client/torture_sftp_dir.c new file mode 100644 index 00000000..68e59848 --- /dev/null +++ b/tests/client/torture_sftp_dir.c @@ -0,0 +1,67 @@ +#define LIBSSH_STATIC + +#include "torture.h" +#include "sftp.c" + +static void setup(void **state) { + ssh_session session; + struct torture_sftp *t; + char *host; + char *user; + char *password; + + host = getenv("TORTURE_HOST"); + if (host == NULL) { + host = (char *) "localhost"; + } + + user = getenv("TORTURE_USER"); + password = getenv("TORTURE_PASSWORD"); + + session = torture_ssh_session(host, user, password); + t = torture_sftp_session(session); + assert_false(t == NULL); + + *state = t; +} + +static void teardown(void **state) { + struct torture_sftp *t = *state; + + torture_rmdirs(t->testdir); + torture_sftp_close(t); +} + +static void torture_sftp_mkdir(void **state) { + struct torture_sftp *t = *state; + char tmpdir[128]; + int rc; + + snprintf(tmpdir, sizeof(tmpdir), "%s/mkdir_test", t->testdir); + + rc = sftp_mkdir(t->sftp, tmpdir, 0755); + assert_true(rc == 0); + + /* check if it really has been created */ + assert_true(torture_isdir(tmpdir)); + + rc = sftp_rmdir(t->sftp, tmpdir); + assert_true(rc == 0); + + /* check if it has been deleted */ + assert_false(torture_isdir(tmpdir)); +} + +int torture_run_tests(void) { + int rc; + const UnitTest tests[] = { + unit_test_setup_teardown(torture_sftp_mkdir, setup, teardown) + }; + + ssh_init(); + + rc = run_tests(tests); + ssh_finalize(); + + return rc; +} diff --git a/tests/torture.c b/tests/torture.c index 92d9c97a..1354752c 100644 --- a/tests/torture.c +++ b/tests/torture.c @@ -202,6 +202,7 @@ struct torture_sftp *torture_sftp_session(ssh_session session) { struct torture_sftp *t; char template[] = "/tmp/ssh_torture_XXXXXX"; char *p; + int rc; if (session == NULL) { return NULL; @@ -218,6 +219,10 @@ struct torture_sftp *torture_sftp_session(ssh_session session) { goto failed; } + rc = sftp_init(t->sftp); + if (rc < 0) { + goto failed; + } p = mkdtemp(template); if (p == NULL) { -- cgit v1.2.3