summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan-Michael Brummer <jan.brummer@tabos.org>2023-01-25 14:57:07 +0100
committerJan-Michael Brummer <jan.brummer@tabos.org>2023-03-27 16:31:58 +0200
commitf5a84456c07fe1e3d8647c8a17aacb05cdaa2996 (patch)
tree2e60497a66751577f56dc8d1b75fdef052fc48a8
parent77c6515d6b9d7078a1cac0a0e1abdf714f7d3e3f (diff)
downloadlibproxy-git-f5a84456c07fe1e3d8647c8a17aacb05cdaa2996.tar.gz
Add initial wpad test (#15)
-rw-r--r--src/backend/px-manager.c10
-rw-r--r--src/tests/data/px-manager-wpad5
-rw-r--r--src/tests/px-manager-test.c26
3 files changed, 37 insertions, 4 deletions
diff --git a/src/backend/px-manager.c b/src/backend/px-manager.c
index af4a119..097f020 100644
--- a/src/backend/px-manager.c
+++ b/src/backend/px-manager.c
@@ -344,13 +344,15 @@ px_manager_expand_wpad (PxManager *self,
}
if (!self->pac_data) {
- GUri *wpad_url = g_uri_parse ("download://wpad/wpad.data", G_URI_FLAGS_PARSE_RELAXED, NULL);
+ GUri *wpad_url = g_uri_parse ("http://wpad/wpad.dat", G_URI_FLAGS_PARSE_RELAXED, NULL);
g_print ("Trying to find the PAC using WPAD...\n");
self->pac_url = g_uri_to_string (wpad_url);
self->pac_data = px_manager_pac_download (self, self->pac_url);
- if (!self->pac_data)
- g_clear_object (&self->pac_url);
+ if (!self->pac_data) {
+ g_clear_pointer (&self->pac_url, g_free);
+ ret = FALSE;
+ }
}
}
@@ -433,7 +435,7 @@ px_manager_get_proxies_sync (PxManager *self,
.builder = builder,
};
peas_extension_set_foreach (self->pacrunner_set, px_manager_run_pac, &pac_data);
- } else {
+ } else if (!g_str_has_prefix (g_uri_get_scheme (conf_url), "wpad")) {
g_strv_builder_add (builder, g_uri_to_string (conf_url));
}
}
diff --git a/src/tests/data/px-manager-wpad b/src/tests/data/px-manager-wpad
new file mode 100644
index 0000000..4ab0f81
--- /dev/null
+++ b/src/tests/data/px-manager-wpad
@@ -0,0 +1,5 @@
+PROXY_ENABLED="yes"
+HTTP_PROXY="wpad://"
+HTTPS_PROXY="wpad://"
+FTP_PROXY="wpad://"
+NO_PROXY="localhost, 127.0.0.1"
diff --git a/src/tests/px-manager-test.c b/src/tests/px-manager-test.c
index 5cb16c3..ba1c6b7 100644
--- a/src/tests/px-manager-test.c
+++ b/src/tests/px-manager-test.c
@@ -158,6 +158,31 @@ test_get_proxies_pac (Fixture *self,
g_main_loop_run (self->loop);
}
+static gpointer
+get_wpad (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], ==, "direct://");
+
+ g_main_loop_quit (self->loop);
+
+ return NULL;
+}
+
+static void
+test_get_wpad (Fixture *self,
+ const void *user_data)
+{
+ g_autoptr (GThread) thread = NULL;
+
+ thread = g_thread_new ("test", (GThreadFunc)get_wpad, self);
+ g_main_loop_run (self->loop);
+}
+
int
main (int argc,
char **argv)
@@ -179,6 +204,7 @@ main (int argc,
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);
+ g_test_add ("/pac/wpad", Fixture, "px-manager-wpad", fixture_setup, test_get_wpad, fixture_teardown);
return g_test_run ();
}