Ë
    d“Si¯  ã                   ó^   — d Z ddlmZmZ ddlmZ ddlmZ ddlm	Z	 ddl
mZ  G d„ de«      Zy	)
z:
Unit tests for dev-only referral URL generator endpoint.
é    )ÚTestCaseÚoverride_settings)Úreverse)Ústatus)Ú	APIClient)ÚUserc                   óD  — e Zd ZdZd„ Z edd¬«      d„ «       Z edd¬«      d„ «       Z eddd¬	«      d
„ «       Z eddd¬	«      d„ «       Z	 eddd¬	«      d„ «       Z
 eddd¬	«      d„ «       Z eddd¬	«      d„ «       Z eddd¬	«      d„ «       Z eddd¬	«      d„ «       Zy)Ú GenerateReferralTestUrlViewTestsz6Test the dev-only generate_referral_test_url endpoint.c                 ó’   — t        «       | _        t        d«      | _        t        j
                  j                  dddd¬«      | _        y )Nzgenerate-referral-test-urli90  ÚreferrerÚReferrerÚ
test123abc)Útelegram_user_idÚusernameÚ
first_nameÚreferral_code)r   Úclientr   Úurlr   ÚobjectsÚcreater   )Úselfs    úP/home/cursorai/projects/telegram-earn/backend/apps/users/tests/test_dev_views.pyÚsetUpz&GenerateReferralTestUrlViewTests.setUp   sA   € Ü“kˆŒÜÐ7Ó8ˆŒô Ÿ™×+Ñ+Ø"ØØ!Ø&ð	 ,ó 
ˆ�ó    F)ÚDEBUGÚENABLE_DEV_TELEGRAM_AUTHc                 óØ   — | j                   j                  | j                  dd| j                  j                  dœd¬«      }| j                  |j                  t        j                  «       y)z,Endpoint should return 404 when DEBUG=False.ÚTestUserÚtestuser©r   r   r   Újson©ÚformatN©	r   Úpostr   r   r   ÚassertEqualÚstatus_coder   ÚHTTP_404_NOT_FOUND©r   Úresponses     r   Ú'test_endpoint_returns_404_in_productionzHGenerateReferralTestUrlViewTests.test_endpoint_returns_404_in_production   ó_   € ð —;‘;×#Ñ#Ø�H‰Hà(Ø&Ø!%§¡×!<Ñ!<ñð
 ð $ó 
ˆð 	×Ñ˜×-Ñ-¬v×/HÑ/HÕIr   Tc                 óØ   — | j                   j                  | j                  dd| j                  j                  dœd¬«      }| j                  |j                  t        j                  «       y)z?Endpoint should return 404 when ENABLE_DEV_TELEGRAM_AUTH=False.r   r   r    r!   r"   Nr$   r)   s     r   Ú0test_endpoint_returns_404_when_dev_auth_disabledzQGenerateReferralTestUrlViewTests.test_endpoint_returns_404_when_dev_auth_disabled(   r,   r   ztest-bot-token)r   r   ÚTELEGRAM_BOT_TOKENc                 ó€  — | j                   j                  | j                  dd| j                  j                  dœd¬«      }| j                  |j                  t        j                  «       | j                  d|j                  «       | j                  d|j                  «       | j                  d|j                  «       y	)
zKEndpoint should work when both DEBUG and ENABLE_DEV_TELEGRAM_AUTH are True.r   r   r    r!   r"   r   Úuser_idÚ	init_dataN)r   r%   r   r   r   r&   r'   r   ÚHTTP_200_OKÚassertInÚdatar)   s     r   Útest_endpoint_works_in_dev_modez@GenerateReferralTestUrlViewTests.test_endpoint_works_in_dev_mode6   s•   € ð —;‘;×#Ñ#Ø�H‰Hà(Ø&Ø!%§¡×!<Ñ!<ñð
 ð $ó 
ˆð 	×Ñ˜×-Ñ-¬v×/AÑ/AÔBØ�‰�e˜XŸ]™]Ô+Ø�‰�i §¡Ô/Ø�‰�k 8§=¡=Õ1r   c                 ó  — | j                   j                  | j                  d| j                  j                  dœd¬«      }| j                  |j                  t        j                  «       | j                  d|j                  «       y)z6Endpoint should return 400 when first_name is missing.r   )r   r   r!   r"   ÚerrorN)r   r%   r   r   r   r&   r'   r   ÚHTTP_400_BAD_REQUESTr4   r5   r)   s     r   Ú#test_missing_first_name_returns_400zDGenerateReferralTestUrlViewTests.test_missing_first_name_returns_400G   sn   € ð —;‘;×#Ñ#Ø�H‰Hà&Ø!%§¡×!<Ñ!<ñð ð $ó 
ˆð 	×Ñ˜×-Ñ-¬v×/JÑ/JÔKØ�‰�g˜xŸ}™}Õ-r   c                 óæ   — | j                   j                  | j                  dddœd¬«      }| j                  |j                  t
        j                  «       | j                  d|j                  «       y)z9Endpoint should return 400 when referral_code is missing.r   r   )r   r   r!   r"   r8   N)	r   r%   r   r&   r'   r   r9   r4   r5   r)   s     r   Ú&test_missing_referral_code_returns_400zGGenerateReferralTestUrlViewTests.test_missing_referral_code_returns_400U   sd   € ð —;‘;×#Ñ#Ø�H‰Hà(Ø&ñð ð $ó 
