From e4653b82bdb63469fd7279cc2b37c48a9d838665 Mon Sep 17 00:00:00 2001 From: Andreas Schneider Date: Fri, 11 Sep 2015 11:24:53 +0200 Subject: [PATCH] tests: Migrate torture_proxycommand to new cwrap test Signed-off-by: Andreas Schneider --- tests/client/CMakeLists.txt | 4 +- tests/client/torture_proxycommand.c | 75 +++++++++++++++++++++-------- 2 files changed, 56 insertions(+), 23 deletions(-) diff --git a/tests/client/CMakeLists.txt b/tests/client/CMakeLists.txt index b5414f47..e111c439 100644 --- a/tests/client/CMakeLists.txt +++ b/tests/client/CMakeLists.txt @@ -2,7 +2,6 @@ project(clienttests C) find_package(socket_wrapper) -add_cmocka_test(torture_proxycommand torture_proxycommand.c ${TORTURE_LIBRARY}) add_cmocka_test(torture_session torture_session.c ${TORTURE_LIBRARY}) add_cmocka_test(torture_request_env torture_request_env.c ${TORTURE_LIBRARY}) if (WITH_SFTP) @@ -16,7 +15,8 @@ set(LIBSSH_CLIENT_TESTS torture_connect torture_auth torture_forward - torture_knownhosts) + torture_knownhosts + torture_proxycommand) foreach(_CLI_TEST ${LIBSSH_CLIENT_TESTS}) add_cmocka_test(${_CLI_TEST} ${_CLI_TEST}.c ${TORTURE_LIBRARY}) diff --git a/tests/client/torture_proxycommand.c b/tests/client/torture_proxycommand.c index 5167f492..025fa8dc 100644 --- a/tests/client/torture_proxycommand.c +++ b/tests/client/torture_proxycommand.c @@ -4,58 +4,91 @@ #include #include "libssh/priv.h" -static int setup(void **state) { - ssh_session session = ssh_new(); +#include +#include - *state = session; +static int sshd_setup(void **state) +{ + torture_setup_sshd_server(state); return 0; } -static int teardown(void **state) { - ssh_free(*state); +static int sshd_teardown(void **state) { + torture_teardown_sshd_server(state); + + return 0; +} + +static int session_setup(void **state) +{ + struct torture_state *s = *state; + int verbosity = torture_libssh_verbosity(); + struct passwd *pwd; + + pwd = getpwnam("bob"); + assert_non_null(pwd); + setuid(pwd->pw_uid); + + s->ssh.session = ssh_new(); + assert_non_null(s->ssh.session); + + ssh_options_set(s->ssh.session, SSH_OPTIONS_LOG_VERBOSITY, &verbosity); + ssh_options_set(s->ssh.session, SSH_OPTIONS_HOST, TORTURE_SSH_SERVER); + + ssh_options_set(s->ssh.session, SSH_OPTIONS_USER, TORTURE_SSH_USER_ALICE); + + return 0; +} + +static int session_teardown(void **state) +{ + struct torture_state *s = *state; + + ssh_disconnect(s->ssh.session); + ssh_free(s->ssh.session); return 0; } static void torture_options_set_proxycommand(void **state) { - ssh_session session = *state; + struct torture_state *s = *state; + ssh_session session = s->ssh.session; int rc; - rc = ssh_options_set(session, SSH_OPTIONS_HOST, "localhost"); - assert_true(rc == 0); - - rc = ssh_options_set(session, SSH_OPTIONS_PROXYCOMMAND, "nc localhost 22"); - assert_true(rc == 0); + rc = ssh_options_set(session, SSH_OPTIONS_PROXYCOMMAND, "nc 127.0.0.10 22"); + assert_int_equal(rc, 0); rc = ssh_connect(session); - assert_true(rc == SSH_OK); + assert_int_equal(rc, SSH_OK); } static void torture_options_set_proxycommand_notexist(void **state) { - ssh_session session = *state; + struct torture_state *s = *state; + ssh_session session = s->ssh.session; int rc; - rc = ssh_options_set(session, SSH_OPTIONS_HOST, "localhost"); - assert_true(rc == 0); - rc = ssh_options_set(session, SSH_OPTIONS_PROXYCOMMAND, "this_command_does_not_exist"); - assert_true(rc == SSH_OK); + assert_int_equal(rc, SSH_OK); rc = ssh_connect(session); - assert_true(rc == SSH_ERROR); + assert_int_equal(rc, SSH_ERROR); } int torture_run_tests(void) { int rc; struct CMUnitTest tests[] = { - cmocka_unit_test_setup_teardown(torture_options_set_proxycommand, setup, teardown), - cmocka_unit_test_setup_teardown(torture_options_set_proxycommand_notexist, setup, teardown), + cmocka_unit_test_setup_teardown(torture_options_set_proxycommand, + session_setup, + session_teardown), + cmocka_unit_test_setup_teardown(torture_options_set_proxycommand_notexist, + session_setup, + session_teardown), }; ssh_init(); torture_filter_tests(tests); - rc = cmocka_run_group_tests(tests, NULL, NULL); + rc = cmocka_run_group_tests(tests, sshd_setup, sshd_teardown); ssh_finalize(); return rc;