update_engine: Parse and supply EOL date for Chrome
From Omaha, the optional field |_eol_date| is to indicate the EOL of a
device. Chrome side will leverage these values to display a
notification. The value for |_eol_date| should be an integer value
indicating the days from Unix Epoch date.
If |_eol_date| does not exist in the Omaha response or have non-integer
values, the default will fallback to |kEolDateInvalid|.
BUG=chromium:998983
TEST=FEATURES="test" emerge-$B update_engine update_engine-client system_api
TEST=test_that -b $B $IP autoupdate_EOL
TEST=test_that -b $B $IP autoupdate_EOL.approaching_eol
TEST=test_that -b $B $IP autoupdate_EOL.future_eol
Cq-Depend:chromium:1783596, chromium:1811116
Change-Id: I2b1063873118ccf8fe22ba09a5961e27aa980c7b
Reviewed-on: https://chromium-review.googlesource.com/1783897
Tested-by: Jae Hoon Kim <kimjae@chromium.org>
Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com>
Legacy-Commit-Queue: Commit Bot <commit-bot@chromium.org>
Reviewed-by: Amin Hassani <ahassani@chromium.org>
diff --git a/omaha_utils_unittest.cc b/omaha_utils_unittest.cc
index 8ceb76b..ccb9578 100644
--- a/omaha_utils_unittest.cc
+++ b/omaha_utils_unittest.cc
@@ -39,4 +39,17 @@
EXPECT_EQ(EolStatus::kSupported, StringToEolStatus("hello, world!"));
}
+TEST(OmahaUtilsTest, EolDateTest) {
+ // Supported values are converted back and forth properly.
+ const std::vector<EolDate> tests = {kEolDateInvalid, -1, 0, 1};
+ for (EolDate eol_date : tests) {
+ EXPECT_EQ(eol_date, StringToEolDate(EolDateToString(eol_date)))
+ << "The StringToEolDate() was " << EolDateToString(eol_date);
+ }
+
+ // Invalid values are assumed as "supported".
+ EXPECT_EQ(kEolDateInvalid, StringToEolDate(""));
+ EXPECT_EQ(kEolDateInvalid, StringToEolDate("hello, world!"));
+}
+
} // namespace chromeos_update_engine