
    dSi                     ^    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   _     ;;##HH(&!%!<!<
  $ 
 	--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     ;;##HH(&!%!<!<
  $ 
 	--v/A/ABeX]]+i/k8==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     ;;##HH&!%!<!<  $ 
 	--v/J/JKgx}}-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     ;;##HH(&  $ 
 	--v/J/JKgx}}-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     ;;##HH(!%!<!<  $ 
 	--v/A/AB|4jAz2B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    KK$$HH%!%!<!<  % 
	 KK$$HH%!%!<!<  % 
	 	..0B0BC..0B0BC 	INN95y~~i7PQ 	9>>)4a89>>)4a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     ;;##HH(&!%!<!<
  $ 
 	--v/A/ABmmE"MM+.	 	&,+S1-s3 	gy)lI.nt}}'B'BBINgy)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     ;;##HH(&!%!<!<
  $ 
 	--v/A/ABMM+.	 	j),j),r   N)__name__
__module____qualname____doc__r   r   r+   r.   r6   r:   r<   r@   rH   rK   rM    r   r   r
   r
      s   @

 UUCJ DJ TEBJ CJ TDUef2 g2  TDUef. g. TDUef. g. TDUef8 g8 TDUef9 g9: TDUef* g*8 TDUe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   