Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Develop #101

Merged
merged 4 commits into from
Apr 9, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/cicd.yml
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ jobs:
- name: Run Tests
run: |
python -m compileall ${APP_NAME}/
coverage run --source=${APP_NAME}/ manage.py test ${APP_NAME}
python -Wd -m coverage run --source=${APP_NAME}/ manage.py test ${APP_NAME}

- name: Report Test Coverage
if: |
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
[![Build Status](https://github.com/uw-it-aca/uw-django-saml2/workflows/tests/badge.svg?branch=main)](https://github.com/uw-it-aca/uw-django-saml2/actions)
[![Coverage Status](https://coveralls.io/repos/github/uw-it-aca/uw-django-saml2/badge.svg?branch=main)](https://coveralls.io/github/uw-it-aca/uw-django-saml2?branch=main)
[![PyPi Version](https://img.shields.io/pypi/v/uw-django-saml2.svg)](https://pypi.python.org/pypi/uw-django-saml2)
![Python versions](https://img.shields.io/pypi/pyversions/uw-django-saml2.svg)
![Python versions](https://img.shields.io/badge/python-3.10-blue.svg)


This app allows a Django project to be a SAML SP without running shibd and
Expand Down
40 changes: 20 additions & 20 deletions uw_saml/tests/test_auth.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,20 +34,20 @@ def setUp(self):
def test_implementation(self):
auth = DjangoSAML(self.request)
self.assertIsInstance(auth._implementation, Mock_Saml2_Auth)
self.assertEquals(auth.get_nameid(), 'mock-nameid')
self.assertEquals(auth.get_session_index(), 'mock-session-index')
self.assertEqual(auth.get_nameid(), 'mock-nameid')
self.assertEqual(auth.get_session_index(), 'mock-session-index')

def test_get_attributes(self):
auth = DjangoSAML(self.request)
self.assertEquals(auth.get_attributes(), {
self.assertEqual(auth.get_attributes(), {
'affiliations': ['student'],
'eppn': ['javerage@washington.edu'], 'uwnetid': ['javerage'],
'scopedAffiliations': ['student@washington.edu'],
'isMemberOf': ['u_test_group', 'u_test2_group']})

with self.settings(MOCK_SAML_ATTRIBUTES=MOCK_SESSION_ATTRIBUTES):
auth = DjangoSAML(self.request)
self.assertEquals(auth.get_attributes(), {
self.assertEqual(auth.get_attributes(), {
'affiliations': ['student'],
'eppn': ['javerage@washington.edu'], 'uwnetid': ['javerage'],
'scopedAffiliations': ['student@washington.edu'],
Expand All @@ -56,24 +56,24 @@ def test_get_attributes(self):
def test_login(self):
auth = DjangoSAML(self.request)
url = auth.login(return_to='/test')
self.assertEquals(url, '/test')
self.assertEquals(self.request.user.is_authenticated, True)
self.assertEquals(self.request.user.username, 'javerage')
self.assertEqual(url, '/test')
self.assertEqual(self.request.user.is_authenticated, True)
self.assertEqual(self.request.user.username, 'javerage')

# Missing return_to arg
auth = DjangoSAML(self.request)
self.assertEquals(auth.login(), '')
self.assertEqual(auth.login(), '')

def test_logout(self):
auth = DjangoSAML(self.request)
url = auth.logout(return_to='/test')
self.assertEquals(url, '/test')
self.assertEquals(self.request.user.is_authenticated, False)
self.assertEquals(self.request.user.username, '')
self.assertEqual(url, '/test')
self.assertEqual(self.request.user.is_authenticated, False)
self.assertEqual(self.request.user.username, '')

# Missing return_to arg
auth = DjangoSAML(self.request)
self.assertEquals(auth.logout(), '')
self.assertEqual(auth.logout(), '')

def test_nonexistent_method(self):
auth = DjangoSAML(self.request)
Expand All @@ -85,8 +85,8 @@ def test_nonexistent_method(self):
def test_profile_hook(self):
auth = DjangoSAML(self.request)
url = auth.login(return_to='/test')
self.assertEquals(self.request.user.is_authenticated, True)
self.assertEquals(self.request.user.username, 'javerage')
self.assertEqual(self.request.user.is_authenticated, True)
self.assertEqual(self.request.user.username, 'javerage')
self.assertEqual(self.request.user.first_name, 'J')
self.assertEqual(self.request.user.last_name, 'Average')

Expand Down Expand Up @@ -142,7 +142,7 @@ def test_bad_process_response(self):
def test_get_attributes(self):
auth = DjangoSAML(self.request)
auth._implementation.username = 'test_username'
self.assertEquals(
self.assertEqual(
auth.get_attributes(),
settings.DJANGO_LOGIN_MOCK_SAML['SAML_USERS'][0]['MOCK_ATTRIBUTES']
)
Expand All @@ -155,24 +155,24 @@ def test_bad_get_attributes(self):

def test_get_nameid(self):
auth = DjangoSAML(self.request)
self.assertEquals(
self.assertEqual(
auth.get_nameid(),
'test-mock-nameid'
)
del settings.DJANGO_LOGIN_MOCK_SAML['NAME_ID']
self.assertEquals(
self.assertEqual(
auth.get_nameid(),
'mock-nameid'
)

def test_get_session_index(self):
auth = DjangoSAML(self.request)
self.assertEquals(
self.assertEqual(
auth.get_session_index(),
'test-mock-session'
)
del settings.DJANGO_LOGIN_MOCK_SAML['SESSION_INDEX']
self.assertEquals(
self.assertEqual(
auth.get_session_index(),
'mock-session'
)
Expand Down Expand Up @@ -213,7 +213,7 @@ def test_get_attributes(self, mock_attributes):
mock_attributes.return_value = MOCK_SAML_ATTRIBUTES

auth = DjangoSAML(self.request)
self.assertEquals(auth.get_attributes(), {
self.assertEqual(auth.get_attributes(), {
'affiliations': ['student'],
'eppn': ['javerage@washington.edu'], 'uwnetid': ['javerage'],
'scopedAffiliations': ['student@washington.edu'],
Expand Down
10 changes: 5 additions & 5 deletions uw_saml/tests/test_decorators.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ def test_group_required_noauth(self):

view_instance = GroupRequiredView.as_view()
response = view_instance(self.request)
self.assertEquals(response.status_code, 302)
self.assertEqual(response.status_code, 302)
self.assertIn('%s?next=/' % settings.LOGIN_URL, response.url,
'Login required')

Expand All @@ -42,21 +42,21 @@ def test_group_required_nogroups(self):

view_instance = GroupRequiredView.as_view()
response = view_instance(self.request)
self.assertEquals(response.status_code, 401)
self.assertEqual(response.status_code, 401)

def test_group_required_withgroups(self):
self.request.session['samlUserdata'] = {
'isMemberOf': ['u_wrong_group']}

view_instance = GroupRequiredView.as_view()
response = view_instance(self.request)
self.assertEquals(response.status_code, 401)
self.assertEqual(response.status_code, 401)

def test_group_required_ok(self):
self.request.session['samlUserdata'] = {
'isMemberOf': ['u_wrong_group', 'u_test_group']}

view_instance = GroupRequiredView.as_view()
response = view_instance(self.request)
self.assertEquals(response.status_code, 200)
self.assertEquals(response.content, b'OK')
self.assertEqual(response.status_code, 200)
self.assertEqual(response.content, b'OK')
38 changes: 19 additions & 19 deletions uw_saml/tests/test_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,43 +18,43 @@ def setUp(self):
self.request.session['samlUserdata'] = MOCK_SESSION_ATTRIBUTES

def test_get_attribute(self):
self.assertEquals(get_attribute(self.request, 'email'), None)
self.assertEquals(get_attribute(self.request, 'affiliations'),
['student'])
self.assertEqual(get_attribute(self.request, 'email'), None)
self.assertEqual(get_attribute(self.request, 'affiliations'),
['student'])

def test_get_user(self):
# no setting, default to uwnetid
self.assertEquals(get_user(self.request), 'javerage')
self.assertEqual(get_user(self.request), 'javerage')

with self.settings(SAML_USER_ATTRIBUTE='uwnetid'):
self.assertEquals(get_user(self.request), 'javerage')
self.assertEqual(get_user(self.request), 'javerage')

with self.settings(SAML_USER_ATTRIBUTE='eppn'):
self.assertEquals(get_user(self.request),
'javerage@washington.edu')
self.assertEqual(get_user(self.request),
'javerage@washington.edu')

def test_get_user_without_uwnetid(self):
self.request.session['samlUserdata'] = {}
self.assertEquals(get_user(self.request), None)
self.assertEqual(get_user(self.request), None)

def test_get_user_without_saml(self):
del self.request.session['samlUserdata']
self.assertEquals(get_user(self.request), None)
self.assertEqual(get_user(self.request), None)

def test_is_member_of_group(self):
self.assertEquals(is_member_of_group(self.request, 'u_test_group'),
True)
self.assertEquals(is_member_of_group(self.request, 'u_test_nope'),
False)
self.assertEquals(is_member_of_group(self.request, ''), False)
self.assertEquals(is_member_of_group(self.request, None), False)
self.assertEqual(is_member_of_group(self.request, 'u_test_group'),
True)
self.assertEqual(is_member_of_group(self.request, 'u_test_nope'),
False)
self.assertEqual(is_member_of_group(self.request, ''), False)
self.assertEqual(is_member_of_group(self.request, None), False)

def test_is_member_of_group_without_ismemberof(self):
self.request.session['samlUserdata'] = {}
self.assertEquals(is_member_of_group(self.request, 'u_test_group'),
False)
self.assertEqual(is_member_of_group(self.request, 'u_test_group'),
False)

def test_is_member_of_group_without_saml(self):
del self.request.session['samlUserdata']
self.assertEquals(is_member_of_group(self.request, 'u_test_group'),
False)
self.assertEqual(is_member_of_group(self.request, 'u_test_group'),
False)
10 changes: 5 additions & 5 deletions uw_saml/tests/test_views.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ def test_login(self):

view_instance = LoginView.as_view()
response = view_instance(request)
self.assertEquals(response.status_code, 302)
self.assertEqual(response.status_code, 302)
self.assertIn(settings.UW_SAML['idp']['singleSignOnService']['url'],
response.url)
self.assertIn(CACHE_CONTROL, response.get('Cache-Control'))
Expand Down Expand Up @@ -64,7 +64,7 @@ def test_logout(self):

view_instance = LogoutView.as_view()
response = view_instance(request)
self.assertEquals(response.status_code, 302)
self.assertEqual(response.status_code, 302)
self.assertIn(settings.UW_SAML['idp']['singleLogoutService']['url'],
response.url)
self.assertIn(CACHE_CONTROL, response.get('Cache-Control'))
Expand Down Expand Up @@ -105,8 +105,8 @@ def test_sso(self, mock_process_response, mock_get_attributes):

view_instance = SSOView.as_view()
response = view_instance(request)
self.assertEquals(response.status_code, 302)
self.assertEquals(response.url, 'http://example.uw.edu/private')
self.assertEqual(response.status_code, 302)
self.assertEqual(response.url, 'http://example.uw.edu/private')


class SSOViewErrorTest(TestCase):
Expand Down Expand Up @@ -161,7 +161,7 @@ def test_invalid_http_method(self):

view_instance = SSOView.as_view()
response = view_instance(request)
self.assertEquals(response.status_code, 405)
self.assertEqual(response.status_code, 405)


@override_settings(
Expand Down
Loading