
    f                         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y)    )RequestFactory)reverse)SocialToken)OAuth2Error)OAuth2TestsMixin)MockedResponseTestCasemocked_response   )TwitchProvider)TwitchOAuth2Adapterc                   N    e Zd Zej                  Zd Zd Zd Zd Z	d Z
d Zd Zy)	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    g/var/www/cs2snipe.com/venv/lib/python3.12/site-packages/allauth/socialaccount/providers/twitch/tests.pyget_mocked_responsezTwitchTests.get_mocked_response   s    
 	
    c                      y)Ndallas r   s    r   get_expected_to_strzTwitchTests.get_expected_to_str%   s    r   c                 D    t        dd      }d}| j                  ||       y )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(   s$    "3(DE	=Y7r   c                     t        dd      }d}| j                  ||       t        dd      }d}| j                  ||       y )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.   sE    "37	EY7"3(AB	PY7r   c                 D    t        dd      }d}| j                  ||       y )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_OAuth2Error9   s$    "3(NO	QY7r   c                     | j                  t              5 }| j                  |       d d d        | j                  t	        j
                        j                  dd      |       y # 1 sw Y   ?xY w)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	5 	Y00199#rBNS	5 	5s   A&&A/c                 Z   t               j                  t        | j                  j                  dz         ddi      }t        |      }|j                         j                  }t        d      }t        |      5  t        |      }|j                  |||       ddd       y# 1 sw Y   yxY w)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adapterr9   r4   s         r   r*   z$TwitchTests._run_just_complete_loginE   s     !"&&DMM$$x/0 
 &g.""$(("9:Y' 	8)'2G""7C7	8 	8 	8s   9B!!B*N)__name__
__module____qualname__r   r7   provider_idr   r   r!   r#   r%   r   r*   r   r   r   r   r      s1     ##K
*8	88T8r   r   N)django.test.clientr   django.urlsr   allauth.socialaccount.modelsr   -allauth.socialaccount.providers.oauth2.clientr   allauth.socialaccount.testsr   allauth.testsr   r	   r
   r6   r   viewsr   r   r   r   r   <module>rH      s1    -  4 E 8 C C $ &I8"H I8r   