diff options
author | Jan-Michael Brummer <jan.brummer@tabos.org> | 2023-01-23 22:57:02 +0100 |
---|---|---|
committer | Jan-Michael Brummer <jan.brummer@tabos.org> | 2023-03-27 16:31:58 +0200 |
commit | d875586bab506b7fdb4b2e0ce12c4c7f307cc6bd (patch) | |
tree | 8177126c54c21a0568213662c4a45d16ac5783d5 | |
parent | 21dd5679dd642aa6cb9e120de2304ba19146d2c4 (diff) | |
download | libproxy-git-d875586bab506b7fdb4b2e0ce12c4c7f307cc6bd.tar.gz |
Add PAC configuration tests (#9)
-rw-r--r-- | src/backend/px-manager.c | 1 | ||||
-rw-r--r-- | src/tests/data/px-manager-direct | 1 | ||||
-rw-r--r-- | src/tests/data/px-manager-nonpac | 5 | ||||
-rw-r--r-- | src/tests/data/px-manager-pac | 5 | ||||
-rw-r--r-- | src/tests/data/px-manager-sample.pac | 6 | ||||
-rw-r--r-- | src/tests/px-manager-test.c | 66 |
6 files changed, 76 insertions, 8 deletions
diff --git a/src/backend/px-manager.c b/src/backend/px-manager.c index bf945f0..66a0a35 100644 --- a/src/backend/px-manager.c +++ b/src/backend/px-manager.c @@ -78,6 +78,7 @@ px_manager_constructed (GObject *object) self->config_set = peas_extension_set_new (self->engine, PX_TYPE_CONFIG, NULL); self->pacrunner_set = peas_extension_set_new (self->engine, PX_TYPE_PACRUNNER, NULL); + list = peas_engine_get_plugin_list (self->engine); for (; list && list->data; list = list->next) { PeasPluginInfo *info = PEAS_PLUGIN_INFO (list->data); diff --git a/src/tests/data/px-manager-direct b/src/tests/data/px-manager-direct new file mode 100644 index 0000000..72c4ac8 --- /dev/null +++ b/src/tests/data/px-manager-direct @@ -0,0 +1 @@ +PROXY_ENABLED="no"
\ No newline at end of file diff --git a/src/tests/data/px-manager-nonpac b/src/tests/data/px-manager-nonpac new file mode 100644 index 0000000..7db21d8 --- /dev/null +++ b/src/tests/data/px-manager-nonpac @@ -0,0 +1,5 @@ +PROXY_ENABLED="yes" +HTTP_PROXY="http://127.0.0.1:1983" +HTTPS_PROXY="http://127.0.0.1:1983" +FTP_PROXY="http://127.0.0.1:1983" +NO_PROXY="localhost, 127.0.0.1" diff --git a/src/tests/data/px-manager-pac b/src/tests/data/px-manager-pac new file mode 100644 index 0000000..2ff4000 --- /dev/null +++ b/src/tests/data/px-manager-pac @@ -0,0 +1,5 @@ +PROXY_ENABLED="yes" +HTTP_PROXY="pac+http://127.0.0.1:1983/test.pac" +HTTPS_PROXY="pac+http://127.0.0.1:1983/test.pac" +FTP_PROXY="pac+http://127.0.0.1:1983/test.pac" +NO_PROXY="localhost, 127.0.0.1" diff --git a/src/tests/data/px-manager-sample.pac b/src/tests/data/px-manager-sample.pac new file mode 100644 index 0000000..48d01f0 --- /dev/null +++ b/src/tests/data/px-manager-sample.pac @@ -0,0 +1,6 @@ +function FindProxyForURL(url, host) +{ + var myIP = myIpAddress(); + + return "PROXY 127.0.0.1:1983" +}
\ No newline at end of file diff --git a/src/tests/px-manager-test.c b/src/tests/px-manager-test.c index 01c3162..20db7c6 100644 --- a/src/tests/px-manager-test.c +++ b/src/tests/px-manager-test.c @@ -39,6 +39,15 @@ server_callback (SoupServer *server, gpointer data) { soup_server_message_set_status (SOUP_SERVER_MESSAGE (msg), SOUP_STATUS_OK, NULL); + + if (g_strcmp0 (path, "/test.pac") == 0) { + g_autofree char *pac = g_test_build_filename (G_TEST_DIST, "data", "px-manager-sample.pac", NULL); + g_autofree char *pac_data = NULL; + gsize len; + + g_file_get_contents (pac, &pac_data, &len, NULL); + soup_server_message_set_response (msg, "text/plain", SOUP_MEMORY_COPY, pac_data, len); + } } static void @@ -46,13 +55,20 @@ fixture_setup (Fixture *fixture, gconstpointer data) { fixture->loop = g_main_loop_new (NULL, FALSE); - fixture->manager = px_test_manager_new ("config-env"); + + if (data) { + g_autofree char *path = g_test_build_filename (G_TEST_DIST, "data", data, NULL); + g_setenv ("PX_CONFIG_SYSCONFIG", path, TRUE); + } + + fixture->manager = px_test_manager_new ("config-sysconfig"); } static void fixture_teardown (Fixture *fixture, gconstpointer data) { + g_unsetenv ("PX_CONFIG_SYSCONFIG"); g_clear_object (&fixture->manager); } @@ -75,14 +91,12 @@ test_pac_download (Fixture *self, const void *user_data) { g_thread_new ("test", (GThreadFunc)download_pac, self); - /* pac = px_manager_pac_download (self->manager, "http://127.0.0.1:1983"); */ - /* g_assert_nonnull (pac); */ g_main_loop_run (self->loop); } static void -test_get_proxies (Fixture *self, - const void *user_data) +test_get_proxies_direct (Fixture *self, + const void *user_data) { g_auto (GStrv) config = NULL; @@ -94,11 +108,45 @@ test_get_proxies (Fixture *self, g_assert_nonnull (config); g_assert_cmpstr (config[0], ==, "direct://"); - config = px_manager_get_proxies_sync (self->manager, "http://www.example.com", NULL); + config = px_manager_get_proxies_sync (self->manager, "https://www.example.com", NULL); g_assert_nonnull (config); g_assert_cmpstr (config[0], ==, "direct://"); } +static void +test_get_proxies_nonpac (Fixture *self, + const void *user_data) +{ + g_auto (GStrv) config = NULL; + + config = px_manager_get_proxies_sync (self->manager, "https://www.example.com", NULL); + g_assert_nonnull (config); + g_assert_cmpstr (config[0], ==, "http://127.0.0.1:1983"); +} + +static gpointer +get_proxies_pac (gpointer data) +{ + Fixture *self = data; + g_auto (GStrv) config = NULL; + + config = px_manager_get_proxies_sync (self->manager, "https://www.example.com", NULL); + g_assert_nonnull (config); + g_assert_cmpstr (config[0], ==, "PROXY 127.0.0.1:1983"); + + g_main_loop_quit (self->loop); + + return NULL; +} + +static void +test_get_proxies_pac (Fixture *self, + const void *user_data) +{ + g_thread_new ("test", (GThreadFunc)get_proxies_pac, self); + g_main_loop_run (self->loop); +} + int main (int argc, char **argv) @@ -116,8 +164,10 @@ main (int argc, soup_server_add_handler (server, NULL, server_callback, NULL, NULL); - g_test_add ("/pac/download", Fixture, NULL, fixture_setup, test_pac_download, fixture_teardown); - g_test_add ("/pac/get_proxies", Fixture, NULL, fixture_setup, test_get_proxies, fixture_teardown); + g_test_add ("/pac/download", Fixture, "px-manager-direct", fixture_setup, test_pac_download, fixture_teardown); + g_test_add ("/pac/get_proxies_direct", Fixture, "px-manager-direct", fixture_setup, test_get_proxies_direct, fixture_teardown); + g_test_add ("/pac/get_proxies_nonpac", Fixture, "px-manager-nonpac", fixture_setup, test_get_proxies_nonpac, fixture_teardown); + g_test_add ("/pac/get_proxies_pac", Fixture, "px-manager-pac", fixture_setup, test_get_proxies_pac, fixture_teardown); return g_test_run (); } |