U
    ,W}                     @   s   d Z ddlZdd ZG dd dejZG dd dejZG d	d
 d
ejZG dd dejZG dd dejZG dd dejZ	G dd dejZ
G dd dejZG dd dejZdd Zdd ZdS )zTests for ZCML directives.
    Nc                 C   s.   zdd l }W n tk
r(   dd  Y S X | S )Nr   c                 S   s   d S N selfr   r   @/usr/lib/python3/dist-packages/zope/component/tests/test_zcml.py<lambda>       z"skipIfNoSecurity.<locals>.<lambda>)Zzope.securityImportError)Ztestfunczoper   r   r   skipIfNoSecurity   s
    r   c                   @   s   e Zd Zdd Zdd ZdS )Test_handlerc                 O   s   ddl m} |||S )Nr   handler)zope.component.zcmlr   )r   argskwr   r   r   r   _callFUT   s    zTest_handler._callFUTc                    s   ddl m} ddlm} ddlm}m} ddlm} |  d	 fdd	}|	| z(| d||| |  ||k W 5 |
  X d S )
Nr   )
Components)getSiteManager)compIApp)_BLANKc                    s    S r   r   contextregistryr   r   dummy'   s    z=Test_handler.test_uses_configured_site_manager.<locals>.dummyregisterUtility)N)Zzope.interface.registryr   zope.componentr   #zope.component.testfiles.componentsr   r   Zzope.component._compatr   Zsethookresetr   
assertTrueZ
getUtility)r   r   r   r   r   r   r   r   r   r   !test_uses_configured_site_manager    s    
z.Test_handler.test_uses_configured_site_managerN)__name__
__module____qualname__r   r"   r   r   r   r   r      s   r   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )Test__rolledUpFactoryc                 O   s   ddl m} |||S )Nr   )_rolledUpFactory)r   r'   )r   r   r   r'   r   r   r   r   4   s    zTest__rolledUpFactory._callFUTc                    sJ   t  }t    fdd}| |g}| |j|k | || k d S )Nc                    s    S r   r   objZ_CREATEDr   r   _factory;   s    z5Test__rolledUpFactory.test_with_one.<locals>._factoryobjectr   r!   factory)r   _OBJr+   rolledr   r*   r   test_with_one8   s    z#Test__rolledUpFactory.test_with_onec                    sr   t  }t   t  t   fdd}fdd}fdd}| |||g}| |j|k | ||k d S )Nc                    s    S r   r   r(   )	_CREATED1r   r   	_factory1F   s    z;Test__rolledUpFactory.test_with_multiple.<locals>._factory1c                    s    S r   r   r(   )	_CREATED2r   r   	_factory2H   s    z;Test__rolledUpFactory.test_with_multiple.<locals>._factory2c                    s    S r   r   r(   )	_CREATED3r   r   	_factory3J   s    z;Test__rolledUpFactory.test_with_multiple.<locals>._factory3r,   )r   r/   r3   r5   r7   r0   r   )r2   r4   r6   r   test_with_multipleA   s    z(Test__rolledUpFactory.test_with_multipleN)r#   r$   r%   r   r1   r8   r   r   r   r   r&   2   s   	r&   c                   @   sp   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	e
dd Ze
dd Ze
dd Zdd ZdS )Test_adapterc                 O   s   ddl m} |||S )Nr   adapter)r   r;   )r   r   r   r;   r   r   r   r   S   s    zTest_adapter._callFUTc                 C   sJ   ddl m} ddlm} G dd d|}t }| || j|g |g| d S )Nr   	InterfaceComponentConfigurationErrorc                   @   s   e Zd ZdS )z-Test_adapter.test_empty_factory.<locals>.IFooNr#   r$   r%   r   r   r   r   IFooZ   s   rA   zope.interfacer=   r   r?   _makeConfigContextassertRaisesr   )r   r=   r?   rA   _cfg_ctxr   r   r   test_empty_factoryW   s        zTest_adapter.test_empty_factoryc                 C   s   ddl m} ddlm} G dd d|}G dd d|}G dd	 d	t}G d
d dt}t }| || j|||g||g| d S )Nr   r<   r>   c                   @   s   e Zd ZdS )z>Test_adapter.test_multiple_factory_multiple_for_.<locals>.IFooNr@   r   r   r   r   rA   c   s   rA   c                   @   s   e Zd ZdS )z>Test_adapter.test_multiple_factory_multiple_for_.<locals>.IBarNr@   r   r   r   r   IBare   s   rH   c                   @   s   e Zd ZdS )z=Test_adapter.test_multiple_factory_multiple_for_.<locals>.FooNr@   r   r   r   r   Foog   s   rI   c                   @   s   e Zd ZdS )z=Test_adapter.test_multiple_factory_multiple_for_.<locals>.BarNr@   r   r   r   r   Bari   s   rJ   rC   r=   r   r?   r-   rD   rE   r   )r   r=   r?   rA   rH   rI   rJ   rF   r   r   r   #test_multiple_factory_multiple_for_`   s       z0Test_adapter.test_multiple_factory_multiple_for_c                 C   s.   G dd dt }t }| t| j||g d S )Nc                   @   s   e Zd Zdd ZdS )z>Test_adapter.test_no_for__factory_not_adapts.<locals>._Factoryc                 S   s
   || _ d S r   r   r   r   r   r   r   __init__s   s    zGTest_adapter.test_no_for__factory_not_adapts.<locals>._Factory.__init__Nr#   r$   r%   rN   r   r   r   r   _Factoryr   s   rP   r-   rD   rE   	TypeErrorr   r   rP   rF   r   r   r   test_no_for__factory_not_adaptsp   s    z,Test_adapter.test_no_for__factory_not_adaptsc           
      C   s   ddl m} G dd d|}G dd d|}ddlm}m} ddl m} |||||d	G d
d dt}t }| ||g |j	d d }	| 
|	d d d	 d S )Nr   r<   c                   @   s   e Zd ZdS )z'Test_adapter.test_no_name.<locals>.IFooNr@   r   r   r   r   rA   z   s   rA   c                   @   s   e Zd ZdS )z'Test_adapter.test_no_name.<locals>.IBarNr@   r   r   r   r   rH   |   s   rH   )r;   namedimplementerbarc                   @   s   e Zd Zdd ZdS )z+Test_adapter.test_no_name.<locals>._Factoryc                 S   s
   || _ d S r   r   rM   r   r   r   rN      s    z4Test_adapter.test_no_name.<locals>._Factory.__init__NrO   r   r   r   r   rP      s   rP      r      )rC   r=   r   r;   rU   rW   r-   rD   r   _actionsassertEqual)
