
    ]j"                     ^   d dl mZ d dlZd dlZd dlmZ d dlmZ d dlm	Z	 d dl
mZ d`dZd Zd	 Z e	eej                        Z ed
dg      d        Z ed
g      d        Z ed
g      d        Z ed
g      d        Z ed
g      d        Z ed
g      d        Z ed
g      d        Z ed
g      d        Z ed
g      d        Z ed
g      d        Z ed
g       d!        Z ed
g"      d#        Z ed
g$      d%        Z ed
g&      d'        Z ed(g)      d*        Z eg )      d+        Z  ed,-      d.        Z! e ed,      -      d/        Z" ed01      d2        Z# ed
g      d3        Z$d4 Z% ed
g      d5        Z&d6 Z'd7 Z( ed8      d9        Z) ed8      d:        Z* ed
g;      d<        Z+ ed
g=      d>        Z, ed
g?      d@        Z- ed
gA      dB        Z. ed
gC      dD        Z/ ed
gE      dF        Z0 ed
gG      dH        Z1 edIgJ      dK        Z2 edLgM      dN        Z3 edOgP      dQ        Z4 eg dRS      dT        Z5 edUV      dW        Z6 edUX      dY        Z7dZ Z8 ed[d\g]      d^        Z9 e       d_        Z:y)a    )absolute_importN)settings)override_settings)lazybuild_policyc                     t        | j                  d            }t        |j                  d            }||k(  sJ || |fz         y )Nz; )sortedsplit)abmsgparts_aparts_bs        >/root/env/lib/python3.12/site-packages/csp/tests/test_utils.py	policy_eqr      sA    QWWT]#GQWWT]#Gg+saV|+    c                  &    t               } d| k(  sJ y )Nzdefault-src 'self'r   policys    r   test_empty_policyr      s    ^F6)))r   c                     | S )N )ss    r   literalr      s    Hr   example.comexample2.com)CSP_DEFAULT_SRCc                  &    t               } d| k(  sJ y )Nz$default-src example.com example2.comr   r   s    r   test_default_srcr       s    ^F1V;;;r   )CSP_SCRIPT_SRCc                  0    t               } t        d|        y )Nz*default-src 'self'; script-src example.comr   r   r   s    r   test_script_srcr$   $       ^F:FCr   )CSP_SCRIPT_SRC_ATTRc                  0    t               } t        d|        y )Nz/default-src 'self'; script-src-attr example.comr#   r   s    r   test_script_src_attrr(   *       ^F?Hr   )CSP_SCRIPT_SRC_ELEMc                  0    t               } t        d|        y )Nz/default-src 'self'; script-src-elem example.comr#   r   s    r   test_script_src_elemr,   0   r)   r   )CSP_OBJECT_SRCc                  0    t               } t        d|        y )Nz*default-src 'self'; object-src example.comr#   r   s    r   test_object_srcr/   6   r%   r   )CSP_PREFETCH_SRCc                  0    t               } t        d|        y )Nz,default-src 'self'; prefetch-src example.comr#   r   s    r   test_prefetch_srcr2   <       ^F<fEr   )CSP_STYLE_SRCc                  0    t               } t        d|        y )Nz)default-src 'self'; style-src example.comr#   r   s    r   test_style_srcr6   B       ^F96Br   )CSP_STYLE_SRC_ATTRc                  0    t               } t        d|        y )Nz.default-src 'self'; style-src-attr example.comr#   r   s    r   test_style_src_attrr:   H       ^F>Gr   )CSP_STYLE_SRC_ELEMc                  0    t               } t        d|        y )Nz.default-src 'self'; style-src-elem example.comr#   r   s    r   test_style_src_elemr>   N   r;   r   )CSP_IMG_SRCc                  0    t               } t        d|        y )N'default-src 'self'; img-src example.comr#   r   s    r   test_img_srcrB   T   s    ^F7@r   )CSP_MEDIA_SRCc                  0    t               } t        d|        y )Nz)default-src 'self'; media-src example.comr#   r   s    r   test_media_srcrE   Z   r7   r   )CSP_FRAME_SRCc                  0    t               } t        d|        y )Nz)default-src 'self'; frame-src example.comr#   r   s    r   test_frame_srcrH   `   r7   r   )CSP_FONT_SRCc                  0    t               } t        d|        y )Nz(default-src 'self'; font-src example.comr#   r   s    r   test_font_srcrK   f       ^F8&Ar   )CSP_CONNECT_SRCc                  0    t               } t        d|        y )Nz+default-src 'self'; connect-src example.comr#   r   s    r   test_connect_srcrO   l       ^F;VDr   zallow-scripts)CSP_SANDBOXc                  0    t               } t        d|        y )Nz)default-src 'self'; sandbox allow-scriptsr#   r   s    r   test_sandboxrS   r   r7   r   c                  0    t               } t        d|        y )Nzdefault-src 'self'; sandboxr#   r   s    r   test_sandbox_emptyrU   x   s    ^F+V4r   z/foo)CSP_REPORT_URIc                  0    t               } t        d|        y Nz#default-src 'self'; report-uri /foor#   r   s    r   test_report_urirY   ~       ^F3V<r   c                  0    t               } t        d|        y rX   r#   r   s    r   test_report_uri_lazyr\      rZ   r   some_endpoint)CSP_REPORT_TOc                  0    t               } t        d|        y )Nz+default-src 'self'; report-to some_endpointr#   r   s    r   test_report_tor`      s    ^F;r   c                  8    t        ddi      } t        d|        y )Nimg-srcr   update4default-src 'self'; img-src example.com example2.comr#   r   s    r   test_update_imgrf      s    )^!<=FDr   c                  8    t        ddi      } t        d|        y)z6update should work even if the setting is not defined.rb   r   rc   rA   Nr#   r   s    r   test_update_missing_settingrh      s    )]!;<F7@r   c                  8    t        ddi      } t        d|        y )Nrb   r   replace(default-src 'self'; img-src example2.comr#   r   s    r   test_replace_imgrm      s    9n"=>F8&Ar   c                  8    t        ddi      } t        d|        y)z7replace should work even if the setting is not defined.rb   r   rj   rA   Nr#   r   s    r   test_replace_missing_settingro      s    9m"<=F7@r   c                  >    t        dgdgd      } t        d|        y )Nz'none'z'self')zdefault-srcrb   )configz"default-src 'none'; img-src 'self'r#   r   s    r   test_configrr      s$     (zxjACF2F;r   )r   c                  8    t        ddi      } t        d|        y)z
    GitHub issue #40 - given project settings as a tuple, and
    an update/replace with a string, concatenate correctly.
    rb   r   rc   re   Nr#   r   s    r   test_update_stringrt      s!     )^!<=FDr   c                  8    t        ddi      } t        d|        y)zG
    Demonstrate that GitHub issue #40 doesn't affect replacements
    rb   r   rj   rl   Nr#   r   s    r   test_replace_stringrv      s!    
 9n"=>F8r   )CSP_FORM_ACTIONc                  0    t               } t        d|        y )Nz+default-src 'self'; form-action example.comr#   r   s    r   test_form_actionry      rP   r   )CSP_BASE_URIc                  0    t               } t        d|        y )Nz(default-src 'self'; base-uri example.comr#   r   s    r   test_base_urir|      rL   r   )CSP_CHILD_SRCc                      t        j                  t              5  t               } t	        d|        d d d        y # 1 sw Y   y xY w)Nz)default-src 'self'; child-src example.com)pytestwarnsDeprecationWarningr   r   r   s    r   test_child_srcr      s:    	(	) G=vFG G Gs	   :A)CSP_FRAME_ANCESTORSc                  0    t               } t        d|        y )Nz/default-src 'self'; frame-ancestors example.comr#   r   s    r   test_frame_ancestorsr      r)   r   )CSP_NAVIGATE_TOc                  0    t               } t        d|        y )Nz+default-src 'self'; navigate-to example.comr#   r   s    r   test_navigate_tor      rP   r   )CSP_MANIFEST_SRCc                  0    t               } t        d|        y )Nz,default-src 'self'; manifest-src example.comr#   r   s    r   test_manifest_srcr      r3   r   )CSP_WORKER_SRCc                  0    t               } t        d|        y )Nz*default-src 'self'; worker-src example.comr#   r   s    r   test_worker_srcr      r%   r   zapplication/pdf)CSP_PLUGIN_TYPESc                  0    t               } t        d|        y )Nz0default-src 'self'; plugin-types application/pdfr#   r   s    r   test_plugin_typesr      s    ^F@&Ir   script)CSP_REQUIRE_SRI_FORc                  0    t               } t        d|        y )Nz*default-src 'self'; require-sri-for scriptr#   r   s    r   test_require_sri_forr      r%   r   z'script')CSP_REQUIRE_TRUSTED_TYPES_FORc                  0    t               } t        d|        y )Nz6default-src 'self'; require-trusted-types-for 'script'r#   r   s    r   test_require_trusted_types_forr      s    ^FFOr   )strictPolicy	laxPolicydefaultz'allow-duplicates')CSP_TRUSTED_TYPESc                  0    t               } t        d|        y )NzSdefault-src 'self'; trusted-types strictPolicy laxPolicy default 'allow-duplicates'r#   r   s    r   test_trusted_typesr     s     ^F -.46r   T)CSP_UPGRADE_INSECURE_REQUESTSc                  0    t               } t        d|        y )Nz-default-src 'self'; upgrade-insecure-requestsr#   r   s    r   test_upgrade_insecure_requestsr   
  s    ^F=vFr   )CSP_BLOCK_ALL_MIXED_CONTENTc                  0    t               } t        d|        y )Nz+default-src 'self'; block-all-mixed-contentr#   r   s    r   test_block_all_mixed_contentr     rP   r   c                  4    t        d      } t        d|        y Nabc123noncez!default-src 'self' 'nonce-abc123'r#   r   s    r   
