diff -Nuar ConsoleKit2-0.9.3.orig/src/ck-manager.c ConsoleKit2-0.9.3/src/ck-manager.c
--- ConsoleKit2-0.9.3.orig/src/ck-manager.c	2015-06-09 19:04:19.000000000 +0300
+++ ConsoleKit2-0.9.3/src/ck-manager.c	2015-06-14 21:30:51.943744599 +0300
@@ -2851,6 +2851,11 @@
         pid_t          calling_pid = 0;
         char          *cookie;
 
+        if (pid <= 1) {
+                throw_error (context, CK_MANAGER_ERROR_INVALID_INPUT, _("pid must be > 1"));
+                return TRUE;
+        }
+
         manager = CK_MANAGER (ckmanager);
 
         sender = g_dbus_method_invocation_get_sender (context);
diff -Nuar ConsoleKit2-0.9.3.orig/src/ck-session.c ConsoleKit2-0.9.3/src/ck-session.c
--- ConsoleKit2-0.9.3.orig/src/ck-session.c	2015-05-18 06:43:04.000000000 +0300
+++ ConsoleKit2-0.9.3/src/ck-session.c	2015-06-14 21:30:55.946744527 +0300
@@ -55,7 +55,6 @@
         char            *seat_id;
 
         char            *login_session_id;
-        guint            uid;
 
         GTimeVal         creation_time;
 
@@ -331,6 +330,11 @@
 
         g_return_val_if_fail (CK_IS_SESSION (cksession), FALSE);
 
+        if (console_kit_session_get_idle_hint (cksession) == FALSE) {
+                throw_error (context, CK_SESSION_ERROR_GENERAL, "idle since hint not set");
+                return TRUE;
+        }
+
         date_str = g_time_val_to_iso8601 (&session->priv->idle_since_hint);
 
         console_kit_session_complete_get_idle_since_hint (cksession, context, date_str);
@@ -386,7 +390,7 @@
         }
 
         /* only restrict this by UID for now */
-        if (session->priv->uid != calling_uid) {
+        if (console_kit_session_get_unix_user (cksession) != calling_uid) {
                 throw_error (context, CK_SESSION_ERROR_INSUFFICIENT_PERMISSION, _("Only session owner may set idle hint state"));
                 return TRUE;
         }
@@ -836,7 +840,11 @@
 
         g_return_val_if_fail (CK_IS_SESSION (cksession), FALSE);
 
-        console_kit_session_complete_get_login_session_id (cksession, context, session->priv->login_session_id);
+        if (session->priv->login_session_id == NULL) {
+                throw_error (context, CK_SESSION_ERROR_FAILED, "no login session id");
+        } else {
+                console_kit_session_complete_get_login_session_id (cksession, context, session->priv->login_session_id);
+        }
         return TRUE;
 }
 
@@ -1240,7 +1248,7 @@
                 extra_env[n++] = g_strdup_printf ("CK_SESSION_TYPE=%s", console_kit_session_get_session_type (cksession));
         }
         extra_env[n++] = g_strdup_printf ("CK_SESSION_SEAT_ID=%s", session->priv->seat_id);
-        extra_env[n++] = g_strdup_printf ("CK_SESSION_USER_UID=%d", session->priv->uid);
+        extra_env[n++] = g_strdup_printf ("CK_SESSION_USER_UID=%d", console_kit_session_get_unix_user (cksession));
         if (console_kit_session_get_display_device (cksession) != NULL && strlen (console_kit_session_get_display_device (cksession)) > 0) {
                 extra_env[n++] = g_strdup_printf ("CK_SESSION_DISPLAY_DEVICE=%s", console_kit_session_get_display_device (cksession));
         }
@@ -1279,7 +1287,7 @@
         cksession = CONSOLE_KIT_SESSION (session);
 
         group_name = g_strdup_printf ("Session %s", session->priv->id);
