1 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
3 #include "test-utils.h"
6 do_ssl_test_for_session (SoupSession *session, const char *uri)
9 GTlsCertificate *cert = NULL;
10 GTlsCertificateFlags flags;
13 msg = soup_message_new ("GET", uri);
14 soup_session_send_message (session, msg);
15 soup_test_assert_message_status (msg, SOUP_STATUS_SSL_FAILED);
17 is_https = soup_message_get_https_status (msg, &cert, &flags);
18 soup_test_assert (!is_https, "get_http_status() returned TRUE? (flags %x)", flags);
21 g_assert_false (soup_message_get_flags (msg) & SOUP_MESSAGE_CERTIFICATE_TRUSTED);
27 do_ssl_tests (gconstpointer uri)
31 g_test_bug ("700518");
33 debug_printf (1, " plain\n");
34 session = soup_test_session_new (SOUP_TYPE_SESSION, NULL);
35 do_ssl_test_for_session (session, uri);
36 soup_test_session_abort_unref (session);
38 debug_printf (1, " async\n");
39 session = soup_test_session_new (SOUP_TYPE_SESSION_ASYNC, NULL);
40 do_ssl_test_for_session (session, uri);
41 soup_test_session_abort_unref (session);
43 debug_printf (1, " sync\n");
44 session = soup_test_session_new (SOUP_TYPE_SESSION_SYNC, NULL);
45 do_ssl_test_for_session (session, uri);
46 soup_test_session_abort_unref (session);
50 do_session_property_tests (void)
57 g_test_bug ("700518");
59 session = soup_session_async_new ();
61 g_object_get (G_OBJECT (session),
62 "ssl-use-system-ca-file", &use_system,
63 "tls-database", &tlsdb,
64 "ssl-ca-file", &ca_file,
66 soup_test_assert (!use_system, "ssl-use-system-ca-file defaults to TRUE");
67 soup_test_assert (tlsdb == NULL, "tls-database set by default");
68 soup_test_assert (ca_file == NULL, "ca-file set by default");
70 g_object_set (G_OBJECT (session),
71 "ssl-use-system-ca-file", TRUE,
73 g_object_get (G_OBJECT (session),
74 "ssl-ca-file", &ca_file,
76 soup_test_assert (ca_file == NULL, "setting ssl-use-system-ca-file set ssl-ca-file");
78 g_object_set (G_OBJECT (session),
80 g_test_get_filename (G_TEST_DIST, "test-cert.pem", NULL),
82 g_object_get (G_OBJECT (session),
83 "ssl-use-system-ca-file", &use_system,
84 "tls-database", &tlsdb,
85 "ssl-ca-file", &ca_file,
87 soup_test_assert (ca_file == NULL, "setting ssl-ca-file did not fail");
88 soup_test_assert (!use_system, "setting ssl-ca-file set ssl-use-system-ca-file");
89 soup_test_assert (tlsdb == NULL, "setting ssl-ca-file set tls-database");
91 g_object_set (G_OBJECT (session),
94 g_object_get (G_OBJECT (session),
95 "ssl-use-system-ca-file", &use_system,
96 "tls-database", &tlsdb,
97 "ssl-ca-file", &ca_file,
99 soup_test_assert (tlsdb == NULL, "setting tls-database NULL failed");
100 soup_test_assert (!use_system, "setting tls-database NULL set ssl-use-system-ca-file");
101 soup_test_assert (ca_file == NULL, "setting tls-database NULL set ssl-ca-file");
103 soup_test_session_abort_unref (session);
107 server_handler (SoupServer *server,
111 SoupClientContext *client,
114 soup_message_set_status (msg, SOUP_STATUS_OK);
115 soup_message_set_response (msg, "text/plain",
121 main (int argc, char **argv)
127 /* Force this test to use the dummy TLS backend */
128 g_setenv ("GIO_USE_TLS", "dummy", TRUE);
130 test_init (argc, argv, NULL);
132 /* Make a non-SSL server and pretend that it's ssl, which is fine
133 * since we won't ever actually talk to it anyway. We don't
134 * currently test that failing to construct an SSL server works.
136 server = soup_test_server_new (TRUE);
137 soup_server_add_handler (server, NULL, server_handler, NULL, NULL);
138 uri = g_strdup_printf ("https://127.0.0.1:%u/",
139 soup_server_get_port (server));
141 g_test_add_func ("/no-ssl/session-properties", do_session_property_tests);
142 g_test_add_data_func ("/no-ssl/request-error", uri, do_ssl_tests);
147 soup_test_server_quit_unref (server);