test_noncer     s    )F16:r   z
script-srcz	style-src)CSP_INCLUDE_NONCE_INc                  4    t        d      } t        d|        y )Nr   r   zGdefault-src 'self'; script-src 'nonce-abc123'; style-src 'nonce-abc123'r#   r   s    r   test_nonce_include_inr     s    )F *,24r   c                  @    t         `t        d      } t        d|        y r   )r   r   r   r   r   s    r   test_nonce_include_in_absentr   #  s    %)F16:r   )z%r != %r);
__future__r   r   sixdjango.confr   django.test.utilsr   django.utils.functionalr   	csp.utilsr   r   r   r   	text_typelazy_literalr    r$   r(   r,   r/   r2   r6   r:   r>   rB   rE   rH   rK   rO   rS   rU   rY   r\   r`   rf   rh   rm   ro   rr   rt   rv   ry   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>r      s   &  
   / ( ",*
 GS]]+ M>#BC< D<
 =/2D 3D
 7I 8I
 7I 8I
 =/2D 3D
 ]O4F 5F
 -1C 2C
 }o6H 7H
 }o6H 7H
 /A 0A
 -1C 2C
 -1C 2C
 0B 1B
 M?3E 4E
 01C 2C
 r"5 #5
 &)= *=
 ,v"67= 8=
 1 2 / 0A /B 0B
A< /0 1 /0 1 M?3E 4E
 0B 1B
 -1G 2G 7I 8I
 M?3E 4E
 ]O4F 5F
 =/2D 3D
 %6$78J 9J
 z2D 3D
 *>P ?P
  &G H6H6 6G 7G
 t4E 5E
;
 {(CD4 E4 ; ;r   