-        g_key_file_set_integer (key_file, group_name, "uid", session->priv->uid);
+        g_key_file_set_integer (key_file, group_name, "uid", console_kit_session_get_unix_user (cksession));
         g_key_file_set_string (key_file,
                                group_name,
                                "seat",
diff -Nuar ConsoleKit2-0.9.3.orig/src/test-fus ConsoleKit2-0.9.3/src/test-fus
--- ConsoleKit2-0.9.3.orig/src/test-fus	1970-01-01 02:00:00.000000000 +0200
+++ ConsoleKit2-0.9.3/src/test-fus	2015-06-14 21:31:08.768744297 +0300
@@ -0,0 +1,69 @@
+#!/usr/bin/env python
+#
+# Test fast-user-switch functionality
+#
+
+import os
+import sys
+import gobject
+import dbus
+import dbus.glib
+
+def activate_reply (res):
+    print "session activated"
+
+def activate_error (e):
+    print str (e)
+
+def session_added_cb (ssid):
+    print "Session added: %s" % ssid
+
+def session_removed_cb (ssid):
+    print "Session removed: %s" % ssid
+
+def active_session_changed_cb (ssid):
+    print "Active session changed: %s" % ssid
+
+bus = dbus.SystemBus ()
+
+manager_obj = bus.get_object ('org.freedesktop.ConsoleKit', '/org/freedesktop/ConsoleKit/Manager')
+
+manager = dbus.Interface (manager_obj, 'org.freedesktop.ConsoleKit.Manager')
+
+current_ssid = manager.GetCurrentSession ()
+current_session_obj = bus.get_object ('org.freedesktop.ConsoleKit', current_ssid)
+current_session = dbus.Interface (current_session_obj, 'org.freedesktop.ConsoleKit.Session')
+
+sid = current_session.GetSeatId ()
+if not sid:
+    print "Current session is not attached to a seat, no switching possible"
+    sys.exit ()
+
+seat_obj = bus.get_object ('org.freedesktop.ConsoleKit', sid)
+seat = dbus.Interface (seat_obj, 'org.freedesktop.ConsoleKit.Seat')
+seat.connect_to_signal ('SessionAdded', session_added_cb)
+seat.connect_to_signal ('SessionRemoved', session_removed_cb)
+seat.connect_to_signal ('ActiveSessionChanged', active_session_changed_cb)
+
+can_fus = seat.CanActivateSessions()
+if can_fus:
+    print "The current seat supports session switching"
+else:
+    print "The current seat does not support session switching"
+
+# Show a list of sessions on the current seat
+sessions = seat.GetSessions ()
+for ssid in sessions:
+    session_obj = bus.get_object ('org.freedesktop.ConsoleKit', ssid)
+    session = dbus.Interface (session_obj, 'org.freedesktop.ConsoleKit.Session')
+    uid = session.GetUser ()
+    print "Session %s user=%u" % (ssid, uid)
+
+# then pretend a session-ID is selected:
+ssid = current_ssid
+session_obj = bus.get_object ('org.freedesktop.ConsoleKit', ssid)
+session = dbus.Interface (session_obj, 'org.freedesktop.ConsoleKit.Session')
+session.Activate (reply_handler = activate_reply, error_handler = activate_error)
+
+mainloop = gobject.MainLoop ()
+mainloop.run()
diff -Nuar ConsoleKit2-0.9.3.orig/src/test-manager.c ConsoleKit2-0.9.3/src/test-manager.c
--- ConsoleKit2-0.9.3.orig/src/test-manager.c	2015-06-08 10:14:14.000000000 +0300
+++ ConsoleKit2-0.9.3/src/test-manager.c	2015-06-14 21:31:10.021744275 +0300
@@ -277,7 +277,10 @@
 static gboolean
 validate_stuff ()
 {
-    gint fd;
+    gint      fd;
+    GVariant *session_var = NULL, *close_var = NULL;
+    gboolean  is_session_closed;
+    GError   *error = NULL;
 
     print_reply (manager, "CanRestart");
 
@@ -295,7 +298,7 @@
 
     fd = print_inhibit_reply (manager, "Inhibit");
 
-    print_reply (manager, "OpenSession");
+    session_var = print_method (manager, "OpenSession", g_variant_new ("()"));
 
     print_reply (manager, "GetSeats");
 
@@ -317,8 +320,29 @@
         g_close (fd, NULL);
     }
 
+    /* test closing our session */
+    if (session_var != NULL) {
+        g_print ("calling CloseSession\t");
+        close_var = g_dbus_proxy_call_sync (manager, "CloseSession",
+                                            session_var,
+                                            G_DBUS_CALL_FLAGS_NONE, 3000, NULL, &error);
+        if (close_var == NULL) {
+            g_print ("returned NULL\t");
+            if (error)
+                g_print ("error %s", error->message);
+        }
+    }
+
+    g_variant_get (close_var, "(b)", &is_session_closed);
+    g_print ("session closed? %s", is_session_closed ? "Closed" : "Not Closed");
+
     g_print ("done printing stuff\n\n");
 
+    if (session_var)
+        g_variant_unref (session_var);
+    if (close_var)
+        g_variant_unref (close_var);
+
     return TRUE;
 }
 
