a
    Qx_                     @   s~   d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZmZmZ ddlmZ dd	lmZ G d
d de	eZdS )    )RequestFactory)reverse)SocialToken)OAuth2Error)OAuth2TestsMixin)MockedResponseTestCasemocked_response   )TwitchProvider)TwitchOAuth2Adapterc                   @   sB   e Zd ZejZdd Zdd Zdd Zdd Z	d	d
 Z
dd ZdS )TwitchTestsc                 C   s
   t ddS )N   a  
        {
          "data": [{
            "id": "44322889",
            "login": "dallas",
            "display_name": "dallas",
            "type": "staff",
            "broadcaster_type": "",
            "description": "Just a gamer playing games and chatting. :)",
            "profile_image_url": "https://static-cdn.jtvnw.net/jtv_user_pictures/dallas-profile_image-1a2c906ee2c35f12-300x300.png",
            "offline_image_url": "https://static-cdn.jtvnw.net/jtv_user_pictures/dallas-channel_offline_image-1a2c906ee2c35f12-1920x1080.png",
            "view_count": 191836881,
            "email": "login@provider.com"
          }]
        }
        )r   )self r   d/var/www/html/Ranjet/env/lib/python3.9/site-packages/allauth/socialaccount/providers/twitch/tests.pyget_mocked_response   s    zTwitchTests.get_mocked_responsec                 C   s   t dd}d}| || d S )Ni  z{"error": "Invalid token"}z"Twitch API Error: Invalid token ()r   check_for_errorr   	resp_mockexpected_errorr   r   r   )test_response_over_400_raises_OAuth2Error%   s    
z5TwitchTests.test_response_over_400_raises_OAuth2Errorc                 C   s8   t dd}d}| || t dd}d}| || d S )Nr   z{"data": []}z*Invalid data from Twitch API: {'data': []}z{"missing_data": "key"}z5Invalid data from Twitch API: {'missing_data': 'key'}r   r   r   r   r   1test_empty_or_missing_data_key_raises_OAuth2Error+   s    

z=TwitchTests.test_empty_or_missing_data_key_raises_OAuth2Errorc                 C   s   t dd}d}| || d S )Nr   z${"data": [{"login": "fake_twitch"}]}z6Invalid data from Twitch API: {'login': 'fake_twitch'}r   r   r   r   r   )test_missing_twitch_id_raises_OAuth2Error6   s    
z5TwitchTests.test_missing_twitch_id_raises_OAuth2Errorc                 C   sR   |  t}| | W d    n1 s*0    Y  | t|jdd| d S )Nu )ZassertRaisesr   _run_just_complete_loginZassertEqualstr	exceptionreplace)r   r   r   Z	error_ctxr   r   r   r   <   s    (zTwitchTests.check_for_errorc                 C   s   t  t| jjd ddi}t|}| |}tdd}t	|& t|}|
||| W d   n1 sr0    Y  dS )z
        Helper function for checking that Error cases are
        handled correctly. Running only `complete_login` means
        we can check that the specific erros are raised before
        they are caught and rendered to generic error HTML
        Z_loginprocessZloginzthis-is-my-fake-token)tokenN)r   getr   provideridr   get_providerZget_appr   r	   Zcomplete_login)r   r   requestZadapterZappr"   r   r   r   r   B   s    

z$TwitchTests._run_just_complete_loginN)__name__
__module____qualname__r   r%   Zprovider_idr   r   r   r   r   r   r   r   r   r   r      s   r   N)Zdjango.test.clientr   Zdjango.urlsr   Zallauth.socialaccount.modelsr   Z-allauth.socialaccount.providers.oauth2.clientr   Zallauth.socialaccount.testsr   Zallauth.testsr   r   r	   r$   r   Zviewsr   r   r   r   r   r   <module>   s   