Index: chrome/browser/chromeos/policy/auto_enrollment_client_unittest.cc |
diff --git a/chrome/browser/chromeos/policy/auto_enrollment_client_unittest.cc b/chrome/browser/chromeos/policy/auto_enrollment_client_unittest.cc |
index ff0eb3afbb6c9ae375beab1da044669a8d63a01a..5a9bb4b0a1abb1819bf9e11b15d07ee53b2b17c8 100644 |
--- a/chrome/browser/chromeos/policy/auto_enrollment_client_unittest.cc |
+++ b/chrome/browser/chromeos/policy/auto_enrollment_client_unittest.cc |
@@ -35,6 +35,7 @@ const char kStateKey[] = "state_key"; |
const char kStateKeyHash[] = |
"\xde\x74\xcd\xf0\x03\x36\x8c\x21\x79\xba\xb1\x5a\xc4\x32\xee\xd6" |
"\xb3\x4a\x5e\xff\x73\x7e\x92\xd9\xf8\x6e\x72\x44\xd0\x97\xc3\xe6"; |
+const char kDisabledMessage[] = "This device has been disabled."; |
using ::testing::InSequence; |
using ::testing::Mock; |
@@ -116,12 +117,18 @@ class AutoEnrollmentClientTest : public testing::Test { |
void ServerWillSendState( |
const std::string& management_domain, |
- em::DeviceStateRetrievalResponse::RestoreMode restore_mode) { |
+ em::DeviceStateRetrievalResponse::RestoreMode restore_mode, |
+ scoped_ptr<std::string> device_disabled_message) { |
em::DeviceManagementResponse response; |
em::DeviceStateRetrievalResponse* state_response = |
response.mutable_device_state_retrieval_response(); |
state_response->set_restore_mode(restore_mode); |
state_response->set_management_domain(management_domain); |
+ if (device_disabled_message) { |
+ em::DisabledState* disabled_state = |
+ state_response->mutable_disabled_state(); |
+ disabled_state->set_message(*device_disabled_message); |
+ } |
EXPECT_CALL( |
*service_, |
CreateJob(DeviceManagementRequestJob::TYPE_DEVICE_STATE_RETRIEVAL, _)) |
@@ -153,8 +160,10 @@ class AutoEnrollmentClientTest : public testing::Test { |
return local_state_->GetUserPref(prefs::kServerBackedDeviceState); |
} |
- void VerifyServerBackedState(const std::string& expected_management_domain, |
- const std::string& expected_restore_mode) { |
+ void VerifyServerBackedState( |
+ const std::string& expected_management_domain, |
+ const std::string& expected_restore_mode, |
+ scoped_ptr<std::string> expected_disabled_message) { |
const base::Value* state = |
local_state_->GetUserPref(prefs::kServerBackedDeviceState); |
ASSERT_TRUE(state); |
@@ -166,10 +175,29 @@ class AutoEnrollmentClientTest : public testing::Test { |
&actual_management_domain)); |
EXPECT_EQ(expected_management_domain, actual_management_domain); |
- std::string actual_restore_mode; |
- EXPECT_TRUE(state_dict->GetString(kDeviceStateRestoreMode, |
- &actual_restore_mode)); |
- EXPECT_EQ(expected_restore_mode, actual_restore_mode); |
+ if (!expected_restore_mode.empty()) { |
+ std::string actual_restore_mode; |
+ EXPECT_TRUE(state_dict->GetString(kDeviceStateRestoreMode, |
+ &actual_restore_mode)); |
+ EXPECT_EQ(expected_restore_mode, actual_restore_mode); |
+ } else { |
+ EXPECT_FALSE(state_dict->HasKey(kDeviceStateRestoreMode)); |
+ } |
+ |
+ const bool expected_disabled_state = expected_disabled_message; |
+ bool actual_disabled_state = false; |
+ EXPECT_TRUE(state_dict->GetBoolean(kDeviceStateDisabled, |
+ &actual_disabled_state)); |
+ EXPECT_EQ(expected_disabled_state, actual_disabled_state); |
+ |
+ if (expected_disabled_message) { |
+ std::string actual_disabled_message; |
+ EXPECT_TRUE(state_dict->GetString(kDeviceStateDisabledMessage, |
+ &actual_disabled_message)); |
+ EXPECT_EQ(*expected_disabled_message, actual_disabled_message); |
+ } else { |
+ EXPECT_FALSE(state_dict->HasKey(kDeviceStateDisabledMessage)); |
+ } |
} |
const em::DeviceAutoEnrollmentRequest& auto_enrollment_request() { |
@@ -243,12 +271,14 @@ TEST_F(AutoEnrollmentClientTest, AskForLess) { |
ServerWillReply(-1, true, true); |
ServerWillSendState( |
"example.com", |
- em::DeviceStateRetrievalResponse::RESTORE_MODE_REENROLLMENT_ENFORCED); |
+ em::DeviceStateRetrievalResponse::RESTORE_MODE_REENROLLMENT_ENFORCED, |
+ make_scoped_ptr(new std::string(kDisabledMessage))); |
client_->Start(); |
EXPECT_EQ(AUTO_ENROLLMENT_STATE_TRIGGER_ENROLLMENT, state_); |
VerifyCachedResult(true, 8); |
VerifyServerBackedState("example.com", |
- kDeviceStateRestoreModeReEnrollmentEnforced); |
+ kDeviceStateRestoreModeReEnrollmentEnforced, |
+ make_scoped_ptr(new std::string(kDisabledMessage))); |
} |
TEST_F(AutoEnrollmentClientTest, AskForSame) { |
@@ -257,12 +287,14 @@ TEST_F(AutoEnrollmentClientTest, AskForSame) { |
ServerWillReply(-1, true, true); |
ServerWillSendState( |
"example.com", |
- em::DeviceStateRetrievalResponse::RESTORE_MODE_REENROLLMENT_ENFORCED); |
+ em::DeviceStateRetrievalResponse::RESTORE_MODE_REENROLLMENT_ENFORCED, |
+ make_scoped_ptr(new std::string(kDisabledMessage))); |
client_->Start(); |
EXPECT_EQ(AUTO_ENROLLMENT_STATE_TRIGGER_ENROLLMENT, state_); |
VerifyCachedResult(true, 8); |
VerifyServerBackedState("example.com", |
- kDeviceStateRestoreModeReEnrollmentEnforced); |
+ kDeviceStateRestoreModeReEnrollmentEnforced, |
+ make_scoped_ptr(new std::string(kDisabledMessage))); |
} |
TEST_F(AutoEnrollmentClientTest, AskForSameTwice) { |
@@ -310,16 +342,18 @@ TEST_F(AutoEnrollmentClientTest, ConsumerDevice) { |
EXPECT_EQ(AUTO_ENROLLMENT_STATE_NO_ENROLLMENT, state_); |
} |
-TEST_F(AutoEnrollmentClientTest, EnterpriseDevice) { |
+TEST_F(AutoEnrollmentClientTest, ForcedReEnrollment) { |
ServerWillReply(-1, true, true); |
ServerWillSendState( |
"example.com", |
- em::DeviceStateRetrievalResponse::RESTORE_MODE_REENROLLMENT_ENFORCED); |
+ em::DeviceStateRetrievalResponse::RESTORE_MODE_REENROLLMENT_ENFORCED, |
+ nullptr); |
client_->Start(); |
EXPECT_EQ(AUTO_ENROLLMENT_STATE_TRIGGER_ENROLLMENT, state_); |
VerifyCachedResult(true, 8); |
VerifyServerBackedState("example.com", |
- kDeviceStateRestoreModeReEnrollmentEnforced); |
+ kDeviceStateRestoreModeReEnrollmentEnforced, |
+ nullptr); |
// Network changes don't trigger retries after obtaining a response from |
// the server. |
@@ -327,6 +361,34 @@ TEST_F(AutoEnrollmentClientTest, EnterpriseDevice) { |
EXPECT_EQ(AUTO_ENROLLMENT_STATE_TRIGGER_ENROLLMENT, state_); |
} |
+TEST_F(AutoEnrollmentClientTest, RequestedReEnrollment) { |
+ ServerWillReply(-1, true, true); |
+ ServerWillSendState( |
+ "example.com", |
+ em::DeviceStateRetrievalResponse::RESTORE_MODE_REENROLLMENT_REQUESTED, |
+ nullptr); |
+ client_->Start(); |
+ EXPECT_EQ(AUTO_ENROLLMENT_STATE_TRIGGER_ENROLLMENT, state_); |
+ VerifyCachedResult(true, 8); |
+ VerifyServerBackedState("example.com", |
+ kDeviceStateRestoreModeReEnrollmentRequested, |
+ nullptr); |
+} |
+ |
+TEST_F(AutoEnrollmentClientTest, DeviceDisabled) { |
+ ServerWillReply(-1, true, true); |
+ ServerWillSendState( |
+ "example.com", |
+ em::DeviceStateRetrievalResponse::RESTORE_MODE_NONE, |
+ make_scoped_ptr(new std::string(kDisabledMessage))); |
+ client_->Start(); |
+ EXPECT_EQ(AUTO_ENROLLMENT_STATE_NO_ENROLLMENT, state_); |
+ VerifyCachedResult(true, 8); |
+ VerifyServerBackedState("example.com", |
+ "", |
+ make_scoped_ptr(new std::string(kDisabledMessage))); |
+} |
+ |
TEST_F(AutoEnrollmentClientTest, NoSerial) { |
CreateClient("", true, 4, 8); |
client_->Start(); |
@@ -372,12 +434,14 @@ TEST_F(AutoEnrollmentClientTest, MoreThan32BitsUploaded) { |
ServerWillReply(-1, true, true); |
ServerWillSendState( |
"example.com", |
- em::DeviceStateRetrievalResponse::RESTORE_MODE_REENROLLMENT_ENFORCED); |
+ em::DeviceStateRetrievalResponse::RESTORE_MODE_REENROLLMENT_ENFORCED, |
+ make_scoped_ptr(new std::string(kDisabledMessage))); |
client_->Start(); |
EXPECT_EQ(AUTO_ENROLLMENT_STATE_TRIGGER_ENROLLMENT, state_); |
VerifyCachedResult(true, 37); |
VerifyServerBackedState("example.com", |
- kDeviceStateRestoreModeReEnrollmentEnforced); |
+ kDeviceStateRestoreModeReEnrollmentEnforced, |
+ make_scoped_ptr(new std::string(kDisabledMessage))); |
} |
TEST_F(AutoEnrollmentClientTest, ReuseCachedDecision) { |
@@ -388,11 +452,13 @@ TEST_F(AutoEnrollmentClientTest, ReuseCachedDecision) { |
new base::FundamentalValue(8)); |
ServerWillSendState( |
"example.com", |
- em::DeviceStateRetrievalResponse::RESTORE_MODE_REENROLLMENT_ENFORCED); |
+ em::DeviceStateRetrievalResponse::RESTORE_MODE_REENROLLMENT_ENFORCED, |
+ make_scoped_ptr(new std::string(kDisabledMessage))); |
client_->Start(); |
EXPECT_EQ(AUTO_ENROLLMENT_STATE_TRIGGER_ENROLLMENT, state_); |
VerifyServerBackedState("example.com", |
- kDeviceStateRestoreModeReEnrollmentEnforced); |
+ kDeviceStateRestoreModeReEnrollmentEnforced, |
+ make_scoped_ptr(new std::string(kDisabledMessage))); |
AutoEnrollmentClient::CancelAutoEnrollment(); |
client_->Start(); |
EXPECT_EQ(AUTO_ENROLLMENT_STATE_NO_ENROLLMENT, state_); |
@@ -408,11 +474,13 @@ TEST_F(AutoEnrollmentClientTest, RetryIfPowerLargerThanCached) { |
ServerWillReply(-1, true, true); |
ServerWillSendState( |
"example.com", |
- em::DeviceStateRetrievalResponse::RESTORE_MODE_REENROLLMENT_ENFORCED); |
+ em::DeviceStateRetrievalResponse::RESTORE_MODE_REENROLLMENT_ENFORCED, |
+ make_scoped_ptr(new std::string(kDisabledMessage))); |
client_->Start(); |
EXPECT_EQ(AUTO_ENROLLMENT_STATE_TRIGGER_ENROLLMENT, state_); |
VerifyServerBackedState("example.com", |
- kDeviceStateRestoreModeReEnrollmentEnforced); |
+ kDeviceStateRestoreModeReEnrollmentEnforced, |
+ make_scoped_ptr(new std::string(kDisabledMessage))); |
} |
TEST_F(AutoEnrollmentClientTest, NetworkChangeRetryAfterErrors) { |
@@ -433,12 +501,14 @@ TEST_F(AutoEnrollmentClientTest, NetworkChangeRetryAfterErrors) { |
ServerWillReply(-1, true, true); |
ServerWillSendState( |
"example.com", |
- em::DeviceStateRetrievalResponse::RESTORE_MODE_REENROLLMENT_ENFORCED); |
+ em::DeviceStateRetrievalResponse::RESTORE_MODE_REENROLLMENT_ENFORCED, |
+ make_scoped_ptr(new std::string(kDisabledMessage))); |
client_->OnNetworkChanged(net::NetworkChangeNotifier::CONNECTION_ETHERNET); |
EXPECT_EQ(AUTO_ENROLLMENT_STATE_TRIGGER_ENROLLMENT, state_); |
EXPECT_TRUE(HasCachedDecision()); |
VerifyServerBackedState("example.com", |
- kDeviceStateRestoreModeReEnrollmentEnforced); |
+ kDeviceStateRestoreModeReEnrollmentEnforced, |
+ make_scoped_ptr(new std::string(kDisabledMessage))); |
// Subsequent network changes don't trigger retries. |
client_->OnNetworkChanged(net::NetworkChangeNotifier::CONNECTION_NONE); |
@@ -446,7 +516,8 @@ TEST_F(AutoEnrollmentClientTest, NetworkChangeRetryAfterErrors) { |
EXPECT_EQ(AUTO_ENROLLMENT_STATE_TRIGGER_ENROLLMENT, state_); |
EXPECT_TRUE(HasCachedDecision()); |
VerifyServerBackedState("example.com", |
- kDeviceStateRestoreModeReEnrollmentEnforced); |
+ kDeviceStateRestoreModeReEnrollmentEnforced, |
+ make_scoped_ptr(new std::string(kDisabledMessage))); |
} |
TEST_F(AutoEnrollmentClientTest, CancelAndDeleteSoonWithPendingRequest) { |
@@ -504,11 +575,13 @@ TEST_F(AutoEnrollmentClientTest, CancelAndDeleteSoonAfterCompletion) { |
ServerWillReply(-1, true, true); |
ServerWillSendState( |
"example.com", |
- em::DeviceStateRetrievalResponse::RESTORE_MODE_REENROLLMENT_ENFORCED); |
+ em::DeviceStateRetrievalResponse::RESTORE_MODE_REENROLLMENT_ENFORCED, |
+ make_scoped_ptr(new std::string(kDisabledMessage))); |
client_->Start(); |
EXPECT_EQ(AUTO_ENROLLMENT_STATE_TRIGGER_ENROLLMENT, state_); |
VerifyServerBackedState("example.com", |
- kDeviceStateRestoreModeReEnrollmentEnforced); |
+ kDeviceStateRestoreModeReEnrollmentEnforced, |
+ make_scoped_ptr(new std::string(kDisabledMessage))); |
// The client will delete itself immediately if there are no pending |
// requests. |
@@ -552,7 +625,8 @@ TEST_F(AutoEnrollmentClientTest, NetworkFailureThenRequireUpdatedModulus) { |
// State download triggers. |
ServerWillSendState( |
"example.com", |
- em::DeviceStateRetrievalResponse::RESTORE_MODE_REENROLLMENT_ENFORCED); |
+ em::DeviceStateRetrievalResponse::RESTORE_MODE_REENROLLMENT_ENFORCED, |
+ make_scoped_ptr(new std::string(kDisabledMessage))); |
EXPECT_CALL(*service_, StartJob(_, _, _, _, _, _, _)); |
// Trigger a network change event. |
@@ -560,7 +634,8 @@ TEST_F(AutoEnrollmentClientTest, NetworkFailureThenRequireUpdatedModulus) { |
EXPECT_EQ(AUTO_ENROLLMENT_STATE_TRIGGER_ENROLLMENT, state_); |
EXPECT_TRUE(HasCachedDecision()); |
VerifyServerBackedState("example.com", |
- kDeviceStateRestoreModeReEnrollmentEnforced); |
+ kDeviceStateRestoreModeReEnrollmentEnforced, |
+ make_scoped_ptr(new std::string(kDisabledMessage))); |
Mock::VerifyAndClearExpectations(service_.get()); |
} |