
­­­­­­­­­­­­­­­­­­
<!DOCTYPE html>
<html>
3
yb                 @   sJ   d dl Z ddlmZmZmZ G dd dZG dd dZG dd	 d	ZdS )
    N   )IntegrityCheckedFileDetachedIntegrityCheckedFileFileIntegrityErrorc               @   s:   e Zd Zdd Zdd Zdd Zejjdddd Z	dS )TestReadIntegrityFilec             C   s   |j d}|jd d S )Nfile1234)joinwrite)selftmpdirprotected_file r   &/usr/lib64/python3.6/file_integrity.pytest_no_integrity   s    

z'TestReadIntegrityFile.test_no_integrityc          
   C   sL   |j d}|jd |j djd tjt tjt| W d Q R X d S )Nr   r   zfile.integrity )r	   r
   pytestraisesr   r   read_integrity_filestr)r   r   r   r   r   r   test_truncated_integrity   s
    

z.TestReadIntegrityFile.test_truncated_integrityc             C   s(   |j d}|jd |j djd d S )Nr   r   zfile.integrityz4{"algorithm": "HMAC_SERIOUSHASH", "digests": "1234"})r	   r
   )r   r   r   r   r   r   test_unknown_algorithm   s    

z,TestReadIntegrityFile.test_unknown_algorithmjson4{"ALGORITHM": "HMAC_SERIOUSHASH", "digests": "1234"}[]1234.5
"A string"Invalid JSONc          
   C   sL   |j d}|jd |j dj| tjt tjt| W d Q R X d S )Nr   r   zfile.integrity)r	   r
   r   r   r   r   r   r   )r   r   r   r   r   r   r   test_malformed   s
    

z$TestReadIntegrityFile.test_malformedN)r   r   r   r   r   )
__name__
__module____qualname__r   r   r   r   markparametrizer   r   r   r   r   r      s       r   c               @   sX   e Zd Zejdd Zdd Zdd Zdd Zej	j
d	ddd Zdd Zdd ZdS ) TestDetachedIntegrityCheckedFilec          	   C   s4   t |jd}t|dd}|jd W d Q R X |S )Nr   T)r
   s   foo and bar)r   r	   r   r
   )r   r   pathfdr   r   r   integrity_protected_file*   s    z9TestDetachedIntegrityCheckedFile.integrity_protected_filec          	   C   s   t |dd}W d Q R X d S )NF)r
   )r   )r   r   r'   r&   r   r   r   test_simple1   s    z,TestDetachedIntegrityCheckedFile.test_simplec             C   sR   t |d}|jd W d Q R X tjt t|dd}W d Q R X W d Q R X d S )Nabs    extra dataF)r
   )openr
   r   r   r   r   )r   r'   r&   r   r   r   test_corrupted_file7   s
    z4TestDetachedIntegrityCheckedFile.test_corrupted_filec             C   sV   t |d}|jd W d Q R X tjt" t|dd
}d}W d Q R X W d Q R X d S )Nr)   s    extra dataF)r
   s   foo and bar)r*   r
   r   r   r   r   )r   r'   r&   datar   r   r    test_corrupted_file_partial_read>   s    zATestDetachedIntegrityCheckedFile.test_corrupted_file_partial_readnew_namedifferent_filedifferent_file.different_extc             C   sd   |j |}|j dj| |j dj|d  tjt" tt|dd}W d Q R X W d Q R X d S )Nr   zfile.integrityz
.integrityF)r
   )r	   mover   r   r   r   r   )r   r   r'   r.   new_pathr&   r   r   r   test_renamed_fileF   s    
z2TestDetachedIntegrityCheckedFile.test_renamed_filec          	   C   s`   |j d}|jdj|jd |jdj|jd t|jd}t|dd}W d Q R X d S )NZanother_directoryr   zfile.integrityF)r
   )mkdirr	   r1   r   r   )r   r   r'   Znew_dirr2   r&   r   r   r   test_moved_fileR   s    
z0TestDetachedIntegrityCheckedFile.test_moved_filec          	   C   s*   |j dj  t|dd}W d Q R X d S )Nzfile.integrityF)r
   )r	   remover   )r   r   r'   r&   r   r   r   r   Z   s    z2TestDetachedIntegrityCheckedFile.test_no_integrityN)r/   r0   )r   r    r!   r   fixturer'   r(   r+   r-   r"   r#   r3   r5   r   r   r   r   r   r$   )   s    
r$   c               @   s@   e Zd Zejdd Zdd Zdd Zejj	ddd
d Z
dS )%TestDetachedIntegrityCheckedFilePartsc          	   C   sH   t |jd}t|dd$}|jd |jd |jd W d Q R X |S )Nr   T)r
   s   foo and barfooparts    other data)r   r	   r   r
   	hash_part)r   r   r%   r&   r   r   r   r'   a   s    

z>TestDetachedIntegrityCheckedFileParts.integrity_protected_filec          	   C   s*   t |dd}d}|jd W d Q R X d S )NF)r
   s   foo and barr9   )r   r:   )r   r'   r&   data1r   r   r   r(   j   s    
z1TestDetachedIntegrityCheckedFileParts.test_simplec             C   sV   t jtB t|dd*}d}t jt |jd W d Q R X W d Q R X W d Q R X d S )NF)r
   s   foo and barZbarpart)r   r   r   r   r:   )r   r'   r&   r;   r   r   r   test_wrong_part_nameq   s
    z:TestDetachedIntegrityCheckedFileParts.test_wrong_part_namepartial_readFTc              C   s   t |d}|jd W d Q R X tjtR t|dd:}d}y|jd W n tk
r`   Y nX |sn|j  W d Q R X W d Q R X d S )Nr)   s%   some extra stuff that does not belongF)r
   s   foo and barr9   )r*   r
   r   r   r   r   r:   read)r   r'   r=   r&   r;   r   r   r   test_part_independence~   s    z<TestDetachedIntegrityCheckedFileParts.test_part_independenceN)FT)r   r    r!   r   r7   r'   r(   r<   r"   r#   r?   r   r   r   r   r8   `   s   	r8   )r   Zcrypto.file_integrityr   r   r   r   r$   r8   r   r   r   r   <module>   s   "7