ó
ø¢TQc           @  s  d  d l  m Z d  d l Z d  d l m Z d  d l m Z d  d l m Z m	 Z	 d  d l
 m Z d  d l m Z d  d l m Z d  d	 l m 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 „  Z e d e f d „  ƒ  Yƒ Z d S(   iÿÿÿÿ(   t   unicode_literalsN(   t   get_user_model(   t   createsuperuser(   t   Usert   AnonymousUser(   t
   CustomUser(   t   skipIfCustomUser(   t   ImproperlyConfigured(   t   call_command(   t   TestCase(   t   override_settings(   t	   force_str(   t   binary_typet   PY3t   StringIOc           s   ‡  f d †  } | S(   ub   
    Decorator to temporarily replace input/getpass to allow interactive
    createsuperuser.
    c           s   ‡  ‡ f d †  } | S(   Nc            st   d d ‡ f d †  ƒ  Y} ‡ f d †  } t  j } t  j } | t  _ | t  _ z ˆ  |  Œ  Wd  | t  _ | t  _ Xd  S(   Nt   mock_getpassc             s#   e  Z e d  d ‡  f d † ƒ Z RS(   s
   Password: c           s&   t  s t |  t ƒ s t ‚ n  ˆ  d S(   Nu   password(   R   t
   isinstanceR   t   AssertionError(   t   promptt   stream(   t   inputs(    s8   ../Django//lib/python/django/contrib/auth/tests/basic.pyt   getpass   s    N(   t   __name__t
   __module__t   staticmethodt   NoneR   (    (   R   (    s8   ../Django//lib/python/django/contrib/auth/tests/basic.pyR      s   c           sm   t  |  ƒ }  t  d ƒ |  k s$ t ‚ d } x< ˆ  j ƒ  D]. \ } } t | ƒ |  j ƒ  k r7 | } Pq7 q7 W| S(   Nu	   __proxy__u    (   t   strR   t   itemsR   t   lower(   R   t   responset   keyt   val(   R   (    s8   ../Django//lib/python/django/contrib/auth/tests/basic.pyt
   mock_input"   s    (    (   R   R   t   input(   t   argsR   R    t   old_getpasst	   old_input(   t	   test_funcR   (    s8   ../Django//lib/python/django/contrib/auth/tests/basic.pyt   wrapped   s    					(    (   R%   R&   (   R   (   R%   s8   ../Django//lib/python/django/contrib/auth/tests/basic.pyt   inner   s    (    (   R   R'   (    (   R   s8   ../Django//lib/python/django/contrib/auth/tests/basic.pyt   mock_inputs   s     t   BasicTestCasec           B  sÌ   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z e i d d 6ƒ d „  ƒ Z e i d d 6d d	 6d
 d 6ƒ d „  ƒ Z	 d „  Z
 e d d ƒ d „  ƒ Z e d d ƒ d „  ƒ Z e d d ƒ d „  ƒ Z RS(   c         C  sF  t  j j d d d ƒ } |  j | j ƒ  ƒ |  j | j d ƒ ƒ |  j | j d ƒ ƒ | j ƒ  | j ƒ  |  j | j d ƒ ƒ |  j | j ƒ  ƒ | j	 d ƒ |  j | j d ƒ ƒ | j	 d ƒ |  j | j ƒ  ƒ |  j | j ƒ  ƒ |  j | j ƒ |  j | j ƒ |  j | j ƒ t  j j d d ƒ } |  j | j ƒ  ƒ d S(   u:   Check that users can be created and can set their passwordu   testuseru   test@example.comu   testpwu   badu	   testuser2u   test2@example.comN(   R   t   objectst   create_usert
   assertTruet   has_usable_passwordt   assertFalset   check_passwordt   set_unusable_passwordt   savet   set_passwordR   t   is_authenticatedt   is_stafft	   is_activet   is_superuser(   t   selft   ut   u2(    (    s8   ../Django//lib/python/django/contrib/auth/tests/basic.pyt	   test_user=   s$    

c         C  s   t  j j d ƒ } |  j | j d ƒ t  j j d d d ƒ} |  j | j d ƒ t  j j d d d ƒ} |  j | j d ƒ d S(   u0   Check that users can be created without an emailu	   testuser1u    u	   testuser2t   emailu	   testuser3N(   R   R*   R+   t   assertEqualR;   R   (   R7   R8   R9   t   u3(    (    s8   ../Django//lib/python/django/contrib/auth/tests/basic.pyt   test_user_no_emailX   s    c         C  s¡   t  ƒ  } |  j | j d ƒ |  j | j ƒ  ƒ |  j | j ƒ |  j | j ƒ |  j | j ƒ |  j | j	 j
 ƒ  j ƒ  d ƒ |  j | j j
 ƒ  j ƒ  d ƒ d S(   u*   Check the properties of the anonymous useri    N(   R   R<   t   pkR   R.   R3   R4   R5   R6   t   groupst   allt   countt   user_permissions(   R7   t   a(    (    s8   ../Django//lib/python/django/contrib/auth/tests/basic.pyt   test_anonymous_userc   s    	c         C  sL   t  j j d d d ƒ } |  j | j ƒ |  j | j ƒ |  j | j ƒ d S(   u0   Check the creation and properties of a superuseru   superu   super@example.comN(   R   R*   t   create_superuserR,   R6   R5   R4   (   R7   t   super(    (    s8   ../Django//lib/python/django/contrib/auth/tests/basic.pyt   test_superusern   s    c         C  sw  t  ƒ  } t d d t d d d d d | ƒ| j ƒ  j ƒ  } |  j | d ƒ t j j d d ƒ } |  j | j	 d ƒ |  j
 | j ƒ  ƒ t  ƒ  } t d d t d d	 d d
 d d d | ƒ| j ƒ  j ƒ  } |  j | d ƒ t j j d d	 ƒ } |  j | j	 d
 ƒ |  j
 | j ƒ  ƒ t d d t d d d d d d ƒt j j d d ƒ } |  j | j	 d ƒ |  j
 | j ƒ  ƒ d S(   u=   Check the operation of the createsuperuser management commandu   createsuperusert   interactivet   usernameu   joeR;   u   joe@somewhere.orgt   stdoutu   Superuser created successfully.u   joe2u   joe2@somewhere.orgt	   verbosityi    u    u   joe+admin@somewhere.orgN(   R   R   t   Falset   getvaluet   stripR<   R   R*   t   getR;   R.   R-   (   R7   t   new_iot   command_outputR8   (    (    s8   ../Django//lib/python/django/contrib/auth/tests/basic.pyt'   test_createsuperuser_management_commandu   s>    					u   nopasswdu   passwordc      
   C  s™   t  j } zW y2 d „  t  _ t d d t d d d d d d ƒWn t k
 r^ |  j d	 ƒ n XWd
 | t  _ Xt j j d d ƒ } |  j	 | j
 d ƒ d
 S(   um   
        Check that createsuperuser does not break when no locale is set. See
        ticket #16017.
        c           S  s   d S(   N(   NN(   R   (    (    (    s8   ../Django//lib/python/django/contrib/auth/tests/basic.pyt   <lambda>ª   s    u   createsuperuserRI   RJ   u   nolocale@somewhere.orgR;   RL   i    uP   createsuperuser fails if the OS provides no information about the current localeN(   t   localet   getdefaultlocaleR   t   Truet	   TypeErrort   failR   R*   RP   R<   R;   (   R7   t   old_getdefaultlocaleR8   (    (    s8   ../Django//lib/python/django/contrib/auth/tests/basic.pyt   test_createsuperuser_nolocale    s    	 	
u   foou	   uÅ¾ivatelu   nolocale@somewhere.orgu   emailc         C  s   d d l  m } t j j d ƒ } | j } | d ƒ | _ t ƒ  } z t d d t d | ƒWd  | | _ X| j	 ƒ  j
 ƒ  } |  j | d ƒ d  S(	   Niÿÿÿÿ(   t   ugettext_lazyu   usernameu	   uÅ¾ivatelu   createsuperuserRI   RK   u   Superuser created successfully.(   t   django.utils.translationR\   R   t   _metat	   get_fieldt   verbose_nameR   R   RW   RN   RO   R<   (   R7   t   ulazyt   username_fieldt   old_verbose_nameRQ   RR   (    (    s8   ../Django//lib/python/django/contrib/auth/tests/basic.pyt+   test_createsuperuser_non_ascii_verbose_name¿   s    			
c         C  s   |  j  t ƒ  t ƒ d S(   u'   The current user model can be retrievedN(   R<   R   R   (   R7   (    (    s8   ../Django//lib/python/django/contrib/auth/tests/basic.pyt   test_get_user_modelÕ   s    t   AUTH_USER_MODELu   auth.CustomUserc         C  s:   |  j  t ƒ  t ƒ |  j t ƒ  t j j ƒ  Wd QXd S(   u5   The current user model can be swapped out for anotherN(   R<   R   R   t   assertRaisest   AttributeErrorR   R*   RA   (   R7   (    (    s8   ../Django//lib/python/django/contrib/auth/tests/basic.pyt   test_swappable_userÙ   s    u
   badsettingc         C  s!   |  j  t ƒ  t ƒ  Wd QXd S(   uJ   The alternate user setting must point to something in the format app.modelN(   Rg   R   R   (   R7   (    (    s8   ../Django//lib/python/django/contrib/auth/tests/basic.pyt   test_swappable_user_bad_settingà   s    u   thismodel.doesntexistc         C  s!   |  j  t ƒ  t ƒ  Wd QXd S(   u7   The current user model must point to an installed modelN(   Rg   R   R   (   R7   (    (    s8   ../Django//lib/python/django/contrib/auth/tests/basic.pyt%   test_swappable_user_nonexistent_modelæ   s    (   R   R   R:   R>   RE   RH   RS   R(   R[   Rd   Re   R
   Ri   Rj   Rk   (    (    (    s8   ../Django//lib/python/django/contrib/auth/tests/basic.pyR)   ;   s   					+	(   t
   __future__R    RU   t   django.contrib.authR   t'   django.contrib.auth.management.commandsR   t   django.contrib.auth.modelsR   R   t%   django.contrib.auth.tests.custom_userR   t   django.contrib.auth.tests.utilsR   t   django.core.exceptionsR   t   django.core.managementR   t   django.testR	   t   django.test.utilsR
   t   django.utils.encodingR   t   django.utils.sixR   R   R   R(   R)   (    (    (    s8   ../Django//lib/python/django/contrib/auth/tests/basic.pyt   <module>   s   	(