1 /* GProxyResolverGnome tests
3 * Copyright 2011 Red Hat, Inc.
5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Lesser General Public
7 * License as published by the Free Software Foundation; either
8 * version 2 of the License, or (at your option) any later version.
10 * This library is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Lesser General Public License for more details.
15 * You should have received a copy of the GNU Lesser General
16 * Public License along with this library; if not, see
17 * <http://www.gnu.org/licenses/>.
21 #include <gdesktop-enums.h>
25 #define GNOME_PROXY_SETTINGS_SCHEMA "org.gnome.system.proxy"
26 #define GNOME_PROXY_MODE_KEY "mode"
27 #define GNOME_PROXY_AUTOCONFIG_URL_KEY "autoconfig-url"
28 #define GNOME_PROXY_IGNORE_HOSTS_KEY "ignore-hosts"
29 #define GNOME_PROXY_USE_SAME_PROXY_KEY "use-same-proxy"
31 #define GNOME_PROXY_HTTP_CHILD_SCHEMA "http"
32 #define GNOME_PROXY_HTTP_HOST_KEY "host"
33 #define GNOME_PROXY_HTTP_PORT_KEY "port"
34 #define GNOME_PROXY_HTTP_USE_AUTH_KEY "use-authentication"
35 #define GNOME_PROXY_HTTP_USER_KEY "authentication-user"
36 #define GNOME_PROXY_HTTP_PASSWORD_KEY "authentication-password"
38 #define GNOME_PROXY_HTTPS_CHILD_SCHEMA "https"
39 #define GNOME_PROXY_HTTPS_HOST_KEY "host"
40 #define GNOME_PROXY_HTTPS_PORT_KEY "port"
42 #define GNOME_PROXY_FTP_CHILD_SCHEMA "ftp"
43 #define GNOME_PROXY_FTP_HOST_KEY "host"
44 #define GNOME_PROXY_FTP_PORT_KEY "port"
46 #define GNOME_PROXY_SOCKS_CHILD_SCHEMA "socks"
47 #define GNOME_PROXY_SOCKS_HOST_KEY "host"
48 #define GNOME_PROXY_SOCKS_PORT_KEY "port"
51 reset_proxy_settings (gpointer fixture,
52 gconstpointer user_data)
54 GSettings *settings, *child;
56 settings = g_settings_new (GNOME_PROXY_SETTINGS_SCHEMA);
57 g_settings_reset (settings, GNOME_PROXY_MODE_KEY);
58 g_settings_reset (settings, GNOME_PROXY_USE_SAME_PROXY_KEY);
60 child = g_settings_get_child (settings, GNOME_PROXY_HTTP_CHILD_SCHEMA);
61 g_settings_reset (child, GNOME_PROXY_HTTP_HOST_KEY);
62 g_settings_reset (child, GNOME_PROXY_HTTP_PORT_KEY);
63 g_object_unref (child);
65 child = g_settings_get_child (settings, GNOME_PROXY_HTTPS_CHILD_SCHEMA);
66 g_settings_reset (child, GNOME_PROXY_HTTPS_HOST_KEY);
67 g_settings_reset (child, GNOME_PROXY_HTTPS_PORT_KEY);
68 g_object_unref (child);
70 child = g_settings_get_child (settings, GNOME_PROXY_FTP_CHILD_SCHEMA);
71 g_settings_reset (child, GNOME_PROXY_FTP_HOST_KEY);
72 g_settings_reset (child, GNOME_PROXY_FTP_PORT_KEY);
73 g_object_unref (child);
75 child = g_settings_get_child (settings, GNOME_PROXY_SOCKS_CHILD_SCHEMA);
76 g_settings_reset (child, GNOME_PROXY_SOCKS_HOST_KEY);
77 g_settings_reset (child, GNOME_PROXY_SOCKS_PORT_KEY);
78 g_object_unref (child);
80 g_object_unref (settings);
84 test_proxy_uri (gpointer fixture,
85 gconstpointer user_data)
87 GSettings *settings, *child;
89 settings = g_settings_new (GNOME_PROXY_SETTINGS_SCHEMA);
90 g_settings_set_enum (settings, GNOME_PROXY_MODE_KEY, G_DESKTOP_PROXY_MODE_MANUAL);
91 g_settings_set_boolean (settings, GNOME_PROXY_USE_SAME_PROXY_KEY, TRUE);
93 child = g_settings_get_child (settings, GNOME_PROXY_HTTP_CHILD_SCHEMA);
94 g_settings_set_string (child, GNOME_PROXY_HTTP_HOST_KEY, "proxy.example.com");
95 g_settings_set_int (child, GNOME_PROXY_HTTP_PORT_KEY, 8080);
96 g_object_unref (child);
98 child = g_settings_get_child (settings, GNOME_PROXY_HTTPS_CHILD_SCHEMA);
99 g_settings_set_string (child, GNOME_PROXY_HTTPS_HOST_KEY, "proxy-s.example.com");
100 g_settings_set_int (child, GNOME_PROXY_HTTPS_PORT_KEY, 7070);
101 g_object_unref (child);
103 child = g_settings_get_child (settings, GNOME_PROXY_FTP_CHILD_SCHEMA);
104 g_settings_set_string (child, GNOME_PROXY_FTP_HOST_KEY, "proxy-f.example.com");
105 g_settings_set_int (child, GNOME_PROXY_FTP_PORT_KEY, 6060);
106 g_object_unref (child);
108 g_object_unref (settings);
110 test_proxy_uri_common ();
114 test_proxy_socks (gpointer fixture,
115 gconstpointer user_data)
117 GSettings *settings, *child;
118 const gchar *ignore_hosts[2] = { "127.0.0.1", NULL };
120 settings = g_settings_new (GNOME_PROXY_SETTINGS_SCHEMA);
121 g_settings_set_enum (settings, GNOME_PROXY_MODE_KEY, G_DESKTOP_PROXY_MODE_MANUAL);
122 g_settings_set (settings, GNOME_PROXY_IGNORE_HOSTS_KEY,
123 "@as", g_variant_new_strv (ignore_hosts, -1));
125 child = g_settings_get_child (settings, GNOME_PROXY_SOCKS_CHILD_SCHEMA);
126 g_settings_set_string (child, GNOME_PROXY_SOCKS_HOST_KEY, "proxy.example.com");
127 g_settings_set_int (child, GNOME_PROXY_SOCKS_PORT_KEY, 1234);
128 g_object_unref (child);
129 g_object_unref (settings);
131 test_proxy_socks_common ();
135 test_proxy_ignore (gpointer fixture,
136 gconstpointer user_data)
138 GSettings *settings, *http;
140 settings = g_settings_new (GNOME_PROXY_SETTINGS_SCHEMA);
141 g_settings_set_enum (settings, GNOME_PROXY_MODE_KEY, G_DESKTOP_PROXY_MODE_MANUAL);
142 g_settings_set (settings, GNOME_PROXY_IGNORE_HOSTS_KEY,
143 "@as", g_variant_new_strv (ignore_hosts, n_ignore_hosts));
145 http = g_settings_get_child (settings, GNOME_PROXY_HTTP_CHILD_SCHEMA);
146 g_settings_set_string (http, GNOME_PROXY_HTTP_HOST_KEY, "localhost");
147 g_settings_set_int (http, GNOME_PROXY_HTTP_PORT_KEY, 8080);
149 g_object_unref (http);
150 g_object_unref (settings);
152 test_proxy_ignore_common (FALSE);
159 g_test_init (&argc, &argv, NULL);
161 g_setenv ("GIO_EXTRA_MODULES", TOP_BUILDDIR "/proxy/gnome/.libs", TRUE);
162 g_setenv ("GIO_USE_PROXY_RESOLVER", "gnome", TRUE);
163 g_setenv ("GSETTINGS_BACKEND", "memory", TRUE);
164 g_setenv ("DESKTOP_SESSION", "gnome", TRUE);
166 g_test_add_vtable ("/proxy/gnome/uri", 0, NULL,
167 reset_proxy_settings, test_proxy_uri, NULL);
168 g_test_add_vtable ("/proxy/gnome/socks", 0, NULL,
169 reset_proxy_settings, test_proxy_socks, NULL);
170 g_test_add_vtable ("/proxy/gnome/ignore", 0, NULL,
171 reset_proxy_settings, test_proxy_ignore, NULL);