franceconnect: adapt to py3 (#36515)

This commit is contained in:
Frédéric Péters 2019-11-16 12:10:07 +01:00
parent 78084aa023
commit 3fefe4a344
2 changed files with 7 additions and 7 deletions

View File

@ -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():

View File

@ -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')