ó
O'—^c           @@ só  d  d l  m Z m Z d  d l Z d  d l m Z d  d l m Z m Z m	 Z	 d  d l
 m Z m Z d  d l m Z m Z m Z m Z m Z m Z m Z m Z m Z m Z m Z m Z m Z m Z d  d l m Z d d	 l m Z m  Z  m! Z! m" Z" m# Z# d
 Z$ e$ j% d ƒ Z& d Z' e' j% d ƒ Z( e' j% d ƒ Z) i d d 6d d 6d d 6d d 6d d d d g d 6Z* d Z+ e j e* d e ƒZ, d Z- e. e* ƒ Z/ d e/ d <e e d ƒ ƒ Z0 d  „  Z1 e j d! d" „  d# „  d$ d ƒ d% e f d& „  ƒ  YZ2 d S('   i    (   t   absolute_importt   unicode_literalsN(   t	   b64decode(   t   ContentDisallowedt   EncodeErrort   DecodeError(   t   text_tt   bytes_t(   t   registryt   registert   SerializerNotInstalledt
   raw_encodet   register_yamlt   register_msgpackt   dumpst   loadst   picklet   pickle_protocolt
   unregistert   register_picklet   enable_insecure_serializerst   disable_insecure_serializers(   t   str_to_bytesi   (   t   Caset   callt   mask_modulest   patcht   skip_if_not_moduleu	   abcdÃ©è‘£u   utf-8u   abcdÃ©u   latin-1u+   The quick brown fox jumps over the lazy dogu   stringi
   u   intgñÔÈSû!	@u   floatu-   ThÃ© quick brown fox jumps over thÃ© lazy dogu   unicodeu   georgeu   jerryu   elaineu   cosmou   listuÕ   {"int": 10, "float": 3.1415926500000002, "list": ["george", "jerry", "elaine", "cosmo"], "string": "The quick brown fox jumps over the lazy dog", "unicode": "Th\u00e9 quick brown fox jumps over th\u00e9 lazy dog"}t   protocolu¸   float: 3.1415926500000002
int: 10
list: [george, jerry, elaine, cosmo]
string: The quick brown fox jumps over the lazy dog
unicode: "Th\xE9 quick brown fox jumps over th\xE9 lazy dog"
u)   Th quick brown fox jumps over th lazy doguÔ   haNpbnQKpWZsb2F0y0AJIftTyNTxpGxpc3SUpmdlb3JnZaVqZXJyeaZlbGFpbmWlY29zbW+mc3RyaW5n2gArVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZ6d1bmljb2Rl2gApVGggcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGggbGF6eSBkb2c=c         C@ s   t  j j d |  f ƒ d  S(   Nu   %s
(   t   syst   stderrt   write(   t   m(    (    s@   /tmp/pip-unpacked-wheel-UAnTfW/kombu/tests/test_serialization.pyt   sayG   s    u   testSc         C@ s   |  S(   N(    (   t   s(    (    s@   /tmp/pip-unpacked-wheel-UAnTfW/kombu/tests/test_serialization.pyt   <lambda>K   t    c         C@ s   d S(   Nu   decoded(    (   R"   (    (    s@   /tmp/pip-unpacked-wheel-UAnTfW/kombu/tests/test_serialization.pyR#   K   R$   u   application/testSt   test_Serializationc           B@ sg  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 e d e e f ƒ d „  ƒ Z e d e e f ƒ d „  ƒ Z e d ƒ d „  ƒ Z e d ƒ d „  ƒ Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z e  d ƒ d „  ƒ Z! e  d ƒ d „  ƒ Z" RS(   c         C@ sc   t  j } zH t  j d ƒ |  j d | ƒ | j ƒ  t  j d ƒ |  j d | ƒ Wd  | j ƒ  Xd  S(   Nu   testSu   application/testS(   R   t   _disabled_content_typest   disablet   assertInt   clear(   t   selft   disabled(    (    s@   /tmp/pip-unpacked-wheel-UAnTfW/kombu/tests/test_serialization.pyt   test_disableQ   s    	
c         C@ sd   t  j j d ƒ t  j d ƒ |  j d t  j ƒ t  j j d ƒ t  j d ƒ |  j d t  j ƒ d  S(   Nu   application/jsonu   json(   R   R&   t   addt   enablet   assertNotIn(   R*   (    (    s@   /tmp/pip-unpacked-wheel-UAnTfW/kombu/tests/test_serialization.pyt   test_enable]   s    c      
   C@ s€   t  j } ze t  j d ƒ |  j t ƒ  t d d d d t ƒWd  QXt d d d d t ƒ} |  j | d ƒ Wd  | j	 ƒ  Xd  S(   Nu   testSu   xxdu   application/testSu   utf-8t   forceu   decoded(
   R   R&   R'   t   assertRaisesR
   R   t   Falset   Truet   assertEqualR)   (   R*   R+   t   ret(    (    s@   /tmp/pip-unpacked-wheel-UAnTfW/kombu/tests/test_serialization.pyt   test_loads_when_disablede   s    	c         C@ s   t  d  d d ƒ d  S(   Nu   application/testSu   utf-8(   R   t   None(   R*   (    (    s@   /tmp/pip-unpacked-wheel-UAnTfW/kombu/tests/test_serialization.pyt   test_loads_when_data_is_Noner   s    c         C@ sH   |  j  t t t d d d d ƒƒ |  j  t t t d d d d ƒƒ d  S(   Nt   content_typeu
   plain/textt   content_encodingu   utf-8u   application/datau   latin-1(   R5   t   unicode_stringR   t   unicode_string_as_utf8t   latin_stringt   latin_string_as_latin1(   R*   (    (    s@   /tmp/pip-unpacked-wheel-UAnTfW/kombu/tests/test_serialization.pyt   test_content_type_decodingu   s    		c         C@ sH   |  j  t t d d d d ƒt ƒ |  j t t t d d d d ƒƒ d  S(   NR:   u   application/dataR;   u   binary(   t   assertIsInstanceR   R=   R   R5   (   R*   (    (    s@   /tmp/pip-unpacked-wheel-UAnTfW/kombu/tests/test_serialization.pyt   test_content_type_binary   s    		c         C@ sx   |  j  t t t d d ƒd ƒ |  j  t t t d d ƒd ƒ |  j  t t t ƒ d ƒ |  j  t t t ƒ d ƒ d  S(   Nt
   serializeru   rawiÿÿÿÿ(   R5   R=   R   R<   t   latin_string_as_utf8R>   (   R*   (    (    s@   /tmp/pip-unpacked-wheel-UAnTfW/kombu/tests/test_serialization.pyt   test_content_type_encodingŽ   s    c      	   C@ s¢   t  d ƒ U } t ƒ  | j t j d ƒ t j d ƒ t j d ƒ g ƒ t ƒ  | j _ t ƒ  Wd  QXt  d ƒ - } t d g ƒ | j t j d ƒ g ƒ Wd  QXd  S(   Nu   kombu.serialization.registryu   pickleu   yamlu   msgpack(   R   R   t   assert_has_callsR   R.   t   KeyErrort   side_effect(   R*   R   (    (    s@   /tmp/pip-unpacked-wheel-UAnTfW/kombu/tests/test_serialization.pyt    test_enable_insecure_serializers£   s    c      	   C@ s®   t  d ƒ œ } d d d g | _ t d d g ƒ | j j t d ƒ t d ƒ g ƒ | j j t d ƒ g ƒ t d d  ƒ | j j t d ƒ t d ƒ t d ƒ g ƒ Wd  QXd  S(   Nu   kombu.serialization.registryu   pickleu   yamlu   doomsdayt   allowed(   R   t	   _decodersR   R'   RF   R   R.   R8   (   R*   R   (    (    s@   /tmp/pip-unpacked-wheel-UAnTfW/kombu/tests/test_serialization.pyt!   test_disable_insecure_serializers±   s    "	c         C@ s0   |  j  t ƒ  t t ƒ  g d d ƒWd  QXd  S(   NRC   u   json(   R2   R   R   t   object(   R*   (    (    s@   /tmp/pip-unpacked-wheel-UAnTfW/kombu/tests/test_serialization.pyt   test_reraises_EncodeError¼   s    c      
   C@ s3   |  j  t ƒ  t t ƒ  d d d d ƒWd  QXd  S(   NR:   u   application/jsonR;   u   utf-8(   R2   R   R   RM   (   R*   (    (    s@   /tmp/pip-unpacked-wheel-UAnTfW/kombu/tests/test_serialization.pyt   test_reraises_DecodeErrorÀ   s    c         C@ s&   |  j  t t t d d d d ƒƒ d  S(   NR:   u   application/jsonR;   u   utf-8(   R5   t   py_dataR   t	   json_data(   R*   (    (    s@   /tmp/pip-unpacked-wheel-UAnTfW/kombu/tests/test_serialization.pyt   test_json_loadsÅ   s    	c         C@ sH   |  j  t t t d d ƒd d d d d ƒt t d d d d ƒƒ d  S(   NRC   u   jsoniÿÿÿÿR:   u   application/jsonR;   u   utf-8(   R5   R   R   RP   RQ   (   R*   (    (    s@   /tmp/pip-unpacked-wheel-UAnTfW/kombu/tests/test_serialization.pyt   test_json_dumpsÌ   s    u   msgpackc         C@ sÃ   t  ƒ  t t d d d d ƒ} t j d d k  r¯ xz | j ƒ  D]i \ } } t | t ƒ rm | j ƒ  | | <n  t | t	 t
 f ƒ r? g  | D] } | j ƒ  ^ q‰ | | <q? q? Wn  |  j t | ƒ d  S(   NR:   u   application/x-msgpackR;   u   binaryi    i   (   R   R   t   msgpack_dataR   t   version_infot   itemst
   isinstanceR   t   encodet   listt   tupleR5   t   msgpack_py_data(   R*   t   rest   kt   vt   i(    (    s@   /tmp/pip-unpacked-wheel-UAnTfW/kombu/tests/test_serialization.pyt   test_msgpack_loadsÚ   s    		-c         C@ sO   t  ƒ  |  j t t t d d ƒd d d d d ƒt t d d d d ƒƒ d  S(   NRC   u   msgpackiÿÿÿÿR:   u   application/x-msgpackR;   u   binary(   R   R5   R   R   R[   RT   (   R*   (    (    s@   /tmp/pip-unpacked-wheel-UAnTfW/kombu/tests/test_serialization.pyt   test_msgpack_dumpsë   s    u   yamlc         C@ s-   t  ƒ  |  j t t t d d d d ƒƒ d  S(   NR:   u   application/x-yamlR;   u   utf-8(   R   R5   RP   R   t	   yaml_data(   R*   (    (    s@   /tmp/pip-unpacked-wheel-UAnTfW/kombu/tests/test_serialization.pyt   test_yaml_loadsû   s    	c         C@ sO   t  ƒ  |  j t t t d d ƒd d d d d ƒt t d d d d ƒƒ d  S(   NRC   u   yamliÿÿÿÿR:   u   application/x-yamlR;   u   utf-8(   R   R5   R   R   RP   Rb   (   R*   (    (    s@   /tmp/pip-unpacked-wheel-UAnTfW/kombu/tests/test_serialization.pyt   test_yaml_dumps  s    c         C@ s&   |  j  t t t d d d d ƒƒ d  S(   NR:   u   application/x-python-serializeR;   u   binary(   R5   RP   R   t   pickle_data(   R*   (    (    s@   /tmp/pip-unpacked-wheel-UAnTfW/kombu/tests/test_serialization.pyt   test_pickle_loads  s
    	c         C@ s6   |  j  t j t ƒ t j t t d d ƒd ƒ ƒ d  S(   NRC   u   pickleiÿÿÿÿ(   R5   R   R   Re   R   RP   (   R*   (    (    s@   /tmp/pip-unpacked-wheel-UAnTfW/kombu/tests/test_serialization.pyt   test_pickle_dumps  s    c         C@ s   t  d  d  d  d  ƒ d  S(   N(   R	   R8   (   R*   (    (    s@   /tmp/pip-unpacked-wheel-UAnTfW/kombu/tests/test_serialization.pyt   test_register#  s    c      	   C@ sk   |  j  t ƒ  t d ƒ Wd  QXt d d d ƒt d ƒ |  j  t ƒ  t d d d ƒWd  QXt ƒ  d  S(   Nu   nonexistingu   fooRC   u   pickle(   R2   R
   R   R   R   (   R*   (    (    s@   /tmp/pip-unpacked-wheel-UAnTfW/kombu/tests/test_serialization.pyt   test_unregister&  s    
c         C@ s'   |  j  t ƒ  t j d ƒ Wd  QXd  S(   Nu   nonexisting(   R2   R
   R   t   _set_default_serializer(   R*   (    (    s@   /tmp/pip-unpacked-wheel-UAnTfW/kombu/tests/test_serialization.pyt#   test_set_default_serializer_missing/  s    c         C@ s*   |  j  t ƒ  t d d d ƒWd  QXd  S(   Nu   fooRC   u   nonexisting(   R2   R
   R   (   R*   (    (    s@   /tmp/pip-unpacked-wheel-UAnTfW/kombu/tests/test_serialization.pyt   test_dumps_missing3  s    c         C@ s?   t  t d ƒ ƒ \ } } } |  j | d ƒ |  j | d ƒ d  S(   Nu   foou   application/datau   binary(   R   R   R5   (   R*   t   ctypt   cenct   data(    (    s@   /tmp/pip-unpacked-wheel-UAnTfW/kombu/tests/test_serialization.pyt   test_dumps__no_serializer7  s    c         C@ s0   t  d d d d g  ƒt  d d d d g  ƒd  S(   Nu   taintedu   application/datau   binaryt   acceptu   application/textu   utf-8(   R   (   R*   (    (    s@   /tmp/pip-unpacked-wheel-UAnTfW/kombu/tests/test_serialization.pyt   test_loads__trusted_content<  s    c         C@ s   |  j  t ƒ  t d d d d g  ƒWd  QX|  j  t ƒ  t d d d d d g ƒWd  QX|  j t d d d d d g ƒƒ d  S(   Nu   taintedu   application/x-evilu   binaryRq   u   application/x-jsonu   application/x-doomsday(   R2   R   R   t
   assertTrue(   R*   (    (    s@   /tmp/pip-unpacked-wheel-UAnTfW/kombu/tests/test_serialization.pyt   test_loads__not_accepted@  s    c         C@ s5   |  j  t d j d ƒ ƒ d d d j d ƒ f ƒ d  S(   Nu   foou   utf-8u   application/datau   binary(   t   assertTupleEqualR   RX   (   R*   (    (    s@   /tmp/pip-unpacked-wheel-UAnTfW/kombu/tests/test_serialization.pyt   test_raw_encodeK  s    c         C@ s1   t  ƒ  |  j t ƒ  t d d d ƒ Wd  QXd  S(   Nu   foou   application/x-yamlu   utf-8(   R   R2   R
   R   (   R*   (    (    s@   /tmp/pip-unpacked-wheel-UAnTfW/kombu/tests/test_serialization.pyt   test_register_yaml__no_yamlQ  s    c         C@ s1   t  ƒ  |  j t ƒ  t d d d ƒ Wd  QXd  S(   Nu   foou   application/x-msgpacku   utf-8(   R   R2   R
   R   (   R*   (    (    s@   /tmp/pip-unpacked-wheel-UAnTfW/kombu/tests/test_serialization.pyt!   test_register_msgpack__no_msgpackW  s    (#   t   __name__t
   __module__R,   R0   R7   R9   R@   RB   RE   RI   RL   RN   RO   RR   RS   R   t   ImportErrort
   ValueErrorR`   Ra   Rc   Rd   Rf   Rg   Rh   Ri   Rk   Rl   Rp   Rr   Rt   Rv   R   Rw   Rx   (    (    (    s@   /tmp/pip-unpacked-wheel-UAnTfW/kombu/tests/test_serialization.pyR%   O   s:   													
											(3   t
   __future__R    R   R   t   base64R   t   kombu.exceptionsR   R   R   t
   kombu.fiveR   R   t   kombu.serializationR   R	   R
   R   R   R   R   R   R   R   R   R   R   R   t   kombu.utils.encodingR   t   caseR   R   R   R   R   R<   RX   R=   R>   R?   RD   RP   RQ   Re   Rb   t   dictR[   RT   R!   R%   (    (    (    s@   /tmp/pip-unpacked-wheel-UAnTfW/kombu/tests/test_serialization.pyt   <module>   s:   ^(
	
	
