django-cms-qe 3.0.2__py3-none-any.whl → 3.0.3__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- cms_qe/boilerplates/bootstrap3/templates/cms_qe/home.html +1 -2
- cms_qe/settings/base/cms.py +2 -1
- cms_qe_i18n/templates/cms_qe/i18n/language_switcher.html +0 -2
- cms_qe_newsletter/templates/admin/cms_qe_newsletter/mailinglist/change_list.html +0 -1
- cms_qe_table/templates/cms_qe/table/columns_widget.html +1 -2
- {django_cms_qe-3.0.2.dist-info → django_cms_qe-3.0.3.dist-info}/METADATA +1 -1
- {django_cms_qe-3.0.2.dist-info → django_cms_qe-3.0.3.dist-info}/RECORD +10 -78
- cms_qe/tests/__init__.py +0 -0
- cms_qe/tests/test_errors.py +0 -61
- cms_qe/tests/test_export.py +0 -108
- cms_qe/tests/test_monitoring.py +0 -15
- cms_qe/tests/test_utils.py +0 -77
- cms_qe/tests/test_views_security.py +0 -18
- cms_qe_analytical/LICENSE.txt +0 -19
- cms_qe_analytical/tests/__init__.py +0 -0
- cms_qe_analytical/tests/settings.py +0 -24
- cms_qe_analytical/tests/templatetags/__init__.py +0 -0
- cms_qe_analytical/tests/templatetags/dummy.py +0 -37
- cms_qe_analytical/tests/test_tag_google_analytics.py +0 -178
- cms_qe_analytical/tests/test_tag_piwik.py +0 -152
- cms_qe_analytical/tests/test_utils.py +0 -112
- cms_qe_analytical/tests/utils.py +0 -56
- cms_qe_auth/migrations/__pycache__/0001_initial.cpython-38.pyc +0 -0
- cms_qe_auth/migrations/__pycache__/0001_initial.cpython-39.pyc +0 -0
- cms_qe_auth/migrations/__pycache__/0002_auto_20171208_0915.cpython-38.pyc +0 -0
- cms_qe_auth/migrations/__pycache__/0002_auto_20171208_0915.cpython-39.pyc +0 -0
- cms_qe_auth/migrations/__pycache__/0003_auto_20210420_1050.cpython-38.pyc +0 -0
- cms_qe_auth/migrations/__pycache__/0003_auto_20210420_1050.cpython-39.pyc +0 -0
- cms_qe_auth/migrations/__pycache__/0004_alter_user_first_name_alter_user_id.cpython-39.pyc +0 -0
- cms_qe_auth/migrations/__pycache__/0005_delete_group.cpython-39.pyc +0 -0
- cms_qe_auth/migrations/__pycache__/__init__.cpython-38.pyc +0 -0
- cms_qe_auth/migrations/__pycache__/__init__.cpython-39.pyc +0 -0
- cms_qe_auth/tests/__init__.py +0 -0
- cms_qe_auth/tests/test_models.py +0 -70
- cms_qe_auth/tests/test_utils.py +0 -36
- cms_qe_auth/tests/test_view.py +0 -72
- cms_qe_auth/tests/utils.py +0 -22
- cms_qe_menu/migrations/__pycache__/0001_initial.cpython-38.pyc +0 -0
- cms_qe_menu/migrations/__pycache__/0001_initial.cpython-39.pyc +0 -0
- cms_qe_menu/migrations/__pycache__/0002_alter_menupluginmodel_cmsplugin_ptr.cpython-39.pyc +0 -0
- cms_qe_menu/migrations/__pycache__/__init__.cpython-38.pyc +0 -0
- cms_qe_menu/migrations/__pycache__/__init__.cpython-39.pyc +0 -0
- cms_qe_newsletter/migrations/__pycache__/0001_initial.cpython-38.pyc +0 -0
- cms_qe_newsletter/migrations/__pycache__/0001_initial.cpython-39.pyc +0 -0
- cms_qe_newsletter/migrations/__pycache__/0002_alter_mailinglist_id_and_more.cpython-39.pyc +0 -0
- cms_qe_newsletter/migrations/__pycache__/__init__.cpython-38.pyc +0 -0
- cms_qe_newsletter/migrations/__pycache__/__init__.cpython-39.pyc +0 -0
- cms_qe_newsletter/tests/__init__.py +0 -0
- cms_qe_newsletter/tests/test_mailchimp.py +0 -38
- cms_qe_newsletter/tests/test_managment.py +0 -22
- cms_qe_newsletter/tests/test_models.py +0 -43
- cms_qe_newsletter/tests/test_plugin.py +0 -21
- cms_qe_newsletter/tests/test_sync.py +0 -71
- cms_qe_newsletter/tests/test_views.py +0 -13
- cms_qe_table/migrations/__pycache__/0001_initial.cpython-38.pyc +0 -0
- cms_qe_table/migrations/__pycache__/0001_initial.cpython-39.pyc +0 -0
- cms_qe_table/migrations/__pycache__/0002_alter_tablepluginmodel_columns_and_more.cpython-39.pyc +0 -0
- cms_qe_table/migrations/__pycache__/0002_tablepluginmodel_filter.cpython-38.pyc +0 -0
- cms_qe_table/migrations/__pycache__/__init__.cpython-38.pyc +0 -0
- cms_qe_table/migrations/__pycache__/__init__.cpython-39.pyc +0 -0
- cms_qe_table/static/cms_qe/css/table/columns-widget.css +0 -11
- cms_qe_table/static/cms_qe/js/table/Sortable.min.js +0 -2
- cms_qe_table/tests/__init__.py +0 -0
- cms_qe_table/tests/test_models.py +0 -23
- cms_qe_table/tests/test_plugin.py +0 -18
- cms_qe_table/tests/test_utils.py +0 -90
- cms_qe_video/migrations/__pycache__/0001_initial.cpython-38.pyc +0 -0
- cms_qe_video/migrations/__pycache__/0001_initial.cpython-39.pyc +0 -0
- cms_qe_video/migrations/__pycache__/0002_alter_hostingvideoplayer_cmsplugin_ptr_and_more.cpython-39.pyc +0 -0
- cms_qe_video/migrations/__pycache__/__init__.cpython-38.pyc +0 -0
- cms_qe_video/migrations/__pycache__/__init__.cpython-39.pyc +0 -0
- cms_qe_video/tests/__init__.py +0 -0
- cms_qe_video/tests/test_models.py +0 -96
- cms_qe_video/tests/test_plugin.py +0 -24
- cms_qe_video/tests/test_templatetags.py +0 -20
- {django_cms_qe-3.0.2.dist-info → django_cms_qe-3.0.3.dist-info}/LICENSE +0 -0
- {django_cms_qe-3.0.2.dist-info → django_cms_qe-3.0.3.dist-info}/WHEEL +0 -0
- {django_cms_qe-3.0.2.dist-info → django_cms_qe-3.0.3.dist-info}/top_level.txt +0 -0
|
@@ -1,178 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
Tests for the Google Analytics template tags and filters.
|
|
3
|
-
"""
|
|
4
|
-
|
|
5
|
-
from constance.test import override_config
|
|
6
|
-
from django.http import HttpRequest
|
|
7
|
-
from django.template import Context
|
|
8
|
-
from django.test import override_settings
|
|
9
|
-
|
|
10
|
-
from ..templatetags.google_analytics import (SCOPE_PAGE, SCOPE_SESSION, SCOPE_VISITOR, TRACK_MULTIPLE_DOMAINS,
|
|
11
|
-
TRACK_MULTIPLE_SUBDOMAINS, TRACK_SINGLE_DOMAIN, GoogleAnalyticsNode)
|
|
12
|
-
from ..tests.utils import TagTestCase
|
|
13
|
-
from ..utils import AnalyticalException
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
@override_settings(GOOGLE_ANALYTICS_TRACKING_STYLE=TRACK_SINGLE_DOMAIN)
|
|
17
|
-
@override_config(GOOGLE_ANALYTICS_PROPERTY_ID='UA-123456-7')
|
|
18
|
-
class GoogleAnalyticsTagTestCase(TagTestCase):
|
|
19
|
-
"""
|
|
20
|
-
Tests for the ``google_analytics`` template tag.
|
|
21
|
-
"""
|
|
22
|
-
|
|
23
|
-
def test_tag(self):
|
|
24
|
-
r = self.render_tag('google_analytics', 'google_analytics')
|
|
25
|
-
self.assertTrue("_gaq.push(['_setAccount', 'UA-123456-7']);" in r, r)
|
|
26
|
-
self.assertTrue("_gaq.push(['_trackPageview']);" in r, r)
|
|
27
|
-
|
|
28
|
-
def test_node(self):
|
|
29
|
-
r = GoogleAnalyticsNode().render(Context())
|
|
30
|
-
self.assertTrue("_gaq.push(['_setAccount', 'UA-123456-7']);" in r, r)
|
|
31
|
-
self.assertTrue("_gaq.push(['_trackPageview']);" in r, r)
|
|
32
|
-
|
|
33
|
-
@override_config(GOOGLE_ANALYTICS_PROPERTY_ID='wrong')
|
|
34
|
-
def test_wrong_property_id(self):
|
|
35
|
-
self.assertEqual(GoogleAnalyticsNode().render({}), '')
|
|
36
|
-
|
|
37
|
-
@override_settings(
|
|
38
|
-
GOOGLE_ANALYTICS_TRACKING_STYLE=TRACK_MULTIPLE_SUBDOMAINS,
|
|
39
|
-
GOOGLE_ANALYTICS_DOMAIN='example.com')
|
|
40
|
-
def test_track_multiple_subdomains(self):
|
|
41
|
-
r = GoogleAnalyticsNode().render(Context())
|
|
42
|
-
self.assertTrue("_gaq.push(['_setDomainName', 'example.com']);" in r, r)
|
|
43
|
-
self.assertTrue("_gaq.push(['_setAllowHash', false]);" in r, r)
|
|
44
|
-
|
|
45
|
-
@override_settings(GOOGLE_ANALYTICS_TRACKING_STYLE=TRACK_MULTIPLE_DOMAINS,
|
|
46
|
-
GOOGLE_ANALYTICS_DOMAIN='example.com')
|
|
47
|
-
def test_track_multiple_domains(self):
|
|
48
|
-
r = GoogleAnalyticsNode().render(Context())
|
|
49
|
-
self.assertTrue("_gaq.push(['_setDomainName', 'example.com']);" in r, r)
|
|
50
|
-
self.assertTrue("_gaq.push(['_setAllowHash', false]);" in r, r)
|
|
51
|
-
self.assertTrue("_gaq.push(['_setAllowLinker', true]);" in r, r)
|
|
52
|
-
|
|
53
|
-
def test_custom_vars(self):
|
|
54
|
-
context = Context({
|
|
55
|
-
'google_analytics_var1': ('test1', 'foo'),
|
|
56
|
-
'google_analytics_var2': ('test2', 'bar', SCOPE_VISITOR),
|
|
57
|
-
'google_analytics_var4': ('test4', 'baz', SCOPE_SESSION),
|
|
58
|
-
'google_analytics_var5': ('test5', 'qux', SCOPE_PAGE),
|
|
59
|
-
})
|
|
60
|
-
r = GoogleAnalyticsNode().render(context)
|
|
61
|
-
self.assertTrue("_gaq.push(['_setCustomVar', 1, 'test1', 'foo', 3]);"
|
|
62
|
-
in r, r)
|
|
63
|
-
self.assertTrue("_gaq.push(['_setCustomVar', 2, 'test2', 'bar', 1]);"
|
|
64
|
-
in r, r)
|
|
65
|
-
self.assertTrue("_gaq.push(['_setCustomVar', 4, 'test4', 'baz', 2]);"
|
|
66
|
-
in r, r)
|
|
67
|
-
self.assertTrue("_gaq.push(['_setCustomVar', 5, 'test5', 'qux', 3]);"
|
|
68
|
-
in r, r)
|
|
69
|
-
|
|
70
|
-
@override_config(GOOGLE_ANALYTICS_SITE_SPEED=True)
|
|
71
|
-
def test_track_page_load_time(self):
|
|
72
|
-
r = GoogleAnalyticsNode().render(Context())
|
|
73
|
-
self.assertTrue("_gaq.push(['_trackPageLoadTime']);" in r, r)
|
|
74
|
-
|
|
75
|
-
def test_display_advertising(self):
|
|
76
|
-
with override_config(GOOGLE_ANALYTICS_DISPLAY_ADVERTISING=False):
|
|
77
|
-
r = GoogleAnalyticsNode().render(Context())
|
|
78
|
-
self.assertTrue("google-analytics.com/ga.js" in r, r)
|
|
79
|
-
with override_config(GOOGLE_ANALYTICS_DISPLAY_ADVERTISING=True):
|
|
80
|
-
r = GoogleAnalyticsNode().render(Context())
|
|
81
|
-
self.assertTrue("stats.g.doubleclick.net/dc.js" in r, r)
|
|
82
|
-
|
|
83
|
-
@override_settings(ANALYTICAL_INTERNAL_IPS=['1.1.1.1'])
|
|
84
|
-
def test_render_internal_ip(self):
|
|
85
|
-
req = HttpRequest()
|
|
86
|
-
req.META['REMOTE_ADDR'] = '1.1.1.1'
|
|
87
|
-
context = Context({'request': req})
|
|
88
|
-
r = GoogleAnalyticsNode().render(context)
|
|
89
|
-
self.assertTrue(r.startswith(
|
|
90
|
-
'<!-- Google Analytics disabled on internal IP address'), r)
|
|
91
|
-
self.assertTrue(r.endswith('-->'), r)
|
|
92
|
-
|
|
93
|
-
@override_config(GOOGLE_ANALYTICS_ANONYMIZE_IP=True)
|
|
94
|
-
def test_anonymize_ip(self):
|
|
95
|
-
r = GoogleAnalyticsNode().render(Context())
|
|
96
|
-
self.assertTrue("_gaq.push (['_gat._anonymizeIp']);" in r, r)
|
|
97
|
-
|
|
98
|
-
@override_config(GOOGLE_ANALYTICS_ANONYMIZE_IP=False)
|
|
99
|
-
def test_anonymize_ip_not_present(self):
|
|
100
|
-
r = GoogleAnalyticsNode().render(Context())
|
|
101
|
-
self.assertFalse("_gaq.push (['_gat._anonymizeIp']);" in r, r)
|
|
102
|
-
|
|
103
|
-
@override_config(GOOGLE_ANALYTICS_SAMPLE_RATE=0.0)
|
|
104
|
-
def test_set_sample_rate_min(self):
|
|
105
|
-
r = GoogleAnalyticsNode().render(Context())
|
|
106
|
-
self.assertTrue("_gaq.push (['_setSampleRate', '0.00']);" in r, r)
|
|
107
|
-
|
|
108
|
-
@override_config(GOOGLE_ANALYTICS_SAMPLE_RATE='100.00')
|
|
109
|
-
def test_set_sample_rate_max(self):
|
|
110
|
-
r = GoogleAnalyticsNode().render(Context())
|
|
111
|
-
self.assertTrue("_gaq.push (['_setSampleRate', '100.00']);" in r, r)
|
|
112
|
-
|
|
113
|
-
#
|
|
114
|
-
@override_config(GOOGLE_ANALYTICS_SAMPLE_RATE=-1)
|
|
115
|
-
def test_exception_whenset_sample_rate_too_small(self):
|
|
116
|
-
context = Context()
|
|
117
|
-
self.assertRaises(AnalyticalException, GoogleAnalyticsNode().render,
|
|
118
|
-
context)
|
|
119
|
-
|
|
120
|
-
@override_config(GOOGLE_ANALYTICS_SAMPLE_RATE=101)
|
|
121
|
-
def test_exception_when_set_sample_rate_too_large(self):
|
|
122
|
-
context = Context()
|
|
123
|
-
self.assertRaises(AnalyticalException, GoogleAnalyticsNode().render,
|
|
124
|
-
context)
|
|
125
|
-
|
|
126
|
-
@override_config(GOOGLE_ANALYTICS_SITE_SPEED_SAMPLE_RATE=0.0)
|
|
127
|
-
def test_set_site_speed_sample_rate_min(self):
|
|
128
|
-
r = GoogleAnalyticsNode().render(Context())
|
|
129
|
-
self.assertTrue("_gaq.push (['_setSiteSpeedSampleRate', '0.00']);" in r, r)
|
|
130
|
-
|
|
131
|
-
@override_config(GOOGLE_ANALYTICS_SITE_SPEED_SAMPLE_RATE='100.00')
|
|
132
|
-
def test_set_site_speed_sample_rate_max(self):
|
|
133
|
-
r = GoogleAnalyticsNode().render(Context())
|
|
134
|
-
self.assertTrue("_gaq.push (['_setSiteSpeedSampleRate', '100.00']);" in r, r)
|
|
135
|
-
|
|
136
|
-
@override_config(GOOGLE_ANALYTICS_SITE_SPEED_SAMPLE_RATE=-1)
|
|
137
|
-
def test_exception_whenset_site_speed_sample_rate_too_small(self):
|
|
138
|
-
context = Context()
|
|
139
|
-
self.assertRaises(AnalyticalException, GoogleAnalyticsNode().render,
|
|
140
|
-
context)
|
|
141
|
-
|
|
142
|
-
@override_config(GOOGLE_ANALYTICS_SITE_SPEED_SAMPLE_RATE=101)
|
|
143
|
-
def test_exception_when_set_site_speed_sample_rate_too_large(self):
|
|
144
|
-
context = Context()
|
|
145
|
-
self.assertRaises(AnalyticalException, GoogleAnalyticsNode().render,
|
|
146
|
-
context)
|
|
147
|
-
|
|
148
|
-
@override_config(GOOGLE_ANALYTICS_SESSION_COOKIE_TIMEOUT=0)
|
|
149
|
-
def test_set_session_cookie_timeout_min(self):
|
|
150
|
-
r = GoogleAnalyticsNode().render(Context())
|
|
151
|
-
self.assertTrue("_gaq.push (['_setSessionCookieTimeout', '0']);" in r, r)
|
|
152
|
-
|
|
153
|
-
@override_config(GOOGLE_ANALYTICS_SESSION_COOKIE_TIMEOUT='10000')
|
|
154
|
-
def test_set_session_cookie_timeout_as_string(self):
|
|
155
|
-
r = GoogleAnalyticsNode().render(Context())
|
|
156
|
-
self.assertTrue("_gaq.push (['_setSessionCookieTimeout', '10000']);" in r, r)
|
|
157
|
-
|
|
158
|
-
@override_config(GOOGLE_ANALYTICS_SESSION_COOKIE_TIMEOUT=-1)
|
|
159
|
-
def test_exception_when_set_session_cookie_timeout_too_small(self):
|
|
160
|
-
context = Context()
|
|
161
|
-
self.assertRaises(AnalyticalException, GoogleAnalyticsNode().render,
|
|
162
|
-
context)
|
|
163
|
-
|
|
164
|
-
@override_config(GOOGLE_ANALYTICS_VISITOR_COOKIE_TIMEOUT=0)
|
|
165
|
-
def test_set_visitor_cookie_timeout_min(self):
|
|
166
|
-
r = GoogleAnalyticsNode().render(Context())
|
|
167
|
-
self.assertTrue("_gaq.push (['_setVisitorCookieTimeout', '0']);" in r, r)
|
|
168
|
-
|
|
169
|
-
@override_config(GOOGLE_ANALYTICS_VISITOR_COOKIE_TIMEOUT='10000')
|
|
170
|
-
def test_set_visitor_cookie_timeout_as_string(self):
|
|
171
|
-
r = GoogleAnalyticsNode().render(Context())
|
|
172
|
-
self.assertTrue("_gaq.push (['_setVisitorCookieTimeout', '10000']);" in r, r)
|
|
173
|
-
|
|
174
|
-
@override_config(GOOGLE_ANALYTICS_VISITOR_COOKIE_TIMEOUT=-1)
|
|
175
|
-
def test_exception_when_set_visitor_cookie_timeout_too_small(self):
|
|
176
|
-
context = Context()
|
|
177
|
-
self.assertRaises(AnalyticalException, GoogleAnalyticsNode().render,
|
|
178
|
-
context)
|
|
@@ -1,152 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
Tests for the Piwik template tags and filters.
|
|
3
|
-
"""
|
|
4
|
-
|
|
5
|
-
from constance.test import override_config
|
|
6
|
-
from django.contrib.auth import get_user_model
|
|
7
|
-
from django.http import HttpRequest
|
|
8
|
-
from django.template import Context
|
|
9
|
-
from django.test.utils import override_settings
|
|
10
|
-
|
|
11
|
-
from ..templatetags.piwik import PiwikNode
|
|
12
|
-
from ..tests.utils import TagTestCase
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
@override_config(PIWIK_DOMAIN_PATH='example.com', PIWIK_SITE_ID='345')
|
|
16
|
-
class PiwikTagTestCase(TagTestCase):
|
|
17
|
-
"""
|
|
18
|
-
Tests for the ``piwik`` template tag.
|
|
19
|
-
"""
|
|
20
|
-
|
|
21
|
-
def test_tag(self):
|
|
22
|
-
r = self.render_tag('piwik', 'piwik')
|
|
23
|
-
self.assertTrue(' ? "https" : "http") + "://example.com/";' in r, r)
|
|
24
|
-
self.assertTrue("_paq.push(['setSiteId', 345]);" in r, r)
|
|
25
|
-
self.assertTrue('img src="http://example.com/matomo.php?idsite=345"'
|
|
26
|
-
in r, r)
|
|
27
|
-
|
|
28
|
-
def test_node(self):
|
|
29
|
-
r = PiwikNode().render(Context({}))
|
|
30
|
-
self.assertTrue(' ? "https" : "http") + "://example.com/";' in r, r)
|
|
31
|
-
self.assertTrue("_paq.push(['setSiteId', 345]);" in r, r)
|
|
32
|
-
self.assertTrue('img src="http://example.com/matomo.php?idsite=345"'
|
|
33
|
-
in r, r)
|
|
34
|
-
|
|
35
|
-
@override_config(PIWIK_DOMAIN_PATH='example.com/piwik',
|
|
36
|
-
PIWIK_SITE_ID='345')
|
|
37
|
-
def test_domain_path_valid(self):
|
|
38
|
-
r = self.render_tag('piwik', 'piwik')
|
|
39
|
-
self.assertTrue(' ? "https" : "http") + "://example.com/piwik/";' in r,
|
|
40
|
-
r)
|
|
41
|
-
|
|
42
|
-
@override_config(PIWIK_DOMAIN_PATH='example.com:1234',
|
|
43
|
-
PIWIK_SITE_ID='345')
|
|
44
|
-
def test_domain_port_valid(self):
|
|
45
|
-
r = self.render_tag('piwik', 'piwik')
|
|
46
|
-
self.assertTrue(' ? "https" : "http") + "://example.com:1234/";' in r,
|
|
47
|
-
r)
|
|
48
|
-
|
|
49
|
-
@override_config(PIWIK_DOMAIN_PATH='example.com:1234/piwik',
|
|
50
|
-
PIWIK_SITE_ID='345')
|
|
51
|
-
def test_domain_port_path_valid(self):
|
|
52
|
-
r = self.render_tag('piwik', 'piwik')
|
|
53
|
-
self.assertTrue(' ? "https" : "http") + "://example.com:1234/piwik/";' in r,
|
|
54
|
-
r)
|
|
55
|
-
|
|
56
|
-
@override_config(PIWIK_DOMAIN_PATH='')
|
|
57
|
-
def test_no_domain(self):
|
|
58
|
-
self.assertEqual(PiwikNode().render({}), '')
|
|
59
|
-
|
|
60
|
-
@override_config(PIWIK_SITE_ID='')
|
|
61
|
-
def test_no_siteid(self):
|
|
62
|
-
self.assertEqual(PiwikNode().render({}), '')
|
|
63
|
-
|
|
64
|
-
@override_config(PIWIK_SITE_ID='x')
|
|
65
|
-
def test_siteid_not_a_number(self):
|
|
66
|
-
self.assertEqual(PiwikNode().render({}), '')
|
|
67
|
-
|
|
68
|
-
@override_config(PIWIK_DOMAIN_PATH='http://www.example.com')
|
|
69
|
-
def test_domain_protocol_invalid(self):
|
|
70
|
-
self.assertEqual(PiwikNode().render({}), '')
|
|
71
|
-
|
|
72
|
-
@override_config(PIWIK_DOMAIN_PATH='example.com/')
|
|
73
|
-
def test_domain_slash_invalid(self):
|
|
74
|
-
self.assertEqual(PiwikNode().render({}), '')
|
|
75
|
-
|
|
76
|
-
@override_config(PIWIK_DOMAIN_PATH='example.com:123:456')
|
|
77
|
-
def test_domain_multi_port(self):
|
|
78
|
-
self.assertEqual(PiwikNode().render({}), '')
|
|
79
|
-
|
|
80
|
-
@override_config(PIWIK_DOMAIN_PATH='example.com:')
|
|
81
|
-
def test_domain_incomplete_port(self):
|
|
82
|
-
self.assertEqual(PiwikNode().render({}), '')
|
|
83
|
-
|
|
84
|
-
@override_config(PIWIK_DOMAIN_PATH='example.com:/piwik')
|
|
85
|
-
def test_domain_uri_incomplete_port(self):
|
|
86
|
-
self.assertEqual(PiwikNode().render({}), '')
|
|
87
|
-
|
|
88
|
-
@override_config(PIWIK_DOMAIN_PATH='example.com:12df')
|
|
89
|
-
def test_domain_port_invalid(self):
|
|
90
|
-
self.assertEqual(PiwikNode().render({}), '')
|
|
91
|
-
|
|
92
|
-
@override_settings(ANALYTICAL_INTERNAL_IPS=['1.1.1.1'])
|
|
93
|
-
def test_render_internal_ip(self):
|
|
94
|
-
req = HttpRequest()
|
|
95
|
-
req.META['REMOTE_ADDR'] = '1.1.1.1'
|
|
96
|
-
context = Context({'request': req})
|
|
97
|
-
r = PiwikNode().render(context)
|
|
98
|
-
self.assertTrue(r.startswith(
|
|
99
|
-
'<!-- Piwik disabled on internal IP address'), r)
|
|
100
|
-
self.assertTrue(r.endswith('-->'), r)
|
|
101
|
-
|
|
102
|
-
def test_uservars(self):
|
|
103
|
-
context = Context({'piwik_vars': [(1, 'foo', 'foo_val'),
|
|
104
|
-
(2, 'bar', 'bar_val', 'page'),
|
|
105
|
-
(3, 'spam', 'spam_val', 'visit')]})
|
|
106
|
-
r = PiwikNode().render(context)
|
|
107
|
-
msg = 'Incorrect Piwik custom variable rendering. Expected:\n%s\nIn:\n%s'
|
|
108
|
-
for var_code in ['_paq.push(["setCustomVariable", 1, "foo", "foo_val", "page"]);',
|
|
109
|
-
'_paq.push(["setCustomVariable", 2, "bar", "bar_val", "page"]);',
|
|
110
|
-
'_paq.push(["setCustomVariable", 3, "spam", "spam_val", "visit"]);']:
|
|
111
|
-
self.assertIn(var_code, r, msg % (var_code, r))
|
|
112
|
-
|
|
113
|
-
@override_settings(ANALYTICAL_AUTO_IDENTIFY=True)
|
|
114
|
-
def test_default_usertrack(self):
|
|
115
|
-
User = get_user_model()
|
|
116
|
-
context = Context({
|
|
117
|
-
'user': User(username='BDFL', first_name='Guido', last_name='van Rossum')
|
|
118
|
-
})
|
|
119
|
-
r = PiwikNode().render(context)
|
|
120
|
-
msg = 'Incorrect Piwik user tracking rendering.\nNot found:\n%s\nIn:\n%s'
|
|
121
|
-
var_code = '_paq.push(["setUserId", "BDFL"]);'
|
|
122
|
-
self.assertIn(var_code, r, msg % (var_code, r))
|
|
123
|
-
|
|
124
|
-
def test_piwik_usertrack(self):
|
|
125
|
-
context = Context({
|
|
126
|
-
'piwik_identity': 'BDFL'
|
|
127
|
-
})
|
|
128
|
-
r = PiwikNode().render(context)
|
|
129
|
-
msg = 'Incorrect Piwik user tracking rendering.\nNot found:\n%s\nIn:\n%s'
|
|
130
|
-
var_code = '_paq.push(["setUserId", "BDFL"]);'
|
|
131
|
-
self.assertIn(var_code, r, msg % (var_code, r))
|
|
132
|
-
|
|
133
|
-
def test_analytical_usertrack(self):
|
|
134
|
-
context = Context({
|
|
135
|
-
'analytical_identity': 'BDFL'
|
|
136
|
-
})
|
|
137
|
-
r = PiwikNode().render(context)
|
|
138
|
-
msg = 'Incorrect Piwik user tracking rendering.\nNot found:\n%s\nIn:\n%s'
|
|
139
|
-
var_code = '_paq.push(["setUserId", "BDFL"]);'
|
|
140
|
-
self.assertIn(var_code, r, msg % (var_code, r))
|
|
141
|
-
|
|
142
|
-
@override_settings(ANALYTICAL_AUTO_IDENTIFY=True)
|
|
143
|
-
def test_disable_usertrack(self):
|
|
144
|
-
User = get_user_model()
|
|
145
|
-
context = Context({
|
|
146
|
-
'user': User(username='BDFL', first_name='Guido', last_name='van Rossum'),
|
|
147
|
-
'piwik_identity': None
|
|
148
|
-
})
|
|
149
|
-
r = PiwikNode().render(context)
|
|
150
|
-
msg = 'Incorrect Piwik user tracking rendering.\nFound:\n%s\nIn:\n%s'
|
|
151
|
-
var_code = '_paq.push(["setUserId", "BDFL"]);'
|
|
152
|
-
self.assertNotIn(var_code, r, msg % (var_code, r))
|
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
Tests for the analytical.utils module.
|
|
3
|
-
"""
|
|
4
|
-
# import django
|
|
5
|
-
|
|
6
|
-
from django.contrib.auth.models import AbstractBaseUser
|
|
7
|
-
from django.db import models
|
|
8
|
-
from django.http import HttpRequest
|
|
9
|
-
from django.template import Context
|
|
10
|
-
from django.test.utils import override_settings
|
|
11
|
-
|
|
12
|
-
from ..tests.utils import TestCase
|
|
13
|
-
from ..utils import AnalyticalException, get_domain, get_identity, get_required_setting, is_internal_ip
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
class SettingDeletedTestCase(TestCase):
|
|
17
|
-
|
|
18
|
-
@override_settings(USER_ID=None)
|
|
19
|
-
def test_get_required_setting(self):
|
|
20
|
-
"""
|
|
21
|
-
Make sure using get_required_setting fails in the right place.
|
|
22
|
-
"""
|
|
23
|
-
|
|
24
|
-
# available in python >= 3.2
|
|
25
|
-
if hasattr(self, 'assertRaisesRegex'):
|
|
26
|
-
with self.assertRaisesRegex(AnalyticalException, "USER_ID"):
|
|
27
|
-
get_required_setting("USER_ID", r"\d+", "invalid USER_ID")
|
|
28
|
-
else:
|
|
29
|
-
self.assertRaises(AnalyticalException,
|
|
30
|
-
get_required_setting, "USER_ID", r"\d+", "invalid USER_ID")
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
class MyUser(AbstractBaseUser):
|
|
34
|
-
identity = models.CharField(max_length=50)
|
|
35
|
-
USERNAME_FIELD = 'identity'
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
class GetIdentityTestCase(TestCase):
|
|
39
|
-
def test_custom_username_field(self):
|
|
40
|
-
get_id = get_identity(Context({}), user=MyUser(identity='fake_id'))
|
|
41
|
-
self.assertEqual(get_id, 'fake_id')
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
@override_settings(ANALYTICAL_DOMAIN="example.org")
|
|
45
|
-
class GetDomainTestCase(TestCase):
|
|
46
|
-
def test_get_service_domain_from_context(self):
|
|
47
|
-
context = Context({'test_domain': 'example.com'})
|
|
48
|
-
self.assertEqual(get_domain(context, 'test'), 'example.com')
|
|
49
|
-
|
|
50
|
-
def test_get_analytical_domain_from_context(self):
|
|
51
|
-
context = Context({'analytical_domain': 'example.com'})
|
|
52
|
-
self.assertEqual(get_domain(context, 'test'), 'example.com')
|
|
53
|
-
|
|
54
|
-
@override_settings(TEST_DOMAIN="example.net")
|
|
55
|
-
def test_get_service_domain_from_settings(self):
|
|
56
|
-
context = Context()
|
|
57
|
-
self.assertEqual(get_domain(context, 'test'), 'example.net')
|
|
58
|
-
|
|
59
|
-
def test_get_analytical_domain_from_settings(self):
|
|
60
|
-
context = Context()
|
|
61
|
-
self.assertEqual(get_domain(context, 'test'), 'example.org')
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
class InternalIpTestCase(TestCase):
|
|
65
|
-
|
|
66
|
-
@override_settings(ANALYTICAL_INTERNAL_IPS=['1.1.1.1'])
|
|
67
|
-
def test_render_no_internal_ip(self):
|
|
68
|
-
context = Context()
|
|
69
|
-
self.assertFalse(is_internal_ip(context))
|
|
70
|
-
|
|
71
|
-
@override_settings(INTERNAL_IPS=['1.1.1.1'])
|
|
72
|
-
@override_settings(ANALYTICAL_INTERNAL_IPS=[])
|
|
73
|
-
def test_render_analytical_internal_ips_override_when_empty(self):
|
|
74
|
-
req = HttpRequest()
|
|
75
|
-
req.META['REMOTE_ADDR'] = '1.1.1.1'
|
|
76
|
-
context = Context({'request': req})
|
|
77
|
-
self.assertFalse(is_internal_ip(context))
|
|
78
|
-
|
|
79
|
-
@override_settings(ANALYTICAL_INTERNAL_IPS=['1.1.1.1'])
|
|
80
|
-
def test_render_internal_ip(self):
|
|
81
|
-
req = HttpRequest()
|
|
82
|
-
req.META['REMOTE_ADDR'] = '1.1.1.1'
|
|
83
|
-
context = Context({'request': req})
|
|
84
|
-
self.assertTrue(is_internal_ip(context))
|
|
85
|
-
|
|
86
|
-
@override_settings(TEST_INTERNAL_IPS=['1.1.1.1'])
|
|
87
|
-
def test_render_prefix_internal_ip(self):
|
|
88
|
-
req = HttpRequest()
|
|
89
|
-
req.META['REMOTE_ADDR'] = '1.1.1.1'
|
|
90
|
-
context = Context({'request': req})
|
|
91
|
-
self.assertTrue(is_internal_ip(context, 'TEST'))
|
|
92
|
-
|
|
93
|
-
@override_settings(INTERNAL_IPS=['1.1.1.1'])
|
|
94
|
-
def test_render_internal_ip_fallback(self):
|
|
95
|
-
req = HttpRequest()
|
|
96
|
-
req.META['REMOTE_ADDR'] = '1.1.1.1'
|
|
97
|
-
context = Context({'request': req})
|
|
98
|
-
self.assertTrue(is_internal_ip(context))
|
|
99
|
-
|
|
100
|
-
@override_settings(ANALYTICAL_INTERNAL_IPS=['1.1.1.1'])
|
|
101
|
-
def test_render_internal_ip_forwarded_for(self):
|
|
102
|
-
req = HttpRequest()
|
|
103
|
-
req.META['HTTP_X_FORWARDED_FOR'] = '1.1.1.1'
|
|
104
|
-
context = Context({'request': req})
|
|
105
|
-
self.assertTrue(is_internal_ip(context))
|
|
106
|
-
|
|
107
|
-
@override_settings(ANALYTICAL_INTERNAL_IPS=['1.1.1.1'])
|
|
108
|
-
def test_render_different_internal_ip(self):
|
|
109
|
-
req = HttpRequest()
|
|
110
|
-
req.META['REMOTE_ADDR'] = '2.2.2.2'
|
|
111
|
-
context = Context({'request': req})
|
|
112
|
-
self.assertFalse(is_internal_ip(context))
|
cms_qe_analytical/tests/utils.py
DELETED
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
Testing utilities.
|
|
3
|
-
"""
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
from django.template import Context, RequestContext, Template
|
|
7
|
-
from django.test.testcases import TestCase
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
def run_tests():
|
|
11
|
-
"""
|
|
12
|
-
Use the Django test runner to run the tests.
|
|
13
|
-
|
|
14
|
-
Sets the return code to the number of failed tests.
|
|
15
|
-
"""
|
|
16
|
-
import sys
|
|
17
|
-
|
|
18
|
-
import django
|
|
19
|
-
try:
|
|
20
|
-
django.setup()
|
|
21
|
-
except AttributeError:
|
|
22
|
-
pass
|
|
23
|
-
try:
|
|
24
|
-
from django.test.runner import DiscoverRunner as TestRunner
|
|
25
|
-
except ImportError:
|
|
26
|
-
from django.test.simple import DjangoTestSuiteRunner as TestRunner
|
|
27
|
-
runner = TestRunner()
|
|
28
|
-
sys.exit(runner.run_tests(["analytical"]))
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
class TagTestCase(TestCase):
|
|
32
|
-
"""
|
|
33
|
-
Tests for a template tag.
|
|
34
|
-
|
|
35
|
-
Adds support methods for testing template tags.
|
|
36
|
-
"""
|
|
37
|
-
|
|
38
|
-
def render_tag(self, library, tag, vars=None, request=None):
|
|
39
|
-
if vars is None:
|
|
40
|
-
vars = {}
|
|
41
|
-
t = Template(f"{{% load {library} %}}{{% {tag} %}}")
|
|
42
|
-
if request is not None:
|
|
43
|
-
context = RequestContext(request, vars)
|
|
44
|
-
else:
|
|
45
|
-
context = Context(vars)
|
|
46
|
-
return t.render(context)
|
|
47
|
-
|
|
48
|
-
def render_template(self, template, vars=None, request=None):
|
|
49
|
-
if vars is None:
|
|
50
|
-
vars = {}
|
|
51
|
-
t = Template(template)
|
|
52
|
-
if request is not None:
|
|
53
|
-
context = RequestContext(request, vars)
|
|
54
|
-
else:
|
|
55
|
-
context = Context(vars)
|
|
56
|
-
return t.render(context)
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
cms_qe_auth/tests/__init__.py
DELETED
|
File without changes
|
cms_qe_auth/tests/test_models.py
DELETED
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
import re
|
|
2
|
-
|
|
3
|
-
from django.test import override_settings
|
|
4
|
-
from django.urls.converters import SlugConverter
|
|
5
|
-
from pytest_data import use_data
|
|
6
|
-
|
|
7
|
-
from cms_qe_auth.models import User
|
|
8
|
-
from cms_qe_auth.tests.utils import reset_urls
|
|
9
|
-
from cms_qe_auth.utils import pk_to_uidb64
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
def test_set_username_by_email():
|
|
13
|
-
user = User(email='user@example.com')
|
|
14
|
-
assert not user.username
|
|
15
|
-
user.save()
|
|
16
|
-
assert user.username == user.email
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
@use_data(user_data={'username': 'user@example.com', 'email': 'user@example.com'})
|
|
20
|
-
def test_set_username_by_changing_email(user):
|
|
21
|
-
assert user.username == 'user@example.com'
|
|
22
|
-
user.email = 'another@example.com'
|
|
23
|
-
assert user.username == 'user@example.com'
|
|
24
|
-
user.save()
|
|
25
|
-
assert user.username == 'another@example.com'
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
@use_data(user_data={'email': 'user@example.com'})
|
|
29
|
-
def test_unset_is_active_by_changing_email(user):
|
|
30
|
-
assert user.is_active
|
|
31
|
-
user.email = 'another@example.com'
|
|
32
|
-
assert user.is_active
|
|
33
|
-
user.save()
|
|
34
|
-
assert not user.is_active
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
def test_simple_token_generation_and_checking(user):
|
|
38
|
-
token = user._generate_activation_token()
|
|
39
|
-
assert user._check_activation_token(token)
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
@use_data(user_data={'is_active': False})
|
|
43
|
-
def test_simple_token_generation_and_activate_is_active(user):
|
|
44
|
-
assert not user.is_active
|
|
45
|
-
token = user._generate_activation_token()
|
|
46
|
-
user.activate(token)
|
|
47
|
-
assert user.is_active
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
@use_data(user_data={'is_active': False})
|
|
51
|
-
def test_simple_token_generation_and_activate_invalid(user):
|
|
52
|
-
user._generate_activation_token()
|
|
53
|
-
assert not user.activate("123456789ABZ-987654321abcdefg")
|
|
54
|
-
assert not user.is_active
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
@override_settings(CMS_QE_AUTH_ENABLED=True)
|
|
58
|
-
def test_activation_email_sending(mailoutbox):
|
|
59
|
-
reset_urls()
|
|
60
|
-
user = User(username='testuser', email='testuser@example.com', is_active=False)
|
|
61
|
-
user.save(base_url="http://example.com")
|
|
62
|
-
assert len(mailoutbox) == 1
|
|
63
|
-
email = mailoutbox[0]
|
|
64
|
-
assert user.email == email.to[0]
|
|
65
|
-
assert 'activate' in email.subject.lower()
|
|
66
|
-
token_re = f'(?P<token>{SlugConverter.regex})'
|
|
67
|
-
url_re = fr'//example.com/en/auth/activate/{pk_to_uidb64(user.pk)}/{token_re}'
|
|
68
|
-
match = re.findall(url_re, email.body)
|
|
69
|
-
assert match
|
|
70
|
-
assert user._check_activation_token(match[0])
|
cms_qe_auth/tests/test_utils.py
DELETED
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import pytest
|
|
2
|
-
from pytest_data import use_data
|
|
3
|
-
|
|
4
|
-
from ..utils import get_user_by_uidb64, pk_to_uidb64, uidb64_to_pk
|
|
5
|
-
|
|
6
|
-
UIDB64_TEST_DATA = (
|
|
7
|
-
'pk, uid',
|
|
8
|
-
[
|
|
9
|
-
('1', 'MQ'),
|
|
10
|
-
('99', 'OTk'),
|
|
11
|
-
('100', 'MTAw'),
|
|
12
|
-
('123456', 'MTIzNDU2')
|
|
13
|
-
]
|
|
14
|
-
)
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
@pytest.mark.parametrize(*UIDB64_TEST_DATA)
|
|
18
|
-
def test_uidb64_to_pk(pk, uid):
|
|
19
|
-
assert uidb64_to_pk(uid) == pk
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
@pytest.mark.parametrize(*UIDB64_TEST_DATA)
|
|
23
|
-
def test_pk_to_uidb64(pk, uid):
|
|
24
|
-
assert pk_to_uidb64(pk) == uid
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
@use_data(user_data={'id': 1})
|
|
28
|
-
def test_get_user_by_uidb64(user):
|
|
29
|
-
assert user.pk == 1
|
|
30
|
-
assert user == get_user_by_uidb64("MQ")
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
@use_data(user_data={'id': 1})
|
|
34
|
-
def test_get_user_by_uidb64_user_not_exits(user):
|
|
35
|
-
user = get_user_by_uidb64("Mg")
|
|
36
|
-
assert not user
|