o
    ˷e                     @   s   d Z zddlmZ W n ey   ddlmZ Y nw 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 ddlmZ d	d
lmZ G dd dZededG dd de	ZG dd dZdd ZG dd de	ZdS )zl
run this with ./manage.py test website
see http://www.djangoproject.com/documentation/testing/ for details
    )mock)settings)render_to_string)TestCase)override_settings)POSTBACK_ENDPOINTSANDBOX_POSTBACK_ENDPOINT)	PayPalPDT   )	TEMPLATESc                   @   s*   e Zd Zi fddZdd Zd	ddZdS )
DummyPayPalPDTc                 C   s*   ddddddd| _ | j | d| _d S )	NSUCCESSz$cb736658-3aad-4694-956f-d0aeade801941ED550410S3402306225.00ztest@example.comzError code: 1234)stcustomtxn_idmc_grossbusinesserror )context_dictupdateresponse)selfupdate_context_dict r   Y/var/www/ideatree/venv/lib/python3.10/site-packages/paypal/standard/pdt/tests/test_pdt.py__init__   s   	
zDummyPayPalPDT.__init__c                 C   sP   d|v r| d| jd< d|v r| d| jd< d|v r&| d| jd< d S d S )Ntxr   amtr   cmr   )getr   )r   
get_paramsr   r   r   update_with_get_params#   s   z%DummyPayPalPDT.update_with_get_paramsTc                 C   s   t d| jdS )z+Perform a Fake PayPal PDT Postback request.zpdt/test_pdt_response.htmlzutf-8)r   r   encode)r   testr   r   r   	_postback+   s   zDummyPayPalPDT._postbackN)T)__name__
__module____qualname__r   r$   r'   r   r   r   r   r      s    r   z#paypal.standard.pdt.tests.test_urls)ROOT_URLCONFr   c                   @   s<   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )PDTTestc                 C   s:   dddddddd| _ t | _| j| j  | jjt_d S )	N4WJ86550014687441	Completedr   EURz$a3e192b8-8fea-4a86-b2e8-d5bf502e36ber   blahblahblah)r   r   r    ccr!   item_numbersig)r#   r   dpppdtr$   r'   r	   )r   r   r   r   setUp2   s   zPDTTest.setUpc                 C   s   t  }| d}d|v sJ | ttj d t }d|_||_	|
  | ttj d | |jd | |jd | |j	| d S )Nasciir   r   z	127.0.0.1r   )r   r'   decodeassertEquallenr	   objectsall	ipaddressr   _verify_postbackr   )r   r4   paypal_responsepdt_objr   r   r   test_verify_postbackC   s   zPDTTest.test_verify_postbackc                 C   s^   |  ttj d | j| j | j	d| j}| j
|ddd |  ttj d d S )Nr   /pdt/Transaction complete   status_coder
   )r8   r9   r	   r:   r;   r4   r$   r#   clientr"   assertContainsr   r>   r   r   r   test_pdtR   s
   zPDTTest.test_pdtc                 C   s   |  ttj d | jd| j}| j|ddd |  ttj d tj d }|  |j	d | jd| j}| j|ddd |  ttj d tj d }|  |j	d d S )Nr   rA   rB   rC   rD   r
   F)
r8   r9   r	   r:   r;   rF   r"   r#   rG   flagr   r>   r?   r   r   r   test_double_pdt_getY   s   zPDTTest.test_double_pdt_getc                 C   sN   | j jd i | _| jd| j}| j|ddd | tt	j
 d d S )Nr   rA   zTransaction FailedrC   rD   r   )r4   r   popr#   rF   r"   rG   r8   r9   r	   r:   r;   rH   r   r   r   test_no_txn_id_in_pdtf   s
   zPDTTest.test_no_txn_id_in_pdtc                 C   s   |  ttj d | j| j | j	d| j}| j
|ddd |  ttj d tj d }|  |j| jd  d S )Nr   rA   rB   rC   rD   r
   r!   )r8   r9   r	   r:   r;   r4   r$   r#   rF   r"   rG   r   rK   r   r   r   test_custom_passthroughm   s   zPDTTest.test_custom_passthroughN)	r(   r)   r*   r5   r@   rI   rL   rN   rO   r   r   r   r   r,   0   s    r,   c                   @   s   e Zd ZdZdS )MockedResponser&   N)r(   r)   r*   contentr   r   r   r   rP   w   s    rP   c                  O   sJ   | d }|d }|t ksJ |d dksJ d|v sJ d|v s"J t S )Nr   datacmdz_notify-synchatr   )r   rP   )argskwargsurlrR   r   r   r   mocked_post{   s   rX   c                   @   sF   e Zd ZdZedd Zedd Zejde	ddd	 Z
d
d ZdS )PDTPostbackTestz4
    Tests an actual postback to PayPal server.
    c                 C   s   t  | _d S N)r	   pdtclsr   r   r   
setUpClass   s   zPDTPostbackTest.setUpClassc                 C   s   d S rZ   r   r\   r   r   r   tearDownClass   s   zPDTPostbackTest.tearDownClassz(paypal.standard.pdt.models.requests.post)side_effectc                 C   s   | j  }| |tj d S rZ   )r[   r'   r8   rP   rQ   )r   postr   r   r   r   test_postback   s   
zPDTPostbackTest.test_postbackc                 C   s6   | j  }ttddr| |t d S | |t d S )NPAYPAL_TESTT)r[   get_endpointgetattrr   r8   r   r   )r   endpointr   r   r   test_enpoint   s   
zPDTPostbackTest.test_enpointN)r(   r)   r*   __doc__classmethodr^   r_   r   patchrX   rb   rg   r   r   r   r   rY      s    


rY   N)rh   unittestr   ImportErrordjango.confr   django.template.loaderr   django.testr   django.test.utilsr   paypal.standard.confr   r   paypal.standard.pdt.modelsr	   r   r   r,   rP   rX   rY   r   r   r   r   <module>   s&    
F