Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(663)

Unified Diff: chrome/browser/chromeos/policy/device_status_collector_browsertest.cc

Issue 26770002: Report logged in users on enterprise managed devices. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: ran update_policies.py Created 7 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 79ea72c4f42c9b3fc6af55fbcd5127d231e0662a..8c47dffea1f364f5cf68449aeb8e7b69a0a5905f 100644
--- a/chrome/browser/chromeos/policy/device_status_collector_browsertest.cc
+++ b/chrome/browser/chromeos/policy/device_status_collector_browsertest.cc
@@ -12,9 +12,13 @@
#include "base/prefs/testing_pref_service.h"
#include "base/run_loop.h"
#include "base/threading/sequenced_worker_pool.h"
+#include "chrome/browser/chromeos/login/mock_user_manager.h"
+#include "chrome/browser/chromeos/login/user_manager.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"
#include "chrome/browser/chromeos/settings/stub_cros_settings_provider.h"
+#include "chrome/browser/policy/browser_policy_connector.h"
#include "chrome/browser/policy/proto/cloud/device_management_backend.pb.h"
#include "chrome/common/pref_names.h"
#include "chromeos/dbus/dbus_thread_manager.h"
@@ -147,7 +151,9 @@ class DeviceStatusCollectorTest : public testing::Test {
: message_loop_(base::MessageLoop::TYPE_UI),
ui_thread_(content::BrowserThread::UI, &message_loop_),
file_thread_(content::BrowserThread::FILE, &message_loop_),
- io_thread_(content::BrowserThread::IO, &message_loop_) {
+ io_thread_(content::BrowserThread::IO, &message_loop_),
+ user_manager_(new chromeos::MockUserManager()),
+ user_manager_enabler_(user_manager_) {
// Run this test with a well-known timezone so that Time::LocalMidnight()
// returns the same values on all machines.
scoped_ptr<base::Environment> env(base::Environment::Create());
@@ -167,6 +173,13 @@ class DeviceStatusCollectorTest : public testing::Test {
cros_settings_->RemoveSettingsProvider(device_settings_provider_));
cros_settings_->AddSettingsProvider(&stub_settings_provider_);
+ // Set up fake install attributes.
+ StubEnterpriseInstallAttributes* attributes =
+ new StubEnterpriseInstallAttributes();
+ attributes->SetDomain("managed.com");
+ attributes->SetRegistrationUser("user@managed.com");
+ BrowserPolicyConnector::SetInstallAttributesForTesting(attributes);
+
RestartStatusCollector();
}
@@ -252,6 +265,8 @@ class DeviceStatusCollectorTest : public testing::Test {
chromeos::CrosSettings* cros_settings_;
chromeos::CrosSettingsProvider* device_settings_provider_;
chromeos::StubCrosSettingsProvider stub_settings_provider_;
+ chromeos::MockUserManager* user_manager_;
+ chromeos::ScopedUserManagerEnabler user_manager_enabler_;
em::DeviceStatusReportRequest status_;
scoped_ptr<TestingDeviceStatusCollector> status_collector_;
};
@@ -586,6 +601,59 @@ TEST_F(DeviceStatusCollectorTest, Location) {
CheckThatALocationErrorIsReported();
}
+TEST_F(DeviceStatusCollectorTest, ReportUsers) {
+ user_manager_->AddUser("user0@managed.com");
+ user_manager_->AddUser("user1@managed.com");
+ user_manager_->AddUser("user2@managed.com");
+ user_manager_->AddUser("user3@unmanaged.com");
+ user_manager_->AddUser("user4@managed.com");
+ user_manager_->AddUser("user5@managed.com");
+
+ // Verify that users are not reported by default.
+ GetStatus();
+ EXPECT_EQ(0, status_.user_size());
+
+ // Verify that users are reported after enabling the setting.
+ cros_settings_->SetBoolean(chromeos::kReportDeviceUsers, true);
+ GetStatus();
+ EXPECT_EQ(5, status_.user_size());
+ EXPECT_EQ(em::DeviceUser::USER_TYPE_MANAGED, status_.user(0).type());
+ EXPECT_EQ("user0@managed.com", status_.user(0).email());
+ EXPECT_EQ(em::DeviceUser::USER_TYPE_MANAGED, status_.user(1).type());
+ EXPECT_EQ("user1@managed.com", status_.user(1).email());
+ EXPECT_EQ(em::DeviceUser::USER_TYPE_MANAGED, status_.user(2).type());
+ EXPECT_EQ("user2@managed.com", status_.user(2).email());
+ EXPECT_EQ(em::DeviceUser::USER_TYPE_UNMANAGED, status_.user(3).type());
+ EXPECT_FALSE(status_.user(3).has_email());
+ EXPECT_EQ(em::DeviceUser::USER_TYPE_MANAGED, status_.user(4).type());
+ EXPECT_EQ("user4@managed.com", status_.user(4).email());
+
+ // Verify that users are no longer reported if setting is disabled.
+ cros_settings_->SetBoolean(chromeos::kReportDeviceUsers, false);
+ GetStatus();
+ EXPECT_EQ(0, status_.user_size());
+}
+
+TEST_F(DeviceStatusCollectorTest, ReportManagedUser) {
+ // Verify that at least one managed user is reported regardless of list size.
+ user_manager_->AddUser("user0@unmanaged.com");
+ user_manager_->AddUser("user1@unmanaged.com");
+ user_manager_->AddUser("user2@unmanaged.com");
+ user_manager_->AddUser("user3@unmanaged.com");
+ user_manager_->AddUser("user4@unmanaged.com");
+ user_manager_->AddUser("user5@unmanaged.com");
+ user_manager_->AddUser("user6@managed.com");
+ user_manager_->AddUser("user7@managed.com");
+
+ cros_settings_->SetBoolean(chromeos::kReportDeviceUsers, true);
+ GetStatus();
+ EXPECT_EQ(7, status_.user_size());
+ for (int i = 0; i < 6; ++i)
+ EXPECT_EQ(em::DeviceUser::USER_TYPE_UNMANAGED, status_.user(i).type());
+ EXPECT_EQ(em::DeviceUser::USER_TYPE_MANAGED, status_.user(6).type());
+ EXPECT_EQ("user6@managed.com", status_.user(6).email());
+}
+
// Fake device state.
struct FakeDeviceData {
const char* device_path;

Powered by Google App Engine
This is Rietveld 408576698