franceconnect: adapt to py3 (#36515)
This commit is contained in:
parent
78084aa023
commit
3fefe4a344
|
@ -1,7 +1,7 @@
|
|||
import base64
|
||||
import json
|
||||
|
||||
from django.utils.encoding import force_bytes
|
||||
from django.utils.encoding import force_bytes, force_text
|
||||
from django.utils.six.moves.urllib import parse as urllib
|
||||
from django.utils.six.moves.urllib import parse as urlparse
|
||||
from quixote import cleanup, get_session_manager
|
||||
|
@ -110,7 +110,7 @@ def setup_fc_environment(pub):
|
|||
|
||||
def get_session(app):
|
||||
try:
|
||||
session_id = app.cookies.values()[0]
|
||||
session_id = list(app.cookies.values())[0]
|
||||
except IndexError:
|
||||
return None
|
||||
else:
|
||||
|
@ -135,7 +135,7 @@ def test_fc_login_page(caplog):
|
|||
}
|
||||
token_result = {
|
||||
'access_token': 'abcd',
|
||||
'id_token': '.%s.' % base64url_encode(json.dumps(id_token)),
|
||||
'id_token': '.%s.' % force_text(base64url_encode(json.dumps(id_token))),
|
||||
}
|
||||
user_info_result = {
|
||||
'sub': 'ymca',
|
||||
|
@ -196,7 +196,7 @@ def test_fc_login_page(caplog):
|
|||
qs = urlparse.parse_qs(resp.location.split('?')[1])
|
||||
state = qs['state'][0]
|
||||
id_token['nonce'] = qs['nonce'][0]
|
||||
token_result['id_token'] = '.%s.' % base64url_encode(json.dumps(id_token))
|
||||
token_result['id_token'] = '.%s.' % force_text(base64url_encode(json.dumps(id_token)))
|
||||
|
||||
with mock.patch('wcs.qommon.ident.franceconnect.http_post_request') as http_post_request, \
|
||||
mock.patch('wcs.qommon.ident.franceconnect.http_get_page') as http_get_page:
|
||||
|
@ -239,7 +239,7 @@ def test_fc_login_page(caplog):
|
|||
qs = urlparse.parse_qs(resp.location.split('?')[1])
|
||||
state = qs['state'][0]
|
||||
id_token['nonce'] = qs['nonce'][0]
|
||||
token_result['id_token'] = '.%s.' % base64url_encode(json.dumps(id_token))
|
||||
token_result['id_token'] = '.%s.' % force_text(base64url_encode(json.dumps(id_token)))
|
||||
bad_user_info_result = {
|
||||
'sub': 'ymca2',
|
||||
'given_name': 'John',
|
||||
|
@ -255,7 +255,7 @@ def test_fc_login_page(caplog):
|
|||
}))
|
||||
assert pub.user_class.count() == 1, 'an invalid user (no email) has been created'
|
||||
session = get_session(app)
|
||||
assert not session
|
||||
assert (not session or not session.user)
|
||||
|
||||
|
||||
def test_fc_settings():
|
||||
|
|
|
@ -331,7 +331,7 @@ class FCAuthMethod(AuthMethod):
|
|||
id_token = result['id_token']
|
||||
access_token = result['access_token']
|
||||
header, payload, signature = id_token.split('.')
|
||||
payload = json_loads(base64url_decode(payload))
|
||||
payload = json_loads(base64url_decode(force_bytes(payload)))
|
||||
nonce = hashlib.sha256(force_bytes(session.id)).hexdigest()
|
||||
if payload['nonce'] != nonce:
|
||||
logger.error('FranceConnect returned nonce did not match')
|
||||
|
|
Loading…
Reference in New Issue