ó
;ÏOc           @   s|   d  d l  m Z d  d l m Z m Z d  d l m Z d  d l m Z m	 Z	 d  d l
 m Z m Z d e f d „  ƒ  YZ d S(	   iÿÿÿÿ(   t	   constants(   t   FallbackStoraget   CookieStorage(   t   BaseTest(   t   set_cookie_datat   stored_cookie_messages_count(   t   set_session_datat   stored_session_messages_countt   FallbackTestc           B   sŒ   e  Z e Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d „  Z d „  Z d	 „  Z d
 „  Z d „  Z d „  Z d „  Z RS(   c         C   s.   i  |  _  t t |  ƒ j ƒ  } |  j  | _  | S(   N(   t   sessiont   superR   t   get_request(   t   selft   request(    (    s?   ../Django//lib/python/django/contrib/messages/tests/fallback.pyR      s    	c         C   s   | j  d S(   Niþÿÿÿ(   t   storages(   R   t   storage(    (    s?   ../Django//lib/python/django/contrib/messages/tests/fallback.pyt   get_cookie_storage   s    c         C   s   | j  d S(   Niÿÿÿÿ(   R   (   R   R   (    (    s?   ../Django//lib/python/django/contrib/messages/tests/fallback.pyt   get_session_storage   s    c         C   s   t  |  j | ƒ | ƒ S(   N(   R   R   (   R   R   t   response(    (    s?   ../Django//lib/python/django/contrib/messages/tests/fallback.pyR      s    c         C   s   t  |  j | ƒ ƒ S(   N(   R   R   (   R   R   R   (    (    s?   ../Django//lib/python/django/contrib/messages/tests/fallback.pyR      s    c         C   s&   |  j  | | ƒ |  j | | ƒ } | S(   sR   
        Return the storage totals from both cookie and session backends.
        (   R   R   (   R   R   R   t   total(    (    s?   ../Django//lib/python/django/contrib/messages/tests/fallback.pyt   stored_messages_count!   s    c         C   sˆ   |  j  ƒ  } |  j | ƒ } |  j | ƒ } g  t d ƒ D] } t | ƒ ^ q7 } t | | ƒ d  |  j | ƒ _ |  j	 t
 | ƒ | ƒ d  S(   Ni   (   R   t   storage_classR   t   ranget   strR   t   NoneR   t   _gett   assertEqualt   list(   R   R   R   t   cookie_storaget   it   example_messages(    (    s?   ../Django//lib/python/django/contrib/messages/tests/fallback.pyt   test_get)   s    %c         C   sG   |  j  ƒ  } |  j | ƒ } d  |  j | ƒ _ |  j t | ƒ g  ƒ d  S(   N(   R   R   R   R   R   R   R   (   R   R   R   (    (    s?   ../Django//lib/python/django/contrib/messages/tests/fallback.pyt   test_get_empty9   s    c         C   s¤   |  j  ƒ  } |  j | ƒ } |  j | ƒ } |  j | ƒ } g  t d ƒ D] } t | ƒ ^ qF } t | | d  t j g ƒ t	 | | d ƒ |  j
 t | ƒ | ƒ d  S(   Ni   i   (   R   R   R   R   R   R   R   R   t   not_finishedR   R   R   (   R   R   R   R   t   session_storageR   R   (    (    s?   ../Django//lib/python/django/contrib/messages/tests/fallback.pyt   test_get_fallbackD   s    %c         C   sž   |  j  ƒ  } |  j | ƒ } |  j | ƒ } |  j | ƒ } g  t d ƒ D] } t | ƒ ^ qF } t | t j g d t	 ƒt
 | | ƒ |  j t | ƒ | ƒ d  S(   Ni   t   encode_empty(   R   R   R   R   R   R   R   R   R!   t   TrueR   R   R   (   R   R   R   R   R"   R   R   (    (    s?   ../Django//lib/python/django/contrib/messages/tests/fallback.pyt   test_get_fallback_onlyS   s    %c         C   s¨   |  j  ƒ  } |  j | ƒ } |  j | ƒ } |  j | ƒ } t | d t j g ƒ t | d g ƒ |  j ƒ  } t	 | ƒ | j
 | ƒ |  j | | ƒ } |  j | d ƒ d  S(   Nt   cookieR	   i    (   R   R   R   R   R   R   R!   R   t   get_responseR   t   updateR   R   (   R   R   R   R   R"   R   t   session_storing(    (    s?   ../Django//lib/python/django/contrib/messages/tests/fallback.pyt   test_flush_used_backendsb   s    
c         C   s³   |  j  ƒ  } |  j ƒ  } d |  j | ƒ _ x1 t d ƒ D]# } | j t j t	 | ƒ d ƒ q7 W| j
 | ƒ |  j | | ƒ } |  j | d ƒ |  j | | ƒ } |  j | d ƒ d S(   s%  
        Confirms that:

        (1) A short number of messages whose data size doesn't exceed what is
        allowed in a cookie will all be stored in the CookieBackend.

        (2) If the CookieBackend can store all messages, the SessionBackend
        won't be written to at all.
        i   id   i    N(   t   get_storageR(   R   R   t   _storeR   t   addR    t   INFOR   R)   R   R   R   (   R   R   R   R   t   cookie_storingR*   (    (    s?   ../Django//lib/python/django/contrib/messages/tests/fallback.pyt   test_no_fallbackt   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 | | ƒ } |  j | d ƒ d S(   s–   
        Confirms that, if the data exceeds what is allowed in a cookie,
        messages which did not fit are stored in the SessionBackend.
        i6   g      @i%   i   i   i   N(   R,   R(   t   intR   t   max_cookie_sizeR   R.   R    R/   R   R)   R   R   R   (   R   R   R   t   msg_sizeR   R0   R*   (    (    s?   ../Django//lib/python/django/contrib/messages/tests/fallback.pyt   test_session_fallbackŽ   s    !c         C   s„   |  j  ƒ  } |  j ƒ  } | j t j d d ƒ | j | ƒ |  j | | ƒ } |  j | d ƒ |  j | | ƒ } |  j | d ƒ d S(   s¥   
        Confirms that large messages, none of which fit in a cookie, are stored
        in the SessionBackend (and nothing is stored in the CookieBackend).
        t   xiˆ  i    i   N(	   R,   R(   R.   R    R/   R)   R   R   R   (   R   R   R   R0   R*   (    (    s?   ../Django//lib/python/django/contrib/messages/tests/fallback.pyt   test_session_fallback_only¡   s    (   t   __name__t
   __module__R   R   R   R   R   R   R   R   R   R    R#   R&   R+   R1   R5   R7   (    (    (    s?   ../Django//lib/python/django/contrib/messages/tests/fallback.pyR      s   													N(   t   django.contrib.messagesR    t(   django.contrib.messages.storage.fallbackR   R   t"   django.contrib.messages.tests.baseR   t$   django.contrib.messages.tests.cookieR   R   t%   django.contrib.messages.tests.sessionR   R   R   (    (    (    s?   ../Django//lib/python/django/contrib/messages/tests/fallback.pyt   <module>   s
   