o
    ˷e                     @   sj   d dl 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 ddlmZ G d	d
 d
eeZdS )    N)SocialAccount)GitLabProvider)OAuth2Error)OAuth2TestsMixin)MockedResponseTestCase   )_check_errorsc                   @   sV   e Zd ZejZdZdd Zdd Zdd Z	dd	 Z
d
d Zdd Zdd Zdd ZdS )GitLabTests   c                 C   s
   t ddS )N   a  
            {
                "avatar_url": "https://secure.gravatar.com/avatar/123",
                "bio": null,
                "can_create_group": true,
                "can_create_project": true,
                "color_scheme_id": 5,
                "confirmed_at": "2015-03-02T16:53:58.370Z",
                "created_at": "2015-03-02T16:53:58.885Z",
                "current_sign_in_at": "2018-06-12T18:44:49.985Z",
                "email": "mr.bob@gitlab.example.com",
                "external": false,
                "id": 2,
                "identities": [],
                "last_activity_on": "2018-06-11",
                "last_sign_in_at": "2018-05-31T14:59:44.527Z",
                "linkedin": "",
                "location": null,
                "name": "Mr Bob",
                "organization": null,
                "projects_limit": 10,
                "shared_runners_minutes_limit": 2000,
                "skype": "",
                "state": "active",
                "theme_id": 6,
                "twitter": "mrbob",
                "two_factor_enabled": true,
                "username": "mr.bob",
                "web_url": "https://gitlab.example.com/u/mr.bob",
                "website_url": ""
            }
        )r   )self r   c/var/www/ideatree/venv/lib/python3.10/site-packages/allauth/socialaccount/providers/gitlab/tests.pyget_mocked_response   s   zGitLabTests.get_mocked_responsec                 C   s,   ddi}t dt|}| t|| d S )Nidi90  r   )r   jsondumpsassertEqualr	   )r   dataresponser   r   r   test_valid_response6   s   zGitLabTests.test_valid_responsec                 C   H   t dti }| t t| W d    d S 1 sw   Y  d S Nr   r   r   r   assertRaisesr   r	   r   r   r   r   r   test_invalid_data;      
"zGitLabTests.test_invalid_datac                 C   F   d}t d|}| t t| W d    d S 1 sw   Y  d S )Nz403 Forbidden  - You (@domain.com) must accept the Terms of Service in order to perform this action. Please access GitLab from a web browser to accept these terms.  r   r   r   r	   r   bodyr   r   r   r   test_account_invalid_responseA   s   

"z)GitLabTests.test_account_invalid_responsec                 C   r   )Nz403 Forbiddenr    r!   r"   r   r   r   test_error_responseP   s
   

"zGitLabTests.test_error_responsec                 C   r   r   r   r   r   r   r   test_invalid_responseX   r   z!GitLabTests.test_invalid_responsec                 C   r   )Ni  r   r   r   r   r   test_bad_response^   r   zGitLabTests.test_bad_responsec                 C   s:   |  |   tjjt| jd}| |jd | j d S )N)uidr   )	loginr   r   objectsgetstr_uidr   
extra_data)r   accountr   r   r   test_extra_datad   s   zGitLabTests.test_extra_dataN)__name__
__module____qualname__r   r   provider_idr-   r   r   r   r$   r%   r&   r'   r0   r   r   r   r   r
      s    %r
   )r   allauth.socialaccount.modelsr   /allauth.socialaccount.providers.gitlab.providerr   -allauth.socialaccount.providers.oauth2.clientr   allauth.socialaccount.testsr   allauth.testsr   r   viewsr	   r
   r   r   r   r   <module>   s   