łň
Ł=Gc           @   sa   d  Z  d d k l Z d Z d e f d     YZ d e f d     YZ d Z d	 Z d
   Z	 d S(   sŁ   
    unit test for security features
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    :copyright: 2007 by Armin Ronacher.
    :license: BSD, see LICENSE for more details.
i˙˙˙˙(   t   EnvironmentsS   {% for item in range(10) %}
    {%- set outer = item! -%}
{% endfor -%}
{{ outer }}t   PrivateStuffc           B   s#   e  Z d    Z d   Z e e _ RS(   c         C   s   d  S(   i   (    (   t   self(    (    s9   /Users/mitsuhiko/Development/jinja/tests/test_security.pyt   <lambda>   s    c         C   s   d  S(   i*   (    (   R   (    (    s9   /Users/mitsuhiko/Development/jinja/tests/test_security.pyR      s    (   t   __name__t
   __module__t   bart   foot   Truet   jinja_unsafe_call(    (    (    s9   /Users/mitsuhiko/Development/jinja/tests/test_security.pyR      s   		t   PublicStuffc           B   s#   e  Z d  g Z d   Z d   Z RS(   R   c         C   s   d  S(   i   (    (   R   (    (    s9   /Users/mitsuhiko/Development/jinja/tests/test_security.pyR      s    c         C   s   d  S(   i*   (    (   R   (    (    s9   /Users/mitsuhiko/Development/jinja/tests/test_security.pyR      s    (   R   R   t   jinja_allowed_attributesR   R   (    (    (    s9   /Users/mitsuhiko/Development/jinja/tests/test_security.pyR
      s   		sż  
>>> env.from_string("{{ foo.foo() }}").render(foo=MODULE.PrivateStuff())
u''
>>> env.from_string("{{ foo.bar() }}").render(foo=MODULE.PrivateStuff())
u'23'

>>> env.from_string("{{ foo.foo() }}").render(foo=MODULE.PublicStuff())
u''
>>> env.from_string("{{ foo.bar() }}").render(foo=MODULE.PublicStuff())
u'23'

>>> env.from_string("{{ foo.__class__ }}").render(foo=42)
u''

>>> env.from_string("{{ foo.func_code }}").render(foo=lambda:None)
u''
sU  
>>> env.from_string("{% for item.attribute in seq %}...{% endfor %}")
Traceback (most recent call last):
    ...
TemplateSyntaxError: cannot assign to expression (line 1)
>>> env.from_string("{% for foo, bar.baz in seq %}...{% endfor %}")
Traceback (most recent call last):
    ...
TemplateSyntaxError: cannot assign to expression (line 1)
c          C   s^   t    }  d |  i d <|  i t  } | i   d j p t  |  i d d j p t  d  S(   Ni*   t   outert   9(   R    t   globalst   from_stringt   NONLOCALSETt   rendert   AssertionError(   t   envt   tmpl(    (    s9   /Users/mitsuhiko/Development/jinja/tests/test_security.pyt   test_nonlocal_set>   s
    	N(
   t   __doc__t   jinjaR    R   t   objectR   R
   t   test_unsafet   test_restrictedR   (    (    (    s9   /Users/mitsuhiko/Development/jinja/tests/test_security.pys   <module>   s   