Initial package (WIP)

This commit is contained in:
Aurélien Delobelle 2017-08-03 12:40:52 +02:00
parent 5bc1446dd3
commit 916b08374a
36 changed files with 5463 additions and 0 deletions

View file

View file

View 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]

View 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,
)

View file

@ -0,0 +1,6 @@
# -*- coding: utf-8 -*-
from allauth_cas.urls import default_urlpatterns
from .provider import ClipperProvider
urlpatterns = default_urlpatterns(ClipperProvider)

View 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)