r   r=   rA   rH   r;   rU   rW   rP   rF   actionr   r   r   test_no_namex   s    zTest_adapter.test_no_namec                 C   sN   ddl m} ddlm} ||G dd dt}t }| t| j||g d S )Nr   r<   r:   c                   @   s   e Zd Zdd ZdS )z]Test_adapter.test_no_for__factory_adapts_no_provides_factory_not_implements.<locals>._Factoryc                 S   s
   || _ d S r   r   rM   r   r   r   rN      s    zfTest_adapter.test_no_for__factory_adapts_no_provides_factory_not_implements.<locals>._Factory.__init__NrO   r   r   r   r   rP      s   rP   )	rC   r=   zope.component._declarationr;   r-   rD   rE   rR   r   )r   r=   r;   rP   rF   r   r   r   >test_no_for__factory_adapts_no_provides_factory_not_implements   s    zKTest_adapter.test_no_for__factory_adapts_no_provides_factory_not_implementsc           	      C   s  ddl m} ddlm} ddlm} G dd d|}G dd dt}G d	d
 d
t}t }| j|||g||gdd | 	t
|jd | 	|jd d d |jd d }| 	|d | | 	|d d|f|df | 	|d d d | 	|d d j| | 	|d d |f | 	|d d | | 	|d d d | 	|d d d | 	|jd d d |jd d }| 	|d | | 	|d d  | 	|d d|f | 	|jd d d |jd d }| 	|d | | 	|d d  | 	|d d|f d S )Nr   r<   provideInterfacer   c                   @   s   e Zd ZdS )zCTest_adapter.test_multiple_factory_single_for__w_name.<locals>.IFooNr@   r   r   r   r   rA      s   rA   c                   @   s   e Zd ZdS )zBTest_adapter.test_multiple_factory_single_for__w_name.<locals>.FooNr@   r   r   r   r   rI      s   rI   c                   @   s   e Zd ZdS )zBTest_adapter.test_multiple_factory_single_for__w_name.<locals>.BarNr@   r   r   r   r   rJ      s   rJ   test)name   r   rY   callablediscriminatorr;   r   registerAdapter   rZ      TESTING )rC   r=   zope.component.interfacerb   r   r   r-   rD   r   r\   lenr[   r.   )	r   r=   rb   r   rA   rI   rJ   rF   r]   r   r   r   (test_multiple_factory_single_for__w_name   s>    
z5Test_adapter.test_multiple_factory_single_for__w_namec           	      C   sZ  ddl m} ddlm} ddlm} G dd d|}G dd dt}t }| j||g||gd	d
 | 	t
|jd | 	|jd d d |jd d }| 	|d | | 	|d d|f|df | 	|d d d |d d }| t|| | |jj|k | 	|d d |f | 	|d d | | 	|d d d | 	|d d d d S )Nr   r<   LocatingUntrustedAdapterFactoryr   c                   @   s   e Zd ZdS )zFTest_adapter.test_single_factory_single_for_w_permission.<locals>.IFooNr@   r   r   r   r   rA      s   rA   c                   @   s   e Zd ZdS )zETest_adapter.test_single_factory_single_for_w_permission.<locals>.FooNr@   r   r   r   r   rI      s   rI   testing)
permissionre   r   rY   rf   rg   r;   rl   r   rh   ri   rZ   rj   rk   rC   r=   zope.security.adapterrq   r   r   r-   rD   r   r\   rn   r[   r!   
isinstancer.   	r   r=   rq   r   rA   rI   rF   r]   factory_proxyr   r   r   +test_single_factory_single_for_w_permission   s0    
z8Test_adapter.test_single_factory_single_for_w_permissionc           	      C   sX  ddl m} ddlm} ddlm} G dd d|}G dd dt}t }| j||g||gd	d
 | 	t
|jd | 	|jd d d |jd d }| 	|d | | 	|d d|f|df | 	|d d d |d d }| t|| | |j|k | 	|d d |f | 	|d d | | 	|d d d | 	|d d d d S )Nr   r<   rp   r   c                   @   s   e Zd ZdS )zPTest_adapter.test_single_factory_single_for_w_locate_no_permission.<locals>.IFooNr@   r   r   r   r   rA      s   rA   c                   @   s   e Zd ZdS )zOTest_adapter.test_single_factory_single_for_w_locate_no_permission.<locals>.FooNr@   r   r   r   r   rI      s   rI   T)locatere   r   rY   rf   rg   r;   rl   r   rh   ri   rZ   rj   rk   rt   rw   r   r   r   5test_single_factory_single_for_w_locate_no_permission   s0    
zBTest_adapter.test_single_factory_single_for_w_locate_no_permissionc           	      C   sX  ddl m} ddlm} ddlm} G dd d|}G dd dt}t }| j||g||gd	d
 | 	t
|jd | 	|jd d d |jd d }| 	|d | | 	|d d|f|df | 	|d d d |d d }| t|| | |j|k | 	|d d |f | 	|d d | | 	|d d d | 	|d d d d S )Nr   r<   TrustedAdapterFactoryr   c                   @   s   e Zd ZdS )zQTest_adapter.test_single_factory_single_for_w_trusted_no_permission.<locals>.IFooNr@   r   r   r   r   rA      s   rA   c                   @   s   e Zd ZdS )zPTest_adapter.test_single_factory_single_for_w_trusted_no_permission.<locals>.FooNr@   r   r   r   r   rI      s   rI   T)trustedre   r   rY   rf   rg   r;   rl   r   rh   ri   rZ   rj   rk   )rC   r=   ru   r}   r   r   r-   rD   r   r\   rn   r[   r!   rv   r.   )	r   r=   r}   r   rA   rI   rF   r]   rx   r   r   r   6test_single_factory_single_for_w_trusted_no_permission   s,    
zCTest_adapter.test_single_factory_single_for_w_trusted_no_permissionc           	   	   C   s   ddl m} ddl m} ddlm} ddlm} G dd d|}||||G dd	 d	t}t }| 	||g | 
t|jd
 | 
|jd d d |jd d }| 
|d | | 
|d d|f|df | 
|d d||f|ddf d S )Nr   r<   rV   r:   r   c                   @   s   e Zd ZdS )zUTest_adapter.test_no_for__no_provides_factory_adapts_factory_implements.<locals>.IFooNr@   r   r   r   r   rA     s   rA   c                   @   s   e Zd Zdd ZdS )zYTest_adapter.test_no_for__no_provides_factory_adapts_factory_implements.<locals>._Factoryc                 S   s
   || _ d S r   r   rM   r   r   r   rN     s    zbTest_adapter.test_no_for__no_provides_factory_adapts_factory_implements.<locals>._Factory.__init__NrO   r   r   r   r   rP     s   rP   re   r   rY   rf   rg   r;   rl   r   rh   rk   )rC   r=   rW   r_   r;   r   r   r-   rD   r   r\   rn   r[   )	r   r=   rW   r;   r   rA   rP   rF   r]   r   r   r   :test_no_for__no_provides_factory_adapts_factory_implements  s.    


 zGTest_adapter.test_no_for__no_provides_factory_adapts_factory_implementsN)r#   r$   r%   r   rG   rL   rT   r^   r`   ro   r   ry   r{   r   r   r   r   r   r   r9   Q   s   	