ˆð 	×Ñ˜×-Ñ-¬v×/JÑ/JÔKØ�‰�g˜xŸ}™}Õ-r   c                 óR  — | j                   j                  | j                  d| j                  j                  dœd¬«      }| j                  |j                  t        j                  «       | j                  |j                  d   d«       | j                  |j                  d   d«       y)	z&Endpoint should work without username.r   ©r   r   r!   r"   r   r   Ú N)
r   r%   r   r   r   r&   r'   r   r3   r5   r)   s     r   Útest_username_is_optionalz:GenerateReferralTestUrlViewTests.test_username_is_optionalc   sŽ   € ð —;‘;×#Ñ#Ø�H‰Hà(Ø!%§¡×!<Ñ!<ñð ð $ó 
ˆð 	×Ñ˜×-Ñ-¬v×/AÑ/AÔBØ×Ñ˜Ÿ™ |Ñ4°jÔAØ×Ñ˜Ÿ™ zÑ2°BÕ7r   c                 ó|  — | j                   j                  | j                  d| j                  j                  dœd¬«      }| j                   j                  | j                  d| j                  j                  dœd¬«      }| j                  |j                  t        j                  «       | j                  |j                  t        j                  «       | j                  |j                  d   |j                  d   «       | j                  |j                  d   d«       | j                  |j                  d   d«       y)	z.Endpoint should auto-generate unique user IDs.ÚUser1r>   r!   r"   ÚUser2r1   r   N)r   r%   r   r   r   r&   r'   r   r3   ÚassertNotEqualr5   ÚassertGreater)r   Ú	response1Ú	response2s      r   Útest_user_id_is_auto_generatedz?GenerateReferralTestUrlViewTests.test_user_id_is_auto_generatedr   s  € ð —K‘K×$Ñ$Ø�H‰Hà%Ø!%§¡×!<Ñ!<ñð ð %ó 
ˆ	ð —K‘K×$Ñ$Ø�H‰Hà%Ø!%§¡×!<Ñ!<ñð ð %ó 
ˆ	ð 	×Ñ˜×.Ñ.´×0BÑ0BÔCØ×Ñ˜×.Ñ.´×0BÑ0BÔCð 	×Ñ˜IŸN™N¨9Ñ5°y·~±~ÀiÑ7PÔQð 	×Ñ˜9Ÿ>™>¨)Ñ4°aÔ8Ø×Ñ˜9Ÿ>™>¨)Ñ4°aÕ8r   c                 ó>  — | j                   j                  | j                  dd| j                  j                  dœd¬«      }| j                  |j                  t        j                  «       |j                  d   }|j                  d   }| j                  d|«       | j                  d	|«       | j                  d
|«       | j                  d|«       | j                  d|«       | j                  d| j                  j                  z   |«       | j                  d|«       y)z7Generated URL should contain properly encoded initData.r   r   r    r!   r"   r   r2   z#tgWebAppData=ztgWebAppVersion=7.0ztgWebAppPlatform=webazuser=z
auth_date=zstart_param=zhash=N©r   r%   r   r   r   r&   r'   r   r3   r5   r4   )r   r*   r   r2   s       r   Ú#test_url_contains_encoded_init_datazDGenerateReferralTestUrlViewTests.test_url_contains_encoded_init_data�   só   € ð —;‘;×#Ñ#Ø�H‰Hà(Ø&Ø!%§¡×!<Ñ!<ñð
 ð $ó 
ˆð 	×Ñ˜×-Ñ-¬v×/AÑ/AÔBà�m‰m˜EÑ"ˆØ—M‘M +Ñ.ˆ	ð 	�‰Ð&¨Ô,Ø�‰Ð+¨SÔ1Ø�‰Ð-¨sÔ3ð 	�‰�g˜yÔ)Ø�‰�l IÔ.Ø�‰�n t§}¡}×'BÑ'BÑBÀIÔNØ�‰�g˜yÕ)r   c                 ó>  — | j                   j                  | j                  dd| j                  j                  dœd¬«      }| j                  |j                  t        j                  «       |j                  d   }| j                  d|«       | j                  d|«       y)z<Generated initData should contain the provided user details.r   r   r    r!   r"   r2   NrJ   )r   r*   r2   s      r   Ú$test_init_data_contains_user_detailszEGenerateReferralTestUrlViewTests.test_init_data_contains_user_details­   s‹   € ð —;‘;×#Ñ#Ø�H‰Hà(Ø&Ø!%§¡×!<Ñ!<ñð
 ð $ó 
ˆð 	×Ñ˜×-Ñ-¬v×/AÑ/AÔBà—M‘M +Ñ.ˆ	ð 	�‰�j )Ô,Ø�‰�j )Õ,r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r+   r.   r6   r:   r<   r@   rH   rK   rM   © r   r   r
   r
      s  „ Ù@ò

ñ ˜U¸UÔCñJó DðJñ ˜T¸EÔBñJó CðJñ ˜T¸DÐUeÔfñ2ó gð2ñ  ˜T¸DÐUeÔfñ.ó gð.ñ ˜T¸DÐUeÔfñ.ó gð.ñ ˜T¸DÐUeÔfñ8ó gð8ñ ˜T¸DÐUeÔfñ9ó gð9ñ: ˜T¸DÐUeÔfñ*ó gð*ñ8 ˜T¸DÐUeÔfñ-ó gñ-r   r
   N)rQ   Údjango.testr   r   Údjango.urlsr   Úrest_frameworkr   Úrest_framework.testr   Úapps.users.modelsr   r
   rR   r   r   Ú<module>rX      s)   ðñ÷ 4Ý Ý !Ý )Ý "ôv- xõ v-r   