
    VeIiI7                     t    d dl mZ d dlZd dlZd dlmZmZmZmZ ddiZ	d Z
d Z G d d	ej                  ZdS )
    )absolute_importN)
ALLOW_FROMDENYNONCE_LENGTHTalismanzwsgi.url_schemehttpsc                      dS NzHello, world r       a/var/www/html/MCyber-Diagnostic/venv/lib/python3.11/site-packages/flask_talisman/talisman_test.pyhello_worldr      s    >r   c                  *    t          j        d          S )Nz)<script nonce="{{csp_nonce()}}"></script>)flaskrender_template_stringr   r   r   
with_noncer      s    '3  r   c                   n    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd ZdS )TestTalismanExtensionc                 P   t          j        t                    | _        t	          | j                  | _        | j                                        | _         | j                            d          t                      | j                            d          t                     d S )N//with_nonce)r   Flask__name__appr   talismantest_clientclientrouter   r   )selfs    r   setUpzTestTalismanExtension.setUp&   s{    ;x(( **h**,,sK(((%}%%j11111r   c                 r   | j                             dt                    }ddddd}|                                D ]3\  }}|                     |j                            |          |           4|j                            d          }|                     d	|           |                     d
|           d S )Nr   environ_overrides
SAMEORIGINz#max-age=31556926; includeSubDomainsnosniffzstrict-origin-when-cross-origin)X-Frame-OptionsStrict-Transport-SecurityX-Content-Type-OptionszReferrer-PolicyContent-Security-Policydefault-src 'self'zobject-src 'none')r   getHTTPS_ENVIRONitemsassertEqualheadersassertIn)r   responser/   keyvaluecsps         r   testDefaultsz"TestTalismanExtension.testDefaults.   s    ;??3-?HH  ,1&/@
 
 "--// 	? 	?JCX-11#66>>>>""#<==,c222+S11111r   c                 L   | j                             dddi          }|                     |j        d           | j                             d          }|                     |j        d           |                     |j        d                             d                     d	| j        _        | j                             d          }|                     |j        d
           d| j        _	        | j                             d          }|                     |j        d           d S )Nr   X-Forwarded-Protor   r/      .  Locationzhttps://Ti-  F)
r   r+   r.   status_code
assertTruer/   
startswithr   force_https_permanentforce_httpsr   r1   s     r   testForceSslOptionOptionsz/TestTalismanExtension.testForceSslOptionOptionsA   s   ;??31
?   	-s333 ;??3''-s333(4??
KKLLL /3+;??3''-s333 %*!;??3''-s33333r   c                     d| j         _        | j                            d          }|                     d|j                   |                     |j        d         d           d S )NTr   X-XSS-Protectionz1; mode=block)r   x_xss_protectionr   r+   r0   r/   r.   rA   s     r   testForceXSSProtectionOptionsz3TestTalismanExtension.testForceXSSProtectionOptionsW   s^    )-& ;??3''((*:;;;)*<=OOOOOr   c                    d| j         _        | j                            d          }|                     d|j                   d| j         _        | j                            dt                    }|                     d|j                   d| j         _        | j                            dddi          }|                     d|j                   d| j         _	        | j                            dt                    }|                     d	|j        d                    d| j         _
        | j                            dt                    }|                     d
|j        d                    d S )NFr   r'   r"   Tr7   r   r8   includeSubDomainspreload)r   	force_sslr   r+   assertNotInr/   strict_transport_securityr,   r0   ,strict_transport_security_include_subdomains!strict_transport_security_preloadrA   s     r   testHstsOptionsz%TestTalismanExtension.testHstsOptions_   sW   "' ;??3''4h6FGGG 38/;??3-?HH4h6FGGG 37/ ;??31
?   	183CDDD FKB;??3-?HH!12M!N	P 	P 	P ;?7;??3-?HHi!12M!NOOOOOr   c                    t           | j        _        | j                            dt
                    }|                     |j        d         d           t          | j        _        d| j        _	        | j                            dt
                    }|                     |j        d         d           d | j        _        | j                            dt
                    }| 
                    d|j                   d S )Nr   r"   r&   r   example.comzALLOW-FROM example.com)r   r   frame_optionsr   r+   r,   r.   r/   r   frame_options_allow_fromrK   rA   s     r   testFrameOptionsz&TestTalismanExtension.testFrameOptions   s    &*#;??3-?HH)*;<fEEE&0#1>.;??3-?HH./1I	K 	K 	K '+#;??3-?HH*H,<=====r   c                    d| j         j        d<   | j                            dt                    }|j        d         }|                     d|           |                     d|           |                     d|           d	d