&


r9   c                   @   s8   e Zd Zdd ZeZdd Zedd Zedd Zd	S )
Test_zcml_functionalc                 C   s   ddl m} |  d S )Nr   )	clearZCML)Zzope.component.tests.examplesr   )r   r   r   r   r   setUp/  s    zTest_zcml_functional.setUpc                 C   s"   ddl m} d| }|| d S )Nr   )	xmlconfigz        <configure xmlns='http://namespaces.zope.org/zope'
                   i18n_domain="zope">
           <include package="zope.component" file="meta.zcml" />
           %s
        </configure>)Zzope.configurationr   string)r   Zsnippetr   templater   r   r   _runSnippet4  s
    z Test_zcml_functional._runSnippetc           
      C   s   ddl m} ddlm} ddlm} ddlm}m} ddl	m
} | d | }||}||}	| ||	 | t||	|k d S )Nr   isProxyremoveSecurityProxyContent)I1A1ProxyFactorya  
            <adapter
            for="zope.component.testfiles.components.IContent"
            provides="zope.component.testfiles.adapter.I1"
            factory="zope.component.testfiles.adapter.A1"
            permission="zope.Public"
            trusted="yes"
             />)
zope.proxyr   zope.security.proxyr   r   r    zope.component.testfiles.adapterr   r   zope.security.checkerr   r   r!   type)
r   r   r   r   r   r   r   obpar   r   r   )test_with_proxy_factory_public_permission?  s    
z>Test_zcml_functional.test_with_proxy_factory_public_permissionc           
      C   s   ddl m} ddlm} ddlm} ddlm} ddlm	} ddl
m} | d | }||}||}	| ||	 | t||	|k d S )	Nr   r   r   r   )r   r   )LocationProxya  
        <adapter
          for="zope.component.testfiles.components.IContent"
          provides="zope.component.testfiles.adapter.I1"
          factory="zope.component.testfiles.adapter.A1"
          trusted="yes"
          locate="yes"
          />
        )r   r   r   r   r   r   r   r   r   r   Zzope.location.locationr   r   r!   r   )
r   r   r   r   r   r   r   r   r   r   r   r   r   test_located_proxy_factoryY  s    
	z/Test_zcml_functional.test_located_proxy_factoryN)	r#   r$   r%   r   ZtearDownr   r   r   r   r   r   r   r   r   ,  s   
r   c                   @   sp   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
edd Zedd Zedd ZdS )Test_subscriberc                 O   s   ddl m} |||S )Nr   )
subscriber)r   r   )r   r   r   r   r   r   r   r   v  s    zTest_subscriber._callFUTc                 C   s*   ddl m} t }| t| j||f d S )Nr   r<   rC   r=   rD   rE   rR   r   )r   r=   rF   r   r   r   test_no_factory_no_handlerz  s      z*Test_subscriber.test_no_factory_no_handlerc                 C   sH   ddl m} G dd d|}dd }t }| jt| j||f||d d S )Nr   r<   c                   @   s   e Zd ZdS )zBTest_subscriber.test_no_factory_w_handler_w_provides.<locals>.IFooNr@   r   r   r   r   rA     s   rA   c                  W   s   d S r   r   r   r   r   r   _handler  s    zFTest_subscriber.test_no_factory_w_handler_w_provides.<locals>._handler)r   providesr   )r   r=   rA   r   rF   r   r   r   $test_no_factory_w_handler_w_provides  s       z4Test_subscriber.test_no_factory_w_handler_w_providesc                 C   sH   ddl m} G dd dt}dd }t }| jt| j||f||d d S )Nr   r<   c                   @   s   e Zd ZdS )z5Test_subscriber.test_w_factory_w_handler.<locals>.FooNr@   r   r   r   r   rI     s   rI   c                  W   s   d S r   r   r   r   r   r   r     s    z:Test_subscriber.test_w_factory_w_handler.<locals>._handlerr   rC   r=   r-   rD   rE   rR   r   )r   r=   rI   r   rF   r   r   r   test_w_factory_w_handler  s       z(Test_subscriber.test_w_factory_w_handlerc                 C   s<   ddl m} G dd dt}t }| t| j||f| d S )Nr   r<   c                   @   s   e Zd ZdS )z7Test_subscriber.test_w_factory_no_provides.<locals>.FooNr@   r   r   r   r   rI     s   rI   r   )r   r=   rI   rF   r   r   r   test_w_factory_no_provides  s       z*Test_subscriber.test_w_factory_no_providesc                 C   sL   ddl m} G dd d|}G dd dt}t }| jt| j|||d d S )Nr   r<   c                   @   s   e Zd ZdS )zQTest_subscriber.test_w_factory_w_provides_no_for_factory_wo_adapter.<locals>.IFooNr@   r   r   r   r   rA     s   rA   c                   @   s   e Zd ZdS )zPTest_subscriber.test_w_factory_w_provides_no_for_factory_wo_adapter.<locals>.FooNr@   r   r   r   r   rI     s   rI   r.   r   r   )r   r=   rA   rI   rF   r   r   r   3test_w_factory_w_provides_no_for_factory_wo_adapter  s      zCTest_subscriber.test_w_factory_w_provides_no_for_factory_wo_adapterc                 C   s\  ddl m} ddlm} ddlm} dd }t }| j||f|d | t	|j
d | |j
d d d |j
d d	 }| |d
 | | |d d  | |d d d | |d d	 | | |d d |f | |d d d | |d d d | |j
d	 d d |j
d	 d	 }| |d
 | | |d d  | |d d|f d S )Nr   r<   ra   r   c                  W   s   d S r   r   r   r   r   r   r     s    zGTest_subscriber.test_no_factory_w_handler_no_provides.<locals>._handlerri   r   rY   rf   rg   r   ZregisterHandlerre   rl   rZ   rk   )rC   r=   rm   rb   r   r   rD   r   r\   rn   r[   )r   r=   rb   r   r   rF   r]   r   r   r   %test_no_factory_w_handler_no_provides  s*    z5Test_subscriber.test_no_factory_w_handler_no_providesc           	      C   s  ddl m} ddlm} ddlm} G dd d|}G dd dt}d	d
 }t }| j||f||d | 	t
