Mercurial > p > roundup > code
annotate test/test_templating.py @ 8223:cfd8eb705c2f
test: fix syntax
empty exclude is an error.
| author | John Rouillard <rouilj@ieee.org> |
|---|---|
| date | Wed, 18 Dec 2024 20:25:35 -0500 |
| parents | a9b136565838 |
| children | 669dfccca898 |
| rev | line source |
|---|---|
|
5376
64b05e24dbd8
Python 3 preparation: convert print to a function.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5226
diff
changeset
|
1 from __future__ import print_function |
|
2158
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2 import unittest |
| 7032 | 3 import time |
|
2158
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
4 |
|
7582
978285986b2c
fix: issue2551193 - Fix roundup for removal of cgi and cgitb ...
John Rouillard <rouilj@ieee.org>
parents:
7576
diff
changeset
|
5 from roundup.anypy.cgi_ import FieldStorage, MiniFieldStorage |
|
2158
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
6 from roundup.cgi.templating import * |
|
7866
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
7 from roundup.cgi.ZTUtils.Iterator import Iterator |
|
5388
d26921b851c3
Python 3 preparation: make relative imports explicit.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5378
diff
changeset
|
8 from .test_actions import MockNull, true |
|
6995
dc83ebff4c90
change test to use html normalizer when comparing html output.
John Rouillard <rouilj@ieee.org>
parents:
6992
diff
changeset
|
9 from .html_norm import NormalizingHtmlParser |
|
2158
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
10 |
|
6096
c914b3d8362f
If rst missing skip; initial attempt to test structuredtext.
John Rouillard <rouilj@ieee.org>
parents:
6095
diff
changeset
|
11 |
|
c914b3d8362f
If rst missing skip; initial attempt to test structuredtext.
John Rouillard <rouilj@ieee.org>
parents:
6095
diff
changeset
|
12 import pytest |
|
c914b3d8362f
If rst missing skip; initial attempt to test structuredtext.
John Rouillard <rouilj@ieee.org>
parents:
6095
diff
changeset
|
13 from .pytest_patcher import mark_class |
|
c914b3d8362f
If rst missing skip; initial attempt to test structuredtext.
John Rouillard <rouilj@ieee.org>
parents:
6095
diff
changeset
|
14 |
|
7576
7bdf9c0f74b9
Handle error id markdown2 not defined.
John Rouillard <rouilj@ieee.org>
parents:
7561
diff
changeset
|
15 try: |
|
7bdf9c0f74b9
Handle error id markdown2 not defined.
John Rouillard <rouilj@ieee.org>
parents:
7561
diff
changeset
|
16 from markdown2 import __version_info__ as md2__version_info__ |
|
7bdf9c0f74b9
Handle error id markdown2 not defined.
John Rouillard <rouilj@ieee.org>
parents:
7561
diff
changeset
|
17 except ImportError: |
|
7bdf9c0f74b9
Handle error id markdown2 not defined.
John Rouillard <rouilj@ieee.org>
parents:
7561
diff
changeset
|
18 md2__version_info__ = (0,0,0) |
|
7561
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
19 |
|
6099
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
20 if ReStructuredText: |
|
6096
c914b3d8362f
If rst missing skip; initial attempt to test structuredtext.
John Rouillard <rouilj@ieee.org>
parents:
6095
diff
changeset
|
21 skip_rst = lambda func, *args, **kwargs: func |
|
6099
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
22 else: |
|
6096
c914b3d8362f
If rst missing skip; initial attempt to test structuredtext.
John Rouillard <rouilj@ieee.org>
parents:
6095
diff
changeset
|
23 skip_rst = mark_class(pytest.mark.skip( |
|
c914b3d8362f
If rst missing skip; initial attempt to test structuredtext.
John Rouillard <rouilj@ieee.org>
parents:
6095
diff
changeset
|
24 reason='ReStructuredText not available')) |
|
c914b3d8362f
If rst missing skip; initial attempt to test structuredtext.
John Rouillard <rouilj@ieee.org>
parents:
6095
diff
changeset
|
25 |
|
6099
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
26 import roundup.cgi.templating |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
27 if roundup.cgi.templating._import_mistune(): |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
28 skip_mistune = lambda func, *args, **kwargs: func |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
29 else: |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
30 skip_mistune = mark_class(pytest.mark.skip( |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
31 reason='mistune not available')) |
|
6095
3ada6a3f48e1
fixed ReStructuredText encoding with Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6059
diff
changeset
|
32 |
|
6099
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
33 if roundup.cgi.templating._import_markdown2(): |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
34 skip_markdown2 = lambda func, *args, **kwargs: func |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
35 else: |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
36 skip_markdown2 = mark_class(pytest.mark.skip( |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
37 reason='markdown2 not available')) |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
38 |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
39 if roundup.cgi.templating._import_markdown(): |
|
6097
90a1470edbea
added markdown rendering support using either markdown2 or markdown
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6096
diff
changeset
|
40 skip_markdown = lambda func, *args, **kwargs: func |
|
6099
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
41 else: |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
42 skip_markdown = mark_class(pytest.mark.skip( |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
43 reason='markdown not available')) |
|
6097
90a1470edbea
added markdown rendering support using either markdown2 or markdown
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6096
diff
changeset
|
44 |
|
6095
3ada6a3f48e1
fixed ReStructuredText encoding with Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6059
diff
changeset
|
45 from roundup.anypy.strings import u2s, s2u |
|
3ada6a3f48e1
fixed ReStructuredText encoding with Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6059
diff
changeset
|
46 |
| 6826 | 47 from roundup.backends.sessions_common import SessionCommon |
| 48 | |
| 49 class MockDatabase(MockNull, SessionCommon): | |
|
2158
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
50 def getclass(self, name): |
|
6337
316c2c32dace
Make testing mock smarter. Make getclass fail for invalid classes.
John Rouillard <rouilj@ieee.org>
parents:
6336
diff
changeset
|
51 # limit class names |
|
6404
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
52 if name not in [ 'issue', 'user', 'status' ]: |
|
6337
316c2c32dace
Make testing mock smarter. Make getclass fail for invalid classes.
John Rouillard <rouilj@ieee.org>
parents:
6336
diff
changeset
|
53 raise KeyError('There is no class called "%s"' % name) |
|
6336
6f89cdc7c938
issue2551108 - fix markdown formatted designator links
John Rouillard <rouilj@ieee.org>
parents:
6299
diff
changeset
|
54 # Class returned must have hasnode(id) method that returns true |
|
6f89cdc7c938
issue2551108 - fix markdown formatted designator links
John Rouillard <rouilj@ieee.org>
parents:
6299
diff
changeset
|
55 # otherwise designators like 'issue1' can't be hyperlinked. |
|
6338
a70a0c138dd9
Test hyperlinked method on designators
John Rouillard <rouilj@ieee.org>
parents:
6337
diff
changeset
|
56 self.classes[name].hasnode = lambda id: True if int(id) < 10 else False |
|
2158
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
57 return self.classes[name] |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
58 |
|
5201
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
59 # setup for csrf testing of otks database api |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
60 storage = {} |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
61 def set(self, key, **props): |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
62 MockDatabase.storage[key] = {} |
| 6817 | 63 if '__timestamp' not in props: |
| 64 props['__timestamp'] = time.time() - 7*24*3600 | |
|
5201
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
65 MockDatabase.storage[key].update(props) |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
66 |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
67 def get(self, key, field, default=None): |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
68 if key not in MockDatabase.storage: |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
69 return default |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
70 return MockDatabase.storage[key][field] |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
71 |
| 6817 | 72 def getall(self, key): |
| 73 if key not in MockDatabase.storage: | |
| 74 return default | |
| 75 return MockDatabase.storage[key] | |
| 76 | |
|
5201
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
77 def exists(self,key): |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
78 return key in MockDatabase.storage |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
79 |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
80 def getOTKManager(self): |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
81 return MockDatabase() |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
82 |
| 6817 | 83 def lifetime(self, seconds): |
| 84 return time.time() - 7*24*3600 + seconds | |
| 85 | |
|
2158
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
86 class TemplatingTestCase(unittest.TestCase): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
87 def setUp(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
88 self.form = FieldStorage() |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
89 self.client = MockNull() |
|
3972
eee76dd4a09f
'Make a Copy' failed with more than one person in nosy list [SF#1906147]
Richard Jones <richard@users.sourceforge.net>
parents:
3587
diff
changeset
|
90 self.client.db = db = MockDatabase() |
|
eee76dd4a09f
'Make a Copy' failed with more than one person in nosy list [SF#1906147]
Richard Jones <richard@users.sourceforge.net>
parents:
3587
diff
changeset
|
91 db.security.hasPermission = lambda *args, **kw: True |
|
2158
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
92 self.client.form = self.form |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
93 |
|
5201
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
94 # add client props for testing anti_csrf_nonce |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
95 self.client.session_api = MockNull(_sid="1234567890") |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
96 self.client.db.getuid = lambda : 10 |
|
6277
957a0fc20021
issue2551094 - markdown mismatch - new config for embedded newine
John Rouillard <rouilj@ieee.org>
parents:
6275
diff
changeset
|
97 self.client.db.config = {'WEB_CSRF_TOKEN_LIFETIME': 10, 'MARKDOWN_BREAK_ON_NEWLINE': False } |
|
5201
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
98 |
|
2158
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
99 class HTMLDatabaseTestCase(TemplatingTestCase): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
100 def test_HTMLDatabase___getitem__(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
101 db = HTMLDatabase(self.client) |
|
5649
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5488
diff
changeset
|
102 self.assertTrue(isinstance(db['issue'], HTMLClass)) |
|
2716
305d346f8f3b
disable invalid assertions
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2158
diff
changeset
|
103 # following assertions are invalid |
|
305d346f8f3b
disable invalid assertions
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2158
diff
changeset
|
104 # since roundup/cgi/templating.py r1.173. |
|
305d346f8f3b
disable invalid assertions
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2158
diff
changeset
|
105 # HTMLItem is function, not class, |
|
305d346f8f3b
disable invalid assertions
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2158
diff
changeset
|
106 # but HTMLUserClass and HTMLUser are passed on. |
|
305d346f8f3b
disable invalid assertions
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2158
diff
changeset
|
107 # these classes are no more. they have ceased to be. |
|
5649
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5488
diff
changeset
|
108 #self.assertTrue(isinstance(db['user'], HTMLUserClass)) |
|
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5488
diff
changeset
|
109 #self.assertTrue(isinstance(db['issue1'], HTMLItem)) |
|
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5488
diff
changeset
|
110 #self.assertTrue(isinstance(db['user1'], HTMLUser)) |
|
2158
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
111 |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
112 def test_HTMLDatabase___getattr__(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
113 db = HTMLDatabase(self.client) |
|
5649
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5488
diff
changeset
|
114 self.assertTrue(isinstance(db.issue, HTMLClass)) |
|
2716
305d346f8f3b
disable invalid assertions
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2158
diff
changeset
|
115 # see comment in test_HTMLDatabase___getitem__ |
|
5649
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5488
diff
changeset
|
116 #self.assertTrue(isinstance(db.user, HTMLUserClass)) |
|
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5488
diff
changeset
|
117 #self.assertTrue(isinstance(db.issue1, HTMLItem)) |
|
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5488
diff
changeset
|
118 #self.assertTrue(isinstance(db.user1, HTMLUser)) |
|
2158
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
119 |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
120 def test_HTMLDatabase_classes(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
121 db = HTMLDatabase(self.client) |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
122 db._db.classes = {'issue':MockNull(), 'user': MockNull()} |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
123 db.classes() |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
124 |
|
6689
994893cf3e1a
Fix traceback if an order attribute is None
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6645
diff
changeset
|
125 def test_HTMLDatabase_list(self): |
|
994893cf3e1a
Fix traceback if an order attribute is None
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6645
diff
changeset
|
126 # The list method used to produce a traceback when a None value |
|
994893cf3e1a
Fix traceback if an order attribute is None
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6645
diff
changeset
|
127 # for an order attribute of a class was encountered. This |
|
994893cf3e1a
Fix traceback if an order attribute is None
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6645
diff
changeset
|
128 # happens when the 'get' of the order attribute for a numeric |
|
994893cf3e1a
Fix traceback if an order attribute is None
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6645
diff
changeset
|
129 # id produced a None value. So we put '23' as a key into the |
|
994893cf3e1a
Fix traceback if an order attribute is None
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6645
diff
changeset
|
130 # list and set things up that a None value is returned on 'get'. |
|
994893cf3e1a
Fix traceback if an order attribute is None
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6645
diff
changeset
|
131 |
|
994893cf3e1a
Fix traceback if an order attribute is None
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6645
diff
changeset
|
132 # This keeps db.issue static, otherwise it changes for each call |
|
994893cf3e1a
Fix traceback if an order attribute is None
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6645
diff
changeset
|
133 db = MockNull(issue = HTMLDatabase(self.client).issue) |
|
994893cf3e1a
Fix traceback if an order attribute is None
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6645
diff
changeset
|
134 db.issue._klass.list = lambda : ['23', 'a', 'b'] |
|
994893cf3e1a
Fix traceback if an order attribute is None
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6645
diff
changeset
|
135 # Make db.getclass return something that has a sensible 'get' method |
|
994893cf3e1a
Fix traceback if an order attribute is None
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6645
diff
changeset
|
136 mock = MockNull(get = lambda x, y : None) |
|
994893cf3e1a
Fix traceback if an order attribute is None
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6645
diff
changeset
|
137 db.issue._db.getclass = lambda x : mock |
|
994893cf3e1a
Fix traceback if an order attribute is None
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6645
diff
changeset
|
138 l = db.issue.list() |
|
994893cf3e1a
Fix traceback if an order attribute is None
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6645
diff
changeset
|
139 |
|
2158
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
140 class FunctionsTestCase(TemplatingTestCase): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
141 def test_lookupIds(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
142 db = HTMLDatabase(self.client) |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
143 def lookup(key): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
144 if key == 'ok': |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
145 return '1' |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
146 if key == 'fail': |
|
5378
35ea9b1efc14
Python 3 preparation: "raise" syntax.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5376
diff
changeset
|
147 raise KeyError('fail') |
|
7936
a9b136565838
feat: issue1525113 - notation to filter by logged-in user
John Rouillard <rouilj@ieee.org>
parents:
7923
diff
changeset
|
148 if key == '@current_user': |
|
a9b136565838
feat: issue1525113 - notation to filter by logged-in user
John Rouillard <rouilj@ieee.org>
parents:
7923
diff
changeset
|
149 raise KeyError('@current_user') |
|
3587
2372597ebbdb
*** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents:
2716
diff
changeset
|
150 return key |
|
2158
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
151 db._db.classes = {'issue': MockNull(lookup=lookup)} |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
152 prop = MockNull(classname='issue') |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
153 self.assertEqual(lookupIds(db._db, prop, ['1','2']), ['1','2']) |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
154 self.assertEqual(lookupIds(db._db, prop, ['ok','2']), ['1','2']) |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
155 self.assertEqual(lookupIds(db._db, prop, ['ok', 'fail'], 1), |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
156 ['1', 'fail']) |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
157 self.assertEqual(lookupIds(db._db, prop, ['ok', 'fail']), ['1']) |
|
7936
a9b136565838
feat: issue1525113 - notation to filter by logged-in user
John Rouillard <rouilj@ieee.org>
parents:
7923
diff
changeset
|
158 self.assertEqual(lookupIds(db._db, prop, ['ok', '@current_user']), |
|
a9b136565838
feat: issue1525113 - notation to filter by logged-in user
John Rouillard <rouilj@ieee.org>
parents:
7923
diff
changeset
|
159 ['1']) |
|
2158
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
160 |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
161 def test_lookupKeys(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
162 db = HTMLDatabase(self.client) |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
163 def get(entry, key): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
164 return {'1': 'green', '2': 'eggs'}.get(entry, entry) |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
165 shrubbery = MockNull(get=get) |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
166 db._db.classes = {'shrubbery': shrubbery} |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
167 self.assertEqual(lookupKeys(shrubbery, 'spam', ['1','2']), |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
168 ['green', 'eggs']) |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
169 self.assertEqual(lookupKeys(shrubbery, 'spam', ['ok','2']), ['ok', |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
170 'eggs']) |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
171 |
|
3972
eee76dd4a09f
'Make a Copy' failed with more than one person in nosy list [SF#1906147]
Richard Jones <richard@users.sourceforge.net>
parents:
3587
diff
changeset
|
172 class HTMLClassTestCase(TemplatingTestCase) : |
|
eee76dd4a09f
'Make a Copy' failed with more than one person in nosy list [SF#1906147]
Richard Jones <richard@users.sourceforge.net>
parents:
3587
diff
changeset
|
173 |
|
4040
b6a2251394dd
Make cgi.templating more fault-tolerant towards invalid requests.
Stefan Seefeld <stefan@seefeld.name>
parents:
4011
diff
changeset
|
174 def test_link(self): |
|
b6a2251394dd
Make cgi.templating more fault-tolerant towards invalid requests.
Stefan Seefeld <stefan@seefeld.name>
parents:
4011
diff
changeset
|
175 """Make sure lookup of a Link property works even in the |
|
b6a2251394dd
Make cgi.templating more fault-tolerant towards invalid requests.
Stefan Seefeld <stefan@seefeld.name>
parents:
4011
diff
changeset
|
176 presence of multiple values in the form.""" |
|
b6a2251394dd
Make cgi.templating more fault-tolerant towards invalid requests.
Stefan Seefeld <stefan@seefeld.name>
parents:
4011
diff
changeset
|
177 def lookup(key) : |
|
b6a2251394dd
Make cgi.templating more fault-tolerant towards invalid requests.
Stefan Seefeld <stefan@seefeld.name>
parents:
4011
diff
changeset
|
178 self.assertEqual(key, key.strip()) |
|
b6a2251394dd
Make cgi.templating more fault-tolerant towards invalid requests.
Stefan Seefeld <stefan@seefeld.name>
parents:
4011
diff
changeset
|
179 return "Status%s"%key |
|
6404
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
180 self.form.list.append(MiniFieldStorage("issue@status", "1")) |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
181 self.form.list.append(MiniFieldStorage("issue@status", "2")) |
|
4040
b6a2251394dd
Make cgi.templating more fault-tolerant towards invalid requests.
Stefan Seefeld <stefan@seefeld.name>
parents:
4011
diff
changeset
|
182 status = hyperdb.Link("status") |
|
b6a2251394dd
Make cgi.templating more fault-tolerant towards invalid requests.
Stefan Seefeld <stefan@seefeld.name>
parents:
4011
diff
changeset
|
183 self.client.db.classes = dict \ |
|
b6a2251394dd
Make cgi.templating more fault-tolerant towards invalid requests.
Stefan Seefeld <stefan@seefeld.name>
parents:
4011
diff
changeset
|
184 ( issue = MockNull(getprops = lambda : dict(status = status)) |
|
b6a2251394dd
Make cgi.templating more fault-tolerant towards invalid requests.
Stefan Seefeld <stefan@seefeld.name>
parents:
4011
diff
changeset
|
185 , status = MockNull(get = lambda id, name : id, lookup = lookup) |
|
b6a2251394dd
Make cgi.templating more fault-tolerant towards invalid requests.
Stefan Seefeld <stefan@seefeld.name>
parents:
4011
diff
changeset
|
186 ) |
|
6404
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
187 self.client.form = self.form |
|
4040
b6a2251394dd
Make cgi.templating more fault-tolerant towards invalid requests.
Stefan Seefeld <stefan@seefeld.name>
parents:
4011
diff
changeset
|
188 cls = HTMLClass(self.client, "issue") |
|
6404
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
189 |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
190 s = cls["status"] |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
191 self.assertEqual(s._value, '1') |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
192 |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
193 def test_link_default(self): |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
194 """Make sure default value for link is returned |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
195 if new item and no value in form.""" |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
196 def lookup(key) : |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
197 self.assertEqual(key, key.strip()) |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
198 return "Status%s"%key |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
199 status = hyperdb.Link("status") |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
200 # set default_value |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
201 status.__dict__['_Type__default_value'] = "4" |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
202 |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
203 self.client.db.classes = dict \ |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
204 ( issue = MockNull(getprops = lambda : dict(status = status)) |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
205 , status = MockNull(get = lambda id, name : id, lookup = lookup, get_default_value = lambda: 4) |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
206 ) |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
207 self.client.form = self.form |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
208 |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
209 cls = HTMLClass(self.client, "issue") |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
210 s = cls["status"] |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
211 self.assertEqual(s._value, '4') |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
212 |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
213 def test_link_with_value_and_default(self): |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
214 """Make sure default value is not used if there |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
215 is a value in the form.""" |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
216 def lookup(key) : |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
217 self.assertEqual(key, key.strip()) |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
218 return "Status%s"%key |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
219 self.form.list.append(MiniFieldStorage("issue@status", "2")) |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
220 self.form.list.append(MiniFieldStorage("issue@status", "1")) |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
221 status = hyperdb.Link("status") |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
222 # set default_value |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
223 status.__dict__['_Type__default_value'] = "4" |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
224 |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
225 self.client.db.classes = dict \ |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
226 ( issue = MockNull(getprops = lambda : dict(status = status)) |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
227 , status = MockNull(get = lambda id, name : id, lookup = lookup, get_default_value = lambda: 4) |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
228 ) |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
229 self.client.form = self.form |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
230 |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
231 cls = HTMLClass(self.client, "issue") |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
232 s = cls["status"] |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
233 self.assertEqual(s._value, '2') |
|
4040
b6a2251394dd
Make cgi.templating more fault-tolerant towards invalid requests.
Stefan Seefeld <stefan@seefeld.name>
parents:
4011
diff
changeset
|
234 |
|
3972
eee76dd4a09f
'Make a Copy' failed with more than one person in nosy list [SF#1906147]
Richard Jones <richard@users.sourceforge.net>
parents:
3587
diff
changeset
|
235 def test_multilink(self): |
|
eee76dd4a09f
'Make a Copy' failed with more than one person in nosy list [SF#1906147]
Richard Jones <richard@users.sourceforge.net>
parents:
3587
diff
changeset
|
236 """`lookup` of an item will fail if leading or trailing whitespace |
|
eee76dd4a09f
'Make a Copy' failed with more than one person in nosy list [SF#1906147]
Richard Jones <richard@users.sourceforge.net>
parents:
3587
diff
changeset
|
237 has not been stripped. |
|
eee76dd4a09f
'Make a Copy' failed with more than one person in nosy list [SF#1906147]
Richard Jones <richard@users.sourceforge.net>
parents:
3587
diff
changeset
|
238 """ |
|
eee76dd4a09f
'Make a Copy' failed with more than one person in nosy list [SF#1906147]
Richard Jones <richard@users.sourceforge.net>
parents:
3587
diff
changeset
|
239 def lookup(key) : |
|
eee76dd4a09f
'Make a Copy' failed with more than one person in nosy list [SF#1906147]
Richard Jones <richard@users.sourceforge.net>
parents:
3587
diff
changeset
|
240 self.assertEqual(key, key.strip()) |
|
eee76dd4a09f
'Make a Copy' failed with more than one person in nosy list [SF#1906147]
Richard Jones <richard@users.sourceforge.net>
parents:
3587
diff
changeset
|
241 return "User%s"%key |
|
eee76dd4a09f
'Make a Copy' failed with more than one person in nosy list [SF#1906147]
Richard Jones <richard@users.sourceforge.net>
parents:
3587
diff
changeset
|
242 self.form.list.append(MiniFieldStorage("nosy", "1, 2")) |
|
eee76dd4a09f
'Make a Copy' failed with more than one person in nosy list [SF#1906147]
Richard Jones <richard@users.sourceforge.net>
parents:
3587
diff
changeset
|
243 nosy = hyperdb.Multilink("user") |
|
eee76dd4a09f
'Make a Copy' failed with more than one person in nosy list [SF#1906147]
Richard Jones <richard@users.sourceforge.net>
parents:
3587
diff
changeset
|
244 self.client.db.classes = dict \ |
|
eee76dd4a09f
'Make a Copy' failed with more than one person in nosy list [SF#1906147]
Richard Jones <richard@users.sourceforge.net>
parents:
3587
diff
changeset
|
245 ( issue = MockNull(getprops = lambda : dict(nosy = nosy)) |
|
eee76dd4a09f
'Make a Copy' failed with more than one person in nosy list [SF#1906147]
Richard Jones <richard@users.sourceforge.net>
parents:
3587
diff
changeset
|
246 , user = MockNull(get = lambda id, name : id, lookup = lookup) |
|
eee76dd4a09f
'Make a Copy' failed with more than one person in nosy list [SF#1906147]
Richard Jones <richard@users.sourceforge.net>
parents:
3587
diff
changeset
|
247 ) |
|
eee76dd4a09f
'Make a Copy' failed with more than one person in nosy list [SF#1906147]
Richard Jones <richard@users.sourceforge.net>
parents:
3587
diff
changeset
|
248 cls = HTMLClass(self.client, "issue") |
|
eee76dd4a09f
'Make a Copy' failed with more than one person in nosy list [SF#1906147]
Richard Jones <richard@users.sourceforge.net>
parents:
3587
diff
changeset
|
249 cls["nosy"] |
|
eee76dd4a09f
'Make a Copy' failed with more than one person in nosy list [SF#1906147]
Richard Jones <richard@users.sourceforge.net>
parents:
3587
diff
changeset
|
250 |
|
5201
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
251 def test_anti_csrf_nonce(self): |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
252 '''call the csrf creation function and do basic length test |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
253 |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
254 Store the data in a mock db with the same api as the otk |
| 6826 | 255 db. Make sure nonce is 54 chars long. Lookup the nonce in |
|
5201
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
256 db and retrieve data. Verify that the nonce lifetime is |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
257 correct (within 1 second of 1 week - lifetime), the uid is |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
258 correct (1), the dummy sid is correct. |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
259 |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
260 Consider three cases: |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
261 * create nonce via module function setting lifetime |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
262 * create nonce via TemplatingUtils method setting lifetime |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
263 * create nonce via module function with default lifetime |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
264 |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
265 ''' |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
266 |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
267 # the value below is number of seconds in a week. |
|
5211
f4b6a2a3e605
Fix expiration dates and expire csrf tokens properly
John Rouillard <rouilj@ieee.org>
parents:
5201
diff
changeset
|
268 week_seconds = 604800 |
|
f4b6a2a3e605
Fix expiration dates and expire csrf tokens properly
John Rouillard <rouilj@ieee.org>
parents:
5201
diff
changeset
|
269 |
|
f4b6a2a3e605
Fix expiration dates and expire csrf tokens properly
John Rouillard <rouilj@ieee.org>
parents:
5201
diff
changeset
|
270 otks=self.client.db.getOTKManager() |
|
f4b6a2a3e605
Fix expiration dates and expire csrf tokens properly
John Rouillard <rouilj@ieee.org>
parents:
5201
diff
changeset
|
271 |
|
5201
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
272 for test in [ 'module', 'template', 'default_time' ]: |
|
5376
64b05e24dbd8
Python 3 preparation: convert print to a function.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5226
diff
changeset
|
273 print("Testing:", test) |
|
5211
f4b6a2a3e605
Fix expiration dates and expire csrf tokens properly
John Rouillard <rouilj@ieee.org>
parents:
5201
diff
changeset
|
274 |
|
5201
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
275 if test == 'module': |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
276 # test the module function |
|
5488
52cb53eedf77
reworked random number use
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5485
diff
changeset
|
277 nonce1 = anti_csrf_nonce(self.client, lifetime=1) |
|
5201
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
278 # lifetime * 60 is the offset |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
279 greater_than = week_seconds - 1 * 60 |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
280 elif test == 'template': |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
281 # call the function through the TemplatingUtils class |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
282 cls = TemplatingUtils(self.client) |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
283 nonce1 = cls.anti_csrf_nonce(lifetime=5) |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
284 greater_than = week_seconds - 5 * 60 |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
285 elif test == 'default_time': |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
286 # use the module function but with no lifetime |
|
5488
52cb53eedf77
reworked random number use
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5485
diff
changeset
|
287 nonce1 = anti_csrf_nonce(self.client) |
|
5201
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
288 # see above for web nonce lifetime. |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
289 greater_than = week_seconds - 10 * 60 |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
290 |
| 6826 | 291 self.assertEqual(len(nonce1), 54) |
|
5201
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
292 |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
293 uid = otks.get(nonce1, 'uid', default=None) |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
294 sid = otks.get(nonce1, 'sid', default=None) |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
295 timestamp = otks.get(nonce1, '__timestamp', default=None) |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
296 |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
297 self.assertEqual(uid, 10) |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
298 self.assertEqual(sid, self.client.session_api._sid) |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
299 |
|
5211
f4b6a2a3e605
Fix expiration dates and expire csrf tokens properly
John Rouillard <rouilj@ieee.org>
parents:
5201
diff
changeset
|
300 now = time.time() |
|
f4b6a2a3e605
Fix expiration dates and expire csrf tokens properly
John Rouillard <rouilj@ieee.org>
parents:
5201
diff
changeset
|
301 |
|
5376
64b05e24dbd8
Python 3 preparation: convert print to a function.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5226
diff
changeset
|
302 print("now, timestamp, greater, difference", |
|
64b05e24dbd8
Python 3 preparation: convert print to a function.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5226
diff
changeset
|
303 now, timestamp, greater_than, now - timestamp) |
|
5211
f4b6a2a3e605
Fix expiration dates and expire csrf tokens properly
John Rouillard <rouilj@ieee.org>
parents:
5201
diff
changeset
|
304 |
|
5201
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
305 |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
306 # lower bound of the difference is above. Upper bound |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
307 # of difference is run time between time.time() in |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
308 # the call to anti_csrf_nonce and the time.time() call |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
309 # that assigns ts above. I declare that difference |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
310 # to be less than 1 second for this to pass. |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
311 self.assertEqual(True, |
|
5211
f4b6a2a3e605
Fix expiration dates and expire csrf tokens properly
John Rouillard <rouilj@ieee.org>
parents:
5201
diff
changeset
|
312 greater_than <= now - timestamp < (greater_than + 1) ) |
|
5201
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
313 |
|
6832
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
314 def test_number__int__(self): |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
315 # test with number |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
316 p = NumberHTMLProperty(self.client, 'testnum', '1', None, 'test', |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
317 2345678.2345678) |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
318 self.assertEqual(p.__int__(), 2345678) |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
319 |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
320 property = MockNull(get_default_value = lambda: None) |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
321 p = NumberHTMLProperty(self.client, 'testnum', '1', property, |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
322 'test', None) |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
323 with self.assertRaises(TypeError) as e: |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
324 p.__int__() |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
325 |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
326 def test_number__float__(self): |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
327 # test with number |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
328 p = NumberHTMLProperty(self.client, 'testnum', '1', None, 'test', |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
329 2345678.2345678) |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
330 self.assertEqual(p.__float__(), 2345678.2345678) |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
331 |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
332 property = MockNull(get_default_value = lambda: None) |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
333 p = NumberHTMLProperty(self.client, 'testnum', '1', property, |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
334 'test', None) |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
335 with self.assertRaises(TypeError) as e: |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
336 p.__float__() |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
337 |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
338 def test_number_field(self): |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
339 import sys |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
340 |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
341 _py3 = sys.version_info[0] > 2 |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
342 |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
343 # python2 truncates while python3 rounds. Sigh. |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
344 if _py3: |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
345 expected_val = 2345678.2345678 |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
346 else: |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
347 expected_val = 2345678.23457 |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
348 |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
349 # test with number |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
350 p = NumberHTMLProperty(self.client, 'testnum', '1', None, 'test', |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
351 2345678.2345678) |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
352 self.assertEqual(p.field(), |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
353 ('<input name="testnum1@test" size="30" type="text" ' |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
354 'value="%s">')%expected_val) |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
355 self.assertEqual(p.field(size=10), |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
356 ('<input name="testnum1@test" size="10" type="text" ' |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
357 'value="%s">')%expected_val) |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
358 self.assertEqual(p.field(size=10, dataprop="foo", dataprop2=5), |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
359 ('<input dataprop="foo" dataprop2="5" ' |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
360 'name="testnum1@test" size="10" type="text" ' |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
361 'value="%s">'%expected_val)) |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
362 |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
363 self.assertEqual(p.field(size=10, klass="class1", |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
364 **{ "class": "class2 class3", |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
365 "data-prop": "foo", |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
366 "data-prop2": 5}), |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
367 ('<input class="class2 class3" data-prop="foo" ' |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
368 'data-prop2="5" klass="class1" ' |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
369 'name="testnum1@test" size="10" type="text" ' |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
370 'value="%s">')%expected_val) |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
371 |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
372 # get plain representation if user can't edit |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
373 p.is_edit_ok = lambda: False |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
374 self.assertEqual(p.field(), p.plain()) |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
375 |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
376 # test with string which is wrong type |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
377 p = NumberHTMLProperty(self.client, 'testnum', '1', None, 'test', |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
378 "2345678.2345678") |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
379 self.assertEqual(p.field(), |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
380 ('<input name="testnum1@test" size="30" type="text" ' |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
381 'value="2345678.2345678">')) |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
382 |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
383 # test with None value, pretend property.__default_value = Null which |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
384 # is the default. It would be returned by get_default_value |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
385 # which I mock. |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
386 property = MockNull(get_default_value = lambda: None) |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
387 p = NumberHTMLProperty(self.client, 'testnum', '1', property, |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
388 'test', None) |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
389 self.assertEqual(p.field(), |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
390 ('<input name="testnum1@test" size="30" type="text" ' |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
391 'value="">')) |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
392 |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
393 def test_number_plain(self): |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
394 import sys |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
395 |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
396 _py3 = sys.version_info[0] > 2 |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
397 |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
398 # python2 truncates while python3 rounds. Sigh. |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
399 if _py3: |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
400 expected_val = 2345678.2345678 |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
401 else: |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
402 expected_val = 2345678.23457 |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
403 |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
404 p = NumberHTMLProperty(self.client, 'testnum', '1', None, 'test', |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
405 2345678.2345678) |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
406 |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
407 self.assertEqual(p.plain(), "%s"%expected_val) |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
408 |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
409 def test_number_pretty(self): |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
410 # test with number |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
411 p = NumberHTMLProperty(self.client, 'testnum', '1', None, 'test', |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
412 2345678.2345678) |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
413 self.assertEqual(p.pretty(), "2345678.235") |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
414 |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
415 # test with string which is wrong type |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
416 p = NumberHTMLProperty(self.client, 'testnum', '1', None, 'test', |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
417 "2345678.2345678") |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
418 self.assertEqual(p.pretty(), "2345678.2345678") |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
419 |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
420 # test with boolean |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
421 p = NumberHTMLProperty(self.client, 'testnum', '1', None, 'test', |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
422 True) |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
423 self.assertEqual(p.pretty(), "1.000") |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
424 |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
425 # test with None value, pretend property.__default_value = Null which |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
426 # is the default. It would be returned by get_default_value |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
427 # which I mock. |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
428 property = MockNull(get_default_value = lambda: None) |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
429 p = NumberHTMLProperty(self.client, 'testnum', '1', property, |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
430 'test', None) |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
431 self.assertEqual(p.pretty(), '') |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
432 |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
433 with self.assertRaises(ValueError) as e: |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
434 p.pretty('%0.3') |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
435 |
|
5156
882fa4d9bead
issue2550795: @dispname query args in page.html search links
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
436 def test_string_url_quote(self): |
|
882fa4d9bead
issue2550795: @dispname query args in page.html search links
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
437 ''' test that urlquote quotes the string ''' |
|
882fa4d9bead
issue2550795: @dispname query args in page.html search links
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
438 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', 'test string< foo@bar') |
|
882fa4d9bead
issue2550795: @dispname query args in page.html search links
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
439 self.assertEqual(p.url_quote(), 'test%20string%3C%20foo%40bar') |
|
882fa4d9bead
issue2550795: @dispname query args in page.html search links
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
440 |
|
5157
ae2a5d1afdd5
adding tests for some StringHTMLProperty methods.
John Rouillard <rouilj@ieee.org>
parents:
5156
diff
changeset
|
441 def test_string_email(self): |
|
ae2a5d1afdd5
adding tests for some StringHTMLProperty methods.
John Rouillard <rouilj@ieee.org>
parents:
5156
diff
changeset
|
442 ''' test that email obscures the email ''' |
|
ae2a5d1afdd5
adding tests for some StringHTMLProperty methods.
John Rouillard <rouilj@ieee.org>
parents:
5156
diff
changeset
|
443 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', 'rouilj@foo.example.com') |
|
ae2a5d1afdd5
adding tests for some StringHTMLProperty methods.
John Rouillard <rouilj@ieee.org>
parents:
5156
diff
changeset
|
444 self.assertEqual(p.email(), 'rouilj at foo example ...') |
|
ae2a5d1afdd5
adding tests for some StringHTMLProperty methods.
John Rouillard <rouilj@ieee.org>
parents:
5156
diff
changeset
|
445 |
|
6339
ab18fe956d45
Test StringHTMLProperty.wrapped(); test url, plain text for rst
John Rouillard <rouilj@ieee.org>
parents:
6338
diff
changeset
|
446 def test_string_wrapped(self): |
|
ab18fe956d45
Test StringHTMLProperty.wrapped(); test url, plain text for rst
John Rouillard <rouilj@ieee.org>
parents:
6338
diff
changeset
|
447 test_string = ('A long string that needs to be wrapped to' |
|
ab18fe956d45
Test StringHTMLProperty.wrapped(); test url, plain text for rst
John Rouillard <rouilj@ieee.org>
parents:
6338
diff
changeset
|
448 ' 80 characters and no more. Put in a link issue1.' |
|
ab18fe956d45
Test StringHTMLProperty.wrapped(); test url, plain text for rst
John Rouillard <rouilj@ieee.org>
parents:
6338
diff
changeset
|
449 ' Put in <html> to be escaped. Put in a' |
|
ab18fe956d45
Test StringHTMLProperty.wrapped(); test url, plain text for rst
John Rouillard <rouilj@ieee.org>
parents:
6338
diff
changeset
|
450 ' https://example.com/link as well. Let us see if' |
|
ab18fe956d45
Test StringHTMLProperty.wrapped(); test url, plain text for rst
John Rouillard <rouilj@ieee.org>
parents:
6338
diff
changeset
|
451 ' it will wrap properly.' ) |
|
7864
b080cdb8b199
fix: document/fix wrapped HtmlProperty method.
John Rouillard <rouilj@ieee.org>
parents:
7582
diff
changeset
|
452 |
|
b080cdb8b199
fix: document/fix wrapped HtmlProperty method.
John Rouillard <rouilj@ieee.org>
parents:
7582
diff
changeset
|
453 test_result_wrap = {} |
|
b080cdb8b199
fix: document/fix wrapped HtmlProperty method.
John Rouillard <rouilj@ieee.org>
parents:
7582
diff
changeset
|
454 test_result_wrap[80] = ('A long string that needs to be wrapped to 80' |
|
6339
ab18fe956d45
Test StringHTMLProperty.wrapped(); test url, plain text for rst
John Rouillard <rouilj@ieee.org>
parents:
6338
diff
changeset
|
455 ' characters and no more. Put in a\n' |
|
ab18fe956d45
Test StringHTMLProperty.wrapped(); test url, plain text for rst
John Rouillard <rouilj@ieee.org>
parents:
6338
diff
changeset
|
456 'link <a href="issue1">issue1</a>. Put in' |
|
ab18fe956d45
Test StringHTMLProperty.wrapped(); test url, plain text for rst
John Rouillard <rouilj@ieee.org>
parents:
6338
diff
changeset
|
457 ' <html> to be escaped. Put in a <a' |
|
ab18fe956d45
Test StringHTMLProperty.wrapped(); test url, plain text for rst
John Rouillard <rouilj@ieee.org>
parents:
6338
diff
changeset
|
458 ' href="https://example.com/link"' |
|
ab18fe956d45
Test StringHTMLProperty.wrapped(); test url, plain text for rst
John Rouillard <rouilj@ieee.org>
parents:
6338
diff
changeset
|
459 ' rel="nofollow noopener">' |
|
ab18fe956d45
Test StringHTMLProperty.wrapped(); test url, plain text for rst
John Rouillard <rouilj@ieee.org>
parents:
6338
diff
changeset
|
460 'https://example.com/link</a> as\n' |
|
ab18fe956d45
Test StringHTMLProperty.wrapped(); test url, plain text for rst
John Rouillard <rouilj@ieee.org>
parents:
6338
diff
changeset
|
461 'well. Let us see if it will wrap properly.') |
|
7864
b080cdb8b199
fix: document/fix wrapped HtmlProperty method.
John Rouillard <rouilj@ieee.org>
parents:
7582
diff
changeset
|
462 test_result_wrap[20] = ( |
|
b080cdb8b199
fix: document/fix wrapped HtmlProperty method.
John Rouillard <rouilj@ieee.org>
parents:
7582
diff
changeset
|
463 'A long string that\n' |
|
b080cdb8b199
fix: document/fix wrapped HtmlProperty method.
John Rouillard <rouilj@ieee.org>
parents:
7582
diff
changeset
|
464 'needs to be wrapped\n' |
|
b080cdb8b199
fix: document/fix wrapped HtmlProperty method.
John Rouillard <rouilj@ieee.org>
parents:
7582
diff
changeset
|
465 'to 80 characters and\n' |
|
b080cdb8b199
fix: document/fix wrapped HtmlProperty method.
John Rouillard <rouilj@ieee.org>
parents:
7582
diff
changeset
|
466 'no more. Put in a\nlink <a href="issue1">issue1</a>. Put in\n' |
|
b080cdb8b199
fix: document/fix wrapped HtmlProperty method.
John Rouillard <rouilj@ieee.org>
parents:
7582
diff
changeset
|
467 '<html> to be\n' |
|
b080cdb8b199
fix: document/fix wrapped HtmlProperty method.
John Rouillard <rouilj@ieee.org>
parents:
7582
diff
changeset
|
468 'escaped. Put in a\n' |
|
b080cdb8b199
fix: document/fix wrapped HtmlProperty method.
John Rouillard <rouilj@ieee.org>
parents:
7582
diff
changeset
|
469 '<a href="https://example.com/link" rel="nofollow ' |
|
b080cdb8b199
fix: document/fix wrapped HtmlProperty method.
John Rouillard <rouilj@ieee.org>
parents:
7582
diff
changeset
|
470 'noopener">https://example.com/link</a>\n' |
|
b080cdb8b199
fix: document/fix wrapped HtmlProperty method.
John Rouillard <rouilj@ieee.org>
parents:
7582
diff
changeset
|
471 'as well. Let us see\n' |
|
b080cdb8b199
fix: document/fix wrapped HtmlProperty method.
John Rouillard <rouilj@ieee.org>
parents:
7582
diff
changeset
|
472 'if it will wrap\n' |
|
b080cdb8b199
fix: document/fix wrapped HtmlProperty method.
John Rouillard <rouilj@ieee.org>
parents:
7582
diff
changeset
|
473 'properly.') |
|
b080cdb8b199
fix: document/fix wrapped HtmlProperty method.
John Rouillard <rouilj@ieee.org>
parents:
7582
diff
changeset
|
474 test_result_wrap[100] = ( |
|
b080cdb8b199
fix: document/fix wrapped HtmlProperty method.
John Rouillard <rouilj@ieee.org>
parents:
7582
diff
changeset
|
475 'A long string that needs to be wrapped to 80 characters and no more. Put in a link <a href="issue1">issue1</a>. Put in\n' |
|
b080cdb8b199
fix: document/fix wrapped HtmlProperty method.
John Rouillard <rouilj@ieee.org>
parents:
7582
diff
changeset
|
476 '<html> to be escaped. Put in a <a href="https://example.com/link" rel="nofollow noopener">https://example.com/link</a> as well. Let us see if it will wrap\n' |
|
b080cdb8b199
fix: document/fix wrapped HtmlProperty method.
John Rouillard <rouilj@ieee.org>
parents:
7582
diff
changeset
|
477 'properly.') |
|
6339
ab18fe956d45
Test StringHTMLProperty.wrapped(); test url, plain text for rst
John Rouillard <rouilj@ieee.org>
parents:
6338
diff
changeset
|
478 |
|
ab18fe956d45
Test StringHTMLProperty.wrapped(); test url, plain text for rst
John Rouillard <rouilj@ieee.org>
parents:
6338
diff
changeset
|
479 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', |
|
ab18fe956d45
Test StringHTMLProperty.wrapped(); test url, plain text for rst
John Rouillard <rouilj@ieee.org>
parents:
6338
diff
changeset
|
480 test_string) |
|
7864
b080cdb8b199
fix: document/fix wrapped HtmlProperty method.
John Rouillard <rouilj@ieee.org>
parents:
7582
diff
changeset
|
481 |
|
b080cdb8b199
fix: document/fix wrapped HtmlProperty method.
John Rouillard <rouilj@ieee.org>
parents:
7582
diff
changeset
|
482 for i in [80, 20, 100]: |
|
b080cdb8b199
fix: document/fix wrapped HtmlProperty method.
John Rouillard <rouilj@ieee.org>
parents:
7582
diff
changeset
|
483 wrapped = p.wrapped(columns=i) |
|
b080cdb8b199
fix: document/fix wrapped HtmlProperty method.
John Rouillard <rouilj@ieee.org>
parents:
7582
diff
changeset
|
484 print(wrapped) |
|
b080cdb8b199
fix: document/fix wrapped HtmlProperty method.
John Rouillard <rouilj@ieee.org>
parents:
7582
diff
changeset
|
485 self.assertEqual(wrapped, test_result_wrap[i]) |
|
6339
ab18fe956d45
Test StringHTMLProperty.wrapped(); test url, plain text for rst
John Rouillard <rouilj@ieee.org>
parents:
6338
diff
changeset
|
486 |
|
5157
ae2a5d1afdd5
adding tests for some StringHTMLProperty methods.
John Rouillard <rouilj@ieee.org>
parents:
5156
diff
changeset
|
487 def test_string_plain_or_hyperlinked(self): |
|
ae2a5d1afdd5
adding tests for some StringHTMLProperty methods.
John Rouillard <rouilj@ieee.org>
parents:
5156
diff
changeset
|
488 ''' test that email obscures the email ''' |
|
ae2a5d1afdd5
adding tests for some StringHTMLProperty methods.
John Rouillard <rouilj@ieee.org>
parents:
5156
diff
changeset
|
489 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', 'A string <b> with rouilj@example.com embedded < html</b>') |
|
ae2a5d1afdd5
adding tests for some StringHTMLProperty methods.
John Rouillard <rouilj@ieee.org>
parents:
5156
diff
changeset
|
490 self.assertEqual(p.plain(), 'A string <b> with rouilj@example.com embedded < html</b>') |
|
ae2a5d1afdd5
adding tests for some StringHTMLProperty methods.
John Rouillard <rouilj@ieee.org>
parents:
5156
diff
changeset
|
491 self.assertEqual(p.plain(escape=1), 'A string <b> with rouilj@example.com embedded &lt; html</b>') |
|
ae2a5d1afdd5
adding tests for some StringHTMLProperty methods.
John Rouillard <rouilj@ieee.org>
parents:
5156
diff
changeset
|
492 self.assertEqual(p.plain(hyperlink=1), 'A string <b> with <a href="mailto:rouilj@example.com">rouilj@example.com</a> embedded &lt; html</b>') |
|
ae2a5d1afdd5
adding tests for some StringHTMLProperty methods.
John Rouillard <rouilj@ieee.org>
parents:
5156
diff
changeset
|
493 self.assertEqual(p.plain(escape=1, hyperlink=1), 'A string <b> with <a href="mailto:rouilj@example.com">rouilj@example.com</a> embedded &lt; html</b>') |
|
ae2a5d1afdd5
adding tests for some StringHTMLProperty methods.
John Rouillard <rouilj@ieee.org>
parents:
5156
diff
changeset
|
494 |
|
ae2a5d1afdd5
adding tests for some StringHTMLProperty methods.
John Rouillard <rouilj@ieee.org>
parents:
5156
diff
changeset
|
495 self.assertEqual(p.hyperlinked(), 'A string <b> with <a href="mailto:rouilj@example.com">rouilj@example.com</a> embedded &lt; html</b>') |
|
6338
a70a0c138dd9
Test hyperlinked method on designators
John Rouillard <rouilj@ieee.org>
parents:
6337
diff
changeset
|
496 # check designators |
|
a70a0c138dd9
Test hyperlinked method on designators
John Rouillard <rouilj@ieee.org>
parents:
6337
diff
changeset
|
497 for designator in [ "issue1", "issue 1" ]: |
|
a70a0c138dd9
Test hyperlinked method on designators
John Rouillard <rouilj@ieee.org>
parents:
6337
diff
changeset
|
498 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', designator) |
|
a70a0c138dd9
Test hyperlinked method on designators
John Rouillard <rouilj@ieee.org>
parents:
6337
diff
changeset
|
499 self.assertEqual(p.hyperlinked(), |
|
a70a0c138dd9
Test hyperlinked method on designators
John Rouillard <rouilj@ieee.org>
parents:
6337
diff
changeset
|
500 '<a href="issue1">%s</a>'%designator) |
|
a70a0c138dd9
Test hyperlinked method on designators
John Rouillard <rouilj@ieee.org>
parents:
6337
diff
changeset
|
501 |
|
a70a0c138dd9
Test hyperlinked method on designators
John Rouillard <rouilj@ieee.org>
parents:
6337
diff
changeset
|
502 # issue 100 > 10 which is a magic number for the mocked hasnode |
|
a70a0c138dd9
Test hyperlinked method on designators
John Rouillard <rouilj@ieee.org>
parents:
6337
diff
changeset
|
503 # If id number is greater than 10 hasnode reports it does not have |
|
a70a0c138dd9
Test hyperlinked method on designators
John Rouillard <rouilj@ieee.org>
parents:
6337
diff
changeset
|
504 # the node. |
|
a70a0c138dd9
Test hyperlinked method on designators
John Rouillard <rouilj@ieee.org>
parents:
6337
diff
changeset
|
505 for designator in ['issue100', 'issue 100']: |
|
a70a0c138dd9
Test hyperlinked method on designators
John Rouillard <rouilj@ieee.org>
parents:
6337
diff
changeset
|
506 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', |
|
a70a0c138dd9
Test hyperlinked method on designators
John Rouillard <rouilj@ieee.org>
parents:
6337
diff
changeset
|
507 designator) |
|
a70a0c138dd9
Test hyperlinked method on designators
John Rouillard <rouilj@ieee.org>
parents:
6337
diff
changeset
|
508 self.assertEqual(p.hyperlinked(), designator) |
|
a70a0c138dd9
Test hyperlinked method on designators
John Rouillard <rouilj@ieee.org>
parents:
6337
diff
changeset
|
509 |
|
a70a0c138dd9
Test hyperlinked method on designators
John Rouillard <rouilj@ieee.org>
parents:
6337
diff
changeset
|
510 # zoom class does not exist |
|
a70a0c138dd9
Test hyperlinked method on designators
John Rouillard <rouilj@ieee.org>
parents:
6337
diff
changeset
|
511 for designator in ['zoom1', 'zoom100', 'zoom 1']: |
|
a70a0c138dd9
Test hyperlinked method on designators
John Rouillard <rouilj@ieee.org>
parents:
6337
diff
changeset
|
512 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', |
|
a70a0c138dd9
Test hyperlinked method on designators
John Rouillard <rouilj@ieee.org>
parents:
6337
diff
changeset
|
513 designator) |
|
a70a0c138dd9
Test hyperlinked method on designators
John Rouillard <rouilj@ieee.org>
parents:
6337
diff
changeset
|
514 self.assertEqual(p.hyperlinked(), designator) |
|
a70a0c138dd9
Test hyperlinked method on designators
John Rouillard <rouilj@ieee.org>
parents:
6337
diff
changeset
|
515 |
|
5157
ae2a5d1afdd5
adding tests for some StringHTMLProperty methods.
John Rouillard <rouilj@ieee.org>
parents:
5156
diff
changeset
|
516 |
|
6096
c914b3d8362f
If rst missing skip; initial attempt to test structuredtext.
John Rouillard <rouilj@ieee.org>
parents:
6095
diff
changeset
|
517 @skip_rst |
|
6095
3ada6a3f48e1
fixed ReStructuredText encoding with Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6059
diff
changeset
|
518 def test_string_rst(self): |
|
3ada6a3f48e1
fixed ReStructuredText encoding with Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6059
diff
changeset
|
519 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', u2s(u'A string with cmeerw@example.com *embedded* \u00df')) |
|
6098
72a281a55a17
Disable rst raw and include directives.
John Rouillard <rouilj@ieee.org>
parents:
6097
diff
changeset
|
520 |
|
72a281a55a17
Disable rst raw and include directives.
John Rouillard <rouilj@ieee.org>
parents:
6097
diff
changeset
|
521 # test case to make sure include directive is disabled |
|
72a281a55a17
Disable rst raw and include directives.
John Rouillard <rouilj@ieee.org>
parents:
6097
diff
changeset
|
522 q = StringHTMLProperty(self.client, 'test', '1', None, 'test', u2s(u'\n\n.. include:: XyZrMt.html\n\n<badtag>\n\n')) |
|
72a281a55a17
Disable rst raw and include directives.
John Rouillard <rouilj@ieee.org>
parents:
6097
diff
changeset
|
523 q_result=u'''<div class="document"> |
|
72a281a55a17
Disable rst raw and include directives.
John Rouillard <rouilj@ieee.org>
parents:
6097
diff
changeset
|
524 <div class="system-message"> |
|
72a281a55a17
Disable rst raw and include directives.
John Rouillard <rouilj@ieee.org>
parents:
6097
diff
changeset
|
525 <p class="system-message-title">System Message: WARNING/2 (<tt class="docutils"><string></tt>, line 3)</p> |
|
72a281a55a17
Disable rst raw and include directives.
John Rouillard <rouilj@ieee.org>
parents:
6097
diff
changeset
|
526 <p>"include" directive disabled.</p> |
|
72a281a55a17
Disable rst raw and include directives.
John Rouillard <rouilj@ieee.org>
parents:
6097
diff
changeset
|
527 <pre class="literal-block"> |
|
72a281a55a17
Disable rst raw and include directives.
John Rouillard <rouilj@ieee.org>
parents:
6097
diff
changeset
|
528 .. include:: XyZrMt.html |
|
72a281a55a17
Disable rst raw and include directives.
John Rouillard <rouilj@ieee.org>
parents:
6097
diff
changeset
|
529 |
|
72a281a55a17
Disable rst raw and include directives.
John Rouillard <rouilj@ieee.org>
parents:
6097
diff
changeset
|
530 </pre> |
|
72a281a55a17
Disable rst raw and include directives.
John Rouillard <rouilj@ieee.org>
parents:
6097
diff
changeset
|
531 </div> |
|
72a281a55a17
Disable rst raw and include directives.
John Rouillard <rouilj@ieee.org>
parents:
6097
diff
changeset
|
532 <p><badtag></p> |
|
72a281a55a17
Disable rst raw and include directives.
John Rouillard <rouilj@ieee.org>
parents:
6097
diff
changeset
|
533 </div> |
|
72a281a55a17
Disable rst raw and include directives.
John Rouillard <rouilj@ieee.org>
parents:
6097
diff
changeset
|
534 ''' |
|
72a281a55a17
Disable rst raw and include directives.
John Rouillard <rouilj@ieee.org>
parents:
6097
diff
changeset
|
535 |
|
72a281a55a17
Disable rst raw and include directives.
John Rouillard <rouilj@ieee.org>
parents:
6097
diff
changeset
|
536 # test case to make sure raw directive is disabled |
|
72a281a55a17
Disable rst raw and include directives.
John Rouillard <rouilj@ieee.org>
parents:
6097
diff
changeset
|
537 r = StringHTMLProperty(self.client, 'test', '1', None, 'test', u2s(u'\n\n.. raw:: html\n\n <badtag>\n\n')) |
|
72a281a55a17
Disable rst raw and include directives.
John Rouillard <rouilj@ieee.org>
parents:
6097
diff
changeset
|
538 r_result='''<div class="document"> |
|
72a281a55a17
Disable rst raw and include directives.
John Rouillard <rouilj@ieee.org>
parents:
6097
diff
changeset
|
539 <div class="system-message"> |
|
72a281a55a17
Disable rst raw and include directives.
John Rouillard <rouilj@ieee.org>
parents:
6097
diff
changeset
|
540 <p class="system-message-title">System Message: WARNING/2 (<tt class="docutils"><string></tt>, line 3)</p> |
|
72a281a55a17
Disable rst raw and include directives.
John Rouillard <rouilj@ieee.org>
parents:
6097
diff
changeset
|
541 <p>"raw" directive disabled.</p> |
|
72a281a55a17
Disable rst raw and include directives.
John Rouillard <rouilj@ieee.org>
parents:
6097
diff
changeset
|
542 <pre class="literal-block"> |
|
72a281a55a17
Disable rst raw and include directives.
John Rouillard <rouilj@ieee.org>
parents:
6097
diff
changeset
|
543 .. raw:: html |
|
72a281a55a17
Disable rst raw and include directives.
John Rouillard <rouilj@ieee.org>
parents:
6097
diff
changeset
|
544 |
|
72a281a55a17
Disable rst raw and include directives.
John Rouillard <rouilj@ieee.org>
parents:
6097
diff
changeset
|
545 <badtag> |
|
72a281a55a17
Disable rst raw and include directives.
John Rouillard <rouilj@ieee.org>
parents:
6097
diff
changeset
|
546 |
|
72a281a55a17
Disable rst raw and include directives.
John Rouillard <rouilj@ieee.org>
parents:
6097
diff
changeset
|
547 </pre> |
|
72a281a55a17
Disable rst raw and include directives.
John Rouillard <rouilj@ieee.org>
parents:
6097
diff
changeset
|
548 </div> |
|
72a281a55a17
Disable rst raw and include directives.
John Rouillard <rouilj@ieee.org>
parents:
6097
diff
changeset
|
549 </div> |
|
72a281a55a17
Disable rst raw and include directives.
John Rouillard <rouilj@ieee.org>
parents:
6097
diff
changeset
|
550 ''' |
|
6284
3f7538316724
issue2551099 - disable processing of data url's in markdown.
John Rouillard <rouilj@ieee.org>
parents:
6282
diff
changeset
|
551 # test case to make sure javascript and data url's aren't turned |
|
3f7538316724
issue2551099 - disable processing of data url's in markdown.
John Rouillard <rouilj@ieee.org>
parents:
6282
diff
changeset
|
552 # into links |
|
3f7538316724
issue2551099 - disable processing of data url's in markdown.
John Rouillard <rouilj@ieee.org>
parents:
6282
diff
changeset
|
553 s = StringHTMLProperty(self.client, 'test', '1', None, 'test', u2s(u'<badtag>\njavascript:badcode data:text/plain;base64,SGVsbG8sIFdvcmxkIQ==')) |
|
3f7538316724
issue2551099 - disable processing of data url's in markdown.
John Rouillard <rouilj@ieee.org>
parents:
6282
diff
changeset
|
554 s_result = '<div class="document">\n<p><badtag>\njavascript:badcode data:text/plain;base64,SGVsbG8sIFdvcmxkIQ==</p>\n</div>\n' |
|
6103
af16c135fb98
url's with javascript scheme should not be links in reST
John Rouillard <rouilj@ieee.org>
parents:
6099
diff
changeset
|
555 |
|
6339
ab18fe956d45
Test StringHTMLProperty.wrapped(); test url, plain text for rst
John Rouillard <rouilj@ieee.org>
parents:
6338
diff
changeset
|
556 # test url recognition |
|
ab18fe956d45
Test StringHTMLProperty.wrapped(); test url, plain text for rst
John Rouillard <rouilj@ieee.org>
parents:
6338
diff
changeset
|
557 t = StringHTMLProperty(self.client, 'test', '1', None, 'test', u2s(u'link is https://example.com/link for testing.')) |
|
ab18fe956d45
Test StringHTMLProperty.wrapped(); test url, plain text for rst
John Rouillard <rouilj@ieee.org>
parents:
6338
diff
changeset
|
558 t_result = '<div class="document">\n<p>link is <a class="reference external" href="https://example.com/link">https://example.com/link</a> for testing.</p>\n</div>\n' |
|
ab18fe956d45
Test StringHTMLProperty.wrapped(); test url, plain text for rst
John Rouillard <rouilj@ieee.org>
parents:
6338
diff
changeset
|
559 |
|
ab18fe956d45
Test StringHTMLProperty.wrapped(); test url, plain text for rst
John Rouillard <rouilj@ieee.org>
parents:
6338
diff
changeset
|
560 # test text that doesn't need to be processed |
|
ab18fe956d45
Test StringHTMLProperty.wrapped(); test url, plain text for rst
John Rouillard <rouilj@ieee.org>
parents:
6338
diff
changeset
|
561 u = StringHTMLProperty(self.client, 'test', '1', None, 'test', u2s(u'Just a plain old string here. Nothig to process.')) |
|
ab18fe956d45
Test StringHTMLProperty.wrapped(); test url, plain text for rst
John Rouillard <rouilj@ieee.org>
parents:
6338
diff
changeset
|
562 u_result = '<div class="document">\n<p>Just a plain old string here. Nothig to process.</p>\n</div>\n' |
|
ab18fe956d45
Test StringHTMLProperty.wrapped(); test url, plain text for rst
John Rouillard <rouilj@ieee.org>
parents:
6338
diff
changeset
|
563 |
|
6099
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
564 self.assertEqual(p.rst(), u2s(u'<div class="document">\n<p>A string with <a class="reference external" href="mailto:cmeerw@example.com">cmeerw@example.com</a> <em>embedded</em> \u00df</p>\n</div>\n')) |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
565 self.assertEqual(q.rst(), u2s(q_result)) |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
566 self.assertEqual(r.rst(), u2s(r_result)) |
|
6103
af16c135fb98
url's with javascript scheme should not be links in reST
John Rouillard <rouilj@ieee.org>
parents:
6099
diff
changeset
|
567 self.assertEqual(s.rst(), u2s(s_result)) |
|
6339
ab18fe956d45
Test StringHTMLProperty.wrapped(); test url, plain text for rst
John Rouillard <rouilj@ieee.org>
parents:
6338
diff
changeset
|
568 self.assertEqual(t.rst(), u2s(t_result)) |
|
ab18fe956d45
Test StringHTMLProperty.wrapped(); test url, plain text for rst
John Rouillard <rouilj@ieee.org>
parents:
6338
diff
changeset
|
569 self.assertEqual(u.rst(), u2s(u_result)) |
|
6095
3ada6a3f48e1
fixed ReStructuredText encoding with Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6059
diff
changeset
|
570 |
|
5157
ae2a5d1afdd5
adding tests for some StringHTMLProperty methods.
John Rouillard <rouilj@ieee.org>
parents:
5156
diff
changeset
|
571 def test_string_field(self): |
|
ae2a5d1afdd5
adding tests for some StringHTMLProperty methods.
John Rouillard <rouilj@ieee.org>
parents:
5156
diff
changeset
|
572 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', 'A string <b> with rouilj@example.com embedded < html</b>') |
|
5485
b0359a7c5b6d
create input elements with attributes in a defined (sorted) order
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5414
diff
changeset
|
573 self.assertEqual(p.field(), '<input name="test1@test" size="30" type="text" value="A string <b> with rouilj@example.com embedded &lt; html</b>">') |
|
5157
ae2a5d1afdd5
adding tests for some StringHTMLProperty methods.
John Rouillard <rouilj@ieee.org>
parents:
5156
diff
changeset
|
574 |
|
ae2a5d1afdd5
adding tests for some StringHTMLProperty methods.
John Rouillard <rouilj@ieee.org>
parents:
5156
diff
changeset
|
575 def test_string_multiline(self): |
|
ae2a5d1afdd5
adding tests for some StringHTMLProperty methods.
John Rouillard <rouilj@ieee.org>
parents:
5156
diff
changeset
|
576 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', 'A string <b> with rouilj@example.com embedded < html</b>') |
|
ae2a5d1afdd5
adding tests for some StringHTMLProperty methods.
John Rouillard <rouilj@ieee.org>
parents:
5156
diff
changeset
|
577 self.assertEqual(p.multiline(), '<textarea name="test1@test" id="test1@test" rows="5" cols="40">A string <b> with rouilj@example.com embedded &lt; html</b></textarea>') |
|
ae2a5d1afdd5
adding tests for some StringHTMLProperty methods.
John Rouillard <rouilj@ieee.org>
parents:
5156
diff
changeset
|
578 self.assertEqual(p.multiline(rows=300, cols=100, **{'class':'css_class'}), '<textarea class="css_class" name="test1@test" id="test1@test" rows="300" cols="100">A string <b> with rouilj@example.com embedded &lt; html</b></textarea>') |
|
ae2a5d1afdd5
adding tests for some StringHTMLProperty methods.
John Rouillard <rouilj@ieee.org>
parents:
5156
diff
changeset
|
579 |
|
3991
13161539e5bd
improved URL matching
Richard Jones <richard@users.sourceforge.net>
parents:
3972
diff
changeset
|
580 def test_url_match(self): |
|
13161539e5bd
improved URL matching
Richard Jones <richard@users.sourceforge.net>
parents:
3972
diff
changeset
|
581 '''Test the URL regular expression in StringHTMLProperty. |
|
13161539e5bd
improved URL matching
Richard Jones <richard@users.sourceforge.net>
parents:
3972
diff
changeset
|
582 ''' |
|
4009
e335ce40d6c8
Make URL matching code less matchy
Richard Jones <richard@users.sourceforge.net>
parents:
3991
diff
changeset
|
583 def t(s, nothing=False, **groups): |
|
3991
13161539e5bd
improved URL matching
Richard Jones <richard@users.sourceforge.net>
parents:
3972
diff
changeset
|
584 m = StringHTMLProperty.hyper_re.search(s) |
|
4009
e335ce40d6c8
Make URL matching code less matchy
Richard Jones <richard@users.sourceforge.net>
parents:
3991
diff
changeset
|
585 if nothing: |
|
4010
797eacd945af
add tests for and fix alex's examples
Richard Jones <richard@users.sourceforge.net>
parents:
4009
diff
changeset
|
586 if m: |
|
5793
6aad7b194e63
replace assertEquals wth assertEqual.
John Rouillard <rouilj@ieee.org>
parents:
5684
diff
changeset
|
587 self.assertEqual(m, None, '%r matched (%r)'%(s, m.groupdict())) |
|
4009
e335ce40d6c8
Make URL matching code less matchy
Richard Jones <richard@users.sourceforge.net>
parents:
3991
diff
changeset
|
588 return |
|
e335ce40d6c8
Make URL matching code less matchy
Richard Jones <richard@users.sourceforge.net>
parents:
3991
diff
changeset
|
589 else: |
|
5795
10747e4e4ec4
replace assertNotEquals with assertNotEqual
John Rouillard <rouilj@ieee.org>
parents:
5793
diff
changeset
|
590 self.assertNotEqual(m, None, '%r did not match'%s) |
|
3991
13161539e5bd
improved URL matching
Richard Jones <richard@users.sourceforge.net>
parents:
3972
diff
changeset
|
591 d = m.groupdict() |
|
13161539e5bd
improved URL matching
Richard Jones <richard@users.sourceforge.net>
parents:
3972
diff
changeset
|
592 for g in groups: |
|
5793
6aad7b194e63
replace assertEquals wth assertEqual.
John Rouillard <rouilj@ieee.org>
parents:
5684
diff
changeset
|
593 self.assertEqual(d[g], groups[g], '%s %r != %r in %r'%(g, d[g], |
|
3991
13161539e5bd
improved URL matching
Richard Jones <richard@users.sourceforge.net>
parents:
3972
diff
changeset
|
594 groups[g], s)) |
|
13161539e5bd
improved URL matching
Richard Jones <richard@users.sourceforge.net>
parents:
3972
diff
changeset
|
595 |
|
13161539e5bd
improved URL matching
Richard Jones <richard@users.sourceforge.net>
parents:
3972
diff
changeset
|
596 #t('123.321.123.321', 'url') |
|
6551
f1f8d75edd97
Add variations on test for _hyper_url functons
John Rouillard <rouilj@ieee.org>
parents:
6404
diff
changeset
|
597 t('https://example.com/demo/issue8#24MRV9BZYx:V:1B~sssssssssssssss~4~4', url="https://example.com/demo/issue8#24MRV9BZYx:V:1B~sssssssssssssss~4~4") |
|
4010
797eacd945af
add tests for and fix alex's examples
Richard Jones <richard@users.sourceforge.net>
parents:
4009
diff
changeset
|
598 t('http://localhost/', url='http://localhost/') |
|
3991
13161539e5bd
improved URL matching
Richard Jones <richard@users.sourceforge.net>
parents:
3972
diff
changeset
|
599 t('http://roundup.net/', url='http://roundup.net/') |
|
4010
797eacd945af
add tests for and fix alex's examples
Richard Jones <richard@users.sourceforge.net>
parents:
4009
diff
changeset
|
600 t('http://richard@localhost/', url='http://richard@localhost/') |
|
797eacd945af
add tests for and fix alex's examples
Richard Jones <richard@users.sourceforge.net>
parents:
4009
diff
changeset
|
601 t('http://richard:sekrit@localhost/', |
|
797eacd945af
add tests for and fix alex's examples
Richard Jones <richard@users.sourceforge.net>
parents:
4009
diff
changeset
|
602 url='http://richard:sekrit@localhost/') |
|
3991
13161539e5bd
improved URL matching
Richard Jones <richard@users.sourceforge.net>
parents:
3972
diff
changeset
|
603 t('<HTTP://roundup.net/>', url='HTTP://roundup.net/') |
|
13161539e5bd
improved URL matching
Richard Jones <richard@users.sourceforge.net>
parents:
3972
diff
changeset
|
604 t('www.a.ex', url='www.a.ex') |
|
4009
e335ce40d6c8
Make URL matching code less matchy
Richard Jones <richard@users.sourceforge.net>
parents:
3991
diff
changeset
|
605 t('foo.a.ex', nothing=True) |
|
e335ce40d6c8
Make URL matching code less matchy
Richard Jones <richard@users.sourceforge.net>
parents:
3991
diff
changeset
|
606 t('StDevValidTimeSeries.GetObservation', nothing=True) |
|
3991
13161539e5bd
improved URL matching
Richard Jones <richard@users.sourceforge.net>
parents:
3972
diff
changeset
|
607 t('http://a.ex', url='http://a.ex') |
|
13161539e5bd
improved URL matching
Richard Jones <richard@users.sourceforge.net>
parents:
3972
diff
changeset
|
608 t('http://a.ex/?foo&bar=baz\\.@!$%()qwerty', |
|
13161539e5bd
improved URL matching
Richard Jones <richard@users.sourceforge.net>
parents:
3972
diff
changeset
|
609 url='http://a.ex/?foo&bar=baz\\.@!$%()qwerty') |
|
4009
e335ce40d6c8
Make URL matching code less matchy
Richard Jones <richard@users.sourceforge.net>
parents:
3991
diff
changeset
|
610 t('www.foo.net', url='www.foo.net') |
|
3991
13161539e5bd
improved URL matching
Richard Jones <richard@users.sourceforge.net>
parents:
3972
diff
changeset
|
611 t('richard@com.example', email='richard@com.example') |
|
13161539e5bd
improved URL matching
Richard Jones <richard@users.sourceforge.net>
parents:
3972
diff
changeset
|
612 t('r@a.com', email='r@a.com') |
|
13161539e5bd
improved URL matching
Richard Jones <richard@users.sourceforge.net>
parents:
3972
diff
changeset
|
613 t('i1', **{'class':'i', 'id':'1'}) |
|
13161539e5bd
improved URL matching
Richard Jones <richard@users.sourceforge.net>
parents:
3972
diff
changeset
|
614 t('item123', **{'class':'item', 'id':'123'}) |
|
6551
f1f8d75edd97
Add variations on test for _hyper_url functons
John Rouillard <rouilj@ieee.org>
parents:
6404
diff
changeset
|
615 t('item 123', **{'class':'item', 'id':'123'}) |
|
4010
797eacd945af
add tests for and fix alex's examples
Richard Jones <richard@users.sourceforge.net>
parents:
4009
diff
changeset
|
616 t('www.user:pass@host.net', email='pass@host.net') |
|
797eacd945af
add tests for and fix alex's examples
Richard Jones <richard@users.sourceforge.net>
parents:
4009
diff
changeset
|
617 t('user:pass@www.host.net', url='user:pass@www.host.net') |
|
4011
e77bcbdc9b32
add tests for numbers too :)
Richard Jones <richard@users.sourceforge.net>
parents:
4010
diff
changeset
|
618 t('123.35', nothing=True) |
|
e77bcbdc9b32
add tests for numbers too :)
Richard Jones <richard@users.sourceforge.net>
parents:
4010
diff
changeset
|
619 t('-.3535', nothing=True) |
|
3991
13161539e5bd
improved URL matching
Richard Jones <richard@users.sourceforge.net>
parents:
3972
diff
changeset
|
620 |
|
13161539e5bd
improved URL matching
Richard Jones <richard@users.sourceforge.net>
parents:
3972
diff
changeset
|
621 def test_url_replace(self): |
|
13161539e5bd
improved URL matching
Richard Jones <richard@users.sourceforge.net>
parents:
3972
diff
changeset
|
622 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', '') |
|
13161539e5bd
improved URL matching
Richard Jones <richard@users.sourceforge.net>
parents:
3972
diff
changeset
|
623 def t(s): return p.hyper_re.sub(p._hyper_repl, s) |
|
4413
66603a9051f9
improve handling of '>' when URLs are converted to links
Richard Jones <richard@users.sourceforge.net>
parents:
4391
diff
changeset
|
624 ae = self.assertEqual |
|
6564
21c7c2041a4b
issue2551181 - allow issueXXX#fragment to generate a link with fragment
John Rouillard <rouilj@ieee.org>
parents:
6551
diff
changeset
|
625 ae(t('issue5#msg10'), '<a href="issue5#msg10">issue5#msg10</a>') |
|
21c7c2041a4b
issue2551181 - allow issueXXX#fragment to generate a link with fragment
John Rouillard <rouilj@ieee.org>
parents:
6551
diff
changeset
|
626 ae(t('issue5'), '<a href="issue5">issue5</a>') |
|
21c7c2041a4b
issue2551181 - allow issueXXX#fragment to generate a link with fragment
John Rouillard <rouilj@ieee.org>
parents:
6551
diff
changeset
|
627 ae(t('issue2255'), 'issue2255') |
|
6551
f1f8d75edd97
Add variations on test for _hyper_url functons
John Rouillard <rouilj@ieee.org>
parents:
6404
diff
changeset
|
628 ae(t('foo https://example.com/demo/issue8#24MRV9BZYx:V:1B~sssssssssssssss~4~4 bar'), |
|
f1f8d75edd97
Add variations on test for _hyper_url functons
John Rouillard <rouilj@ieee.org>
parents:
6404
diff
changeset
|
629 'foo <a href="https://example.com/demo/issue8#24MRV9BZYx:V:1B~sssssssssssssss~4~4" rel="nofollow noopener">' |
|
f1f8d75edd97
Add variations on test for _hyper_url functons
John Rouillard <rouilj@ieee.org>
parents:
6404
diff
changeset
|
630 'https://example.com/demo/issue8#24MRV9BZYx:V:1B~sssssssssssssss~4~4</a> bar') |
|
4288
ce684080e968
issue2550549: Some bugs issue classifiers were causing database lookup errors
Richard Jones <richard@users.sourceforge.net>
parents:
4040
diff
changeset
|
631 ae(t('item123123123123'), 'item123123123123') |
|
4391
d5239335fae3
make URL detection a little smarter about brackets per issue2550657
Richard Jones <richard@users.sourceforge.net>
parents:
4288
diff
changeset
|
632 ae(t('http://roundup.net/'), |
|
5684
97e2125e064c
When we generate links from URL's in messages, we add rel="nofollow"
John Rouillard <rouilj@ieee.org>
parents:
5649
diff
changeset
|
633 '<a href="http://roundup.net/" rel="nofollow noopener">http://roundup.net/</a>') |
|
4391
d5239335fae3
make URL detection a little smarter about brackets per issue2550657
Richard Jones <richard@users.sourceforge.net>
parents:
4288
diff
changeset
|
634 ae(t('<HTTP://roundup.net/>'), |
|
5684
97e2125e064c
When we generate links from URL's in messages, we add rel="nofollow"
John Rouillard <rouilj@ieee.org>
parents:
5649
diff
changeset
|
635 '<<a href="HTTP://roundup.net/" rel="nofollow noopener">HTTP://roundup.net/</a>>') |
|
4414
399569ff4aed
- fix small indentation glitch
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4413
diff
changeset
|
636 ae(t('<http://roundup.net/>.'), |
|
5684
97e2125e064c
When we generate links from URL's in messages, we add rel="nofollow"
John Rouillard <rouilj@ieee.org>
parents:
5649
diff
changeset
|
637 '<<a href="http://roundup.net/" rel="nofollow noopener">http://roundup.net/</a>>.') |
|
4391
d5239335fae3
make URL detection a little smarter about brackets per issue2550657
Richard Jones <richard@users.sourceforge.net>
parents:
4288
diff
changeset
|
638 ae(t('<www.roundup.net>'), |
|
5684
97e2125e064c
When we generate links from URL's in messages, we add rel="nofollow"
John Rouillard <rouilj@ieee.org>
parents:
5649
diff
changeset
|
639 '<<a href="http://www.roundup.net" rel="nofollow noopener">www.roundup.net</a>>') |
|
4391
d5239335fae3
make URL detection a little smarter about brackets per issue2550657
Richard Jones <richard@users.sourceforge.net>
parents:
4288
diff
changeset
|
640 ae(t('(www.roundup.net)'), |
|
5684
97e2125e064c
When we generate links from URL's in messages, we add rel="nofollow"
John Rouillard <rouilj@ieee.org>
parents:
5649
diff
changeset
|
641 '(<a href="http://www.roundup.net" rel="nofollow noopener">www.roundup.net</a>)') |
|
4391
d5239335fae3
make URL detection a little smarter about brackets per issue2550657
Richard Jones <richard@users.sourceforge.net>
parents:
4288
diff
changeset
|
642 ae(t('foo http://msdn.microsoft.com/en-us/library/ms741540(VS.85).aspx bar'), |
|
5684
97e2125e064c
When we generate links from URL's in messages, we add rel="nofollow"
John Rouillard <rouilj@ieee.org>
parents:
5649
diff
changeset
|
643 'foo <a href="http://msdn.microsoft.com/en-us/library/ms741540(VS.85).aspx" rel="nofollow noopener">' |
|
4391
d5239335fae3
make URL detection a little smarter about brackets per issue2550657
Richard Jones <richard@users.sourceforge.net>
parents:
4288
diff
changeset
|
644 'http://msdn.microsoft.com/en-us/library/ms741540(VS.85).aspx</a> bar') |
|
d5239335fae3
make URL detection a little smarter about brackets per issue2550657
Richard Jones <richard@users.sourceforge.net>
parents:
4288
diff
changeset
|
645 ae(t('(e.g. http://en.wikipedia.org/wiki/Python_(programming_language))'), |
|
5684
97e2125e064c
When we generate links from URL's in messages, we add rel="nofollow"
John Rouillard <rouilj@ieee.org>
parents:
5649
diff
changeset
|
646 '(e.g. <a href="http://en.wikipedia.org/wiki/Python_(programming_language)" rel="nofollow noopener">' |
|
4391
d5239335fae3
make URL detection a little smarter about brackets per issue2550657
Richard Jones <richard@users.sourceforge.net>
parents:
4288
diff
changeset
|
647 'http://en.wikipedia.org/wiki/Python_(programming_language)</a>)') |
|
d5239335fae3
make URL detection a little smarter about brackets per issue2550657
Richard Jones <richard@users.sourceforge.net>
parents:
4288
diff
changeset
|
648 ae(t('(e.g. http://en.wikipedia.org/wiki/Python_(programming_language)).'), |
|
5684
97e2125e064c
When we generate links from URL's in messages, we add rel="nofollow"
John Rouillard <rouilj@ieee.org>
parents:
5649
diff
changeset
|
649 '(e.g. <a href="http://en.wikipedia.org/wiki/Python_(programming_language)" rel="nofollow noopener">' |
|
4391
d5239335fae3
make URL detection a little smarter about brackets per issue2550657
Richard Jones <richard@users.sourceforge.net>
parents:
4288
diff
changeset
|
650 'http://en.wikipedia.org/wiki/Python_(programming_language)</a>).') |
|
4413
66603a9051f9
improve handling of '>' when URLs are converted to links
Richard Jones <richard@users.sourceforge.net>
parents:
4391
diff
changeset
|
651 ae(t('(e.g. http://en.wikipedia.org/wiki/Python_(programming_language))>.'), |
|
5684
97e2125e064c
When we generate links from URL's in messages, we add rel="nofollow"
John Rouillard <rouilj@ieee.org>
parents:
5649
diff
changeset
|
652 '(e.g. <a href="http://en.wikipedia.org/wiki/Python_(programming_language)" rel="nofollow noopener">' |
|
4413
66603a9051f9
improve handling of '>' when URLs are converted to links
Richard Jones <richard@users.sourceforge.net>
parents:
4391
diff
changeset
|
653 'http://en.wikipedia.org/wiki/Python_(programming_language)</a>)>.') |
|
66603a9051f9
improve handling of '>' when URLs are converted to links
Richard Jones <richard@users.sourceforge.net>
parents:
4391
diff
changeset
|
654 ae(t('(e.g. http://en.wikipedia.org/wiki/Python_(programming_language>)).'), |
|
5684
97e2125e064c
When we generate links from URL's in messages, we add rel="nofollow"
John Rouillard <rouilj@ieee.org>
parents:
5649
diff
changeset
|
655 '(e.g. <a href="http://en.wikipedia.org/wiki/Python_(programming_language" rel="nofollow noopener">' |
|
4413
66603a9051f9
improve handling of '>' when URLs are converted to links
Richard Jones <richard@users.sourceforge.net>
parents:
4391
diff
changeset
|
656 'http://en.wikipedia.org/wiki/Python_(programming_language</a>>)).') |
|
4647
11b6601629d7
#2550759: Trailing punctuation is no longer included when URLs are converted to links.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
4414
diff
changeset
|
657 for c in '.,;:!': |
|
11b6601629d7
#2550759: Trailing punctuation is no longer included when URLs are converted to links.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
4414
diff
changeset
|
658 # trailing punctuation is not included |
|
11b6601629d7
#2550759: Trailing punctuation is no longer included when URLs are converted to links.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
4414
diff
changeset
|
659 ae(t('http://roundup.net/%c ' % c), |
|
5684
97e2125e064c
When we generate links from URL's in messages, we add rel="nofollow"
John Rouillard <rouilj@ieee.org>
parents:
5649
diff
changeset
|
660 '<a href="http://roundup.net/" rel="nofollow noopener">http://roundup.net/</a>%c ' % c) |
|
6551
f1f8d75edd97
Add variations on test for _hyper_url functons
John Rouillard <rouilj@ieee.org>
parents:
6404
diff
changeset
|
661 # trailing punctuation is not included without trailing space |
|
f1f8d75edd97
Add variations on test for _hyper_url functons
John Rouillard <rouilj@ieee.org>
parents:
6404
diff
changeset
|
662 ae(t('http://roundup.net/%c' % c), |
|
f1f8d75edd97
Add variations on test for _hyper_url functons
John Rouillard <rouilj@ieee.org>
parents:
6404
diff
changeset
|
663 '<a href="http://roundup.net/" rel="nofollow noopener">http://roundup.net/</a>%c' % c) |
|
4647
11b6601629d7
#2550759: Trailing punctuation is no longer included when URLs are converted to links.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
4414
diff
changeset
|
664 # but it's included if it's part of the URL |
|
11b6601629d7
#2550759: Trailing punctuation is no longer included when URLs are converted to links.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
4414
diff
changeset
|
665 ae(t('http://roundup.net/%c/' % c), |
|
5684
97e2125e064c
When we generate links from URL's in messages, we add rel="nofollow"
John Rouillard <rouilj@ieee.org>
parents:
5649
diff
changeset
|
666 '<a href="http://roundup.net/%c/" rel="nofollow noopener">http://roundup.net/%c/</a>' % (c, c)) |
|
6551
f1f8d75edd97
Add variations on test for _hyper_url functons
John Rouillard <rouilj@ieee.org>
parents:
6404
diff
changeset
|
667 # including with a non / terminated path |
|
f1f8d75edd97
Add variations on test for _hyper_url functons
John Rouillard <rouilj@ieee.org>
parents:
6404
diff
changeset
|
668 ae(t('http://roundup.net/test%c ' % c), |
|
f1f8d75edd97
Add variations on test for _hyper_url functons
John Rouillard <rouilj@ieee.org>
parents:
6404
diff
changeset
|
669 '<a href="http://roundup.net/test" rel="nofollow noopener">http://roundup.net/test</a>%c ' % c) |
|
f1f8d75edd97
Add variations on test for _hyper_url functons
John Rouillard <rouilj@ieee.org>
parents:
6404
diff
changeset
|
670 # but it's included if it's part of the URL path |
|
f1f8d75edd97
Add variations on test for _hyper_url functons
John Rouillard <rouilj@ieee.org>
parents:
6404
diff
changeset
|
671 ae(t('http://roundup.net/%ctest' % c), |
|
f1f8d75edd97
Add variations on test for _hyper_url functons
John Rouillard <rouilj@ieee.org>
parents:
6404
diff
changeset
|
672 '<a href="http://roundup.net/%ctest" rel="nofollow noopener">http://roundup.net/%ctest</a>' % (c, c)) |
|
f1f8d75edd97
Add variations on test for _hyper_url functons
John Rouillard <rouilj@ieee.org>
parents:
6404
diff
changeset
|
673 |
|
3991
13161539e5bd
improved URL matching
Richard Jones <richard@users.sourceforge.net>
parents:
3972
diff
changeset
|
674 |
|
5989
c475159af6b8
Add test and changelog for html boolean fix.
John Rouillard <rouilj@ieee.org>
parents:
5903
diff
changeset
|
675 def test_input_html4(self): |
|
c475159af6b8
Add test and changelog for html boolean fix.
John Rouillard <rouilj@ieee.org>
parents:
5903
diff
changeset
|
676 # boolean attributes are just the attribute name |
|
c475159af6b8
Add test and changelog for html boolean fix.
John Rouillard <rouilj@ieee.org>
parents:
5903
diff
changeset
|
677 # indicate with attr=None or attr="attr" |
|
c475159af6b8
Add test and changelog for html boolean fix.
John Rouillard <rouilj@ieee.org>
parents:
5903
diff
changeset
|
678 # e.g. disabled |
|
c475159af6b8
Add test and changelog for html boolean fix.
John Rouillard <rouilj@ieee.org>
parents:
5903
diff
changeset
|
679 |
|
c475159af6b8
Add test and changelog for html boolean fix.
John Rouillard <rouilj@ieee.org>
parents:
5903
diff
changeset
|
680 input=input_html4(required=None, size=30) |
|
c475159af6b8
Add test and changelog for html boolean fix.
John Rouillard <rouilj@ieee.org>
parents:
5903
diff
changeset
|
681 self.assertEqual(input, '<input required size="30" type="text">') |
|
c475159af6b8
Add test and changelog for html boolean fix.
John Rouillard <rouilj@ieee.org>
parents:
5903
diff
changeset
|
682 |
|
c475159af6b8
Add test and changelog for html boolean fix.
John Rouillard <rouilj@ieee.org>
parents:
5903
diff
changeset
|
683 input=input_html4(required="required", size=30) |
|
6059
f0da02e0ca81
Different fix for displaying booleans properly in xhtml vs html
John Rouillard <rouilj@ieee.org>
parents:
5989
diff
changeset
|
684 self.assertEqual(input, '<input required="required" size="30" type="text">') |
|
5989
c475159af6b8
Add test and changelog for html boolean fix.
John Rouillard <rouilj@ieee.org>
parents:
5903
diff
changeset
|
685 |
|
c475159af6b8
Add test and changelog for html boolean fix.
John Rouillard <rouilj@ieee.org>
parents:
5903
diff
changeset
|
686 attrs={"required": None, "class": "required", "size": 30} |
|
c475159af6b8
Add test and changelog for html boolean fix.
John Rouillard <rouilj@ieee.org>
parents:
5903
diff
changeset
|
687 input=input_html4(**attrs) |
|
c475159af6b8
Add test and changelog for html boolean fix.
John Rouillard <rouilj@ieee.org>
parents:
5903
diff
changeset
|
688 self.assertEqual(input, '<input class="required" required size="30" type="text">') |
|
c475159af6b8
Add test and changelog for html boolean fix.
John Rouillard <rouilj@ieee.org>
parents:
5903
diff
changeset
|
689 |
|
c475159af6b8
Add test and changelog for html boolean fix.
John Rouillard <rouilj@ieee.org>
parents:
5903
diff
changeset
|
690 attrs={"disabled": "disabled", "class": "required", "size": 30} |
|
c475159af6b8
Add test and changelog for html boolean fix.
John Rouillard <rouilj@ieee.org>
parents:
5903
diff
changeset
|
691 input=input_html4(**attrs) |
|
6059
f0da02e0ca81
Different fix for displaying booleans properly in xhtml vs html
John Rouillard <rouilj@ieee.org>
parents:
5989
diff
changeset
|
692 self.assertEqual(input, '<input class="required" disabled="disabled" size="30" type="text">') |
|
5989
c475159af6b8
Add test and changelog for html boolean fix.
John Rouillard <rouilj@ieee.org>
parents:
5903
diff
changeset
|
693 |
|
c475159af6b8
Add test and changelog for html boolean fix.
John Rouillard <rouilj@ieee.org>
parents:
5903
diff
changeset
|
694 def test_input_xhtml(self): |
|
c475159af6b8
Add test and changelog for html boolean fix.
John Rouillard <rouilj@ieee.org>
parents:
5903
diff
changeset
|
695 # boolean attributes are attribute name="attribute name" |
|
c475159af6b8
Add test and changelog for html boolean fix.
John Rouillard <rouilj@ieee.org>
parents:
5903
diff
changeset
|
696 # indicate with attr=None or attr="attr" |
|
c475159af6b8
Add test and changelog for html boolean fix.
John Rouillard <rouilj@ieee.org>
parents:
5903
diff
changeset
|
697 # e.g. disabled="disabled" |
|
c475159af6b8
Add test and changelog for html boolean fix.
John Rouillard <rouilj@ieee.org>
parents:
5903
diff
changeset
|
698 input=input_xhtml(required=None, size=30) |
|
c475159af6b8
Add test and changelog for html boolean fix.
John Rouillard <rouilj@ieee.org>
parents:
5903
diff
changeset
|
699 self.assertEqual(input, '<input required="required" size="30" type="text"/>') |
|
c475159af6b8
Add test and changelog for html boolean fix.
John Rouillard <rouilj@ieee.org>
parents:
5903
diff
changeset
|
700 |
|
c475159af6b8
Add test and changelog for html boolean fix.
John Rouillard <rouilj@ieee.org>
parents:
5903
diff
changeset
|
701 input=input_xhtml(required="required", size=30) |
|
c475159af6b8
Add test and changelog for html boolean fix.
John Rouillard <rouilj@ieee.org>
parents:
5903
diff
changeset
|
702 self.assertEqual(input, '<input required="required" size="30" type="text"/>') |
|
c475159af6b8
Add test and changelog for html boolean fix.
John Rouillard <rouilj@ieee.org>
parents:
5903
diff
changeset
|
703 |
|
c475159af6b8
Add test and changelog for html boolean fix.
John Rouillard <rouilj@ieee.org>
parents:
5903
diff
changeset
|
704 attrs={"required": None, "class": "required", "size": 30} |
|
c475159af6b8
Add test and changelog for html boolean fix.
John Rouillard <rouilj@ieee.org>
parents:
5903
diff
changeset
|
705 input=input_xhtml(**attrs) |
|
c475159af6b8
Add test and changelog for html boolean fix.
John Rouillard <rouilj@ieee.org>
parents:
5903
diff
changeset
|
706 self.assertEqual(input, '<input class="required" required="required" size="30" type="text"/>') |
|
c475159af6b8
Add test and changelog for html boolean fix.
John Rouillard <rouilj@ieee.org>
parents:
5903
diff
changeset
|
707 |
|
c475159af6b8
Add test and changelog for html boolean fix.
John Rouillard <rouilj@ieee.org>
parents:
5903
diff
changeset
|
708 attrs={"disabled": "disabled", "class": "required", "size": 30} |
|
c475159af6b8
Add test and changelog for html boolean fix.
John Rouillard <rouilj@ieee.org>
parents:
5903
diff
changeset
|
709 input=input_xhtml(**attrs) |
|
c475159af6b8
Add test and changelog for html boolean fix.
John Rouillard <rouilj@ieee.org>
parents:
5903
diff
changeset
|
710 self.assertEqual(input, '<input class="required" disabled="disabled" size="30" type="text"/>') |
|
c475159af6b8
Add test and changelog for html boolean fix.
John Rouillard <rouilj@ieee.org>
parents:
5903
diff
changeset
|
711 |
|
6377
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
712 |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
713 class HTMLPropertyTestClass(unittest.TestCase): |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
714 def setUp(self): |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
715 self.form = FieldStorage() |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
716 self.client = MockNull() |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
717 self.client.db = db = MockDatabase() |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
718 db.security.hasPermission = lambda *args, **kw: True |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
719 self.client.form = self.form |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
720 |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
721 self.client._props = MockNull() |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
722 # add client props for testing anti_csrf_nonce |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
723 self.client.session_api = MockNull(_sid="1234567890") |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
724 self.client.db.getuid = lambda : 10 |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
725 |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
726 class DateHTMLPropertyTestCase(HTMLPropertyTestClass): |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
727 |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
728 def test_DateHTMLWithText(self): |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
729 """Test methods when DateHTMLProperty._value is a string |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
730 rather than a hyperdb.Date() |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
731 """ |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
732 test_datestring = "2021-01-01 11:22:10" |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
733 test_date = hyperdb.Date("2") |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
734 |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
735 self.form.list.append(MiniFieldStorage("test1@test", test_datestring)) |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
736 self.client._props=test_date |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
737 |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
738 self.client.db.classes = dict \ |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
739 ( test = MockNull(getprops = lambda : test_date) |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
740 ) |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
741 |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
742 # client, classname, nodeid, prop, name, value, |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
743 # anonymous=0, offset=None |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
744 d = DateHTMLProperty(self.client, 'test', '1', self.client._props, |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
745 'test', '') |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
746 self.assertIs(type(d._value), str) |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
747 self.assertEqual(d.pretty(), "2021-01-01 11:22:10") |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
748 self.assertEqual(d.plain(), "2021-01-01 11:22:10") |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
749 input = """<input name="test1@test" size="30" type="text" value="2021-01-01 11:22:10"><a class="classhelp" data-calurl="test?@template=calendar&amp;property=test&amp;form=itemSynopsis&date=2021-01-01 11:22:10" data-height="200" data-width="300" href="javascript:help_window('test?@template=calendar&property=test&form=itemSynopsis&date=2021-01-01 11:22:10', 300, 200)">(cal)</a>""" |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
750 self.assertEqual(d.field(), input) |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
751 |
|
6099
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
752 # common markdown test cases |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
753 class MarkdownTests: |
|
6282
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
754 def mangleMarkdown2(self, s): |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
755 ''' markdown2's rel=nofollow support on 'a' tags isn't programmable. |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
756 So we are using it's builtin nofollow support. Mangle the string |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
757 so that it matches the test case. |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
758 |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
759 turn: <a rel="nofollow" href="foo"> into |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
760 <a href="foo" rel="nofollow noopener"> |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
761 |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
762 Also if it is a mailto url, we don't expect rel="nofollow", |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
763 so delete it. |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
764 |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
765 turn: <a rel="nofollow" href="mailto:foo"> into |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
766 <a href="mailto:foo"> |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
767 |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
768 Also when a title is present it is put in a different place |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
769 from markdown, so fix it to normalize. |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
770 |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
771 turn: |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
772 |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
773 <a rel="nofollow" href="http://example.com/" title="a title"> |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
774 into |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
775 <a href="http://example.com/" rel="nofollow noopener" title="a title"> |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
776 ''' |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
777 if type(self) == Markdown2TestCase and s.find('a rel="nofollow"') != -1: |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
778 if s.find('href="mailto:') == -1: |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
779 # not a mailto url |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
780 if 'rel="nofollow"' in s: |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
781 if 'title="' in s: |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
782 s = s.replace(' rel="nofollow" ', ' ').replace(' title=', ' rel="nofollow noopener" title=') |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
783 else: |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
784 s = s.replace(' rel="nofollow" ', ' ').replace('">', '" rel="nofollow noopener">') |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
785 |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
786 return s |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
787 else: |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
788 # a mailto url |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
789 return s.replace(' rel="nofollow" ', ' ') |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
790 return s |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
791 |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
792 |
|
6099
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
793 def test_string_markdown(self): |
|
6104
a1fd9551d416
don't allow javascript URLs in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6103
diff
changeset
|
794 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', u2s(u'A string with <br> *embedded* \u00df')) |
|
a1fd9551d416
don't allow javascript URLs in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6103
diff
changeset
|
795 self.assertEqual(p.markdown().strip(), u2s(u'<p>A string with <br> <em>embedded</em> \u00df</p>')) |
|
a1fd9551d416
don't allow javascript URLs in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6103
diff
changeset
|
796 |
|
a1fd9551d416
don't allow javascript URLs in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6103
diff
changeset
|
797 def test_string_markdown_link(self): |
|
7561
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
798 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
799 u2s(u'A link <http://localhost>')) |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
800 m = p.markdown().strip() |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
801 m = self.mangleMarkdown2(m) |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
802 |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
803 self.assertEqual( u2s(u'<p>A link <a href="http://localhost" rel="nofollow noopener">http://localhost</a></p>'), m) |
|
6104
a1fd9551d416
don't allow javascript URLs in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6103
diff
changeset
|
804 |
|
6336
6f89cdc7c938
issue2551108 - fix markdown formatted designator links
John Rouillard <rouilj@ieee.org>
parents:
6299
diff
changeset
|
805 def test_string_markdown_link_item(self): |
|
6f89cdc7c938
issue2551108 - fix markdown formatted designator links
John Rouillard <rouilj@ieee.org>
parents:
6299
diff
changeset
|
806 """ The link formats for the different markdown engines changes. |
|
6f89cdc7c938
issue2551108 - fix markdown formatted designator links
John Rouillard <rouilj@ieee.org>
parents:
6299
diff
changeset
|
807 Order of attributes, value for rel (noopener, nofollow etc) |
|
6f89cdc7c938
issue2551108 - fix markdown formatted designator links
John Rouillard <rouilj@ieee.org>
parents:
6299
diff
changeset
|
808 is different. So most tests check for a substring that indicates |
|
6f89cdc7c938
issue2551108 - fix markdown formatted designator links
John Rouillard <rouilj@ieee.org>
parents:
6299
diff
changeset
|
809 success rather than the entire returned string. |
|
6f89cdc7c938
issue2551108 - fix markdown formatted designator links
John Rouillard <rouilj@ieee.org>
parents:
6299
diff
changeset
|
810 """ |
|
7561
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
811 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
812 u2s(u'An issue1 link')) |
|
6336
6f89cdc7c938
issue2551108 - fix markdown formatted designator links
John Rouillard <rouilj@ieee.org>
parents:
6299
diff
changeset
|
813 self.assertIn( u2s(u'href="issue1"'), p.markdown().strip()) |
|
6f89cdc7c938
issue2551108 - fix markdown formatted designator links
John Rouillard <rouilj@ieee.org>
parents:
6299
diff
changeset
|
814 # just verify that plain linking is working |
|
6f89cdc7c938
issue2551108 - fix markdown formatted designator links
John Rouillard <rouilj@ieee.org>
parents:
6299
diff
changeset
|
815 self.assertIn( u2s(u'href="issue1"'), p.plain(hyperlink=1)) |
|
6f89cdc7c938
issue2551108 - fix markdown formatted designator links
John Rouillard <rouilj@ieee.org>
parents:
6299
diff
changeset
|
816 |
|
7561
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
817 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
818 u2s(u'An [issue1](issue1) link')) |
|
6336
6f89cdc7c938
issue2551108 - fix markdown formatted designator links
John Rouillard <rouilj@ieee.org>
parents:
6299
diff
changeset
|
819 self.assertIn( u2s(u'href="issue1"'), p.markdown().strip()) |
|
6f89cdc7c938
issue2551108 - fix markdown formatted designator links
John Rouillard <rouilj@ieee.org>
parents:
6299
diff
changeset
|
820 # just verify that plain linking is working |
|
6f89cdc7c938
issue2551108 - fix markdown formatted designator links
John Rouillard <rouilj@ieee.org>
parents:
6299
diff
changeset
|
821 self.assertIn( u2s(u'href="issue1"'), p.plain(hyperlink=1)) |
|
6f89cdc7c938
issue2551108 - fix markdown formatted designator links
John Rouillard <rouilj@ieee.org>
parents:
6299
diff
changeset
|
822 |
|
7561
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
823 p = StringHTMLProperty( |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
824 self.client, 'test', '1', None, 'test', |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
825 u2s(u'An [issue1](https://example.com/issue1) link')) |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
826 self.assertIn( u2s(u'href="https://example.com/issue1"'), |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
827 p.markdown().strip()) |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
828 |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
829 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
830 u2s(u'An [issu1](#example) link')) |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
831 self.assertIn( u2s(u'href="#example"'), p.markdown().strip()) |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
832 |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
833 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
834 u2s(u'An [issu1](/example) link')) |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
835 self.assertIn( u2s(u'href="/example"'), p.markdown().strip()) |
|
6336
6f89cdc7c938
issue2551108 - fix markdown formatted designator links
John Rouillard <rouilj@ieee.org>
parents:
6299
diff
changeset
|
836 |
|
7561
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
837 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
838 u2s(u'An [issu1](./example) link')) |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
839 self.assertIn( u2s(u'href="./example"'), p.markdown().strip()) |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
840 |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
841 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
842 u2s(u'An [issu1](../example) link')) |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
843 self.assertIn( u2s(u'href="../example"'), p.markdown().strip()) |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
844 |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
845 p = StringHTMLProperty( |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
846 self.client, 'test', '1', None, 'test', |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
847 u2s(u'A [wuarchive_ftp](ftp://www.wustl.gov/file) link')) |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
848 self.assertIn( u2s(u'href="ftp://www.wustl.gov/file"'), |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
849 p.markdown().strip()) |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
850 |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
851 p = StringHTMLProperty( |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
852 self.client, 'test', '1', None, 'test', |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
853 u2s(u'An [issue1] (https://example.com/issue1) link')) |
|
6336
6f89cdc7c938
issue2551108 - fix markdown formatted designator links
John Rouillard <rouilj@ieee.org>
parents:
6299
diff
changeset
|
854 self.assertIn( u2s(u'href="issue1"'), p.markdown().strip()) |
|
6f89cdc7c938
issue2551108 - fix markdown formatted designator links
John Rouillard <rouilj@ieee.org>
parents:
6299
diff
changeset
|
855 if type(self) == MistuneTestCase: |
|
6f89cdc7c938
issue2551108 - fix markdown formatted designator links
John Rouillard <rouilj@ieee.org>
parents:
6299
diff
changeset
|
856 # mistune makes the https url into a real link |
|
7561
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
857 self.assertIn( u2s(u'href="https://example.com/issue1"'), |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
858 p.markdown().strip()) |
|
6336
6f89cdc7c938
issue2551108 - fix markdown formatted designator links
John Rouillard <rouilj@ieee.org>
parents:
6299
diff
changeset
|
859 else: |
|
6f89cdc7c938
issue2551108 - fix markdown formatted designator links
John Rouillard <rouilj@ieee.org>
parents:
6299
diff
changeset
|
860 # the other two engines leave the parenthesized url as is. |
|
7561
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
861 self.assertIn( u2s(u' (https://example.com/issue1) link'), |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
862 p.markdown().strip()) |
|
6336
6f89cdc7c938
issue2551108 - fix markdown formatted designator links
John Rouillard <rouilj@ieee.org>
parents:
6299
diff
changeset
|
863 |
|
7561
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
864 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
865 u2s(u'An [issu1](.../example) link')) |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
866 if (isinstance(self, Markdown2TestCase) and |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
867 md2__version_info__ > (2, 4, 9)): |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
868 # markdown2 > 2.4.9 handles this differently |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
869 self.assertIn( u2s(u'href="#"'), p.markdown().strip()) |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
870 else: |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
871 self.assertIn( u2s(u'href=".../example"'), p.markdown().strip()) |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
872 |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
873 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
874 u2s(u'A [phone](tel:0016175555555) link')) |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
875 if (isinstance(self, Markdown2TestCase) and |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
876 md2__version_info__ > (2, 4, 9)): |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
877 self.assertIn(u2s(u'href="#"'), p.markdown().strip()) |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
878 else: |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
879 self.assertIn( u2s(u'href="tel:0016175555555"'), |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
880 p.markdown().strip()) |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
881 |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
882 def test_string_email_markdown_link(self): |
|
6109
b108c9fc7aea
fix test for Python 2
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6104
diff
changeset
|
883 # markdown2 and markdown escape the email address |
|
6104
a1fd9551d416
don't allow javascript URLs in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6103
diff
changeset
|
884 try: |
|
6109
b108c9fc7aea
fix test for Python 2
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6104
diff
changeset
|
885 from html import unescape as html_unescape |
|
b108c9fc7aea
fix test for Python 2
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6104
diff
changeset
|
886 except ImportError: |
|
6104
a1fd9551d416
don't allow javascript URLs in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6103
diff
changeset
|
887 from HTMLParser import HTMLParser |
|
a1fd9551d416
don't allow javascript URLs in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6103
diff
changeset
|
888 html_unescape = HTMLParser().unescape |
|
a1fd9551d416
don't allow javascript URLs in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6103
diff
changeset
|
889 |
|
7561
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
890 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
891 u2s(u'A link <cmeerw@example.com>')) |
|
6282
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
892 m = html_unescape(p.markdown().strip()) |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
893 m = self.mangleMarkdown2(m) |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
894 |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
895 self.assertEqual(m, u2s(u'<p>A link <a href="mailto:cmeerw@example.com">cmeerw@example.com</a></p>')) |
|
6104
a1fd9551d416
don't allow javascript URLs in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6103
diff
changeset
|
896 |
|
7561
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
897 p = StringHTMLProperty( |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
898 self.client, 'test', '1', None, 'test', |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
899 u2s(u'An bare email baduser@daemons.com link')) |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
900 m = self.mangleMarkdown2(html_unescape(p.markdown().strip())) |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
901 self.assertIn( u2s(u'href="mailto:baduser@daemons.com"'), |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
902 m) |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
903 |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
904 p = StringHTMLProperty( |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
905 self.client, 'test', '1', None, 'test', |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
906 u2s(u'An [email_url](mailto:baduser@daemons.com) link')) |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
907 m = self.mangleMarkdown2(html_unescape(p.markdown().strip())) |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
908 |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
909 if isinstance(self, MistuneTestCase): |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
910 self.assertIn('<a href="mailto:baduser@daemons.com" rel="nofollow noopener">email_url</a>', m) |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
911 else: |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
912 self.assertIn('<a href="mailto:baduser@daemons.com">email_url</a>', m) |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
913 |
|
6104
a1fd9551d416
don't allow javascript URLs in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6103
diff
changeset
|
914 def test_string_markdown_javascript_link(self): |
|
a1fd9551d416
don't allow javascript URLs in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6103
diff
changeset
|
915 # make sure we don't get a "javascript:" link |
|
a1fd9551d416
don't allow javascript URLs in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6103
diff
changeset
|
916 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', u2s(u'<javascript:alert(1)>')) |
|
a1fd9551d416
don't allow javascript URLs in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6103
diff
changeset
|
917 self.assertTrue(p.markdown().find('href="javascript:') == -1) |
|
a1fd9551d416
don't allow javascript URLs in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6103
diff
changeset
|
918 |
|
a1fd9551d416
don't allow javascript URLs in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6103
diff
changeset
|
919 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', u2s(u'[link](javascript:alert(1))')) |
|
a1fd9551d416
don't allow javascript URLs in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6103
diff
changeset
|
920 self.assertTrue(p.markdown().find('href="javascript:') == -1) |
|
6099
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
921 |
|
6284
3f7538316724
issue2551099 - disable processing of data url's in markdown.
John Rouillard <rouilj@ieee.org>
parents:
6282
diff
changeset
|
922 def test_string_markdown_data_link(self): |
|
3f7538316724
issue2551099 - disable processing of data url's in markdown.
John Rouillard <rouilj@ieee.org>
parents:
6282
diff
changeset
|
923 # make sure we don't get a "data:" link |
|
3f7538316724
issue2551099 - disable processing of data url's in markdown.
John Rouillard <rouilj@ieee.org>
parents:
6282
diff
changeset
|
924 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', u2s(u'<data:text/plain;base64,SGVsbG8sIFdvcmxkIQ==>')) |
|
3f7538316724
issue2551099 - disable processing of data url's in markdown.
John Rouillard <rouilj@ieee.org>
parents:
6282
diff
changeset
|
925 print(p.markdown()) |
|
3f7538316724
issue2551099 - disable processing of data url's in markdown.
John Rouillard <rouilj@ieee.org>
parents:
6282
diff
changeset
|
926 self.assertTrue(p.markdown().find('href="data:') == -1) |
|
3f7538316724
issue2551099 - disable processing of data url's in markdown.
John Rouillard <rouilj@ieee.org>
parents:
6282
diff
changeset
|
927 |
|
3f7538316724
issue2551099 - disable processing of data url's in markdown.
John Rouillard <rouilj@ieee.org>
parents:
6282
diff
changeset
|
928 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', u2s(u'[data link](data:text/plain;base64,SGVsbG8sIFdvcmxkIQ==)')) |
|
3f7538316724
issue2551099 - disable processing of data url's in markdown.
John Rouillard <rouilj@ieee.org>
parents:
6282
diff
changeset
|
929 print(p.markdown()) |
|
3f7538316724
issue2551099 - disable processing of data url's in markdown.
John Rouillard <rouilj@ieee.org>
parents:
6282
diff
changeset
|
930 self.assertTrue(p.markdown().find('href="data:') == -1) |
|
3f7538316724
issue2551099 - disable processing of data url's in markdown.
John Rouillard <rouilj@ieee.org>
parents:
6282
diff
changeset
|
931 |
|
6274
474de62f4ce0
Add test for hard linebreak fomatting in markdown
John Rouillard <rouilj@ieee.org>
parents:
6109
diff
changeset
|
932 |
|
474de62f4ce0
Add test for hard linebreak fomatting in markdown
John Rouillard <rouilj@ieee.org>
parents:
6109
diff
changeset
|
933 def test_string_markdown_forced_line_break(self): |
|
474de62f4ce0
Add test for hard linebreak fomatting in markdown
John Rouillard <rouilj@ieee.org>
parents:
6109
diff
changeset
|
934 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', u2s(u'This is a set of text \n:that should have a break \n:at newlines. Each \n:colon should be the start of an html line')) |
|
474de62f4ce0
Add test for hard linebreak fomatting in markdown
John Rouillard <rouilj@ieee.org>
parents:
6109
diff
changeset
|
935 # sigh different backends render this differently: |
|
474de62f4ce0
Add test for hard linebreak fomatting in markdown
John Rouillard <rouilj@ieee.org>
parents:
6109
diff
changeset
|
936 # of text <br /> |
|
474de62f4ce0
Add test for hard linebreak fomatting in markdown
John Rouillard <rouilj@ieee.org>
parents:
6109
diff
changeset
|
937 # of text<br> |
|
474de62f4ce0
Add test for hard linebreak fomatting in markdown
John Rouillard <rouilj@ieee.org>
parents:
6109
diff
changeset
|
938 # etc. |
|
474de62f4ce0
Add test for hard linebreak fomatting in markdown
John Rouillard <rouilj@ieee.org>
parents:
6109
diff
changeset
|
939 # Rather than using a different result for each |
|
474de62f4ce0
Add test for hard linebreak fomatting in markdown
John Rouillard <rouilj@ieee.org>
parents:
6109
diff
changeset
|
940 # renderer, look for '<br' and require three of them. |
|
474de62f4ce0
Add test for hard linebreak fomatting in markdown
John Rouillard <rouilj@ieee.org>
parents:
6109
diff
changeset
|
941 m = p.markdown() |
|
6282
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
942 print(m) |
|
6274
474de62f4ce0
Add test for hard linebreak fomatting in markdown
John Rouillard <rouilj@ieee.org>
parents:
6109
diff
changeset
|
943 self.assertEqual(3, m.count('<br')) |
|
474de62f4ce0
Add test for hard linebreak fomatting in markdown
John Rouillard <rouilj@ieee.org>
parents:
6109
diff
changeset
|
944 |
|
6099
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
945 def test_string_markdown_code_block(self): |
|
6275
bda491248fd8
Handle exception raised from markdown processing
John Rouillard <rouilj@ieee.org>
parents:
6274
diff
changeset
|
946 ''' also verify that embedded html is escaped ''' |
|
bda491248fd8
Handle exception raised from markdown processing
John Rouillard <rouilj@ieee.org>
parents:
6274
diff
changeset
|
947 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', u2s(u'embedded code block <pre>\n\n```\nline 1\nline 2\n```\n\nnew </pre> paragraph')) |
|
bda491248fd8
Handle exception raised from markdown processing
John Rouillard <rouilj@ieee.org>
parents:
6274
diff
changeset
|
948 self.assertEqual(p.markdown().strip().replace('\n\n', '\n'), u2s(u'<p>embedded code block <pre></p>\n<pre><code>line 1\nline 2\n</code></pre>\n<p>new </pre> paragraph</p>')) |
|
bda491248fd8
Handle exception raised from markdown processing
John Rouillard <rouilj@ieee.org>
parents:
6274
diff
changeset
|
949 |
|
bda491248fd8
Handle exception raised from markdown processing
John Rouillard <rouilj@ieee.org>
parents:
6274
diff
changeset
|
950 def test_string_markdown_code_block_attribute(self): |
|
6995
dc83ebff4c90
change test to use html normalizer when comparing html output.
John Rouillard <rouilj@ieee.org>
parents:
6992
diff
changeset
|
951 parser = NormalizingHtmlParser() |
|
6992
a5f30372ef7f
New markdown2 release changed output with code highlighting (take 2)
John Rouillard <rouilj@ieee.org>
parents:
6991
diff
changeset
|
952 |
|
6275
bda491248fd8
Handle exception raised from markdown processing
John Rouillard <rouilj@ieee.org>
parents:
6274
diff
changeset
|
953 ''' also verify that embedded html is escaped ''' |
|
bda491248fd8
Handle exception raised from markdown processing
John Rouillard <rouilj@ieee.org>
parents:
6274
diff
changeset
|
954 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', u2s(u'embedded code block <pre>\n\n``` python\nline 1\nline 2\n```\n\nnew </pre> paragraph')) |
|
6995
dc83ebff4c90
change test to use html normalizer when comparing html output.
John Rouillard <rouilj@ieee.org>
parents:
6992
diff
changeset
|
955 m = parser.normalize(p.markdown()) |
|
dc83ebff4c90
change test to use html normalizer when comparing html output.
John Rouillard <rouilj@ieee.org>
parents:
6992
diff
changeset
|
956 parser.reset() |
|
6275
bda491248fd8
Handle exception raised from markdown processing
John Rouillard <rouilj@ieee.org>
parents:
6274
diff
changeset
|
957 print(m) |
|
bda491248fd8
Handle exception raised from markdown processing
John Rouillard <rouilj@ieee.org>
parents:
6274
diff
changeset
|
958 if type(self) == MistuneTestCase: |
|
6995
dc83ebff4c90
change test to use html normalizer when comparing html output.
John Rouillard <rouilj@ieee.org>
parents:
6992
diff
changeset
|
959 self.assertEqual(m, parser.normalize('<p>embedded code block <pre></p>\n<pre><code class="lang-python">line 1\nline 2\n</code></pre>\n<p>new </pre> paragraph</p>')) |
|
6275
bda491248fd8
Handle exception raised from markdown processing
John Rouillard <rouilj@ieee.org>
parents:
6274
diff
changeset
|
960 elif type(self) == MarkdownTestCase: |
|
7561
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
961 self.assertEqual(m.replace('class="python"','class="language-python"'), parser.normalize('<p>embedded code block <pre></p>\n<pre><code class="language-python">line 1\nline 2\n</code></pre>\n<p>new </pre> paragraph</p>')) |
|
6279
9ec3a9bc4ea5
issue2551097 - fix call to markdown2 - fix fenced code blocks.
John Rouillard <rouilj@ieee.org>
parents:
6277
diff
changeset
|
962 else: |
|
6995
dc83ebff4c90
change test to use html normalizer when comparing html output.
John Rouillard <rouilj@ieee.org>
parents:
6992
diff
changeset
|
963 expected_result = parser.normalize('<p>embedded code block <pre></p>\n<div class="codehilite"><pre><span></span><code><span class="n">line</span> <span class="mi">1</span>\n<span class="n">line</span> <span class="mi">2</span>\n</code></pre></div>\n<p>new </pre> paragraph</p>') |
|
dc83ebff4c90
change test to use html normalizer when comparing html output.
John Rouillard <rouilj@ieee.org>
parents:
6992
diff
changeset
|
964 self.assertEqual(m, expected_result) |
|
6275
bda491248fd8
Handle exception raised from markdown processing
John Rouillard <rouilj@ieee.org>
parents:
6274
diff
changeset
|
965 |
|
6279
9ec3a9bc4ea5
issue2551097 - fix call to markdown2 - fix fenced code blocks.
John Rouillard <rouilj@ieee.org>
parents:
6277
diff
changeset
|
966 def test_markdown_return_text_on_exception(self): |
|
9ec3a9bc4ea5
issue2551097 - fix call to markdown2 - fix fenced code blocks.
John Rouillard <rouilj@ieee.org>
parents:
6277
diff
changeset
|
967 ''' string is invalid markdown. missing end of fenced code block ''' |
|
9ec3a9bc4ea5
issue2551097 - fix call to markdown2 - fix fenced code blocks.
John Rouillard <rouilj@ieee.org>
parents:
6277
diff
changeset
|
968 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', u2s(u'embedded code block <pre>\n\n``` python\nline 1\nline 2\n\n\nnew </pre> paragraph')) |
|
9ec3a9bc4ea5
issue2551097 - fix call to markdown2 - fix fenced code blocks.
John Rouillard <rouilj@ieee.org>
parents:
6277
diff
changeset
|
969 m = p.markdown().strip() |
|
9ec3a9bc4ea5
issue2551097 - fix call to markdown2 - fix fenced code blocks.
John Rouillard <rouilj@ieee.org>
parents:
6277
diff
changeset
|
970 print(m) |
|
9ec3a9bc4ea5
issue2551097 - fix call to markdown2 - fix fenced code blocks.
John Rouillard <rouilj@ieee.org>
parents:
6277
diff
changeset
|
971 self.assertEqual(m.replace('\n\n','\n'), '<p>embedded code block <pre></p>\n<p>``` python\nline 1\nline 2</p>\n<p>new </pre> paragraph</p>') |
|
9ec3a9bc4ea5
issue2551097 - fix call to markdown2 - fix fenced code blocks.
John Rouillard <rouilj@ieee.org>
parents:
6277
diff
changeset
|
972 |
|
9ec3a9bc4ea5
issue2551097 - fix call to markdown2 - fix fenced code blocks.
John Rouillard <rouilj@ieee.org>
parents:
6277
diff
changeset
|
973 def test_markdown_break_on_newline(self): |
|
6277
957a0fc20021
issue2551094 - markdown mismatch - new config for embedded newine
John Rouillard <rouilj@ieee.org>
parents:
6275
diff
changeset
|
974 self.client.db.config['MARKDOWN_BREAK_ON_NEWLINE'] = True |
|
957a0fc20021
issue2551094 - markdown mismatch - new config for embedded newine
John Rouillard <rouilj@ieee.org>
parents:
6275
diff
changeset
|
975 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', u2s(u'A string with\nline break\ntwice.')) |
|
957a0fc20021
issue2551094 - markdown mismatch - new config for embedded newine
John Rouillard <rouilj@ieee.org>
parents:
6275
diff
changeset
|
976 m = p.markdown() |
|
957a0fc20021
issue2551094 - markdown mismatch - new config for embedded newine
John Rouillard <rouilj@ieee.org>
parents:
6275
diff
changeset
|
977 self.assertEqual(2, m.count('<br')) |
|
957a0fc20021
issue2551094 - markdown mismatch - new config for embedded newine
John Rouillard <rouilj@ieee.org>
parents:
6275
diff
changeset
|
978 self.client.db.config['MARKDOWN_BREAK_ON_NEWLINE'] = False |
|
957a0fc20021
issue2551094 - markdown mismatch - new config for embedded newine
John Rouillard <rouilj@ieee.org>
parents:
6275
diff
changeset
|
979 |
|
957a0fc20021
issue2551094 - markdown mismatch - new config for embedded newine
John Rouillard <rouilj@ieee.org>
parents:
6275
diff
changeset
|
980 m = p.markdown() |
|
957a0fc20021
issue2551094 - markdown mismatch - new config for embedded newine
John Rouillard <rouilj@ieee.org>
parents:
6275
diff
changeset
|
981 self.assertEqual(0, m.count('<br')) |
|
957a0fc20021
issue2551094 - markdown mismatch - new config for embedded newine
John Rouillard <rouilj@ieee.org>
parents:
6275
diff
changeset
|
982 |
|
6280
6ed5152a92d0
issue2551096 - enable markdown autolink for email and bare url's.
John Rouillard <rouilj@ieee.org>
parents:
6279
diff
changeset
|
983 def test_markdown_hyperlinked_url(self): |
|
6ed5152a92d0
issue2551096 - enable markdown autolink for email and bare url's.
John Rouillard <rouilj@ieee.org>
parents:
6279
diff
changeset
|
984 # classic markdown does not emit a \n at end of rendered string |
|
6ed5152a92d0
issue2551096 - enable markdown autolink for email and bare url's.
John Rouillard <rouilj@ieee.org>
parents:
6279
diff
changeset
|
985 # so rstrip \n. |
|
6ed5152a92d0
issue2551096 - enable markdown autolink for email and bare url's.
John Rouillard <rouilj@ieee.org>
parents:
6279
diff
changeset
|
986 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', u2s(u'http://example.com/')) |
|
6ed5152a92d0
issue2551096 - enable markdown autolink for email and bare url's.
John Rouillard <rouilj@ieee.org>
parents:
6279
diff
changeset
|
987 m = p.markdown(hyperlink=1) |
|
6282
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
988 m = self.mangleMarkdown2(m) |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
989 print(m) |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
990 self.assertEqual(m.rstrip('\n'), '<p><a href="http://example.com/" rel="nofollow noopener">http://example.com/</a></p>') |
|
6280
6ed5152a92d0
issue2551096 - enable markdown autolink for email and bare url's.
John Rouillard <rouilj@ieee.org>
parents:
6279
diff
changeset
|
991 |
|
6ed5152a92d0
issue2551096 - enable markdown autolink for email and bare url's.
John Rouillard <rouilj@ieee.org>
parents:
6279
diff
changeset
|
992 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', u2s(u'<http://example.com/>')) |
|
6ed5152a92d0
issue2551096 - enable markdown autolink for email and bare url's.
John Rouillard <rouilj@ieee.org>
parents:
6279
diff
changeset
|
993 m = p.markdown(hyperlink=1) |
|
6282
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
994 m = self.mangleMarkdown2(m) |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
995 self.assertEqual(m.rstrip('\n'), '<p><a href="http://example.com/" rel="nofollow noopener">http://example.com/</a></p>') |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
996 |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
997 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', u2s(u'[label](http://example.com/ "a title")')) |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
998 m = p.markdown(hyperlink=1) |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
999 m = self.mangleMarkdown2(m) |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
1000 self.assertEqual(m.rstrip('\n'), '<p><a href="http://example.com/" rel="nofollow noopener" title="a title">label</a></p>') |
|
6280
6ed5152a92d0
issue2551096 - enable markdown autolink for email and bare url's.
John Rouillard <rouilj@ieee.org>
parents:
6279
diff
changeset
|
1001 |
|
6299
fd0bdcbc68e4
issue2551104 - fix issue with markdown autolink next to punctuation
John Rouillard <rouilj@ieee.org>
parents:
6284
diff
changeset
|
1002 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', u2s(u'[label](http://example.com/).')) |
|
fd0bdcbc68e4
issue2551104 - fix issue with markdown autolink next to punctuation
John Rouillard <rouilj@ieee.org>
parents:
6284
diff
changeset
|
1003 m = p.markdown(hyperlink=1) |
|
fd0bdcbc68e4
issue2551104 - fix issue with markdown autolink next to punctuation
John Rouillard <rouilj@ieee.org>
parents:
6284
diff
changeset
|
1004 m = self.mangleMarkdown2(m) |
|
fd0bdcbc68e4
issue2551104 - fix issue with markdown autolink next to punctuation
John Rouillard <rouilj@ieee.org>
parents:
6284
diff
changeset
|
1005 self.assertEqual(m.rstrip('\n'), '<p><a href="http://example.com/" rel="nofollow noopener">label</a>.</p>') |
|
fd0bdcbc68e4
issue2551104 - fix issue with markdown autolink next to punctuation
John Rouillard <rouilj@ieee.org>
parents:
6284
diff
changeset
|
1006 |
|
6280
6ed5152a92d0
issue2551096 - enable markdown autolink for email and bare url's.
John Rouillard <rouilj@ieee.org>
parents:
6279
diff
changeset
|
1007 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', u2s(u'')) |
|
6ed5152a92d0
issue2551096 - enable markdown autolink for email and bare url's.
John Rouillard <rouilj@ieee.org>
parents:
6279
diff
changeset
|
1008 m = p.markdown(hyperlink=1) |
|
6282
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
1009 m = self.mangleMarkdown2(m) |
|
6280
6ed5152a92d0
issue2551096 - enable markdown autolink for email and bare url's.
John Rouillard <rouilj@ieee.org>
parents:
6279
diff
changeset
|
1010 self.assertIn(m, [ |
|
6ed5152a92d0
issue2551096 - enable markdown autolink for email and bare url's.
John Rouillard <rouilj@ieee.org>
parents:
6279
diff
changeset
|
1011 '<p><img src="http://example.com/" alt=""/></p>\n', |
|
6ed5152a92d0
issue2551096 - enable markdown autolink for email and bare url's.
John Rouillard <rouilj@ieee.org>
parents:
6279
diff
changeset
|
1012 '<p><img src="http://example.com/" alt="" /></p>\n', |
|
6ed5152a92d0
issue2551096 - enable markdown autolink for email and bare url's.
John Rouillard <rouilj@ieee.org>
parents:
6279
diff
changeset
|
1013 '<p><img src="http://example.com/" alt=""></p>\n', |
|
6ed5152a92d0
issue2551096 - enable markdown autolink for email and bare url's.
John Rouillard <rouilj@ieee.org>
parents:
6279
diff
changeset
|
1014 '<p><img alt="" src="http://example.com/" /></p>', # markdown |
|
6ed5152a92d0
issue2551096 - enable markdown autolink for email and bare url's.
John Rouillard <rouilj@ieee.org>
parents:
6279
diff
changeset
|
1015 ]) |
|
6ed5152a92d0
issue2551096 - enable markdown autolink for email and bare url's.
John Rouillard <rouilj@ieee.org>
parents:
6279
diff
changeset
|
1016 |
|
6ed5152a92d0
issue2551096 - enable markdown autolink for email and bare url's.
John Rouillard <rouilj@ieee.org>
parents:
6279
diff
changeset
|
1017 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', u2s(u'An URL http://example.com/ with text')) |
|
6ed5152a92d0
issue2551096 - enable markdown autolink for email and bare url's.
John Rouillard <rouilj@ieee.org>
parents:
6279
diff
changeset
|
1018 m = p.markdown(hyperlink=1) |
|
6282
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
1019 m = self.mangleMarkdown2(m) |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
1020 self.assertEqual(m.rstrip('\n'), '<p>An URL <a href="http://example.com/" rel="nofollow noopener">http://example.com/</a> with text</p>') |
|
6280
6ed5152a92d0
issue2551096 - enable markdown autolink for email and bare url's.
John Rouillard <rouilj@ieee.org>
parents:
6279
diff
changeset
|
1021 |
|
6ed5152a92d0
issue2551096 - enable markdown autolink for email and bare url's.
John Rouillard <rouilj@ieee.org>
parents:
6279
diff
changeset
|
1022 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', u2s(u'An URL https://example.com/path with text')) |
|
6ed5152a92d0
issue2551096 - enable markdown autolink for email and bare url's.
John Rouillard <rouilj@ieee.org>
parents:
6279
diff
changeset
|
1023 m = p.markdown(hyperlink=1) |
|
6282
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
1024 m = self.mangleMarkdown2(m) |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
1025 self.assertEqual(m.rstrip('\n'), '<p>An URL <a href="https://example.com/path" rel="nofollow noopener">https://example.com/path</a> with text</p>') |
|
6099
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1026 |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1027 @skip_mistune |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1028 class MistuneTestCase(TemplatingTestCase, MarkdownTests) : |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1029 def setUp(self): |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1030 TemplatingTestCase.setUp(self) |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1031 |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1032 from roundup.cgi import templating |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1033 self.__markdown = templating.markdown |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1034 templating.markdown = templating._import_mistune() |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1035 |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1036 def tearDown(self): |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1037 from roundup.cgi import templating |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1038 templating.markdown = self.__markdown |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1039 |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1040 @skip_markdown2 |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1041 class Markdown2TestCase(TemplatingTestCase, MarkdownTests) : |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1042 def setUp(self): |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1043 TemplatingTestCase.setUp(self) |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1044 |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1045 from roundup.cgi import templating |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1046 self.__markdown = templating.markdown |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1047 templating.markdown = templating._import_markdown2() |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1048 |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1049 def tearDown(self): |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1050 from roundup.cgi import templating |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1051 templating.markdown = self.__markdown |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1052 |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1053 @skip_markdown |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1054 class MarkdownTestCase(TemplatingTestCase, MarkdownTests) : |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1055 def setUp(self): |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1056 TemplatingTestCase.setUp(self) |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1057 |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1058 from roundup.cgi import templating |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1059 self.__markdown = templating.markdown |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1060 templating.markdown = templating._import_markdown() |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1061 |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1062 def tearDown(self): |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1063 from roundup.cgi import templating |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1064 templating.markdown = self.__markdown |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1065 |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1066 |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1067 class NoMarkdownTestCase(TemplatingTestCase) : |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1068 def setUp(self): |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1069 TemplatingTestCase.setUp(self) |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1070 |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1071 from roundup.cgi import templating |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1072 self.__markdown = templating.markdown |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1073 templating.markdown = None |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1074 |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1075 def tearDown(self): |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1076 from roundup.cgi import templating |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1077 templating.markdown = self.__markdown |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1078 |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1079 def test_string_markdown(self): |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1080 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', u2s(u'A string http://localhost with cmeerw@example.com <br> *embedded* \u00df')) |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1081 self.assertEqual(p.markdown(), u2s(u'A string <a href="http://localhost" rel="nofollow noopener">http://localhost</a> with <a href="mailto:cmeerw@example.com">cmeerw@example.com</a> <br> *embedded* \u00df')) |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1082 |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1083 class NoRstTestCase(TemplatingTestCase) : |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1084 def setUp(self): |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1085 TemplatingTestCase.setUp(self) |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1086 |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1087 from roundup.cgi import templating |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1088 self.__ReStructuredText = templating.ReStructuredText |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1089 templating.ReStructuredText = None |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1090 |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1091 def tearDown(self): |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1092 from roundup.cgi import templating |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1093 templating.ReStructuredText = self.__ReStructuredText |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1094 |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1095 def test_string_rst(self): |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1096 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', u2s(u'A string with cmeerw@example.com *embedded* \u00df')) |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1097 self.assertEqual(p.rst(), u2s(u'A string with <a href="mailto:cmeerw@example.com">cmeerw@example.com</a> *embedded* \u00df')) |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1098 |
|
7866
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1099 class ZUtilsTestcase(TemplatingTestCase): |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1100 |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1101 def test_Iterator(self): |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1102 """Test all the iterator functions and properties. |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1103 """ |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1104 sequence = ['one', 'two', '3', 4] |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1105 i = Iterator(sequence) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1106 for j in [ # element, item, 1st, last, even, odd, number, |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1107 # letter, Letter, roman, Roman |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1108 (1, "one", 1, 0, True, 0, 1, 'a', 'A', 'i', 'I'), |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1109 (1, "two", 0, 0, False, 1, 2, 'b', 'B', 'ii', 'II'), |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1110 (1, "3", 0, 0, True, 0, 3, 'c', 'C', 'iii', 'III'), |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1111 (1, 4, 0, 1, False, 1, 4, 'd', 'D', 'iv', 'IV'), |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1112 # next() fails with 0 when past end of sequence |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1113 # everything else is left at end of sequence |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1114 (0, 4, 0, 1, False, 1, 4, 'd', 'D', 'iv', 'IV'), |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1115 |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1116 |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1117 ]: |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1118 element = i.next() # returns 1 if next item else 0 |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1119 print(i.item) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1120 self.assertEqual(element, j[0]) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1121 self.assertEqual(i.item, j[1]) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1122 self.assertEqual(i.first(), j[2]) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1123 self.assertEqual(i.start, j[2]) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1124 self.assertEqual(i.last(), j[3]) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1125 self.assertEqual(i.end, j[3]) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1126 self.assertIs(i.even(), j[4]) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1127 self.assertEqual(i.odd(), j[5]) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1128 self.assertEqual(i.number(), j[6]) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1129 self.assertEqual(i.index, j[6] - 1) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1130 self.assertEqual(i.nextIndex, j[6]) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1131 self.assertEqual(i.letter(), j[7]) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1132 self.assertEqual(i.Letter(), j[8]) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1133 self.assertEqual(i.roman(), j[9]) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1134 self.assertEqual(i.Roman(), j[10]) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1135 |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1136 class I: |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1137 def __init__(self, name, data): |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1138 self.name = name |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1139 self.data = data |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1140 |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1141 sequence = [I('Al', 'd'), |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1142 I('Bob', 'e'), |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1143 I('Bob', 'd'), |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1144 I('Chip', 'd') |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1145 ] |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1146 |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1147 iterator = iter(sequence) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1148 |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1149 # Iterator is supposed take both sequence and Python iterator. |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1150 for source in [sequence, iterator]: |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1151 i = Iterator(source) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1152 |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1153 element = i.next() # returns 1 if next item else 0 |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1154 item1 = i.item |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1155 |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1156 # note these can trigger calls by first/last to same_part(). |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1157 # It can return true for first/last even when there are more |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1158 # items in the sequence. I am just testing the current |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1159 # implementation. Woe to the person who tries to change |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1160 # Iterator.py. |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1161 |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1162 self.assertEqual(element, 1) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1163 # i.start == 1, so it bypasses name check |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1164 self.assertEqual(i.first(name='namea'), 1) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1165 self.assertEqual(i.first(name='name'), 1) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1166 # i.end == 0 so it uses name check in object |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1167 self.assertEqual(i.last(name='namea'), 0) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1168 self.assertEqual(i.last(name='name'), 0) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1169 |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1170 element = i.next() # returns 1 if next item else 0 |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1171 item2 = i.item |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1172 self.assertEqual(element, 1) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1173 # i.start == 0 so it uses name check |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1174 # between item1 and item2 |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1175 self.assertEqual(i.first(name='namea'), 0) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1176 self.assertEqual(i.first(name='name'), 0) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1177 # i.end == 0 so it uses name check in object |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1178 # between item2 and the next item item3 |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1179 self.assertEqual(i.last(name='namea'), 0) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1180 self.assertEqual(i.last(name='name'), True) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1181 |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1182 element = i.next() # returns 1 if next item else 0 |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1183 item3 = i.item |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1184 self.assertEqual(element, 1) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1185 # i.start == 0 so it uses name check |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1186 self.assertEqual(i.first(name='namea'), 0) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1187 self.assertEqual(i.first(name='name'), 1) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1188 # i.end == 0 so it uses name check in object |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1189 # between item3 and the next item item4 |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1190 self.assertEqual(i.last(name='namea'), 0) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1191 self.assertEqual(i.last(name='name'), 0) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1192 |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1193 element = i.next() # returns 1 if next item else 0 |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1194 item4 = i.item |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1195 self.assertEqual(element, 1) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1196 # i.start == 0 so it uses name check |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1197 self.assertEqual(i.first(name='namea'), 0) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1198 self.assertEqual(i.first(name='name'), 0) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1199 # i.end == 0 so it uses name check in object |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1200 # last two object have same name (1) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1201 self.assertEqual(i.last(name='namea'), 1) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1202 self.assertEqual(i.last(name='name'), 1) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1203 |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1204 element = i.next() # returns 1 if next item else 0 |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1205 self.assertEqual(element, 0) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1206 |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1207 # this is the underlying call for first/last |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1208 # when i.start/i.end are 0 |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1209 # use non-existing attribute name, same item |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1210 self.assertIs(i.same_part('namea', item2, item2), False) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1211 # use correct attribute name |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1212 self.assertIs(i.same_part('name', item2, item2), True) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1213 # use no attribute name |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1214 self.assertIs(i.same_part(None, item2, item2), True) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1215 |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1216 # use non-existing attribute name, different item |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1217 # non-matching names |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1218 self.assertIs(i.same_part('namea', item1, item2), False) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1219 # use correct attribute name |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1220 self.assertIs(i.same_part('name', item1, item2), False) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1221 # use no attribute name |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1222 self.assertIs(i.same_part(None, item1, item2), False) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1223 |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1224 # use non-existing attribute name, different item |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1225 # matching names |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1226 self.assertIs(i.same_part('namea', item2, item3), False) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1227 # use correct attribute name |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1228 self.assertIs(i.same_part('name', item2, item3), True) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1229 # use no attribute name |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1230 self.assertIs(i.same_part(None, item2, item3), False) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1231 |
|
5815
fe35a232c6dc
Make comment block raw to avoid travis ci warning on \d in comment block.
John Rouillard <rouilj@ieee.org>
parents:
5811
diff
changeset
|
1232 r''' |
|
2158
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1233 class HTMLPermissions: |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1234 def is_edit_ok(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1235 def is_view_ok(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1236 def is_only_view_ok(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1237 def view_check(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1238 def edit_check(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1239 |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1240 def input_html4(**attrs): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1241 def input_xhtml(**attrs): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1242 |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1243 class HTMLInputMixin: |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1244 def __init__(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1245 |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1246 class HTMLClass(HTMLInputMixin, HTMLPermissions): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1247 def __init__(self, client, classname, anonymous=0): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1248 def __repr__(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1249 def __getitem__(self, item): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1250 def __getattr__(self, attr): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1251 def designator(self): |
|
5811
7d276bb8b46d
More invalid escape sequence fixes.
John Rouillard <rouilj@ieee.org>
parents:
5795
diff
changeset
|
1252 def getItem(self, itemid, num_re=re.compile(r'-?\d+')): |
|
5226
578e86e015f9
Changed function signature for properties to correspond to checkin:
John Rouillard <rouilj@ieee.org>
parents:
5211
diff
changeset
|
1253 def properties(self, sort=1, cansearch=True): |
|
2158
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1254 def list(self, sort_on=None): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1255 def csv(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1256 def propnames(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1257 def filter(self, request=None, filterspec={}, sort=(None,None), |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1258 def classhelp(self, properties=None, label='(list)', width='500', |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1259 def submit(self, label="Submit New Entry"): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1260 def history(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1261 def renderWith(self, name, **kwargs): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1262 |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1263 class HTMLItem(HTMLInputMixin, HTMLPermissions): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1264 def __init__(self, client, classname, nodeid, anonymous=0): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1265 def __repr__(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1266 def __getitem__(self, item): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1267 def __getattr__(self, attr): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1268 def designator(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1269 def is_retired(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1270 def submit(self, label="Submit Changes"): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1271 def journal(self, direction='descending'): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1272 def history(self, direction='descending', dre=re.compile('\d+')): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1273 def renderQueryForm(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1274 |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1275 class HTMLUserPermission: |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1276 def is_edit_ok(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1277 def is_view_ok(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1278 def _user_perm_check(self, type): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1279 |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1280 class HTMLUserClass(HTMLUserPermission, HTMLClass): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1281 |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1282 class HTMLUser(HTMLUserPermission, HTMLItem): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1283 def __init__(self, client, classname, nodeid, anonymous=0): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1284 def hasPermission(self, permission, classname=_marker): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1285 |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1286 class HTMLProperty(HTMLInputMixin, HTMLPermissions): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1287 def __init__(self, client, classname, nodeid, prop, name, value, |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1288 def __repr__(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1289 def __str__(self): |
|
5414
3fa026621f69
Python 3 preparation: comparisons.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5388
diff
changeset
|
1290 def __lt__(self, other): |
|
3fa026621f69
Python 3 preparation: comparisons.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5388
diff
changeset
|
1291 def __le__(self, other): |
|
3fa026621f69
Python 3 preparation: comparisons.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5388
diff
changeset
|
1292 def __eq__(self, other): |
|
3fa026621f69
Python 3 preparation: comparisons.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5388
diff
changeset
|
1293 def __ne__(self, other): |
|
3fa026621f69
Python 3 preparation: comparisons.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5388
diff
changeset
|
1294 def __gt__(self, other): |
|
3fa026621f69
Python 3 preparation: comparisons.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5388
diff
changeset
|
1295 def __ge__(self, other): |
|
2158
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1296 def is_edit_ok(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1297 def is_view_ok(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1298 |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1299 class StringHTMLProperty(HTMLProperty): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1300 def _hyper_repl(self, match): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1301 def hyperlinked(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1302 def plain(self, escape=0, hyperlink=0): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1303 def stext(self, escape=0): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1304 def field(self, size = 30): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1305 def multiline(self, escape=0, rows=5, cols=40): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1306 def email(self, escape=1): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1307 |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1308 class PasswordHTMLProperty(HTMLProperty): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1309 def plain(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1310 def field(self, size = 30): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1311 def confirm(self, size = 30): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1312 |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1313 class NumberHTMLProperty(HTMLProperty): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1314 def plain(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1315 def field(self, size = 30): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1316 def __int__(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1317 def __float__(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1318 |
|
5067
e424987d294a
Add support for an integer type to join the existing number type.
John Rouillard <rouilj@ieee.org>
parents:
5037
diff
changeset
|
1319 class IntegerHTMLProperty(HTMLProperty): |
|
e424987d294a
Add support for an integer type to join the existing number type.
John Rouillard <rouilj@ieee.org>
parents:
5037
diff
changeset
|
1320 def plain(self): |
|
e424987d294a
Add support for an integer type to join the existing number type.
John Rouillard <rouilj@ieee.org>
parents:
5037
diff
changeset
|
1321 def field(self, size = 30): |
|
e424987d294a
Add support for an integer type to join the existing number type.
John Rouillard <rouilj@ieee.org>
parents:
5037
diff
changeset
|
1322 def __int__(self): |
|
e424987d294a
Add support for an integer type to join the existing number type.
John Rouillard <rouilj@ieee.org>
parents:
5037
diff
changeset
|
1323 |
|
2158
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1324 class BooleanHTMLProperty(HTMLProperty): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1325 def plain(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1326 def field(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1327 |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1328 class DateHTMLProperty(HTMLProperty): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1329 def plain(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1330 def now(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1331 def field(self, size = 30): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1332 def reldate(self, pretty=1): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1333 def pretty(self, format=_marker): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1334 def local(self, offset): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1335 |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1336 class IntervalHTMLProperty(HTMLProperty): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1337 def plain(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1338 def pretty(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1339 def field(self, size = 30): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1340 |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1341 class LinkHTMLProperty(HTMLProperty): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1342 def __init__(self, *args, **kw): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1343 def __getattr__(self, attr): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1344 def plain(self, escape=0): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1345 def field(self, showid=0, size=None): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1346 def menu(self, size=None, height=None, showid=0, additional=[], |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1347 |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1348 class MultilinkHTMLProperty(HTMLProperty): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1349 def __init__(self, *args, **kwargs): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1350 def __len__(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1351 def __getattr__(self, attr): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1352 def __getitem__(self, num): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1353 def __contains__(self, value): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1354 def reverse(self): |
|
5903
c3728772c594
Add reverse option to hyperdb property wrapper by David Sowder
John Rouillard <rouilj@ieee.org>
parents:
5815
diff
changeset
|
1355 def sorted(self, property, reverse=False): |
|
2158
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1356 def plain(self, escape=0): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1357 def field(self, size=30, showid=0): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1358 def menu(self, size=None, height=None, showid=0, additional=[], |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1359 |
|
5414
3fa026621f69
Python 3 preparation: comparisons.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5388
diff
changeset
|
1360 def make_key_function(db, classname, sort_on=None): |
|
3fa026621f69
Python 3 preparation: comparisons.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5388
diff
changeset
|
1361 def keyfunc(a): |
|
2158
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1362 |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1363 def find_sort_key(linkcl): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1364 |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1365 def handleListCGIValue(value): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1366 |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1367 class ShowDict: |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1368 def __init__(self, columns): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1369 def __getitem__(self, name): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1370 |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1371 class HTMLRequest(HTMLInputMixin): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1372 def __init__(self, client): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1373 def _post_init(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1374 def updateFromURL(self, url): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1375 def update(self, kwargs): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1376 def description(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1377 def __str__(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1378 def indexargs_form(self, columns=1, sort=1, group=1, filter=1, |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1379 def indexargs_url(self, url, args): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1380 def base_javascript(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1381 def batch(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1382 |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1383 class Batch(ZTUtils.Batch): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1384 def __init__(self, client, sequence, size, start, end=0, orphan=0, |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1385 def __getitem__(self, index): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1386 def propchanged(self, property): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1387 def previous(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1388 def next(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1389 |
|
5201
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
1390 #class TemplatingUtils: |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
1391 # def __init__(self, client): |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
1392 # def Batch(self, sequence, size, start, end=0, orphan=0, overlap=0): |
|
2158
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1393 |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1394 class NoTemplate(Exception): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1395 class Unauthorised(Exception): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1396 def __init__(self, action, klass): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1397 def __str__(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1398 |
|
4720
fd72576e07ed
API break: rename Templates to Loader for zopetal and chameleon
anatoly techtonik <techtonik@gmail.com>
parents:
4647
diff
changeset
|
1399 class Loader: |
|
2158
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1400 def __init__(self, dir): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1401 def precompileTemplates(self): |
|
4727
5033c2ad80a7
templating: Rename LoaderBase.get() to LoaderBase.load() for clarity
anatoly techtonik <techtonik@gmail.com>
parents:
4720
diff
changeset
|
1402 def load(self, name, extension=None): |
|
2158
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1403 def __getitem__(self, name): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1404 |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1405 class RoundupPageTemplate(PageTemplate.PageTemplate): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1406 def getContext(self, client, classname, request): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1407 def render(self, client, classname, request, **options): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1408 def __repr__(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1409 ''' |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1410 |
|
2716
305d346f8f3b
disable invalid assertions
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2158
diff
changeset
|
1411 # vim: set et sts=4 sw=4 : |
