From ae39f7001e5603010afc02de29787ade6d48ef14 Mon Sep 17 00:00:00 2001 From: Charles Kerr Date: Fri, 22 Mar 2013 16:34:34 -0500 Subject: port indicator-session to GMenu/cmake. Code coverage increased from 0% to 95.4%. --- tests/backend-dbus/test-guest.cc | 192 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 192 insertions(+) create mode 100644 tests/backend-dbus/test-guest.cc (limited to 'tests/backend-dbus/test-guest.cc') diff --git a/tests/backend-dbus/test-guest.cc b/tests/backend-dbus/test-guest.cc new file mode 100644 index 0000000..db55dd1 --- /dev/null +++ b/tests/backend-dbus/test-guest.cc @@ -0,0 +1,192 @@ +/* + * Copyright 2013 Canonical Ltd. + * + * Authors: + * Charles Kerr + * + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 3, as published + * by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranties of + * MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + */ + +#include "gtest-mock-dbus-fixture.h" + +#include "backend.h" +#include "backend-dbus/backend-dbus.h" + +/*** +**** +***/ + +class Guest: public GTestMockDBusFixture +{ + private: + + typedef GTestMockDBusFixture super; + + protected: + + GCancellable * cancellable; + IndicatorSessionGuest * guest; + + virtual void SetUp () + { + super :: SetUp (); + + // get the guest-dbus + cancellable = g_cancellable_new (); + guest = 0; + backend_get (cancellable, NULL, NULL, &guest); + wait_msec (100); + + // test the default state + ASSERT_TRUE (guest != 0); + ASSERT_FALSE (indicator_session_guest_is_allowed (guest)); + ASSERT_FALSE (indicator_session_guest_is_logged_in (guest)); + ASSERT_FALSE (indicator_session_guest_is_active (guest)); + } + + virtual void TearDown () + { + g_cancellable_cancel (cancellable); + g_clear_object (&cancellable); + g_clear_object (&guest); + + super :: TearDown (); + } + + protected: + + void add_mock_guest (MockUser *& guest_user, + MockConsoleKitSession *& guest_session) + { + guest_user = new MockUser (loop, conn, "guest-jjbEVV", "Guest", 10); + guest_user->set_system_account (true); + accounts->add_user (guest_user); + guest_session = new MockConsoleKitSession (loop, conn); + guest_session->set_user (guest_user); + ck_seat->add_session (guest_session); + } +}; + +/** + * Confirms that the Fixture's SetUp() and TearDown() work + */ +TEST_F (Guest, HelloWorld) +{ + ASSERT_TRUE (true); +} + +/** + * Toggle in the DM whether or not guests are allowed. + * Confirm that "guest" reflects the changes. + */ +TEST_F (Guest, Allowed) +{ + dm_seat->set_guest_allowed (true); + wait_for_signal (guest, "notify::guest-is-allowed"); + ASSERT_TRUE (indicator_session_guest_is_allowed (guest)); + ASSERT_FALSE (indicator_session_guest_is_logged_in (guest)); + ASSERT_FALSE (indicator_session_guest_is_active (guest)); + + dm_seat->set_guest_allowed (false); + wait_for_signal (guest, "notify::guest-is-allowed"); + ASSERT_FALSE (indicator_session_guest_is_allowed (guest)); + ASSERT_FALSE (indicator_session_guest_is_logged_in (guest)); + ASSERT_FALSE (indicator_session_guest_is_active (guest)); +} + +/** + * Have a guest user log in & out. + * Confirm that "guest" reflects the changes. + */ +TEST_F (Guest, Login) +{ + gboolean b; + + dm_seat->set_guest_allowed (true); + + // Log a Guest in + // And confirm that guest's is_login changes to true + MockUser * guest_user; + MockConsoleKitSession * guest_session; + add_mock_guest (guest_user, guest_session); + wait_for_signal (guest, "notify::guest-is-logged-in"); + ASSERT_TRUE (indicator_session_guest_is_allowed (guest)); + ASSERT_TRUE (indicator_session_guest_is_logged_in (guest)); + g_object_get (guest, INDICATOR_SESSION_GUEST_PROPERTY_LOGGED_IN, &b,NULL); + ASSERT_TRUE (b); + ASSERT_FALSE (indicator_session_guest_is_active (guest)); + + // Log the Guest User out + // and confirm that guest's is_login changes to false + ck_seat->remove_session (guest_session); + accounts->remove_user (guest_user); + delete guest_user; + delete guest_session; + wait_for_signal (guest, "notify::guest-is-logged-in"); + ASSERT_TRUE (indicator_session_guest_is_allowed (guest)); + ASSERT_FALSE (indicator_session_guest_is_logged_in (guest)); + g_object_get (guest, INDICATOR_SESSION_GUEST_PROPERTY_LOGGED_IN, &b,NULL); + ASSERT_FALSE (b); + ASSERT_FALSE (indicator_session_guest_is_active (guest)); +} + +/** + * Activate a Guest session, then activate a different session. + * Confirm that "guest" reflects the changes. + */ +TEST_F (Guest, Active) +{ + gboolean b; + + dm_seat->set_guest_allowed (true); + MockUser * guest_user; + MockConsoleKitSession * guest_session; + add_mock_guest (guest_user, guest_session); + + // Activate the guest session + // and confirm that guest's is_active changes to true + ck_seat->activate_session (guest_session); + wait_for_signal (guest, "notify::guest-is-active-session"); + ASSERT_TRUE (indicator_session_guest_is_allowed (guest)); + ASSERT_TRUE (indicator_session_guest_is_logged_in (guest)); + ASSERT_TRUE (indicator_session_guest_is_active (guest)); + g_object_get (guest, INDICATOR_SESSION_GUEST_PROPERTY_ACTIVE, &b,NULL); + ASSERT_TRUE (b); + + // Activate a non-guest session + // and confirm that guest's is_active changes to false + ck_seat->activate_session (ck_session); + wait_for_signal (guest, "notify::guest-is-active-session"); + ASSERT_TRUE (indicator_session_guest_is_allowed (guest)); + ASSERT_TRUE (indicator_session_guest_is_logged_in (guest)); + ASSERT_FALSE (indicator_session_guest_is_active (guest)); + g_object_get (guest, INDICATOR_SESSION_GUEST_PROPERTY_ACTIVE, &b,NULL); + ASSERT_FALSE (b); +} + +/** + * Activate a guest session using the "guest" API. + * Confirm that the guest session gets activated on the bus. + */ +TEST_F (Guest, Activate) +{ + dm_seat->set_guest_allowed (true); + MockUser * guest_user; + MockConsoleKitSession * guest_session; + add_mock_guest (guest_user, guest_session); + + indicator_session_guest_switch_to_guest (guest); + wait_for_signal (ck_seat->skeleton(), "active-session-changed"); + ASSERT_EQ (guest_session, ck_manager->current_session()); + wait_msec (50); +} -- cgit v1.2.3 From 9ed837fbafae3021d597508ba9272a54d3623534 Mon Sep 17 00:00:00 2001 From: Charles Kerr Date: Tue, 25 Jun 2013 12:32:16 -0500 Subject: test-guest's HelloWorld and Allowed tests now pass --- tests/backend-dbus/test-guest.cc | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) (limited to 'tests/backend-dbus/test-guest.cc') diff --git a/tests/backend-dbus/test-guest.cc b/tests/backend-dbus/test-guest.cc index db55dd1..c5f948a 100644 --- a/tests/backend-dbus/test-guest.cc +++ b/tests/backend-dbus/test-guest.cc @@ -66,14 +66,11 @@ class Guest: public GTestMockDBusFixture protected: void add_mock_guest (MockUser *& guest_user, - MockConsoleKitSession *& guest_session) + int & guest_session_tag) { guest_user = new MockUser (loop, conn, "guest-jjbEVV", "Guest", 10); guest_user->set_system_account (true); - accounts->add_user (guest_user); - guest_session = new MockConsoleKitSession (loop, conn); - guest_session->set_user (guest_user); - ck_seat->add_session (guest_session); + guest_session_tag = login1_manager->add_session (login1_seat, guest_user); } }; @@ -104,6 +101,7 @@ TEST_F (Guest, Allowed) ASSERT_FALSE (indicator_session_guest_is_active (guest)); } +#if 0 /** * Have a guest user log in & out. * Confirm that "guest" reflects the changes. @@ -190,3 +188,4 @@ TEST_F (Guest, Activate) ASSERT_EQ (guest_session, ck_manager->current_session()); wait_msec (50); } +#endif -- cgit v1.2.3 From 95e99abc20dc4e0c5de390e11f467d44dd05cba0 Mon Sep 17 00:00:00 2001 From: Charles Kerr Date: Tue, 25 Jun 2013 12:59:32 -0500 Subject: TestGuest::Login now passes --- tests/backend-dbus/test-guest.cc | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'tests/backend-dbus/test-guest.cc') diff --git a/tests/backend-dbus/test-guest.cc b/tests/backend-dbus/test-guest.cc index c5f948a..ea04f3c 100644 --- a/tests/backend-dbus/test-guest.cc +++ b/tests/backend-dbus/test-guest.cc @@ -68,7 +68,8 @@ class Guest: public GTestMockDBusFixture void add_mock_guest (MockUser *& guest_user, int & guest_session_tag) { - guest_user = new MockUser (loop, conn, "guest-jjbEVV", "Guest", 10); + guest_user = new MockUser (loop, conn, "guest-jjbEVV", "Guest", 10, 100); + accounts->add_user (guest_user); guest_user->set_system_account (true); guest_session_tag = login1_manager->add_session (login1_seat, guest_user); } @@ -101,7 +102,6 @@ TEST_F (Guest, Allowed) ASSERT_FALSE (indicator_session_guest_is_active (guest)); } -#if 0 /** * Have a guest user log in & out. * Confirm that "guest" reflects the changes. @@ -115,8 +115,8 @@ TEST_F (Guest, Login) // Log a Guest in // And confirm that guest's is_login changes to true MockUser * guest_user; - MockConsoleKitSession * guest_session; - add_mock_guest (guest_user, guest_session); + int session_tag; + add_mock_guest (guest_user, session_tag); wait_for_signal (guest, "notify::guest-is-logged-in"); ASSERT_TRUE (indicator_session_guest_is_allowed (guest)); ASSERT_TRUE (indicator_session_guest_is_logged_in (guest)); @@ -126,10 +126,9 @@ TEST_F (Guest, Login) // Log the Guest User out // and confirm that guest's is_login changes to false - ck_seat->remove_session (guest_session); + login1_manager->remove_session (login1_seat, session_tag); accounts->remove_user (guest_user); delete guest_user; - delete guest_session; wait_for_signal (guest, "notify::guest-is-logged-in"); ASSERT_TRUE (indicator_session_guest_is_allowed (guest)); ASSERT_FALSE (indicator_session_guest_is_logged_in (guest)); @@ -138,6 +137,7 @@ TEST_F (Guest, Login) ASSERT_FALSE (indicator_session_guest_is_active (guest)); } +#if 0 /** * Activate a Guest session, then activate a different session. * Confirm that "guest" reflects the changes. -- cgit v1.2.3 From 3cabab005963648247d8af74645c8e245efe13e8 Mon Sep 17 00:00:00 2001 From: Charles Kerr Date: Tue, 25 Jun 2013 13:36:02 -0500 Subject: everything in test-guest now passes --- tests/backend-dbus/test-guest.cc | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) (limited to 'tests/backend-dbus/test-guest.cc') diff --git a/tests/backend-dbus/test-guest.cc b/tests/backend-dbus/test-guest.cc index ea04f3c..f71d445 100644 --- a/tests/backend-dbus/test-guest.cc +++ b/tests/backend-dbus/test-guest.cc @@ -137,7 +137,6 @@ TEST_F (Guest, Login) ASSERT_FALSE (indicator_session_guest_is_active (guest)); } -#if 0 /** * Activate a Guest session, then activate a different session. * Confirm that "guest" reflects the changes. @@ -145,15 +144,16 @@ TEST_F (Guest, Login) TEST_F (Guest, Active) { gboolean b; + const int user_session_tag = login1_seat->active_session(); dm_seat->set_guest_allowed (true); MockUser * guest_user; - MockConsoleKitSession * guest_session; - add_mock_guest (guest_user, guest_session); + int guest_session_tag; + add_mock_guest (guest_user, guest_session_tag); // Activate the guest session // and confirm that guest's is_active changes to true - ck_seat->activate_session (guest_session); + login1_seat->activate_session (guest_session_tag); wait_for_signal (guest, "notify::guest-is-active-session"); ASSERT_TRUE (indicator_session_guest_is_allowed (guest)); ASSERT_TRUE (indicator_session_guest_is_logged_in (guest)); @@ -163,7 +163,7 @@ TEST_F (Guest, Active) // Activate a non-guest session // and confirm that guest's is_active changes to false - ck_seat->activate_session (ck_session); + login1_seat->activate_session (user_session_tag); wait_for_signal (guest, "notify::guest-is-active-session"); ASSERT_TRUE (indicator_session_guest_is_allowed (guest)); ASSERT_TRUE (indicator_session_guest_is_logged_in (guest)); @@ -179,13 +179,15 @@ TEST_F (Guest, Active) TEST_F (Guest, Activate) { dm_seat->set_guest_allowed (true); + wait_for_signal (guest, "notify::guest-is-allowed"); + MockUser * guest_user; - MockConsoleKitSession * guest_session; - add_mock_guest (guest_user, guest_session); + int guest_session_tag; + add_mock_guest (guest_user, guest_session_tag); indicator_session_guest_switch_to_guest (guest); - wait_for_signal (ck_seat->skeleton(), "active-session-changed"); - ASSERT_EQ (guest_session, ck_manager->current_session()); + + wait_for_signal (login1_seat->skeleton(), "notify::active-session"); + ASSERT_EQ (guest_session_tag, login1_seat->active_session()); wait_msec (50); } -#endif -- cgit v1.2.3