|jd | 	|jd d d |jd d }| 	|d | | 	|d d  | 	|d d d | 	|d d | | 	|d d |f | 	|d d | | 	|d d d | 	|d d d | 	|jd d d |jd d }| 	|d | | 	|d d  | 	|d d|f | 	|jd d d |jd d }| 	|d | | 	|d d  | 	|d d|f d S )Nr   r<   ra   r   c                   @   s   e Zd ZdS )z7Test_subscriber.test_w_factory_w_provides.<locals>.IFooNr@   r   r   r   r   rA     s   rA   c                   @   s   e Zd ZdS )z6Test_subscriber.test_w_factory_w_provides.<locals>.FooNr@   r   r   r   r   rI     s   rI   c                  W   s   d S r   r   r   r   r   r   r     s    z;Test_subscriber.test_w_factory_w_provides.<locals>._handler)r   re   r   rY   rf   rg   r   registerSubscriptionAdapterri   rZ   rl   rj   rk   rC   r=   rm   rb   r   r   r-   rD   r   r\   rn   r[   )	r   r=   rb   r   rA   rI   r   rF   r]   r   r   r   test_w_factory_w_provides  s:    z)Test_subscriber.test_w_factory_w_providesc           
      C   s
  ddl m} ddlm} ddlm} ddlm} G dd d|}G dd	 d	t}t	 }| j
||f||d
d | t|jd | |jd d d |jd d }| |d | | |d d  | |d d d |d d }	| t|	| | |	jj|k | |d d |f | |d d | | |d d d | |d d d | |jd d d |jd d }| |d | | |d d  | |d d|f | |jd d d |jd d }| |d | | |d d  | |d d|f d S )Nr   r<   rp   ra   r   c                   @   s   e Zd ZdS )zDTest_subscriber.test_w_factory_w_provides_w_permission.<locals>.IFooNr@   r   r   r   r   rA     s   rA   c                   @   s   e Zd ZdS )zCTest_subscriber.test_w_factory_w_provides_w_permission.<locals>.FooNr@   r   r   r   r   rI     s   rI   rr   )r   rs   re   r   rY   rf   rg   r   r   ri   rZ   rl   rj   rk   rC   r=   ru   rq   rm   rb   r   r   r-   rD   r   r\   rn   r[   r!   rv   r.   
r   r=   rq   rb   r   rA   rI   rF   r]   rx   r   r   r   &test_w_factory_w_provides_w_permission  sH     z6Test_subscriber.test_w_factory_w_provides_w_permissionc           
      C   s  ddl m} ddlm} ddlm} ddlm} G dd d|}G dd	 d	t}t	 }| j
||f||d
d | t|jd | |jd d d |jd d }| |d | | |d d  | |d d d |d d }	| t|	| | |	j|k | |d d |f | |d d | | |d d d | |d d d | |jd d d |jd d }| |d | | |d d  | |d d|f | |jd d d |jd d }| |d | | |d d  | |d d|f d S )Nr   r<   rp   ra   r   c                   @   s   e Zd ZdS )zNTest_subscriber.test_w_factory_w_provides_wo_permission_w_locate.<locals>.IFooNr@   r   r   r   r   rA     s   rA   c                   @   s   e Zd ZdS )zMTest_subscriber.test_w_factory_w_provides_wo_permission_w_locate.<locals>.FooNr@   r   r   r   r   rI     s   rI   T)r   rz   re   r   rY   rf   rg   r   r   ri   rZ   rl   rj   rk   r   r   r   r   r   0test_w_factory_w_provides_wo_permission_w_locate  sB    z@Test_subscriber.test_w_factory_w_provides_wo_permission_w_locatec           
      C   s  ddl m} ddlm} ddlm} ddlm} G dd d|}G dd	 d	t}t	 }| j
||f||d
d | t|jd | |jd d d |jd d }| |d | | |d d  | |d d d |d d }	| t|	| | |	j|k | |d d |f | |d d | | |d d d | |d d d | |jd d d |jd d }| |d | | |d d  | |d d|f | |jd d d |jd d }| |d | | |d d  | |d d|f d S )Nr   r<   r|   ra   r   c                   @   s   e Zd ZdS )zOTest_subscriber.test_w_factory_w_provides_wo_permission_w_trusted.<locals>.IFooNr@   r   r   r   r   rA   C  s   rA   c                   @   s   e Zd ZdS )zNTest_subscriber.test_w_factory_w_provides_wo_permission_w_trusted.<locals>.FooNr@   r   r   r   r   rI   E  s   rI   T)r   r~   re   r   rY   rf   rg   r   r   ri   rZ   rl   rj   rk   )rC   r=   ru   r}   rm   rb   r   r   r-   rD   r   r\   rn   r[   r!   rv   r.   )
r   r=   r}   rb   r   rA   rI   rF   r]   rx   r   r   r   1test_w_factory_w_provides_wo_permission_w_trusted=  sB    zATest_subscriber.test_w_factory_w_provides_wo_permission_w_trustedN)r#   r$   r%   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   t  s   %
*
)r   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d Z	dd Z
dd Zedd ZdS )Test_utilityc                 O   s   ddl m} |||S )Nr   )utility)r   r   )r   r   r   r   r   r   r   r   j  s    zTest_utility._callFUTc                 C   s4   G dd dt }t }t }| jt| j|||d d S )Nc                   @   s   e Zd ZdS )z9Test_utility.test_w_factory_w_component.<locals>._FactoryNr@   r   r   r   r   rP   o  s   rP   )r.   	componentrQ   )r   rP   
_COMPONENTrF   r   r   r   test_w_factory_w_componentn  s    z'Test_utility.test_w_factory_w_componentc                 C   s.   G dd dt }t }| jt| j||d d S )Nc                   @   s   e Zd ZdS )zOTest_utility.test_w_factory_wo_provides_factory_no_implements.<locals>._FactoryNr@   r   r   r   r   rP   x  s   rP   r.   rQ   rS   r   r   r   0test_w_factory_wo_provides_factory_no_implementsw  s      z=Test_utility.test_w_factory_wo_provides_factory_no_implementsc                 C   s"   t }t }| jt| j||d d S )Nr   rQ   )r   r   rF   r   r   r   2test_w_component_wo_provides_component_no_provides~  s      z?Test_utility.test_w_component_wo_provides_component_no_providesc                 C   s  ddl m} ddlm} ddlm} G dd d|}G dd dt}t }| j|||d	 | 	t
|jd
 | 	|jd d d |jd d }| 	|d | | 	|d d|df | 	|d d d | 	|d d d  | 	|d d
 | | 	|d d d | 	|d d d | 	|d d|i | 	|jd d d |jd d }| 	|d | | 	|d d  | 	|d d|f d S )Nr   r<   ra   r   c                   @   s   e Zd ZdS )z4Test_utility.test_w_factory_w_provides.<locals>.IFooNr@   r   r   r   r   rA     s   rA   c                   @   s   e Zd ZdS )z3Test_utility.test_w_factory_w_provides.<locals>.FooNr@   r   r   r   r   rI     s   rI   r   ri   r   rY   rf   rg   r   rl   r   r   re   rZ   rk   r   r.   r   )r   r=   rb   r   rA   rI   rF   r]   r   r   r   r     s.    z&Test_utility.test_w_factory_w_providesc           	      C   s  ddl m} ddl m} ddlm} ddlm} G dd d|}||G dd	 d	t}t }| j	||d
 | 
