summaryrefslogtreecommitdiff
path: root/update_manager/chromeos_policy_unittest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'update_manager/chromeos_policy_unittest.cc')
-rw-r--r--update_manager/chromeos_policy_unittest.cc226
1 files changed, 52 insertions, 174 deletions
diff --git a/update_manager/chromeos_policy_unittest.cc b/update_manager/chromeos_policy_unittest.cc
index 5341ebb3..5bd416d3 100644
--- a/update_manager/chromeos_policy_unittest.cc
+++ b/update_manager/chromeos_policy_unittest.cc
@@ -109,7 +109,7 @@ class UmChromeOSPolicyTest : public UmPolicyTestBase {
curr_time += TimeDelta::FromSeconds(1);
else
curr_time -= TimeDelta::FromSeconds(1);
- fake_clock_.SetWallclockTime(curr_time);
+ fake_clock_->SetWallclockTime(curr_time);
}
// Sets the policies required for a kiosk app to control Chrome OS version:
@@ -180,7 +180,7 @@ TEST_F(UmChromeOSPolicyTest, UpdateCheckAllowedWaitsForTheTimeout) {
// case.
Time next_update_check;
Time last_checked_time =
- fake_clock_.GetWallclockTime() + TimeDelta::FromMinutes(1234);
+ fake_clock_->GetWallclockTime() + TimeDelta::FromMinutes(1234);
fake_state_.updater_provider()->var_last_checked_time()->reset(
new Time(last_checked_time));
@@ -195,7 +195,7 @@ TEST_F(UmChromeOSPolicyTest, UpdateCheckAllowedWaitsForTheTimeout) {
SetUpDefaultState();
fake_state_.updater_provider()->var_last_checked_time()->reset(
new Time(last_checked_time));
- fake_clock_.SetWallclockTime(next_update_check - TimeDelta::FromSeconds(1));
+ fake_clock_->SetWallclockTime(next_update_check - TimeDelta::FromSeconds(1));
ExpectPolicyStatus(
EvalStatus::kAskMeAgainLater, &Policy::UpdateCheckAllowed, &result);
@@ -203,7 +203,7 @@ TEST_F(UmChromeOSPolicyTest, UpdateCheckAllowedWaitsForTheTimeout) {
SetUpDefaultState();
fake_state_.updater_provider()->var_last_checked_time()->reset(
new Time(last_checked_time));
- fake_clock_.SetWallclockTime(next_update_check + TimeDelta::FromSeconds(1));
+ fake_clock_->SetWallclockTime(next_update_check + TimeDelta::FromSeconds(1));
ExpectPolicyStatus(
EvalStatus::kSucceeded, &Policy::UpdateCheckAllowed, &result);
EXPECT_TRUE(result.updates_enabled);
@@ -216,7 +216,7 @@ TEST_F(UmChromeOSPolicyTest, UpdateCheckAllowedWaitsForOOBE) {
// Ensure that update is not allowed even if wait period is satisfied.
Time next_update_check;
Time last_checked_time =
- fake_clock_.GetWallclockTime() + TimeDelta::FromMinutes(1234);
+ fake_clock_->GetWallclockTime() + TimeDelta::FromMinutes(1234);
fake_state_.updater_provider()->var_last_checked_time()->reset(
new Time(last_checked_time));
@@ -228,7 +228,7 @@ TEST_F(UmChromeOSPolicyTest, UpdateCheckAllowedWaitsForOOBE) {
SetUpDefaultState();
fake_state_.updater_provider()->var_last_checked_time()->reset(
new Time(last_checked_time));
- fake_clock_.SetWallclockTime(next_update_check + TimeDelta::FromSeconds(1));
+ fake_clock_->SetWallclockTime(next_update_check + TimeDelta::FromSeconds(1));
fake_state_.system_provider()->var_is_oobe_complete()->reset(new bool(false));
UpdateCheckParams result;
@@ -240,7 +240,7 @@ TEST_F(UmChromeOSPolicyTest, UpdateCheckAllowedWaitsForOOBE) {
SetUpDefaultState();
fake_state_.updater_provider()->var_last_checked_time()->reset(
new Time(last_checked_time));
- fake_clock_.SetWallclockTime(next_update_check + TimeDelta::FromSeconds(1));
+ fake_clock_->SetWallclockTime(next_update_check + TimeDelta::FromSeconds(1));
ExpectPolicyStatus(
EvalStatus::kSucceeded, &Policy::UpdateCheckAllowed, &result);
EXPECT_TRUE(result.updates_enabled);
@@ -262,6 +262,10 @@ TEST_F(UmChromeOSPolicyTest, UpdateCheckAllowedWithAttributes) {
new bool(false));
fake_state_.device_policy_provider()->var_release_channel()->reset(
new string("foo-channel"));
+ fake_state_.device_policy_provider()->var_release_lts_tag()->reset(
+ new string("foo-hint"));
+ fake_state_.device_policy_provider()->var_quick_fix_build_token()->reset(
+ new string("foo-token"));
UpdateCheckParams result;
ExpectPolicyStatus(
@@ -270,6 +274,8 @@ TEST_F(UmChromeOSPolicyTest, UpdateCheckAllowedWithAttributes) {
EXPECT_EQ("1.2", result.target_version_prefix);
EXPECT_EQ(5, result.rollback_allowed_milestones);
EXPECT_EQ("foo-channel", result.target_channel);
+ EXPECT_EQ("foo-hint", result.lts_tag);
+ EXPECT_EQ("foo-token", result.quick_fix_build_token);
EXPECT_FALSE(result.interactive);
}
@@ -284,12 +290,6 @@ TEST_F(UmChromeOSPolicyTest, UpdateCheckAllowedRollbackAndRestoreIfPossible) {
true, RollbackToTargetVersion::kRollbackAndRestoreIfPossible));
}
-TEST_F(UmChromeOSPolicyTest, UpdateCheckAllowedRollbackOnlyIfRestorePossible) {
- // We're not allowed to do rollback until we support data save and restore.
- EXPECT_FALSE(TestRollbackAllowed(
- true, RollbackToTargetVersion::kRollbackOnlyIfRestorePossible));
-}
-
TEST_F(UmChromeOSPolicyTest, UpdateCheckAllowedRollbackDisabled) {
EXPECT_FALSE(TestRollbackAllowed(true, RollbackToTargetVersion::kDisabled));
}
@@ -344,6 +344,26 @@ TEST_F(UmChromeOSPolicyTest,
EvalStatus::kAskMeAgainLater, &Policy::UpdateCheckAllowed, &result);
}
+TEST_F(UmChromeOSPolicyTest, TestUpdateCheckIntervalTimeout) {
+ fake_state_.updater_provider()
+ ->var_test_update_check_interval_timeout()
+ ->reset(new int64_t(10));
+ fake_state_.system_provider()->var_is_official_build()->reset(
+ new bool(false));
+
+ // The first time, update should not be allowed.
+ UpdateCheckParams result;
+ ExpectPolicyStatus(
+ EvalStatus::kAskMeAgainLater, &Policy::UpdateCheckAllowed, &result);
+
+ // After moving the time forward more than the update check interval, it
+ // should now allow for update.
+ fake_clock_->SetWallclockTime(fake_clock_->GetWallclockTime() +
+ TimeDelta::FromSeconds(11));
+ ExpectPolicyStatus(
+ EvalStatus::kSucceeded, &Policy::UpdateCheckAllowed, &result);
+}
+
TEST_F(UmChromeOSPolicyTest,
UpdateCheckAllowedUpdatesDisabledWhenNotEnoughSlotsAbUpdates) {
// UpdateCheckAllowed should return false (kSucceeded) if the image booted
@@ -552,7 +572,7 @@ TEST_F(UmChromeOSPolicyTest,
SetUpdateCheckAllowed(false);
- const Time curr_time = fake_clock_.GetWallclockTime();
+ const Time curr_time = fake_clock_->GetWallclockTime();
UpdateState update_state = GetDefaultUpdateState(TimeDelta::FromSeconds(10));
update_state.download_errors_max = 1;
update_state.download_errors.emplace_back(
@@ -582,7 +602,7 @@ TEST_F(UmChromeOSPolicyTest,
SetUpdateCheckAllowed(false);
- const Time curr_time = fake_clock_.GetWallclockTime();
+ const Time curr_time = fake_clock_->GetWallclockTime();
UpdateState update_state = GetDefaultUpdateState(TimeDelta::FromSeconds(10));
update_state.download_errors_max = 1;
update_state.download_errors.emplace_back(
@@ -615,7 +635,7 @@ TEST_F(UmChromeOSPolicyTest, UpdateCanStartAllowedBackoffSatisfied) {
SetUpdateCheckAllowed(false);
- const Time curr_time = fake_clock_.GetWallclockTime();
+ const Time curr_time = fake_clock_->GetWallclockTime();
UpdateState update_state = GetDefaultUpdateState(TimeDelta::FromSeconds(10));
update_state.download_errors_max = 1;
update_state.download_errors.emplace_back(
@@ -649,7 +669,7 @@ TEST_F(UmChromeOSPolicyTest, UpdateCanStartAllowedBackoffDisabled) {
SetUpdateCheckAllowed(false);
- const Time curr_time = fake_clock_.GetWallclockTime();
+ const Time curr_time = fake_clock_->GetWallclockTime();
UpdateState update_state = GetDefaultUpdateState(TimeDelta::FromSeconds(10));
update_state.download_errors_max = 1;
update_state.download_errors.emplace_back(
@@ -682,7 +702,7 @@ TEST_F(UmChromeOSPolicyTest, UpdateCanStartAllowedNoBackoffInteractive) {
SetUpdateCheckAllowed(false);
- const Time curr_time = fake_clock_.GetWallclockTime();
+ const Time curr_time = fake_clock_->GetWallclockTime();
UpdateState update_state = GetDefaultUpdateState(TimeDelta::FromSeconds(10));
update_state.download_errors_max = 1;
update_state.download_errors.emplace_back(
@@ -715,7 +735,7 @@ TEST_F(UmChromeOSPolicyTest, UpdateCanStartAllowedNoBackoffDelta) {
SetUpdateCheckAllowed(false);
- const Time curr_time = fake_clock_.GetWallclockTime();
+ const Time curr_time = fake_clock_->GetWallclockTime();
UpdateState update_state = GetDefaultUpdateState(TimeDelta::FromSeconds(10));
update_state.download_errors_max = 1;
update_state.download_errors.emplace_back(
@@ -748,7 +768,7 @@ TEST_F(UmChromeOSPolicyTest, UpdateCanStartAllowedNoBackoffUnofficialBuild) {
SetUpdateCheckAllowed(false);
- const Time curr_time = fake_clock_.GetWallclockTime();
+ const Time curr_time = fake_clock_->GetWallclockTime();
UpdateState update_state = GetDefaultUpdateState(TimeDelta::FromSeconds(10));
update_state.download_errors_max = 1;
update_state.download_errors.emplace_back(
@@ -1124,7 +1144,7 @@ TEST_F(UmChromeOSPolicyTest,
UpdateState update_state = GetDefaultUpdateState(TimeDelta::FromMinutes(10));
update_state.p2p_num_attempts = 1;
update_state.p2p_first_attempted =
- fake_clock_.GetWallclockTime() -
+ fake_clock_->GetWallclockTime() -
TimeDelta::FromSeconds(ChromeOSPolicy::kMaxP2PAttemptsPeriodInSeconds +
1);
UpdateDownloadParams result;
@@ -1198,7 +1218,7 @@ TEST_F(UmChromeOSPolicyTest, UpdateCanStartAllowedMaxErrorsNotExceeded) {
UpdateState update_state = GetDefaultUpdateState(TimeDelta::FromMinutes(10));
update_state.num_checks = 5;
update_state.download_urls.emplace_back("http://another/fake/url/");
- Time t = fake_clock_.GetWallclockTime() - TimeDelta::FromSeconds(12);
+ Time t = fake_clock_->GetWallclockTime() - TimeDelta::FromSeconds(12);
for (int i = 0; i < 5; i++) {
update_state.download_errors.emplace_back(
0, ErrorCode::kDownloadTransferError, t);
@@ -1227,7 +1247,7 @@ TEST_F(UmChromeOSPolicyTest, UpdateCanStartAllowedWithSecondUrlMaxExceeded) {
UpdateState update_state = GetDefaultUpdateState(TimeDelta::FromMinutes(10));
update_state.num_checks = 10;
update_state.download_urls.emplace_back("http://another/fake/url/");
- Time t = fake_clock_.GetWallclockTime() - TimeDelta::FromSeconds(12);
+ Time t = fake_clock_->GetWallclockTime() - TimeDelta::FromSeconds(12);
for (int i = 0; i < 11; i++) {
update_state.download_errors.emplace_back(
0, ErrorCode::kDownloadTransferError, t);
@@ -1259,7 +1279,7 @@ TEST_F(UmChromeOSPolicyTest, UpdateCanStartAllowedWithSecondUrlHardError) {
update_state.download_errors.emplace_back(
0,
ErrorCode::kPayloadHashMismatchError,
- fake_clock_.GetWallclockTime() - TimeDelta::FromSeconds(1));
+ fake_clock_->GetWallclockTime() - TimeDelta::FromSeconds(1));
// Check that the UpdateCanStart returns true.
UpdateDownloadParams result;
@@ -1288,7 +1308,7 @@ TEST_F(UmChromeOSPolicyTest, UpdateCanStartAllowedUrlWrapsAround) {
update_state.download_errors.emplace_back(
1,
ErrorCode::kPayloadHashMismatchError,
- fake_clock_.GetWallclockTime() - TimeDelta::FromSeconds(1));
+ fake_clock_->GetWallclockTime() - TimeDelta::FromSeconds(1));
// Check that the UpdateCanStart returns true.
UpdateDownloadParams result;
@@ -1371,7 +1391,7 @@ TEST_F(UmChromeOSPolicyTest,
// Override specific device policy attributes.
fake_state_.device_policy_provider()->var_au_p2p_enabled()->reset(nullptr);
- fake_state_.device_policy_provider()->var_owner()->reset(nullptr);
+ fake_state_.device_policy_provider()->var_has_owner()->reset(new bool(false));
fake_state_.device_policy_provider()->var_http_downloads_enabled()->reset(
new bool(false));
@@ -1389,148 +1409,6 @@ TEST_F(UmChromeOSPolicyTest,
EXPECT_FALSE(result.do_increment_failures);
}
-TEST_F(UmChromeOSPolicyTest, UpdateDownloadAllowedEthernetDefault) {
- // Ethernet is always allowed.
-
- fake_state_.shill_provider()->var_conn_type()->reset(
- new ConnectionType(ConnectionType::kEthernet));
-
- bool result;
- ExpectPolicyStatus(
- EvalStatus::kSucceeded, &Policy::UpdateDownloadAllowed, &result);
- EXPECT_TRUE(result);
-}
-
-TEST_F(UmChromeOSPolicyTest, UpdateDownloadAllowedWifiDefault) {
- // Wifi is allowed if not tethered.
-
- fake_state_.shill_provider()->var_conn_type()->reset(
- new ConnectionType(ConnectionType::kWifi));
-
- bool result;
- ExpectPolicyStatus(
- EvalStatus::kSucceeded, &Policy::UpdateDownloadAllowed, &result);
- EXPECT_TRUE(result);
-}
-
-TEST_F(UmChromeOSPolicyTest,
- UpdateCurrentConnectionNotAllowedWifiTetheredDefault) {
- // Tethered wifi is not allowed by default.
-
- fake_state_.shill_provider()->var_conn_type()->reset(
- new ConnectionType(ConnectionType::kWifi));
- fake_state_.shill_provider()->var_conn_tethering()->reset(
- new ConnectionTethering(ConnectionTethering::kConfirmed));
-
- bool result;
- ExpectPolicyStatus(
- EvalStatus::kAskMeAgainLater, &Policy::UpdateDownloadAllowed, &result);
-}
-
-TEST_F(UmChromeOSPolicyTest, UpdateDownloadAllowedWifiTetheredPolicyOverride) {
- // Tethered wifi can be allowed by policy.
-
- fake_state_.shill_provider()->var_conn_type()->reset(
- new ConnectionType(ConnectionType::kWifi));
- fake_state_.shill_provider()->var_conn_tethering()->reset(
- new ConnectionTethering(ConnectionTethering::kConfirmed));
- set<ConnectionType> allowed_connections;
- allowed_connections.insert(ConnectionType::kCellular);
- fake_state_.device_policy_provider()
- ->var_allowed_connection_types_for_update()
- ->reset(new set<ConnectionType>(allowed_connections));
-
- bool result;
- ExpectPolicyStatus(
- EvalStatus::kSucceeded, &Policy::UpdateDownloadAllowed, &result);
- EXPECT_TRUE(result);
-}
-
-TEST_F(UmChromeOSPolicyTest, UpdateDownloadAllowedWimaxDefault) {
- // Wimax is always allowed.
-
- fake_state_.shill_provider()->var_conn_type()->reset(
- new ConnectionType(ConnectionType::kWifi));
-
- bool result;
- ExpectPolicyStatus(
- EvalStatus::kSucceeded, &Policy::UpdateDownloadAllowed, &result);
- EXPECT_TRUE(result);
-}
-
-TEST_F(UmChromeOSPolicyTest,
- UpdateCurrentConnectionNotAllowedBluetoothDefault) {
- // Bluetooth is never allowed.
-
- fake_state_.shill_provider()->var_conn_type()->reset(
- new ConnectionType(ConnectionType::kBluetooth));
-
- bool result;
- ExpectPolicyStatus(
- EvalStatus::kAskMeAgainLater, &Policy::UpdateDownloadAllowed, &result);
-}
-
-TEST_F(UmChromeOSPolicyTest,
- UpdateCurrentConnectionNotAllowedBluetoothPolicyCannotOverride) {
- // Bluetooth cannot be allowed even by policy.
-
- fake_state_.shill_provider()->var_conn_type()->reset(
- new ConnectionType(ConnectionType::kBluetooth));
- set<ConnectionType> allowed_connections;
- allowed_connections.insert(ConnectionType::kBluetooth);
- fake_state_.device_policy_provider()
- ->var_allowed_connection_types_for_update()
- ->reset(new set<ConnectionType>(allowed_connections));
-
- bool result;
- ExpectPolicyStatus(
- EvalStatus::kAskMeAgainLater, &Policy::UpdateDownloadAllowed, &result);
-}
-
-TEST_F(UmChromeOSPolicyTest, UpdateCurrentConnectionNotAllowedCellularDefault) {
- // Cellular is not allowed by default.
-
- fake_state_.shill_provider()->var_conn_type()->reset(
- new ConnectionType(ConnectionType::kCellular));
-
- bool result;
- ExpectPolicyStatus(
- EvalStatus::kAskMeAgainLater, &Policy::UpdateDownloadAllowed, &result);
-}
-
-TEST_F(UmChromeOSPolicyTest, UpdateDownloadAllowedCellularPolicyOverride) {
- // Update over cellular can be enabled by policy.
-
- fake_state_.shill_provider()->var_conn_type()->reset(
- new ConnectionType(ConnectionType::kCellular));
- set<ConnectionType> allowed_connections;
- allowed_connections.insert(ConnectionType::kCellular);
- fake_state_.device_policy_provider()
- ->var_allowed_connection_types_for_update()
- ->reset(new set<ConnectionType>(allowed_connections));
-
- bool result;
- ExpectPolicyStatus(
- EvalStatus::kSucceeded, &Policy::UpdateDownloadAllowed, &result);
- EXPECT_TRUE(result);
-}
-
-TEST_F(UmChromeOSPolicyTest, UpdateDownloadAllowedCellularUserOverride) {
- // Update over cellular can be enabled by user settings, but only if policy
- // is present and does not determine allowed connections.
-
- fake_state_.shill_provider()->var_conn_type()->reset(
- new ConnectionType(ConnectionType::kCellular));
- set<ConnectionType> allowed_connections;
- allowed_connections.insert(ConnectionType::kCellular);
- fake_state_.updater_provider()->var_cellular_enabled()->reset(new bool(true));
-
- bool result;
- ExpectPolicyStatus(
- EvalStatus::kSucceeded, &Policy::UpdateDownloadAllowed, &result);
- EXPECT_TRUE(result);
-}
-
TEST_F(UmChromeOSPolicyTest, UpdateCanStartAllowedScatteringSupressedDueToP2P) {
// The UpdateCanStart policy returns true; scattering should have applied, but
// P2P download is allowed. Scattering values are nonetheless returned, and so
@@ -1565,7 +1443,7 @@ TEST_F(UmChromeOSPolicyTest, UpdateCanStartAllowedBackoffSupressedDueToP2P) {
SetUpdateCheckAllowed(false);
- const Time curr_time = fake_clock_.GetWallclockTime();
+ const Time curr_time = fake_clock_->GetWallclockTime();
UpdateState update_state = GetDefaultUpdateState(TimeDelta::FromSeconds(10));
update_state.download_errors_max = 1;
update_state.download_errors.emplace_back(
@@ -1616,7 +1494,7 @@ TEST_F(UmChromeOSPolicyTest, P2PEnabledAllowedByUpdater) {
TEST_F(UmChromeOSPolicyTest, P2PEnabledAllowedDeviceEnterpriseEnrolled) {
fake_state_.device_policy_provider()->var_au_p2p_enabled()->reset(nullptr);
- fake_state_.device_policy_provider()->var_owner()->reset(nullptr);
+ fake_state_.device_policy_provider()->var_has_owner()->reset(new bool(false));
bool result;
ExpectPolicyStatus(EvalStatus::kSucceeded, &Policy::P2PEnabled, &result);
@@ -1631,7 +1509,7 @@ TEST_F(UmChromeOSPolicyTest, P2PEnabledChangedBlocks) {
TEST_F(UmChromeOSPolicyTest,
UpdateCanBeAppliedForcedUpdatesDisablesTimeRestrictions) {
- Time curr_time = fake_clock_.GetWallclockTime();
+ Time curr_time = fake_clock_->GetWallclockTime();
fake_state_.updater_provider()->var_forced_update_requested()->reset(
new UpdateRequestStatus(UpdateRequestStatus::kInteractive));
// Should return kAskMeAgainLater when updated are not forced.
@@ -1644,7 +1522,7 @@ TEST_F(UmChromeOSPolicyTest,
}
TEST_F(UmChromeOSPolicyTest, UpdateCanBeAppliedFailsInDisallowedTime) {
- Time curr_time = fake_clock_.GetWallclockTime();
+ Time curr_time = fake_clock_->GetWallclockTime();
TestDisallowedTimeIntervals(
{WeeklyTimeInterval(
WeeklyTime::FromTime(curr_time),
@@ -1654,7 +1532,7 @@ TEST_F(UmChromeOSPolicyTest, UpdateCanBeAppliedFailsInDisallowedTime) {
}
TEST_F(UmChromeOSPolicyTest, UpdateCanBeAppliedOutsideDisallowedTime) {
- Time curr_time = fake_clock_.GetWallclockTime();
+ Time curr_time = fake_clock_->GetWallclockTime();
TestDisallowedTimeIntervals(
{WeeklyTimeInterval(
WeeklyTime::FromTime(curr_time - TimeDelta::FromHours(3)),
@@ -1664,7 +1542,7 @@ TEST_F(UmChromeOSPolicyTest, UpdateCanBeAppliedOutsideDisallowedTime) {
}
TEST_F(UmChromeOSPolicyTest, UpdateCanBeAppliedPassesOnNonKiosk) {
- Time curr_time = fake_clock_.GetWallclockTime();
+ Time curr_time = fake_clock_->GetWallclockTime();
TestDisallowedTimeIntervals(
{WeeklyTimeInterval(
WeeklyTime::FromTime(curr_time),