diff options
author | Saurabh Nijhara <snijhara@google.com> | 2020-11-10 23:22:58 +0100 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2020-11-12 07:55:35 +0000 |
commit | 79fec2da41db55983cd45036deb17a2f76f934d8 (patch) | |
tree | 685296f327b220438df8fdfde13312a012bb7ef9 /update_manager/minimum_version_policy_impl_unittest.cc | |
parent | f36873504703bb43d785589ef797c3368b58b34c (diff) |
update_engine: Add minimum version policy impl
This CL adds minimum version policy handler which checks if the current
Chrome OS version is less than the highest version specified in the
DeviceMinimumVersion policy.
The intent is to consult this policy in a later CL in
ChromeOSPolicy::UpdateCanBeApplied as download time restrictions will
not be applied if current Chrome OS version is
less than version provided by DeviceMinimumVersion policy.
BUG=chromium:1117450
TEST=FEATURES=test emerge-${BOARD} update_engine
Change-Id: I06ce66c4c85ac2718d9256c944160d63a6ac7e31
Reviewed-on: https://chromium-review.googlesource.com/c/aosp/platform/system/update_engine/+/2530630
Commit-Queue: Saurabh Nijhara <snijhara@google.com>
Tested-by: Saurabh Nijhara <snijhara@google.com>
Reviewed-by: Jae Hoon Kim <kimjae@chromium.org>
Reviewed-by: Amin Hassani <ahassani@chromium.org>
Diffstat (limited to 'update_manager/minimum_version_policy_impl_unittest.cc')
-rw-r--r-- | update_manager/minimum_version_policy_impl_unittest.cc | 111 |
1 files changed, 111 insertions, 0 deletions
diff --git a/update_manager/minimum_version_policy_impl_unittest.cc b/update_manager/minimum_version_policy_impl_unittest.cc new file mode 100644 index 00000000..8e4dba55 --- /dev/null +++ b/update_manager/minimum_version_policy_impl_unittest.cc @@ -0,0 +1,111 @@ +// +// Copyright (C) 2020 The Android Open Source Project +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +#include <memory> + +#include "update_engine/update_manager/minimum_version_policy_impl.h" +#include "update_engine/update_manager/policy_test_utils.h" + +using chromeos_update_engine::ErrorCode; +using chromeos_update_engine::InstallPlan; + +namespace { + +const char* kInvalidVersion = "13315.woops.12"; +const char* kOldVersion = "13315.60.12"; +const char* kNewVersion = "13315.60.15"; + +} // namespace + +namespace chromeos_update_manager { + +class UmMinimumVersionPolicyImplTest : public UmPolicyTestBase { + protected: + UmMinimumVersionPolicyImplTest() { + policy_ = std::make_unique<MinimumVersionPolicyImpl>(); + } + + void SetCurrentVersion(const std::string& version) { + fake_state_.system_provider()->var_chromeos_version()->reset( + new base::Version(version)); + } + + void SetMinimumVersion(const std::string& version) { + fake_state_.device_policy_provider()->var_device_minimum_version()->reset( + new base::Version(version)); + } + + void TestPolicy(const EvalStatus& expected_status) { + InstallPlan install_plan; + ErrorCode result; + ExpectPolicyStatus( + expected_status, &Policy::UpdateCanBeApplied, &result, &install_plan); + if (expected_status == EvalStatus::kSucceeded) + EXPECT_EQ(result, ErrorCode::kSuccess); + } +}; + +TEST_F(UmMinimumVersionPolicyImplTest, ContinueWhenCurrentVersionIsNotSet) { + SetMinimumVersion(kNewVersion); + + TestPolicy(EvalStatus::kContinue); +} + +TEST_F(UmMinimumVersionPolicyImplTest, ContinueWhenCurrentVersionIsInvalid) { + SetCurrentVersion(kInvalidVersion); + SetMinimumVersion(kNewVersion); + + TestPolicy(EvalStatus::kContinue); +} + +TEST_F(UmMinimumVersionPolicyImplTest, ContinueWhenMinumumVersionIsNotSet) { + SetCurrentVersion(kOldVersion); + + TestPolicy(EvalStatus::kContinue); +} + +TEST_F(UmMinimumVersionPolicyImplTest, ContinueWhenMinumumVersionIsInvalid) { + SetCurrentVersion(kOldVersion); + SetMinimumVersion(kInvalidVersion); + + TestPolicy(EvalStatus::kContinue); +} + +TEST_F(UmMinimumVersionPolicyImplTest, + ContinueWhenCurrentVersionIsGreaterThanMinimumVersion) { + SetCurrentVersion(kNewVersion); + SetMinimumVersion(kOldVersion); + + TestPolicy(EvalStatus::kContinue); +} + +TEST_F(UmMinimumVersionPolicyImplTest, + ContinueWhenCurrentVersionIsEqualToMinimumVersion) { + SetCurrentVersion(kNewVersion); + SetMinimumVersion(kNewVersion); + + TestPolicy(EvalStatus::kContinue); +} + +TEST_F(UmMinimumVersionPolicyImplTest, + SuccessWhenCurrentVersionIsLessThanMinimumVersion) { + SetCurrentVersion(kOldVersion); + SetMinimumVersion(kNewVersion); + + TestPolicy(EvalStatus::kSucceeded); +} + +} // namespace chromeos_update_manager |