
    )Jf                         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e	e          ZdS )    )RequestFactory)reverse)SocialToken)OAuth2Error)OAuth2TestsMixin)MockedResponseTestCasemocked_response   )TwitchProvider)TwitchOAuth2Adapterc                   @    e Zd Zej        Zd Zd Zd Zd Z	d Z
d ZdS )TwitchTestsc                 "    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   )selfs    o/home/alex/cs2snipeproduction/venv/lib/python3.11/site-packages/allauth/socialaccount/providers/twitch/tests.pyget_mocked_responsezTwitchTests.get_mocked_response   s    
 
 	
    c                 V    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_errors      r   )test_response_over_400_raises_OAuth2Errorz5TwitchTests.test_response_over_400_raises_OAuth2Error%   s3    "3(DEE	=Y77777r   c                     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   s      r   1test_empty_or_missing_data_key_raises_OAuth2Errorz=TwitchTests.test_empty_or_missing_data_key_raises_OAuth2Error+   s]    "377	EY777"3(ABB	PY77777r   c                 V    t          dd          }d}|                     ||           d S )Nr   z${"data": [{"login": "fake_twitch"}]}z6Invalid data from Twitch API: {'login': 'fake_twitch'}r   r   s      r   )test_missing_twitch_id_raises_OAuth2Errorz5TwitchTests.test_missing_twitch_id_raises_OAuth2Error6   s3    "3(NOO	QY77777r   c                    |                      t                    5 }|                     |           d d d            n# 1 swxY w Y   |                     t	          |j                                      dd          |           d S )Nu )assertRaisesr   _run_just_complete_loginassertEqualstr	exceptionreplace)r   r   r   	error_ctxs       r   r   zTwitchTests.check_for_error<   s    {++ 	5y)))444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	Y01199#rBBNSSSSSs   =AAc                    t                                          t          | j        j        dz             ddi          }t          |          }|                                j        }t          d          }t          |          5  t          |          }|
                    |||           ddd           dS # 1 swxY w 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 errors are raised before
        they are caught and rendered to generic error HTML
        _loginprocessloginzthis-is-my-fake-token)tokenN)r   getr   provideridr   get_providerappr   r
   complete_login)r   r   requestadapterr4   r/   s         r   r%   z$TwitchTests._run_just_complete_loginB   s    !""&&DM$x/00 
 
 &g..""$$("9:::Y'' 	8 	8)'22G""7C777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8s   'B::B>B>N)__name__
__module____qualname__r   r2   provider_idr   r   r   r    r   r%    r   r   r   r      sy         #K
 
 
*8 8 8	8 	8 	88 8 8T T T8 8 8 8 8r   r   N)django.test.clientr   django.urlsr   allauth.socialaccount.modelsr   -allauth.socialaccount.providers.oauth2.clientr   allauth.socialaccount.testsr   allauth.testsr   r	   r
   r1   r   viewsr   r   r<   r   r   <module>rD      s    - - - - - -       4 4 4 4 4 4 E E E E E E 8 8 8 8 8 8 C C C C C C C C C C $ $ $ $ $ $ & & & & & &F8 F8 F8 F8 F8"H F8 F8 F8 F8 F8r   