
    h                         d dl Z 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  G d de	j                        Z G d	 d
e      Z G d d      Zy# e$ r	 d dlmZ Y 8w xY w)    N)settings)MULTIPART_CONTENTClient)	force_str)permissionsstatus)reversec                       e Zd ZdZd Zy)CustomPermissionClasszYou shall not pass!c                      y)NF )selfrequestviews      \/var/www/html/ranktracker/api/venv/lib/python3.12/site-packages/dj_rest_auth/tests/mixins.pyhas_permissionz$CustomPermissionClass.has_permission   s        N)__name__
__module____qualname__messager   r   r   r   r   r      s    #Gr   r   c                   (    e Zd ZdedfdZdedfdZy)	APIClient Fc                 .     | j                   d|||fi |S )NPATCHgenericr   pathdatacontent_typefollowextras         r   patchzAPIClient.patch   s    t||GT4GGGr   c                 .     | j                   d|||fi |S )NOPTIONSr   r   s         r   optionszAPIClient.options   s    t||ItT<I5IIr   N)r   r   r   r   r%   r(   r   r   r   r   r      s     !0A% H "$2CE Jr   r   c                   :    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
y	)

TestsMixinz
    base for API tests:
        * easy request calls, f.e.: self.post(url, data), self.get(url)
        * easy status check, f.e.: self.post(url, data, status_code=200)
    c                    t        | j                  |      }d }d|vr
|dk7  rd|d<   d|v r7|dk7  r2|d   dk(  r*|j                  dd      }t        j                  |      |d<   d|v r|j                  d      }t        | d      r6t        t        dd	      rd
| j                   |d<   nd| j                   |d<    ||i || _	        d| j                  j                  d      v }i | j                  _        |rW| j                  j                  rAt        j                  t        | j                  j                              | j                  _        |r&| j                  | j                  j                  |       | j                  S )Nr"   getzapplication/jsonr!   r   status_codetokenREST_USE_JWTFzJWT HTTP_AUTHORIZATIONzToken zcontent-type)getattrclientr,   jsondumpspophasattrr   r.   responsecontentloadsr   assertEqualr-   )r   request_methodargskwargsrequest_funcr-   r!   is_jsons           r   send_requestzTestsMixin.send_request%   sX   t{{N;'Ne,C%7F>"V% 7F><RVh<h::fb)D!ZZ-F6NF" **]3K 4!x715djj\/B+,17

|/D+,$d5f5$(9(9.(IIt}},,!%Idmm6K6K,L!MDMMT]]66D}}r   c                 .     | j                   dg|i |S )Npostr@   r   r<   r=   s      r   rB   zTestsMixin.postC   s     t  9$9&99r   c                 .     | j                   dg|i |S )Nr,   rC   rD   s      r   r,   zTestsMixin.getF   s     t  8888r   c                 .     | j                   dg|i |S )Nr%   rC   rD   s      r   r%   zTestsMixin.patchI   s     t  :4:6::r   c                    dt         _        t               | _        t	        d      | _        t	        d      | _        t	        d      | _        t	        d      | _        t	        d      | _	        t	        d      | _
        t	        d      | _        t	        d	      | _        t	        d
      | _        t	        d      | _        t	        d      | _        t	        d      | _        t	        d      | _        t	        d      | _        t	        d      | _        y )NT
rest_loginrest_logoutrest_password_changerest_registerrest_password_resetrest_user_detailsrest_verify_emailfb_logintw_logintw_login_no_viewtw_login_no_adapter
fb_connect
tw_connectsocial_account_listrest_resend_email)r   DEBUGr   r2   r	   	login_url
logout_urlpassword_change_urlregister_urlpassword_reset_urluser_urlverify_email_urlfb_login_urltw_login_urltw_login_no_view_urltw_login_no_adapter_urlfb_connect_urltw_connect_urlsocial_account_list_urlresend_email_urlr   s    r   initzTestsMixin.initL   s    k .!-0#*+A#B #O4")*?"@ 34 '(; <#J/#J/$+,>$?!'./D'E$%l3%l3'./D'E$ '(; <r   c                     | j                   | j                  d}| j                  | j                  |t        j
                         y )N)usernamepassword)r!   r-   )USERNAMEPASSrB   rX   r   HTTP_200_OK)r   payloads     r   _loginzTestsMixin._login`   s5    		
 			$..wF<N<N	Or   c                 Z    | j                  | j                  t        j                         y )N)r   )rB   rY   r   rn   rg   s    r   _logoutzTestsMixin._logoutg   s    		$//&*<*<	=r   N)r   r   r   __doc__r@   rB   r,   r%   rh   rp   rr   r   r   r   r*   r*      s+    
<:9;=(P>r   r*   )r3   django.confr   django.test.clientr   r   django.utils.encodingr   rest_frameworkr   r   django.urlsr	   ImportErrordjango.core.urlresolversBasePermissionr   r   r*   r   r   r   <module>r|      s\       8 + .1#
K66 J JI> I>)  101s   A A! A!