social-core icon indicating copy to clipboard operation
social-core copied to clipboard

add `MockLab` provider for testing

Open lvelvee opened this issue 2 years ago • 0 comments

I added mocklab provider for testing.

draft code here, I'll make a pr and do fully test in the future.:

"""
@author: https://github.com/lvelvee
"""
from social_core.backends.oauth import BaseOAuth2


class MockLabOAuth2(BaseOAuth2):
    name = 'mocklab'
    ID_KEY = "sub"
    DEFAULT_SCOPE = ['openid']
    EXTRA_DATA = ['id_token', 'email', ('sub', 'id')]

    ACCESS_TOKEN_METHOD = "POST"
    REDIRECT_STATE = False

    def authorization_url(self):
        return self.setting("authorization_url")

    def access_token_url(self):
        return self.setting("access_token_url")

    def user_data(self, access_token, *args, **kwargs):
        url = self.setting("user_info_url")
        return self.get_json(url, headers={'Authorization': f'Bearer {access_token}'})

    def get_user_details(self, response):
        return {
            'username': response.get('sub', ''),
            'email': response.get('email', ''),
        }

lvelvee avatar Apr 15 '22 06:04 lvelvee