g| j         j        d<   | j                            dt                    }|j        d         }|                     d|           |                     d|           d| j         _        | j                            dt                    }|                     |j        d         d           d| j         _        | j                            dt                    }|                     d|j                   t          j
        t                    }t          |d           |                                                    dt                    }|                     d|j        d                    t          j
        t                    }t          |d           |                                                    dt                    }|                     d|j                   t          j
        t                    }t          |d           |                                                    dt                    }|                     d|j                   d S )N*z	image-srcr   r"   r)   zdefault-src 'self';zobject-src 'none';zimage-src *'self'rQ   r*   zimage-src 'self' example.comzdefault-src 'foo' spam.eggsFcontent_security_policy)x_content_type_optionsr(   )rE   rD   )r   rY   r   r+   r,   r/   r0   r.   rK   r   r   r   r   r   )r   r1   r4   r   s       r    testContentSecurityPolicyOptionsz6TestTalismanExtension.testContentSecurityPolicyOptions   s   =@-k:;??3-?HH89+S111,c222mS))) >
-k: ;??3-?HH89,c2226<<< 1P-;??3-?HH)*CD8	: 	: 	: 16-;??3-?HH2H4DEEE k(##.MNNNN??$$(((NN+67	
 	
 	
 k(##U3333??$$(((NN183CDDD k(##u----??$$(((NN+X-=>>>>>r   c                 P   d| j         _        d| j         _        | j                            dt
                    }|                     d|j                   |                     d|j        d                    |                     d|j                   d}d|i| j         _	        | j                            dt
                    }|                     d|j                   |                     ||j        d                    | 
                    t          t          | j        d	           d S )
NTzhttps://example.comr   r"   z#Content-Security-Policy-Report-Onlyz
report-urir)   zhttps://report-uri.io/)#content_security_policy_report_only)r   r]   "content_security_policy_report_urir   r+   r,   r0   r/   rK   rY   assertRaises
ValueErrorr   r   )r   r1   override_report_uris      r   &testContentSecurityPolicyOptionsReportz<TestTalismanExtension.testContentSecurityPolicyOptionsReport   s9   <@9! 	8;??3-?HH;X=MNNNBC	
 	
 	
 	2H4DEEE6-1
- ;??3-?HH183C	E 	E 	EBC	
 	
 	
 	*h>B 	 	D 	D 	D 	D 	Dr   c                 2   d| j         j        d<   d| j         j        d<   dg| j         _        | j                                        5 }|                    dt                    }|j        d         }|                     d	                    t          j        j                  |           |                     d	|           |                     d
	                    t          j        j                  |           |                     d|           |                     t          j        j        |j                            d                     |                     t#          t          j        j                  t$                     d d d            d S # 1 swxY w Y   d S )NrW   z
script-srcrQ   z	style-srcr   r"   r)   zscript-src 'self' 'nonce-{}'zstyle-src 'self'z style-src example.com 'nonce-{}'zstyle-src example.comzutf-8)r   rY    content_security_policy_nonce_inr   r   r+   r,   r/   r0   formatr   request	csp_noncerK   datadecoder.   lenr   )r   r   r1   r4   s       r   testContentSecurityPolicyNoncez4TestTalismanExtension.testContentSecurityPolicyNonce   s   >F-l;=J-k::F6X!!## 	Ivzz-4A " C CH "#<=CMM.55em6MNN   "   299%-:QRR   MM'   MM'$$W--   S!899<HHH5	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	Is   D:FFFc                 >   | j                             d          |                     d           d                         }| j                            dt
                    }|                     d|j                   |                     |j        d         d           d S )Nz/nocsprX   c                      dS r
   r   r   r   r   nocspz2TestTalismanExtension.testDecorator.<locals>.nocsp   	     ">r   r"   r)   r&   r$   )	r   r   r   r   r+   r,   rK   r/   r.   )r   rn   r1   s      r   testDecoratorz#TestTalismanExtension.testDecorator   s    		!	!	t	4	4	" 	" 
