summaryrefslogtreecommitdiff
path: root/update_manager/minimum_version_policy_impl_unittest.cc
diff options
context:
space:
mode:
authorSaurabh Nijhara <snijhara@google.com>2020-11-10 23:22:58 +0100
committerCommit Bot <commit-bot@chromium.org>2020-11-12 07:55:35 +0000
commit79fec2da41db55983cd45036deb17a2f76f934d8 (patch)
tree685296f327b220438df8fdfde13312a012bb7ef9 /update_manager/minimum_version_policy_impl_unittest.cc
parentf36873504703bb43d785589ef797c3368b58b34c (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.cc111
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