Initial package (WIP)
This commit is contained in:
parent
5bc1446dd3
commit
916b08374a
36 changed files with 5463 additions and 0 deletions
0
allauth_ens/providers/__init__.py
Normal file
0
allauth_ens/providers/__init__.py
Normal file
0
allauth_ens/providers/clipper/__init__.py
Normal file
0
allauth_ens/providers/clipper/__init__.py
Normal file
0
allauth_ens/providers/clipper/models.py
Normal file
0
allauth_ens/providers/clipper/models.py
Normal file
42
allauth_ens/providers/clipper/provider.py
Normal file
42
allauth_ens/providers/clipper/provider.py
Normal file
|
@ -0,0 +1,42 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
from allauth.account.models import EmailAddress
|
||||
from allauth.socialaccount.providers.base import ProviderAccount
|
||||
|
||||
from allauth_cas.providers import CASProvider
|
||||
|
||||
|
||||
class ClipperAccount(ProviderAccount):
|
||||
pass
|
||||
|
||||
|
||||
class ClipperProvider(CASProvider):
|
||||
id = 'clipper'
|
||||
name = 'Clipper'
|
||||
account_class = ClipperAccount
|
||||
|
||||
def extract_email(self, data):
|
||||
username, _, _ = data
|
||||
return '{}@clipper.ens.fr'.format(username)
|
||||
|
||||
def extract_common_fields(self, data):
|
||||
common = super(ClipperProvider, self).extract_common_fields(data)
|
||||
common['email'] = self.extract_email(data)
|
||||
return common
|
||||
|
||||
def extract_email_addresses(self, data):
|
||||
email = self.extract_email(data)
|
||||
return [
|
||||
EmailAddress(
|
||||
email=email,
|
||||
verified=True,
|
||||
primary=True,
|
||||
)
|
||||
]
|
||||
|
||||
def extract_extra_data(self, data):
|
||||
extra = super(ClipperProvider, self).extract_extra_data(data)
|
||||
extra['email'] = self.extract_email(data)
|
||||
return extra
|
||||
|
||||
|
||||
provider_classes = [ClipperProvider]
|
33
allauth_ens/providers/clipper/tests.py
Normal file
33
allauth_ens/providers/clipper/tests.py
Normal file
|
@ -0,0 +1,33 @@
|
|||
from allauth_cas.test.testcases import CASViewTestCase
|
||||
|
||||
|
||||
class ClipperViewsTests(CASViewTestCase):
|
||||
|
||||
def test_login_view(self):
|
||||
r = self.client.get('/accounts/clipper/login/')
|
||||
expected = (
|
||||
"https://cas.eleves.ens.fr/login?service=http%3A%2F%2Ftestserver"
|
||||
"%2Faccounts%2Fclipper%2Flogin%2Fcallback%2F"
|
||||
)
|
||||
self.assertRedirects(
|
||||
r, expected,
|
||||
fetch_redirect_response=False,
|
||||
)
|
||||
|
||||
def test_callback_view(self):
|
||||
self.patch_cas_response(valid_ticket='__all__')
|
||||
r = self.client.get('/accounts/clipper/login/callback/', {
|
||||
'ticket': '123456',
|
||||
})
|
||||
self.assertLoginSuccess(r)
|
||||
|
||||
def test_logout_view(self):
|
||||
r = self.client.get('/accounts/clipper/logout/')
|
||||
expected = (
|
||||
"https://cas.eleves.ens.fr/logout?service=http%3A%2F%2Ftestserver"
|
||||
"%2F"
|
||||
)
|
||||
self.assertRedirects(
|
||||
r, expected,
|
||||
fetch_redirect_response=False,
|
||||
)
|
6
allauth_ens/providers/clipper/urls.py
Normal file
6
allauth_ens/providers/clipper/urls.py
Normal file
|
@ -0,0 +1,6 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
from allauth_cas.urls import default_urlpatterns
|
||||
|
||||
from .provider import ClipperProvider
|
||||
|
||||
urlpatterns = default_urlpatterns(ClipperProvider)
|
15
allauth_ens/providers/clipper/views.py
Normal file
15
allauth_ens/providers/clipper/views.py
Normal file
|
@ -0,0 +1,15 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
from allauth_cas import views
|
||||
|
||||
from .provider import ClipperProvider
|
||||
|
||||
|
||||
class ClipperCASAdapter(views.CASAdapter):
|
||||
provider_id = ClipperProvider.id
|
||||
url = 'https://cas.eleves.ens.fr'
|
||||
version = 3
|
||||
|
||||
|
||||
login = views.CASLoginView.adapter_view(ClipperCASAdapter)
|
||||
callback = views.CASCallbackView.adapter_view(ClipperCASAdapter)
|
||||
logout = views.CASLogoutView.adapter_view(ClipperCASAdapter)
|
Loading…
Add table
Add a link
Reference in a new issue