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 bdeb71210d6f28ce5119fc3b032dee6322e423d5..ff0eb3afbb6c9ae375beab1da044669a8d63a01a 100644 |
--- a/chrome/browser/chromeos/policy/auto_enrollment_client_unittest.cc |
+++ b/chrome/browser/chromeos/policy/auto_enrollment_client_unittest.cc |
@@ -13,6 +13,7 @@ |
#include "base/strings/stringprintf.h" |
#include "base/values.h" |
#include "chrome/browser/browser_process.h" |
+#include "chrome/browser/chromeos/policy/server_backed_device_state.h" |
#include "chrome/common/pref_names.h" |
#include "chrome/test/base/scoped_testing_local_state.h" |
#include "chrome/test/base/testing_browser_process.h" |
@@ -148,6 +149,29 @@ class AutoEnrollmentClientTest : public testing::Test { |
local_state_->GetUserPref(prefs::kAutoEnrollmentPowerLimit))); |
} |
+ bool HasServerBackedState() { |
+ return local_state_->GetUserPref(prefs::kServerBackedDeviceState); |
+ } |
+ |
+ void VerifyServerBackedState(const std::string& expected_management_domain, |
+ const std::string& expected_restore_mode) { |
+ const base::Value* state = |
+ local_state_->GetUserPref(prefs::kServerBackedDeviceState); |
+ ASSERT_TRUE(state); |
+ const base::DictionaryValue* state_dict = nullptr; |
+ ASSERT_TRUE(state->GetAsDictionary(&state_dict)); |
+ |
+ std::string actual_management_domain; |
+ EXPECT_TRUE(state_dict->GetString(kDeviceStateManagementDomain, |
+ &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); |
+ } |
+ |
const em::DeviceAutoEnrollmentRequest& auto_enrollment_request() { |
return last_request_.auto_enrollment_request(); |
} |
@@ -169,6 +193,7 @@ TEST_F(AutoEnrollmentClientTest, NetworkFailure) { |
client_->Start(); |
EXPECT_EQ(AUTO_ENROLLMENT_STATE_SERVER_ERROR, state_); |
EXPECT_FALSE(HasCachedDecision()); |
+ EXPECT_FALSE(HasServerBackedState()); |
} |
TEST_F(AutoEnrollmentClientTest, EmptyReply) { |
@@ -176,6 +201,7 @@ TEST_F(AutoEnrollmentClientTest, EmptyReply) { |
client_->Start(); |
EXPECT_EQ(AUTO_ENROLLMENT_STATE_NO_ENROLLMENT, state_); |
VerifyCachedResult(false, 8); |
+ EXPECT_FALSE(HasServerBackedState()); |
} |
TEST_F(AutoEnrollmentClientTest, ClientUploadsRightBits) { |
@@ -188,6 +214,7 @@ TEST_F(AutoEnrollmentClientTest, ClientUploadsRightBits) { |
EXPECT_EQ(16, auto_enrollment_request().modulus()); |
EXPECT_EQ(kStateKeyHash[31] & 0xf, auto_enrollment_request().remainder()); |
VerifyCachedResult(false, 8); |
+ EXPECT_FALSE(HasServerBackedState()); |
} |
TEST_F(AutoEnrollmentClientTest, AskForMoreThenFail) { |
@@ -197,6 +224,7 @@ TEST_F(AutoEnrollmentClientTest, AskForMoreThenFail) { |
client_->Start(); |
EXPECT_EQ(AUTO_ENROLLMENT_STATE_SERVER_ERROR, state_); |
EXPECT_FALSE(HasCachedDecision()); |
+ EXPECT_FALSE(HasServerBackedState()); |
} |
TEST_F(AutoEnrollmentClientTest, AskForMoreThenEvenMore) { |
@@ -206,6 +234,7 @@ TEST_F(AutoEnrollmentClientTest, AskForMoreThenEvenMore) { |
client_->Start(); |
EXPECT_EQ(AUTO_ENROLLMENT_STATE_SERVER_ERROR, state_); |
EXPECT_FALSE(HasCachedDecision()); |
+ EXPECT_FALSE(HasServerBackedState()); |
} |
TEST_F(AutoEnrollmentClientTest, AskForLess) { |
@@ -218,6 +247,8 @@ TEST_F(AutoEnrollmentClientTest, AskForLess) { |
client_->Start(); |
EXPECT_EQ(AUTO_ENROLLMENT_STATE_TRIGGER_ENROLLMENT, state_); |
VerifyCachedResult(true, 8); |
+ VerifyServerBackedState("example.com", |
+ kDeviceStateRestoreModeReEnrollmentEnforced); |
} |
TEST_F(AutoEnrollmentClientTest, AskForSame) { |
@@ -230,6 +261,8 @@ TEST_F(AutoEnrollmentClientTest, AskForSame) { |
client_->Start(); |
EXPECT_EQ(AUTO_ENROLLMENT_STATE_TRIGGER_ENROLLMENT, state_); |
VerifyCachedResult(true, 8); |
+ VerifyServerBackedState("example.com", |
+ kDeviceStateRestoreModeReEnrollmentEnforced); |
} |
TEST_F(AutoEnrollmentClientTest, AskForSameTwice) { |
@@ -239,6 +272,7 @@ TEST_F(AutoEnrollmentClientTest, AskForSameTwice) { |
client_->Start(); |
EXPECT_EQ(AUTO_ENROLLMENT_STATE_SERVER_ERROR, state_); |
EXPECT_FALSE(HasCachedDecision()); |
+ EXPECT_FALSE(HasServerBackedState()); |
} |
TEST_F(AutoEnrollmentClientTest, AskForTooMuch) { |
@@ -246,6 +280,7 @@ TEST_F(AutoEnrollmentClientTest, AskForTooMuch) { |
client_->Start(); |
EXPECT_EQ(AUTO_ENROLLMENT_STATE_SERVER_ERROR, state_); |
EXPECT_FALSE(HasCachedDecision()); |
+ EXPECT_FALSE(HasServerBackedState()); |
} |
TEST_F(AutoEnrollmentClientTest, AskNonPowerOf2) { |
@@ -259,6 +294,7 @@ TEST_F(AutoEnrollmentClientTest, AskNonPowerOf2) { |
EXPECT_EQ(128, auto_enrollment_request().modulus()); |
EXPECT_EQ(kStateKeyHash[31] & 0x7f, auto_enrollment_request().remainder()); |
VerifyCachedResult(false, 8); |
+ EXPECT_FALSE(HasServerBackedState()); |
} |
TEST_F(AutoEnrollmentClientTest, ConsumerDevice) { |
@@ -266,6 +302,7 @@ TEST_F(AutoEnrollmentClientTest, ConsumerDevice) { |
client_->Start(); |
EXPECT_EQ(AUTO_ENROLLMENT_STATE_NO_ENROLLMENT, state_); |
VerifyCachedResult(false, 8); |
+ EXPECT_FALSE(HasServerBackedState()); |
// Network changes don't trigger retries after obtaining a response from |
// the server. |
@@ -281,6 +318,8 @@ TEST_F(AutoEnrollmentClientTest, EnterpriseDevice) { |
client_->Start(); |
EXPECT_EQ(AUTO_ENROLLMENT_STATE_TRIGGER_ENROLLMENT, state_); |
VerifyCachedResult(true, 8); |
+ VerifyServerBackedState("example.com", |
+ kDeviceStateRestoreModeReEnrollmentEnforced); |
// Network changes don't trigger retries after obtaining a response from |
// the server. |
@@ -293,6 +332,7 @@ TEST_F(AutoEnrollmentClientTest, NoSerial) { |
client_->Start(); |
EXPECT_EQ(AUTO_ENROLLMENT_STATE_NO_ENROLLMENT, state_); |
EXPECT_FALSE(HasCachedDecision()); |
+ EXPECT_FALSE(HasServerBackedState()); |
} |
TEST_F(AutoEnrollmentClientTest, NoBitsUploaded) { |
@@ -305,6 +345,7 @@ TEST_F(AutoEnrollmentClientTest, NoBitsUploaded) { |
EXPECT_EQ(1, auto_enrollment_request().modulus()); |
EXPECT_EQ(0, auto_enrollment_request().remainder()); |
VerifyCachedResult(false, 0); |
+ EXPECT_FALSE(HasServerBackedState()); |
} |
TEST_F(AutoEnrollmentClientTest, ManyBitsUploaded) { |
@@ -320,6 +361,7 @@ TEST_F(AutoEnrollmentClientTest, ManyBitsUploaded) { |
EXPECT_EQ(bottom62 % (GG_INT64_C(1) << i), |
auto_enrollment_request().remainder()); |
VerifyCachedResult(false, i); |
+ EXPECT_FALSE(HasServerBackedState()); |
} |
} |
@@ -334,6 +376,8 @@ TEST_F(AutoEnrollmentClientTest, MoreThan32BitsUploaded) { |
client_->Start(); |
EXPECT_EQ(AUTO_ENROLLMENT_STATE_TRIGGER_ENROLLMENT, state_); |
VerifyCachedResult(true, 37); |
+ VerifyServerBackedState("example.com", |
+ kDeviceStateRestoreModeReEnrollmentEnforced); |
} |
TEST_F(AutoEnrollmentClientTest, ReuseCachedDecision) { |
@@ -347,9 +391,12 @@ TEST_F(AutoEnrollmentClientTest, ReuseCachedDecision) { |
em::DeviceStateRetrievalResponse::RESTORE_MODE_REENROLLMENT_ENFORCED); |
client_->Start(); |
EXPECT_EQ(AUTO_ENROLLMENT_STATE_TRIGGER_ENROLLMENT, state_); |
+ VerifyServerBackedState("example.com", |
+ kDeviceStateRestoreModeReEnrollmentEnforced); |
AutoEnrollmentClient::CancelAutoEnrollment(); |
client_->Start(); |
EXPECT_EQ(AUTO_ENROLLMENT_STATE_NO_ENROLLMENT, state_); |
+ EXPECT_FALSE(HasServerBackedState()); |
} |
TEST_F(AutoEnrollmentClientTest, RetryIfPowerLargerThanCached) { |
@@ -364,6 +411,8 @@ TEST_F(AutoEnrollmentClientTest, RetryIfPowerLargerThanCached) { |
em::DeviceStateRetrievalResponse::RESTORE_MODE_REENROLLMENT_ENFORCED); |
client_->Start(); |
EXPECT_EQ(AUTO_ENROLLMENT_STATE_TRIGGER_ENROLLMENT, state_); |
+ VerifyServerBackedState("example.com", |
+ kDeviceStateRestoreModeReEnrollmentEnforced); |
} |
TEST_F(AutoEnrollmentClientTest, NetworkChangeRetryAfterErrors) { |
@@ -372,11 +421,13 @@ TEST_F(AutoEnrollmentClientTest, NetworkChangeRetryAfterErrors) { |
// Don't invoke the callback if there was a network failure. |
EXPECT_EQ(AUTO_ENROLLMENT_STATE_SERVER_ERROR, state_); |
EXPECT_FALSE(HasCachedDecision()); |
+ EXPECT_FALSE(HasServerBackedState()); |
// The client doesn't retry if no new connection became available. |
client_->OnNetworkChanged(net::NetworkChangeNotifier::CONNECTION_NONE); |
EXPECT_EQ(AUTO_ENROLLMENT_STATE_SERVER_ERROR, state_); |
EXPECT_FALSE(HasCachedDecision()); |
+ EXPECT_FALSE(HasServerBackedState()); |
// Retry once the network is back. |
ServerWillReply(-1, true, true); |
@@ -386,12 +437,16 @@ TEST_F(AutoEnrollmentClientTest, NetworkChangeRetryAfterErrors) { |
client_->OnNetworkChanged(net::NetworkChangeNotifier::CONNECTION_ETHERNET); |
EXPECT_EQ(AUTO_ENROLLMENT_STATE_TRIGGER_ENROLLMENT, state_); |
EXPECT_TRUE(HasCachedDecision()); |
+ VerifyServerBackedState("example.com", |
+ kDeviceStateRestoreModeReEnrollmentEnforced); |
// Subsequent network changes don't trigger retries. |
client_->OnNetworkChanged(net::NetworkChangeNotifier::CONNECTION_NONE); |
client_->OnNetworkChanged(net::NetworkChangeNotifier::CONNECTION_ETHERNET); |
EXPECT_EQ(AUTO_ENROLLMENT_STATE_TRIGGER_ENROLLMENT, state_); |
EXPECT_TRUE(HasCachedDecision()); |
+ VerifyServerBackedState("example.com", |
+ kDeviceStateRestoreModeReEnrollmentEnforced); |
} |
TEST_F(AutoEnrollmentClientTest, CancelAndDeleteSoonWithPendingRequest) { |
@@ -452,6 +507,8 @@ TEST_F(AutoEnrollmentClientTest, CancelAndDeleteSoonAfterCompletion) { |
em::DeviceStateRetrievalResponse::RESTORE_MODE_REENROLLMENT_ENFORCED); |
client_->Start(); |
EXPECT_EQ(AUTO_ENROLLMENT_STATE_TRIGGER_ENROLLMENT, state_); |
+ VerifyServerBackedState("example.com", |
+ kDeviceStateRestoreModeReEnrollmentEnforced); |
// The client will delete itself immediately if there are no pending |
// requests. |
@@ -482,6 +539,7 @@ TEST_F(AutoEnrollmentClientTest, NetworkFailureThenRequireUpdatedModulus) { |
// Callback should signal the connection error. |
EXPECT_EQ(AUTO_ENROLLMENT_STATE_CONNECTION_ERROR, state_); |
EXPECT_FALSE(HasCachedDecision()); |
+ EXPECT_FALSE(HasServerBackedState()); |
Mock::VerifyAndClearExpectations(service_.get()); |
InSequence sequence; |
@@ -501,6 +559,8 @@ TEST_F(AutoEnrollmentClientTest, NetworkFailureThenRequireUpdatedModulus) { |
client_->OnNetworkChanged(net::NetworkChangeNotifier::CONNECTION_ETHERNET); |
EXPECT_EQ(AUTO_ENROLLMENT_STATE_TRIGGER_ENROLLMENT, state_); |
EXPECT_TRUE(HasCachedDecision()); |
+ VerifyServerBackedState("example.com", |
+ kDeviceStateRestoreModeReEnrollmentEnforced); |
Mock::VerifyAndClearExpectations(service_.get()); |
} |
@@ -513,6 +573,7 @@ TEST_F(AutoEnrollmentClientTest, NoDeviceStateRetrieval) { |
client_->Start(); |
EXPECT_EQ(AUTO_ENROLLMENT_STATE_TRIGGER_ENROLLMENT, state_); |
VerifyCachedResult(true, 8); |
+ EXPECT_FALSE(HasServerBackedState()); |
} |
} // namespace |