Ñò
TiœPc           @   sA  d  d k  l Z d  d k l Z d  d k l Z d  d k l Z d  d k l Z d  d k l Z d  d k l Z d  d k l	 Z	 d  d	 k
 l Z l 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 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( d& „  Z) d' „  Z* d( „  Z+ d) „  Z, d* „  Z- d+ „  Z. d, „  Z/ d- „  Z0 d. „  Z1 d/ „  Z2 d0 „  Z3 d1 „  Z4 d2 „  Z5 d3 „  Z6 d4 „  Z7 d5 „  Z8 d6 „  Z9 d7 „  Z: d8 „  Z; d9 S(:   iÿÿÿÿ(   t   Request(   t   Accept(   t
   MIMEAccept(   t	   NilAccept(   t   NoAccept(   t   accept_property(   t   AcceptLanguage(   t   AcceptCharset(   t   eq_t   assert_raisesc           C   s*   t  t i d ƒ ƒ d g j p t ‚ d  S(   Ns   value1; q=0.1.2t   value1i   (   R
   i   (   t   listR   t   parset   AssertionError(    (    (    s5   /home/chrism/projects/webob/tests/test_acceptparse.pyt   test_parse_accept_badq   s    c          C   s*   t  d ƒ }  |  i d g j p t ‚ d  S(   Ns	   text/htmli   (   s	   text/htmli   (   R   t   _parsedR   (   t   accept(    (    s5   /home/chrism/projects/webob/tests/test_acceptparse.pyt   test_init_accept_content_type   s    c          C   s0   t  d ƒ }  |  i d d d	 g j p t ‚ d  S(
   Ns   iso-8859-5, unicode-1-1;q=0.8s
   iso-8859-5i   s   unicode-1-1gš™™™™™é?s
   iso-8859-1(   s
   iso-8859-5i   (   s   unicode-1-1gš™™™™™é?(   s
   iso-8859-1i   (   R   R   R   (   R   (    (    s5   /home/chrism/projects/webob/tests/test_acceptparse.pyt   test_init_accept_accept_charset   s    	c          C   s0   t  d ƒ }  |  i d d	 d
 g j p t ‚ d S(   sm   3.4 Character Sets
           [...]
           HTTP character sets are identified by case-insensitive tokens.s   ISO-8859-5, UNICODE-1-1;q=0.8s
   iso-8859-5i   s   unicode-1-1gš™™™™™é?s
   iso-8859-1N(   s
   iso-8859-5i   (   s   unicode-1-1gš™™™™™é?(   s
   iso-8859-1i   (   R   R   R   (   R   (    (    s5   /home/chrism/projects/webob/tests/test_acceptparse.pyt)   test_init_accept_accept_charset_mixedcase   s    	c          C   s*   t  d ƒ }  |  i d g j p t ‚ d  S(   Ns
   iso-8859-1i   (   s
   iso-8859-1i   (   R   R   R   (   R   (    (    s5   /home/chrism/projects/webob/tests/test_acceptparse.pyt/   test_init_accept_accept_charset_with_iso_8859_1"   s    c          C   s*   t  d ƒ }  |  i d g j p t ‚ d  S(   Nt   *i   (   R   i   (   R   R   R   (   R   (    (    s5   /home/chrism/projects/webob/tests/test_acceptparse.pyt(   test_init_accept_accept_charset_wildcard&   s    c          C   s0   t  d ƒ }  |  i d d	 d
 g j p t ‚ d  S(   Ns   da, en-gb;q=0.8, en;q=0.7t   dai   s   en-gbgš™™™™™é?t   engffffffæ?(   s   dai   (   s   en-gbgš™™™™™é?(   s   engffffffæ?(   R   R   R   (   R   (    (    s5   /home/chrism/projects/webob/tests/test_acceptparse.pyt    test_init_accept_accept_language*   s    	c          C   s-   t  d ƒ }  |  i d d g j p t ‚ d  S(   Ns   da, q, en-gb;q=0.8R   i   s   en-gbgš™™™™™é?(   s   dai   (   s   en-gbgš™™™™™é?(   R   R   R   (   R   (    (    s5   /home/chrism/projects/webob/tests/test_acceptparse.pyt   test_init_accept_invalid_value0   s    	c          C   s-   t  d ƒ }  |  i d d g j p t ‚ d  S(   Ns   da, en-gb;q=fooR   i   s   en-gb(   s   dai   (   s   en-gbi   (   R   R   R   (   R   (    (    s5   /home/chrism/projects/webob/tests/test_acceptparse.pyt    test_init_accept_invalid_q_value6   s    c          C   s*   t  d ƒ }  t |  ƒ d j p t ‚ d  S(   Ns	   text/htmls   <Accept('text/html')>(   R   t   reprR   (   R   (    (    s5   /home/chrism/projects/webob/tests/test_acceptparse.pyt   test_accept_repr<   s    c          C   s*   t  d ƒ }  t |  ƒ d j p t ‚ d  S(   Ns	   text/html(   R   t   strR   (   R   (    (    s5   /home/chrism/projects/webob/tests/test_acceptparse.pyt   test_accept_str@   s    c           C   sD   t  d ƒ i d g ƒ d  j p t ‚ d t  d ƒ j p t ‚ d  S(   Ns
   bar, *;q=0t   foos   *;q=0(   R   t
   best_matcht   NoneR   (    (    (    s5   /home/chrism/projects/webob/tests/test_acceptparse.pyt   test_zero_qualityD   s    &c          C   s0   d }  t  |  ƒ } t | ƒ |  j p t ‚ d  S(   Ns   text/html;q=0.5(   R   R   R   (   t   valueR   (    (    s5   /home/chrism/projects/webob/tests/test_acceptparse.pyt   test_accept_str_with_q_not_1I   s    c          C   s0   d }  t  |  ƒ } t | ƒ |  j p t ‚ d  S(   Ns   text/html;q=0.5, foo/bar(   R   R   R   (   R$   R   (    (    s5   /home/chrism/projects/webob/tests/test_acceptparse.pyt%   test_accept_str_with_q_not_1_multipleN   s    c          C   s^   t  d ƒ t  d ƒ }  t |  ƒ d j p t ‚ |  t  d ƒ 7}  t |  ƒ d j p t ‚ d  S(   Ns	   text/htmls   foo/bars   text/html, foo/bars   bar/baz;q=0.5s!   text/html, foo/bar, bar/baz;q=0.5(   R   R   R   (   R   (    (    s5   /home/chrism/projects/webob/tests/test_acceptparse.pyt   test_accept_add_other_acceptS   s    c          C   sˆ   t  d ƒ }  |  d g 7}  t |  ƒ d j p t ‚ |  d g 7}  t |  ƒ d j p t ‚ |  d d	 g 7}  t |  ƒ d
 j p t ‚ d  S(   Ns	   text/htmls   foo/bari   s   text/html, foo/bars   bar/bazg      à?s!   text/html, foo/bar, bar/baz;q=0.5s	   she/bangss	   the/houses7   text/html, foo/bar, bar/baz;q=0.5, she/bangs, the/house(   s   foo/bari   (   s   bar/bazg      à?(   R   R   R   (   R   (    (    s5   /home/chrism/projects/webob/tests/test_acceptparse.pyt$   test_accept_add_other_list_of_tuplesY   s    c          C   sf   t  d ƒ }  |  h d d 67}  t |  ƒ d j p t ‚ |  h d d 67}  t |  ƒ d j p t ‚ d  S(   Ns	   text/htmli   s   foo/bars   text/html, foo/barg      à?s   bar/bazs!   text/html, foo/bar, bar/baz;q=0.5(   R   R   R   (   R   (    (    s5   /home/chrism/projects/webob/tests/test_acceptparse.pyt   test_accept_add_other_dictc   s
    c          C   s4   t  d ƒ }  |  d 7}  t |  ƒ d j p t ‚ d  S(   Ns	   text/htmlt    (   R   R   R   (   R   (    (    s5   /home/chrism/projects/webob/tests/test_acceptparse.pyt   test_accept_add_other_empty_strj   s    
c          C   s4   t  d ƒ }  |  d 7}  t |  ƒ d j p t ‚ d  S(   NR*   s	   text/html(   R   R   R   (   R   (    (    s5   /home/chrism/projects/webob/tests/test_acceptparse.pyt'   test_accept_with_no_value_add_other_stro   s    
c          C   s$   t  d ƒ }  d |  j p t ‚ d  S(   Ns	   text/html(   R   R   (   R   (    (    s5   /home/chrism/projects/webob/tests/test_acceptparse.pyt   test_containst   s    c          C   s$   t  d ƒ }  d |  j p t ‚ d  S(   Ns	   text/htmls   foo/bar(   R   R   (   R   (    (    s5   /home/chrism/projects/webob/tests/test_acceptparse.pyt   test_contains_notx   s    c          C   sV   t  d ƒ }  |  i d ƒ d j p t ‚ t  d ƒ }  |  i d ƒ d j p t ‚ d  S(   Ns	   text/htmli   s   text/html;q=0.5g      à?(   R   t   qualityR   (   R   (    (    s5   /home/chrism/projects/webob/tests/test_acceptparse.pyt   test_quality|   s    c          C   s-   t  d ƒ }  |  i d ƒ d  j p t ‚ d  S(   Ns	   text/htmls   foo/bar(   R   R/   R"   R   (   R   (    (    s5   /home/chrism/projects/webob/tests/test_acceptparse.pyt   test_quality_not_found‚   s    c          C   s²   t  d ƒ }  |  i d d g ƒ d j p t ‚ |  i d d g ƒ d j p t ‚ |  i d d g ƒ d j p t ‚ |  i d d	 g ƒ d j p t ‚ t t |  i d g ƒ d  S(
   Ns   text/html, foo/bars	   text/htmls   foo/barg      à?gš™™™™™Ù?s   text/*(   s   foo/barg      à?(   s   foo/barg      à?(   s	   text/htmlgš™™™™™Ù?(   R   R!   R   R	   t
   ValueError(   R   (    (    s5   /home/chrism/projects/webob/tests/test_acceptparse.pyt   test_best_match†   s    ##		c          C   sb   t  d ƒ }  |  i d d g ƒ d j p t ‚ t  d ƒ }  |  i d d g ƒ d j p t ‚ d  S(   Ns   text/html, foo/bar;q=0.5s	   text/htmls   foo/bars   text/html;q=0.5, foo/bar(   R   R!   R   (   R   (    (    s5   /home/chrism/projects/webob/tests/test_acceptparse.pyt    test_best_match_with_one_lower_q   s    #c          C   s°   t  d ƒ }  |  i d d g ƒ d j p t ‚ t  d ƒ }  d t |  ƒ j p t ‚ d t |  ƒ j p t ‚ d t |  ƒ j p t ‚ |  i d d g ƒ d j p t ‚ d  S(	   Ns*   text/html, foo/bar;q=0.55, baz/gort;q=0.59s	   text/htmls   foo/bars3   text/html;q=0.5, foo/bar;q=0.586, baz/gort;q=0.5966s   baz/gort;q=0.597s   foo/bar;q=0.586s   text/html;q=0.5s   baz/gort(   R   R!   R   R   (   R   (    (    s5   /home/chrism/projects/webob/tests/test_acceptparse.pyt   test_best_match_with_complex_q—   s    #c          C   sR   x1 d d d g D]  }  d t  |  ƒ j p t ‚ q Wd t  d ƒ j p t ‚ d  S(   NR   s	   text/htmls	   TEXT/HTMLs   foo/bar(   R   R   (   t   mask(    (    s5   /home/chrism/projects/webob/tests/test_acceptparse.pyt   test_accept_match¡   s     c          C   s„   x@ d
 d d d d d g D]& \ }  } | t  |  ƒ j p t ‚ q Wx: d d d d g D]& \ }  } | t  |  ƒ j p t ‚ qV Wd  S(   NR   R   t   DAR   s   en-gbt   en_GBs   en-uss   fr-frt   fr(   R   s   da(   s   daR8   (   s   ens   en-gb(   s   en-gbs   en-gb(   s   en-gbs   en(   s   en-gbs   en_GB(   s   en-gbs   en-us(   s   en-gbs   fr-fr(   s   en-gbs   fr(   s   ens   fr-fr(   R   R   (   R6   t   lang(    (    s5   /home/chrism/projects/webob/tests/test_acceptparse.pyt   test_accept_match_lang¦   s       c          C   sf   t  ƒ  }  t t |  ƒ d ƒ |  p t ‚ t |  ƒ d j p t ‚ |  i d ƒ d j p t ‚ d  S(   Ns/   <NilAccept: <class 'webob.acceptparse.Accept'>>R*   t   dummyi    (   R   R   R   R   R   R/   (   t	   nilaccept(    (    s5   /home/chrism/projects/webob/tests/test_acceptparse.pyt   test_nilº   s    	c          C   s§   t  ƒ  }  t d ƒ } |  | | j p t ‚ |  |  } t | | i ƒ p t ‚ | i d j p t ‚ |  d } t | | i ƒ p t ‚ | i d j p t ‚ d  S(   Ns	   text/htmlR*   R    (   R   R   R   t
   isinstancet	   __class__t   header_value(   R>   R   t
   new_accept(    (    s5   /home/chrism/projects/webob/tests/test_acceptparse.pyt   test_nil_addÃ   s    	

c          C   sR   t  ƒ  }  t d ƒ } t d |  | i ƒ p t ‚ d |  i d j p t ‚ d  S(   Ns	   text/htmlR    (   R   R   R@   RA   R   RB   (   R>   R   (    (    s5   /home/chrism/projects/webob/tests/test_acceptparse.pyt   test_nil_raddÎ   s    	c          C   s6   t  ƒ  }  t d ƒ } |  i | ƒ | j p t ‚ d  S(   Ns	   text/html(   R   R   t   __radd__R   (   R>   R   (    (    s5   /home/chrism/projects/webob/tests/test_acceptparse.pyt   test_nil_radd_masterclassÖ   s    	c          C   s!   t  ƒ  }  d |  j p t ‚ d  S(   Nt   anything(   R   R   (   R>   (    (    s5   /home/chrism/projects/webob/tests/test_acceptparse.pyt   test_nil_containsÜ   s    	c          C   s  t  ƒ  }  |  i d d g ƒ d j p t ‚ |  i d d g ƒ d j p t ‚ |  i d	 d
 g ƒ d j p t ‚ |  i d d g ƒ d j p t ‚ |  i d d g d t ƒd j p t ‚ |  i d d g d t ƒd j p t ‚ |  i g  d d ƒd j p t ‚ d  S(   NR    t   bari   g      à?t   default_matcht   fallback(   s   fooi   (   s   barg      à?(   s   foog      à?(   s   bari   (   s   foog      à?(   s   foog      à?(   s   foog      à?(   R   R!   R   t   Truet   False(   R>   (    (    s5   /home/chrism/projects/webob/tests/test_acceptparse.pyt   test_nil_best_matchà   s    	####c           C   s   d t  ƒ  j p t ‚ d  S(   Ns
   text/plain(   R   R   (    (    (    s5   /home/chrism/projects/webob/tests/test_acceptparse.pyt   test_noaccept_containsî   s    c          C   s.  t  d ƒ }  |  i d g j p t ‚ t  d ƒ }  |  i d d g j p t ‚ t  d ƒ }  |  i d g j p t ‚ t  d ƒ }  |  i d g j p t ‚ t  d ƒ }  |  i g  j p t ‚ t  d	 ƒ }  |  i g  j p t ‚ t  d
 ƒ }  |  i g  j p t ‚ t  d ƒ }  |  i d g j p t ‚ d  S(   Ns	   image/jpgi   s   image/png, image/jpg;q=0.5s	   image/pngg      à?s   image, image/jpg;q=0.5s   */*s   */pngs	   image/pn*s	   imag*/pngs   image/*(   s	   image/jpgi   (   s	   image/pngi   (   s	   image/jpgg      à?(   s	   image/jpgg      à?(   s   */*i   (   s   image/*i   (   R   R   R   (   t
   mimeaccept(    (    s5   /home/chrism/projects/webob/tests/test_acceptparse.pyt   test_mime_initô   s     c          C   sE   t  d ƒ }  |  i ƒ  p t ‚ t  d ƒ }  |  i ƒ  p t ‚ d  S(   Ns	   image/jpgs   image/jpg, text/html(   R   t   accept_htmlR   (   RQ   (    (    s5   /home/chrism/projects/webob/tests/test_acceptparse.pyt   test_accept_html  s    c          C   s   t  d ƒ }  |  i d d ƒ p t ‚ |  i d d ƒ p t ‚ |  i d d ƒ p t ‚ |  i d d ƒ p t ‚ t t |  i d d ƒ d  S(   Ns	   image/jpgs   image/*s   */*s	   text/html(   R   t   _matchR   R	   R2   (   RQ   (    (    s5   /home/chrism/projects/webob/tests/test_acceptparse.pyt
   test_match  s    c          C   s0   t  d ƒ }  |  i d g ƒ d j p t ‚ d  S(   Ns   text/html, *; q=.2, */*; q=.2s   application/json(   R   R!   R   (   RQ   (    (    s5   /home/chrism/projects/webob/tests/test_acceptparse.pyt   test_accept_json  s    c          C   s$   t  d ƒ }  |  i ƒ  p t ‚ d S(   s~   3.7 Media Types
           [...]
           The type, subtype, and parameter attribute names are case-
           insensitive.s	   text/HtMlN(   R   RS   R   (   RQ   (    (    s5   /home/chrism/projects/webob/tests/test_acceptparse.pyt   test_accept_mixedcase  s    c          C   sv   t  d ƒ }  |  i d g ƒ d j p t ‚ |  i d g ƒ d j p t ‚ |  i d d d g ƒ d j p t ‚ d  S(   Ns0   image/jpg; q=.2, Image/pNg; Q=.4, image/*; q=.05s	   Image/JpGs
   image/Tiffs	   image/PnGs	   image/jpg(   R   R!   R   (   RQ   (    (    s5   /home/chrism/projects/webob/tests/test_acceptparse.pyt   test_match_mixedcase   s      c          C   s0   t  d ƒ }  |  i d	 d
 d g j p t ‚ d S(   sk   The relative-quality-factor "q" parameter is defined as an exact string
       in "14.1 Accept" BNF grammars0   image/jpg; q=.4, Image/pNg; Q=.2, image/*; q=.05s	   image/jpggš™™™™™Ù?s	   image/pngi   s   image/*gš™™™™™©?N(   s	   image/jpggš™™™™™Ù?(   s	   image/pngi   (   s   image/*gš™™™™™©?(   R   R   R   (   RQ   (    (    s5   /home/chrism/projects/webob/tests/test_acceptparse.pyt   test_match_uppercase_q&  s    c          C   sX   t  d d ƒ }  t i d d h d d 6ƒ} |  i | d ƒ t |  i | ƒ i d ƒ d  S(   Ns   Accept-Charsets   14.2t   /t   environt   envvalt   envkeyt   val(   R   R    t   blankt   fsetR   t   fgetRB   (   t   desct   req(    (    s5   /home/chrism/projects/webob/tests/test_acceptparse.pyt   test_accept_property_fget.  s    c          C   s>   t  d d ƒ }  t i d ƒ } t t |  i | ƒ ƒ t ƒ d  S(   Ns   Accept-Charsets   14.2R[   (   R   R    R`   R   t   typeRb   R   (   Rc   Rd   (    (    s5   /home/chrism/projects/webob/tests/test_acceptparse.pyt   test_accept_property_fget_nil4  s    c          C   sX   t  d d ƒ }  t i d d h d d 6ƒ} |  i | d ƒ t |  i | ƒ i d ƒ d  S(   Ns   Accept-Charsets   14.2R[   R\   R]   R^   t   baz(   R   R    R`   Ra   R   Rb   RB   (   Rc   Rd   (    (    s5   /home/chrism/projects/webob/tests/test_acceptparse.pyt   test_accept_property_fset9  s    c          C   sB   t  i d d h d d 6ƒ}  d d g |  _ t |  i i d ƒ d  S(   NR[   R\   R]   R^   s   utf-8s   latin-11s   utf-8, latin-11, iso-8859-1(   R    R`   t   accept_charsetR   RB   (   Rd   (    (    s5   /home/chrism/projects/webob/tests/test_acceptparse.pyt%   test_accept_property_fset_acceptclass?  s    c          C   sˆ   t  d d ƒ }  t i d d h d d 6ƒ} |  i | d ƒ |  i | ƒ i d j p t ‚ |  i | ƒ t t	 |  i | ƒ ƒ t
 ƒ d  S(   Ns   Accept-Charsets   14.2R[   R\   R]   R^   R_   (   R   R    R`   Ra   Rb   RB   R   t   fdelR   Rf   R   (   Rc   Rd   (    (    s5   /home/chrism/projects/webob/tests/test_acceptparse.pyt   test_accept_property_fdelD  s     N(<   t   webob.requestR    t   webob.acceptparseR   R   R   R   R   R   R   t
   nose.toolsR   R	   R   R   R   R   R   R   R   R   R   R   R   R#   R%   R&   R'   R(   R)   R+   R,   R-   R.   R0   R1   R3   R4   R5   R7   R<   R?   RD   RE   RG   RI   RO   RP   RR   RT   RV   RW   RX   RY   RZ   Re   Rg   Ri   Rk   Rm   (    (    (    s5   /home/chrism/projects/webob/tests/test_acceptparse.pyt   <module>   sn   																	
								
		
																					