t|jd | 
|jd d d |jd d }| 
|d | | 
|d d|df | 
|d d d | 
|d d d  | 
|d d | | 
|d d d | 
|d d d | 
|d d|i | 
|jd d d |jd d }| 
|d | | 
|d d  | 
|d d|f d S )Nr   r<   rV   ra   r   c                   @   s   e Zd ZdS )zHTest_utility.test_w_factory_wo_provides_factory_implements.<locals>.IFooNr@   r   r   r   r   rA     s   rA   c                   @   s   e Zd ZdS )zGTest_utility.test_w_factory_wo_provides_factory_implements.<locals>.FooNr@   r   r   r   r   rI     s   rI   r   ri   r   rY   rf   rg   r   rl   r   r   re   rZ   rk   r   r.   )rC   r=   rW   rm   rb   r   r   r-   rD   r   r\   rn   r[   )	r   r=   rW   rb   r   rA   rI   rF   r]   r   r   r   -test_w_factory_wo_provides_factory_implements  s2    z:Test_utility.test_w_factory_wo_provides_factory_implementsc                 C   sn  ddl m} ddlm} ddlm} G dd d|}t }t }| j||d|d | 	t
|jd	 | 	|jd d d
 |jd d }| 	|d | | 	|d d|df | 	|d d d | 	|d d | | 	|d d	 | | 	|d d d | 	|d d d | 	|jd d d
 |jd d }| 	|d | | 	|d d  | 	|d d|f d S )Nr   r<   ra   r   c                   @   s   e Zd ZdS )z=Test_utility.test_w_component_w_provides_w_name.<locals>.IFooNr@   r   r   r   r   rA     s   rA   rc   )r   rd   r   ri   r   rY   rf   rg   r   r   r   re   rZ   rk   rl   r   )r   r=   rb   r   rA   r   rF   r]   r   r   r   "test_w_component_w_provides_w_name  s2     z/Test_utility.test_w_component_w_provides_w_namec           
      C   s   ddl m}m}m} ddlm} G dd d|}|||dG dd dt}| }t }| j||d	 |j	d d
 }	| 
|	d d
 | | 
|	d d | | 
|	d d d d S )Nr   )r=   rW   rU   r   c                   @   s   e Zd ZdS )z?Test_utility.test_w_component_wo_provides_wo_name.<locals>.IFooNr@   r   r   r   r   rA     s   rA   fooc                   @   s   e Zd ZdS )z>Test_utility.test_w_component_wo_provides_wo_name.<locals>.FooNr@   r   r   r   r   rI     s   rI   r   rY   r   ri   re   )rC   r=   rW   rU   r   r   r-   rD   r   r[   r\   )
r   r=   rW   rU   r   rA   rI   r   rF   r]   r   r   r   $test_w_component_wo_provides_wo_name  s    z1Test_utility.test_w_component_wo_provides_wo_namec           
      C   s  ddl m} ddl m} ddlm} ddlm} G dd d|}G dd	 d	t}| }||| t }| j	||d
 | 
t|jd | 
|jd d d |jd d }	| 
|	d | | 
|	d d|df | 
|	d d d | 
|	d d | | 
|	d d | | 
|	d d d | 
|	d d d | 
|jd d d |jd d }	| 
|	d | | 
|	d d  | 
|	d d|f d S )Nr   r<   )directlyProvidesra   r   c                   @   s   e Zd ZdS )zJTest_utility.test_w_component_wo_provides_component_provides.<locals>.IFooNr@   r   r   r   r   rA     s   rA   c                   @   s   e Zd ZdS )zITest_utility.test_w_component_wo_provides_component_provides.<locals>.FooNr@   r   r   r   r   rI     s   rI   r   ri   r   rY   rf   rg   r   rl   r   r   re   rZ   rk   )rC   r=   r   rm   rb   r   r   r-   rD   r   r\   rn   r[   )
r   r=   r   rb   r   rA   rI   r   rF   r]   r   r   r   /test_w_component_wo_provides_component_provides  s2    
z<Test_utility.test_w_component_wo_provides_component_providesc                 C   s  ddl m} ddlm} ddlm} ddlm} ddlm	} G dd d|}G d	d
 d
t
}| }t }	| j|	||dd | t|	jd | |	jd d d |	jd d }
| |
d | | |
d d|df | |
d d d |
d d }| t|| | |||k | |jjddi | |
d d | | |
d d d | |
d d d | |	jd d d |	jd d }
| |
d | | |
d d  | |
d d|f d S )Nr   r<   )removeAllProxiesra   )PermissionProxyr   c                   @   s   e Zd Zdd ZdS )zCTest_utility.test_w_component_w_provides_w_permission.<locals>.IFooc                 S   s   d S r   r   r   r   r   r   rX     s    zGTest_utility.test_w_component_w_provides_w_permission.<locals>.IFoo.barNr#   r$   r%   rX   r   r   r   r   rA     s   rA   c                   @   s   e Zd Zdd ZdS )zBTest_utility.test_w_component_w_provides_w_permission.<locals>.Fooc                 S   s   d S r   r   r   r   r   r   rX     s    zFTest_utility.test_w_component_w_provides_w_permission.<locals>.Foo.barNr   r   r   r   r   rI     s   rI   rr   )r   r   rs   ri   r   rY   rf   rg   r   rl   r   r   rX   re   rZ   rk   )rC   r=   r   r   rm   rb   Zzope.component.securityr   r   r   r-   rD   r   r\   rn   r[   r!   rv   __Security_checker__get_permissions)r   r=   r   rb   r   r   rA   rI   r   rF   r]   Zcomponent_proxyr   r   r   (test_w_component_w_provides_w_permission  sB     
z5Test_utility.test_w_component_w_provides_w_permissionN)r#   r$   r%   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   h  s   	r   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )Test_interfacec                 O   s   ddl m} |||S )Nr   )	interface)r   r   )r   r   r   r   r   r   r   r   5  s    zTest_interface._callFUTc                 C   s   ddl m} ddlm} G dd d|}t }| || | t|jd | |jd d d |jd d }| |d | | |d	 d  | |d
 d|d f d S )Nr   r<   ra   c                   @   s   e Zd ZdS )z1Test_interface.test_wo_name_wo_type.<locals>.IFooNr@   r   r   r   r   rA   <  s   rA   rY   r   rf   rg   r   rl   	rC   r=   rm   rb   rD   r   r\   rn   r[   )r   r=   rb   rA   rF   r]   r   r   r   test_wo_name_wo_type9  s    z#Test_interface.test_wo_name_wo_typec                 C   s   ddl m} ddlm} G dd d|}G dd d|}t }| j||d|d	 | t|jd
 | |jd d d |jd d
 }| |d | | |d d  | |d d||f d S )Nr   r<   ra   c                   @   s   e Zd ZdS )z/Test_interface.test_w_name_w_type.<locals>.IFooNr@   r   r   r   r   rA   J  s   rA   c                   @   s   e Zd ZdS )z/Test_interface.test_w_name_w_type.<locals>.IBarNr@   r   r   r   r   rH   L  s   rH   r   )rd   r   rY   r   rf   rg   r   r   )r   r=   rb   rA   rH   rF   r]   r   r   r   test_w_name_w_typeG  s    z!Test_interface.test_w_name_w_typeN)r#   r$   r%   r   r   r   r   r   r   r   r   3  s   r   c                   @   sp   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
