HEX
Server: Apache/2.4.65 (Ubuntu)
System: Linux ielts-store-v2 6.8.0-1036-gcp #38~22.04.1-Ubuntu SMP Thu Aug 14 01:19:18 UTC 2025 x86_64
User: root (0)
PHP: 7.2.34-54+ubuntu20.04.1+deb.sury.org+1
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,
Upload Files
File: //snap/google-cloud-cli/current/platform/gsutil/third_party/apitools/apitools/gen/util_test.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
# Copyright 2015 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 util."""
import codecs
import gzip
import os
import six.moves.urllib.request as urllib_request
import tempfile
import unittest

from apitools.gen import util
from mock import patch


class NormalizeVersionTest(unittest.TestCase):

    def testVersions(self):
        already_valid = 'v1'
        self.assertEqual(already_valid, util.NormalizeVersion(already_valid))
        to_clean = 'v0.1'
        self.assertEqual('v0_1', util.NormalizeVersion(to_clean))


class NamesTest(unittest.TestCase):

    def testKeywords(self):
        names = util.Names([''])
        self.assertEqual('in_', names.CleanName('in'))

    def testNormalizeEnumName(self):
        names = util.Names([''])
        self.assertEqual('_0', names.NormalizeEnumName('0'))


class MockRequestResponse():
    """Mocks the behavior of urllib.response."""

    class MockRequestEncoding():
        def __init__(self, encoding):
            self.encoding = encoding

        def get(self, _):
            return self.encoding

    def __init__(self, content, encoding):
        self.content = content
        self.encoding = MockRequestResponse.MockRequestEncoding(encoding)

    def info(self):
        return self.encoding

    def read(self):
        return self.content


def _Gzip(raw_content):
    """Returns gzipped content from any content."""
    f = tempfile.NamedTemporaryFile(suffix='gz', mode='wb', delete=False)
    f.close()
    try:
        with gzip.open(f.name, 'wb') as h:
            h.write(raw_content)
        with open(f.name, 'rb') as h:
            return h.read()
    finally:
        os.unlink(f.name)


class GetURLContentTest(unittest.TestCase):

    def testUnspecifiedContentEncoding(self):
        data = 'regular non-gzipped content'
        with patch.object(urllib_request, 'urlopen',
                          return_value=MockRequestResponse(data, '')):
            self.assertEqual(data, util._GetURLContent('unused_url_parameter'))

    def testGZippedContent(self):
        data = u'¿Hola qué tal?'
        compressed_data = _Gzip(data.encode('utf-8'))
        with patch.object(urllib_request, 'urlopen',
                          return_value=MockRequestResponse(
                              compressed_data, 'gzip')):
            self.assertEqual(data, util._GetURLContent(
                'unused_url_parameter').decode('utf-8'))