
    ]jC                     B   d dl mZmZmZ d dlmZ d dlmZ d dlm	Z	 dZ
 e	       Z e       Zd Zd Z ed	      d
        Z ed      d        Zd Zd Zd Z edg      d        Z ed      d        Z ed      d        Zd Zd Zd Z eg       d        Zy)    )HttpResponseHttpResponseServerErrorHttpResponseNotFound)RequestFactory)override_settings)CSPMiddlewarezContent-Security-Policyc                      t         j                  d      } t               }t        j	                  | |       t
        |v sJ y N/rfgetr   mwprocess_responseHEADERrequestresponses     C/root/env/lib/python3.12/site-packages/csp/tests/test_middleware.pytest_add_headerr      s4    ffSkG~H*X    c                      t         j                  d      } t               }d|_        t        j                  | |       t        |vsJ y )Nr   T)r   r   r   _csp_exemptr   r   r   r   s     r   test_exemptr      s<    ffSkG~HH*!!!r   z/inlines-r-us)CSP_EXCLUDE_URL_PREFIXESc                      t         j                  d      } t               }t        j	                  | |       t
        |vsJ y )Nz/inlines-r-us/foor   r   s     r   text_excluder       s6    ff()G~H*!!!r   T)CSP_REPORT_ONLYc                      t         j                  d      } t               }t        j	                  | |       t
        |vsJ t
        dz   |v sJ y )Nr   z-Report-Onlyr   r   s     r   test_report_onlyr    (   sG    ffSkG~H*!!!N"h...r   c                      t         j                  d      } t               }d|t        <   t        j                  | |       |t           dk(  sJ y )Nr   default-src example.com)r   r   r   r   r   r   r   s     r   test_dont_replacer#   1   sD    ffSkG~H0HV*F8888r   c                      t         j                  d      } t               }ddgi|_        t        j                  | |       |t           dk(  sJ y )Nr   default-srcexample.comr"   )r   r   r   _csp_configr   r   r   r   s     r   test_use_configr(   9   sI    ffSkG~H)M?;H*F8888r   c                      t         j                  d      } t               }ddgi|_        t        j                  | |       |t           dk(  sJ y )Nr   r%   r&   zdefault-src 'self' example.com)r   r   r   _csp_updater   r   r   r   s     r   test_use_updater+   A   sI    ffSkG~H)M?;H*F????r   zfoo.com)CSP_IMG_SRCc                      t         j                  d      } t               }ddgi|_        t        j                  | |       t        |t           j                  d            }|ddgk(  sJ y )Nr   zimg-srczbar.comz; zdefault-src 'self'zimg-src bar.com)	r   r   r   _csp_replacer   r   sortedr   split)r   r   policy_lists      r   test_use_replacer2   I   sd    ffSkG~H&4H*&)//56K/1BCCCCr   )DEBUGc                      t         j                  d      } t               }t        j	                  | |       t
        |vsJ y r
   )r   r   r   r   r   r   r   s     r   test_debug_errors_exemptr5   S   s5    ffSkG&(H*!!!r   c                      t         j                  d      } t               }t        j	                  | |       t
        |vsJ y r
   )r   r   r   r   r   r   r   s     r   test_debug_notfound_exemptr7   [   s5    ffSkG#%H*!!!r   c                      t         j                  d      } t        j                  |        t	        | j
                        }t               }t        j                  | |       ||t           v sJ y r
   	r   r   r   process_requeststr	csp_noncer   r   r   r   noncer   s      r    test_nonce_created_when_accessedr?   c   sW    ffSkGw!!"E~H*HV$$$$r   c                      t         j                  d      } t        j                  |        t	               }t        j                  | |       d|t           vsJ y )Nr   znonce-)r   r   r   r:   r   r   r   r   s     r   test_no_nonce_when_not_accessedrA   l   sG    ffSkGw~H*8F++++r   c                     t         j                  d      } t         j                  d      }t        j                  |        t        j                  |       t	        | j
                        }t	        |j
                        }| j
                  |j
                  k7  sJ t               }t               }t        j                  | |       t        j                  ||       ||t           vsJ ||t           vsJ y r
   r9   )request1request2nonce1nonce2	response1	response2s         r   %test_nonce_regenerated_on_new_requestrI   t   s    vvc{Hvvc{Hx x ##$F##$F!3!3333II),),6****6****r   )CSP_INCLUDE_NONCE_INc                      t         j                  d      } t        j                  |        t	        | j
                        }t               }t        j                  | |       ||t           vsJ y r
   r9   r=   s      r   'test_no_nonce_when_disabled_by_settingsrL      sW    ffSkGw!!"E~H*((((r   N)django.httpr   r   r   django.testr   django.test.utilsr   csp.middlewarer   r   r   r   r   r   r   r    r#   r(   r+   r2   r5   r7   r?   rA   rI   rL    r   r   <module>rR      s    
 ' / ( 
#_" _>" ?" 4(/ )/99@ 	{+D ,D " " " "%,+" +) ,)r   