edd Zedd Zedd ZdS )	Test_viewc                 O   s   ddl m} |||S )Nr   )view)r   r   )r   r   r   r   r   r   r   r   Z  s    zTest_view._callFUTc              
   C   st   ddl m} ddlm} G dd d|}G dd d|}G dd	 d	t}t }| j|| j||f|d
||f|d d S )Nr   r<   r>   c                   @   s   e Zd ZdS )zCTest_view.test_w_allowed_interface_wo_permission.<locals>.IViewTypeNr@   r   r   r   r   	IViewTypea  s   r   c                   @   s   e Zd Zdd Zdd ZdS )z?Test_view.test_w_allowed_interface_wo_permission.<locals>.IViewc                   S   s   d S r   r   r   r   r   r   r   d  s    zCTest_view.test_w_allowed_interface_wo_permission.<locals>.IView.fooc                   S   s   d S r   r   r   r   r   r   rX   f  s    zCTest_view.test_w_allowed_interface_wo_permission.<locals>.IView.barNr#   r$   r%   r   rX   r   r   r   r   IViewc  s   r   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )z?Test_view.test_w_allowed_interface_wo_permission.<locals>._Viewc                 S   s
   || _ d S r   r   rM   r   r   r   rN   i  s    zHTest_view.test_w_allowed_interface_wo_permission.<locals>._View.__init__c                   S   s   d S r   r   r   r   r   r   r   k  s    zCTest_view.test_w_allowed_interface_wo_permission.<locals>._View.fooc                   S   s   d S r   r   r   r   r   r   rX   m  s    zCTest_view.test_w_allowed_interface_wo_permission.<locals>._View.barNr#   r$   r%   rN   r   rX   r   r   r   r   _Viewh  s   r   rl   )for_allowed_interfacerK   )r   r=   r?   r   r   r   rF   r   r   r   &test_w_allowed_interface_wo_permission^  s        z0Test_view.test_w_allowed_interface_wo_permissionc              
   C   sd   ddl m} ddlm} G dd d|}G dd dt}t }| j|| j||f|d||fd	d
 d S )Nr   r<   r>   c                   @   s   e Zd ZdS )zDTest_view.test_w_allowed_attributes_wo_permission.<locals>.IViewTypeNr@   r   r   r   r   r   x  s   r   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )z@Test_view.test_w_allowed_attributes_wo_permission.<locals>._Viewc                 S   s
   || _ d S r   r   rM   r   r   r   rN   {  s    zITest_view.test_w_allowed_attributes_wo_permission.<locals>._View.__init__c                   S   s   d S r   r   r   r   r   r   r   }  s    zDTest_view.test_w_allowed_attributes_wo_permission.<locals>._View.fooc                   S   s   d S r   r   r   r   r   r   rX     s    zDTest_view.test_w_allowed_attributes_wo_permission.<locals>._View.barNr   r   r   r   r   r   z  s   r   rl   r   rX   )r   allowed_attributesrK   r   r=   r?   r   r   rF   r   r   r   'test_w_allowed_attributes_wo_permissionu  s        z1Test_view.test_w_allowed_attributes_wo_permissionc              	   C   sP   ddl m} ddlm} G dd d|}t }| j|| j|d|d||fd d S )	Nr   r<   r>   c                   @   s   e Zd ZdS )z4Test_view.test_w_factory_as_empty.<locals>.IViewTypeNr@   r   r   r   r   r     s   r   r   rl   r   rB   )r   r=   r?   r   rF   r   r   r   test_w_factory_as_empty  s        z!Test_view.test_w_factory_as_emptyc              	   C   st   ddl m} ddlm} G dd d|}G dd dt}G dd	 d	t}t }| j|| j|||f|d
||fd d S )Nr   r<   r>   c                   @   s   e Zd ZdS )zBTest_view.test_w_multiple_factory_multiple_for_.<locals>.IViewTypeNr@   r   r   r   r   r     s   r   c                   @   s   e Zd ZdS )z<Test_view.test_w_multiple_factory_multiple_for_.<locals>.FooNr@   r   r   r   r   rI     s   rI   c                   @   s   e Zd ZdS )z<Test_view.test_w_multiple_factory_multiple_for_.<locals>.BarNr@   r   r   r   r   rJ     s   rJ   rl   r   rK   )r   r=   r?   r   rI   rJ   rF   r   r   r   %test_w_multiple_factory_multiple_for_  s        z/Test_view.test_w_multiple_factory_multiple_for_c              	   C   s^   ddl m} ddlm} G dd d|}G dd dt}t }| j|| j||f|dd	d
 d S )Nr   r<   r>   c                   @   s   e Zd ZdS )z1Test_view.test_w_for__as_empty.<locals>.IViewTypeNr@   r   r   r   r   r     s   r   c                   @   s   e Zd Zdd ZdS )z-Test_view.test_w_for__as_empty.<locals>._Viewc                 S   s
   || _ d S r   r   rM   r   r   r   rN     s    z6Test_view.test_w_for__as_empty.<locals>._View.__init__NrO   r   r   r   r   r     s   r   rl   r   r   rK   r   r   r   r   test_w_for__as_empty  s        zTest_view.test_w_for__as_emptyc                 C   sL  ddl m} ddlm} ddlm} G dd d|}G dd dt}t }| j||f|d	|fd
 | 	t
|jd | 	|jd d d |jd d }| 	|d | | 	|d d||fd	|f | 	|d d d | 	|d d | | 	|d d ||f | 	|d d | | 	|d d d	 | 	|d d d | 	|jd d d |jd d }| 	|d | | 	|d d  | 	|d d|f | 	|jd d d |jd d }| 	|d | | 	|d d  | 	|d d|f | 	|jd d d |jd d }| 	|d | | 	|d d  | 	|d d|f d S )Nr   r<   r   ra   c                   @   s   e Zd ZdS )zSTest_view.test_w_single_factory_single_for__wo_permission_w_name.<locals>.IViewTypeNr@   r   r   r   r   r     s   r   c                   @   s   e Zd Zdd ZdS )zOTest_view.test_w_single_factory_single_for__wo_permission_w_name.<locals>._Viewc                 S   s
   || _ d S r   r   rM   r   r   r   rN     s    zXTest_view.test_w_single_factory_single_for__wo_permission_w_name.<locals>._View.__init__NrO   r   r   r   r   r     s   r   rc   r   rZ   r   rY   rf   rg   r   r   rh   ri   re   rj   rk   rl   )rC   r=   r   r   rm   rb   r-   rD   r   r\   rn   r[   )r   r=   r   rb   r   r   rF   r]   r   r   r   6test_w_single_factory_single_for__wo_permission_w_name  sF    
