1 /* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
3 * GProxyResolverGnome tests
5 * Copyright 2011 Red Hat, Inc.
7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public
9 * License as published by the Free Software Foundation; either
10 * version 2.1 of the License, or (at your option) any later version.
12 * This library is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Lesser General Public License for more details.
17 * You should have received a copy of the GNU Lesser General
18 * Public License along with this library; if not, see
19 * <http://www.gnu.org/licenses/>.
23 #include <gdesktop-enums.h>
27 #define GNOME_PROXY_SETTINGS_SCHEMA "org.gnome.system.proxy"
28 #define GNOME_PROXY_MODE_KEY "mode"
29 #define GNOME_PROXY_AUTOCONFIG_URL_KEY "autoconfig-url"
30 #define GNOME_PROXY_IGNORE_HOSTS_KEY "ignore-hosts"
31 #define GNOME_PROXY_USE_SAME_PROXY_KEY "use-same-proxy"
33 #define GNOME_PROXY_HTTP_CHILD_SCHEMA "http"
34 #define GNOME_PROXY_HTTP_HOST_KEY "host"
35 #define GNOME_PROXY_HTTP_PORT_KEY "port"
36 #define GNOME_PROXY_HTTP_USE_AUTH_KEY "use-authentication"
37 #define GNOME_PROXY_HTTP_USER_KEY "authentication-user"
38 #define GNOME_PROXY_HTTP_PASSWORD_KEY "authentication-password"
40 #define GNOME_PROXY_HTTPS_CHILD_SCHEMA "https"
41 #define GNOME_PROXY_HTTPS_HOST_KEY "host"
42 #define GNOME_PROXY_HTTPS_PORT_KEY "port"
44 #define GNOME_PROXY_FTP_CHILD_SCHEMA "ftp"
45 #define GNOME_PROXY_FTP_HOST_KEY "host"
46 #define GNOME_PROXY_FTP_PORT_KEY "port"
48 #define GNOME_PROXY_SOCKS_CHILD_SCHEMA "socks"
49 #define GNOME_PROXY_SOCKS_HOST_KEY "host"
50 #define GNOME_PROXY_SOCKS_PORT_KEY "port"
53 reset_proxy_settings (gpointer fixture,
54 gconstpointer user_data)
56 GSettings *settings, *child;
58 settings = g_settings_new (GNOME_PROXY_SETTINGS_SCHEMA);
59 g_settings_reset (settings, GNOME_PROXY_MODE_KEY);
60 g_settings_reset (settings, GNOME_PROXY_USE_SAME_PROXY_KEY);
62 child = g_settings_get_child (settings, GNOME_PROXY_HTTP_CHILD_SCHEMA);
63 g_settings_reset (child, GNOME_PROXY_HTTP_HOST_KEY);
64 g_settings_reset (child, GNOME_PROXY_HTTP_PORT_KEY);
65 g_object_unref (child);
67 child = g_settings_get_child (settings, GNOME_PROXY_HTTPS_CHILD_SCHEMA);
68 g_settings_reset (child, GNOME_PROXY_HTTPS_HOST_KEY);
69 g_settings_reset (child, GNOME_PROXY_HTTPS_PORT_KEY);
70 g_object_unref (child);
72 child = g_settings_get_child (settings, GNOME_PROXY_FTP_CHILD_SCHEMA);
73 g_settings_reset (child, GNOME_PROXY_FTP_HOST_KEY);
74 g_settings_reset (child, GNOME_PROXY_FTP_PORT_KEY);
75 g_object_unref (child);
77 child = g_settings_get_child (settings, GNOME_PROXY_SOCKS_CHILD_SCHEMA);
78 g_settings_reset (child, GNOME_PROXY_SOCKS_HOST_KEY);
79 g_settings_reset (child, GNOME_PROXY_SOCKS_PORT_KEY);
80 g_object_unref (child);
82 g_object_unref (settings);
86 test_proxy_uri (gpointer fixture,
87 gconstpointer user_data)
89 GSettings *settings, *child;
91 settings = g_settings_new (GNOME_PROXY_SETTINGS_SCHEMA);
92 g_settings_set_enum (settings, GNOME_PROXY_MODE_KEY, G_DESKTOP_PROXY_MODE_MANUAL);
93 g_settings_set_boolean (settings, GNOME_PROXY_USE_SAME_PROXY_KEY, TRUE);
95 child = g_settings_get_child (settings, GNOME_PROXY_HTTP_CHILD_SCHEMA);
96 g_settings_set_string (child, GNOME_PROXY_HTTP_HOST_KEY, "proxy.example.com");
97 g_settings_set_int (child, GNOME_PROXY_HTTP_PORT_KEY, 8080);
98 g_object_unref (child);
100 child = g_settings_get_child (settings, GNOME_PROXY_HTTPS_CHILD_SCHEMA);
101 g_settings_set_string (child, GNOME_PROXY_HTTPS_HOST_KEY, "proxy-s.example.com");
102 g_settings_set_int (child, GNOME_PROXY_HTTPS_PORT_KEY, 7070);
103 g_object_unref (child);
105 child = g_settings_get_child (settings, GNOME_PROXY_FTP_CHILD_SCHEMA);
106 g_settings_set_string (child, GNOME_PROXY_FTP_HOST_KEY, "proxy-f.example.com");
107 g_settings_set_int (child, GNOME_PROXY_FTP_PORT_KEY, 6060);
108 g_object_unref (child);
110 g_object_unref (settings);
112 test_proxy_uri_common ();
116 test_proxy_socks (gpointer fixture,
117 gconstpointer user_data)
119 GSettings *settings, *child;
120 const gchar *ignore_hosts[2] = { "127.0.0.1", NULL };
122 settings = g_settings_new (GNOME_PROXY_SETTINGS_SCHEMA);
123 g_settings_set_enum (settings, GNOME_PROXY_MODE_KEY, G_DESKTOP_PROXY_MODE_MANUAL);
124 g_settings_set (settings, GNOME_PROXY_IGNORE_HOSTS_KEY,
125 "@as", g_variant_new_strv (ignore_hosts, -1));
127 child = g_settings_get_child (settings, GNOME_PROXY_SOCKS_CHILD_SCHEMA);
128 g_settings_set_string (child, GNOME_PROXY_SOCKS_HOST_KEY, "proxy.example.com");
129 g_settings_set_int (child, GNOME_PROXY_SOCKS_PORT_KEY, 1234);
130 g_object_unref (child);
131 g_object_unref (settings);
133 test_proxy_socks_common ();
137 test_proxy_ignore (gpointer fixture,
138 gconstpointer user_data)
140 GSettings *settings, *http;
142 settings = g_settings_new (GNOME_PROXY_SETTINGS_SCHEMA);
143 g_settings_set_enum (settings, GNOME_PROXY_MODE_KEY, G_DESKTOP_PROXY_MODE_MANUAL);
144 g_settings_set (settings, GNOME_PROXY_IGNORE_HOSTS_KEY,
145 "@as", g_variant_new_strv (ignore_hosts, n_ignore_hosts));
147 http = g_settings_get_child (settings, GNOME_PROXY_HTTP_CHILD_SCHEMA);
148 g_settings_set_string (http, GNOME_PROXY_HTTP_HOST_KEY, "localhost");
149 g_settings_set_int (http, GNOME_PROXY_HTTP_PORT_KEY, 8080);
151 g_object_unref (http);
152 g_object_unref (settings);
154 test_proxy_ignore_common ();
161 g_test_init (&argc, &argv, NULL);
163 g_setenv ("GIO_USE_PROXY_RESOLVER", "gnome", TRUE);
164 g_setenv ("GSETTINGS_BACKEND", "memory", TRUE);
165 g_setenv ("XDG_CURRENT_DESKTOP", "GNOME", TRUE);
167 g_test_add_vtable ("/proxy/gnome/uri", 0, NULL,
168 reset_proxy_settings, test_proxy_uri, NULL);
169 g_test_add_vtable ("/proxy/gnome/socks", 0, NULL,
170 reset_proxy_settings, test_proxy_socks, NULL);
171 g_test_add_vtable ("/proxy/gnome/ignore", 0, NULL,
172 reset_proxy_settings, test_proxy_ignore, NULL);