nebraska.py: Install requests version mismatch allowed
To support DLC(s) installation Omaha request, version will not match
that of platform AppID.
BUG=none
TEST=./run_unittests
Change-Id: If4f2e9f30323d61f971a373d87d18bbd9238ce41
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/dev-util/+/2018462
Tested-by: Jae Hoon Kim <kimjae@chromium.org>
Reviewed-by: Andrew Lassalle <andrewlassalle@chromium.org>
Reviewed-by: Amin Hassani <ahassani@chromium.org>
Commit-Queue: Jae Hoon Kim <kimjae@chromium.org>
diff --git a/nebraska/nebraska.py b/nebraska/nebraska.py
index 72a2aaa..76bfe51 100755
--- a/nebraska/nebraska.py
+++ b/nebraska/nebraska.py
@@ -181,8 +181,9 @@
'Attribute "%s" is not the same in all app tags.' % attribute)
return unique_attrs.pop()
- self.version = _CheckAttributesAndReturnIt(self.APP_VERSION_ATTR,
- in_all=True)
+ if self.request_type == Request.RequestType.UPDATE:
+ self.version = _CheckAttributesAndReturnIt(self.APP_VERSION_ATTR,
+ in_all=True)
self.track = _CheckAttributesAndReturnIt(self.APP_CHANNEL_ATTR)
self.board = _CheckAttributesAndReturnIt(self.APP_BOARD_ATTR)
diff --git a/nebraska/nebraska_unittest.py b/nebraska/nebraska_unittest.py
index cbadb2b..b6e1f38 100755
--- a/nebraska/nebraska_unittest.py
+++ b/nebraska/nebraska_unittest.py
@@ -763,8 +763,26 @@
</request>
"""
- # Mismatched versions.
- MISMATCHED_VERSION_ATTR_REQUEST = """<?xml version="1.0" encoding="UTF-8"?>
+ # Mismatched versions UPDATE.
+ MISMATCHED_VERSION_ATTR_UPDATE_REQUEST = \
+ """<?xml version="1.0" encoding="UTF-8"?>
+<request protocol="3.0">
+ <os version="Indy" platform="Chrome OS" sp="10323.52.0_x86_64"></os>
+ <app appid="platform" version="1.0.0" delta_okay="false"
+ track="stable-channel" board="eve">
+ <ping active="1" a="1" r="1"></ping>
+ <updatecheck targetversionprefix=""></updatecheck>
+ </app>
+ <app appid="foo" version="2.0.0" delta_okay="false">
+ <ping active="1" a="1" r="1"></ping>
+ <updatecheck targetversionprefix=""></updatecheck>
+ </app>
+</request>
+"""
+
+ # Mismatched versions INSTALL.
+ MISMATCHED_VERSION_ATTR_INSTALL_REQUEST = \
+ """<?xml version="1.0" encoding="UTF-8"?>
<request protocol="3.0">
<os version="Indy" platform="Chrome OS" sp="10323.52.0_x86_64"></os>
<app appid="platform" version="1.0.0" delta_okay="false"
@@ -807,10 +825,15 @@
with self.assertRaises(nebraska.InvalidRequestError):
nebraska.Request(XMLStrings.MISSING_REQUIRED_ATTR_REQUEST)
- def testParseRequestMismatchedVersion(self):
- """Tests ParseRequest handling of mismatched version numbers."""
+ def testParseRequestMismatchedVersionUpdate(self):
+ """Tests ParseRequest handling of mismatched update version numbers."""
with self.assertRaises(nebraska.InvalidRequestError):
- nebraska.Request(XMLStrings.MISMATCHED_VERSION_ATTR_REQUEST)
+ nebraska.Request(XMLStrings.MISMATCHED_VERSION_ATTR_UPDATE_REQUEST)
+
+ def testParseRequestMismatchedVersionInstall(self):
+ """Tests ParseRequest handling of mismatched install version numbers."""
+ # Not raises |nebraska.InvalidRequestError|.
+ nebraska.Request(XMLStrings.MISMATCHED_VERSION_ATTR_INSTALL_REQUEST)
def testParseRequestInstall(self):
"""Tests ParseRequest handling of install requests."""