ó
`¾Tc           @   s   d  Z  d d l Z d d l m Z d d l m Z d d l m Z d d l m	 Z	 m
 Z
 m Z d e f d „  ƒ  YZ d	 „  Z d S(
   s®   
    werkzeug.testsuite.urls
    ~~~~~~~~~~~~~~~~~~~~~~~

    URL helper tests.

    :copyright: (c) 2014 by Armin Ronacher.
    :license: BSD, see LICENSE for more details.
iÿÿÿÿN(   t   WerkzeugTestCase(   t   OrderedMultiDict(   t   urls(   t	   text_typet   NativeStringIOt   BytesIOt   URLsTestCasec           B   s1  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 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" RS(!   c         C   s]   t  j d ƒ } |  j | j d d ƒ t  j d ƒ ƒ |  j | j d d ƒ t  j d ƒ ƒ d  S(   Ns"   http://de.wikipedia.org/wiki/Trollt   querys   foo=bars*   http://de.wikipedia.org/wiki/Troll?foo=bart   schemet   httpss#   https://de.wikipedia.org/wiki/Troll(   R   t	   url_parset   assert_strict_equalt   replace(   t   selft   url(    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/urls.pyt   test_replace   s
    c         C   s<  |  j  t j d ƒ d ƒ |  j  t j t j d ƒ ƒ d ƒ |  j  t j d ƒ d ƒ |  j  t j d ƒ d ƒ |  j  t j d ƒ d ƒ |  j  t j d ƒ d ƒ |  j  t j i d  d	 6d d
 6ƒ d ƒ |  j  t j i d  d 6d d 6ƒ d ƒ |  j  t j d ƒ d ƒ |  j  t j d ƒ d ƒ |  j  t j d ƒ d ƒ d  S(   Nu   Ã¶Ã¤Ã¼s   %C3%B6%C3%A4%C3%BCu   #%="Ã¶s   foo bars   foo+baru   foo bars	   foo%2Bbaru   foo+bart   at   bs	   b=foo+baru   au   bu3   http://de.wikipedia.org/wiki/Elf (BegriffsklÃ¤rung)s9   http://de.wikipedia.org/wiki/Elf%20(Begriffskl%C3%A4rung)i*   t   42s   ÿs   %FF(	   R   R   t	   url_quotet   url_unquotet   url_quote_plust   url_unquote_plust
   url_encodet   Nonet   url_fix(   R   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/urls.pyt   test_quoting   s    "''c         C   s2   |  j  t j t j d d d ƒd d  ƒd ƒ d  S(   Nu   #%="Ã¶t   charsett   latin1s   #%="ö(   R   R   R   R   R   (   R   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/urls.pyt   test_bytes_unquoting+   s    c         C   sÉ   t  j d ƒ } |  j | d d ƒ |  j | d d ƒ |  j | d d ƒ t  j d d	 d
 ƒ} |  j | d d ƒ |  j | d d ƒ |  j | d d ƒ t  j d d t ƒ} |  j | d d ƒ d  S(   Ns   foo=42&bar=23&uni=H%C3%A4nselt   foou   42t   baru   23t   uniu   HÃ¤nsels   foo=42;bar=23;uni=H%C3%A4nselt	   separatort   ;s   %C3%9Ch=H%C3%A4nselt   decode_keysu   Ãœh(   R   t
   url_decodeR   t   True(   R   t   x(    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/urls.pyt   test_url_decoding/   s    c         C   s^   t  j d d d  ƒ} |  j | d d ƒ |  j | d d ƒ |  j | d d j d	 ƒ ƒ d  S(
   Ns   foo=42&bar=23&uni=H%C3%A4nselR   R   R   R   t   23R    u   HÃ¤nsels   utf-8(   R   R$   R   R   t   encode(   R   R&   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/urls.pyt   test_url_bytes_decoding=   s    c            sÈ   d d } d d } d | | | f j  d ƒ } t j t | ƒ d t | ƒ d t ƒ‰  |  j t ˆ  ƒ d	 | f ƒ |  j t ˆ  ƒ d
 | f ƒ |  j t ˆ  ƒ d | f ƒ |  j t	 ‡  f d †  ƒ d  S(   Nu   ai † u   bi  s   a=%s&b=%s&c=%st   asciit   limitt   return_iteratorR   R   t   cc              s
   t  ˆ  ƒ S(   N(   t   next(    (   t   gen(    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/urls.pyt   <lambda>L   s    (
   R)   R   t   url_decode_streamR   t   lenR%   R   R/   t   assert_raisest   StopIteration(   R   t   item1t   item2t   string(    (   R0   s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/urls.pyt   test_streamed_url_decodingC   s    

	c         C   s   |  j  t t j d ƒ d  S(   Nt   testing(   R4   t	   TypeErrorR   R2   (   R   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/urls.pyt!   test_stream_decoding_string_failsN   s    c         C   sƒ   |  j  t j i d d 6ƒ d ƒ i d d 6d d 6d d 6} |  j  t j | d	 t ƒd
 ƒ |  j  t j | d	 t d d ƒd ƒ d  S(   Ns   bar 45R   s
   foo=bar+45i   i   R   u   HÃ¤nselt   blaht   sorts   bar=23&blah=H%C3%A4nsel&foo=1R!   u   ;s   bar=23;blah=H%C3%A4nsel;foo=1(   R   R   R   R%   (   R   t   d(    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/urls.pyt   test_url_encodingQ   s     c         C   sŒ   |  j  t j i d d 6d d 6d d 6d d 6d t d d	 „  ƒd
 ƒ |  j  t j i d d 6d d 6d d 6d d 6d t d d „  ƒd ƒ d  S(   Ni*   u   ai   u   bi   i   R>   t   keyc         S   s   t  |  d ƒ S(   Ni    (   R   (   t   i(    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/urls.pyR1   Y   s    s   1=1&2=2&a=42&b=23u   Ai   u   Bi   R   c         S   s   |  d j  ƒ  |  d S(   Ni    (   t   lower(   R&   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/urls.pyR1   [   s    s   A=1&a=2&B=3&b=4(   R   R   R   R%   (   R   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/urls.pyt   test_sorted_url_encodeW   s    .4c            s5  t  ƒ  } t j i d d 6| ƒ |  j | j ƒ  d ƒ i d d 6d d 6d d 6} t  ƒ  } t j | | d	 t ƒ|  j | j ƒ  d
 ƒ t  ƒ  } t j | | d	 t d d ƒ|  j | j ƒ  d ƒ t j | d	 t ƒ‰  |  j t ˆ  ƒ d ƒ |  j t ˆ  ƒ d ƒ |  j t ˆ  ƒ d ƒ |  j t ‡  f d †  ƒ d  S(   Ns   bar 45R   s
   foo=bar+45i   i   R   u   HÃ¤nselR=   R>   s   bar=23&blah=H%C3%A4nsel&foo=1R!   u   ;s   bar=23;blah=H%C3%A4nsel;foo=1s   bar=23s   blah=H%C3%A4nsels   foo=1c              s
   t  ˆ  ƒ S(   N(   R/   (    (   R0   (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/urls.pyR1   n   s    (	   R   R   t   url_encode_streamR   t   getvalueR%   R/   R4   R5   (   R   t   outR?   (    (   R0   s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/urls.pyt   test_streamed_url_encoding]   s    			c         C   sB   t  j d ƒ } |  j | d ƒ t  j d ƒ } |  j | d ƒ d  S(   Nu3   http://de.wikipedia.org/wiki/Elf (BegriffsklÃ¤rung)s9   http://de.wikipedia.org/wiki/Elf%20(Begriffskl%C3%A4rung)s   http://just.a.test/$-_.+!*'(),(   R   R   t   assert_line_equalt   assert_equal(   R   R&   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/urls.pyt   test_url_fixingp   s    c         C   sB   t  j d ƒ } |  j | d ƒ t  j d ƒ } |  j | d ƒ d  S(   Ns   http://example.com/?foo=%2f%2fs`   http://acronyms.thefreedictionary.com/Algebraic+Methods+of+Solving+the+Schr%C3%B6dinger+Equation(   R   R   RI   RJ   (   R   R&   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/urls.pyt   test_url_fixing_qsw   s    c         C   sÌ   |  j  t j d ƒ d ƒ |  j  t j d ƒ d ƒ |  j  t j d ƒ d ƒ |  j  t j d ƒ d ƒ |  j  t j d ƒ d ƒ |  j  t j d ƒ d ƒ |  j  t j d ƒ d ƒ |  j  t j d	 ƒ d
 ƒ d  S(   Ns   http://xn--n3h.net/u   http://â˜ƒ.net/s4   http://%C3%BCser:p%C3%A4ssword@xn--n3h.net/p%C3%A5thu$   http://Ã¼ser:pÃ¤ssword@â˜ƒ.net/pÃ¥ths!   http://test.com/%3Fmeh?foo=%26%2Fu!   http://test.com/%3Fmeh?foo=%26%2Fs   /foou   /foou   http://fÃ¶Ã¶.com:8080/bam/bazs"   http://xn--f-1gaa.com:8080/bam/baz(   R   R   t
   uri_to_irit
   iri_to_uri(   R   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/urls.pyt   test_iri_support~   s    c         C   sU   |  j  t j d ƒ d ƒ |  j  t j d ƒ d ƒ |  j  t j d d t ƒd ƒ d  S(   Nu   magnet:?foo=bars   magnet:?foo=baru   itms-service://?foo=bars   itms-service:?foo=bart   safe_conversions   itms-service://?foo=bar(   R   R   RN   R%   (   R   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/urls.pyt   test_iri_safe_conversion”   s    c         C   sK   d } d } |  j  t j | ƒ | ƒ |  j  t j t j | ƒ ƒ | ƒ d  S(   Ns2   http://xn--f-1gaa.com/%2F%25?q=%C3%B6&x=%3D%25#%25u)   http://fÃ¶Ã¶.com/%2F%25?q=Ã¶&x=%3D%25#%25(   R   R   RM   RN   (   R   t   urit   iri(    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/urls.pyt   test_iri_safe_quoting   s    c         C   sv   t  ƒ  } | j d d ƒ | j d d ƒ | j d d ƒ | j d d ƒ | j d d ƒ |  j t j | ƒ d ƒ d  S(	   NR   i   i   i   R   i    i   s   foo=1&foo=2&foo=3&bar=0&foo=4(   R   t   addRJ   R   R   (   R   R?   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/urls.pyt   test_ordered_multidict_encoding£   s    	c         C   s6   t  ƒ  } | j d d ƒ |  j t j | ƒ d ƒ d  S(   Ns   2013-10-10T23:26:05.657975+0000sK   2013-10-10T23%3A26%3A05.657975%2B0000=2013-10-10T23%3A26%3A05.657975%2B0000(   R   RU   RJ   R   R   (   R   R?   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/urls.pyt   test_multidict_encoding¬   s    	c            s,  t  j d ƒ ‰  |  j ˆ  d ƒ d ƒ |  j ˆ  j d ƒ d ƒ |  j ˆ  j d d d ƒd ƒ |  j ˆ  j d d	 d ƒd
 ƒ |  j ˆ  j d i d d 6ƒ d
 ƒ |  j t ‡  f d †  ƒ t  j d ƒ ‰  |  j ˆ  j d ƒ d ƒ |  j t ˆ  j i d d 6d d ƒt  j d ƒ ‰  |  j ˆ  d ƒ d ƒ d  S(   Ns   http://www.example.com/u   foos   http://www.example.com/foou   bars   http://www.example.com/foo/barR&   i*   s#   http://www.example.com/foo/bar?x=42t   class_s'   http://www.example.com/foo/bar?class=42u   classc              s   ˆ  j  S(   N(   t   __blah__(    (   R&   (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/urls.pyR1   ¸   s    R=   s   blah/foo/bari   t    R   (   R   t   HrefR   R   R4   t   AttributeErrorR;   (   R   (    (   R&   s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/urls.pyt	   test_href±   s    ##c         C   sU   t  j d ƒ } |  j | d ƒ d ƒ |  j | d ƒ d ƒ |  j | j ƒ  d ƒ d  S(   Nu   testu   foo:baru   test/foo:baru   http://example.com/u   test/http://example.com/u   test/a(   R   R[   RI   R   (   R   R&   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/urls.pyt   test_href_url_joinÂ   s    c         C   s—   t  j d ƒ } |  j | d ƒ d ƒ |  j | d ƒ d ƒ |  j | d ƒ d ƒ |  j | d ƒ d ƒ |  j | d	 ƒ d ƒ |  j | d
 ƒ d ƒ d  S(   Ns   http://www.blagga.com/1/2/3s   ../foos   http://www.blagga.com/1/2/foos	   ../../foos   http://www.blagga.com/1/foos   ../../../foos   http://www.blagga.com/foos   ../../../../foos   ../../../../../foos   ../../../../../../foo(   R   R[   R   (   R   t	   base_href(    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/urls.pyt   test_href_past_rootÈ   s    c         C   s<   |  j  t j d ƒ d ƒ |  j t t j d ƒ ƒ t ƒ d  S(   Nu   m(   R   R   R   t	   assert_ist   typeR   (   R   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/urls.pyt   test_url_unquote_plus_unicodeÑ   s    c         C   s9   t  j d ƒ } |  j | d ƒ |  j t | ƒ t ƒ d  S(   Nu   /fooÂs
   /foo%C2%8F(   R   RN   R   Ra   Rb   t   str(   R   t   rv(    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/urls.pyt   test_quoting_of_local_urlsÖ   s    c         C   s  t  j d ƒ } |  j | j d ƒ |  j | j d ƒ |  j | j d ƒ |  j | j d ƒ |  j | j d ƒ |  j | j d ƒ |  j | j	 d ƒ |  j
 | j d	 ƒ |  j | j d
 ƒ |  j | j d ƒ |  j | j d ƒ t  j d ƒ } |  j | j	 d ƒ |  j | j d ƒ d  S(   Ns*   http://foo%3a:bar%3a@[::1]:80/123?x=y#fragt   https   foo%3a:bar%3au   foo:u   bar:s   foo%3as   bar%3as   ::1iP   s   /123s   x=yt   fragu   http://â˜ƒ.com/u   â˜ƒ.coms   xn--n3h.com(   R   R
   R   R   t   autht   usernamet   passwordt   raw_usernamet   raw_passwordt   hostRJ   t   portt   pathR   t   fragmentt
   ascii_host(   R   Re   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/urls.pyt   test_url_attributesÛ   s    c         C   sä   t  j d ƒ } |  j | j d ƒ |  j | j d ƒ |  j | j d ƒ |  j | j d ƒ |  j | j d ƒ |  j | j d ƒ |  j | j	 d ƒ |  j
 | j d	 ƒ |  j | j d
 ƒ |  j | j d ƒ |  j | j d ƒ d  S(   Ns*   http://foo%3a:bar%3a@[::1]:80/123?x=y#fragRg   s   foo%3a:bar%3au   foo:u   bar:s   foo%3as   bar%3as   ::1iP   s   /123s   x=yRh   (   R   R
   R   R   Ri   Rj   Rk   Rl   Rm   Rn   RJ   Ro   Rp   R   Rq   (   R   Re   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/urls.pyt   test_url_attributes_bytesí   s    c         C   s   |  j  t j d d ƒ d ƒ |  j  t j d d ƒ d ƒ |  j  t j d d ƒ d ƒ |  j  t j d d ƒ d ƒ |  j  t j d d	 ƒ d
 ƒ d  S(   Ns   /foos   /bars   http://example.com/foos   http://example.com/bars   file:///tmp/s	   test.htmls   file:///tmp/test.htmls   file:///tmp/xs   ../../../x.htmls   file:///x.html(   R   R   t   url_join(   R   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/urls.pyt   test_url_joiningû   s    c         C   s<   d j  d ƒ } t j | d d ƒ} |  j | d d ƒ d  S(   Nu   foo=ì •ìƒì²˜ë¦¬s   euc-krR   R   u   ì •ìƒì²˜ë¦¬(   R)   R   R$   R   (   R   t   refR&   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/urls.pyt   test_partial_unencoded_decode  s    c         C   s2   d } t  j | ƒ } |  j t  j | ƒ | ƒ d  S(   Nu   http://www.idempoten.ce(   R   RN   RJ   (   R   RR   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/urls.pyt&   test_iri_to_uri_idempotence_ascii_only  s    c         C   s2   d } t  j | ƒ } |  j t  j | ƒ | ƒ d  S(   Nu   http://â˜ƒ/â˜ƒ(   R   RN   RJ   (   R   RR   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/urls.pyt%   test_iri_to_uri_idempotence_non_ascii  s    c         C   s2   d } t  j | ƒ } |  j t  j | ƒ | ƒ d  S(   Ns   http://www.idempoten.ce(   R   RM   RJ   (   R   RR   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/urls.pyt&   test_uri_to_iri_idempotence_ascii_only  s    c         C   s2   d } t  j | ƒ } |  j t  j | ƒ | ƒ d  S(   Ns   http://xn--n3h/%E2%98%83(   R   RM   RJ   (   R   RR   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/urls.pyt%   test_uri_to_iri_idempotence_non_ascii  s    c         C   s2   d } t  j | ƒ } |  j t  j | ƒ | ƒ d  S(   Nu   http://fÃ¶Ã¶.com/(   R   RN   RJ   RM   (   R   RS   RR   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/urls.pyt   test_iri_to_uri_to_iri  s    c         C   s2   d } t  j | ƒ } |  j t  j | ƒ | ƒ d  S(   Ns   http://xn--f-rgao.com/%C3%9E(   R   RM   RJ   RN   (   R   RR   RS   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/urls.pyt   test_uri_to_iri_to_uri$  s    c         C   só   d } d } d d d d d d g } xÈ | D]À } |  j  t j | ƒ | ƒ |  j  t j | ƒ | ƒ |  j  t j t j | ƒ ƒ | ƒ |  j  t j t j | ƒ ƒ | ƒ |  j  t j t j | ƒ ƒ | ƒ |  j  t j t j | ƒ ƒ | ƒ q+ Wd  S(   Ns3   http://xn--f-rgao.com/%E2%98%90/fred?utf8=%E2%9C%93u"   http://fÃ¶Ã±.com/â˜/fred?utf8=âœ“u'   http://xn--f-rgao.com/â˜/fred?utf8=âœ“u3   http://xn--f-rgao.com/%E2%98%90/fred?utf8=%E2%9C%93u(   http://fÃ¶Ã±.com/â˜/fred?utf8=%E2%9C%93s'   http://xn--f-rgao.com/â˜/fred?utf8=âœ“(   RJ   R   RM   RN   (   R   RR   RS   t   testst   test(    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/urls.pyt   test_uri_iri_normalization)  s    	"""(#   t   __name__t
   __module__R   R   R   R'   R*   R9   R<   R@   RD   RH   RK   RL   RO   RQ   RT   RV   RW   R]   R^   R`   Rc   Rf   Rs   Rt   Rv   Rx   Ry   Rz   R{   R|   R}   R~   R   (    (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/urls.pyR      sB   																																			c          C   s&   t  j ƒ  }  |  j t  j t ƒ ƒ |  S(   N(   t   unittestt	   TestSuitet   addTestt	   makeSuiteR   (   t   suite(    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/urls.pyRˆ   ?  s    (   t   __doc__R„   t   werkzeug.testsuiteR    t   werkzeug.datastructuresR   t   werkzeugR   t   werkzeug._compatR   R   R   R   Rˆ   (    (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/urls.pyt   <module>
   s   ÿ ,