diff -Nuar ConsoleKit2-0.9.3.orig/src/test-method-access-policy ConsoleKit2-0.9.3/src/test-method-access-policy
--- ConsoleKit2-0.9.3.orig/src/test-method-access-policy	1970-01-01 02:00:00.000000000 +0200
+++ ConsoleKit2-0.9.3/src/test-method-access-policy	2015-06-14 21:31:10.021744275 +0300
@@ -0,0 +1,534 @@
+#!/usr/bin/env python
+#
+# Test access to methods
+#
+
+import os
+import sys
+import gobject
+import dbus
+import dbus.glib
+
+bus = dbus.SystemBus ()
+
+privileged = (os.geteuid () == 0)
+if privileged:
+    print "Running privileged as uid=%d pid=%d" % (os.geteuid (), os.getpid ())
+else:
+    print "Running unprivileged as uid=%d pid=%d" % (os.geteuid (), os.getpid ())
+
+print "Testing all public methods to check D-Bus policy"
+
+manager_obj = bus.get_object ('org.freedesktop.ConsoleKit', '/org/freedesktop/ConsoleKit/Manager')
+manager = dbus.Interface (manager_obj, 'org.freedesktop.ConsoleKit.Manager')
+
+print "Testing Manager"
+
+print "Testing Manager.OpenSession:",
+res = "PASS"
+try:
+    cookie = manager.OpenSession ()
+except dbus.exceptions.DBusException, e:
+    if e.get_dbus_name () == "org.freedesktop.DBus.Error.AccessDenied":
+        res = "FAIL"
+    elif e.get_dbus_name () == "org.freedesktop.DBus.Error.UnknownMethod":
+        res = "UKNOWN METHOD"
+except:
+    pass
+print "\t\t\t%s" % res
+
+print "Testing Manager.CloseSession:",
+res = "PASS"
+try:
+    manager.CloseSession (cookie)
+except dbus.exceptions.DBusException, e:
+    if e.get_dbus_name () == "org.freedesktop.DBus.Error.AccessDenied":
+        res = "FAIL"
+    elif e.get_dbus_name () == "org.freedesktop.DBus.Error.UnknownMethod":
+        res = "UKNOWN METHOD"
+except:
+    pass
+print "\t\t\t%s" % res
+
+print "Testing Manager.OpenSessionWithParameters:",
+res = "PASS"
+try:
+    cookie = manager.OpenSessionWithParameters (dbus.Array([], signature = "sv"))
+    if not privileged:
+        res = "FAIL"
+except dbus.exceptions.DBusException, e:
+    if e.get_dbus_name () == "org.freedesktop.DBus.Error.AccessDenied":
+        if privileged:
+            res = "FAIL"
+    elif e.get_dbus_name () == "org.freedesktop.DBus.Error.UnknownMethod":
+        res = "UKNOWN METHOD"
+except:
+    pass
+print "\t%s" % res
+
+print "Testing Manager.GetSeats:",
+res = "PASS"
+try:
+    manager.GetSeats ()
+except dbus.exceptions.DBusException, e:
+    if e.get_dbus_name () == "org.freedesktop.DBus.Error.AccessDenied":
+        res = "FAIL"
+    elif e.get_dbus_name () == "org.freedesktop.DBus.Error.UnknownMethod":
+        res = "UKNOWN METHOD"
+except:
+    pass
+print "\t\t\t%s" % res
+
+print "Testing Manager.GetSessionForCookie:",
+res = "PASS"
+try:
+    manager.GetSessionForCookie (os.environ['XDG_SESSION_COOKIE'])
+except dbus.exceptions.DBusException, e:
+    if e.get_dbus_name () == "org.freedesktop.DBus.Error.AccessDenied":
+        res = "FAIL"
+    elif e.get_dbus_name () == "org.freedesktop.DBus.Error.UnknownMethod":
+        res = "UKNOWN METHOD"
+except:
+    pass
+print "\t\t%s" % res
+
+print "Testing Manager.GetSessionForUnixProcess:",
+res = "PASS"
+try:
+    manager.GetSessionForUnixProcess (os.getpid ())
+except dbus.exceptions.DBusException, e:
+    if e.get_dbus_name () == "org.freedesktop.DBus.Error.AccessDenied":
+        res = "FAIL"
+    elif e.get_dbus_name () == "org.freedesktop.DBus.Error.UnknownMethod":
+        res = "UKNOWN METHOD"
+except:
+    pass
+print "\t%s" % res
+
+print "Testing Manager.GetCurrentSession:",
+res = "PASS"
+try:
+    manager.GetCurrentSession ()
+except dbus.exceptions.DBusException, e:
+    if e.get_dbus_name () == "org.freedesktop.DBus.Error.AccessDenied":
+        res = "FAIL"
+    elif e.get_dbus_name () == "org.freedesktop.DBus.Error.UnknownMethod":
+        res = "UKNOWN METHOD"
+except:
+    pass
+print "\t\t%s" % res
+
+print "Testing Manager.GetSessionsForUnixUser:",
+res = "PASS"
+try:
+    manager.GetSessionsForUnixUser (os.geteuid ())
+except dbus.exceptions.DBusException, e:
+    if e.get_dbus_name () == "org.freedesktop.DBus.Error.AccessDenied":
+        res = "FAIL"
+    elif e.get_dbus_name () == "org.freedesktop.DBus.Error.UnknownMethod":
+        res = "UKNOWN METHOD"
+except:
+    pass
+print "\t%s" % res
+
+print "Testing Manager.GetSessionsForUser:",
+res = "PASS"
+try:
+    manager.GetSessionsForUser (os.geteuid ())
+except dbus.exceptions.DBusException, e:
+    if e.get_dbus_name () == "org.freedesktop.DBus.Error.AccessDenied":
+        res = "FAIL"
+    elif e.get_dbus_name () == "org.freedesktop.DBus.Error.UnknownMethod":
+        res = "UKNOWN METHOD"
+except:
+    pass
+print "\t\t%s" % res
+
+print "Testing Manager.GetSystemIdleHint:",
+res = "PASS"
+try:
+    manager.GetSystemIdleHint ()
+except dbus.exceptions.DBusException, e:
+    if e.get_dbus_name () == "org.freedesktop.DBus.Error.AccessDenied":
+        res = "FAIL"
+    elif e.get_dbus_name () == "org.freedesktop.DBus.Error.UnknownMethod":
+        res = "UKNOWN METHOD"
+except:
+    pass
+print "\t\t%s" % res
+
+print "Testing Manager.GetSystemIdleSinceHint:",
+res = "PASS"
+try:
+    manager.GetSystemIdleSinceHint ()
+except dbus.exceptions.DBusException, e:
+    if e.get_dbus_name () == "org.freedesktop.DBus.Error.AccessDenied":
+        res = "FAIL"
+    elif e.get_dbus_name () == "org.freedesktop.DBus.Error.UnknownMethod":
+        res = "UKNOWN METHOD"
+except:
+    pass
+print "\t%s" % res
+
+# Test Seat Interface
+print "Testing Seat"
+
+seat_obj = bus.get_object ('org.freedesktop.ConsoleKit', '/org/freedesktop/ConsoleKit/Seat1')
+seat = dbus.Interface (seat_obj, 'org.freedesktop.ConsoleKit.Seat')
+
+print "Testing Seat.GetId:",
+res = "PASS"
+try:
+    seat.GetId ()
+except dbus.exceptions.DBusException, e:
+    if e.get_dbus_name () == "org.freedesktop.DBus.Error.AccessDenied":
+        res = "FAIL"
+    elif e.get_dbus_name () == "org.freedesktop.DBus.Error.UnknownMethod":
+        res = "UKNOWN METHOD"
+except:
+    pass
+print "\t\t\t\t%s" % res
+
+print "Testing Seat.GetSessions:",
+res = "PASS"
+try:
+    seat.GetSessions ()
+except dbus.exceptions.DBusException, e:
+    if e.get_dbus_name () == "org.freedesktop.DBus.Error.AccessDenied":
+        res = "FAIL"
+    elif e.get_dbus_name () == "org.freedesktop.DBus.Error.UnknownMethod":
+        res = "UKNOWN METHOD"
+except:
+    pass
+print "\t\t\t%s" % res
+
+print "Testing Seat.GetDevices:",
+res = "PASS"
+try:
+    seat.GetDevices ()
+except dbus.exceptions.DBusException, e:
+    if e.get_dbus_name () == "org.freedesktop.DBus.Error.AccessDenied":
+        res = "FAIL"
+    elif e.get_dbus_name () == "org.freedesktop.DBus.Error.UnknownMethod":
+        res = "UKNOWN METHOD"
+except:
+    pass
+print "\t\t\t%s" % res
+
+print "Testing Seat.GetActiveSession:",
+res = "PASS"
+try:
+    seat.GetActiveSession ()
+except dbus.exceptions.DBusException, e:
+    if e.get_dbus_name () == "org.freedesktop.DBus.Error.AccessDenied":
+        res = "FAIL"
+    elif e.get_dbus_name () == "org.freedesktop.DBus.Error.UnknownMethod":
+        res = "UKNOWN METHOD"
+except:
+    pass
+print "\t\t\t%s" % res
+
+print "Testing Seat.CanActivateSessions:",
+res = "PASS"
+try:
+    seat.CanActivateSessions ()
+except dbus.exceptions.DBusException, e:
+    if e.get_dbus_name () == "org.freedesktop.DBus.Error.AccessDenied":
+        res = "FAIL"
+    elif e.get_dbus_name () == "org.freedesktop.DBus.Error.UnknownMethod":
+        res = "UKNOWN METHOD"
+except:
+    pass
+print "\t\t%s" % res
+
+print "Testing Seat.ActivateSession:",
+res = "PASS"
+try:
+    seat.ActivateSession ('/org/freedesktop/ConsoleKit/SessionN')
+except dbus.exceptions.DBusException, e:
+    if e.get_dbus_name () == "org.freedesktop.DBus.Error.AccessDenied":
+        res = "FAIL"
+    elif e.get_dbus_name () == "org.freedesktop.DBus.Error.UnknownMethod":
+        res = "UKNOWN METHOD"
+except:
+    pass
+print "\t\t\t%s" % res
+
+# Test Session Interface
+print "Testing Session"
+
+# create a new session so we can set props
+cookie = manager.OpenSession ()
+ssid = manager.GetSessionForCookie (cookie)
+if not ssid:
+    print "Could not create a session to test"
+    sys.exit ()
+
+session_obj = bus.get_object ('org.freedesktop.ConsoleKit', ssid)
+session = dbus.Interface (session_obj, 'org.freedesktop.ConsoleKit.Session')
+
+print "Testing Session.GetId:",
+res = "PASS"
+try:
+    session.GetId ()
+except dbus.exceptions.DBusException, e:
+    if e.get_dbus_name () == "org.freedesktop.DBus.Error.AccessDenied":
+        res = "FAIL"
+    elif e.get_dbus_name () == "org.freedesktop.DBus.Error.UnknownMethod":
+        res = "UKNOWN METHOD"
+except:
+    pass
+print "\t\t\t\t%s" % res
+
+print "Testing Session.GetSeatId:",
+res = "PASS"
+try:
+    session.GetSeatId ()
+except dbus.exceptions.DBusException, e:
+    if e.get_dbus_name () == "org.freedesktop.DBus.Error.AccessDenied":
+        res = "FAIL"
+    elif e.get_dbus_name () == "org.freedesktop.DBus.Error.UnknownMethod":
+        res = "UKNOWN METHOD"
+except:
+    pass
+print "\t\t\t%s" % res
+
+print "Testing Session.GetLoginSessionId:",
+res = "PASS"
+try:
+    session.GetLoginSessionId ()
+except dbus.exceptions.DBusException, e:
+    if e.get_dbus_name () == "org.freedesktop.DBus.Error.AccessDenied":
+        res = "FAIL"
+    elif e.get_dbus_name () == "org.freedesktop.DBus.Error.UnknownMethod":
+        res = "UKNOWN METHOD"
+except:
+    pass
+print "\t\t%s" % res
+
+print "Testing Session.GetSessionType:",
+res = "PASS"
+try:
+    session.GetSessionType ()
+except dbus.exceptions.DBusException, e:
+    if e.get_dbus_name () == "org.freedesktop.DBus.Error.AccessDenied":
+        res = "FAIL"
+    elif e.get_dbus_name () == "org.freedesktop.DBus.Error.UnknownMethod":
+        res = "UKNOWN METHOD"
+except:
+    pass
+print "\t\t%s" % res
+
+print "Testing Session.GetUser:",
+res = "PASS"
+try:
+    session.GetUser ()
+except dbus.exceptions.DBusException, e:
+    if e.get_dbus_name () == "org.freedesktop.DBus.Error.AccessDenied":
+        res = "FAIL"
+    elif e.get_dbus_name () == "org.freedesktop.DBus.Error.UnknownMethod":
+        res = "UKNOWN METHOD"
+except:
+    pass
+print "\t\t\t%s" % res
+
+print "Testing Session.GetUnixUser:",
+res = "PASS"
+try:
+    session.GetUnixUser ()
+except dbus.exceptions.DBusException, e:
+    if e.get_dbus_name () == "org.freedesktop.DBus.Error.AccessDenied":
+        res = "FAIL"
+    elif e.get_dbus_name () == "org.freedesktop.DBus.Error.UnknownMethod":
+        res = "UKNOWN METHOD"
+except:
+    pass
+print "\t\t\t%s" % res
+
+print "Testing Session.GetX11Display:",
+res = "PASS"
+try:
+    session.GetX11Display ()
+except dbus.exceptions.DBusException, e:
+    if e.get_dbus_name () == "org.freedesktop.DBus.Error.AccessDenied":
+        res = "FAIL"
+    elif e.get_dbus_name () == "org.freedesktop.DBus.Error.UnknownMethod":
+        res = "UKNOWN METHOD"
+except:
+    pass
+print "\t\t\t%s" % res
+
+print "Testing Session.GetX11DisplayDevice:",
+res = "PASS"
+try:
+    session.GetX11DisplayDevice ()
+except dbus.exceptions.DBusException, e:
+    if e.get_dbus_name () == "org.freedesktop.DBus.Error.AccessDenied":
+        res = "FAIL"
+    elif e.get_dbus_name () == "org.freedesktop.DBus.Error.UnknownMethod":
+        res = "UKNOWN METHOD"
+except:
+    pass
+print "\t\t%s" % res
+
+print "Testing Session.GetDisplayDevice:",
+res = "PASS"
+try:
+    session.GetDisplayDevice ()
+except dbus.exceptions.DBusException, e:
+    if e.get_dbus_name () == "org.freedesktop.DBus.Error.AccessDenied":
+        res = "FAIL"
+    elif e.get_dbus_name () == "org.freedesktop.DBus.Error.UnknownMethod":
+        res = "UKNOWN METHOD"
+except:
+    pass
+print "\t\t%s" % res
+
+print "Testing Session.GetRemoteHostName:",
+res = "PASS"
+try:
+    session.GetRemoteHostName ()
+except dbus.exceptions.DBusException, e:
+    if e.get_dbus_name () == "org.freedesktop.DBus.Error.AccessDenied":
+        res = "FAIL"
+    elif e.get_dbus_name () == "org.freedesktop.DBus.Error.UnknownMethod":
+        res = "UKNOWN METHOD"
+except:
+    pass
+print "\t\t%s" % res
+
+print "Testing Session.IsActive:",
+res = "PASS"
+try:
+    session.IsActive ()
+except dbus.exceptions.DBusException, e:
+    if e.get_dbus_name () == "org.freedesktop.DBus.Error.AccessDenied":
+        res = "FAIL"
+    elif e.get_dbus_name () == "org.freedesktop.DBus.Error.UnknownMethod":
+        res = "UKNOWN METHOD"
+except:
+    pass
+print "\t\t\t%s" % res
+
+print "Testing Session.IsLocal:",
+res = "PASS"
+try:
+    session.IsLocal ()
+except dbus.exceptions.DBusException, e:
+    if e.get_dbus_name () == "org.freedesktop.DBus.Error.AccessDenied":
+        res = "FAIL"
+    elif e.get_dbus_name () == "org.freedesktop.DBus.Error.UnknownMethod":
+        res = "UKNOWN METHOD"
+except:
+    pass
+print "\t\t\t%s" % res
+
+print "Testing Session.GetCreationTime:",
+res = "PASS"
+try:
+    session.GetCreationTime ()
+except dbus.exceptions.DBusException, e:
+    if e.get_dbus_name () == "org.freedesktop.DBus.Error.AccessDenied":
+        res = "FAIL"
+    elif e.get_dbus_name () == "org.freedesktop.DBus.Error.UnknownMethod":
+        res = "UKNOWN METHOD"
+except:
+    pass
+print "\t\t%s" % res
+
+print "Testing Session.Activate:",
+res = "PASS"
+try:
+    session.Activate ()
+except dbus.exceptions.DBusException, e:
+    if e.get_dbus_name () == "org.freedesktop.DBus.Error.AccessDenied":
+        res = "FAIL"
+    elif e.get_dbus_name () == "org.freedesktop.DBus.Error.UnknownMethod":
+        res = "UKNOWN METHOD"
+except:
+    pass
+print "\t\t\t%s" % res
+
+print "Testing Session.Lock:",
+res = "PASS"
+try:
+    session.Lock ()
+    if not privileged:
+        res = "FAIL"
+except dbus.exceptions.DBusException, e:
+    if e.get_dbus_name () == "org.freedesktop.DBus.Error.AccessDenied":
+        if privileged:
+            res = "FAIL"
+    elif e.get_dbus_name () == "org.freedesktop.DBus.Error.UnknownMethod":
+        res = "UKNOWN METHOD"
+except:
+    pass
+print "\t\t\t\t%s" % res
+
+print "Testing Session.Unlock:",
+res = "PASS"
+try:
+    session.Unlock ()
+    if not privileged:
+        res = "FAIL"
+except dbus.exceptions.DBusException, e:
+    if e.get_dbus_name () == "org.freedesktop.DBus.Error.AccessDenied":
+        if privileged:
+            res = "FAIL"
+    elif e.get_dbus_name () == "org.freedesktop.DBus.Error.UnknownMethod":
+        res = "UKNOWN METHOD"
+except:
+    pass
+print "\t\t\t%s" % res
+
+# Test session properties
+
+session_props = dbus.Interface (session_obj, 'org.freedesktop.DBus.Properties')
+
+print "Testing Properties.Get 'unix-user':",
+res = "PASS"
+try:
+    session_props.Get ('org.freedesktop.ConsoleKit.Session', "unix-user")
+    if not privileged:
+        res = "FAIL"
+except dbus.exceptions.DBusException, e:
+    if e.get_dbus_name () == "org.freedesktop.DBus.Error.AccessDenied":
+        if privileged:
+            res = "FAIL"
+    elif e.get_dbus_name () == "org.freedesktop.DBus.Error.UnknownMethod":
+        res = "UKNOWN METHOD"
+except:
+    pass
+print "\t\t%s" % res
+
+print "Testing Properties.Get 'cookie':",
+res = "PASS"
+try:
+    session_props.Get ('org.freedesktop.ConsoleKit.Session', "cookie")
+    if not privileged:
+        res = "FAIL"
+except dbus.exceptions.DBusException, e:
+    if e.get_dbus_name () == "org.freedesktop.DBus.Error.AccessDenied":
+        if privileged:
+            res = "FAIL"
+    elif e.get_dbus_name () == "org.freedesktop.DBus.Error.UnknownMethod":
+        res = "UKNOWN METHOD"
+except:
+    pass
+print "\t\t%s" % res
+
+print "Testing Properties.Set:",
+res = "PASS"
+try:
+    session_props.Set ('org.freedesktop.ConsoleKit.Session', "unix-user", 0)
+    if not privileged:
+        res = "FAIL"
+except dbus.exceptions.DBusException, e:
+    if e.get_dbus_name () == "org.freedesktop.DBus.Error.AccessDenied":
+        if privileged:
+            res = "FAIL"
+    elif e.get_dbus_name () == "org.freedesktop.DBus.Error.UnknownMethod":
+        res = "UKNOWN METHOD"
+except:
+    pass
+print "\t\t\t%s" % res
diff -Nuar ConsoleKit2-0.9.3.orig/src/test-session.c ConsoleKit2-0.9.3/src/test-session.c
--- ConsoleKit2-0.9.3.orig/src/test-session.c	2015-05-18 06:43:04.000000000 +0300
+++ ConsoleKit2-0.9.3/src/test-session.c	2015-06-14 21:31:12.560744229 +0300
@@ -176,7 +176,7 @@
 open_session (void)
 {
     GDBusProxy   *session;
-    GVariant     *cookie_var, *session_var, *activate_var;
+    GVariant     *cookie_var, *session_var, *activate_var, *close_var;
     GError       *error = NULL;
     const gchar  *path = NULL, *cookie = NULL;
 
@@ -272,6 +272,20 @@
     }
     if (activate_var)
         g_variant_unref (activate_var);
+
+    close_var = g_dbus_proxy_call_sync (manager, "CloseSession", g_variant_new ("(s)", cookie), G_DBUS_CALL_FLAGS_NONE, 3000, NULL, &error);
+    if (session_var == NULL) {
+        g_print ("returned NULL, is the daemon running?\t");
+
+        if (error)
+            g_print ("error %s", error->message);
+
+        g_print ("\n");
+        g_clear_error (&error);
+        return;
+    }
+    if (close_var)
+        g_variant_unref (close_var);
 }
 
 int
