U
    ,W$                     @   sr   d Z ddl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S )zPure-Python hookable tests
    Nc                   @   s$   e Zd Zdd Zdd Zdd ZdS )PermissionProxyTestsc                 C   s   ddl m} |S )Nr   )PermissionProxy)zope.component.securityr   )selfr    r   D/usr/lib/python3/dist-packages/zope/component/tests/test_security.py_getTargetClass   s    z$PermissionProxyTests._getTargetClassc                 C   s   |   |S N)r   )r   wrappedr   r   r   _makeOne   s    zPermissionProxyTests._makeOnec                 C   st   ddl m} ddl m} ddl m} G dd d|}||G dd dt}| }| |}| |||| d S )	Nr   	Interface)implementer)
providedByc                   @   s   e Zd ZdS )zGPermissionProxyTests.test_proxy_delegates___provided_by__.<locals>.IFooN__name__
__module____qualname__r   r   r   r   IFoo    s   r   c                   @   s   e Zd ZdS )zFPermissionProxyTests.test_proxy_delegates___provided_by__.<locals>.FooNr   r   r   r   r   Foo"   s   r   )zope.interfacer   r   r   objectr   assertEqual)r   r   r   r   r   r   fooproxyr   r   r   $test_proxy_delegates___provided_by__   s    
z9PermissionProxyTests.test_proxy_delegates___provided_by__N)r   r   r   r   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d Zd	S )
Test__checkerc                 O   s   ddl m} |||S )Nr   )_checker)r   r   )r   argskwr   r   r   r   _callFUT,   s    zTest__checker._callFUTc                 C   s@   ddl m} | t ddd}| |jd|i | |j d S )Nr   CheckerPubliczope.Publicr   __call__)zope.security.checkerr"   r    r   r   get_permissionsassertFalseset_permissions)r   r"   checkerr   r   r   0test_no_allowed_attributes_no_allowed_interfaces0   s    z>Test__checker.test_no_allowed_attributes_no_allowed_interfacesc                 C   sh   ddl m} G dd d|}G dd d|}| t d||fd}| |jdddd	 | |j d S )
Nr   r   c                   @   s   e Zd Zdd Zdd ZdS )z5Test__checker.test_w_allowed_interfaces.<locals>.IFooc                 S   s   d S r	   r   r   r   r   r   bar9   s    z9Test__checker.test_w_allowed_interfaces.<locals>.IFoo.barc                 S   s   d S r	   r   r+   r   r   r   baz;   s    z9Test__checker.test_w_allowed_interfaces.<locals>.IFoo.bazN)r   r   r   r,   r-   r   r   r   r   r   8   s   r   c                   @   s   e Zd Zdd ZdS )z6Test__checker.test_w_allowed_interfaces.<locals>.ISpamc                 S   s   d S r	   r   r+   r   r   r   qux>   s    z:Test__checker.test_w_allowed_interfaces.<locals>.ISpam.quxN)r   r   r   r.   r   r   r   r   ISpam=   s   r/   testingr   )r,   r-   r.   )r   r   r    r   r   r&   r'   r(   )r   r   r   r/   r)   r   r   r   test_w_allowed_interfaces6   s    
z'Test__checker.test_w_allowed_interfacesc                 C   s6   |  t ddd}| |jddd | |j d S )Nr0   r   )r   r,   )r    r   r   r&   r'   r(   )r   r)   r   r   r   test_w_allowed_attributesE   s
    z'Test__checker.test_w_allowed_attributesN)r   r   r   r    r*   r1   r2   r   r   r   r   r   *   s   r   c                   @   sD   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S )Test_proxifyc                 O   s   ddl m} |||S )Nr   )proxify)r   r4   )r   r   r   r4   r   r   r   r    N   s    zTest_proxify._callFUTc                 C   s   G dd dt }| S )Nc                   @   s   e Zd Zdd ZdS )z+Test_proxify._makeContext.<locals>._Contextc                 S   s   d S r	   r   r+   r   r   r   r,   T   s    z/Test_proxify._makeContext.<locals>._Context.barNr   r   r   r,   r   r   r   r   _ContextS   s   r6   )r   )r   r6   r   r   r   _makeContextR   s    zTest_proxify._makeContextc                 C   s    |   }| jt| j|dd d S )Nr0   )
