1 /* libsecret - GLib wrapper for Secret Service
3 * Copyright 2011 Collabora Ltd.
5 * This program is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU Lesser General Public License as published
7 * by the Free Software Foundation; either version 2 of the licence or (at
8 * your option) any later version.
10 * See the included COPYING file for more information.
16 #include "secret-item.h"
17 #include "secret-service.h"
18 #include "secret-paths.h"
19 #include "secret-private.h"
21 #include "mock-service.h"
23 #include "egg/egg-testing.h"
31 SecretService *service;
39 const gchar *mock_script = data;
41 mock_service_start (mock_script, &error);
42 g_assert_no_error (error);
44 test->service = secret_service_get_sync (SECRET_SERVICE_NONE, NULL, &error);
45 g_assert_no_error (error);
46 g_object_add_weak_pointer (G_OBJECT (test->service), (gpointer *)&test->service);
53 g_object_unref (test->service);
54 secret_service_disconnect ();
55 g_assert (test->service == NULL);
61 test_ensure (Test *test,
67 g_assert_cmpstr (secret_service_get_session_dbus_path (test->service), ==, NULL);
68 g_assert_cmpstr (secret_service_get_session_algorithms (test->service), ==, NULL);
70 ret = secret_service_ensure_session_sync (test->service, NULL, &error);
71 g_assert_no_error (error);
72 g_assert (ret == TRUE);
73 g_assert_cmpstr (secret_service_get_session_dbus_path (test->service), !=, NULL);
74 g_assert_cmpstr (secret_service_get_session_algorithms (test->service), ==, "dh-ietf1024-sha256-aes128-cbc-pkcs7");
78 test_ensure_twice (Test *test,
85 g_assert_cmpstr (secret_service_get_session_dbus_path (test->service), ==, NULL);
86 g_assert_cmpstr (secret_service_get_session_algorithms (test->service), ==, NULL);
88 ret = secret_service_ensure_session_sync (test->service, NULL, &error);
89 g_assert_no_error (error);
90 g_assert (ret == TRUE);
91 g_assert_cmpstr (secret_service_get_session_dbus_path (test->service), !=, NULL);
92 g_assert_cmpstr (secret_service_get_session_algorithms (test->service), ==, "dh-ietf1024-sha256-aes128-cbc-pkcs7");
94 path = g_strdup (secret_service_get_session_dbus_path (test->service));
95 ret = secret_service_ensure_session_sync (test->service, NULL, &error);
96 g_assert_no_error (error);
97 g_assert (ret == TRUE);
98 g_assert_cmpstr (secret_service_get_session_dbus_path (test->service), ==, path);
99 g_assert_cmpstr (secret_service_get_session_algorithms (test->service), ==, "dh-ietf1024-sha256-aes128-cbc-pkcs7");
105 test_ensure_plain (Test *test,
106 gconstpointer unused)
108 GError *error = NULL;
111 g_assert_cmpstr (secret_service_get_session_dbus_path (test->service), ==, NULL);
112 g_assert_cmpstr (secret_service_get_session_algorithms (test->service), ==, NULL);
114 ret = secret_service_ensure_session_sync (test->service, NULL, &error);
115 g_assert_no_error (error);
117 g_assert (ret == TRUE);
118 g_assert_cmpstr (secret_service_get_session_dbus_path (test->service), !=, NULL);
119 g_assert_cmpstr (secret_service_get_session_algorithms (test->service), ==, "plain");
123 on_complete_get_result (GObject *source,
124 GAsyncResult *result,
127 GAsyncResult **ret = user_data;
128 g_assert (ret != NULL);
129 g_assert (*ret == NULL);
130 *ret = g_object_ref (result);
131 egg_test_wait_stop ();
135 test_ensure_async_plain (Test *test,
136 gconstpointer unused)
138 GAsyncResult *result = NULL;
139 GError *error = NULL;
142 secret_service_ensure_session (test->service, NULL, on_complete_get_result, &result);
145 g_assert (G_IS_ASYNC_RESULT (result));
146 ret = secret_service_ensure_session_finish (test->service, result, &error);
147 g_assert_no_error (error);
149 g_assert (ret == TRUE);
150 g_assert_cmpstr (secret_service_get_session_dbus_path (test->service), !=, NULL);
151 g_assert_cmpstr (secret_service_get_session_algorithms (test->service), ==, "plain");
153 g_object_unref (result);
157 test_ensure_async_aes (Test *test,
158 gconstpointer unused)
160 GAsyncResult *result = NULL;
161 GError *error = NULL;
164 secret_service_ensure_session (test->service, NULL, on_complete_get_result, &result);
165 egg_test_wait_until (500);
167 g_assert (G_IS_ASYNC_RESULT (result));
168 ret = secret_service_ensure_session_finish (test->service, result, &error);
169 g_assert_no_error (error);
171 g_assert (ret == TRUE);
172 g_assert_cmpstr (secret_service_get_session_dbus_path (test->service), !=, NULL);
173 g_assert_cmpstr (secret_service_get_session_algorithms (test->service), ==, "dh-ietf1024-sha256-aes128-cbc-pkcs7");
175 g_object_unref (result);
179 test_ensure_async_twice (Test *test,
180 gconstpointer unused)
182 GAsyncResult *result = NULL;
183 GError *error = NULL;
187 secret_service_ensure_session (test->service, NULL, on_complete_get_result, &result);
188 egg_test_wait_until (500);
190 g_assert (G_IS_ASYNC_RESULT (result));
191 ret = secret_service_ensure_session_finish (test->service, result, &error);
192 g_assert_no_error (error);
194 g_assert (ret == TRUE);
195 g_assert_cmpstr (secret_service_get_session_dbus_path (test->service), !=, NULL);
196 g_assert_cmpstr (secret_service_get_session_algorithms (test->service), ==, "plain");
198 g_object_unref (result);
201 path = g_strdup (secret_service_get_session_dbus_path (test->service));
202 secret_service_ensure_session (test->service, NULL, on_complete_get_result, &result);
203 egg_test_wait_until (500);
205 g_assert (G_IS_ASYNC_RESULT (result));
206 ret = secret_service_ensure_session_finish (test->service, result, &error);
207 g_assert_no_error (error);
209 g_assert (ret == TRUE);
210 g_assert_cmpstr (secret_service_get_session_dbus_path (test->service), ==, path);
211 g_assert_cmpstr (secret_service_get_session_algorithms (test->service), ==, "plain");
213 g_object_unref (result);
218 main (int argc, char **argv)
220 g_test_init (&argc, &argv, NULL);
221 g_set_prgname ("test-session");
222 #if !GLIB_CHECK_VERSION(2,35,0)
226 g_test_add ("/session/ensure-aes", Test, "mock-service-normal.py", setup, test_ensure, teardown);
227 g_test_add ("/session/ensure-twice", Test, "mock-service-normal.py", setup, test_ensure_twice, teardown);
228 g_test_add ("/session/ensure-plain", Test, "mock-service-only-plain.py", setup, test_ensure_plain, teardown);
229 g_test_add ("/session/ensure-async-aes", Test, "mock-service-normal.py", setup, test_ensure_async_aes, teardown);
230 g_test_add ("/session/ensure-async-plain", Test, "mock-service-only-plain.py", setup, test_ensure_async_plain, teardown);
231 g_test_add ("/session/ensure-async-twice", Test, "mock-service-only-plain.py", setup, test_ensure_async_twice, teardown);
233 return egg_tests_run_with_loop ();