aboutsummaryrefslogtreecommitdiff
path: root/tests/client
diff options
context:
space:
mode:
authorAndreas Schneider <asn@cynapses.org>2010-12-28 14:41:46 +0100
committerAndreas Schneider <asn@cynapses.org>2010-12-28 22:14:47 +0100
commit99d45c686ce8549e585b1a924ce23409fbc38dff (patch)
tree308f5993996431b7bf0fb6697be0fe115ce1ba24 /tests/client
parent2bc03d22a1cf88ec69f5ec13421f5ff8428217ca (diff)
downloadlibssh-99d45c686ce8549e585b1a924ce23409fbc38dff.tar.gz
libssh-99d45c686ce8549e585b1a924ce23409fbc38dff.tar.xz
libssh-99d45c686ce8549e585b1a924ce23409fbc38dff.zip
tests: Moved torture_knownhosts to client tests.
Diffstat (limited to 'tests/client')
-rw-r--r--tests/client/CMakeLists.txt1
-rw-r--r--tests/client/torture_knownhosts.c90
2 files changed, 91 insertions, 0 deletions
diff --git a/tests/client/CMakeLists.txt b/tests/client/CMakeLists.txt
index 6c63aec..c8f5962 100644
--- a/tests/client/CMakeLists.txt
+++ b/tests/client/CMakeLists.txt
@@ -2,4 +2,5 @@ project(clienttests C)
#add_check_test(torture_algorithms torture_algorithms.c ${TORTURE_LIBRARY})
#add_check_test(torture_auth torture_auth.c ${TORTURE_LIBRARY})
+#add_check_test(torture_knownhosts torture_knownhosts.c ${TORTURE_LIBRARY})
#add_check_test(torture_proxycommand torture_proxycommand.c ${TORTURE_LIBRARY})
diff --git a/tests/client/torture_knownhosts.c b/tests/client/torture_knownhosts.c
new file mode 100644
index 0000000..c956258
--- /dev/null
+++ b/tests/client/torture_knownhosts.c
@@ -0,0 +1,90 @@
+/*
+ * This file is part of the SSH Library
+ *
+ * Copyright (c) 2010 by Aris Adamantiadis
+ *
+ * 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 "libssh/libssh.h"
+#include "libssh/priv.h"
+#include "libssh/session.h"
+ssh_session session;
+
+#define KNOWNHOSTFILES "libssh_torture_knownhosts"
+
+static void setup(void) {
+ int verbosity=torture_libssh_verbosity();
+ session = ssh_new();
+ ssh_options_set(session,SSH_OPTIONS_LOG_VERBOSITY,&verbosity);
+}
+
+static void teardown(void) {
+ ssh_free(session);
+ unlink(KNOWNHOSTFILES);
+ ssh_finalize();
+}
+
+START_TEST (torture_knownhosts_port)
+{
+ int rc;
+ char buffer[200];
+ FILE *file;
+ //int verbosity=SSH_LOG_FUNCTIONS;
+ /* Connect to localhost:22, force the port to 1234 and then write
+ * the known hosts file. Then check that the entry written is
+ * [localhost]:1234
+ */
+ ssh_options_set(session,SSH_OPTIONS_HOST,"localhost");
+ ssh_options_set(session,SSH_OPTIONS_KNOWNHOSTS,KNOWNHOSTFILES);
+ rc=ssh_connect(session);
+ ck_assert_msg(rc==SSH_OK,ssh_get_error(session));
+ session->port=1234;
+ rc=ssh_write_knownhost(session);
+ ck_assert_msg(rc==SSH_OK,ssh_get_error(session));
+ ssh_disconnect(session);
+ ssh_free(session);
+ file=fopen(KNOWNHOSTFILES,"r");
+ ck_assert(file != NULL);
+ fgets(buffer,sizeof(buffer),file);
+ buffer[sizeof(buffer)-1]='\0';
+ ck_assert(strstr(buffer,"[localhost]:1234 ") != NULL);
+ fclose(file);
+
+ /* now, connect back to the ssh server and verify the known host line */
+ session=ssh_new();
+ ssh_options_set(session,SSH_OPTIONS_HOST,"localhost");
+ ssh_options_set(session,SSH_OPTIONS_KNOWNHOSTS,KNOWNHOSTFILES);
+ //ssh_options_set(session,SSH_OPTIONS_LOG_VERBOSITY, &verbosity);
+ rc=ssh_connect(session);
+ ck_assert_msg(rc==SSH_OK,ssh_get_error(session));
+ session->port=1234;
+ rc=ssh_is_server_known(session);
+ ck_assert_msg(rc==SSH_SERVER_KNOWN_OK,ssh_get_error(session));
+ ssh_disconnect(session);
+}
+END_TEST
+
+Suite *torture_make_suite(void) {
+ Suite *s = suite_create("libssh_knownhosts");
+
+ torture_create_case_fixture(s, "torture_knownhosts_port",
+ torture_knownhosts_port, setup, teardown);
+ return s;
+}