a
    xd                     @   s@   d dl mZ d dlmZ d dlmZmZmZ G dd deZdS )    )settings)TestCase)RandomNumberTokenGeneratorRandomStringTokenGeneratorget_token_generatorc                   @   s8   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d ZdS )TokenGeneratorTestCasez:
    Tests that the token generators work as expected
    c                 C   s   t ddd}g }tddD ]}||  qtt|}| jt|t|dd |D ],}| jt|ddd | j	t|dd	d qVd S )
N
      )Z
min_length
max_lengthr   d   z.StringTokenGenerator must create unique tokensmsgz<StringTokenGenerator must create tokens of min. length of 10z<StringTokenGenerator must create tokens of max. length of 15)
r   rangeappendgenerate_tokenlistsetassertEquallenassertGreaterEqualZassertLessEqual)selftoken_generatortokens_unique_tokenstoken r   X/var/www/html/Ranjet/env/lib/python3.9/site-packages/tests/test/test_token_generators.pytest_string_token_generator   s    	

z2TokenGeneratorTestCase.test_string_token_generatorc                 C   s   t ddd}g }tddD ]}||  qtt|}| jt|t|dd |D ]L}zt|}W n   | 	d|  Y n0 | j
|dd	d | j|dd
d qVd S )Ni ʚ;l   c(	 )Z
min_numberZ
max_numberr   r   z4RandomNumberTokenGenerator must create unique tokensr   z>RandomNumberTokenGenerator must return a number, but returned zNRandomNumberTokenGenerator must return a number greater or equal to 1000000000zKRandomNumberTokenGenerator must return a number less or equal to 9999999999)r   r   r   r   r   r   r   r   intZfailr   Z
assertLess)r   r   r   r   r   r   numr   r   r   test_number_token_generator)   s&    	z2TokenGeneratorTestCase.test_number_token_generatorc                 C   s"   dt _t }| j|jtdd dS )z
        If there is no setting for DJANGO_REST_PASSWORDRESET_TOKEN_CONFIG, a RandomStringTokenGenerator should
        be created automatically by get_token_generator()
        :return:
        NzkIf no class is set in DJANGO_REST_PASSWORDRESET_TOKEN_CONFIG, a RandomStringTokenGenerator shouldbe createdr   r   &DJANGO_REST_PASSWORDRESET_TOKEN_CONFIGr   r   	__class__r   r   r   r   r   r   1test_generate_token_generator_from_empty_settingsI   s    zHTokenGeneratorTestCase.test_generate_token_generator_from_empty_settingsc                 C   s&   ddit _t }| j|jtdd dS )
        Checks if the get_token_generator() function uses the "CLASS" setting in DJANGO_REST_PASSWORDRESET_TOKEN_CONFIG
        :return:
        CLASSz;django_rest_passwordreset.tokens.RandomStringTokenGeneratorzgget_token_generator() should return an instance of RandomStringTokenGenerator if configured in settingsr   Nr"   r%   r   r   r   Btest_generate_token_generator_from_settings_string_token_generatorZ   s    zYTokenGeneratorTestCase.test_generate_token_generator_from_settings_string_token_generatorc                 C   s&   ddit _t }| j|jtdd dS )r'   r(   z;django_rest_passwordreset.tokens.RandomNumberTokenGeneratorzgget_token_generator() should return an instance of RandomNumberTokenGenerator if configured in settingsr   N)r   r#   r   r   r$   r   r%   r   r   r   Btest_generate_token_generator_from_settings_number_token_generatorl   s    zYTokenGeneratorTestCase.test_generate_token_generator_from_settings_number_token_generatorN)	__name__
__module____qualname____doc__r   r!   r&   r)   r*   r   r   r   r   r      s    r   N)	Zdjango.confr   Zdjango.testr   Z django_rest_passwordreset.tokensr   r   r   r   r   r   r   r   <module>   s   