Imported Upstream version 2.74.0
[platform/upstream/glib-networking.git] / proxy / tests / gnome.c
1 /* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /*
3  * GProxyResolverGnome tests
4  *
5  * Copyright 2011 Red Hat, Inc.
6  *
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.
11  *
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.
16  *
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/>.
20  */
21
22 #include <gio/gio.h>
23 #include <gdesktop-enums.h>
24
25 #include "common.c"
26
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"
32
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"
39
40 #define GNOME_PROXY_HTTPS_CHILD_SCHEMA    "https"
41 #define GNOME_PROXY_HTTPS_HOST_KEY        "host"
42 #define GNOME_PROXY_HTTPS_PORT_KEY        "port"
43
44 #define GNOME_PROXY_FTP_CHILD_SCHEMA      "ftp"
45 #define GNOME_PROXY_FTP_HOST_KEY          "host"
46 #define GNOME_PROXY_FTP_PORT_KEY          "port"
47
48 #define GNOME_PROXY_SOCKS_CHILD_SCHEMA    "socks"
49 #define GNOME_PROXY_SOCKS_HOST_KEY        "host"
50 #define GNOME_PROXY_SOCKS_PORT_KEY        "port"
51
52 static void
53 reset_proxy_settings (gpointer      fixture,
54                       gconstpointer user_data)
55 {
56   GSettings *settings, *child;
57
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);
61
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);
66
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);
71
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);
76
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);
81
82   g_object_unref (settings);
83 }
84
85 static void
86 test_proxy_uri (gpointer      fixture,
87                 gconstpointer user_data)
88 {
89   GSettings *settings, *child;
90
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);
94
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);
99
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);
104
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);
109
110   g_object_unref (settings);
111
112   test_proxy_uri_common ();
113 }
114
115 static void
116 test_proxy_socks (gpointer      fixture,
117                   gconstpointer user_data)
118 {
119   GSettings *settings, *child;
120   const gchar *ignore_hosts[2] = { "127.0.0.1", NULL };
121
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));
126
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);
132
133   test_proxy_socks_common ();
134 }
135
136 static void
137 test_proxy_ignore (gpointer      fixture,
138                    gconstpointer user_data)
139 {
140   GSettings *settings, *http;
141
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));
146
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);
150
151   g_object_unref (http);
152   g_object_unref (settings);
153
154   test_proxy_ignore_common ();
155 }
156
157 int
158 main (int   argc,
159       char *argv[])
160 {
161   g_test_init (&argc, &argv, NULL);
162
163   g_setenv ("GIO_USE_PROXY_RESOLVER", "gnome", TRUE);
164   g_setenv ("GSETTINGS_BACKEND", "memory", TRUE);
165   g_setenv ("XDG_CURRENT_DESKTOP", "GNOME", TRUE);
166
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);
173
174   return g_test_run();
175 }