summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan-Michael Brummer <jan.brummer@tabos.org>2023-01-23 22:57:02 +0100
committerJan-Michael Brummer <jan.brummer@tabos.org>2023-03-27 16:31:58 +0200
commitd875586bab506b7fdb4b2e0ce12c4c7f307cc6bd (patch)
tree8177126c54c21a0568213662c4a45d16ac5783d5
parent21dd5679dd642aa6cb9e120de2304ba19146d2c4 (diff)
downloadlibproxy-git-d875586bab506b7fdb4b2e0ce12c4c7f307cc6bd.tar.gz
Add PAC configuration tests (#9)
-rw-r--r--src/backend/px-manager.c1
-rw-r--r--src/tests/data/px-manager-direct1
-rw-r--r--src/tests/data/px-manager-nonpac5
-rw-r--r--src/tests/data/px-manager-pac5
-rw-r--r--src/tests/data/px-manager-sample.pac6
-rw-r--r--src/tests/px-manager-test.c66
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 ();
}