permission)r7   assertRaises
ValueErrorr    )r   ctxr   r   r   test_no_checker_no_providesX   s    z(Test_proxify.test_no_checker_no_providesc                 C   s<   ddl m} G dd d|}|  }| jt| j||d d S )Nr   r   c                   @   s   e Zd Zdd ZdS )z8Test_proxify.test_no_checker_no_permission.<locals>.IFooc                 S   s   d S r	   r   r+   r   r   r   r,   _   s    z<Test_proxify.test_no_checker_no_permission.<locals>.IFoo.barNr5   r   r   r   r   r   ^   s   r   )provides)r   r   r7   r9   r:   r    )r   r   r   r;   r   r   r   test_no_checker_no_permission\   s    z*Test_proxify.test_no_checker_no_permissionc                 C   s   ddl m} ddlm} ddlm} G dd d|}|  }| j||dd}| |||k |j	}| 
|jd	|i | |j d S )
Nr   r   r!   getProxiedObjectc                   @   s   e Zd Zdd ZdS )zKTest_proxify.test_no_checker_w_provides_and_permission_public.<locals>.IFooc                 S   s   d S r	   r   r+   r   r   r   r,   i   s    zOTest_proxify.test_no_checker_w_provides_and_permission_public.<locals>.IFoo.barNr5   r   r   r   r   r   h   s   r   r#   r=   r8   r,   )r   r   r%   r"   
zope.proxyr@   r7   r    
assertTrue__Security_checker__r   r&   r'   r(   )r   r   r"   r@   r   r;   r   r)   r   r   r   0test_no_checker_w_provides_and_permission_publicd   s    z=Test_proxify.test_no_checker_w_provides_and_permission_publicc                 C   sz   ddl m} ddlm} G dd d|}|  }| j||dd}| |||k |j}| |j	ddi | 
|j d S )	Nr   r   r?   c                   @   s   e Zd Zdd ZdS )zNTest_proxify.test_no_checker_w_provides_and_permission_protected.<locals>.IFooc                 S   s   d S r	   r   r+   r   r   r   r,   v   s    zRTest_proxify.test_no_checker_w_provides_and_permission_protected.<locals>.IFoo.barNr5   r   r   r   r   r   u   s   r   r0   rA   r,   )r   r   rB   r@   r7   r    rC   rD   r   r&   r'   r(   )r   r   r@   r   r;   r   r)   r   r   r   3test_no_checker_w_provides_and_permission_protectedr   s    z@Test_proxify.test_no_checker_w_provides_and_permission_protectedc                 C   sL   ddl m} t }|  }| ||}| |||k | |j|k d S )Nr   r?   )rB   r@   r   r7   r    rC   rD   )r   r@   Z_CHECKERr;   r   r   r   r   test_w_checker   s    zTest_proxify.test_w_checkerN)
r   r   r   r    r7   r<   r>   rE   rF   rG   r   r   r   r   r3   L   s   r3   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )Test_protectedFactoryc                 O   s   ddl m} |||S )Nr   )protectedFactory)r   rI   )r   r   r   rI   r   r   r   r       s    zTest_protectedFactory._callFUTc                 C   st   ddl m} ddlm} G dd d|}G dd dt}| ||d}| |j|k | }| |j	j
d	|i d S )
Nr   r   r!   c                   @   s   e Zd Zdd ZdS )zCTest_protectedFactory.test_public_not_already_proxied.<locals>.IFooc                 S   s   d S r	   r   r+   r   r   r   r,      s    zGTest_protectedFactory.test_public_not_already_proxied.<locals>.IFoo.barNr5   r   r   r   r   r      s   r   c                   @   s   e Zd Zdd ZdS )zGTest_protectedFactory.test_public_not_already_proxied.<locals>._Factoryc                 S   s   d S r	   r   r+   r   r   r   r,      s    zKTest_protectedFactory.test_public_not_already_proxied.<locals>._Factory.barNr5   r   r   r   r   _Factory   s   rJ   r#   r,   )r   r   r%   r"   r   r    rC   factoryr   rD   r&   )r   r   r"   r   rJ   	protectedr   r   r   r   test_public_not_already_proxied   s    
z5Test_protectedFactory.test_public_not_already_proxiedc                 C   sr   ddl m} ddlm} G dd d|}G dd dt}| ||d}| |j|k | }| ||d	g d S )
Nr   r   )getTestProxyItemsc                   @   s   e Zd Zdd ZdS )zBTest_protectedFactory.test_nonpublic_already_proxied.<locals>.IFooc                 S   s   d S r	   r   r+   r   r   r   r,      s    zFTest_protectedFactory.test_nonpublic_already_proxied.<locals>.IFoo.barNr5   r   r   r   r   r      s   r   c                   @   s   e Zd ZdZdd ZdS )zFTest_protectedFactory.test_nonpublic_already_proxied.<locals>._Factory)Zonec                 S   s   d S r	   r   r+   r   r   r   r,      s    zJTest_protectedFactory.test_nonpublic_already_proxied.<locals>._Factory.barN)r   r   r   	__slots__r,   r   r   r   r   rJ      s   rJ   r0   )r,   r0   )	r   r   Zzope.security.proxyrN   r   r    rC   rK   r   )r   r   rN   r   rJ   rL   r   r   r   r   test_nonpublic_already_proxied   s    z4Test_protectedFactory.test_nonpublic_already_proxiedN)r   r   r   r    rM   rP   r   r   r   r   rH      s   rH   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dd ZdS )Test_securityAdapterFactoryc                 O   s   ddl m} |||S )Nr   )securityAdapterFactory)r   rR   )r   r   r   rR   r   r   r   r       s    z$Test_securityAdapterFactory._callFUTc                 C   s.   G dd dt }| | |d dd|k d S )Nc                   @   s   e Zd ZdS )zVTest_securityAdapterFactory.test_no_permission_untrusted_no_location.<locals>._FactoryNr   r   r   r   r   rJ      s   rJ   Fr   rC   r    r   rJ   r   r   r   (test_no_permission_untrusted_no_location   s    zDTest_securityAdapterFactory.test_no_permission_untrusted_no_locationc                 C   s.   G dd dt }| | |ddd|k d S )Nc                   @   s   e Zd ZdS )zOTest_securityAdapterFactory.test_public_untrusted_no_location.<locals>._FactoryNr   r   r   r   r   rJ      s   rJ   r#   FrS   rT   r   r   r   !test_public_untrusted_no_location   s    z=Test_securityAdapterFactory.test_public_untrusted_no_locationc                 C   s:   ddl m} G dd dt}| | ||dd|k d S )Nr   r!   c                   @   s   e Zd ZdS )zVTest_securityAdapterFactory.test_CheckerPublic_untrusted_no_location.<locals>._FactoryNr   r   r   r   r   rJ      s   rJ   F)r%   r"   r   rC   r    )r   r"   rJ   r   r   r   (test_CheckerPublic_untrusted_no_location   s
    zDTest_securityAdapterFactory.test_CheckerPublic_untrusted_no_locationc                 C   s@   ddl m} G dd dt}| |ddd}| t|| d S )Nr   )LocatingUntrustedAdapterFactoryc                   @   s   e Zd ZdS )zRTest_securityAdapterFactory.test_protected_untrusted_no_location.<locals>._FactoryNr   r   r   r   r   rJ      s   rJ   r0   F)zope.security.adapterrX   r   r    rC   
