gnome-keyring r1184 - trunk/gp11/tests



Author: nnielsen
Date: Sat Jul 19 21:54:02 2008
New Revision: 1184
URL: http://svn.gnome.org/viewvc/gnome-keyring?rev=1184&view=rev

Log:
Missing file from last commit.

Modified:
   trunk/gp11/tests/unit-test-gp11-session.c

Modified: trunk/gp11/tests/unit-test-gp11-session.c
==============================================================================
--- trunk/gp11/tests/unit-test-gp11-session.c	(original)
+++ trunk/gp11/tests/unit-test-gp11-session.c	Sat Jul 19 21:54:02 2008
@@ -96,6 +96,61 @@
 	g_object_unref (result);
 	g_object_unref (sess);
 }
+
+DEFINE_TEST(open_reused)
+{
+	CK_OBJECT_HANDLE handle;
+	GP11Session *sess, *sess2;
+	GAsyncResult *result = NULL;
+	GError *err = NULL;
+	
+	g_assert (gp11_slot_get_reuse_sessions (slot) == FALSE);
+	gp11_slot_set_reuse_sessions (slot, TRUE);
+	g_assert (gp11_slot_get_reuse_sessions (slot) == TRUE);
+	
+	sess = gp11_slot_open_session (slot, 0, &err);
+	SUCCESS_RES (sess, err);
+	if (!sess) return;
+
+	/* Make note of the handle we saw */
+	handle = sess->handle;
+	g_object_unref (sess);
+	
+	/* Open again, and see if the same handle */
+	sess = gp11_slot_open_session (slot, 0, &err);
+	SUCCESS_RES (sess, err);
+	if (!sess) return;
+	g_assert (handle == sess->handle);
+	g_object_unref (sess);
+	
+	/* Test opening async */
+	gp11_slot_open_session_async (slot, 0, NULL, fetch_async_result, &result);
+	WAIT_UNTIL (result);
+	g_assert (result != NULL);
+	sess = gp11_slot_open_session_finish (slot, result, &err);
+	SUCCESS_RES (sess, err);
+	if (!sess) return;
+	g_assert (handle == sess->handle);
+	g_object_unref (result);
+	g_object_unref (sess);
+	
+	/* Test opening with different flags, a different session should be returned */
+	sess = gp11_slot_open_session (slot, CKF_RW_SESSION, &err);
+	SUCCESS_RES (sess, err);
+	if (!sess) return;
+	g_assert (handle != sess->handle);
+	
+	/* Now open a second session, with same flags, shouldn't return the same */
+	sess2 = gp11_slot_open_session (slot, CKF_RW_SESSION, &err);
+	SUCCESS_RES (sess2, err);
+	if (!sess2) return;
+	g_assert (sess->handle != sess2->handle);
+	
+	g_object_unref (sess);
+	g_object_unref (sess2);
+}
+
+
 DEFINE_TEST(login_logout)
 {
 	GAsyncResult *result = NULL;



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]