diff options
author | George Kiagiadakis <gkiagia@tolabaki.gr> | 2016-07-09 11:16:52 +0300 |
---|---|---|
committer | George Kiagiadakis <gkiagia@tolabaki.gr> | 2016-07-09 11:22:49 +0300 |
commit | 352247c52b89b5a58c02f8675a95ea64cc3724d2 (patch) | |
tree | fb7e16bcfb27eea780f93790ea17cc10e2350b44 | |
parent | 3e95511674daf34b3af087042bde1ec665457360 (diff) |
tests: remove wocky-http-proxy-test
This is no longer needed, as the code that it tests is in GIO,
not wocky. It is the responsibility of GIO maintainers to test it.
https://bugs.freedesktop.org/show_bug.cgi?id=94031
-rw-r--r-- | tests/Makefile.am | 5 | ||||
-rw-r--r-- | tests/wocky-http-proxy-test.c | 396 |
2 files changed, 0 insertions, 401 deletions
diff --git a/tests/Makefile.am b/tests/Makefile.am index 2f9bc58..1b16bd1 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -71,7 +71,6 @@ TEST_PROGS = \ wocky-xmpp-node-test \ wocky-xmpp-reader-test \ wocky-xmpp-readwrite-test \ - wocky-http-proxy-test \ $(NULL) noinst_PROGRAMS = @@ -122,10 +121,6 @@ wocky_dummy_xmpp_server_SOURCES = wocky-dummy-xmpp-server.c \ wocky_dummy_xmpp_server_LDADD = $(LDADD) @LIBSASL2_LIBS@ wocky_dummy_xmpp_server_CFLAGS = $(AM_CFLAGS) @LIBSASL2_CFLAGS@ $(TLSDEFS) -wocky_http_proxy_test_SOURCES = wocky-http-proxy-test.c \ - wocky-test-helper.c wocky-test-helper.h \ - wocky-test-stream.c wocky-test-stream.h - wocky_jid_validation_test_SOURCES = \ wocky-jid-validation-test.c \ wocky-test-helper.c wocky-test-helper.h \ diff --git a/tests/wocky-http-proxy-test.c b/tests/wocky-http-proxy-test.c deleted file mode 100644 index 24de3c5..0000000 --- a/tests/wocky-http-proxy-test.c +++ /dev/null @@ -1,396 +0,0 @@ -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include "wocky-test-stream.h" -#include "wocky-test-helper.h" - -#include <string.h> - -#include <wocky/wocky.h> - -typedef enum -{ - DOMAIN_NONE = 0, - DOMAIN_G_IO_ERROR -} HttpErrorDomain; - -typedef struct -{ - const gchar *path; - const gchar *reply; - HttpErrorDomain domain; - gint code; - const gchar *username; - const gchar *password; -} HttpTestCase; - -typedef struct -{ - GMainLoop *mainloop; - GMainLoop *thread_mainloop; - GCancellable *cancellable; - GCancellable *thread_cancellable; - GThread *thread; - GSocketListener *listener; - guint16 port; - const HttpTestCase *test_case; -} HttpTestData; - -static HttpTestCase test_cases[] = { - { "/http-proxy/close-by-peer", - "", DOMAIN_G_IO_ERROR, G_IO_ERROR_PROXY_FAILED }, - { "/http-proxy/bad-reply", - "BAD REPLY", DOMAIN_G_IO_ERROR, G_IO_ERROR_PROXY_FAILED }, - { "/http-proxy/very-short-reply", - "HTTP/1.\r\n\r\n", DOMAIN_G_IO_ERROR, G_IO_ERROR_PROXY_FAILED }, - { "/http-proxy/short-reply", - "HTTP/1.0\r\n\r\n", DOMAIN_G_IO_ERROR, G_IO_ERROR_PROXY_FAILED }, - { "/http-proxy/http-404", - "HTTP/1.0 404 Not Found\r\n" - "Content-Type: text/html; charset=UTF-8\r\n" - "Content-Length: 27\r\n" - "\r\n" - "<html><h1>Hello</h1></html>", - DOMAIN_G_IO_ERROR, G_IO_ERROR_PROXY_FAILED }, - { "/http-proxy/need-authentication", - "HTTP/1.0 407 Proxy Authentication Required\r\n" - "Content-Type: text/html; charset=UTF-8\r\n" - "Content-Length: 27\r\n" - "\r\n" - "<html><h1>Hello</h1></html>", - DOMAIN_G_IO_ERROR, G_IO_ERROR_PROXY_NEED_AUTH }, - { "/http-proxy/success", - "HTTP/1.0 200 OK\r\n" - "\r\n", - DOMAIN_NONE, 0 }, - { "/http-proxy/authentication-failed", - "HTTP/1.0 407 Proxy Authentication Required\r\n" - "Content-Type: text/html; charset=UTF-8\r\n" - "Content-Length: 27\r\n" - "\r\n" - "<html><h1>Hello</h1></html>", - DOMAIN_G_IO_ERROR, G_IO_ERROR_PROXY_AUTH_FAILED, - "username", "bad-password" }, - { "/http-proxy/authenticated", - "HTTP/1.0 200 OK\r\n" - "\r\n", - DOMAIN_NONE, 0, - "Aladdin", "open sesame"}, -}; - -static HttpTestData * -tearup (const HttpTestCase *test_case) -{ - HttpTestData *data; - - data = g_new0 (HttpTestData, 1); - - data->mainloop = g_main_loop_new (NULL, FALSE); - - data->cancellable = g_cancellable_new (); - data->thread_cancellable = g_cancellable_new (); - - data->listener = g_socket_listener_new (); - data->port = g_socket_listener_add_any_inet_port (data->listener, NULL, NULL); - g_assert_cmpuint (data->port, !=, 0); - - data->test_case = test_case; - - return data; -} - -static void -run_in_thread (HttpTestData *data, - GThreadFunc func) -{ - data->thread = g_thread_new ("server_thread", func, data); - g_assert (data->thread != NULL); -} - -static gboolean -tear_down_idle_cb (gpointer user_data) -{ - HttpTestData *data = user_data; - g_main_loop_quit (data->mainloop); - return FALSE; -} - -static void -teardown (HttpTestData *data) -{ - if (!g_cancellable_is_cancelled (data->cancellable)) - g_cancellable_cancel (data->cancellable); - - if (!g_cancellable_is_cancelled (data->thread_cancellable)) - g_cancellable_cancel (data->thread_cancellable); - - if (data->thread) - g_thread_join (data->thread); - - if (g_main_loop_is_running (data->mainloop)) - g_main_loop_quit (data->mainloop); - - g_idle_add_full (G_PRIORITY_LOW, tear_down_idle_cb, data, NULL); - - g_main_loop_run (data->mainloop); - - g_object_unref (data->cancellable); - g_object_unref (data->thread_cancellable); - g_object_unref (data->listener); - g_main_loop_unref (data->mainloop); - - g_free (data); -} - -static gboolean -str_has_prefix_case (const gchar *str, - const gchar *prefix) -{ - return g_ascii_strncasecmp (prefix, str, strlen (prefix)) == 0; -} - -static void -test_http_proxy_instantiation (void) -{ - GProxy *proxy; - - proxy = g_proxy_get_default_for_protocol ("http"); - g_assert (G_IS_PROXY (proxy)); - g_object_unref (proxy); -} - -static gpointer -server_thread (gpointer user_data) -{ - HttpTestData *data = user_data; - GSocketConnection *conn; - GDataInputStream *data_in; - GOutputStream *out; - gchar *buffer; - gint has_host = 0; - gint has_user_agent = 0; - gint has_cred = 0; - - conn = g_socket_listener_accept (data->listener, NULL, - data->thread_cancellable, NULL); - g_assert (conn != NULL); - - data_in = g_data_input_stream_new ( - g_io_stream_get_input_stream (G_IO_STREAM (conn))); - g_data_input_stream_set_newline_type (data_in, - G_DATA_STREAM_NEWLINE_TYPE_CR_LF); - - buffer = g_data_input_stream_read_line (data_in, NULL, - data->thread_cancellable, NULL); - g_assert_cmpstr (buffer, ==, "CONNECT to:443 HTTP/1.0"); - - do { - g_free (buffer); - buffer = g_data_input_stream_read_line (data_in, NULL, - data->thread_cancellable, NULL); - g_assert (buffer != NULL); - - if (str_has_prefix_case (buffer, "Host:")) - { - has_host++; - g_assert_cmpstr (buffer, ==, "Host: to:443"); - } - else if (str_has_prefix_case (buffer, "User-Agent:")) - has_user_agent++; - else if (str_has_prefix_case (buffer, "Proxy-Authorization:")) - { - gchar *cred; - gchar *base64_cred; - const gchar *received_cred; - - has_cred++; - - g_assert (data->test_case->username != NULL); - g_assert (data->test_case->password != NULL); - - cred = g_strdup_printf ("%s:%s", - data->test_case->username, data->test_case->password); - base64_cred = g_base64_encode ((guchar *) cred, strlen (cred)); - g_free (cred); - - received_cred = buffer + 20; - while (*received_cred == ' ') - received_cred++; - - g_assert (str_has_prefix_case (received_cred, "Basic")); - received_cred += 5; - while (*received_cred == ' ') - received_cred++; - - g_assert_cmpstr (base64_cred, ==, received_cred); - g_free (base64_cred); - } - } while (buffer[0] != '\0'); - - g_assert_cmpuint (has_host, ==, 1); - g_assert_cmpuint (has_user_agent, ==, 1); - - if (data->test_case->username != NULL) - g_assert_cmpuint (has_cred, ==, 1); - else - g_assert_cmpuint (has_cred, ==, 0); - - g_free (buffer); - - out = g_io_stream_get_output_stream (G_IO_STREAM (conn)); - g_assert (g_output_stream_write_all (out, - data->test_case->reply, strlen (data->test_case->reply), - NULL, data->thread_cancellable, NULL)); - g_object_unref (data_in); - g_object_unref (conn); - - return NULL; -} - -static GQuark -get_error_domain (HttpErrorDomain id) -{ - GQuark domain = 0; - - switch (id) - { - case DOMAIN_G_IO_ERROR: - domain = G_IO_ERROR; - break; - default: - g_assert_not_reached (); - } - - return domain; -} - -static GSocketAddress * -create_proxy_address (HttpTestData *data) -{ - GSocketAddress *proxy_address; - GInetAddress *inet_address; - - inet_address = g_inet_address_new_loopback (G_SOCKET_FAMILY_IPV4); - proxy_address = g_proxy_address_new (inet_address, data->port, "http", - "to", 443, data->test_case->username, data->test_case->password); - g_object_unref (inet_address); - - return proxy_address; -} - -static void -check_result (const HttpTestCase *test_case, - GSocketConnection *connection, - GError *error) -{ - if (test_case->domain != DOMAIN_NONE) - { - g_assert_error (error, get_error_domain (test_case->domain), - test_case->code); - g_error_free (error); - } - else - { - g_assert_no_error (error); - g_object_unref (connection); - } -} - -static void -test_http_proxy_with_data (gconstpointer user_data) -{ - const HttpTestCase *test_case = user_data; - HttpTestData *data; - GSocketClient *client; - GSocketAddress *proxy_address; - GSocketConnection *connection; - GError *error = NULL; - - data = tearup (test_case); - - run_in_thread (data, server_thread); - - client = g_socket_client_new (); - proxy_address = create_proxy_address (data); - connection = g_socket_client_connect (client, - G_SOCKET_CONNECTABLE (proxy_address), data->cancellable, &error); - - g_object_unref (proxy_address); - g_object_unref (client); - - check_result (test_case, connection, error); - - teardown (data); -} - -static void -connect_cb (GObject *source, - GAsyncResult *result, - gpointer user_data) -{ - HttpTestData *data = user_data; - GSocketConnection *connection; - GError *error = NULL; - - connection = g_socket_client_connect_finish (G_SOCKET_CLIENT (source), - result, &error); - - check_result (data->test_case, connection, error); - - g_main_loop_quit (data->mainloop); -} - -static void -test_http_proxy_with_data_async (gconstpointer user_data) -{ - const HttpTestCase *test_case = user_data; - HttpTestData *data; - GSocketClient *client; - GSocketAddress *proxy_address; - - data = tearup (test_case); - - run_in_thread (data, server_thread); - - client = g_socket_client_new (); - proxy_address = create_proxy_address (data); - g_socket_client_connect_async (client, G_SOCKET_CONNECTABLE (proxy_address), - data->cancellable, connect_cb, data); - - g_object_unref (client); - g_object_unref (proxy_address); - - g_main_loop_run (data->mainloop); - - teardown (data); -} - -int main (int argc, - char **argv) -{ - int result; - guint i; - - test_init (argc, argv); - - g_test_add_func ("/http-proxy/instantiation", - test_http_proxy_instantiation); - - for (i = 0; i < G_N_ELEMENTS (test_cases); i++) - { - gchar *async_path; - - g_test_add_data_func (test_cases[i].path, - test_cases + i, test_http_proxy_with_data); - - async_path = g_strdup_printf ("%s-async", test_cases[i].path); - g_test_add_data_func (async_path, - test_cases + i, test_http_proxy_with_data_async); - g_free (async_path); - } - - result = g_test_run (); - test_deinit (); - return result; -} |