| Index: tools/telemetry/third_party/gsutilz/third_party/protorpc/protorpc/protourlencode_test.py
|
| diff --git a/tools/telemetry/third_party/gsutilz/third_party/protorpc/protorpc/protourlencode_test.py b/tools/telemetry/third_party/gsutilz/third_party/protorpc/protorpc/protourlencode_test.py
|
| deleted file mode 100755
|
| index 01218961a04b9551c3c3f7158a5a459a1f23e65b..0000000000000000000000000000000000000000
|
| --- a/tools/telemetry/third_party/gsutilz/third_party/protorpc/protorpc/protourlencode_test.py
|
| +++ /dev/null
|
| @@ -1,369 +0,0 @@
|
| -#!/usr/bin/env python
|
| -#
|
| -# Copyright 2010 Google Inc.
|
| -#
|
| -# 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.
|
| -#
|
| -
|
| -"""Tests for protorpc.protourlencode."""
|
| -
|
| -__author__ = 'rafek@google.com (Rafe Kaplan)'
|
| -
|
| -
|
| -import cgi
|
| -import logging
|
| -import unittest
|
| -import urllib
|
| -
|
| -from protorpc import message_types
|
| -from protorpc import messages
|
| -from protorpc import protourlencode
|
| -from protorpc import test_util
|
| -
|
| -
|
| -class ModuleInterfaceTest(test_util.ModuleInterfaceTest,
|
| - test_util.TestCase):
|
| -
|
| - MODULE = protourlencode
|
| -
|
| -
|
| -
|
| -class SuperMessage(messages.Message):
|
| - """A test message with a nested message field."""
|
| -
|
| - sub_message = messages.MessageField(test_util.OptionalMessage, 1)
|
| - sub_messages = messages.MessageField(test_util.OptionalMessage,
|
| - 2,
|
| - repeated=True)
|
| -
|
| -
|
| -class SuperSuperMessage(messages.Message):
|
| - """A test message with two levels of nested."""
|
| -
|
| - sub_message = messages.MessageField(SuperMessage, 1)
|
| - sub_messages = messages.MessageField(SuperMessage, 2, repeated=True)
|
| -
|
| -
|
| -class URLEncodedRequestBuilderTest(test_util.TestCase):
|
| - """Test the URL Encoded request builder."""
|
| -
|
| - def testMakePath(self):
|
| - builder = protourlencode.URLEncodedRequestBuilder(SuperSuperMessage(),
|
| - prefix='pre.')
|
| -
|
| - self.assertEquals(None, builder.make_path(''))
|
| - self.assertEquals(None, builder.make_path('no_such_field'))
|
| - self.assertEquals(None, builder.make_path('pre.no_such_field'))
|
| -
|
| - # Missing prefix.
|
| - self.assertEquals(None, builder.make_path('sub_message'))
|
| -
|
| - # Valid parameters.
|
| - self.assertEquals((('sub_message', None),),
|
| - builder.make_path('pre.sub_message'))
|
| - self.assertEquals((('sub_message', None), ('sub_messages', 1)),
|
| - builder.make_path('pre.sub_message.sub_messages-1'))
|
| - self.assertEquals(
|
| - (('sub_message', None),
|
| - ('sub_messages', 1),
|
| - ('int64_value', None)),
|
| - builder.make_path('pre.sub_message.sub_messages-1.int64_value'))
|
| -
|
| - # Missing index.
|
| - self.assertEquals(
|
| - None,
|
| - builder.make_path('pre.sub_message.sub_messages.integer_field'))
|
| -
|
| - # Has unexpected index.
|
| - self.assertEquals(
|
| - None,
|
| - builder.make_path('pre.sub_message.sub_message-1.integer_field'))
|
| -
|
| - def testAddParameter_SimpleAttributes(self):
|
| - message = test_util.OptionalMessage()
|
| - builder = protourlencode.URLEncodedRequestBuilder(message, prefix='pre.')
|
| -
|
| - self.assertTrue(builder.add_parameter('pre.int64_value', ['10']))
|
| - self.assertTrue(builder.add_parameter('pre.string_value', ['a string']))
|
| - self.assertTrue(builder.add_parameter('pre.enum_value', ['VAL1']))
|
| - self.assertEquals(10, message.int64_value)
|
| - self.assertEquals('a string', message.string_value)
|
| - self.assertEquals(test_util.OptionalMessage.SimpleEnum.VAL1,
|
| - message.enum_value)
|
| -
|
| - def testAddParameter_InvalidAttributes(self):
|
| - message = SuperSuperMessage()
|
| - builder = protourlencode.URLEncodedRequestBuilder(message, prefix='pre.')
|
| -
|
| - def assert_empty():
|
| - self.assertEquals(None, getattr(message, 'sub_message'))
|
| - self.assertEquals([], getattr(message, 'sub_messages'))
|
| -
|
| - self.assertFalse(builder.add_parameter('pre.nothing', ['x']))
|
| - assert_empty()
|
| -
|
| - self.assertFalse(builder.add_parameter('pre.sub_messages', ['x']))
|
| - self.assertFalse(builder.add_parameter('pre.sub_messages-1.nothing', ['x']))
|
| - assert_empty()
|
| -
|
| - def testAddParameter_NestedAttributes(self):
|
| - message = SuperSuperMessage()
|
| - builder = protourlencode.URLEncodedRequestBuilder(message, prefix='pre.')
|
| -
|
| - # Set an empty message fields.
|
| - self.assertTrue(builder.add_parameter('pre.sub_message', ['']))
|
| - self.assertTrue(isinstance(message.sub_message, SuperMessage))
|
| -
|
| - # Add a basic attribute.
|
| - self.assertTrue(builder.add_parameter(
|
| - 'pre.sub_message.sub_message.int64_value', ['10']))
|
| - self.assertTrue(builder.add_parameter(
|
| - 'pre.sub_message.sub_message.string_value', ['hello']))
|
| -
|
| - self.assertTrue(10, message.sub_message.sub_message.int64_value)
|
| - self.assertTrue('hello', message.sub_message.sub_message.string_value)
|
| -
|
| -
|
| - def testAddParameter_NestedMessages(self):
|
| - message = SuperSuperMessage()
|
| - builder = protourlencode.URLEncodedRequestBuilder(message, prefix='pre.')
|
| -
|
| - # Add a repeated empty message.
|
| - self.assertTrue(builder.add_parameter(
|
| - 'pre.sub_message.sub_messages-0', ['']))
|
| - sub_message = message.sub_message.sub_messages[0]
|
| - self.assertTrue(1, len(message.sub_message.sub_messages))
|
| - self.assertTrue(isinstance(sub_message,
|
| - test_util.OptionalMessage))
|
| - self.assertEquals(None, getattr(sub_message, 'int64_value'))
|
| - self.assertEquals(None, getattr(sub_message, 'string_value'))
|
| - self.assertEquals(None, getattr(sub_message, 'enum_value'))
|
| -
|
| - # Add a repeated message with value.
|
| - self.assertTrue(builder.add_parameter(
|
| - 'pre.sub_message.sub_messages-1.int64_value', ['10']))
|
| - self.assertTrue(2, len(message.sub_message.sub_messages))
|
| - self.assertTrue(10, message.sub_message.sub_messages[1].int64_value)
|
| -
|
| - # Add another value to the same nested message.
|
| - self.assertTrue(builder.add_parameter(
|
| - 'pre.sub_message.sub_messages-1.string_value', ['a string']))
|
| - self.assertTrue(2, len(message.sub_message.sub_messages))
|
| - self.assertEquals(10, message.sub_message.sub_messages[1].int64_value)
|
| - self.assertEquals('a string',
|
| - message.sub_message.sub_messages[1].string_value)
|
| -
|
| - def testAddParameter_RepeatedValues(self):
|
| - message = test_util.RepeatedMessage()
|
| - builder = protourlencode.URLEncodedRequestBuilder(message, prefix='pre.')
|
| -
|
| - self.assertTrue(builder.add_parameter('pre.int64_value-0', ['20']))
|
| - self.assertTrue(builder.add_parameter('pre.int64_value-1', ['30']))
|
| - self.assertEquals([20, 30], message.int64_value)
|
| -
|
| - self.assertTrue(builder.add_parameter('pre.string_value-0', ['hi']))
|
| - self.assertTrue(builder.add_parameter('pre.string_value-1', ['lo']))
|
| - self.assertTrue(builder.add_parameter('pre.string_value-1', ['dups overwrite']))
|
| - self.assertEquals(['hi', 'dups overwrite'], message.string_value)
|
| -
|
| - def testAddParameter_InvalidValuesMayRepeat(self):
|
| - message = test_util.OptionalMessage()
|
| - builder = protourlencode.URLEncodedRequestBuilder(message, prefix='pre.')
|
| -
|
| - self.assertFalse(builder.add_parameter('nothing', [1, 2, 3]))
|
| -
|
| - def testAddParameter_RepeatedParameters(self):
|
| - message = test_util.OptionalMessage()
|
| - builder = protourlencode.URLEncodedRequestBuilder(message, prefix='pre.')
|
| -
|
| - self.assertRaises(messages.DecodeError,
|
| - builder.add_parameter,
|
| - 'pre.int64_value',
|
| - [1, 2, 3])
|
| - self.assertRaises(messages.DecodeError,
|
| - builder.add_parameter,
|
| - 'pre.int64_value',
|
| - [])
|
| -
|
| - def testAddParameter_UnexpectedNestedValue(self):
|
| - """Test getting a nested value on a non-message sub-field."""
|
| - message = test_util.HasNestedMessage()
|
| - builder = protourlencode.URLEncodedRequestBuilder(message, 'pre.')
|
| -
|
| - self.assertFalse(builder.add_parameter('pre.nested.a_value.whatever',
|
| - ['1']))
|
| -
|
| - def testInvalidFieldFormat(self):
|
| - message = test_util.OptionalMessage()
|
| - builder = protourlencode.URLEncodedRequestBuilder(message, prefix='pre.')
|
| -
|
| - self.assertFalse(builder.add_parameter('pre.illegal%20', ['1']))
|
| -
|
| - def testAddParameter_UnexpectedNestedValue(self):
|
| - """Test getting a nested value on a non-message sub-field
|
| -
|
| - There is an odd corner case where if trying to insert a repeated value
|
| - on an nested repeated message that would normally succeed in being created
|
| - should fail. This case can only be tested when the first message of the
|
| - nested messages already exists.
|
| -
|
| - Another case is trying to access an indexed value nested within a
|
| - non-message field.
|
| - """
|
| - class HasRepeated(messages.Message):
|
| -
|
| - values = messages.IntegerField(1, repeated=True)
|
| -
|
| - class HasNestedRepeated(messages.Message):
|
| -
|
| - nested = messages.MessageField(HasRepeated, 1, repeated=True)
|
| -
|
| -
|
| - message = HasNestedRepeated()
|
| - builder = protourlencode.URLEncodedRequestBuilder(message, prefix='pre.')
|
| -
|
| - self.assertTrue(builder.add_parameter('pre.nested-0.values-0', ['1']))
|
| - # Try to create an indexed value on a non-message field.
|
| - self.assertFalse(builder.add_parameter('pre.nested-0.values-0.unknown-0',
|
| - ['1']))
|
| - # Try to create an out of range indexed field on an otherwise valid
|
| - # repeated message field.
|
| - self.assertFalse(builder.add_parameter('pre.nested-1.values-1', ['1']))
|
| -
|
| -
|
| -class ProtourlencodeConformanceTest(test_util.TestCase,
|
| - test_util.ProtoConformanceTestBase):
|
| -
|
| - PROTOLIB = protourlencode
|
| -
|
| - encoded_partial = urllib.urlencode([('double_value', 1.23),
|
| - ('int64_value', -100000000000),
|
| - ('int32_value', 1020),
|
| - ('string_value', u'a string'),
|
| - ('enum_value', 'VAL2'),
|
| - ])
|
| -
|
| - encoded_full = urllib.urlencode([('double_value', 1.23),
|
| - ('float_value', -2.5),
|
| - ('int64_value', -100000000000),
|
| - ('uint64_value', 102020202020),
|
| - ('int32_value', 1020),
|
| - ('bool_value', 'true'),
|
| - ('string_value',
|
| - u'a string\u044f'.encode('utf-8')),
|
| - ('bytes_value', b'a bytes\xff\xfe'),
|
| - ('enum_value', 'VAL2'),
|
| - ])
|
| -
|
| - encoded_repeated = urllib.urlencode([('double_value-0', 1.23),
|
| - ('double_value-1', 2.3),
|
| - ('float_value-0', -2.5),
|
| - ('float_value-1', 0.5),
|
| - ('int64_value-0', -100000000000),
|
| - ('int64_value-1', 20),
|
| - ('uint64_value-0', 102020202020),
|
| - ('uint64_value-1', 10),
|
| - ('int32_value-0', 1020),
|
| - ('int32_value-1', 718),
|
| - ('bool_value-0', 'true'),
|
| - ('bool_value-1', 'false'),
|
| - ('string_value-0',
|
| - u'a string\u044f'.encode('utf-8')),
|
| - ('string_value-1',
|
| - u'another string'.encode('utf-8')),
|
| - ('bytes_value-0', b'a bytes\xff\xfe'),
|
| - ('bytes_value-1', b'another bytes'),
|
| - ('enum_value-0', 'VAL2'),
|
| - ('enum_value-1', 'VAL1'),
|
| - ])
|
| -
|
| - encoded_nested = urllib.urlencode([('nested.a_value', 'a string'),
|
| - ])
|
| -
|
| - encoded_repeated_nested = urllib.urlencode(
|
| - [('repeated_nested-0.a_value', 'a string'),
|
| - ('repeated_nested-1.a_value', 'another string'),
|
| - ])
|
| -
|
| - unexpected_tag_message = 'unexpected=whatever'
|
| -
|
| - encoded_default_assigned = urllib.urlencode([('a_value', 'a default'),
|
| - ])
|
| -
|
| - encoded_nested_empty = urllib.urlencode([('nested', '')])
|
| -
|
| - encoded_repeated_nested_empty = urllib.urlencode([('repeated_nested-0', ''),
|
| - ('repeated_nested-1', '')])
|
| -
|
| - encoded_extend_message = urllib.urlencode([('int64_value-0', 400),
|
| - ('int64_value-1', 50),
|
| - ('int64_value-2', 6000)])
|
| -
|
| - encoded_string_types = urllib.urlencode(
|
| - [('string_value', 'Latin')])
|
| -
|
| - encoded_invalid_enum = urllib.urlencode([('enum_value', 'undefined')])
|
| -
|
| - def testParameterPrefix(self):
|
| - """Test using the 'prefix' parameter to encode_message."""
|
| - class MyMessage(messages.Message):
|
| - number = messages.IntegerField(1)
|
| - names = messages.StringField(2, repeated=True)
|
| -
|
| - message = MyMessage()
|
| - message.number = 10
|
| - message.names = [u'Fred', u'Lisa']
|
| -
|
| - encoded_message = protourlencode.encode_message(message, prefix='prefix-')
|
| - self.assertEquals({'prefix-number': ['10'],
|
| - 'prefix-names-0': ['Fred'],
|
| - 'prefix-names-1': ['Lisa'],
|
| - },
|
| - cgi.parse_qs(encoded_message))
|
| -
|
| - self.assertEquals(message, protourlencode.decode_message(MyMessage,
|
| - encoded_message,
|
| - prefix='prefix-'))
|
| -
|
| - def testProtourlencodeUnrecognizedField(self):
|
| - """Test that unrecognized fields are saved and can be accessed."""
|
| -
|
| - class MyMessage(messages.Message):
|
| - number = messages.IntegerField(1)
|
| -
|
| - decoded = protourlencode.decode_message(MyMessage,
|
| - self.unexpected_tag_message)
|
| - self.assertEquals(1, len(decoded.all_unrecognized_fields()))
|
| - self.assertEquals('unexpected', decoded.all_unrecognized_fields()[0])
|
| - # Unknown values set to a list of however many values had that name.
|
| - self.assertEquals((['whatever'], messages.Variant.STRING),
|
| - decoded.get_unrecognized_field_info('unexpected'))
|
| -
|
| - repeated_unknown = urllib.urlencode([('repeated', 400),
|
| - ('repeated', 'test'),
|
| - ('repeated', '123.456')])
|
| - decoded2 = protourlencode.decode_message(MyMessage, repeated_unknown)
|
| - self.assertEquals((['400', 'test', '123.456'], messages.Variant.STRING),
|
| - decoded2.get_unrecognized_field_info('repeated'))
|
| -
|
| - def testDecodeInvalidDateTime(self):
|
| -
|
| - class MyMessage(messages.Message):
|
| - a_datetime = message_types.DateTimeField(1)
|
| -
|
| - self.assertRaises(messages.DecodeError, protourlencode.decode_message,
|
| - MyMessage, 'a_datetime=invalid')
|
| -
|
| -
|
| -if __name__ == '__main__':
|
| - unittest.main()
|
|
|