Current File : //usr/lib64/python3.6/site-packages/borg/testsuite/__pycache__/nonces.cpython-36.pyc
3

y��b�!�@s^ddlZddlZddlmZddlmZddlmZddl	m
Z
ddlmZGdd	�d	�Z
dS)
�N�)�nonces)�NonceManager)�
bin_to_hex)�get_security_dir)�InvalidRPCMethodc@s�eZdZGdd�d�ZGdd�de�ZGdd�d�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�ZdS) �TestNonceManagerc@s@eZdZGdd�d�Ze�Zed�Zee�Zdd�Z	dd�Z
dS)	zTestNonceManager.MockRepositoryc@seZdZdZdS)z)TestNonceManager.MockRepository._Locationz/some/placeN)�__name__�
__module__�__qualname__Zorig�rr�/usr/lib64/python3.6/nonces.py�	_Locationsr� cCs|jS)N)�	next_free)�selfrrr
�get_free_noncesz.TestNonceManager.MockRepository.get_free_noncecCs||jkst�||_dS)N)r�AssertionError)r�next_unreserved�start_noncerrr
�commit_nonce_reservationsz8TestNonceManager.MockRepository.commit_nonce_reservationN)r	r
rrZ	_location�bytes�idr�id_strrrrrrr
�MockRepositorysrc@seZdZdd�Zdd�ZdS)z"TestNonceManager.MockOldRepositorycCstd��dS)N�)r)rrrr
rsz1TestNonceManager.MockOldRepository.get_free_noncecCstjd�dS)NzDcommit_nonce_reservation should never be called on an old repository)�pytestZfail)rrrrrr
r!sz;TestNonceManager.MockOldRepository.commit_nonce_reservationN)r	r
rrrrrrr
�MockOldRepositorysrc@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
zTestNonceManager.MockEncCiphercCsd|_||_dS)NF)�iv_set�iv)rrrrr
�__init__%sz'TestNonceManager.MockEncCipher.__init__cCs(|dkst�|dk	st�||_||_dS)NF)rrr)r�keyrrrr
�reset)sz$TestNonceManager.MockEncCipher.resetcCs:|jddd�}|j}||ks t�d|_|jddd�|_dS)N��big)�	byteorderF)�to_bytesrrr)rZexpected_iv�advancerrrr
�expect_iv_and_advance/s
z4TestNonceManager.MockEncCipher.expect_iv_and_advancecCs&|j}|dkst�|jddd�|_dS)NFr#r$)r%)rrr&r)rr'rrrr
�expect_no_reset_and_advance6sz:TestNonceManager.MockEncCipher.expect_no_reset_and_advanceN)r	r
rr r"r(r)rrrr
�
MockEncCipher$sr*cCs
d|_dS)N)�
repository)rrrr
�setUp;szTestNonceManager.setUpc	Cs0ttjjt|jj�d�d��
}|j�SQRXdS)N�nonce�r)�open�os�path�joinrr+r�read)r�fdrrr
�cache_nonce>szTestNonceManager.cache_noncec	Cs:ttjjt|jj�d�d��}|j|�s,t�WdQRXdS)Nr-�w)	r/r0r1r2rr+r�writer)rr-r4rrr
�set_cache_nonceBsz TestNonceManager.set_cache_noncecCsZ|jtdd�|jd�}|j�|_t|j|d�}|jd�|jdd�|j�dksVt	�dS)N�NONCE_SPACE_RESERVATIONri �i �0000000000002033)
�setattrrr*rr+r�ensure_reservationr(r5r)r�monkeypatch�
enc_cipher�managerrrr
�test_empty_cache_and_old_serverFs


z0TestNonceManager.test_empty_cache_and_old_servercCsb|jtdd�|jd�}|j�|_d|j_t|j|d�}|jd�|jdd�|j	�dks^t
�dS)Nr9ri r:i r;)r<rr*rr+rrr=r(r5r)rr>r?r@rrr
�test_empty_cacheQs


z!TestNonceManager.test_empty_cachecCsJ|jtdd�|jd�}|j�|_d|j_t|j|d�}|jd�|jdd�|j	�dks^t
�|jjdksnt
�|jd�|jd�|j	�dks�t
�|jjdks�t
�|jd�|jd�|j	�dks�t
�|jjdks�t
�|jd�|jd�|j	�d	k�s�t
�|jjd
k�st
�|jd�|jd�|j	�dk�s4t
�|jjd
k�sFt
�dS)Nr9ri r:r;i3 �
r#Z0000000000002063ic �@Z00000000000020c3i� i i i  i i  i3 i i  i3 iC i i  i3 iC i� )r<rr*rr+rrr=r(r5rr))rr>r?r@rrr
�test_empty_nonce]s2










z!TestNonceManager.test_empty_noncecCs||jtdd�|jd�}|j�|_d|j_|jd�t|j|d�}|jd�|j	dd�|j
�dksht�|jjdksxt�dS)	Nr9ri �0000000000002000r:r;i3 i )r<rr*rr+rr8rr=r(r5r)rr>r?r@rrr
�test_sync_nonce�s



z TestNonceManager.test_sync_noncecCs||jtdd�|jd�}|j�|_d|j_|jd�t|j|d�}|jd�|j	dd�|j
�dksht�|jjdksxt�dS)	Nr9ri rFr:r;i3 i )r<rr*rr+rr8rr=r(r5r)rr>r?r@rrr
�test_server_just_upgraded�s



z*TestNonceManager.test_server_just_upgradedcCsr|jtdd�|jd�}|j�|_d|j_t|j|d�}|jd�|jdd�|j	�dks^t
�|jjdksnt
�dS)	Nr9rii r:r;i3 i )r<rr*rr+rrr=r(r5r)rr>r?r@rrr
�test_transaction_abort_no_cache�s


z0TestNonceManager.test_transaction_abort_no_cachecCsd|jtdd�|jd�}|j�|_|jd�t|j|d�}|jd�|jdd�|j	�dks`t
�dS)	Nr9rirFi r:r;i )r<rr*rr+r8rr=r(r5r)rr>r?r@rrr
�!test_transaction_abort_old_server�s



z2TestNonceManager.test_transaction_abort_old_servercCs||jtdd�|jd�}|j�|_d|j_|jd�t|j|d�}|jd�|j	dd	�|j
�dksht�|jjdksxt�dS)
Nr9rii Z0000000000001000r:r;i3 i )r<rr*rr+rr8rr=r(r5r)rr>r?r@rrr
�&test_transaction_abort_on_other_client�s



z7TestNonceManager.test_transaction_abort_on_other_clientcCs�|jtdd�|jd�}|j�|_d|j_|jd�t|j|d�}|jd�|j	dd
�|j
�dksht�|jjdksxt�d|j_|jd	�|jd�|j
�dks�t�|jjdks�t�|jd
�|j	dd�|j
�dks�t�|jjdks�t�dS)Nr9ri rFr:r;i3 i@��Z0000000000004035i5@i i i i@)
r<rr*rr+rr8rr=r(r5rr))rr>r?r@rrr
�test_interleaved�s&






z!TestNonceManager.test_interleavedN)r	r
rrrr*r,r5r8rArBrErGrHrIrJrKrNrrrr
rs%
r)Zos.pathr0rZcryptorZ
crypto.noncesrZ
crypto.keyrZhelpersrZremoterrrrrr
�<module>s