From 3afba831342856581f5f2c3900af3fdf32d7ff0e Mon Sep 17 00:00:00 2001 From: Andreas Schneider Date: Sun, 20 Oct 2013 12:22:20 +0200 Subject: tests: Add torture forward test. --- tests/client/CMakeLists.txt | 1 + tests/client/torture_forward.c | 89 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 90 insertions(+) create mode 100644 tests/client/torture_forward.c (limited to 'tests') diff --git a/tests/client/CMakeLists.txt b/tests/client/CMakeLists.txt index e3bb45d..93bca6e 100644 --- a/tests/client/CMakeLists.txt +++ b/tests/client/CMakeLists.txt @@ -6,6 +6,7 @@ add_cmocka_test(torture_connect torture_connect.c ${TORTURE_LIBRARY}) add_cmocka_test(torture_knownhosts torture_knownhosts.c ${TORTURE_LIBRARY}) add_cmocka_test(torture_proxycommand torture_proxycommand.c ${TORTURE_LIBRARY}) add_cmocka_test(torture_session torture_session.c ${TORTURE_LIBRARY}) +add_cmocka_test(torture_forward torture_forward.c ${TORTURE_LIBRARY}) if (WITH_SFTP) add_cmocka_test(torture_sftp_static torture_sftp_static.c ${TORTURE_LIBRARY}) add_cmocka_test(torture_sftp_dir torture_sftp_dir.c ${TORTURE_LIBRARY}) diff --git a/tests/client/torture_forward.c b/tests/client/torture_forward.c new file mode 100644 index 0000000..377e947 --- /dev/null +++ b/tests/client/torture_forward.c @@ -0,0 +1,89 @@ +/* + * This file is part of the SSH Library + * + * Copyright (c) 2013 by Andreas Schneider + * + * The SSH Library is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation; either version 2.1 of the License, or (at your + * option) any later version. + * + * The SSH Library is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public + * License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with the SSH Library; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, + * MA 02111-1307, USA. + */ + +#define LIBSSH_STATIC + +#include "torture.h" +#include + +static void setup(void **state) +{ + ssh_session session; + const char *host; + const char *user; + const char *password; + + host = getenv("TORTURE_HOST"); + if (host == NULL) { + host = "localhost"; + } + + user = getenv("TORTURE_USER"); + password = getenv("TORTURE_PASSWORD"); + + session = torture_ssh_session(host, user, password); + + assert_false(session == NULL); + *state = session; +} + +static void teardown(void **state) +{ + ssh_session session = *state; + + assert_false(session == NULL); + + if (ssh_is_connected(session)) { + ssh_disconnect(session); + } + ssh_free(session); +} + +static void torture_ssh_forward(void **state) +{ + ssh_session session = *state; + ssh_channel c; + int bound_port; + int rc; + + rc = ssh_forward_listen(session, "127.0.0.1", 23424, &bound_port); + assert_int_equal(rc, SSH_OK); + + c = ssh_forward_accept(session, 50); + assert_null(c); + + ssh_channel_close(c); +} + +int torture_run_tests(void) { + int rc; + + const UnitTest tests[] = { + unit_test_setup_teardown(torture_ssh_forward, setup, teardown), + }; + + ssh_init(); + + rc = run_tests(tests); + + ssh_finalize(); + return rc; +} -- cgit