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);
52 g_object_unref (test->service);
53 secret_service_disconnect ();
54 egg_assert_not_object (test->service);
60 test_ensure (Test *test,
66 g_assert_cmpstr (secret_service_get_session_dbus_path (test->service), ==, NULL);
67 g_assert_cmpstr (secret_service_get_session_algorithms (test->service), ==, NULL);
69 ret = secret_service_ensure_session_sync (test->service, NULL, &error);
70 g_assert_no_error (error);
71 g_assert (ret == TRUE);
72 g_assert_cmpstr (secret_service_get_session_dbus_path (test->service), !=, NULL);
73 g_assert_cmpstr (secret_service_get_session_algorithms (test->service), ==, "dh-ietf1024-sha256-aes128-cbc-pkcs7");
77 test_ensure_twice (Test *test,
84 g_assert_cmpstr (secret_service_get_session_dbus_path (test->service), ==, NULL);
85 g_assert_cmpstr (secret_service_get_session_algorithms (test->service), ==, NULL);
87 ret = secret_service_ensure_session_sync (test->service, NULL, &error);
88 g_assert_no_error (error);
89 g_assert (ret == TRUE);
90 g_assert_cmpstr (secret_service_get_session_dbus_path (test->service), !=, NULL);
91 g_assert_cmpstr (secret_service_get_session_algorithms (test->service), ==, "dh-ietf1024-sha256-aes128-cbc-pkcs7");
93 path = g_strdup (secret_service_get_session_dbus_path (test->service));
94 ret = secret_service_ensure_session_sync (test->service, NULL, &error);
95 g_assert_no_error (error);
96 g_assert (ret == TRUE);
97 g_assert_cmpstr (secret_service_get_session_dbus_path (test->service), ==, path);
98 g_assert_cmpstr (secret_service_get_session_algorithms (test->service), ==, "dh-ietf1024-sha256-aes128-cbc-pkcs7");
104 test_ensure_plain (Test *test,
105 gconstpointer unused)
107 GError *error = NULL;
110 g_assert_cmpstr (secret_service_get_session_dbus_path (test->service), ==, NULL);
111 g_assert_cmpstr (secret_service_get_session_algorithms (test->service), ==, NULL);
113 ret = secret_service_ensure_session_sync (test->service, NULL, &error);
114 g_assert_no_error (error);
116 g_assert (ret == TRUE);
117 g_assert_cmpstr (secret_service_get_session_dbus_path (test->service), !=, NULL);
118 g_assert_cmpstr (secret_service_get_session_algorithms (test->service), ==, "plain");
122 on_complete_get_result (GObject *source,
123 GAsyncResult *result,
126 GAsyncResult **ret = user_data;
127 g_assert (ret != NULL);
128 g_assert (*ret == NULL);
129 *ret = g_object_ref (result);
130 egg_test_wait_stop ();
134 test_ensure_async_plain (Test *test,
135 gconstpointer unused)
137 GAsyncResult *result = NULL;
138 GError *error = NULL;
141 secret_service_ensure_session (test->service, NULL, on_complete_get_result, &result);
144 g_assert (G_IS_ASYNC_RESULT (result));
145 ret = secret_service_ensure_session_finish (test->service, result, &error);
146 g_assert_no_error (error);
148 g_assert (ret == TRUE);
149 g_assert_cmpstr (secret_service_get_session_dbus_path (test->service), !=, NULL);
150 g_assert_cmpstr (secret_service_get_session_algorithms (test->service), ==, "plain");
152 g_object_unref (result);
156 test_ensure_async_aes (Test *test,
157 gconstpointer unused)
159 GAsyncResult *result = NULL;
160 GError *error = NULL;
163 secret_service_ensure_session (test->service, NULL, on_complete_get_result, &result);
164 egg_test_wait_until (500);
166 g_assert (G_IS_ASYNC_RESULT (result));
167 ret = secret_service_ensure_session_finish (test->service, result, &error);
168 g_assert_no_error (error);
170 g_assert (ret == TRUE);
171 g_assert_cmpstr (secret_service_get_session_dbus_path (test->service), !=, NULL);
172 g_assert_cmpstr (secret_service_get_session_algorithms (test->service), ==, "dh-ietf1024-sha256-aes128-cbc-pkcs7");
174 g_object_unref (result);
178 test_ensure_async_twice (Test *test,
179 gconstpointer unused)
181 GAsyncResult *result = NULL;
182 GError *error = NULL;
186 secret_service_ensure_session (test->service, NULL, on_complete_get_result, &result);
187 egg_test_wait_until (500);
189 g_assert (G_IS_ASYNC_RESULT (result));
190 ret = secret_service_ensure_session_finish (test->service, result, &error);
191 g_assert_no_error (error);
193 g_assert (ret == TRUE);
194 g_assert_cmpstr (secret_service_get_session_dbus_path (test->service), !=, NULL);
195 g_assert_cmpstr (secret_service_get_session_algorithms (test->service), ==, "plain");
197 g_object_unref (result);
200 path = g_strdup (secret_service_get_session_dbus_path (test->service));
201 secret_service_ensure_session (test->service, NULL, on_complete_get_result, &result);
202 egg_test_wait_until (500);
204 g_assert (G_IS_ASYNC_RESULT (result));
205 ret = secret_service_ensure_session_finish (test->service, result, &error);
206 g_assert_no_error (error);
208 g_assert (ret == TRUE);
209 g_assert_cmpstr (secret_service_get_session_dbus_path (test->service), ==, path);
210 g_assert_cmpstr (secret_service_get_session_algorithms (test->service), ==, "plain");
212 g_object_unref (result);
217 main (int argc, char **argv)
219 g_test_init (&argc, &argv, NULL);
220 g_set_prgname ("test-session");
221 #if !GLIB_CHECK_VERSION(2,35,0)
225 g_test_add ("/session/ensure-aes", Test, "mock-service-normal.py", setup, test_ensure, teardown);
226 g_test_add ("/session/ensure-twice", Test, "mock-service-normal.py", setup, test_ensure_twice, teardown);
227 g_test_add ("/session/ensure-plain", Test, "mock-service-only-plain.py", setup, test_ensure_plain, teardown);
228 g_test_add ("/session/ensure-async-aes", Test, "mock-service-normal.py", setup, test_ensure_async_aes, teardown);
229 g_test_add ("/session/ensure-async-plain", Test, "mock-service-only-plain.py", setup, test_ensure_async_plain, teardown);
230 g_test_add ("/session/ensure-async-twice", Test, "mock-service-only-plain.py", setup, test_ensure_async_twice, teardown);
232 return egg_tests_run_with_loop ();