ó
G()Qc           @   s¿   d  d l  Z  d  d l m Z d  d l m Z d  d l m Z m Z m Z d  d l	 m
 Z
 d  d l m Z d  d l m Z m Z e e d „ Z d	 „  Z e d
 d ƒ d e f d „  ƒ  Yƒ Z d S(   iÿÿÿÿN(   t	   constants(   t   BaseTest(   t   CookieStoraget   MessageEncodert   MessageDecoder(   t   Message(   t   override_settings(   t   SafeDatat	   mark_safec         C   sZ   |  j  | d | ƒ} | r( | d } n  i | t j 6|  j _ t |  d ƒ rV |  ` n  d S(   sq   
    Sets ``request.COOKIES`` with the encoded data and removes the storage
    backend's loaded data cache.
    t   encode_emptyi   t   _loaded_dataN(   t   _encodeR   t   cookie_namet   requestt   COOKIESt   hasattrR
   (   t   storaget   messagest   invalidR	   t   encoded_data(    (    s=   ../Django//lib/python/django/contrib/messages/tests/cookie.pyt   set_cookie_data   s    c         C   sv   | j  j |  j ƒ } | s, | d d k r0 d S|  j | j ƒ } | sL d S| d t j k rl | j ƒ  n  t | ƒ S(   sF   
    Returns an integer containing the number of messages stored.
    s   max-agei    iÿÿÿÿ(	   t   cookiest   getR   t   _decodet   valueR   t   not_finishedt   popt   len(   R   t   responset   cookiet   data(    (    s=   ../Django//lib/python/django/contrib/messages/tests/cookie.pyt   stored_cookie_messages_count   s    t   SESSION_COOKIE_DOMAINs   .example.comt
   CookieTestc           B   sM   e  Z e Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 RS(   c         C   s   t  | | ƒ S(   N(   R   (   t   selfR   R   (    (    s=   ../Django//lib/python/django/contrib/messages/tests/cookie.pyt   stored_messages_count/   s    c         C   sH   |  j  |  j ƒ  ƒ } d d g } t | | ƒ |  j t | ƒ | ƒ d  S(   Nt   testt   me(   t   storage_classt   get_requestR   t   assertEqualt   list(   R"   R   t   example_messages(    (    s=   ../Django//lib/python/django/contrib/messages/tests/cookie.pyt   test_get2   s    c         C   s(  |  j  ƒ  } |  j ƒ  } | j t j d ƒ | j | ƒ |  j d | j d j k ƒ |  j	 | j d d d ƒ |  j	 | j d d d ƒ |  j  ƒ  } |  j ƒ  } | j t j d ƒ x | D] } q½ W| j | ƒ |  j	 | j d j d ƒ |  j	 | j d d d ƒ |  j	 | j d d d ƒ d S(	   s^   
        Ensure that CookieStorage honors SESSION_COOKIE_DOMAIN.
        Refs #15618.
        R$   R   t   domains   .example.comt   expirest    s   Thu, 01-Jan-1970 00:00:00 GMTN(
   t   get_storaget   get_responset   addR    t   INFOt   updatet
   assertTrueR   R   R(   (   R"   R   R   t   m(    (    s=   ../Django//lib/python/django/contrib/messages/tests/cookie.pyt   test_domain:   s     c         C   sT   |  j  ƒ  } |  j | ƒ } d d g } t | | d t ƒ|  j t | ƒ g  ƒ d  S(   NR$   R%   R   (   R'   R&   R   t   TrueR(   R)   (   R"   R   R   R*   (    (    s=   ../Django//lib/python/django/contrib/messages/tests/cookie.pyt   test_get_bad_cookieS   s
    c         C   sÐ   |  j  ƒ  } |  j ƒ  } t t j d d d ƒ } x1 t d ƒ D]# } | j t j t	 | ƒ | ƒ q@ W| j
 | ƒ } |  j | | ƒ } |  j | d ƒ |  j t | ƒ d ƒ |  j | d j d | k ƒ d	 S(
   s°   
        Tests that, if the data exceeds what is allowed in a cookie, older
        messages are removed before saving (and returned by the ``update``
        method).
        i6   g      @i%   i   i   i   i    t   0N(   R/   R0   t   intR   t   max_cookie_sizet   rangeR1   R    R2   t   strR3   R#   R(   R   R4   t   message(   R"   R   R   t   msg_sizet   it   unstored_messagest   cookie_storing(    (    s=   ../Django//lib/python/django/contrib/messages/tests/cookie.pyt   test_max_cookie_length\   s    !c         C   s¸   i t  t j d ƒ d 6g  t d ƒ D] } t  t j d ƒ ^ q# i t  t j d ƒ d 6g d 6t  t j d ƒ g } t d d ƒ } | j | ƒ } t j | d t	 ƒ} |  j
 | | ƒ d S(   s±   
        Tests that a complex nested data structure containing Message
        instances is properly encoded/decoded by the custom JSON
        encoder/decoder classes.
        s   Test messageR>   i   s
   message %st   errors   another-messaget   message_listt
   separatorst   ,t   :t   clsN(   RG   RH   (   R   R    R2   R<   t   ERRORR   t   encodet   jsont   loadsR   R(   (   R"   t   xR   t   encoderR   t   decoded_messages(    (    s=   ../Django//lib/python/django/contrib/messages/tests/cookie.pyt   test_json_encoder_decoderu   s    (c            sQ   ‡  f d †  } |  j  ƒ  ‰  |  j | t d ƒ ƒ t ƒ |  j | d ƒ t ƒ d S(   s†   
        Tests that a message containing SafeData is keeping its safe status when
        retrieved from the message storage.
        c            s7   t  t j |  ƒ } ˆ  j | ƒ } ˆ  j | ƒ } | j S(   N(   R   R    t   DEBUGR   R   R>   (   R   R>   t   encodedt   decoded(   R   (    s=   ../Django//lib/python/django/contrib/messages/tests/cookie.pyt   encode_decodeŽ   s    s   <b>Hello Django!</b>N(   R/   t   assertIsInstanceR   R   t   assertNotIsInstance(   R"   RU   (    (   R   s=   ../Django//lib/python/django/contrib/messages/tests/cookie.pyt   test_safedata‰   s    (   t   __name__t
   __module__R   R&   R#   R+   R6   R8   RC   RQ   RX   (    (    (    s=   ../Django//lib/python/django/contrib/messages/tests/cookie.pyR!   +   s   							(   RL   t   django.contrib.messagesR    t"   django.contrib.messages.tests.baseR   t&   django.contrib.messages.storage.cookieR   R   R   t$   django.contrib.messages.storage.baseR   t   django.test.utilsR   t   django.utils.safestringR   R   t   FalseR   R   R!   (    (    (    s=   ../Django//lib/python/django/contrib/messages/tests/cookie.pyt   <module>   s   	