5	4 
"	!	" ;??8}?MM2H4DEEE)*;<lKKKKKr   c                     | j                             d          |                     d          d                         }| j                            d          }|                     |j        d           d S )Nz/noforcehttpsF)r@   c                      dS r
   r   r   r   r   noforcehttpszCTestTalismanExtension.testDecoratorForceHttps.<locals>.noforcehttps  ro   r   r9   )r   r   r   r   r+   r.   r<   )r   rs   r1   s      r   testDecoratorForceHttpsz-TestTalismanExtension.testDecoratorForceHttps  sw    		(	(	5	)	)	" 	" 
*	) 
)	(	" ;???33-s33333r   c                     d| j         _        | j                            dt                    }|                     d|j                   |                     |j        d         d           d S )NTr   r"   zX-Download-Optionsnoopen)r   force_file_saver   r+   r,   r0   r/   r.   rA   s     r   testForceFileSavez'TestTalismanExtension.testForceFileSave  s`    (,%;??3-?HH*H,<===)*>?JJJJJr   c                     | j                             d          }|                     |j        d           | j                             dddi          }|                     |j        d           d S )Nz/bad_endpointr:   r7   r   r8   i  )r   r+   r.   r<   rA   s     r   testBadEndpointz%TestTalismanExtension.testBadEndpoint  ss    ;???33-s333;???,?+I # K K-s33333r   c                 D   d| j         j        d<   | j                            dt                    }|j        d         }|                     d|           d| j         j        d<   | j                            dt                    }|j        d         }|                     d	|           t          j        t                    }t          |d
           |                                                    dt                    }|                     d
|j        d                    d S )Nz'none'geolocationr   r"   zFeature-Policyzgeolocation 'none'z'self' example.com
fullscreenzfullscreen 'self' example.comzvibrate 'none')feature_policy)r   r~   r   r+   r,   r/   r0   r   r   r   r   r   )r   r1   r~   r   s       r   testFeaturePolicyz'TestTalismanExtension.testFeaturePolicy  s    6@$]3;??3-?HH!)*:;,n===5K$\2;??3-?HH!)*:;7HHH k(##%78888??$$(((NN((*:;K*LMMMMMr   c                 t   d| j         j        d<   | j                            dt                    }|j        d         }|                     d|           |                     d|           d| j         j        d<   d| j         j        d	<   | j                            dt                    }|j        d         }|                     d|           |                     d
|           i | j         _        | j                            dt                    }|j                            d          }|                     d |           t          j	        t                    }t          |d           |                                                    dt                    }|                     d|j        d                    d S )Nz()r|   r   r"   zPermissions-Policyzbrowsing-topics=()zgeolocation=()z(self, "https://example.com")r}   z8geolocation=(), fullscreen=(self, "https://example.com")zvibrate=(), geolocation=())permissions_policy)r   r   r   r+   r,   r/   r0   r.   r   r   r   r   r   )r   r1   r   r   s       r   testPermissionsPolicyz+TestTalismanExtension.testPermissionsPolicy.  s   :>(7;??3-?HH%-.BC*,>???&(:;;;:>(79X(6;??3-?HH%-.BC*,>???PRdeee ,.(;??3-?HH%-112FGG1222 k(##)EFFFF??$$(((NN2H4DEY4Z[[[[[r   c                 b   d| j         j        d<   | j                            dt                    }|j        d         }|                     d|           d| j         j        d<   d| j         j        d<   | j                            dt                    }|j        d         }|                     d|           t          j        t                    }t          |d	           |                                                    dt                    }|                     d|j        d                    d S )
Nz?0zoversized-imagesr   r"   zDocument-Policyzoversized-images=?0zdocument-writez&oversized-images=?0, document-write=?0)document_policy)r   r   r   r+   r,   r/   r0   r   r   r   r   r   )r   r1   r   r   s       r   testDocumentPolicyz(TestTalismanExtension.testDocumentPolicyH  s   <@%&89;??3-?HH"*+<=+_===<@%&89:>%&67;??3-?HH"*+<=>PPP k(##&NOOOO??$$(((NN>@PQb@cdddddr   N)r   
__module____qualname__r    r5   rB   rF   rO   rT   r[   rb   rk   rp   rt   rx   rz   r   r   r   r   r   r   r   r   $   s$       2 2 22 2 2&4 4 4,P P PP P P@> > >/? /? /?bD D D:I I IBL L L4 4 4K K K4 4 4N N N"\ \ \4e e e e er   r   )
__future__r   unittestr   flask_talismanr   r   r   r   r,   r   r   TestCaser   r   r   r   <module>r      s    ' & & & & &   C C C C C C C C C C C C #G,    te te te te teH- te te te te ter   