z@Test_view.test_w_single_factory_single_for__wo_permission_w_namec                 C   s  ddl m} ddlm} G dd d|}G dd dt}G dd	 d	t}t }| j|||g|d
|fd | |jd d d |jd d }| |d | | |d d||fd
|f | |d d d |d d }| 	|j
|k t }	t }
||	|
}| 	t|| | 	|j|
k | 	t|j| | 	|jj|	k | |d d ||f | |d d | | |d d d
 | |d d d d S )Nr   r<   r   c                   @   s   e Zd ZdS )zNTest_view.test_w_multiple_factory_single_for__wo_permission.<locals>.IViewTypeNr@   r   r   r   r   r     s   r   c                   @   s   e Zd Zdd ZdS )zJTest_view.test_w_multiple_factory_single_for__wo_permission.<locals>._Viewc                 S   s
   || _ d S r   r   rM   r   r   r   rN     s    zSTest_view.test_w_multiple_factory_single_for__wo_permission.<locals>._View.__init__NrO   r   r   r   r   r     s   r   c                   @   s   e Zd Zdd ZdS )zKTest_view.test_w_multiple_factory_single_for__wo_permission.<locals>._View2c                 S   s   || _ || _d S r   r   requestr   r   r   r   r   r   rN     s    zTTest_view.test_w_multiple_factory_single_for__wo_permission.<locals>._View2.__init__NrO   r   r   r   r   _View2  s   r   rl   r   r   rY   rf   rg   r   r   rh   ri   re   rZ   rj   rk   )rC   r=   r   r   r-   rD   r   r\   r[   r!   r.   rv   r   r   )r   r=   r   r   r   r   rF   r]   r.   r   r   r   r   r   r   1test_w_multiple_factory_single_for__wo_permission  s:    

z;Test_view.test_w_multiple_factory_single_for__wo_permissionc                 C   sf  ddl m} ddlm} G dd d|}G dd dt}t }| j||g|d|fd	d
 | |jd d d |jd d }| |d | | |d d||fd|f | |d d d |d d }t }t }	|||	}
| 	|
j
|k | 	|
j|	k | 	|j|k | |d d ||f | |d d | | |d d d | |d d d d S )Nr   r<   r   c                   @   s   e Zd ZdS )zKTest_view.test_w_single_factory_single_for__w_permission.<locals>.IViewTypeNr@   r   r   r   r   r     s   r   c                   @   s   e Zd Zdd ZdS )zGTest_view.test_w_single_factory_single_for__w_permission.<locals>._Viewc                 S   s   || _ || _d S r   r   r   r   r   r   rN     s    zPTest_view.test_w_single_factory_single_for__w_permission.<locals>._View.__init__NrO   r   r   r   r   r      s   r   rl   rr   )r   rs   r   rY   rf   rg   r   r   rh   ri   re   rZ   rj   rk   )rC   r=   r   r   r-   rD   r   r\   r[   r!   r   r   r.   )r   r=   r   r   r   rF   r]   r.   r   r   r   r   r   r   .test_w_single_factory_single_for__w_permission  s4    

z8Test_view.test_w_single_factory_single_for__w_permissionc           	   	   C   s   ddl m} ddlm} G dd d|}G dd dt}t }| j||g|d|fd	d
d | |jd d d |jd d }| |d | | |d d||fd|f | |d d d |d d }|j	}| |j
dd	i d S )Nr   r<   r   c                   @   s   e Zd ZdS )z]Test_view.test_w_single_factory_single_for__w_permission_and_allowed_attrs.<locals>.IViewTypeNr@   r   r   r   r   r     s   r   c                   @   s   e Zd Zdd Zdd ZdS )zYTest_view.test_w_single_factory_single_for__w_permission_and_allowed_attrs.<locals>._Viewc                 S   s   || _ || _d S r   r   r   r   r   r   rN   !  s    zbTest_view.test_w_single_factory_single_for__w_permission_and_allowed_attrs.<locals>._View.__init__c                 S   s   d S r   r   r   r   r   r   rX   $  s    z]Test_view.test_w_single_factory_single_for__w_permission_and_allowed_attrs.<locals>._View.barNr#   r$   r%   rN   rX   r   r   r   r   r      s   r   rl   rr   )rX   )r   rs   r   r   rY   rf   rg   r   r   rh   rX   rC   r=   r   r   r-   rD   r   r\   r[   checkerr   	r   r=   r   r   r   rF   r]   r.   r   r   r   r   @test_w_single_factory_single_for__w_permission_and_allowed_attrs  s&     
zJTest_view.test_w_single_factory_single_for__w_permission_and_allowed_attrsc           	   	   C   s   ddl m} ddlm} G dd d|}G dd dt}t }| j||g|d|fd	|fd
 | |jd d d |jd d }| |d | | |d d||fd|f | |d d d |d d }|j	}| |j
dd	i d S )Nr   r<   r   c                   @   s   e Zd Zdd ZdS )z]Test_view.test_w_single_factory_single_for__w_permission_and_allowed_iface.<locals>.IViewTypec                 S   s   d S r   r   r   r   r   r   rX   9  s    zaTest_view.test_w_single_factory_single_for__w_permission_and_allowed_iface.<locals>.IViewType.barNr   r   r   r   r   r   8  s   r   c                   @   s   e Zd Zdd Zdd ZdS )zYTest_view.test_w_single_factory_single_for__w_permission_and_allowed_iface.<locals>._Viewc                 S   s   || _ || _d S r   r   r   r   r   r   rN   <  s    zbTest_view.test_w_single_factory_single_for__w_permission_and_allowed_iface.<locals>._View.__init__c                 S   s   d S r   r   r   r   r   r   rX   ?  s    z]Test_view.test_w_single_factory_single_for__w_permission_and_allowed_iface.<locals>._View.barNr   r   r   r   r   r   ;  s   r   rl   rr   )r   rs   r   r   rY   rf   rg   r   r   rh   rX   r   r   r   r   r   @test_w_single_factory_single_for__w_permission_and_allowed_iface4  s&     
zJTest_view.test_w_single_factory_single_for__w_permission_and_allowed_ifaceN)r#   r$   r%   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   X  s   
*$

