/usr/lib/python2.7/dist-packages/zope/security/tests/test_decorator.py is in python-zope.security 4.0.3-2ubuntu1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 | ##############################################################################
#
# Copyright (c) 2003 Zope Foundation and Contributors.
# All Rights Reserved.
#
# This software is subject to the provisions of the Zope Public License,
# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
# FOR A PARTICULAR PURPOSE.
#
##############################################################################
"""Test zope.security.decorator
"""
import unittest
class DecoratedSecurityCheckerDescriptorTests(unittest.TestCase):
def setUp(self):
from zope.security.checker import _clear
_clear()
def tearDown(self):
from zope.security.checker import _clear
_clear()
def _getTargetClass(self):
from zope.security.decorator import DecoratedSecurityCheckerDescriptor
return DecoratedSecurityCheckerDescriptor
def _makeOne(self):
return self._getTargetClass()()
def test_neither_wrapper_nor_object_has_checker(self):
from zope.proxy import ProxyBase
from zope.security.checker import NoProxy
from zope.security.checker import defineChecker
class Foo(object):
a = 'a'
defineChecker(Foo, NoProxy)
foo = Foo()
class Wrapper(ProxyBase):
b = 'b'
__Security_checker__ = self._makeOne()
defineChecker(Wrapper, NoProxy)
wrapper = Wrapper(foo)
self.assertRaises(AttributeError,
getattr, wrapper, '__Security_checker__')
def test_both_wrapper_and_object_have_checkers_not_security_proxied(self):
from zope.proxy import ProxyBase
from zope.security.checker import CombinedChecker
from zope.security.checker import NamesChecker
from zope.security.checker import defineChecker
from zope.security.interfaces import ForbiddenAttribute
class Foo(object):
a = 'a'
fooChecker = NamesChecker(['a']) # a is public
defineChecker(Foo, fooChecker)
foo = Foo()
fooChecker.check(foo, 'a') # no raise
self.assertRaises(ForbiddenAttribute,
fooChecker.check, foo, 'b')
class Wrapper(ProxyBase):
b = 'b'
__Security_checker__ = self._makeOne()
wrapperChecker = NamesChecker(['b']) # b is public
defineChecker(Wrapper, wrapperChecker)
wrapper = Wrapper(foo)
self.assertRaises(ForbiddenAttribute,
wrapperChecker.check, foo, 'a')
wrapperChecker.check(foo, 'b') # no raise
checker = wrapper.__Security_checker__
self.assertTrue(isinstance(checker, CombinedChecker))
checker.check(wrapper, 'a') # no raise
checker.check(wrapper, 'b') # no raise
def test_only_wrapper_has_checker(self):
from zope.proxy import ProxyBase
from zope.security.checker import NamesChecker
from zope.security.checker import NoProxy
from zope.security.checker import defineChecker
class Foo(object):
a = 'a'
foo = Foo()
defineChecker(Foo, NoProxy)
class Wrapper(ProxyBase):
b = 'b'
__Security_checker__ = self._makeOne()
wrapperChecker = NamesChecker(['b']) # b is public
defineChecker(Wrapper, wrapperChecker)
wrapper = Wrapper(foo)
self.assertTrue(wrapper.__Security_checker__ is wrapperChecker)
def test_only_object_has_checker(self):
from zope.proxy import ProxyBase
from zope.security.checker import NamesChecker
from zope.security.checker import NoProxy
from zope.security.checker import defineChecker
class Foo(object):
a = 'a'
fooChecker = NamesChecker(['a']) # a is public
defineChecker(Foo, fooChecker)
foo = Foo()
class Wrapper(ProxyBase):
b = 'b'
__Security_checker__ = self._makeOne()
defineChecker(Wrapper, NoProxy)
wrapper = Wrapper(foo)
self.assertTrue(wrapper.__Security_checker__ is fooChecker)
def test_both_wrapper_and_object_have_checkers_security_proxied(self):
from zope.proxy import ProxyBase
from zope.security.checker import CombinedChecker
from zope.security.checker import NamesChecker
from zope.security.checker import defineChecker
from zope.security.proxy import ProxyFactory
class Foo(object):
a = 'a'
fooChecker = NamesChecker(['a']) # a is public
defineChecker(Foo, fooChecker)
foo = Foo()
f_sec = ProxyFactory(foo)
class Wrapper(ProxyBase):
b = 'b'
__Security_checker__ = self._makeOne()
wrapperChecker = NamesChecker(['b']) # b is public
defineChecker(Wrapper, wrapperChecker)
w_sec = Wrapper(f_sec)
checker = w_sec.__Security_checker__
self.assertTrue(isinstance(checker, CombinedChecker))
checker.check(w_sec, 'a') # no raise
checker.check(w_sec, 'b') # no raise
def test_cannot_overwrite(self):
from zope.proxy import ProxyBase
from zope.security.checker import NoProxy
from zope.security.checker import defineChecker
class Foo(object):
a = 'a'
defineChecker(Foo, NoProxy)
foo = Foo()
class Wrapper(ProxyBase):
b = 'b'
__Security_checker__ = self._makeOne()
wrapper = Wrapper(foo)
def _try():
wrapper.__Security_checker__ = None
self.assertRaises(TypeError, _try)
def test_suite():
return unittest.TestSuite((
unittest.makeSuite(DecoratedSecurityCheckerDescriptorTests),
))
|