diff options
author | Dan Winship <danw@gnome.org> | 2014-03-09 13:03:14 -0400 |
---|---|---|
committer | Dan Winship <danw@gnome.org> | 2014-03-15 15:13:01 -0400 |
commit | 8224b826bdadcf8676854723ff51604a5645aae2 (patch) | |
tree | 08a0f4fd7a42dcaab6dc177909af244192f40934 /tests/ssl-test.c | |
parent | 4106873f790b13f32467f8f5fd567b41b8ad5686 (diff) | |
download | libsoup-8224b826bdadcf8676854723ff51604a5645aae2.tar.gz |
tests: split up some test programs into more tests
Diffstat (limited to 'tests/ssl-test.c')
-rw-r--r-- | tests/ssl-test.c | 130 |
1 files changed, 62 insertions, 68 deletions
diff --git a/tests/ssl-test.c b/tests/ssl-test.c index 3eb61af1..65e8a558 100644 --- a/tests/ssl-test.c +++ b/tests/ssl-test.c @@ -2,6 +2,8 @@ #include "test-utils.h" +static char *uri; + static void do_properties_test_for_session (SoupSession *session, const char *uri) { @@ -24,7 +26,7 @@ do_properties_test_for_session (SoupSession *session, const char *uri) } static void -do_async_properties_tests (gconstpointer uri) +do_async_properties_tests (void) { SoupSession *session; @@ -40,7 +42,7 @@ do_async_properties_tests (gconstpointer uri) } static void -do_sync_properties_tests (gconstpointer uri) +do_sync_properties_tests (void) { SoupSession *session; @@ -55,80 +57,70 @@ do_sync_properties_tests (gconstpointer uri) soup_test_session_abort_unref (session); } +typedef struct { + const char *name; + gboolean sync; + gboolean strict; + gboolean with_ca_list; + guint expected_status; +} StrictnessTest; + +static const StrictnessTest strictness_tests[] = { + { "/ssl/strictness/async/strict/with-ca", + FALSE, TRUE, TRUE, SOUP_STATUS_OK }, + { "/ssl/strictness/async/strict/without-ca", + FALSE, TRUE, FALSE, SOUP_STATUS_SSL_FAILED }, + { "/ssl/strictness/async/non-strict/with-ca", + FALSE, FALSE, TRUE, SOUP_STATUS_OK }, + { "/ssl/strictness/async/non-strict/without-ca", + FALSE, FALSE, FALSE, SOUP_STATUS_OK }, + { "/ssl/strictness/sync/strict/with-ca", + TRUE, TRUE, TRUE, SOUP_STATUS_OK }, + { "/ssl/strictness/sync/strict/without-ca", + TRUE, TRUE, FALSE, SOUP_STATUS_SSL_FAILED }, + { "/ssl/strictness/sync/non-strict/with-ca", + TRUE, FALSE, TRUE, SOUP_STATUS_OK }, + { "/ssl/strictness/sync/non-strict/without-ca", + TRUE, FALSE, FALSE, SOUP_STATUS_OK }, +}; + static void -do_one_strict_test (SoupSession *session, const char *uri, - gboolean strict, gboolean with_ca_list, - guint expected_status) +do_strictness_test (gconstpointer data) { + const StrictnessTest *test = data; + SoupSession *session; SoupMessage *msg; + GTlsCertificateFlags flags = 0; - /* Note that soup_test_session_new() sets - * SOUP_SESSION_SSL_CA_FILE by default, and turns off - * SOUP_SESSION_SSL_STRICT. - */ + SOUP_TEST_SKIP_IF_NO_TLS; - g_object_set (G_OBJECT (session), - SOUP_SESSION_SSL_STRICT, strict, - SOUP_SESSION_SSL_CA_FILE, - (with_ca_list ? - g_test_get_filename (G_TEST_DIST, "/test-cert.pem", NULL) : - "/dev/null"), - NULL); - /* Close existing connections with old params */ - soup_session_abort (session); + session = soup_test_session_new (test->sync ? SOUP_TYPE_SESSION_SYNC : SOUP_TYPE_SESSION_ASYNC, + NULL); + if (!test->strict) { + g_object_set (G_OBJECT (session), + SOUP_SESSION_SSL_STRICT, FALSE, + NULL); + } + if (!test->with_ca_list) { + g_object_set (G_OBJECT (session), + SOUP_SESSION_SSL_CA_FILE, "/dev/null", + NULL); + } msg = soup_message_new ("GET", uri); soup_session_send_message (session, msg); - if (msg->status_code != expected_status) { - debug_printf (1, " FAILED: %d %s (expected %d %s)\n", - msg->status_code, msg->reason_phrase, - expected_status, - soup_status_get_phrase (expected_status)); - if (msg->status_code == SOUP_STATUS_SSL_FAILED) { - GTlsCertificateFlags flags = 0; - - soup_message_get_https_status (msg, NULL, &flags); - debug_printf (1, " tls error flags: 0x%x\n", flags); - } - } else if (with_ca_list && SOUP_STATUS_IS_SUCCESSFUL (msg->status_code)) + soup_test_assert_message_status (msg, test->expected_status); + g_assert_true (soup_message_get_https_status (msg, NULL, &flags)); + if (test->with_ca_list && SOUP_STATUS_IS_SUCCESSFUL (msg->status_code)) g_assert_true (soup_message_get_flags (msg) & SOUP_MESSAGE_CERTIFICATE_TRUSTED); else g_assert_false (soup_message_get_flags (msg) & SOUP_MESSAGE_CERTIFICATE_TRUSTED); - g_assert_true (soup_message_get_https_status (msg, NULL, NULL)); + if (msg->status_code == SOUP_STATUS_SSL_FAILED && + test->expected_status != SOUP_STATUS_SSL_FAILED) + debug_printf (1, " tls error flags: 0x%x\n", flags); g_object_unref (msg); -} - -static void -do_strict_tests (gconstpointer uri) -{ - SoupSession *session; - - SOUP_TEST_SKIP_IF_NO_TLS; - - debug_printf (1, "\nstrict/nonstrict\n"); - - session = soup_test_session_new (SOUP_TYPE_SESSION_ASYNC, NULL); - debug_printf (1, " async with CA list\n"); - do_one_strict_test (session, uri, TRUE, TRUE, SOUP_STATUS_OK); - debug_printf (1, " async without CA list\n"); - do_one_strict_test (session, uri, TRUE, FALSE, SOUP_STATUS_SSL_FAILED); - debug_printf (1, " async non-strict with CA list\n"); - do_one_strict_test (session, uri, FALSE, TRUE, SOUP_STATUS_OK); - debug_printf (1, " async non-strict without CA list\n"); - do_one_strict_test (session, uri, FALSE, FALSE, SOUP_STATUS_OK); - soup_test_session_abort_unref (session); - - session = soup_test_session_new (SOUP_TYPE_SESSION_SYNC, NULL); - debug_printf (1, " sync with CA list\n"); - do_one_strict_test (session, uri, TRUE, TRUE, SOUP_STATUS_OK); - debug_printf (1, " sync without CA list\n"); - do_one_strict_test (session, uri, TRUE, FALSE, SOUP_STATUS_SSL_FAILED); - debug_printf (1, " sync non-strict with CA list\n"); - do_one_strict_test (session, uri, FALSE, TRUE, SOUP_STATUS_OK); - debug_printf (1, " sync non-strict without CA list\n"); - do_one_strict_test (session, uri, FALSE, FALSE, SOUP_STATUS_OK); soup_test_session_abort_unref (session); } @@ -254,8 +246,7 @@ int main (int argc, char **argv) { SoupServer *server; - char *uri; - int ret; + int i, ret; test_init (argc, argv, NULL); @@ -267,11 +258,14 @@ main (int argc, char **argv) } g_test_add_func ("/ssl/session-properties", do_session_property_tests); - g_test_add_data_func ("/ssl/message-properties/async", uri, do_async_properties_tests); - g_test_add_data_func ("/ssl/message-properties/sync", uri, do_sync_properties_tests); + g_test_add_func ("/ssl/message-properties/async", do_async_properties_tests); + g_test_add_func ("/ssl/message-properties/sync", do_sync_properties_tests); - /* FIXME: split this up */ - g_test_add_data_func ("/ssl/strict", uri, do_strict_tests); + for (i = 0; i < G_N_ELEMENTS (strictness_tests); i++) { + g_test_add_data_func (strictness_tests[i].name, + &strictness_tests[i], + do_strictness_test); + } ret = g_test_run (); |