Newer
Older
Bermudez, Jaime
committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
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'])