isinstance)r   rX   rJ   r   r   r   r   $test_protected_untrusted_no_location   s    z@Test_securityAdapterFactory.test_protected_untrusted_no_locationc                 C   s@   ddl m} G dd dt}| |d dd}| t|| d S )Nr   LocatingTrustedAdapterFactoryc                   @   s   e Zd ZdS )zTTest_securityAdapterFactory.test_no_permission_trusted_no_location.<locals>._FactoryNr   r   r   r   r   rJ      s   rJ   FTrY   r]   r   r    rC   rZ   r   r]   rJ   r   r   r   r   &test_no_permission_trusted_no_location   s    zBTest_securityAdapterFactory.test_no_permission_trusted_no_locationc                 C   s@   ddl m} G dd dt}| |ddd}| t|| d S )Nr   r\   c                   @   s   e Zd ZdS )zMTest_securityAdapterFactory.test_public_trusted_no_location.<locals>._FactoryNr   r   r   r   r   rJ      s   rJ   r#   FTr^   r_   r   r   r   test_public_trusted_no_location   s    z;Test_securityAdapterFactory.test_public_trusted_no_locationc                 C   sL   ddl m} ddlm} G dd dt}| ||dd}| t|| d S )Nr   r\   r!   c                   @   s   e Zd ZdS )zTTest_securityAdapterFactory.test_CheckerPublic_trusted_no_location.<locals>._FactoryNr   r   r   r   r   rJ      s   rJ   FT)rY   r]   r%   r"   r   r    rC   rZ   )r   r]   r"   rJ   r   r   r   r   &test_CheckerPublic_trusted_no_location   s
    zBTest_securityAdapterFactory.test_CheckerPublic_trusted_no_locationc                 C   s@   ddl m} G dd dt}| |ddd}| t|| d S )Nr   r\   c                   @   s   e Zd ZdS )zPTest_securityAdapterFactory.test_protected_trusted_no_location.<locals>._FactoryNr   r   r   r   r   rJ      s   rJ   r0   FTr^   r_   r   r   r   "test_protected_trusted_no_location   s    z>Test_securityAdapterFactory.test_protected_trusted_no_locationc                 C   s@   ddl m} G dd dt}| |ddd}| t|| d S )Nr   r\   c                   @   s   e Zd ZdS )zOTest_securityAdapterFactory.test_protected_trusted_w_location.<locals>._FactoryNr   r   r   r   r   rJ      s   rJ   r0   Tr^   r_   r   r   r   !test_protected_trusted_w_location   s    z=Test_securityAdapterFactory.test_protected_trusted_w_locationN)r   r   r   r    rU   rV   rW   r[   r`   ra   rb   rc   rd   r   r   r   r   rQ      s   rQ   c                	   C   s2   t t tt tt tt tt tfS r	   )unittestZ	TestSuiteZ	makeSuiter   r   r3   rH   rQ   r   r   r   r   
test_suite   s    rf   )	__doc__re   ZTestCaser   r   r3   rH   rQ   rf   r   r   r   r   <module>   s   "<%E