Chromium Code Reviews| Index: chrome/browser/chromeos/policy/device_status_collector_browsertest.cc |
| diff --git a/chrome/browser/chromeos/policy/device_status_collector_browsertest.cc b/chrome/browser/chromeos/policy/device_status_collector_browsertest.cc |
| index c6b6fb798fb34b9b53ef40af1ec46af312ee0da5..2627752cd3035e4c119f92fe9c0514e315c6cdf9 100644 |
| --- a/chrome/browser/chromeos/policy/device_status_collector_browsertest.cc |
| +++ b/chrome/browser/chromeos/policy/device_status_collector_browsertest.cc |
| @@ -19,6 +19,7 @@ |
| #include "chrome/browser/chromeos/login/users/mock_user_manager.h" |
| #include "chrome/browser/chromeos/login/users/scoped_user_manager_enabler.h" |
| #include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h" |
| +#include "chrome/browser/chromeos/policy/device_local_account.h" |
| #include "chrome/browser/chromeos/policy/stub_enterprise_install_attributes.h" |
| #include "chrome/browser/chromeos/settings/cros_settings.h" |
| #include "chrome/browser/chromeos/settings/device_settings_service.h" |
| @@ -47,6 +48,7 @@ |
| #include "testing/gtest/include/gtest/gtest.h" |
| #include "third_party/cros_system_api/dbus/service_constants.h" |
| +using ::testing::Return; |
| using ::testing::ReturnRef; |
| using base::Time; |
| using base::TimeDelta; |
| @@ -57,6 +59,8 @@ namespace em = enterprise_management; |
| namespace { |
| const int64 kMillisecondsPerDay = Time::kMicrosecondsPerDay / 1000; |
| +const char kKioskAccountId[] = "kiosk_user@localhost"; |
| +const char kKioskAppId[] = "kiosk_app_id"; |
| scoped_ptr<content::Geoposition> mock_position_to_return_next; |
| @@ -137,6 +141,12 @@ class TestingDeviceStatusCollector : public policy::DeviceStatusCollector { |
| return kiosk_mode_; |
| } |
| + std::string GetAppVersion(std::string app_id) override { |
| + // Just return the app_id as the version - this makes it easy for tests |
| + // to confirm that the correct app's version was requested. |
| + return app_id; |
| + } |
| + |
| void RefreshSampleResourceUsage() { |
| // Refresh our samples. Sample more than kMaxHardwareSamples times to |
| // make sure that the code correctly caps the number of cached samples. |
| @@ -340,6 +350,20 @@ class DeviceStatusCollectorTest : public testing::Test { |
| location.error_code()); |
| } |
| + void MockRunningKioskApp() { |
| + DeviceLocalAccount local_account( |
|
bartfab (slow)
2015/02/11 17:28:43
Nit: const.
Andrew T Wilson (Slow)
2015/02/12 15:15:39
moot due to refactoring.
|
| + policy::DeviceLocalAccount::TYPE_KIOSK_APP, |
| + kKioskAccountId, |
| + kKioskAppId, |
| + std::string()); |
| + std::vector<DeviceLocalAccount> accounts; |
| + accounts.push_back(local_account); |
| + SetDeviceLocalAccounts(cros_settings_, accounts); |
| + user_manager_->CreateKioskAppUser(local_account.user_id); |
| + EXPECT_CALL(*user_manager_, IsLoggedInAsKioskApp()).WillRepeatedly( |
| + Return(true)); |
| + } |
| + |
| protected: |
| // Convenience method. |
| int64 ActivePeriodMilliseconds() { |
| @@ -841,6 +865,42 @@ TEST_F(DeviceStatusCollectorTest, TestCPUSamples) { |
| EXPECT_EQ(0, status_.cpu_utilization_pct().size()); |
| } |
| +TEST_F(DeviceStatusCollectorTest, NoSessionStatusIfNotKioskMode) { |
| + // Should not report session status if we don't have an active kiosk app. |
| + cros_settings_->SetBoolean(chromeos::kReportDeviceSessionStatus, true); |
| + status_collector_->set_kiosk_mode(false); |
| + em::SessionStatusReportRequest session_status; |
| + EXPECT_FALSE(status_collector_->GetDeviceSessionStatus(&session_status)); |
| +} |
| + |
| +TEST_F(DeviceStatusCollectorTest, NoSessionStatusIfSessionReportingDisabled) { |
| + // Should not report session status if session status reporting is disabled. |
| + cros_settings_->SetBoolean(chromeos::kReportDeviceSessionStatus, false); |
| + status_collector_->set_kiosk_mode(true); |
| + MockRunningKioskApp(); |
| + |
| + em::SessionStatusReportRequest session_status; |
| + EXPECT_FALSE(status_collector_->GetDeviceSessionStatus(&session_status)); |
| +} |
| + |
| +TEST_F(DeviceStatusCollectorTest, ReportSession) { |
|
bartfab (slow)
2015/02/11 17:28:43
Nit: s/ReportSession/ReportSessionStatus/
Andrew T Wilson (Slow)
2015/02/12 15:15:39
Done.
|
| + cros_settings_->SetBoolean(chromeos::kReportDeviceSessionStatus, true); |
| + status_collector_->set_kiosk_mode(true); |
| + |
| + // Setup a DeviceLocalAccount for a kiosk app. |
|
bartfab (slow)
2015/02/11 17:28:43
Nit: s/Setup DeviceLocalAccount for a kiosk app/Se
|
| + MockRunningKioskApp(); |
| + em::SessionStatusReportRequest session_status; |
|
bartfab (slow)
2015/02/11 17:28:43
Nit: Add blank line above. The setup phase is done
Andrew T Wilson (Slow)
2015/02/12 15:15:39
Done.
|
| + EXPECT_TRUE(status_collector_->GetDeviceSessionStatus(&session_status)); |
| + ASSERT_EQ(1, session_status.installed_apps_size()); |
| + EXPECT_EQ(kKioskAccountId, session_status.device_local_account_id()); |
| + em::AppStatus app = session_status.installed_apps(0); |
|
bartfab (slow)
2015/02/11 17:28:43
Nit: const.
Andrew T Wilson (Slow)
2015/02/12 15:15:39
Done.
|
| + EXPECT_EQ(kKioskAppId, app.app_id()); |
| + // Test code just sets the version to the app ID. |
| + EXPECT_EQ(kKioskAppId, app.extension_version()); |
| + EXPECT_FALSE(app.has_status()); |
| + EXPECT_FALSE(app.has_error()); |
| +} |
| + |
| // Fake device state. |
| struct FakeDeviceData { |
| const char* device_path; |