Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(368)

Unified Diff: tools/telemetry/third_party/gsutilz/third_party/apitools/apitools/base/py/encoding_test.py

Issue 1376593003: Roll gsutil version to 4.15. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: tools/telemetry/third_party/gsutilz/third_party/apitools/apitools/base/py/encoding_test.py
diff --git a/tools/telemetry/third_party/gsutilz/third_party/apitools/apitools/base/py/encoding_test.py b/tools/telemetry/third_party/gsutilz/third_party/apitools/apitools/base/py/encoding_test.py
index 0d10d8b6590a2bd29c88fd215a70343699a3e429..0389af125f0544547bc8512e00ab46e6cc2fe044 100644
--- a/tools/telemetry/third_party/gsutilz/third_party/apitools/apitools/base/py/encoding_test.py
+++ b/tools/telemetry/third_party/gsutilz/third_party/apitools/apitools/base/py/encoding_test.py
@@ -1,6 +1,7 @@
import base64
import datetime
import json
+import sys
from protorpc import message_types
from protorpc import messages
@@ -9,6 +10,7 @@ import unittest2
from apitools.base.py import encoding
from apitools.base.py import exceptions
+from apitools.base.py import extra_types
class SimpleMessage(messages.Message):
@@ -33,6 +35,21 @@ class AdditionalPropertiesMessage(messages.Message):
value = messages.StringField(2)
additional_properties = messages.MessageField(
+ 'AdditionalProperty', 1, repeated=True)
+
+
+@encoding.MapUnrecognizedFields('additional_properties')
+class UnrecognizedEnumMessage(messages.Message):
+
+ class ThisEnum(messages.Enum):
+ VALUE_ONE = 1
+ VALUE_TWO = 2
+
+ class AdditionalProperty(messages.Message):
+ key = messages.StringField(1)
+ value = messages.EnumField('UnrecognizedEnumMessage.ThisEnum', 2)
+
+ additional_properties = messages.MessageField(
AdditionalProperty, 1, repeated=True)
@@ -85,6 +102,17 @@ class MessageWithRemappings(messages.Message):
repeated_field = messages.StringField(5, repeated=True)
+@encoding.MapUnrecognizedFields('additional_properties')
+class RepeatedJsonValueMessage(messages.Message):
+
+ class AdditionalProperty(messages.Message):
+ key = messages.StringField(1)
+ value = messages.MessageField(extra_types.JsonValue, 2, repeated=True)
+
+ additional_properties = messages.MessageField('AdditionalProperty', 1,
+ repeated=True)
+
+
encoding.AddCustomJsonEnumMapping(MessageWithRemappings.SomeEnum,
'enum_value', 'wire_name')
encoding.AddCustomJsonFieldMapping(MessageWithRemappings,
@@ -187,6 +215,14 @@ class EncodingTest(unittest2.TestCase):
self.assertEqual(1, len(result.additional_properties))
self.assertEqual(0, result.additional_properties[0].value.index)
+ def testUnrecognizedEnum(self):
+ json_msg = '{"input": "VALUE_ONE"}'
+ result = encoding.JsonToMessage(
+ UnrecognizedEnumMessage, json_msg)
+ self.assertEqual(1, len(result.additional_properties))
+ self.assertEqual(UnrecognizedEnumMessage.ThisEnum.VALUE_ONE,
+ result.additional_properties[0].value)
+
def testNestedFieldMapping(self):
nested_msg = AdditionalPropertiesMessage()
nested_msg.additional_properties = [
@@ -342,3 +378,33 @@ class EncodingTest(unittest2.TestCase):
'TimeMessage(\n '
'timefield=datetime.datetime(2014, 7, 2, 23, 33, 25, 541000, '
'tzinfo=TimeZoneOffset(datetime.timedelta(0))),\n)')
+
+ def testPackageMappingsNoPackage(self):
+ this_module_name = util.get_package_for_module(__name__)
+ full_type_name = 'MessageWithEnum.ThisEnum'
+ full_key = '%s.%s' % (this_module_name, full_type_name)
+ self.assertEqual(full_key,
+ encoding._GetTypeKey(MessageWithEnum.ThisEnum, ''))
+
+ def testPackageMappingsWithPackage(self):
+ this_module_name = util.get_package_for_module(__name__)
+ full_type_name = 'MessageWithEnum.ThisEnum'
+ full_key = '%s.%s' % (this_module_name, full_type_name)
+ this_module = sys.modules[__name__]
+ new_package = 'new_package'
+ try:
+ setattr(this_module, 'package', new_package)
+ new_key = '%s.%s' % (new_package, full_type_name)
+ self.assertEqual(
+ new_key,
+ encoding._GetTypeKey(MessageWithEnum.ThisEnum, ''))
+ self.assertEqual(
+ full_key,
+ encoding._GetTypeKey(MessageWithEnum.ThisEnum, new_package))
+ finally:
+ delattr(this_module, 'package')
+
+ def testRepeatedJsonValuesAsRepeatedProperty(self):
+ encoded_msg = '{"a": [{"one": 1}]}'
+ msg = encoding.JsonToMessage(RepeatedJsonValueMessage, encoded_msg)
+ self.assertEqual(encoded_msg, encoding.MessageToJson(msg))

Powered by Google App Engine
This is Rietveld 408576698