python3: encoding variations in tests.test_idp_saml2

This commit is contained in:
Paul Marillonnet 2020-02-06 18:26:07 +01:00
parent c69824f54f
commit 67c038d8fe
1 changed files with 12 additions and 9 deletions

View File

@ -27,6 +27,7 @@ from django.core.urlresolvers import reverse
from django.core.files import File
from django.utils import six
from django.utils.translation import gettext as _
from django.utils.encoding import force_text
from django.utils.six.moves.urllib import parse as urlparse
from authentic2.compat import Base64Error
@ -80,7 +81,7 @@ class SamlBaseTestCase(Authentic2TestCase):
self.assertEqual(response['Content-type'], 'text/xml',
msg='metadata endpoint did not return an XML '
'document')
self.assertIn('IDPSSODescriptor', response.content,
self.assertIn('IDPSSODescriptor', force_text(response.content),
msg='metadata endpoint does not contain an '
'IDPSSODescriptor element')
return response.content
@ -90,7 +91,8 @@ class SamlBaseTestCase(Authentic2TestCase):
idp_meta = self.get_idp_metadata()
server = lasso.Server.newFromBuffers(sp_meta)
server.signatureMethod = lasso.SIGNATURE_METHOD_RSA_SHA256
server.addProviderFromBuffer(lasso.PROVIDER_ROLE_IDP, idp_meta)
server.addProviderFromBuffer(
lasso.PROVIDER_ROLE_IDP, force_text(idp_meta))
return server
def setup(self, default_name_id_format='persistent'):
@ -116,7 +118,7 @@ class SamlBaseTestCase(Authentic2TestCase):
last_name=self.last_name)
self.code_attribute.set_value(self.user, '1234', verified=True)
self.mobile_attribute.set_value(self.user, '5678', verified=True)
self.avatar_attribute.set_value(self.user, File(open('tests/200x200.jpg')))
self.avatar_attribute.set_value(self.user, File(open('tests/200x200.jpg', 'rb')))
self.user.set_password(self.password)
self.user.save()
self.default_ou = OrganizationalUnit.objects.get()
@ -290,8 +292,9 @@ class SamlSSOTestCase(SamlBaseTestCase):
response = client.get(url)
self.assertEqual(response.status_code, 200)
self.assertEqual(response['Content-Type'].split(';')[0], 'text/html')
self.assertInHTML(u'<button class="cancel-button" name="cancel" formnovalidate>%s</button>' % _('Cancel'), response.content,
count=1)
self.assertInHTML(
u'<button class="cancel-button" name="cancel" formnovalidate>%s</button>' % _('Cancel'),
force_text(response.content), count=1)
if cancel:
response = client.post(url, {
'cancel': 1,
@ -329,7 +332,7 @@ class SamlSSOTestCase(SamlBaseTestCase):
'password': self.password,
'login-password-submit': 1})
response = client.get(response['Location'])
assert 'https://whatever.com/loser/' in response.content
assert b'https://whatever.com/loser/' in response.content
# User with the authorized role
self.user.roles.add(self.role_authorized)
response = client.post(url, {
@ -337,7 +340,7 @@ class SamlSSOTestCase(SamlBaseTestCase):
'password': self.password,
'login-password-submit': 1})
response = client.get(response['Location'])
assert 'SAMLResponse' in response.content
assert b'SAMLResponse' in response.content
else:
response = client.post(url, {
'username': self.email,
@ -379,12 +382,12 @@ class SamlSSOTestCase(SamlBaseTestCase):
self.assertEqual(login.assertion.subject.nameID.format,
lasso.SAML2_NAME_IDENTIFIER_FORMAT_UNSPECIFIED)
self.assertEqual(login.assertion.subject.nameID.content,
self.user.username.encode('utf-8'))
force_text(self.user.username.encode('utf-8')))
elif self.default_sp_options_idp_policy.default_name_id_format == 'uuid':
self.assertEqual(login.assertion.subject.nameID.format,
lasso.SAML2_NAME_IDENTIFIER_FORMAT_UNSPECIFIED)
self.assertEqual(login.assertion.subject.nameID.content,
self.user.uuid.encode('utf-8'))
force_text(self.user.uuid.encode('utf-8')))
elif format == lasso.SAML2_NAME_IDENTIFIER_FORMAT_PERSISTENT:
federation = saml_models.LibertyFederation.objects.get()
constraints += (