Parse and expose end-of-life flag.
Omaha update or noupdate response can include _key=value pairs with
arbitrary data. One of those key can be "_eol" with the one of the
values "supported", "security-only" or "eol" which notifies the device
the end-of-life status of the device with respect to updates. This
information is now exposed via GetEolStatus() to the client so it
can be properly displayed in the UI.
Bug: 27924505
TEST=Added unittest. Run `update_engine_client --eol_status` on link.
Change-Id: Icc15f25b4d0b19cc894f5afc52ac7c43c7818982
diff --git a/omaha_utils_unittest.cc b/omaha_utils_unittest.cc
new file mode 100644
index 0000000..8ceb76b
--- /dev/null
+++ b/omaha_utils_unittest.cc
@@ -0,0 +1,42 @@
+//
+// Copyright (C) 2016 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 "update_engine/omaha_utils.h"
+
+#include <gtest/gtest.h>
+#include <vector>
+
+namespace chromeos_update_engine {
+
+class OmahaUtilsTest : public ::testing::Test {};
+
+TEST(OmahaUtilsTest, EolStatusTest) {
+ EXPECT_EQ(EolStatus::kEol, StringToEolStatus("eol"));
+
+ // Supported values are converted back and forth properly.
+ const std::vector<EolStatus> tests = {
+ EolStatus::kSupported, EolStatus::kSecurityOnly, EolStatus::kEol};
+ for (EolStatus eol_status : tests) {
+ EXPECT_EQ(eol_status, StringToEolStatus(EolStatusToString(eol_status)))
+ << "The StringToEolStatus() was " << EolStatusToString(eol_status);
+ }
+
+ // Invalid values are assumed as "supported".
+ EXPECT_EQ(EolStatus::kSupported, StringToEolStatus(""));
+ EXPECT_EQ(EolStatus::kSupported, StringToEolStatus("hello, world!"));
+}
+
+} // namespace chromeos_update_engine