From d04ce30b037edf59caafb486921c9af114a22d04 Mon Sep 17 00:00:00 2001 From: Andreas Schneider Date: Tue, 28 Dec 2010 15:05:56 +0100 Subject: [PATCH] tests: Migrated torture_options to cmockery. --- tests/unittests/CMakeLists.txt | 2 +- tests/unittests/torture_options.c | 194 ++++++++++++++---------------- 2 files changed, 88 insertions(+), 108 deletions(-) diff --git a/tests/unittests/CMakeLists.txt b/tests/unittests/CMakeLists.txt index 1b88a573..f3375c90 100644 --- a/tests/unittests/CMakeLists.txt +++ b/tests/unittests/CMakeLists.txt @@ -6,5 +6,5 @@ add_cmockery_test(torture_init torture_init.c ${TORTURE_LIBRARY}) add_cmockery_test(torture_keyfiles torture_keyfiles.c ${TORTURE_LIBRARY}) add_cmockery_test(torture_list torture_list.c ${TORTURE_LIBRARY}) add_cmockery_test(torture_misc torture_misc.c ${TORTURE_LIBRARY}) -#add_check_test(torture_options torture_options.c ${TORTURE_LIBRARY}) +add_cmockery_test(torture_options torture_options.c ${TORTURE_LIBRARY}) #add_check_test(torture_rand torture_rand.c ${TORTURE_LIBRARY}) diff --git a/tests/unittests/torture_options.c b/tests/unittests/torture_options.c index bba5500a..b01435a4 100644 --- a/tests/unittests/torture_options.c +++ b/tests/unittests/torture_options.c @@ -3,144 +3,124 @@ #include "torture.h" #include "options.c" -ssh_session session; -#ifndef _WIN32 -struct passwd pwd; -#endif /* _WIN32 */ - -static void setup(void) { - session = ssh_new(); +static void setup(void **state) { + ssh_session session = ssh_new(); + *state = session; } -static void setup_passwd(void) { +static void teardown(void **state) { + ssh_free(*state); +} + +static void torture_options_set_host(void **state) { + ssh_session session = *state; + int rc; + + rc = ssh_options_set(session, SSH_OPTIONS_HOST, "localhost"); + assert_true(rc == 0); + assert_string_equal(session->host, "localhost"); + + rc = ssh_options_set(session, SSH_OPTIONS_HOST, "guru@meditation"); + assert_true(rc == 0); + assert_string_equal(session->host, "meditation"); + assert_string_equal(session->username, "guru"); +} + +static void torture_options_set_port(void **state) { + ssh_session session = *state; + int rc; + unsigned int port = 42; + + rc = ssh_options_set(session, SSH_OPTIONS_PORT, &port); + assert_true(rc == 0); + assert_true(session->port == port); + + rc = ssh_options_set(session, SSH_OPTIONS_PORT_STR, "23"); + assert_true(rc == 0); + assert_true(session->port == 23); + + rc = ssh_options_set(session, SSH_OPTIONS_PORT_STR, "five"); + assert_true(rc == 0); + assert_true(session->port == 0); + + rc = ssh_options_set(session, SSH_OPTIONS_PORT, NULL); + assert_true(rc == 0); + assert_true(session->port == 22); +} + +static void torture_options_set_fd(void **state) { + ssh_session session = *state; + socket_t fd = 42; + int rc; + + rc = ssh_options_set(session, SSH_OPTIONS_FD, &fd); + assert_true(rc == 0); + assert_true(session->fd == fd); + + rc = ssh_options_set(session, SSH_OPTIONS_FD, NULL); + assert_true(rc == 0); + assert_true(session->fd == SSH_INVALID_SOCKET); +} + +static void torture_options_set_user(void **state) { + ssh_session session = *state; int rc; #ifndef _WIN32 -#ifndef NSS_BUFLEN_PASSWD -#define NSS_BUFLEN_PASSWD 4096 -#endif /* NSS_BUFLEN_PASSWD */ +# ifndef NSS_BUFLEN_PASSWD +# define NSS_BUFLEN_PASSWD 4096 +# endif /* NSS_BUFLEN_PASSWD */ + struct passwd pwd; struct passwd *pwdbuf; char buf[NSS_BUFLEN_PASSWD]; /* get local username */ rc = getpwuid_r(getuid(), &pwd, buf, NSS_BUFLEN_PASSWD, &pwdbuf); - ck_assert(rc == 0); + assert_true(rc == 0); #endif /* _WIN32 */ - session = ssh_new(); -} - -static void teardown(void) { - ZERO_STRUCT(pwd); - ssh_free(session); -} - -START_TEST (torture_options_set_host) -{ - int rc; - - rc = ssh_options_set(session, SSH_OPTIONS_HOST, "localhost"); - ck_assert(rc == 0); - ck_assert_str_eq(session->host, "localhost"); - - rc = ssh_options_set(session, SSH_OPTIONS_HOST, "guru@meditation"); - ck_assert(rc == 0); - ck_assert_str_eq(session->host, "meditation"); - ck_assert_str_eq(session->username, "guru"); -} -END_TEST - -START_TEST (torture_options_set_port) -{ - int rc; - unsigned int port = 42; - - rc = ssh_options_set(session, SSH_OPTIONS_PORT, &port); - ck_assert(rc == 0); - ck_assert(session->port == port); - - rc = ssh_options_set(session, SSH_OPTIONS_PORT_STR, "23"); - ck_assert(rc == 0); - ck_assert(session->port == 23); - - rc = ssh_options_set(session, SSH_OPTIONS_PORT_STR, "five"); - ck_assert(rc == 0); - ck_assert(session->port == 0); - - rc = ssh_options_set(session, SSH_OPTIONS_PORT, NULL); - ck_assert(rc == 0); - ck_assert(session->port == 22); -} -END_TEST - -START_TEST (torture_options_set_fd) -{ - socket_t fd = 42; - int rc; - - rc = ssh_options_set(session, SSH_OPTIONS_FD, &fd); - ck_assert(rc == 0); - ck_assert(session->fd == fd); - - rc = ssh_options_set(session, SSH_OPTIONS_FD, NULL); - ck_assert(rc == 0); - ck_assert(session->fd == SSH_INVALID_SOCKET); -} -END_TEST - -START_TEST (torture_options_set_user) -{ - int rc; rc = ssh_options_set(session, SSH_OPTIONS_USER, "guru"); - ck_assert(rc == 0); - ck_assert_str_eq(session->username, "guru"); + assert_true(rc == 0); + assert_string_equal(session->username, "guru"); rc = ssh_options_set(session, SSH_OPTIONS_USER, NULL); - ck_assert(rc == 0); + assert_true(rc == 0); #ifndef _WIN32 - ck_assert_str_eq(session->username, pwd.pw_name); + assert_string_equal(session->username, pwd.pw_name); #endif } -END_TEST /* TODO */ #if 0 -START_TEST (torture_options_set_sshdir) +static voidtorture_options_set_sshdir) { } END_TEST #endif -START_TEST (torture_options_set_identity) -{ +static void torture_options_set_identity(void **state) { + ssh_session session = *state; int rc; rc = ssh_options_set(session, SSH_OPTIONS_ADD_IDENTITY, "identity1"); - ck_assert(rc == 0); - ck_assert_str_eq(session->identity->root->data, "identity1"); + assert_true(rc == 0); + assert_string_equal(session->identity->root->data, "identity1"); rc = ssh_options_set(session, SSH_OPTIONS_IDENTITY, "identity2"); - ck_assert(rc == 0); - ck_assert_str_eq(session->identity->root->data, "identity2"); - ck_assert_str_eq(session->identity->root->next->data, "identity1"); -} -END_TEST - -Suite *torture_make_suite(void) { - Suite *s = suite_create("libssh_options"); - - torture_create_case_fixture(s, "torture_options_set_host", - torture_options_set_host, setup, teardown); - torture_create_case_fixture(s, "torture_options_set_port", - torture_options_set_port, setup, teardown); - torture_create_case_fixture(s, "torture_options_set_fd", - torture_options_set_fd, setup, teardown); - torture_create_case_fixture(s, "torture_options_set_user", - torture_options_set_user, setup_passwd, teardown); - torture_create_case_fixture(s, "torture_options_set_identity", - torture_options_set_identity, setup, teardown); - - return s; + assert_true(rc == 0); + assert_string_equal(session->identity->root->data, "identity2"); + assert_string_equal(session->identity->root->next->data, "identity1"); } +int torture_run_tests(void) { + const UnitTest tests[] = { + unit_test_setup_teardown(torture_options_set_host, setup, teardown), + unit_test_setup_teardown(torture_options_set_port, setup, teardown), + unit_test_setup_teardown(torture_options_set_fd, setup, teardown), + unit_test_setup_teardown(torture_options_set_user, setup, teardown), + unit_test_setup_teardown(torture_options_set_identity, setup, teardown), + }; + + return run_tests(tests); +}