1 /* libsecret - GLib wrapper for Secret Service
3 * Copyright 2012 Red Hat Inc.
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-value.h"
17 #include "secret-private.h"
19 #include "egg/egg-testing.h"
20 #include "egg/egg-secure-memory.h"
27 EGG_SECURE_DECLARE (test_value);
35 value = secret_value_new ("blahblah", 4, "text/plain");
37 g_assert_cmpstr (secret_value_get (value, &length), ==, "blah");
38 g_assert_cmpuint (length, ==, 4);
40 g_assert_cmpstr (secret_value_get_content_type (value), ==, "text/plain");
42 secret_value_unref (value);
46 test_new_terminated (void)
51 value = secret_value_new ("blah", -1, "text/plain");
53 g_assert_cmpstr (secret_value_get (value, &length), ==, "blah");
54 g_assert_cmpuint (length, ==, 4);
56 g_assert_cmpstr (secret_value_get_content_type (value), ==, "text/plain");
58 secret_value_unref (value);
65 gchar *data = g_strdup ("blah");
68 value = secret_value_new_full (data, 4, "text/plain", g_free);
70 g_assert_cmpstr (secret_value_get (value, &length), ==, "blah");
71 g_assert_cmpuint (length, ==, 4);
73 /* No copy done here */
74 g_assert (secret_value_get (value, NULL) == data);
76 secret_value_unref (value);
80 test_new_full_terminated (void)
83 gchar *data = g_strdup ("blah");
86 value = secret_value_new_full (data, -1, "text/plain", g_free);
88 g_assert_cmpstr (secret_value_get (value, &length), ==, "blah");
89 g_assert_cmpuint (length, ==, 4);
91 /* No copy done here */
92 g_assert (secret_value_get (value, NULL) == data);
94 secret_value_unref (value);
104 value = secret_value_new ("blah", 4, "text/plain");
105 value2 = secret_value_ref(value);
106 secret_value_unref (value);
108 g_assert_cmpstr (secret_value_get (value2, &length), ==, "blah");
109 g_assert_cmpuint (length, ==, 4);
111 secret_value_unref (value2);
121 value = secret_value_new ("blah", 4, "text/plain");
122 value2 = g_boxed_copy (SECRET_TYPE_VALUE, value);
123 g_boxed_free (SECRET_TYPE_VALUE, value);
125 g_assert_cmpstr (secret_value_get (value2, &length), ==, "blah");
126 g_assert_cmpuint (length, ==, 4);
128 g_boxed_free (SECRET_TYPE_VALUE, value2);
132 test_to_password (void)
137 value = secret_value_new_full (egg_secure_strdup ("blah"), -1,
138 "text/plain", egg_secure_free);
140 password = _secret_value_unref_to_password (value);
141 g_assert_cmpstr (password, ==, "blah");
143 egg_secure_free (password);
147 test_to_password_bad_destroy (void)
152 value = secret_value_new_full (g_strdup ("blah"), -1,
153 "text/plain", g_free);
155 password = _secret_value_unref_to_password (value);
156 g_assert_cmpstr (password, ==, "blah");
158 egg_secure_free (password);
162 test_to_password_bad_content (void)
167 value = secret_value_new_full (g_strdup ("w\xFFooowhee"), -1,
168 "application/octet-stream", g_free);
170 password = _secret_value_unref_to_password (value);
171 g_assert_cmpstr (password, ==, NULL);
175 test_to_password_extra_ref (void)
180 value = secret_value_new_full (egg_secure_strdup ("blah"), -1,
181 "text/plain", egg_secure_free);
182 secret_value_ref (value);
184 password = _secret_value_unref_to_password (value);
185 g_assert_cmpstr (password, ==, "blah");
187 egg_secure_free (password);
188 secret_value_unref (value);
192 main (int argc, char **argv)
194 g_test_init (&argc, &argv, NULL);
195 g_set_prgname ("test-value");
198 g_test_add_func ("/value/new", test_new);
199 g_test_add_func ("/value/new-terminated", test_new_terminated);
200 g_test_add_func ("/value/new-full", test_new_full);
201 g_test_add_func ("/value/new-full-terminated", test_new_full_terminated);
202 g_test_add_func ("/value/ref-unref", test_ref_unref);
203 g_test_add_func ("/value/boxed", test_boxed);
204 g_test_add_func ("/value/to-password", test_to_password);
205 g_test_add_func ("/value/to-password-bad-destroy", test_to_password_bad_destroy);
206 g_test_add_func ("/value/to-password-bad-content", test_to_password_bad_content);
207 g_test_add_func ("/value/to-password-extra-ref", test_to_password_extra_ref);
209 return egg_tests_run_with_loop ();