r   c                   @   s8   e Zd Zdd Zdd Zdd Zdd Zed	d
 ZdS )Test_resourcec                 O   s   ddl m} |||S )Nr   )resource)r   r   )r   r   r   r   r   r   r   r   R  s    zTest_resource._callFUTc              	   C   sn   ddl m} ddlm} G dd d|}G dd d|}G dd	 d	t}t }| j|| j||f|d
|d d S )Nr   r<   r>   c                   @   s   e Zd ZdS )zKTest_resource.test_w_allowed_interface_wo_permission.<locals>.IResourceTypeNr@   r   r   r   r   IResourceTypeY  s   r   c                   @   s   e Zd Zdd Zdd ZdS )zCTest_resource.test_w_allowed_interface_wo_permission.<locals>.IViewc                   S   s   d S r   r   r   r   r   r   r   \  s    zGTest_resource.test_w_allowed_interface_wo_permission.<locals>.IView.fooc                   S   s   d S r   r   r   r   r   r   rX   ^  s    zGTest_resource.test_w_allowed_interface_wo_permission.<locals>.IView.barNr   r   r   r   r   r   [  s   r   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )zGTest_resource.test_w_allowed_interface_wo_permission.<locals>._Resourcec                 S   s
   || _ d S r   r   rM   r   r   r   rN   a  s    zPTest_resource.test_w_allowed_interface_wo_permission.<locals>._Resource.__init__c                   S   s   d S r   r   r   r   r   r   r   c  s    zKTest_resource.test_w_allowed_interface_wo_permission.<locals>._Resource.fooc                   S   s   d S r   r   r   r   r   r   rX   e  s    zKTest_resource.test_w_allowed_interface_wo_permission.<locals>._Resource.barNr   r   r   r   r   	_Resource`  s   r   rl   )r   rK   )r   r=   r?   r   r   r   rF   r   r   r   r   V  s       z4Test_resource.test_w_allowed_interface_wo_permissionc              	   C   s^   ddl m} ddlm} G dd d|}G dd dt}t }| j|| j||f|dd	d
 d S )Nr   r<   r>   c                   @   s   e Zd ZdS )zLTest_resource.test_w_allowed_attributes_wo_permission.<locals>.IResourceTypeNr@   r   r   r   r   r   p  s   r   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )zHTest_resource.test_w_allowed_attributes_wo_permission.<locals>._Resourcec                 S   s
   || _ d S r   r   rM   r   r   r   rN   s  s    zQTest_resource.test_w_allowed_attributes_wo_permission.<locals>._Resource.__init__c                   S   s   d S r   r   r   r   r   r   r   u  s    zLTest_resource.test_w_allowed_attributes_wo_permission.<locals>._Resource.fooc                   S   s   d S r   r   r   r   r   r   rX   w  s    zLTest_resource.test_w_allowed_attributes_wo_permission.<locals>._Resource.barNr   r   r   r   r   r   r  s   r   rl   r   )r   rK   )r   r=   r?   r   r   rF   r   r   r   r   m  s       z5Test_resource.test_w_allowed_attributes_wo_permissionc                 C   s  ddl m} ddlm} ddlm} G dd d|}G dd dt}t }| |||d	 | 	t
|jd
 | 	|jd d d |jd d }| 	|d | | 	|d dd	||f | 	|d d d | 	|d d | | 	|d d |f | 	|d d
 | | 	|d d d	 | 	|d d d | 	|jd d d |jd d }| 	|d | | 	|d d  | 	|d d|f | 	|jd d d |jd d }| 	|d | | 	|d d  | 	|d d|f d S )Nr   r<   ra   r   c                   @   s   e Zd ZdS )z>Test_resource.test_wo_permission_w_name.<locals>.IResourceTypeNr@   r   r   r   r   r     s   r   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )z:Test_resource.test_wo_permission_w_name.<locals>._Resourcec                 S   s
   || _ d S r   r   rM   r   r   r   rN     s    zCTest_resource.test_wo_permission_w_name.<locals>._Resource.__init__c                   S   s   d S r   r   r   r   r   r   r     s    z>Test_resource.test_wo_permission_w_name.<locals>._Resource.fooc                   S   s   d S r   r   r   r   r   r   rX     s    z>Test_resource.test_wo_permission_w_name.<locals>._Resource.barNr   r   r   r   r   r     s   r   rc   re   r   rY   rf   rg   r   r   rh   ri   rZ   rj   rk   rl   r   )r   r=   rb   r   r   r   rF   r]   r   r   r   test_wo_permission_w_name  s<    

z'Test_resource.test_wo_permission_w_namec                 C   sn  ddl m} ddlm} G dd d|}G dd dt}t }| j|||dd	d
d | t|j	d | |j	d d d |j	d d }| |d | | |d dd||f | |d d d |d d }| 
|j|k t }||}	|	j}
| |
jdd	i | 
|	j|k | |d d |f | |d d | | |d d d | |d d d d S )Nr   r<   r   c                   @   s   e Zd ZdS )z6Test_resource.test_w_permission.<locals>.IResourceTypeNr@   r   r   r   r   r     s   r   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )z2Test_resource.test_w_permission.<locals>._Resourcec                 S   s
   || _ d S r   r   rM   r   r   r   rN     s    z;Test_resource.test_w_permission.<locals>._Resource.__init__c                   S   s   d S r   r   r   r   r   r   r     s    z6Test_resource.test_w_permission.<locals>._Resource.fooc                   S   s   d S r   r   r   r   r   r   rX     s    z6Test_resource.test_w_permission.<locals>._Resource.barNr   r   r   r   r   r     s   r   rc   rr   )r   )rs   r   re   r   rY   rf   rg   r   r   rh   r   ri   rZ   rj   rk   )rC   r=   r   r   r-   rD   r   r\   rn   r[   r!   r.   r   r   r   )r   r=   r   r   r   rF   r]   r.   r   r   r   r   r   r   test_w_permission  s8     

zTest_resource.test_w_permissionN)	r#   r$   r%   r   r   r   r   r   r   r   r   r   r   r   P  s   )r   c                  C   s   G dd dt } |  S )Nc                   @   s    e Zd ZdZdd Zdd ZdS )z$_makeConfigContext.<locals>._Contextrk   c                 S   s
   g | _ d S r   )r[   r   r   r   r   rN     s    z-_makeConfigContext.<locals>._Context.__init__c                 _   s   | j ||f d S r   )r[   append)r   r   r   r   r   r   r]     s    z+_makeConfigContext.<locals>._Context.actionN)r#   r$   r%   inforN   r]   r   r   r   r   _Context  s   r   )r-   )r   r   r   r   rD     s    rD   c                   C   sR   t t tt tt tt tt tt tt t	t t
t tf	S r   )unittestZ	TestSuiteZ	makeSuiter   r&   r9   r   r   r   r   r   r   r   r   r   r   
test_suite  s    r   )__doc__r   r   ZTestCaser   r&   r9   r   r   r   r   r   r   rD   r   r   r   r   r   <module>   s"    \H u L% y}	