-
-
Notifications
You must be signed in to change notification settings - Fork 3.1k
/
middleware.py
109 lines (86 loc) · 4.25 KB
/
middleware.py
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
#-*- coding: utf-8 -*-
from __future__ import with_statement
from cms.middleware.multilingual import MultilingualURLMiddleware
from cms.middleware.toolbar import inster_after_tag, ToolbarMiddleware
from cms.test.testcases import CMSTestCase
from cms.test.util.context_managers import SettingsOverride
class MiddlewareTestCase(CMSTestCase):
def test_01_toolbar_helpers_insert_after_tag(self):
test_string_1 = None
test_string_2 = ""
test_string_3 = "<a href='test'>A test!</a>"
test_string_4 = "<p>A test!</p>"
tag = 'a'
insertion = '*Insertion*'
result = inster_after_tag(test_string_1, tag, insertion)
self.assertEqual(result, None)
result = inster_after_tag(test_string_2, tag, insertion)
self.assertEqual(result, "")
result = inster_after_tag(test_string_3, tag, insertion)
self.assertEqual(result, "<a href='test'>*Insertion*A test!</a>")
result = inster_after_tag(test_string_4, tag, insertion)
self.assertEqual(result, "<p>A test!</p>")
def test_02_toolbar_middleware_show_toolbar(self):
class Mock:
pass
middle = ToolbarMiddleware()
request = Mock()
response = Mock()
# if request.is_ajax():
setattr(request,'is_ajax', lambda : True)
result = middle.show_toolbar(request, response)
self.assertEqual(result, False)
#if response.status_code != 200:
setattr(request,'is_ajax', lambda : False)
setattr(response, 'status_code', 201)
result = middle.show_toolbar(request, response)
self.assertEqual(result, False)
setattr(response, 'status_code', 200)
#if not response['Content-Type'].split(';')[0] in HTML_TYPES:
setattr(response, '__getitem__', lambda _: 'Whatever')
result = middle.show_toolbar(request, response)
self.assertEqual(result, False)
setattr(response, '__getitem__', lambda _: 'text/html')
#if is_media_request(request):
setattr(request, 'path', '/media/')
result = middle.show_toolbar(request, response)
self.assertEqual(result, False)
setattr(request, 'path', '')
#if "edit" in request.GET:
setattr(request, 'GET', ["edit"])
result = middle.show_toolbar(request, response)
self.assertEqual(result, True)
setattr(request, 'GET', [])
#if not hasattr(request, "user"):
result = middle.show_toolbar(request, response)
self.assertEqual(result, False)
setattr(request, 'user', 'test-user')
def test_03_multilingual_middleware_get_lang_from_request(self):
class Mock:
pass
middle = MultilingualURLMiddleware()
with SettingsOverride(CMS_LANGUAGES = {'klingon':'Klingon'}):
request = Mock()
setattr(request, 'session', {})
setattr(request,'path_info', '/en/whatever')
setattr(request,'path', '/en/whatever')
result = middle.get_language_from_request(request)
self.assertEqual(result, 'en')
setattr(request,'path_info', 'whatever')
setattr(request,'path', 'whatever')
setattr(request,'session', {'django_language':'klingon'})
setattr(request,'COOKIES', {})
setattr(request,'META', {})
result = middle.get_language_from_request(request)
self.assertEqual(result, 'klingon') # the session's language. Nerd.
request = Mock()
setattr(request,'path_info', 'whatever')
setattr(request,'path', 'whatever')
setattr(request,'COOKIES', {'django_language':'klingon'})
setattr(request,'META', {})
result = middle.get_language_from_request(request)
self.assertEqual(result, 'klingon') # the cookies language.
# Now the following should revert to the default language (en)
setattr(request,'COOKIES', {'django_language':'elvish'})
result = middle.get_language_from_request(request)
self.assertEqual(result, 'en') # The default