
­­­­­­­­­­­­­­­­­­
<!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 tjt|d ks*td S )Nfile1234)joinwriter   read_integrity_filestrAssertionError)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   r   r   )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 tjt|d ks:td S )Nr   r   zfile.integrityz4{"algorithm": "HMAC_SERIOUSHASH", "digests": "1234"})r	   r
   r   r   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   sX   |j djddst|j djdds,tt|dd}|j dksJtW d Q R X d S )Nr   T)r   zfile.integrityF)r
   s   foo and bar)r	   Zcheckr   r   read)r   r   r(   r'   r   r   r   test_simple1   s    z,TestDetachedIntegrityCheckedFile.test_simplec             C   sb   t |d}|jd W d Q R X tjt. t|dd}|j dksJtW d Q R X W d Q R X d S )Nabs    extra dataF)r
   s   foo and bar extra data)openr
   r   r   r   r   r)   r   )r   r(   r'   r   r   r   test_corrupted_file7   s
    z4TestDetachedIntegrityCheckedFile.test_corrupted_filec             C   sl   t |d}|jd W d Q R X tjt8 t|dd }d}|jt||ksTt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)   lenr   )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   st   |j |}|j dj| |j dj|d  tjt2 tt|dd}|j dks\tW d Q R X W d Q R X d S )Nr   zfile.integrityz
.integrityF)r
   s   foo and bar)	r	   mover   r   r   r   r   r)   r   )r   r   r(   r1   new_pathr'   r   r   r   test_renamed_fileF   s    
z2TestDetachedIntegrityCheckedFile.test_renamed_filec          	   C   sp   |j d}|jdj|jd |jdj|jd t|jd}t|dd}|j dksbtW d Q R X d S )NZanother_directoryr   zfile.integrityF)r
   s   foo and bar)mkdirr	   r4   r   r   r)   r   )r   r   r(   Znew_dirr5   r'   r   r   r   test_moved_fileR   s    
z0TestDetachedIntegrityCheckedFile.test_moved_filec          	   C   s:   |j dj  t|dd}|j dks,tW d Q R X d S )Nzfile.integrityF)r
   s   foo and bar)r	   remover   r)   r   )r   r   r(   r'   r   r   r   r   Z   s    z2TestDetachedIntegrityCheckedFile.test_no_integrityN)r2   r3   )r    r!   r"   r   fixturer(   r*   r-   r0   r#   r$   r6   r8   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   sP   t |dd:}d}|jt||ks(t|jd |j dksBtW d Q R X d S )NF)r
   s   foo and barr<   s    other data)r   r)   r.   r   r=   )r   r(   r'   data1r   r   r   r*   j   s
    
z1TestDetachedIntegrityCheckedFileParts.test_simplec             C   sl   t jtX t|dd@}d}|jt||ks4t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>   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t t|dd\}d}y$|jt||ksVt|j	d W n  tk
r   ds~tdY nX |s|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 barr<   z9This part must not raise, since this part is still valid.)
r,   r
   r   r   r   r   r)   r.   r   r=   )r   r(   r@   r'   r>   r   r   r   test_part_independence~   s    z<TestDetachedIntegrityCheckedFileParts.test_part_independenceN)FT)r    r!   r"   r   r:   r(   r*   r?   r#   r$   rA   r   r   r   r   r;   `   s   	r;   )r   Zcrypto.file_integrityr   r   r   r   r%   r;   r   r   r   r   <module>   s   "7