Skip to content
Snippets Groups Projects
Commit b1f19f1b authored by Bermudez, Jaime's avatar Bermudez, Jaime
Browse files

Add a script to run unit tests within auth_lti package. Add a tests package...

Add a script to run unit tests within auth_lti package.  Add a tests package with a few tests of the custom role key merge that is being added as part of this feature branch.  Filter out any empty roles from the merged list.  Update requirements in setup.py to remove unused django-filter and to include mock as a test requirement.  Remove *.html from MANIFEST as there are currently no html files.  Add .egg to gitignore.
parent 605c62dd
No related branches found
No related tags found
No related merge requests found
......@@ -2,4 +2,5 @@
*.pyo
build
dist
django_auth_lti.egg-info
*.egg-info
*.egg
include README.md
include LICENSE
recursive-include django_auth_lti *.py *.html
recursive-include django_auth_lti *.py
......@@ -95,7 +95,8 @@ class LTIAuthMiddleware(object):
}
# If a custom role key is defined in project, merge into existing role list
if getattr(settings, 'LTI_CUSTOM_ROLE_KEY', None):
lti_launch['roles'] += request.POST.get(settings.LTI_CUSTOM_ROLE_KEY, '').split(',')
custom_roles = request.POST.get(settings.LTI_CUSTOM_ROLE_KEY, '').split(',')
lti_launch['roles'] += filter(None, custom_roles) # Filter out any empty roles
request.session['LTI_LAUNCH'] = lti_launch
......
# Add models here
import unittest
import mock
from mock import patch
from django.test import RequestFactory
from django.contrib.auth import models
from django_auth_lti.middleware import LTIAuthMiddleware
@patch('django_auth_lti.middleware.logger')
class TestLTIAuthMiddleware(unittest.TestCase):
longMessage = True
def setUp(self):
self.mw = LTIAuthMiddleware()
def build_lti_launch_request(self, post_data):
"""
Utility method that builds a fake lti launch request with custom data.
"""
# Add message type to post data
post_data.update(lti_message_type='basic-lti-launch-request')
request = RequestFactory().post('/fake/lti/launch', post_data)
request.user = mock.Mock(name='User', spec=models.User)
request.session = {}
return request
@patch('django_auth_lti.middleware.settings.LTI_CUSTOM_ROLE_KEY', 'test_custom_role_key')
@patch('django_auth_lti.middleware.auth')
def test_roles_merged_with_custom_roles(self, mock_auth, mock_logger):
"""
Assert that 'roles' list in session contains merged set of roles when custom role key is
defined and values have been passed in.
"""
request = self.build_lti_launch_request({
'roles': 'RoleOne,RoleTwo',
'test_custom_role_key': 'My,Custom,Roles',
})
self.mw.process_request(request)
self.assertEqual(request.session['LTI_LAUNCH']['roles'], ['RoleOne', 'RoleTwo', 'My', 'Custom', 'Roles'])
@patch('django_auth_lti.middleware.settings.LTI_CUSTOM_ROLE_KEY', 'test_custom_role_key')
@patch('django_auth_lti.middleware.auth')
def test_roles_merge_with_empty_custom_roles(self, mock_auth, mock_logger):
"""
Assert that 'roles' list in session contains original set when custom role key is defined with empty data.
"""
request = self.build_lti_launch_request({
'roles': 'RoleOne,RoleTwo',
'test_custom_role_key': '',
})
self.mw.process_request(request)
self.assertEqual(request.session['LTI_LAUNCH']['roles'], ['RoleOne', 'RoleTwo'])
@patch('django_auth_lti.middleware.settings.LTI_CUSTOM_ROLE_KEY', None)
@patch('django_auth_lti.middleware.auth')
def test_roles_not_merged_with_no_role_key(self, mock_auth, mock_logger):
"""
Assert that 'roles' list in session contains original set when no custom role key is defined.
"""
request = self.build_lti_launch_request({
'roles': 'RoleOne,RoleTwo',
'test_custom_role_key': 'My,Custom,Roles',
})
self.mw.process_request(request)
self.assertEqual(request.session['LTI_LAUNCH']['roles'], ['RoleOne', 'RoleTwo'])
#!/usr/bin/env python
from django.conf import settings
def runtests():
settings.configure(
INSTALLED_APPS=(
'django_auth_lti',
),
# App-specific setttings
LTI_CUSTOM_ROLE_KEY='change-me',
)
from django.test.runner import DiscoverRunner
DiscoverRunner(interactive=False, failfast=False).run_tests(['django_auth_lti'])
if __name__ == '__main__':
runtests()
import os
from setuptools import setup
from setuptools import find_packages
README = open(os.path.join(os.path.dirname(__file__), 'README.md')).read()
......@@ -10,7 +9,7 @@ os.chdir(os.path.normpath(os.path.join(os.path.abspath(__file__), os.pardir)))
setup(
name='django-auth-lti',
version='0.7',
packages=find_packages(),
packages=['django_auth_lti'],
include_package_data=True,
license='TBD License', # example license
description='A simple Django app containing LTI auth middleware and backend.',
......@@ -32,9 +31,11 @@ setup(
],
install_requires=[
"Django>=1.6",
"django-filter==0.7",
"ims-lti-py==0.6",
"django-braces==1.3.1",
],
tests_require=[
'mock',
],
zip_safe=False,
)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment