Mercurial > p > roundup > code
annotate test/db_test_base.py @ 5753:486824f4455a
Dump results of test. Getting intermittent failure from
testJournalNonexistingProperty test when running against sqlite
database. This may be a sort issue if sorting by date of journal
entry, there may not be enough precision to sort consistently. It
only occurs in 3.5 python so there may be something there as well.
| author | John Rouillard <rouilj@ieee.org> |
|---|---|
| date | Sat, 01 Jun 2019 17:28:33 -0400 |
| parents | 6923225fd781 |
| children | 28141c7dfc19 |
| rev | line source |
|---|---|
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1 # |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2 # Copyright (c) 2001 Bizar Software Pty Ltd (http://www.bizarsoftware.com.au/) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3 # This module is free software, and you may redistribute it and/or modify |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
4 # under the same terms as Python, so long as this copyright message and |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
5 # disclaimer are retained in their original form. |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
6 # |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
7 # IN NO EVENT SHALL BIZAR SOFTWARE PTY LTD BE LIABLE TO ANY PARTY FOR |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
8 # DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
9 # OUT OF THE USE OF THIS CODE, EVEN IF THE AUTHOR HAS BEEN ADVISED OF THE |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
10 # POSSIBILITY OF SUCH DAMAGE. |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
11 # |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
12 # BIZAR SOFTWARE PTY LTD SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
13 # BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
14 # FOR A PARTICULAR PURPOSE. THE CODE PROVIDED HEREUNDER IS ON AN "AS IS" |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
15 # BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE, |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
16 # SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
17 |
|
5376
64b05e24dbd8
Python 3 preparation: convert print to a function.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5330
diff
changeset
|
18 from __future__ import print_function |
|
4089
eddb82d0964c
Add compatibility package to allow us to deal with Python versions 2.3..2.6.
Richard Jones <richard@users.sourceforge.net>
parents:
4082
diff
changeset
|
19 import unittest, os, shutil, errno, imp, sys, time, pprint, base64, os.path |
|
5310
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
20 import logging, cgi |
|
5388
d26921b851c3
Python 3 preparation: make relative imports explicit.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5381
diff
changeset
|
21 from . import gpgmelib |
|
5494
b7fa56ced601
use gpg module instead of pyme module for PGP encryption
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5493
diff
changeset
|
22 from email import message_from_string |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
23 |
|
5036
380d8d8b30a3
Replace existing run_tests.py script with a pytest script
John Kristensen <john@jerrykan.com>
parents:
5033
diff
changeset
|
24 import pytest |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
25 from roundup.hyperdb import String, Password, Link, Multilink, Date, \ |
|
5067
e424987d294a
Add support for an integer type to join the existing number type.
John Rouillard <rouilj@ieee.org>
parents:
5041
diff
changeset
|
26 Interval, DatabaseError, Boolean, Number, Node, Integer |
|
3882
46ef2a6fd79d
config option to limit nosy attachments based on size
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3872
diff
changeset
|
27 from roundup.mailer import Mailer |
|
4407
f6a2bfd351ee
force tests checking text output to work in the "C" locale
Richard Jones <richard@users.sourceforge.net>
parents:
4365
diff
changeset
|
28 from roundup import date, password, init, instance, configuration, \ |
|
5110
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
29 roundupdb, i18n, hyperdb |
|
4878
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
30 from roundup.cgi.templating import HTMLItem |
|
5310
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
31 from roundup.cgi.templating import HTMLProperty, _HTMLItem, anti_csrf_nonce |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
32 from roundup.cgi import client, actions |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
33 from roundup.cgi.engine_zopetal import RoundupPageTemplate |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
34 from roundup.cgi.templating import HTMLItem |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
35 from roundup.exceptions import UsageError, Reject |
|
2514
091711fb2f8c
Initial logging integration: replace all debug prints with logging calls...
Richard Jones <richard@users.sourceforge.net>
parents:
2508
diff
changeset
|
36 |
|
5476
b0048969990d
encoding fixes in test cases
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5469
diff
changeset
|
37 from roundup.anypy.strings import b2s, s2b, u2s |
|
5481
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5476
diff
changeset
|
38 from roundup.anypy.cmp_ import NoneAndDictComparable |
|
5494
b7fa56ced601
use gpg module instead of pyme module for PGP encryption
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5493
diff
changeset
|
39 from roundup.anypy.email_ import message_from_bytes |
|
5468
0cde8a595893
fix tests for Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5395
diff
changeset
|
40 |
|
5388
d26921b851c3
Python 3 preparation: make relative imports explicit.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5381
diff
changeset
|
41 from .mocknull import MockNull |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
42 |
|
2680
c26a9a5a25d2
rdbms backends require new config object. make one.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2605
diff
changeset
|
43 config = configuration.CoreConfig() |
|
3546
a4edd24c32be
test fixes and checking of indexer overwrites (xapian currently fails)
Richard Jones <richard@users.sourceforge.net>
parents:
3525
diff
changeset
|
44 config.DATABASE = "db" |
|
2680
c26a9a5a25d2
rdbms backends require new config object. make one.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2605
diff
changeset
|
45 config.RDBMS_NAME = "rounduptest" |
|
c26a9a5a25d2
rdbms backends require new config object. make one.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2605
diff
changeset
|
46 config.RDBMS_HOST = "localhost" |
|
c26a9a5a25d2
rdbms backends require new config object. make one.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2605
diff
changeset
|
47 config.RDBMS_USER = "rounduptest" |
|
c26a9a5a25d2
rdbms backends require new config object. make one.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2605
diff
changeset
|
48 config.RDBMS_PASSWORD = "rounduptest" |
|
4480
1613754d2646
Fix first part of Password handling security issue2550688
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4472
diff
changeset
|
49 config.RDBMS_TEMPLATE = "template0" |
|
2820
da2a9175eb83
tracker setup put in separate function for use in other test suites
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2754
diff
changeset
|
50 # these TRACKER_WEB and MAIL_DOMAIN values are used in mailgw tests |
|
da2a9175eb83
tracker setup put in separate function for use in other test suites
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2754
diff
changeset
|
51 config.MAIL_DOMAIN = "your.tracker.email.domain.example" |
|
da2a9175eb83
tracker setup put in separate function for use in other test suites
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2754
diff
changeset
|
52 config.TRACKER_WEB = "http://tracker.example/cgi-bin/roundup.cgi/bugs/" |
|
da2a9175eb83
tracker setup put in separate function for use in other test suites
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2754
diff
changeset
|
53 # uncomment the following to have excessive debug output from test cases |
|
da2a9175eb83
tracker setup put in separate function for use in other test suites
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2754
diff
changeset
|
54 # FIXME: tracker logging level should be increased by -v arguments |
|
da2a9175eb83
tracker setup put in separate function for use in other test suites
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2754
diff
changeset
|
55 # to 'run_tests.py' script |
|
3247
e629e0057136
disable file logging [SF#1155649]
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
3155
diff
changeset
|
56 #config.LOGGING_FILENAME = "/tmp/logfile" |
|
e629e0057136
disable file logging [SF#1155649]
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
3155
diff
changeset
|
57 #config.LOGGING_LEVEL = "DEBUG" |
|
3155
57b60bda9473
Python 2.3 minimum version - bye bye roundup.rlog, you had a short life.
Richard Jones <richard@users.sourceforge.net>
parents:
3147
diff
changeset
|
58 config.init_logging() |
|
2820
da2a9175eb83
tracker setup put in separate function for use in other test suites
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2754
diff
changeset
|
59 |
|
da2a9175eb83
tracker setup put in separate function for use in other test suites
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2754
diff
changeset
|
60 def setupTracker(dirname, backend="anydbm"): |
|
da2a9175eb83
tracker setup put in separate function for use in other test suites
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2754
diff
changeset
|
61 """Install and initialize new tracker in dirname; return tracker instance. |
|
da2a9175eb83
tracker setup put in separate function for use in other test suites
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2754
diff
changeset
|
62 |
|
da2a9175eb83
tracker setup put in separate function for use in other test suites
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2754
diff
changeset
|
63 If the directory exists, it is wiped out before the operation. |
|
da2a9175eb83
tracker setup put in separate function for use in other test suites
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2754
diff
changeset
|
64 |
|
da2a9175eb83
tracker setup put in separate function for use in other test suites
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2754
diff
changeset
|
65 """ |
|
da2a9175eb83
tracker setup put in separate function for use in other test suites
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2754
diff
changeset
|
66 global config |
|
da2a9175eb83
tracker setup put in separate function for use in other test suites
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2754
diff
changeset
|
67 try: |
|
da2a9175eb83
tracker setup put in separate function for use in other test suites
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2754
diff
changeset
|
68 shutil.rmtree(dirname) |
|
5248
198b6e810c67
Use Python-3-compatible 'as' syntax for except statements
Eric S. Raymond <esr@thyrsus.com>
parents:
5235
diff
changeset
|
69 except OSError as error: |
|
2820
da2a9175eb83
tracker setup put in separate function for use in other test suites
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2754
diff
changeset
|
70 if error.errno not in (errno.ENOENT, errno.ESRCH): raise |
|
da2a9175eb83
tracker setup put in separate function for use in other test suites
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2754
diff
changeset
|
71 # create the instance |
|
4082
5eb5f7e66c37
Adjust to new location for templates in source tree.
Stefan Seefeld <stefan@seefeld.name>
parents:
4005
diff
changeset
|
72 init.install(dirname, os.path.join(os.path.dirname(__file__), |
|
5eb5f7e66c37
Adjust to new location for templates in source tree.
Stefan Seefeld <stefan@seefeld.name>
parents:
4005
diff
changeset
|
73 '..', |
|
5eb5f7e66c37
Adjust to new location for templates in source tree.
Stefan Seefeld <stefan@seefeld.name>
parents:
4005
diff
changeset
|
74 'share', |
|
5eb5f7e66c37
Adjust to new location for templates in source tree.
Stefan Seefeld <stefan@seefeld.name>
parents:
4005
diff
changeset
|
75 'roundup', |
|
5eb5f7e66c37
Adjust to new location for templates in source tree.
Stefan Seefeld <stefan@seefeld.name>
parents:
4005
diff
changeset
|
76 'templates', |
|
5eb5f7e66c37
Adjust to new location for templates in source tree.
Stefan Seefeld <stefan@seefeld.name>
parents:
4005
diff
changeset
|
77 'classic')) |
|
5041
5251e97b1de0
Configure the database backend in the config.ini
John Kristensen <john@jerrykan.com>
parents:
5036
diff
changeset
|
78 config.RDBMS_BACKEND = backend |
|
2820
da2a9175eb83
tracker setup put in separate function for use in other test suites
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2754
diff
changeset
|
79 config.save(os.path.join(dirname, 'config.ini')) |
|
da2a9175eb83
tracker setup put in separate function for use in other test suites
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2754
diff
changeset
|
80 tracker = instance.open(dirname) |
|
da2a9175eb83
tracker setup put in separate function for use in other test suites
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2754
diff
changeset
|
81 if tracker.exists(): |
|
da2a9175eb83
tracker setup put in separate function for use in other test suites
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2754
diff
changeset
|
82 tracker.nuke() |
|
da2a9175eb83
tracker setup put in separate function for use in other test suites
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2754
diff
changeset
|
83 tracker.init(password.Password('sekrit')) |
|
da2a9175eb83
tracker setup put in separate function for use in other test suites
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2754
diff
changeset
|
84 return tracker |
|
2680
c26a9a5a25d2
rdbms backends require new config object. make one.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2605
diff
changeset
|
85 |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
86 def setupSchema(db, create, module): |
|
4850
6998ad77841e
Fix bug in SQL generation
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4849
diff
changeset
|
87 mls = module.Class(db, "mls", name=String()) |
|
6998ad77841e
Fix bug in SQL generation
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4849
diff
changeset
|
88 mls.setkey("name") |
|
6998ad77841e
Fix bug in SQL generation
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4849
diff
changeset
|
89 status = module.Class(db, "status", name=String(), mls=Multilink("mls")) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
90 status.setkey("name") |
|
2318
fa2f7ba34399
merge from maint-0-7
Richard Jones <richard@users.sourceforge.net>
parents:
2255
diff
changeset
|
91 priority = module.Class(db, "priority", name=String(), order=String()) |
|
fa2f7ba34399
merge from maint-0-7
Richard Jones <richard@users.sourceforge.net>
parents:
2255
diff
changeset
|
92 priority.setkey("name") |
|
5175
e1e40674a0bc
Implement double-precision Number
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5163
diff
changeset
|
93 user = module.Class(db, "user", username=String(), |
|
e1e40674a0bc
Implement double-precision Number
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5163
diff
changeset
|
94 password=Password(quiet=True), assignable=Boolean(quiet=True), |
|
e1e40674a0bc
Implement double-precision Number
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5163
diff
changeset
|
95 age=Number(quiet=True), roles=String(), address=String(), |
|
e1e40674a0bc
Implement double-precision Number
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5163
diff
changeset
|
96 rating=Integer(quiet=True), supervisor=Link('user'), |
|
e1e40674a0bc
Implement double-precision Number
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5163
diff
changeset
|
97 realname=String(quiet=True), longnumber=Number(use_double=True)) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
98 user.setkey("username") |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
99 file = module.FileClass(db, "file", name=String(), type=String(), |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
100 comment=String(indexme="yes"), fooz=Password()) |
|
3601
7b25567f0f54
indexing may be turned off for FileClass "content" now
Richard Jones <richard@users.sourceforge.net>
parents:
3586
diff
changeset
|
101 file_nidx = module.FileClass(db, "file_nidx", content=String(indexme='no')) |
|
5112
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
102 |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
103 # initialize quiet mode a second way without using Multilink("user", quiet=True) |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
104 mynosy = Multilink("user") |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
105 mynosy.quiet = True |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
106 issue = module.IssueClass(db, "issue", title=String(indexme="yes"), |
|
5175
e1e40674a0bc
Implement double-precision Number
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5163
diff
changeset
|
107 status=Link("status"), nosy=mynosy, deadline=Date(quiet=True), |
|
e1e40674a0bc
Implement double-precision Number
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5163
diff
changeset
|
108 foo=Interval(quiet=True, default_value=date.Interval('-1w')), |
|
e1e40674a0bc
Implement double-precision Number
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5163
diff
changeset
|
109 files=Multilink("file"), assignedto=Link('user', quiet=True), |
|
e1e40674a0bc
Implement double-precision Number
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5163
diff
changeset
|
110 priority=Link('priority'), spam=Multilink('msg'), feedback=Link('msg')) |
|
1951
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
111 stuff = module.Class(db, "stuff", stuff=String()) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
112 session = module.Class(db, 'session', title=String()) |
|
3634
57c66056ffe4
Implemented what I'll call for now "transitive searching"...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3601
diff
changeset
|
113 msg = module.FileClass(db, "msg", date=Date(), |
|
5175
e1e40674a0bc
Implement double-precision Number
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5163
diff
changeset
|
114 author=Link("user", do_journal='no'), files=Multilink('file'), |
|
e1e40674a0bc
Implement double-precision Number
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5163
diff
changeset
|
115 inreplyto=String(), messageid=String(), |
|
e1e40674a0bc
Implement double-precision Number
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5163
diff
changeset
|
116 recipients=Multilink("user", do_journal='no')) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
117 session.disableJournalling() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
118 db.post_init() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
119 if create: |
|
1951
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
120 user.create(username="admin", roles='Admin', |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
121 password=password.Password('sekrit')) |
|
2077
3e0961d6d44d
Added the "actor" property.
Richard Jones <richard@users.sourceforge.net>
parents:
2075
diff
changeset
|
122 user.create(username="fred", roles='User', |
|
3882
46ef2a6fd79d
config option to limit nosy attachments based on size
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3872
diff
changeset
|
123 password=password.Password('sekrit'), address='fred@example.com') |
|
4850
6998ad77841e
Fix bug in SQL generation
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4849
diff
changeset
|
124 u1 = mls.create(name="unread_1") |
|
6998ad77841e
Fix bug in SQL generation
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4849
diff
changeset
|
125 u2 = mls.create(name="unread_2") |
|
6998ad77841e
Fix bug in SQL generation
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4849
diff
changeset
|
126 status.create(name="unread",mls=[u1, u2]) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
127 status.create(name="in-progress") |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
128 status.create(name="testing") |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
129 status.create(name="resolved") |
|
2318
fa2f7ba34399
merge from maint-0-7
Richard Jones <richard@users.sourceforge.net>
parents:
2255
diff
changeset
|
130 priority.create(name="feature", order="2") |
|
fa2f7ba34399
merge from maint-0-7
Richard Jones <richard@users.sourceforge.net>
parents:
2255
diff
changeset
|
131 priority.create(name="wish", order="3") |
|
fa2f7ba34399
merge from maint-0-7
Richard Jones <richard@users.sourceforge.net>
parents:
2255
diff
changeset
|
132 priority.create(name="bug", order="1") |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
133 db.commit() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
134 |
|
4301
d47245c2530a
Fix some security assertions and tests.
Richard Jones <richard@users.sourceforge.net>
parents:
4255
diff
changeset
|
135 # nosy tests require this |
|
d47245c2530a
Fix some security assertions and tests.
Richard Jones <richard@users.sourceforge.net>
parents:
4255
diff
changeset
|
136 db.security.addPermissionToRole('User', 'View', 'msg') |
|
d47245c2530a
Fix some security assertions and tests.
Richard Jones <richard@users.sourceforge.net>
parents:
4255
diff
changeset
|
137 |
|
5232
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
138 # quiet journal tests require this |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
139 # QuietJournal - reference used later in tests |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
140 v1 = db.security.addPermission(name='View', klass='user', |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
141 properties=['username', 'supervisor', 'assignable'], |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
142 description="Prevent users from seeing roles") |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
143 |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
144 db.security.addPermissionToRole("User", v1) |
|
5033
63c79c0992ae
Update tests to work with py.test
John Kristensen <john@jerrykan.com>
parents:
4886
diff
changeset
|
145 |
|
63c79c0992ae
Update tests to work with py.test
John Kristensen <john@jerrykan.com>
parents:
4886
diff
changeset
|
146 class MyTestCase(object): |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
147 def tearDown(self): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
148 if hasattr(self, 'db'): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
149 self.db.close() |
|
2082
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
2077
diff
changeset
|
150 if os.path.exists(config.DATABASE): |
|
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
2077
diff
changeset
|
151 shutil.rmtree(config.DATABASE) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
152 |
|
5315
5a014410f254
Fix issue2550954: History display breaks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5311
diff
changeset
|
153 def open_database(self, user='admin'): |
|
5a014410f254
Fix issue2550954: History display breaks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5311
diff
changeset
|
154 self.db = self.module.Database(config, user) |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
155 |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
156 |
|
5381
0942fe89e82e
Python 3 preparation: change "x.has_key(y)" to "y in x".
Joseph Myers <jsm@polyomino.org.uk>
parents:
5376
diff
changeset
|
157 if 'LOGGING_LEVEL' in os.environ: |
|
4786
6018617c55ab
Removing remains of "rlog" module, fixes db unit test debug logging via environment variable.
Bernhard Reiter <bernhard@intevation.de>
parents:
4687
diff
changeset
|
158 logger = logging.getLogger('roundup.hyperdb') |
|
6018617c55ab
Removing remains of "rlog" module, fixes db unit test debug logging via environment variable.
Bernhard Reiter <bernhard@intevation.de>
parents:
4687
diff
changeset
|
159 logger.setLevel(os.environ['LOGGING_LEVEL']) |
|
2605
6e9bd67fefa9
complete transition from HYPERDBDEBUG to new logging
Richard Jones <richard@users.sourceforge.net>
parents:
2603
diff
changeset
|
160 |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
161 class commonDBTest(MyTestCase): |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
162 def setUp(self): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
163 # remove previous test, ignore errors |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
164 if os.path.exists(config.DATABASE): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
165 shutil.rmtree(config.DATABASE) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
166 os.makedirs(config.DATABASE + '/files') |
|
4349
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
4347
diff
changeset
|
167 self.open_database() |
|
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
4347
diff
changeset
|
168 setupSchema(self.db, 1, self.module) |
|
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
4347
diff
changeset
|
169 |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
170 def iterSetup(self, classname='issue'): |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
171 cls = getattr(self.db, classname) |
|
5317
c0cda00af479
Fix tests for memorydb and anydbm backends
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5315
diff
changeset
|
172 def filt_iter(*args, **kw): |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
173 """ for checking equivalence of filter and filter_iter """ |
|
5317
c0cda00af479
Fix tests for memorydb and anydbm backends
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5315
diff
changeset
|
174 return list(cls.filter_iter(*args, **kw)) |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
175 return self.assertEqual, cls.filter, filt_iter |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
176 |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
177 def filteringSetupTransitiveSearch(self, classname='issue'): |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
178 u_m = {} |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
179 k = 30 |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
180 for user in ( |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
181 {'username': 'ceo', 'age': 129}, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
182 {'username': 'grouplead1', 'age': 29, 'supervisor': '3'}, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
183 {'username': 'grouplead2', 'age': 29, 'supervisor': '3'}, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
184 {'username': 'worker1', 'age': 25, 'supervisor' : '4'}, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
185 {'username': 'worker2', 'age': 24, 'supervisor' : '4'}, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
186 {'username': 'worker3', 'age': 23, 'supervisor' : '5'}, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
187 {'username': 'worker4', 'age': 22, 'supervisor' : '5'}, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
188 {'username': 'worker5', 'age': 21, 'supervisor' : '5'}): |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
189 u = self.db.user.create(**user) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
190 u_m [u] = self.db.msg.create(author = u, content = ' ' |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
191 , date = date.Date ('2006-01-%s' % k)) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
192 k -= 1 |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
193 i = date.Interval('-1d') |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
194 for issue in ( |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
195 {'title': 'ts1', 'status': '2', 'assignedto': '6', |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
196 'priority': '3', 'messages' : [u_m ['6']], 'nosy' : ['4']}, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
197 {'title': 'ts2', 'status': '1', 'assignedto': '6', |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
198 'priority': '3', 'messages' : [u_m ['6']], 'nosy' : ['5']}, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
199 {'title': 'ts4', 'status': '2', 'assignedto': '7', |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
200 'priority': '3', 'messages' : [u_m ['7']]}, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
201 {'title': 'ts5', 'status': '1', 'assignedto': '8', |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
202 'priority': '3', 'messages' : [u_m ['8']]}, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
203 {'title': 'ts6', 'status': '2', 'assignedto': '9', |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
204 'priority': '3', 'messages' : [u_m ['9']]}, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
205 {'title': 'ts7', 'status': '1', 'assignedto': '10', |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
206 'priority': '3', 'messages' : [u_m ['10']]}, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
207 {'title': 'ts8', 'status': '2', 'assignedto': '10', |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
208 'priority': '3', 'messages' : [u_m ['10']], 'foo' : i}, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
209 {'title': 'ts9', 'status': '1', 'assignedto': '10', |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
210 'priority': '3', 'messages' : [u_m ['10'], u_m ['9']]}): |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
211 self.db.issue.create(**issue) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
212 return self.iterSetup(classname) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
213 |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
214 |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
215 class DBTest(commonDBTest): |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
216 |
|
1951
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
217 def testRefresh(self): |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
218 self.db.refresh_database() |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
219 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
220 # |
|
2077
3e0961d6d44d
Added the "actor" property.
Richard Jones <richard@users.sourceforge.net>
parents:
2075
diff
changeset
|
221 # automatic properties (well, the two easy ones anyway) |
|
3e0961d6d44d
Added the "actor" property.
Richard Jones <richard@users.sourceforge.net>
parents:
2075
diff
changeset
|
222 # |
|
3e0961d6d44d
Added the "actor" property.
Richard Jones <richard@users.sourceforge.net>
parents:
2075
diff
changeset
|
223 def testCreatorProperty(self): |
|
2089
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
224 i = self.db.issue |
|
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
225 id1 = i.create(title='spam') |
|
4349
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
4347
diff
changeset
|
226 self.db.journaltag = 'fred' |
|
2089
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
227 id2 = i.create(title='spam') |
|
2077
3e0961d6d44d
Added the "actor" property.
Richard Jones <richard@users.sourceforge.net>
parents:
2075
diff
changeset
|
228 self.assertNotEqual(id1, id2) |
|
3e0961d6d44d
Added the "actor" property.
Richard Jones <richard@users.sourceforge.net>
parents:
2075
diff
changeset
|
229 self.assertNotEqual(i.get(id1, 'creator'), i.get(id2, 'creator')) |
|
3e0961d6d44d
Added the "actor" property.
Richard Jones <richard@users.sourceforge.net>
parents:
2075
diff
changeset
|
230 |
|
3e0961d6d44d
Added the "actor" property.
Richard Jones <richard@users.sourceforge.net>
parents:
2075
diff
changeset
|
231 def testActorProperty(self): |
|
2089
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
232 i = self.db.issue |
|
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
233 id1 = i.create(title='spam') |
|
4349
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
4347
diff
changeset
|
234 self.db.journaltag = 'fred' |
|
2077
3e0961d6d44d
Added the "actor" property.
Richard Jones <richard@users.sourceforge.net>
parents:
2075
diff
changeset
|
235 i.set(id1, title='asfasd') |
|
3e0961d6d44d
Added the "actor" property.
Richard Jones <richard@users.sourceforge.net>
parents:
2075
diff
changeset
|
236 self.assertNotEqual(i.get(id1, 'creator'), i.get(id1, 'actor')) |
|
3e0961d6d44d
Added the "actor" property.
Richard Jones <richard@users.sourceforge.net>
parents:
2075
diff
changeset
|
237 |
|
2098
18addf2a8596
Implemented proper datatypes in mysql and postgresql backends...
Richard Jones <richard@users.sourceforge.net>
parents:
2089
diff
changeset
|
238 # ID number controls |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
239 def testIDGeneration(self): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
240 id1 = self.db.issue.create(title="spam", status='1') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
241 id2 = self.db.issue.create(title="eggs", status='2') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
242 self.assertNotEqual(id1, id2) |
|
2098
18addf2a8596
Implemented proper datatypes in mysql and postgresql backends...
Richard Jones <richard@users.sourceforge.net>
parents:
2089
diff
changeset
|
243 def testIDSetting(self): |
|
18addf2a8596
Implemented proper datatypes in mysql and postgresql backends...
Richard Jones <richard@users.sourceforge.net>
parents:
2089
diff
changeset
|
244 # XXX numeric ids |
|
18addf2a8596
Implemented proper datatypes in mysql and postgresql backends...
Richard Jones <richard@users.sourceforge.net>
parents:
2089
diff
changeset
|
245 self.db.setid('issue', 10) |
|
18addf2a8596
Implemented proper datatypes in mysql and postgresql backends...
Richard Jones <richard@users.sourceforge.net>
parents:
2089
diff
changeset
|
246 id2 = self.db.issue.create(title="eggs", status='2') |
|
18addf2a8596
Implemented proper datatypes in mysql and postgresql backends...
Richard Jones <richard@users.sourceforge.net>
parents:
2089
diff
changeset
|
247 self.assertEqual('11', id2) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
248 |
|
2098
18addf2a8596
Implemented proper datatypes in mysql and postgresql backends...
Richard Jones <richard@users.sourceforge.net>
parents:
2089
diff
changeset
|
249 # |
|
18addf2a8596
Implemented proper datatypes in mysql and postgresql backends...
Richard Jones <richard@users.sourceforge.net>
parents:
2089
diff
changeset
|
250 # basic operations |
|
18addf2a8596
Implemented proper datatypes in mysql and postgresql backends...
Richard Jones <richard@users.sourceforge.net>
parents:
2089
diff
changeset
|
251 # |
|
1951
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
252 def testEmptySet(self): |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
253 id1 = self.db.issue.create(title="spam", status='1') |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
254 self.db.issue.set(id1) |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
255 |
|
2089
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
256 # String |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
257 def testStringChange(self): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
258 for commit in (0,1): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
259 # test set & retrieve |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
260 nid = self.db.issue.create(title="spam", status='1') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
261 self.assertEqual(self.db.issue.get(nid, 'title'), 'spam') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
262 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
263 # change and make sure we retrieve the correct value |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
264 self.db.issue.set(nid, title='eggs') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
265 if commit: self.db.commit() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
266 self.assertEqual(self.db.issue.get(nid, 'title'), 'eggs') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
267 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
268 def testStringUnset(self): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
269 for commit in (0,1): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
270 nid = self.db.issue.create(title="spam", status='1') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
271 if commit: self.db.commit() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
272 self.assertEqual(self.db.issue.get(nid, 'title'), 'spam') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
273 # make sure we can unset |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
274 self.db.issue.set(nid, title=None) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
275 if commit: self.db.commit() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
276 self.assertEqual(self.db.issue.get(nid, "title"), None) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
277 |
|
2089
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
278 # FileClass "content" property (no unset test) |
|
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
279 def testFileClassContentChange(self): |
|
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
280 for commit in (0,1): |
|
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
281 # test set & retrieve |
|
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
282 nid = self.db.file.create(content="spam") |
|
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
283 self.assertEqual(self.db.file.get(nid, 'content'), 'spam') |
|
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
284 |
|
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
285 # change and make sure we retrieve the correct value |
|
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
286 self.db.file.set(nid, content='eggs') |
|
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
287 if commit: self.db.commit() |
|
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
288 self.assertEqual(self.db.file.get(nid, 'content'), 'eggs') |
|
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
289 |
|
3752
c92687dce135
unicode / sqlite 3 problem [SF#1589292]
Richard Jones <richard@users.sourceforge.net>
parents:
3751
diff
changeset
|
290 def testStringUnicode(self): |
|
c92687dce135
unicode / sqlite 3 problem [SF#1589292]
Richard Jones <richard@users.sourceforge.net>
parents:
3751
diff
changeset
|
291 # test set & retrieve |
|
5468
0cde8a595893
fix tests for Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5395
diff
changeset
|
292 ustr = u2s(u'\xe4\xf6\xfc\u20ac') |
|
3752
c92687dce135
unicode / sqlite 3 problem [SF#1589292]
Richard Jones <richard@users.sourceforge.net>
parents:
3751
diff
changeset
|
293 nid = self.db.issue.create(title=ustr, status='1') |
|
c92687dce135
unicode / sqlite 3 problem [SF#1589292]
Richard Jones <richard@users.sourceforge.net>
parents:
3751
diff
changeset
|
294 self.assertEqual(self.db.issue.get(nid, 'title'), ustr) |
|
c92687dce135
unicode / sqlite 3 problem [SF#1589292]
Richard Jones <richard@users.sourceforge.net>
parents:
3751
diff
changeset
|
295 |
|
c92687dce135
unicode / sqlite 3 problem [SF#1589292]
Richard Jones <richard@users.sourceforge.net>
parents:
3751
diff
changeset
|
296 # change and make sure we retrieve the correct value |
|
5468
0cde8a595893
fix tests for Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5395
diff
changeset
|
297 ustr2 = u2s(u'change \u20ac change') |
|
3752
c92687dce135
unicode / sqlite 3 problem [SF#1589292]
Richard Jones <richard@users.sourceforge.net>
parents:
3751
diff
changeset
|
298 self.db.issue.set(nid, title=ustr2) |
|
c92687dce135
unicode / sqlite 3 problem [SF#1589292]
Richard Jones <richard@users.sourceforge.net>
parents:
3751
diff
changeset
|
299 self.db.commit() |
|
c92687dce135
unicode / sqlite 3 problem [SF#1589292]
Richard Jones <richard@users.sourceforge.net>
parents:
3751
diff
changeset
|
300 self.assertEqual(self.db.issue.get(nid, 'title'), ustr2) |
|
c92687dce135
unicode / sqlite 3 problem [SF#1589292]
Richard Jones <richard@users.sourceforge.net>
parents:
3751
diff
changeset
|
301 |
|
5492
6b0c542642be
blobfiles now always stores/returns bytes
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5488
diff
changeset
|
302 # test set & retrieve (this time for file contents) |
|
6b0c542642be
blobfiles now always stores/returns bytes
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5488
diff
changeset
|
303 nid = self.db.file.create(content=ustr) |
|
6b0c542642be
blobfiles now always stores/returns bytes
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5488
diff
changeset
|
304 self.assertEqual(self.db.file.get(nid, 'content'), ustr) |
|
6b0c542642be
blobfiles now always stores/returns bytes
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5488
diff
changeset
|
305 self.assertEqual(self.db.file.get(nid, 'binary_content'), s2b(ustr)) |
|
6b0c542642be
blobfiles now always stores/returns bytes
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5488
diff
changeset
|
306 |
|
5725
6923225fd781
Handle UnicodeDecodeError in file class when file contents are not
John Rouillard <rouilj@ieee.org>
parents:
5719
diff
changeset
|
307 def testStringBinary(self): |
|
6923225fd781
Handle UnicodeDecodeError in file class when file contents are not
John Rouillard <rouilj@ieee.org>
parents:
5719
diff
changeset
|
308 ''' Create file with binary content that is not able |
|
6923225fd781
Handle UnicodeDecodeError in file class when file contents are not
John Rouillard <rouilj@ieee.org>
parents:
5719
diff
changeset
|
309 to be interpreted as unicode. Try to cause file module |
|
6923225fd781
Handle UnicodeDecodeError in file class when file contents are not
John Rouillard <rouilj@ieee.org>
parents:
5719
diff
changeset
|
310 trigger and handle UnicodeDecodeError |
|
6923225fd781
Handle UnicodeDecodeError in file class when file contents are not
John Rouillard <rouilj@ieee.org>
parents:
5719
diff
changeset
|
311 and get valid output |
|
6923225fd781
Handle UnicodeDecodeError in file class when file contents are not
John Rouillard <rouilj@ieee.org>
parents:
5719
diff
changeset
|
312 ''' |
|
6923225fd781
Handle UnicodeDecodeError in file class when file contents are not
John Rouillard <rouilj@ieee.org>
parents:
5719
diff
changeset
|
313 # test set & retrieve |
|
6923225fd781
Handle UnicodeDecodeError in file class when file contents are not
John Rouillard <rouilj@ieee.org>
parents:
5719
diff
changeset
|
314 bstr = b'\x00\xF0\x34\x33' # random binary data |
|
6923225fd781
Handle UnicodeDecodeError in file class when file contents are not
John Rouillard <rouilj@ieee.org>
parents:
5719
diff
changeset
|
315 |
|
6923225fd781
Handle UnicodeDecodeError in file class when file contents are not
John Rouillard <rouilj@ieee.org>
parents:
5719
diff
changeset
|
316 # test set & retrieve (this time for file contents) |
|
6923225fd781
Handle UnicodeDecodeError in file class when file contents are not
John Rouillard <rouilj@ieee.org>
parents:
5719
diff
changeset
|
317 nid = self.db.file.create(content=bstr) |
|
6923225fd781
Handle UnicodeDecodeError in file class when file contents are not
John Rouillard <rouilj@ieee.org>
parents:
5719
diff
changeset
|
318 print(nid) |
|
6923225fd781
Handle UnicodeDecodeError in file class when file contents are not
John Rouillard <rouilj@ieee.org>
parents:
5719
diff
changeset
|
319 print(repr(self.db.file.get(nid, 'content'))) |
|
6923225fd781
Handle UnicodeDecodeError in file class when file contents are not
John Rouillard <rouilj@ieee.org>
parents:
5719
diff
changeset
|
320 print(repr(self.db.file.get(nid, 'binary_content'))) |
|
6923225fd781
Handle UnicodeDecodeError in file class when file contents are not
John Rouillard <rouilj@ieee.org>
parents:
5719
diff
changeset
|
321 p3val='file1 is not text, retrieve using binary_content property. mdsum: 0e1d1b47e4bd1beab3afc9b79f596c1d' |
|
6923225fd781
Handle UnicodeDecodeError in file class when file contents are not
John Rouillard <rouilj@ieee.org>
parents:
5719
diff
changeset
|
322 |
|
6923225fd781
Handle UnicodeDecodeError in file class when file contents are not
John Rouillard <rouilj@ieee.org>
parents:
5719
diff
changeset
|
323 if sys.version_info[0] > 2: |
|
6923225fd781
Handle UnicodeDecodeError in file class when file contents are not
John Rouillard <rouilj@ieee.org>
parents:
5719
diff
changeset
|
324 # python 3 |
|
6923225fd781
Handle UnicodeDecodeError in file class when file contents are not
John Rouillard <rouilj@ieee.org>
parents:
5719
diff
changeset
|
325 self.assertEqual(self.db.file.get(nid, 'content'), p3val) |
|
6923225fd781
Handle UnicodeDecodeError in file class when file contents are not
John Rouillard <rouilj@ieee.org>
parents:
5719
diff
changeset
|
326 self.assertEqual(self.db.file.get(nid, 'binary_content'), |
|
6923225fd781
Handle UnicodeDecodeError in file class when file contents are not
John Rouillard <rouilj@ieee.org>
parents:
5719
diff
changeset
|
327 bstr) |
|
6923225fd781
Handle UnicodeDecodeError in file class when file contents are not
John Rouillard <rouilj@ieee.org>
parents:
5719
diff
changeset
|
328 else: |
|
6923225fd781
Handle UnicodeDecodeError in file class when file contents are not
John Rouillard <rouilj@ieee.org>
parents:
5719
diff
changeset
|
329 # python 2 |
|
6923225fd781
Handle UnicodeDecodeError in file class when file contents are not
John Rouillard <rouilj@ieee.org>
parents:
5719
diff
changeset
|
330 self.assertEqual(self.db.file.get(nid, 'content'), bstr) |
|
6923225fd781
Handle UnicodeDecodeError in file class when file contents are not
John Rouillard <rouilj@ieee.org>
parents:
5719
diff
changeset
|
331 self.assertEqual(self.db.file.get(nid, 'binary_content'), bstr) |
|
6923225fd781
Handle UnicodeDecodeError in file class when file contents are not
John Rouillard <rouilj@ieee.org>
parents:
5719
diff
changeset
|
332 |
|
2089
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
333 # Link |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
334 def testLinkChange(self): |
|
1951
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
335 self.assertRaises(IndexError, self.db.issue.create, title="spam", |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
336 status='100') |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
337 for commit in (0,1): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
338 nid = self.db.issue.create(title="spam", status='1') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
339 if commit: self.db.commit() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
340 self.assertEqual(self.db.issue.get(nid, "status"), '1') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
341 self.db.issue.set(nid, status='2') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
342 if commit: self.db.commit() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
343 self.assertEqual(self.db.issue.get(nid, "status"), '2') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
344 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
345 def testLinkUnset(self): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
346 for commit in (0,1): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
347 nid = self.db.issue.create(title="spam", status='1') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
348 if commit: self.db.commit() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
349 self.db.issue.set(nid, status=None) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
350 if commit: self.db.commit() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
351 self.assertEqual(self.db.issue.get(nid, "status"), None) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
352 |
|
2089
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
353 # Multilink |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
354 def testMultilinkChange(self): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
355 for commit in (0,1): |
|
1951
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
356 self.assertRaises(IndexError, self.db.issue.create, title="spam", |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
357 nosy=['foo%s'%commit]) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
358 u1 = self.db.user.create(username='foo%s'%commit) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
359 u2 = self.db.user.create(username='bar%s'%commit) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
360 nid = self.db.issue.create(title="spam", nosy=[u1]) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
361 if commit: self.db.commit() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
362 self.assertEqual(self.db.issue.get(nid, "nosy"), [u1]) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
363 self.db.issue.set(nid, nosy=[]) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
364 if commit: self.db.commit() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
365 self.assertEqual(self.db.issue.get(nid, "nosy"), []) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
366 self.db.issue.set(nid, nosy=[u1,u2]) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
367 if commit: self.db.commit() |
|
2089
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
368 l = [u1,u2]; l.sort() |
|
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
369 m = self.db.issue.get(nid, "nosy"); m.sort() |
|
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
370 self.assertEqual(l, m) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
371 |
|
3872
34128a809e22
Allow multilinks to take None (treated as an empty list).
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3870
diff
changeset
|
372 # verify that when we pass None to an Multilink it sets |
|
34128a809e22
Allow multilinks to take None (treated as an empty list).
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3870
diff
changeset
|
373 # it to an empty list |
|
34128a809e22
Allow multilinks to take None (treated as an empty list).
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3870
diff
changeset
|
374 self.db.issue.set(nid, nosy=None) |
|
34128a809e22
Allow multilinks to take None (treated as an empty list).
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3870
diff
changeset
|
375 if commit: self.db.commit() |
|
34128a809e22
Allow multilinks to take None (treated as an empty list).
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3870
diff
changeset
|
376 self.assertEqual(self.db.issue.get(nid, "nosy"), []) |
|
34128a809e22
Allow multilinks to take None (treated as an empty list).
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3870
diff
changeset
|
377 |
|
4490
559d9a2a0191
Fixed bug in filter_iter refactoring (lazy multilinks)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4480
diff
changeset
|
378 def testMakeSeveralMultilinkedNodes(self): |
|
559d9a2a0191
Fixed bug in filter_iter refactoring (lazy multilinks)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4480
diff
changeset
|
379 for commit in (0,1): |
|
559d9a2a0191
Fixed bug in filter_iter refactoring (lazy multilinks)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4480
diff
changeset
|
380 u1 = self.db.user.create(username='foo%s'%commit) |
|
559d9a2a0191
Fixed bug in filter_iter refactoring (lazy multilinks)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4480
diff
changeset
|
381 u2 = self.db.user.create(username='bar%s'%commit) |
|
559d9a2a0191
Fixed bug in filter_iter refactoring (lazy multilinks)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4480
diff
changeset
|
382 u3 = self.db.user.create(username='baz%s'%commit) |
|
559d9a2a0191
Fixed bug in filter_iter refactoring (lazy multilinks)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4480
diff
changeset
|
383 nid = self.db.issue.create(title="spam", nosy=[u1]) |
|
559d9a2a0191
Fixed bug in filter_iter refactoring (lazy multilinks)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4480
diff
changeset
|
384 if commit: self.db.commit() |
|
559d9a2a0191
Fixed bug in filter_iter refactoring (lazy multilinks)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4480
diff
changeset
|
385 self.assertEqual(self.db.issue.get(nid, "nosy"), [u1]) |
|
559d9a2a0191
Fixed bug in filter_iter refactoring (lazy multilinks)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4480
diff
changeset
|
386 self.db.issue.set(nid, deadline=date.Date('.')) |
|
559d9a2a0191
Fixed bug in filter_iter refactoring (lazy multilinks)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4480
diff
changeset
|
387 self.db.issue.set(nid, nosy=[u1,u2], title='ta%s'%commit) |
|
559d9a2a0191
Fixed bug in filter_iter refactoring (lazy multilinks)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4480
diff
changeset
|
388 if commit: self.db.commit() |
|
559d9a2a0191
Fixed bug in filter_iter refactoring (lazy multilinks)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4480
diff
changeset
|
389 self.assertEqual(self.db.issue.get(nid, "nosy"), [u1,u2]) |
|
559d9a2a0191
Fixed bug in filter_iter refactoring (lazy multilinks)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4480
diff
changeset
|
390 self.db.issue.set(nid, deadline=date.Date('.')) |
|
559d9a2a0191
Fixed bug in filter_iter refactoring (lazy multilinks)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4480
diff
changeset
|
391 self.db.issue.set(nid, nosy=[u1,u2,u3], title='tb%s'%commit) |
|
559d9a2a0191
Fixed bug in filter_iter refactoring (lazy multilinks)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4480
diff
changeset
|
392 if commit: self.db.commit() |
|
559d9a2a0191
Fixed bug in filter_iter refactoring (lazy multilinks)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4480
diff
changeset
|
393 self.assertEqual(self.db.issue.get(nid, "nosy"), [u1,u2,u3]) |
|
559d9a2a0191
Fixed bug in filter_iter refactoring (lazy multilinks)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4480
diff
changeset
|
394 |
|
3869
16faac822fe5
Allow Multilinks to take any iterable
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3844
diff
changeset
|
395 def testMultilinkChangeIterable(self): |
|
16faac822fe5
Allow Multilinks to take any iterable
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3844
diff
changeset
|
396 for commit in (0,1): |
|
16faac822fe5
Allow Multilinks to take any iterable
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3844
diff
changeset
|
397 # invalid nosy value assertion |
|
16faac822fe5
Allow Multilinks to take any iterable
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3844
diff
changeset
|
398 self.assertRaises(IndexError, self.db.issue.create, title='spam', |
|
16faac822fe5
Allow Multilinks to take any iterable
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3844
diff
changeset
|
399 nosy=['foo%s'%commit]) |
|
16faac822fe5
Allow Multilinks to take any iterable
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3844
diff
changeset
|
400 # invalid type for nosy create |
|
16faac822fe5
Allow Multilinks to take any iterable
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3844
diff
changeset
|
401 self.assertRaises(TypeError, self.db.issue.create, title='spam', |
|
16faac822fe5
Allow Multilinks to take any iterable
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3844
diff
changeset
|
402 nosy=1) |
|
16faac822fe5
Allow Multilinks to take any iterable
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3844
diff
changeset
|
403 u1 = self.db.user.create(username='foo%s'%commit) |
|
16faac822fe5
Allow Multilinks to take any iterable
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3844
diff
changeset
|
404 u2 = self.db.user.create(username='bar%s'%commit) |
|
3870
f0eb93f25d1c
make comments more readable per alexander's suggestion
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3869
diff
changeset
|
405 # try a couple of the built-in iterable types to make |
|
f0eb93f25d1c
make comments more readable per alexander's suggestion
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3869
diff
changeset
|
406 # sure that we accept them and handle them properly |
|
f0eb93f25d1c
make comments more readable per alexander's suggestion
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3869
diff
changeset
|
407 # try a set as input for the multilink |
|
4089
eddb82d0964c
Add compatibility package to allow us to deal with Python versions 2.3..2.6.
Richard Jones <richard@users.sourceforge.net>
parents:
4082
diff
changeset
|
408 nid = self.db.issue.create(title="spam", nosy=set(u1)) |
|
3869
16faac822fe5
Allow Multilinks to take any iterable
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3844
diff
changeset
|
409 if commit: self.db.commit() |
|
16faac822fe5
Allow Multilinks to take any iterable
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3844
diff
changeset
|
410 self.assertEqual(self.db.issue.get(nid, "nosy"), [u1]) |
|
16faac822fe5
Allow Multilinks to take any iterable
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3844
diff
changeset
|
411 self.assertRaises(TypeError, self.db.issue.set, nid, |
|
16faac822fe5
Allow Multilinks to take any iterable
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3844
diff
changeset
|
412 nosy='invalid type') |
|
3870
f0eb93f25d1c
make comments more readable per alexander's suggestion
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3869
diff
changeset
|
413 # test with a tuple |
|
f0eb93f25d1c
make comments more readable per alexander's suggestion
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3869
diff
changeset
|
414 self.db.issue.set(nid, nosy=tuple()) |
|
3869
16faac822fe5
Allow Multilinks to take any iterable
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3844
diff
changeset
|
415 if commit: self.db.commit() |
|
16faac822fe5
Allow Multilinks to take any iterable
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3844
diff
changeset
|
416 self.assertEqual(self.db.issue.get(nid, "nosy"), []) |
|
3870
f0eb93f25d1c
make comments more readable per alexander's suggestion
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3869
diff
changeset
|
417 # make sure we accept a frozen set |
|
4089
eddb82d0964c
Add compatibility package to allow us to deal with Python versions 2.3..2.6.
Richard Jones <richard@users.sourceforge.net>
parents:
4082
diff
changeset
|
418 self.db.issue.set(nid, nosy=set([u1,u2])) |
|
3869
16faac822fe5
Allow Multilinks to take any iterable
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3844
diff
changeset
|
419 if commit: self.db.commit() |
|
16faac822fe5
Allow Multilinks to take any iterable
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3844
diff
changeset
|
420 l = [u1,u2]; l.sort() |
|
16faac822fe5
Allow Multilinks to take any iterable
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3844
diff
changeset
|
421 m = self.db.issue.get(nid, "nosy"); m.sort() |
|
16faac822fe5
Allow Multilinks to take any iterable
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3844
diff
changeset
|
422 self.assertEqual(l, m) |
|
3973
85cbaa50eba1
xml-rpc security checks and tests across all backends [SF#1907211]
Richard Jones <richard@users.sourceforge.net>
parents:
3963
diff
changeset
|
423 |
|
3869
16faac822fe5
Allow Multilinks to take any iterable
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3844
diff
changeset
|
424 |
|
2906
a8808157f892
fix some bugs introduced in refactoring of blobfiles filename()
Richard Jones <richard@users.sourceforge.net>
parents:
2899
diff
changeset
|
425 # XXX one day, maybe... |
|
a8808157f892
fix some bugs introduced in refactoring of blobfiles filename()
Richard Jones <richard@users.sourceforge.net>
parents:
2899
diff
changeset
|
426 # def testMultilinkOrdering(self): |
|
a8808157f892
fix some bugs introduced in refactoring of blobfiles filename()
Richard Jones <richard@users.sourceforge.net>
parents:
2899
diff
changeset
|
427 # for i in range(10): |
|
a8808157f892
fix some bugs introduced in refactoring of blobfiles filename()
Richard Jones <richard@users.sourceforge.net>
parents:
2899
diff
changeset
|
428 # self.db.user.create(username='foo%s'%i) |
|
a8808157f892
fix some bugs introduced in refactoring of blobfiles filename()
Richard Jones <richard@users.sourceforge.net>
parents:
2899
diff
changeset
|
429 # i = self.db.issue.create(title="spam", nosy=['5','3','12','4']) |
|
a8808157f892
fix some bugs introduced in refactoring of blobfiles filename()
Richard Jones <richard@users.sourceforge.net>
parents:
2899
diff
changeset
|
430 # self.db.commit() |
|
a8808157f892
fix some bugs introduced in refactoring of blobfiles filename()
Richard Jones <richard@users.sourceforge.net>
parents:
2899
diff
changeset
|
431 # l = self.db.issue.get(i, "nosy") |
|
a8808157f892
fix some bugs introduced in refactoring of blobfiles filename()
Richard Jones <richard@users.sourceforge.net>
parents:
2899
diff
changeset
|
432 # # all backends should return the Multilink numeric-id-sorted |
|
a8808157f892
fix some bugs introduced in refactoring of blobfiles filename()
Richard Jones <richard@users.sourceforge.net>
parents:
2899
diff
changeset
|
433 # self.assertEqual(l, ['3', '4', '5', '12']) |
|
2899
09a4d6dd6dcb
Handle older (really older) anydbm databases in export code.
Richard Jones <richard@users.sourceforge.net>
parents:
2872
diff
changeset
|
434 |
|
2089
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
435 # Date |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
436 def testDateChange(self): |
|
2680
c26a9a5a25d2
rdbms backends require new config object. make one.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2605
diff
changeset
|
437 self.assertRaises(TypeError, self.db.issue.create, |
|
1951
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
438 title='spam', deadline=1) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
439 for commit in (0,1): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
440 nid = self.db.issue.create(title="spam", status='1') |
|
1951
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
441 self.assertRaises(TypeError, self.db.issue.set, nid, deadline=1) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
442 a = self.db.issue.get(nid, "deadline") |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
443 if commit: self.db.commit() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
444 self.db.issue.set(nid, deadline=date.Date()) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
445 b = self.db.issue.get(nid, "deadline") |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
446 if commit: self.db.commit() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
447 self.assertNotEqual(a, b) |
|
3457
88f0a5030404
Fix invalid date spec in db tests
Richard Jones <richard@users.sourceforge.net>
parents:
3247
diff
changeset
|
448 self.assertNotEqual(b, date.Date('1970-1-1.00:00:00')) |
|
3822
2a60b68985db
Fix arbitrary limit on dates.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3752
diff
changeset
|
449 # The 1970 date will fail for metakit -- it is used |
|
2a60b68985db
Fix arbitrary limit on dates.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3752
diff
changeset
|
450 # internally for storing NULL. The others would, too |
|
2a60b68985db
Fix arbitrary limit on dates.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3752
diff
changeset
|
451 # because metakit tries to convert date.timestamp to an int |
|
2a60b68985db
Fix arbitrary limit on dates.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3752
diff
changeset
|
452 # for storing and fails with an overflow. |
|
5390
0fd27da353eb
Python 3 preparation: use parentheses in list comprehension.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5388
diff
changeset
|
453 for d in [date.Date (x) for x in ('2038', '1970', '0033', '9999')]: |
|
3822
2a60b68985db
Fix arbitrary limit on dates.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3752
diff
changeset
|
454 self.db.issue.set(nid, deadline=d) |
|
2a60b68985db
Fix arbitrary limit on dates.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3752
diff
changeset
|
455 if commit: self.db.commit() |
|
2a60b68985db
Fix arbitrary limit on dates.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3752
diff
changeset
|
456 c = self.db.issue.get(nid, "deadline") |
|
2a60b68985db
Fix arbitrary limit on dates.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3752
diff
changeset
|
457 self.assertEqual(c, d) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
458 |
|
3973
85cbaa50eba1
xml-rpc security checks and tests across all backends [SF#1907211]
Richard Jones <richard@users.sourceforge.net>
parents:
3963
diff
changeset
|
459 def testDateLeapYear(self): |
|
85cbaa50eba1
xml-rpc security checks and tests across all backends [SF#1907211]
Richard Jones <richard@users.sourceforge.net>
parents:
3963
diff
changeset
|
460 nid = self.db.issue.create(title='spam', status='1', |
|
85cbaa50eba1
xml-rpc security checks and tests across all backends [SF#1907211]
Richard Jones <richard@users.sourceforge.net>
parents:
3963
diff
changeset
|
461 deadline=date.Date('2008-02-29')) |
|
85cbaa50eba1
xml-rpc security checks and tests across all backends [SF#1907211]
Richard Jones <richard@users.sourceforge.net>
parents:
3963
diff
changeset
|
462 self.assertEquals(str(self.db.issue.get(nid, 'deadline')), |
|
85cbaa50eba1
xml-rpc security checks and tests across all backends [SF#1907211]
Richard Jones <richard@users.sourceforge.net>
parents:
3963
diff
changeset
|
463 '2008-02-29.00:00:00') |
|
3995
6bd3df4356b1
improved test case
Richard Jones <richard@users.sourceforge.net>
parents:
3973
diff
changeset
|
464 self.assertEquals(self.db.issue.filter(None, |
|
6bd3df4356b1
improved test case
Richard Jones <richard@users.sourceforge.net>
parents:
3973
diff
changeset
|
465 {'deadline': '2008-02-29'}), [nid]) |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
466 self.assertEquals(list(self.db.issue.filter_iter(None, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
467 {'deadline': '2008-02-29'})), [nid]) |
|
3995
6bd3df4356b1
improved test case
Richard Jones <richard@users.sourceforge.net>
parents:
3973
diff
changeset
|
468 self.db.issue.set(nid, deadline=date.Date('2008-03-01')) |
|
3973
85cbaa50eba1
xml-rpc security checks and tests across all backends [SF#1907211]
Richard Jones <richard@users.sourceforge.net>
parents:
3963
diff
changeset
|
469 self.assertEquals(str(self.db.issue.get(nid, 'deadline')), |
|
3995
6bd3df4356b1
improved test case
Richard Jones <richard@users.sourceforge.net>
parents:
3973
diff
changeset
|
470 '2008-03-01.00:00:00') |
|
6bd3df4356b1
improved test case
Richard Jones <richard@users.sourceforge.net>
parents:
3973
diff
changeset
|
471 self.assertEquals(self.db.issue.filter(None, |
|
6bd3df4356b1
improved test case
Richard Jones <richard@users.sourceforge.net>
parents:
3973
diff
changeset
|
472 {'deadline': '2008-02-29'}), []) |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
473 self.assertEquals(list(self.db.issue.filter_iter(None, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
474 {'deadline': '2008-02-29'})), []) |
|
3973
85cbaa50eba1
xml-rpc security checks and tests across all backends [SF#1907211]
Richard Jones <richard@users.sourceforge.net>
parents:
3963
diff
changeset
|
475 |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
476 def testDateUnset(self): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
477 for commit in (0,1): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
478 nid = self.db.issue.create(title="spam", status='1') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
479 self.db.issue.set(nid, deadline=date.Date()) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
480 if commit: self.db.commit() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
481 self.assertNotEqual(self.db.issue.get(nid, "deadline"), None) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
482 self.db.issue.set(nid, deadline=None) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
483 if commit: self.db.commit() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
484 self.assertEqual(self.db.issue.get(nid, "deadline"), None) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
485 |
| 4885 | 486 def testDateSort(self): |
| 487 d1 = date.Date('.') | |
| 488 ae, filter, filter_iter = self.filteringSetup() | |
| 489 nid = self.db.issue.create(title="nodeadline", status='1') | |
| 490 self.db.commit() | |
| 491 for filt in filter, filter_iter: | |
| 492 ae(filt(None, {}, ('+','deadline')), ['5', '2', '1', '3', '4']) | |
| 493 ae(filt(None, {}, ('+','id'), ('+', 'deadline')), | |
| 494 ['5', '2', '1', '3', '4']) | |
| 495 ae(filt(None, {}, ('-','id'), ('-', 'deadline')), | |
| 496 ['4', '3', '1', '2', '5']) | |
| 497 | |
|
4886
a116de39e38c
Fix sort-representation for RDBMS backends
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4885
diff
changeset
|
498 def testDateSortMultilink(self): |
|
a116de39e38c
Fix sort-representation for RDBMS backends
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4885
diff
changeset
|
499 d1 = date.Date('.') |
|
a116de39e38c
Fix sort-representation for RDBMS backends
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4885
diff
changeset
|
500 ae, filter, filter_iter = self.filteringSetup() |
|
a116de39e38c
Fix sort-representation for RDBMS backends
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4885
diff
changeset
|
501 nid = self.db.issue.create(title="nodeadline", status='1') |
|
a116de39e38c
Fix sort-representation for RDBMS backends
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4885
diff
changeset
|
502 self.db.commit() |
|
a116de39e38c
Fix sort-representation for RDBMS backends
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4885
diff
changeset
|
503 ae(sorted(self.db.issue.get('1','nosy')), []) |
|
a116de39e38c
Fix sort-representation for RDBMS backends
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4885
diff
changeset
|
504 ae(sorted(self.db.issue.get('2','nosy')), []) |
|
a116de39e38c
Fix sort-representation for RDBMS backends
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4885
diff
changeset
|
505 ae(sorted(self.db.issue.get('3','nosy')), ['1','2']) |
|
a116de39e38c
Fix sort-representation for RDBMS backends
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4885
diff
changeset
|
506 ae(sorted(self.db.issue.get('4','nosy')), ['1','2','3']) |
|
a116de39e38c
Fix sort-representation for RDBMS backends
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4885
diff
changeset
|
507 ae(sorted(self.db.issue.get('5','nosy')), []) |
|
a116de39e38c
Fix sort-representation for RDBMS backends
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4885
diff
changeset
|
508 ae(self.db.user.get('1','username'), 'admin') |
|
a116de39e38c
Fix sort-representation for RDBMS backends
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4885
diff
changeset
|
509 ae(self.db.user.get('2','username'), 'fred') |
|
a116de39e38c
Fix sort-representation for RDBMS backends
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4885
diff
changeset
|
510 ae(self.db.user.get('3','username'), 'bleep') |
|
a116de39e38c
Fix sort-representation for RDBMS backends
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4885
diff
changeset
|
511 # filter_iter currently doesn't work for Multilink sort |
|
a116de39e38c
Fix sort-representation for RDBMS backends
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4885
diff
changeset
|
512 # so testing only filter |
|
a116de39e38c
Fix sort-representation for RDBMS backends
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4885
diff
changeset
|
513 ae(filter(None, {}, ('+', 'id'), ('+','nosy')), |
|
a116de39e38c
Fix sort-representation for RDBMS backends
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4885
diff
changeset
|
514 ['1', '2', '5', '4', '3']) |
|
a116de39e38c
Fix sort-representation for RDBMS backends
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4885
diff
changeset
|
515 ae(filter(None, {}, ('+','deadline'), ('+', 'nosy')), |
|
a116de39e38c
Fix sort-representation for RDBMS backends
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4885
diff
changeset
|
516 ['5', '2', '1', '4', '3']) |
|
a116de39e38c
Fix sort-representation for RDBMS backends
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4885
diff
changeset
|
517 ae(filter(None, {}, ('+','nosy'), ('+', 'deadline')), |
|
a116de39e38c
Fix sort-representation for RDBMS backends
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4885
diff
changeset
|
518 ['5', '2', '1', '3', '4']) |
| 4885 | 519 |
|
2089
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
520 # Interval |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
521 def testIntervalChange(self): |
|
2680
c26a9a5a25d2
rdbms backends require new config object. make one.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2605
diff
changeset
|
522 self.assertRaises(TypeError, self.db.issue.create, |
|
1951
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
523 title='spam', foo=1) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
524 for commit in (0,1): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
525 nid = self.db.issue.create(title="spam", status='1') |
|
1951
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
526 self.assertRaises(TypeError, self.db.issue.set, nid, foo=1) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
527 if commit: self.db.commit() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
528 a = self.db.issue.get(nid, "foo") |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
529 i = date.Interval('-1d') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
530 self.db.issue.set(nid, foo=i) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
531 if commit: self.db.commit() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
532 self.assertNotEqual(self.db.issue.get(nid, "foo"), a) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
533 self.assertEqual(i, self.db.issue.get(nid, "foo")) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
534 j = date.Interval('1y') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
535 self.db.issue.set(nid, foo=j) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
536 if commit: self.db.commit() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
537 self.assertNotEqual(self.db.issue.get(nid, "foo"), i) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
538 self.assertEqual(j, self.db.issue.get(nid, "foo")) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
539 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
540 def testIntervalUnset(self): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
541 for commit in (0,1): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
542 nid = self.db.issue.create(title="spam", status='1') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
543 self.db.issue.set(nid, foo=date.Interval('-1d')) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
544 if commit: self.db.commit() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
545 self.assertNotEqual(self.db.issue.get(nid, "foo"), None) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
546 self.db.issue.set(nid, foo=None) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
547 if commit: self.db.commit() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
548 self.assertEqual(self.db.issue.get(nid, "foo"), None) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
549 |
|
2089
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
550 # Boolean |
|
2472
f41539b3c486
fixed Boolean values in postgresql (bugs [SF#972546] and [SF#972600])
Richard Jones <richard@users.sourceforge.net>
parents:
2453
diff
changeset
|
551 def testBooleanSet(self): |
|
f41539b3c486
fixed Boolean values in postgresql (bugs [SF#972546] and [SF#972600])
Richard Jones <richard@users.sourceforge.net>
parents:
2453
diff
changeset
|
552 nid = self.db.user.create(username='one', assignable=1) |
|
f41539b3c486
fixed Boolean values in postgresql (bugs [SF#972546] and [SF#972600])
Richard Jones <richard@users.sourceforge.net>
parents:
2453
diff
changeset
|
553 self.assertEqual(self.db.user.get(nid, "assignable"), 1) |
|
f41539b3c486
fixed Boolean values in postgresql (bugs [SF#972546] and [SF#972600])
Richard Jones <richard@users.sourceforge.net>
parents:
2453
diff
changeset
|
554 nid = self.db.user.create(username='two', assignable=0) |
|
f41539b3c486
fixed Boolean values in postgresql (bugs [SF#972546] and [SF#972600])
Richard Jones <richard@users.sourceforge.net>
parents:
2453
diff
changeset
|
555 self.assertEqual(self.db.user.get(nid, "assignable"), 0) |
|
f41539b3c486
fixed Boolean values in postgresql (bugs [SF#972546] and [SF#972600])
Richard Jones <richard@users.sourceforge.net>
parents:
2453
diff
changeset
|
556 |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
557 def testBooleanChange(self): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
558 userid = self.db.user.create(username='foo', assignable=1) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
559 self.assertEqual(1, self.db.user.get(userid, 'assignable')) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
560 self.db.user.set(userid, assignable=0) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
561 self.assertEqual(self.db.user.get(userid, 'assignable'), 0) |
|
2472
f41539b3c486
fixed Boolean values in postgresql (bugs [SF#972546] and [SF#972600])
Richard Jones <richard@users.sourceforge.net>
parents:
2453
diff
changeset
|
562 self.db.user.set(userid, assignable=1) |
|
f41539b3c486
fixed Boolean values in postgresql (bugs [SF#972546] and [SF#972600])
Richard Jones <richard@users.sourceforge.net>
parents:
2453
diff
changeset
|
563 self.assertEqual(self.db.user.get(userid, 'assignable'), 1) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
564 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
565 def testBooleanUnset(self): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
566 nid = self.db.user.create(username='foo', assignable=1) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
567 self.db.user.set(nid, assignable=None) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
568 self.assertEqual(self.db.user.get(nid, "assignable"), None) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
569 |
|
2089
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
570 # Number |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
571 def testNumberChange(self): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
572 nid = self.db.user.create(username='foo', age=1) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
573 self.assertEqual(1, self.db.user.get(nid, 'age')) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
574 self.db.user.set(nid, age=3) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
575 self.assertNotEqual(self.db.user.get(nid, 'age'), 1) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
576 self.db.user.set(nid, age=1.0) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
577 self.assertEqual(self.db.user.get(nid, 'age'), 1) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
578 self.db.user.set(nid, age=0) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
579 self.assertEqual(self.db.user.get(nid, 'age'), 0) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
580 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
581 nid = self.db.user.create(username='bar', age=0) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
582 self.assertEqual(self.db.user.get(nid, 'age'), 0) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
583 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
584 def testNumberUnset(self): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
585 nid = self.db.user.create(username='foo', age=1) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
586 self.db.user.set(nid, age=None) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
587 self.assertEqual(self.db.user.get(nid, "age"), None) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
588 |
|
5175
e1e40674a0bc
Implement double-precision Number
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5163
diff
changeset
|
589 # Long number |
|
e1e40674a0bc
Implement double-precision Number
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5163
diff
changeset
|
590 def testDoubleChange(self): |
|
e1e40674a0bc
Implement double-precision Number
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5163
diff
changeset
|
591 lnl = 100.12345678 |
|
e1e40674a0bc
Implement double-precision Number
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5163
diff
changeset
|
592 ln = 100.123456789 |
|
e1e40674a0bc
Implement double-precision Number
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5163
diff
changeset
|
593 lng = 100.12345679 |
|
e1e40674a0bc
Implement double-precision Number
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5163
diff
changeset
|
594 nid = self.db.user.create(username='foo', longnumber=ln) |
|
e1e40674a0bc
Implement double-precision Number
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5163
diff
changeset
|
595 self.assertEqual(self.db.user.get(nid, 'longnumber') < lng, True) |
|
e1e40674a0bc
Implement double-precision Number
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5163
diff
changeset
|
596 self.assertEqual(self.db.user.get(nid, 'longnumber') > lnl, True) |
|
e1e40674a0bc
Implement double-precision Number
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5163
diff
changeset
|
597 lnl = 1.0012345678e55 |
|
e1e40674a0bc
Implement double-precision Number
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5163
diff
changeset
|
598 ln = 1.00123456789e55 |
|
e1e40674a0bc
Implement double-precision Number
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5163
diff
changeset
|
599 lng = 1.0012345679e55 |
|
e1e40674a0bc
Implement double-precision Number
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5163
diff
changeset
|
600 self.db.user.set(nid, longnumber=ln) |
|
e1e40674a0bc
Implement double-precision Number
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5163
diff
changeset
|
601 self.assertEqual(self.db.user.get(nid, 'longnumber') < lng, True) |
|
e1e40674a0bc
Implement double-precision Number
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5163
diff
changeset
|
602 self.assertEqual(self.db.user.get(nid, 'longnumber') > lnl, True) |
|
e1e40674a0bc
Implement double-precision Number
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5163
diff
changeset
|
603 self.db.user.set(nid, longnumber=-1) |
|
e1e40674a0bc
Implement double-precision Number
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5163
diff
changeset
|
604 self.assertEqual(self.db.user.get(nid, 'longnumber'), -1) |
|
e1e40674a0bc
Implement double-precision Number
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5163
diff
changeset
|
605 self.db.user.set(nid, longnumber=0) |
|
e1e40674a0bc
Implement double-precision Number
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5163
diff
changeset
|
606 self.assertEqual(self.db.user.get(nid, 'longnumber'), 0) |
|
e1e40674a0bc
Implement double-precision Number
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5163
diff
changeset
|
607 |
|
e1e40674a0bc
Implement double-precision Number
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5163
diff
changeset
|
608 nid = self.db.user.create(username='bar', longnumber=0) |
|
e1e40674a0bc
Implement double-precision Number
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5163
diff
changeset
|
609 self.assertEqual(self.db.user.get(nid, 'longnumber'), 0) |
|
e1e40674a0bc
Implement double-precision Number
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5163
diff
changeset
|
610 |
|
e1e40674a0bc
Implement double-precision Number
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5163
diff
changeset
|
611 def testDoubleUnset(self): |
|
e1e40674a0bc
Implement double-precision Number
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5163
diff
changeset
|
612 nid = self.db.user.create(username='foo', longnumber=1.2345) |
|
e1e40674a0bc
Implement double-precision Number
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5163
diff
changeset
|
613 self.db.user.set(nid, longnumber=None) |
|
e1e40674a0bc
Implement double-precision Number
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5163
diff
changeset
|
614 self.assertEqual(self.db.user.get(nid, "longnumber"), None) |
|
e1e40674a0bc
Implement double-precision Number
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5163
diff
changeset
|
615 |
|
e1e40674a0bc
Implement double-precision Number
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5163
diff
changeset
|
616 |
|
5067
e424987d294a
Add support for an integer type to join the existing number type.
John Rouillard <rouilj@ieee.org>
parents:
5041
diff
changeset
|
617 # Integer |
|
e424987d294a
Add support for an integer type to join the existing number type.
John Rouillard <rouilj@ieee.org>
parents:
5041
diff
changeset
|
618 def testIntegerChange(self): |
|
e424987d294a
Add support for an integer type to join the existing number type.
John Rouillard <rouilj@ieee.org>
parents:
5041
diff
changeset
|
619 nid = self.db.user.create(username='foo', rating=100) |
|
e424987d294a
Add support for an integer type to join the existing number type.
John Rouillard <rouilj@ieee.org>
parents:
5041
diff
changeset
|
620 self.assertEqual(100, self.db.user.get(nid, 'rating')) |
|
e424987d294a
Add support for an integer type to join the existing number type.
John Rouillard <rouilj@ieee.org>
parents:
5041
diff
changeset
|
621 self.db.user.set(nid, rating=300) |
|
e424987d294a
Add support for an integer type to join the existing number type.
John Rouillard <rouilj@ieee.org>
parents:
5041
diff
changeset
|
622 self.assertNotEqual(self.db.user.get(nid, 'rating'), 100) |
|
e424987d294a
Add support for an integer type to join the existing number type.
John Rouillard <rouilj@ieee.org>
parents:
5041
diff
changeset
|
623 self.db.user.set(nid, rating=-1) |
|
e424987d294a
Add support for an integer type to join the existing number type.
John Rouillard <rouilj@ieee.org>
parents:
5041
diff
changeset
|
624 self.assertEqual(self.db.user.get(nid, 'rating'), -1) |
|
e424987d294a
Add support for an integer type to join the existing number type.
John Rouillard <rouilj@ieee.org>
parents:
5041
diff
changeset
|
625 self.db.user.set(nid, rating=0) |
|
e424987d294a
Add support for an integer type to join the existing number type.
John Rouillard <rouilj@ieee.org>
parents:
5041
diff
changeset
|
626 self.assertEqual(self.db.user.get(nid, 'rating'), 0) |
|
e424987d294a
Add support for an integer type to join the existing number type.
John Rouillard <rouilj@ieee.org>
parents:
5041
diff
changeset
|
627 |
|
e424987d294a
Add support for an integer type to join the existing number type.
John Rouillard <rouilj@ieee.org>
parents:
5041
diff
changeset
|
628 nid = self.db.user.create(username='bar', rating=0) |
|
e424987d294a
Add support for an integer type to join the existing number type.
John Rouillard <rouilj@ieee.org>
parents:
5041
diff
changeset
|
629 self.assertEqual(self.db.user.get(nid, 'rating'), 0) |
|
e424987d294a
Add support for an integer type to join the existing number type.
John Rouillard <rouilj@ieee.org>
parents:
5041
diff
changeset
|
630 |
|
e424987d294a
Add support for an integer type to join the existing number type.
John Rouillard <rouilj@ieee.org>
parents:
5041
diff
changeset
|
631 def testIntegerUnset(self): |
|
e424987d294a
Add support for an integer type to join the existing number type.
John Rouillard <rouilj@ieee.org>
parents:
5041
diff
changeset
|
632 nid = self.db.user.create(username='foo', rating=1) |
|
e424987d294a
Add support for an integer type to join the existing number type.
John Rouillard <rouilj@ieee.org>
parents:
5041
diff
changeset
|
633 self.db.user.set(nid, rating=None) |
|
e424987d294a
Add support for an integer type to join the existing number type.
John Rouillard <rouilj@ieee.org>
parents:
5041
diff
changeset
|
634 self.assertEqual(self.db.user.get(nid, "rating"), None) |
|
e424987d294a
Add support for an integer type to join the existing number type.
John Rouillard <rouilj@ieee.org>
parents:
5041
diff
changeset
|
635 |
|
2089
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
636 # Password |
|
1951
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
637 def testPasswordChange(self): |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
638 x = password.Password('x') |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
639 userid = self.db.user.create(username='foo', password=x) |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
640 self.assertEqual(x, self.db.user.get(userid, 'password')) |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
641 self.assertEqual(self.db.user.get(userid, 'password'), 'x') |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
642 y = password.Password('y') |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
643 self.db.user.set(userid, password=y) |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
644 self.assertEqual(self.db.user.get(userid, 'password'), 'y') |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
645 self.assertRaises(TypeError, self.db.user.create, userid, |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
646 username='bar', password='x') |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
647 self.assertRaises(TypeError, self.db.user.set, userid, password='x') |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
648 |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
649 def testPasswordUnset(self): |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
650 x = password.Password('x') |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
651 nid = self.db.user.create(username='foo', password=x) |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
652 self.db.user.set(nid, assignable=None) |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
653 self.assertEqual(self.db.user.get(nid, "assignable"), None) |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
654 |
|
2089
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
655 # key value |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
656 def testKeyValue(self): |
|
1951
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
657 self.assertRaises(ValueError, self.db.user.create) |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
658 |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
659 newid = self.db.user.create(username="spam") |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
660 self.assertEqual(self.db.user.lookup('spam'), newid) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
661 self.db.commit() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
662 self.assertEqual(self.db.user.lookup('spam'), newid) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
663 self.db.user.retire(newid) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
664 self.assertRaises(KeyError, self.db.user.lookup, 'spam') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
665 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
666 # use the key again now that the old is retired |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
667 newid2 = self.db.user.create(username="spam") |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
668 self.assertNotEqual(newid, newid2) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
669 # try to restore old node. this shouldn't succeed! |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
670 self.assertRaises(KeyError, self.db.user.restore, newid) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
671 |
|
1951
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
672 self.assertRaises(TypeError, self.db.issue.lookup, 'fubar') |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
673 |
|
2089
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
674 # label property |
|
1951
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
675 def testLabelProp(self): |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
676 # key prop |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
677 self.assertEqual(self.db.status.labelprop(), 'name') |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
678 self.assertEqual(self.db.user.labelprop(), 'username') |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
679 # title |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
680 self.assertEqual(self.db.issue.labelprop(), 'title') |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
681 # name |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
682 self.assertEqual(self.db.file.labelprop(), 'name') |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
683 # id |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
684 self.assertEqual(self.db.stuff.labelprop(default_to_id=1), 'id') |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
685 |
|
2089
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
686 # retirement |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
687 def testRetire(self): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
688 self.db.issue.create(title="spam", status='1') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
689 b = self.db.status.get('1', 'name') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
690 a = self.db.status.list() |
|
3486
34ada15b9936
all backends implement the retired check in getnodeids [SF#1290560]
Richard Jones <richard@users.sourceforge.net>
parents:
3457
diff
changeset
|
691 nodeids = self.db.status.getnodeids() |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
692 self.db.status.retire('1') |
|
3486
34ada15b9936
all backends implement the retired check in getnodeids [SF#1290560]
Richard Jones <richard@users.sourceforge.net>
parents:
3457
diff
changeset
|
693 others = nodeids[:] |
|
34ada15b9936
all backends implement the retired check in getnodeids [SF#1290560]
Richard Jones <richard@users.sourceforge.net>
parents:
3457
diff
changeset
|
694 others.remove('1') |
|
34ada15b9936
all backends implement the retired check in getnodeids [SF#1290560]
Richard Jones <richard@users.sourceforge.net>
parents:
3457
diff
changeset
|
695 |
|
4089
eddb82d0964c
Add compatibility package to allow us to deal with Python versions 2.3..2.6.
Richard Jones <richard@users.sourceforge.net>
parents:
4082
diff
changeset
|
696 self.assertEqual(set(self.db.status.getnodeids()), |
|
eddb82d0964c
Add compatibility package to allow us to deal with Python versions 2.3..2.6.
Richard Jones <richard@users.sourceforge.net>
parents:
4082
diff
changeset
|
697 set(nodeids)) |
|
eddb82d0964c
Add compatibility package to allow us to deal with Python versions 2.3..2.6.
Richard Jones <richard@users.sourceforge.net>
parents:
4082
diff
changeset
|
698 self.assertEqual(set(self.db.status.getnodeids(retired=True)), |
|
eddb82d0964c
Add compatibility package to allow us to deal with Python versions 2.3..2.6.
Richard Jones <richard@users.sourceforge.net>
parents:
4082
diff
changeset
|
699 set(['1'])) |
|
eddb82d0964c
Add compatibility package to allow us to deal with Python versions 2.3..2.6.
Richard Jones <richard@users.sourceforge.net>
parents:
4082
diff
changeset
|
700 self.assertEqual(set(self.db.status.getnodeids(retired=False)), |
|
eddb82d0964c
Add compatibility package to allow us to deal with Python versions 2.3..2.6.
Richard Jones <richard@users.sourceforge.net>
parents:
4082
diff
changeset
|
701 set(others)) |
|
3486
34ada15b9936
all backends implement the retired check in getnodeids [SF#1290560]
Richard Jones <richard@users.sourceforge.net>
parents:
3457
diff
changeset
|
702 |
|
5649
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5494
diff
changeset
|
703 self.assertTrue(self.db.status.is_retired('1')) |
|
3486
34ada15b9936
all backends implement the retired check in getnodeids [SF#1290560]
Richard Jones <richard@users.sourceforge.net>
parents:
3457
diff
changeset
|
704 |
|
2680
c26a9a5a25d2
rdbms backends require new config object. make one.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2605
diff
changeset
|
705 # make sure the list is different |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
706 self.assertNotEqual(a, self.db.status.list()) |
|
3486
34ada15b9936
all backends implement the retired check in getnodeids [SF#1290560]
Richard Jones <richard@users.sourceforge.net>
parents:
3457
diff
changeset
|
707 |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
708 # can still access the node if necessary |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
709 self.assertEqual(self.db.status.get('1', 'name'), b) |
|
1951
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
710 self.assertRaises(IndexError, self.db.status.set, '1', name='hello') |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
711 self.db.commit() |
|
5649
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5494
diff
changeset
|
712 self.assertTrue(self.db.status.is_retired('1')) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
713 self.assertEqual(self.db.status.get('1', 'name'), b) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
714 self.assertNotEqual(a, self.db.status.list()) |
|
3486
34ada15b9936
all backends implement the retired check in getnodeids [SF#1290560]
Richard Jones <richard@users.sourceforge.net>
parents:
3457
diff
changeset
|
715 |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
716 # try to restore retired node |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
717 self.db.status.restore('1') |
|
2680
c26a9a5a25d2
rdbms backends require new config object. make one.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2605
diff
changeset
|
718 |
|
5649
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5494
diff
changeset
|
719 self.assertTrue(not self.db.status.is_retired('1')) |
|
3486
34ada15b9936
all backends implement the retired check in getnodeids [SF#1290560]
Richard Jones <richard@users.sourceforge.net>
parents:
3457
diff
changeset
|
720 |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
721 def testCacheCreateSet(self): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
722 self.db.issue.create(title="spam", status='1') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
723 a = self.db.issue.get('1', 'title') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
724 self.assertEqual(a, 'spam') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
725 self.db.issue.set('1', title='ham') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
726 b = self.db.issue.get('1', 'title') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
727 self.assertEqual(b, 'ham') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
728 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
729 def testSerialisation(self): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
730 nid = self.db.issue.create(title="spam", status='1', |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
731 deadline=date.Date(), foo=date.Interval('-1d')) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
732 self.db.commit() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
733 assert isinstance(self.db.issue.get(nid, 'deadline'), date.Date) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
734 assert isinstance(self.db.issue.get(nid, 'foo'), date.Interval) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
735 uid = self.db.user.create(username="fozzy", |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
736 password=password.Password('t. bear')) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
737 self.db.commit() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
738 assert isinstance(self.db.user.get(uid, 'password'), password.Password) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
739 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
740 def testTransactions(self): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
741 # remember the number of items we started |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
742 num_issues = len(self.db.issue.list()) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
743 num_files = self.db.numfiles() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
744 self.db.issue.create(title="don't commit me!", status='1') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
745 self.assertNotEqual(num_issues, len(self.db.issue.list())) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
746 self.db.rollback() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
747 self.assertEqual(num_issues, len(self.db.issue.list())) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
748 self.db.issue.create(title="please commit me!", status='1') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
749 self.assertNotEqual(num_issues, len(self.db.issue.list())) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
750 self.db.commit() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
751 self.assertNotEqual(num_issues, len(self.db.issue.list())) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
752 self.db.rollback() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
753 self.assertNotEqual(num_issues, len(self.db.issue.list())) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
754 self.db.file.create(name="test", type="text/plain", content="hi") |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
755 self.db.rollback() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
756 self.assertEqual(num_files, self.db.numfiles()) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
757 for i in range(10): |
|
2680
c26a9a5a25d2
rdbms backends require new config object. make one.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2605
diff
changeset
|
758 self.db.file.create(name="test", type="text/plain", |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
759 content="hi %d"%(i)) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
760 self.db.commit() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
761 num_files2 = self.db.numfiles() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
762 self.assertNotEqual(num_files, num_files2) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
763 self.db.file.create(name="test", type="text/plain", content="hi") |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
764 self.db.rollback() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
765 self.assertNotEqual(num_files, self.db.numfiles()) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
766 self.assertEqual(num_files2, self.db.numfiles()) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
767 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
768 # rollback / cache interaction |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
769 name1 = self.db.user.get('1', 'username') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
770 self.db.user.set('1', username = name1+name1) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
771 # get the prop so the info's forced into the cache (if there is one) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
772 self.db.user.get('1', 'username') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
773 self.db.rollback() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
774 name2 = self.db.user.get('1', 'username') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
775 self.assertEqual(name1, name2) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
776 |
|
3906
666b70676ec6
destroy blobfiles if they exist
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3882
diff
changeset
|
777 def testDestroyBlob(self): |
|
666b70676ec6
destroy blobfiles if they exist
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3882
diff
changeset
|
778 # destroy an uncommitted blob |
|
666b70676ec6
destroy blobfiles if they exist
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3882
diff
changeset
|
779 f1 = self.db.file.create(content='hello', type="text/plain") |
|
666b70676ec6
destroy blobfiles if they exist
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3882
diff
changeset
|
780 self.db.commit() |
|
666b70676ec6
destroy blobfiles if they exist
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3882
diff
changeset
|
781 fn = self.db.filename('file', f1) |
|
666b70676ec6
destroy blobfiles if they exist
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3882
diff
changeset
|
782 self.db.file.destroy(f1) |
|
666b70676ec6
destroy blobfiles if they exist
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3882
diff
changeset
|
783 self.db.commit() |
|
666b70676ec6
destroy blobfiles if they exist
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3882
diff
changeset
|
784 self.assertEqual(os.path.exists(fn), False) |
|
666b70676ec6
destroy blobfiles if they exist
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3882
diff
changeset
|
785 |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
786 def testDestroyNoJournalling(self): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
787 self.innerTestDestroy(klass=self.db.session) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
788 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
789 def testDestroyJournalling(self): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
790 self.innerTestDestroy(klass=self.db.issue) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
791 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
792 def innerTestDestroy(self, klass): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
793 newid = klass.create(title='Mr Friendly') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
794 n = len(klass.list()) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
795 self.assertEqual(klass.get(newid, 'title'), 'Mr Friendly') |
|
1951
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
796 count = klass.count() |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
797 klass.destroy(newid) |
|
1951
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
798 self.assertNotEqual(count, klass.count()) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
799 self.assertRaises(IndexError, klass.get, newid, 'title') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
800 self.assertNotEqual(len(klass.list()), n) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
801 if klass.do_journal: |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
802 self.assertRaises(IndexError, klass.history, newid) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
803 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
804 # now with a commit |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
805 newid = klass.create(title='Mr Friendly') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
806 n = len(klass.list()) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
807 self.assertEqual(klass.get(newid, 'title'), 'Mr Friendly') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
808 self.db.commit() |
|
1951
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
809 count = klass.count() |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
810 klass.destroy(newid) |
|
1951
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
811 self.assertNotEqual(count, klass.count()) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
812 self.assertRaises(IndexError, klass.get, newid, 'title') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
813 self.db.commit() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
814 self.assertRaises(IndexError, klass.get, newid, 'title') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
815 self.assertNotEqual(len(klass.list()), n) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
816 if klass.do_journal: |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
817 self.assertRaises(IndexError, klass.history, newid) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
818 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
819 # now with a rollback |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
820 newid = klass.create(title='Mr Friendly') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
821 n = len(klass.list()) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
822 self.assertEqual(klass.get(newid, 'title'), 'Mr Friendly') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
823 self.db.commit() |
|
1951
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
824 count = klass.count() |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
825 klass.destroy(newid) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
826 self.assertNotEqual(len(klass.list()), n) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
827 self.assertRaises(IndexError, klass.get, newid, 'title') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
828 self.db.rollback() |
|
1951
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
829 self.assertEqual(count, klass.count()) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
830 self.assertEqual(klass.get(newid, 'title'), 'Mr Friendly') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
831 self.assertEqual(len(klass.list()), n) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
832 if klass.do_journal: |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
833 self.assertNotEqual(klass.history(newid), []) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
834 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
835 def testExceptions(self): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
836 # this tests the exceptions that should be raised |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
837 ar = self.assertRaises |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
838 |
|
1951
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
839 ar(KeyError, self.db.getclass, 'fubar') |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
840 |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
841 # |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
842 # class create |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
843 # |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
844 # string property |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
845 ar(TypeError, self.db.status.create, name=1) |
|
1951
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
846 # id, creation, creator and activity properties are reserved |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
847 ar(KeyError, self.db.status.create, id=1) |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
848 ar(KeyError, self.db.status.create, creation=1) |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
849 ar(KeyError, self.db.status.create, creator=1) |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
850 ar(KeyError, self.db.status.create, activity=1) |
|
2077
3e0961d6d44d
Added the "actor" property.
Richard Jones <richard@users.sourceforge.net>
parents:
2075
diff
changeset
|
851 ar(KeyError, self.db.status.create, actor=1) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
852 # invalid property name |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
853 ar(KeyError, self.db.status.create, foo='foo') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
854 # key name clash |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
855 ar(ValueError, self.db.status.create, name='unread') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
856 # invalid link index |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
857 ar(IndexError, self.db.issue.create, title='foo', status='bar') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
858 # invalid link value |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
859 ar(ValueError, self.db.issue.create, title='foo', status=1) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
860 # invalid multilink type |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
861 ar(TypeError, self.db.issue.create, title='foo', status='1', |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
862 nosy='hello') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
863 # invalid multilink index type |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
864 ar(ValueError, self.db.issue.create, title='foo', status='1', |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
865 nosy=[1]) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
866 # invalid multilink index |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
867 ar(IndexError, self.db.issue.create, title='foo', status='1', |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
868 nosy=['10']) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
869 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
870 # |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
871 # key property |
|
2680
c26a9a5a25d2
rdbms backends require new config object. make one.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2605
diff
changeset
|
872 # |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
873 # key must be a String |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
874 ar(TypeError, self.db.file.setkey, 'fooz') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
875 # key must exist |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
876 ar(KeyError, self.db.file.setkey, 'fubar') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
877 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
878 # |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
879 # class get |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
880 # |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
881 # invalid node id |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
882 ar(IndexError, self.db.issue.get, '99', 'title') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
883 # invalid property name |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
884 ar(KeyError, self.db.status.get, '2', 'foo') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
885 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
886 # |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
887 # class set |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
888 # |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
889 # invalid node id |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
890 ar(IndexError, self.db.issue.set, '99', title='foo') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
891 # invalid property name |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
892 ar(KeyError, self.db.status.set, '1', foo='foo') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
893 # string property |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
894 ar(TypeError, self.db.status.set, '1', name=1) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
895 # key name clash |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
896 ar(ValueError, self.db.status.set, '2', name='unread') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
897 # set up a valid issue for me to work on |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
898 id = self.db.issue.create(title="spam", status='1') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
899 # invalid link index |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
900 ar(IndexError, self.db.issue.set, id, title='foo', status='bar') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
901 # invalid link value |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
902 ar(ValueError, self.db.issue.set, id, title='foo', status=1) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
903 # invalid multilink type |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
904 ar(TypeError, self.db.issue.set, id, title='foo', status='1', |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
905 nosy='hello') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
906 # invalid multilink index type |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
907 ar(ValueError, self.db.issue.set, id, title='foo', status='1', |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
908 nosy=[1]) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
909 # invalid multilink index |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
910 ar(IndexError, self.db.issue.set, id, title='foo', status='1', |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
911 nosy=['10']) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
912 # NOTE: the following increment the username to avoid problems |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
913 # within metakit's backend (it creates the node, and then sets the |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
914 # info, so the create (and by a fluke the username set) go through |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
915 # before the age/assignable/etc. set, which raises the exception) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
916 # invalid number value |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
917 ar(TypeError, self.db.user.create, username='foo', age='a') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
918 # invalid boolean value |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
919 ar(TypeError, self.db.user.create, username='foo2', assignable='true') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
920 nid = self.db.user.create(username='foo3') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
921 # invalid number value |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
922 ar(TypeError, self.db.user.set, nid, age='a') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
923 # invalid boolean value |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
924 ar(TypeError, self.db.user.set, nid, assignable='true') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
925 |
|
3743
e754cc14e76a
fix unstable ordering of detectors [SF#1585378]
Richard Jones <richard@users.sourceforge.net>
parents:
3692
diff
changeset
|
926 def testAuditors(self): |
|
e754cc14e76a
fix unstable ordering of detectors [SF#1585378]
Richard Jones <richard@users.sourceforge.net>
parents:
3692
diff
changeset
|
927 class test: |
|
e754cc14e76a
fix unstable ordering of detectors [SF#1585378]
Richard Jones <richard@users.sourceforge.net>
parents:
3692
diff
changeset
|
928 called = False |
|
e754cc14e76a
fix unstable ordering of detectors [SF#1585378]
Richard Jones <richard@users.sourceforge.net>
parents:
3692
diff
changeset
|
929 def call(self, *args): self.called = True |
|
e754cc14e76a
fix unstable ordering of detectors [SF#1585378]
Richard Jones <richard@users.sourceforge.net>
parents:
3692
diff
changeset
|
930 create = test() |
|
e754cc14e76a
fix unstable ordering of detectors [SF#1585378]
Richard Jones <richard@users.sourceforge.net>
parents:
3692
diff
changeset
|
931 |
|
e754cc14e76a
fix unstable ordering of detectors [SF#1585378]
Richard Jones <richard@users.sourceforge.net>
parents:
3692
diff
changeset
|
932 self.db.user.audit('create', create.call) |
|
e754cc14e76a
fix unstable ordering of detectors [SF#1585378]
Richard Jones <richard@users.sourceforge.net>
parents:
3692
diff
changeset
|
933 self.db.user.create(username="mary") |
|
e754cc14e76a
fix unstable ordering of detectors [SF#1585378]
Richard Jones <richard@users.sourceforge.net>
parents:
3692
diff
changeset
|
934 self.assertEqual(create.called, True) |
|
e754cc14e76a
fix unstable ordering of detectors [SF#1585378]
Richard Jones <richard@users.sourceforge.net>
parents:
3692
diff
changeset
|
935 |
|
e754cc14e76a
fix unstable ordering of detectors [SF#1585378]
Richard Jones <richard@users.sourceforge.net>
parents:
3692
diff
changeset
|
936 set = test() |
|
e754cc14e76a
fix unstable ordering of detectors [SF#1585378]
Richard Jones <richard@users.sourceforge.net>
parents:
3692
diff
changeset
|
937 self.db.user.audit('set', set.call) |
|
e754cc14e76a
fix unstable ordering of detectors [SF#1585378]
Richard Jones <richard@users.sourceforge.net>
parents:
3692
diff
changeset
|
938 self.db.user.set('1', username="joe") |
|
e754cc14e76a
fix unstable ordering of detectors [SF#1585378]
Richard Jones <richard@users.sourceforge.net>
parents:
3692
diff
changeset
|
939 self.assertEqual(set.called, True) |
|
e754cc14e76a
fix unstable ordering of detectors [SF#1585378]
Richard Jones <richard@users.sourceforge.net>
parents:
3692
diff
changeset
|
940 |
|
e754cc14e76a
fix unstable ordering of detectors [SF#1585378]
Richard Jones <richard@users.sourceforge.net>
parents:
3692
diff
changeset
|
941 retire = test() |
|
e754cc14e76a
fix unstable ordering of detectors [SF#1585378]
Richard Jones <richard@users.sourceforge.net>
parents:
3692
diff
changeset
|
942 self.db.user.audit('retire', retire.call) |
|
e754cc14e76a
fix unstable ordering of detectors [SF#1585378]
Richard Jones <richard@users.sourceforge.net>
parents:
3692
diff
changeset
|
943 self.db.user.retire('1') |
|
e754cc14e76a
fix unstable ordering of detectors [SF#1585378]
Richard Jones <richard@users.sourceforge.net>
parents:
3692
diff
changeset
|
944 self.assertEqual(retire.called, True) |
|
e754cc14e76a
fix unstable ordering of detectors [SF#1585378]
Richard Jones <richard@users.sourceforge.net>
parents:
3692
diff
changeset
|
945 |
|
e754cc14e76a
fix unstable ordering of detectors [SF#1585378]
Richard Jones <richard@users.sourceforge.net>
parents:
3692
diff
changeset
|
946 def testAuditorTwo(self): |
|
e754cc14e76a
fix unstable ordering of detectors [SF#1585378]
Richard Jones <richard@users.sourceforge.net>
parents:
3692
diff
changeset
|
947 class test: |
|
e754cc14e76a
fix unstable ordering of detectors [SF#1585378]
Richard Jones <richard@users.sourceforge.net>
parents:
3692
diff
changeset
|
948 n = 0 |
|
e754cc14e76a
fix unstable ordering of detectors [SF#1585378]
Richard Jones <richard@users.sourceforge.net>
parents:
3692
diff
changeset
|
949 def a(self, *args): self.call_a = self.n; self.n += 1 |
|
e754cc14e76a
fix unstable ordering of detectors [SF#1585378]
Richard Jones <richard@users.sourceforge.net>
parents:
3692
diff
changeset
|
950 def b(self, *args): self.call_b = self.n; self.n += 1 |
|
e754cc14e76a
fix unstable ordering of detectors [SF#1585378]
Richard Jones <richard@users.sourceforge.net>
parents:
3692
diff
changeset
|
951 def c(self, *args): self.call_c = self.n; self.n += 1 |
|
e754cc14e76a
fix unstable ordering of detectors [SF#1585378]
Richard Jones <richard@users.sourceforge.net>
parents:
3692
diff
changeset
|
952 test = test() |
|
e754cc14e76a
fix unstable ordering of detectors [SF#1585378]
Richard Jones <richard@users.sourceforge.net>
parents:
3692
diff
changeset
|
953 self.db.user.audit('create', test.b, 1) |
|
e754cc14e76a
fix unstable ordering of detectors [SF#1585378]
Richard Jones <richard@users.sourceforge.net>
parents:
3692
diff
changeset
|
954 self.db.user.audit('create', test.a, 1) |
|
e754cc14e76a
fix unstable ordering of detectors [SF#1585378]
Richard Jones <richard@users.sourceforge.net>
parents:
3692
diff
changeset
|
955 self.db.user.audit('create', test.c, 2) |
|
e754cc14e76a
fix unstable ordering of detectors [SF#1585378]
Richard Jones <richard@users.sourceforge.net>
parents:
3692
diff
changeset
|
956 self.db.user.create(username="mary") |
|
e754cc14e76a
fix unstable ordering of detectors [SF#1585378]
Richard Jones <richard@users.sourceforge.net>
parents:
3692
diff
changeset
|
957 self.assertEqual(test.call_a, 0) |
|
e754cc14e76a
fix unstable ordering of detectors [SF#1585378]
Richard Jones <richard@users.sourceforge.net>
parents:
3692
diff
changeset
|
958 self.assertEqual(test.call_b, 1) |
|
e754cc14e76a
fix unstable ordering of detectors [SF#1585378]
Richard Jones <richard@users.sourceforge.net>
parents:
3692
diff
changeset
|
959 self.assertEqual(test.call_c, 2) |
|
e754cc14e76a
fix unstable ordering of detectors [SF#1585378]
Richard Jones <richard@users.sourceforge.net>
parents:
3692
diff
changeset
|
960 |
|
5112
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
961 def testDefault_Value(self): |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
962 new_issue=self.db.issue.create(title="title", deadline=date.Date('2016-6-30.22:39')) |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
963 |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
964 # John Rouillard claims this should return the default value of 1 week for foo, |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
965 # but the hyperdb doesn't assign the default value for missing properties in the |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
966 # db on creation. |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
967 result=self.db.issue.get(new_issue, 'foo') |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
968 # When the defaultis automatically set by the hyperdb, change this to |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
969 # match the Interval test below. |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
970 self.assertEqual(result, None) |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
971 |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
972 # but verify that the default value is retreivable |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
973 result=self.db.issue.properties['foo'].get_default_value() |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
974 self.assertEqual(result, date.Interval('-7d')) |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
975 |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
976 def testQuietProperty(self): |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
977 # make sure that the quiet properties: "assignable" and "age" are not |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
978 # returned as part of the proplist |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
979 new_user=self.db.user.create(username="pete", age=10, assignable=False) |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
980 new_issue=self.db.issue.create(title="title", deadline=date.Date('2016-6-30.22:39')) |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
981 # change all quiet params. Verify they aren't returned in object. |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
982 # between this and the issue class every type represented in hyperdb |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
983 # should be initalized with a quiet parameter. |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
984 result=self.db.user.set(new_user, username="new", age=20, supervisor='3', assignable=True, |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
985 password=password.Password("3456"), rating=4, realname="newname") |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
986 self.assertEqual(result, {'supervisor': '3', 'username': "new"}) |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
987 result=self.db.user.get(new_user, 'age') |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
988 self.assertEqual(result, 20) |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
989 |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
990 # change all quiet params. Verify they aren't returned in object. |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
991 result=self.db.issue.set(new_issue, title="title2", deadline=date.Date('2016-7-13.22:39'), |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
992 assignedto="2", nosy=["3", "2"]) |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
993 self.assertEqual(result, {'title': 'title2'}) |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
994 |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
995 # also test that we can make a property noisy |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
996 self.db.user.properties['age'].quiet=False |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
997 result=self.db.user.set(new_user, username="old", age=30, supervisor='2', assignable=False) |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
998 self.assertEqual(result, {'age': 30, 'supervisor': '2', 'username': "old"}) |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
999 self.db.user.properties['age'].quiet=True |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1000 |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1001 def testQuietChangenote(self): |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1002 # create user 3 for later use |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1003 self.db.user.create(username="pete", age=10, assignable=False) |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1004 |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1005 new_issue=self.db.issue.create(title="title", deadline=date.Date('2016-6-30.22:39')) |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1006 |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1007 # change all quiet params. Verify they aren't returned in CreateNote. |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1008 result=self.db.issue.set(new_issue, title="title2", deadline=date.Date('2016-6-30.22:39'), |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1009 assignedto="2", nosy=["3", "2"]) |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1010 result=self.db.issue.generateCreateNote(new_issue) |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1011 self.assertEqual(result, '\n----------\ntitle: title2') |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1012 |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1013 # also test that we can make a property noisy |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1014 self.db.issue.properties['nosy'].quiet=False |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1015 self.db.issue.properties['deadline'].quiet=False |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1016 result=self.db.issue.set(new_issue, title="title2", deadline=date.Date('2016-7-13.22:39'), |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1017 assignedto="2", nosy=["1", "2"]) |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1018 result=self.db.issue.generateCreateNote(new_issue) |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1019 self.assertEqual(result, '\n----------\ndeadline: 2016-07-13.22:39:00\nnosy: admin, fred\ntitle: title2') |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1020 self.db.issue.properties['nosy'].quiet=True |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1021 self.db.issue.properties['deadline'].quiet=True |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1022 |
|
5232
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1023 def testViewPremJournal(self): |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1024 pass |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1025 |
|
5112
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1026 def testQuietJournal(self): |
|
5261
53a853c06e9a
Fixed quiet history filter for linked items. Test for same fixed.
John Rouillard <rouilj@ieee.org>
parents:
5248
diff
changeset
|
1027 ## This is an example of how to enable logging module |
|
53a853c06e9a
Fixed quiet history filter for linked items. Test for same fixed.
John Rouillard <rouilj@ieee.org>
parents:
5248
diff
changeset
|
1028 ## and report the results. It uses testfixtures |
|
53a853c06e9a
Fixed quiet history filter for linked items. Test for same fixed.
John Rouillard <rouilj@ieee.org>
parents:
5248
diff
changeset
|
1029 ## that can be installed via pip. |
|
53a853c06e9a
Fixed quiet history filter for linked items. Test for same fixed.
John Rouillard <rouilj@ieee.org>
parents:
5248
diff
changeset
|
1030 ## Uncomment below 2 lines: |
|
5263
f015df5f8edf
Also comment out testfixture used to capture debug logging.
John Rouillard <rouilj@ieee.org>
parents:
5262
diff
changeset
|
1031 #import logging |
|
f015df5f8edf
Also comment out testfixture used to capture debug logging.
John Rouillard <rouilj@ieee.org>
parents:
5262
diff
changeset
|
1032 #from testfixtures import LogCapture |
|
5261
53a853c06e9a
Fixed quiet history filter for linked items. Test for same fixed.
John Rouillard <rouilj@ieee.org>
parents:
5248
diff
changeset
|
1033 ## then run every call to roundup functions with: |
|
53a853c06e9a
Fixed quiet history filter for linked items. Test for same fixed.
John Rouillard <rouilj@ieee.org>
parents:
5248
diff
changeset
|
1034 #with LogCapture('roundup.hyperdb', level=logging.DEBUG) as l: |
|
53a853c06e9a
Fixed quiet history filter for linked items. Test for same fixed.
John Rouillard <rouilj@ieee.org>
parents:
5248
diff
changeset
|
1035 # result=self.db.user.history('2') |
|
53a853c06e9a
Fixed quiet history filter for linked items. Test for same fixed.
John Rouillard <rouilj@ieee.org>
parents:
5248
diff
changeset
|
1036 #print l |
|
53a853c06e9a
Fixed quiet history filter for linked items. Test for same fixed.
John Rouillard <rouilj@ieee.org>
parents:
5248
diff
changeset
|
1037 ## change 'roundup.hyperdb' to the logging name you want to capture. |
|
53a853c06e9a
Fixed quiet history filter for linked items. Test for same fixed.
John Rouillard <rouilj@ieee.org>
parents:
5248
diff
changeset
|
1038 ## print l just prints the output. Run using: |
|
53a853c06e9a
Fixed quiet history filter for linked items. Test for same fixed.
John Rouillard <rouilj@ieee.org>
parents:
5248
diff
changeset
|
1039 ## ./run_tests.py --capture=no -k testQuietJournal test/test_anydbm.py |
|
53a853c06e9a
Fixed quiet history filter for linked items. Test for same fixed.
John Rouillard <rouilj@ieee.org>
parents:
5248
diff
changeset
|
1040 |
|
5232
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1041 # FIXME There should be a test via |
|
5112
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1042 # template.py::_HTMLItem::history() and verify the output. |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1043 # not sure how to get there from here. -- rouilj |
|
5232
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1044 |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1045 # The Class::history() method now does filtering of quiet |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1046 # props. Make sure that the quiet properties: "assignable" |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1047 # and "age" are not returned as part of the journal |
|
5112
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1048 new_user=self.db.user.create(username="pete", age=10, assignable=False) |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1049 new_issue=self.db.issue.create(title="title", deadline=date.Date('2016-6-30.22:39')) |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1050 |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1051 # change all quiet params. Verify they aren't returned in journal. |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1052 # between this and the issue class every type represented in hyperdb |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1053 # should be initalized with a quiet parameter. |
|
5232
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1054 result=self.db.user.set(new_user, username="new", age=20, |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1055 supervisor='1', assignable=True, |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1056 password=password.Password("3456"), |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1057 rating=4, realname="newname") |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1058 result=self.db.user.history(new_user, skipquiet=False) |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1059 ''' |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1060 [('3', <Date 2017-04-14.02:12:20.922>, '1', 'create', {}), |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1061 ('3', <Date 2017-04-14.02:12:20.922>, '1', 'set', |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1062 {'username': 'pete', 'assignable': False, |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1063 'supervisor': None, 'realname': None, 'rating': None, |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1064 'age': 10, 'password': None})] |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1065 ''' |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1066 expected = {'username': 'pete', 'assignable': False, |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1067 'supervisor': None, 'realname': None, 'rating': None, |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1068 'age': 10, 'password': None} |
|
5112
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1069 |
|
5232
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1070 result.sort() |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1071 (id, tx_date, user, action, args) = result[-1] |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1072 # check piecewise ignoring date of transaction |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1073 self.assertEqual('3', id) |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1074 self.assertEqual('1', user) |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1075 self.assertEqual('set', action) |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1076 self.assertEqual(expected, args) |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1077 |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1078 # change all quiet params on issue. |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1079 result=self.db.issue.set(new_issue, title="title2", |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1080 deadline=date.Date('2016-07-30.22:39'), |
|
5112
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1081 assignedto="2", nosy=["3", "2"]) |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1082 result=self.db.issue.generateCreateNote(new_issue) |
|
5232
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1083 self.assertEqual(result, '\n----------\ntitle: title2') |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1084 |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1085 # check history including quiet properties |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1086 result=self.db.issue.history(new_issue, skipquiet=False) |
|
5376
64b05e24dbd8
Python 3 preparation: convert print to a function.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5330
diff
changeset
|
1087 print(result) |
|
5232
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1088 ''' output should be like: |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1089 [ ... ('1', <Date 2017-04-14.01:41:08.466>, '1', 'set', |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1090 {'assignedto': None, 'nosy': (('+', ['3', '2']),), |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1091 'deadline': <Date 2016-06-30.22:39:00.000>, |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1092 'title': 'title'}) |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1093 ''' |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1094 expected = {'assignedto': None, |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1095 'nosy': (('+', ['3', '2']),), |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1096 'deadline': date.Date('2016-06-30.22:39'), |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1097 'title': 'title'} |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1098 |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1099 result.sort() |
|
5376
64b05e24dbd8
Python 3 preparation: convert print to a function.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5330
diff
changeset
|
1100 print("history include quiet props", result[-1]) |
|
5232
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1101 (id, tx_date, user, action, args) = result[-1] |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1102 # check piecewise ignoring date of transaction |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1103 self.assertEqual('1', id) |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1104 self.assertEqual('1', user) |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1105 self.assertEqual('set', action) |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1106 self.assertEqual(expected, args) |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1107 |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1108 # check history removing quiet properties |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1109 result=self.db.issue.history(new_issue) |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1110 ''' output should be like: |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1111 [ ... ('1', <Date 2017-04-14.01:41:08.466>, '1', 'set', |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1112 {'title': 'title'}) |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1113 ''' |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1114 expected = {'title': 'title'} |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1115 |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1116 result.sort() |
|
5376
64b05e24dbd8
Python 3 preparation: convert print to a function.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5330
diff
changeset
|
1117 print("history remove quiet props", result[-1]) |
|
5232
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1118 (id, tx_date, user, action, args) = result[-1] |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1119 # check piecewise |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1120 self.assertEqual('1', id) |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1121 self.assertEqual('1', user) |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1122 self.assertEqual('set', action) |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1123 self.assertEqual(expected, args) |
|
5112
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1124 |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1125 # also test that we can make a property noisy |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1126 self.db.issue.properties['nosy'].quiet=False |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1127 self.db.issue.properties['deadline'].quiet=False |
|
5234
d8457c376a38
Work around for missing fractional second support in our use of mysql.
John Rouillard <rouilj@ieee.org>
parents:
5233
diff
changeset
|
1128 |
|
d8457c376a38
Work around for missing fractional second support in our use of mysql.
John Rouillard <rouilj@ieee.org>
parents:
5233
diff
changeset
|
1129 # FIXME: mysql use should be fixed or |
|
d8457c376a38
Work around for missing fractional second support in our use of mysql.
John Rouillard <rouilj@ieee.org>
parents:
5233
diff
changeset
|
1130 # a different way of checking this should be done. |
|
d8457c376a38
Work around for missing fractional second support in our use of mysql.
John Rouillard <rouilj@ieee.org>
parents:
5233
diff
changeset
|
1131 # this sleep is a hack. |
|
d8457c376a38
Work around for missing fractional second support in our use of mysql.
John Rouillard <rouilj@ieee.org>
parents:
5233
diff
changeset
|
1132 # mysql transation timestamps are in whole |
|
d8457c376a38
Work around for missing fractional second support in our use of mysql.
John Rouillard <rouilj@ieee.org>
parents:
5233
diff
changeset
|
1133 # seconds. To get the history to sort in proper |
|
d8457c376a38
Work around for missing fractional second support in our use of mysql.
John Rouillard <rouilj@ieee.org>
parents:
5233
diff
changeset
|
1134 # order by using timestamps we have to sleep 2 seconds |
|
d8457c376a38
Work around for missing fractional second support in our use of mysql.
John Rouillard <rouilj@ieee.org>
parents:
5233
diff
changeset
|
1135 # here tomake sure the timestamp between this transaction |
|
d8457c376a38
Work around for missing fractional second support in our use of mysql.
John Rouillard <rouilj@ieee.org>
parents:
5233
diff
changeset
|
1136 # and the last transaction is at least 1 second apart. |
|
d8457c376a38
Work around for missing fractional second support in our use of mysql.
John Rouillard <rouilj@ieee.org>
parents:
5233
diff
changeset
|
1137 import time; time.sleep(2) |
|
5232
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1138 result=self.db.issue.set(new_issue, title="title2", |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1139 deadline=date.Date('2016-7-13.22:39'), |
|
5112
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1140 assignedto="2", nosy=["1", "2"]) |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1141 result=self.db.issue.generateCreateNote(new_issue) |
|
5232
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1142 self.assertEqual(result, '\n----------\ndeadline: 2016-07-13.22:39:00\nnosy: admin, fred\ntitle: title2') |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1143 |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1144 |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1145 # check history removing the current quiet properties |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1146 result=self.db.issue.history(new_issue) |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1147 expected = {'nosy': (('+', ['1']), ('-', ['3'])), |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1148 'deadline': date.Date("2016-07-30.22:39:00.000")} |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1149 |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1150 result.sort() |
|
5376
64b05e24dbd8
Python 3 preparation: convert print to a function.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5330
diff
changeset
|
1151 print("result unquiet", result) |
|
5232
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1152 (id, tx_date, user, action, args) = result[-1] |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1153 # check piecewise |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1154 self.assertEqual('1', id) |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1155 self.assertEqual('1', user) |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1156 self.assertEqual('set', action) |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1157 self.assertEqual(expected, args) |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1158 |
|
5261
53a853c06e9a
Fixed quiet history filter for linked items. Test for same fixed.
John Rouillard <rouilj@ieee.org>
parents:
5248
diff
changeset
|
1159 result=self.db.user.history('2') |
|
5262
b5400cae9c2a
Make sure to sort the result otherwise anydbm and sql ordering is different.
John Rouillard <rouilj@ieee.org>
parents:
5261
diff
changeset
|
1160 result.sort() |
|
5261
53a853c06e9a
Fixed quiet history filter for linked items. Test for same fixed.
John Rouillard <rouilj@ieee.org>
parents:
5248
diff
changeset
|
1161 |
|
53a853c06e9a
Fixed quiet history filter for linked items. Test for same fixed.
John Rouillard <rouilj@ieee.org>
parents:
5248
diff
changeset
|
1162 # result should look like: |
|
5262
b5400cae9c2a
Make sure to sort the result otherwise anydbm and sql ordering is different.
John Rouillard <rouilj@ieee.org>
parents:
5261
diff
changeset
|
1163 # [('2', <Date 2017-08-29.01:42:40.227>, '1', 'create', {}), |
|
b5400cae9c2a
Make sure to sort the result otherwise anydbm and sql ordering is different.
John Rouillard <rouilj@ieee.org>
parents:
5261
diff
changeset
|
1164 # ('2', <Date 2017-08-29.01:42:44.283>, '1', 'link', |
|
b5400cae9c2a
Make sure to sort the result otherwise anydbm and sql ordering is different.
John Rouillard <rouilj@ieee.org>
parents:
5261
diff
changeset
|
1165 # ('issue', '1', 'nosy')) ] |
|
5261
53a853c06e9a
Fixed quiet history filter for linked items. Test for same fixed.
John Rouillard <rouilj@ieee.org>
parents:
5248
diff
changeset
|
1166 |
|
53a853c06e9a
Fixed quiet history filter for linked items. Test for same fixed.
John Rouillard <rouilj@ieee.org>
parents:
5248
diff
changeset
|
1167 expected2 = ('issue', '1', 'nosy') |
|
5262
b5400cae9c2a
Make sure to sort the result otherwise anydbm and sql ordering is different.
John Rouillard <rouilj@ieee.org>
parents:
5261
diff
changeset
|
1168 |
|
b5400cae9c2a
Make sure to sort the result otherwise anydbm and sql ordering is different.
John Rouillard <rouilj@ieee.org>
parents:
5261
diff
changeset
|
1169 (id, tx_date, user, action, args) = result[-1] |
|
5261
53a853c06e9a
Fixed quiet history filter for linked items. Test for same fixed.
John Rouillard <rouilj@ieee.org>
parents:
5248
diff
changeset
|
1170 |
|
53a853c06e9a
Fixed quiet history filter for linked items. Test for same fixed.
John Rouillard <rouilj@ieee.org>
parents:
5248
diff
changeset
|
1171 self.assertEqual(len(result),2) |
|
53a853c06e9a
Fixed quiet history filter for linked items. Test for same fixed.
John Rouillard <rouilj@ieee.org>
parents:
5248
diff
changeset
|
1172 |
|
53a853c06e9a
Fixed quiet history filter for linked items. Test for same fixed.
John Rouillard <rouilj@ieee.org>
parents:
5248
diff
changeset
|
1173 self.assertEqual('2', id) |
|
53a853c06e9a
Fixed quiet history filter for linked items. Test for same fixed.
John Rouillard <rouilj@ieee.org>
parents:
5248
diff
changeset
|
1174 self.assertEqual('1', user) |
|
53a853c06e9a
Fixed quiet history filter for linked items. Test for same fixed.
John Rouillard <rouilj@ieee.org>
parents:
5248
diff
changeset
|
1175 self.assertEqual('link', action) |
|
53a853c06e9a
Fixed quiet history filter for linked items. Test for same fixed.
John Rouillard <rouilj@ieee.org>
parents:
5248
diff
changeset
|
1176 self.assertEqual(expected2, args) |
|
53a853c06e9a
Fixed quiet history filter for linked items. Test for same fixed.
John Rouillard <rouilj@ieee.org>
parents:
5248
diff
changeset
|
1177 |
|
5232
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1178 # reset quiet props |
|
5112
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1179 self.db.issue.properties['nosy'].quiet=True |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1180 self.db.issue.properties['deadline'].quiet=True |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1181 |
|
5232
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1182 # Change the role for the new_user. |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1183 # If journal is retrieved by admin this adds the role |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1184 # change as the last element. If retreived by non-admin |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1185 # it should not be returned because the user has no |
|
5235
9886917c8545
Add more sleeps to work around mysql timestamp issue.
John Rouillard <rouilj@ieee.org>
parents:
5234
diff
changeset
|
1186 # View permissons on role. |
|
9886917c8545
Add more sleeps to work around mysql timestamp issue.
John Rouillard <rouilj@ieee.org>
parents:
5234
diff
changeset
|
1187 # FIXME delay by two seconds due to mysql missing |
|
9886917c8545
Add more sleeps to work around mysql timestamp issue.
John Rouillard <rouilj@ieee.org>
parents:
5234
diff
changeset
|
1188 # fractional seconds. See sleep above for details |
|
9886917c8545
Add more sleeps to work around mysql timestamp issue.
John Rouillard <rouilj@ieee.org>
parents:
5234
diff
changeset
|
1189 time.sleep(2) |
|
5232
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1190 result=self.db.user.set(new_user, roles="foo, bar") |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1191 |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1192 # Verify last journal entry as admin is a role change |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1193 # from None |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1194 result=self.db.user.history(new_user, skipquiet=False) |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1195 result.sort() |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1196 ''' result should end like: |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1197 [ ... |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1198 ('3', <Date 2017-04-15.02:06:11.482>, '1', 'set', |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1199 {'username': 'pete', 'assignable': False, |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1200 'supervisor': None, 'realname': None, |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1201 'rating': None, 'age': 10, 'password': None}), |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1202 ('3', <Date 2017-04-15.02:06:11.482>, '1', 'link', |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1203 ('issue', '1', 'nosy')), |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1204 ('3', <Date 2017-04-15.02:06:11.482>, '1', 'unlink', |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1205 ('issue', '1', 'nosy')), |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1206 ('3', <Date 2017-04-15.02:06:11.482>, '1', 'set', |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1207 {'roles': None})] |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1208 ''' |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1209 (id, tx_date, user, action, args) = result[-1] |
|
5235
9886917c8545
Add more sleeps to work around mysql timestamp issue.
John Rouillard <rouilj@ieee.org>
parents:
5234
diff
changeset
|
1210 expected = {'roles': None } |
|
5232
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1211 |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1212 self.assertEqual('3', id) |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1213 self.assertEqual('1', user) |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1214 self.assertEqual('set', action) |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1215 self.assertEqual(expected, args) |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1216 |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1217 # set an existing user's role to User so it can |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1218 # view some props of the user class (search backwards |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1219 # for QuietJournal to see the properties, they should be: |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1220 # 'username', 'supervisor', 'assignable' i.e. age is not |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1221 # one of them. |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1222 id = self.db.user.lookup("fred") |
|
5235
9886917c8545
Add more sleeps to work around mysql timestamp issue.
John Rouillard <rouilj@ieee.org>
parents:
5234
diff
changeset
|
1223 # FIXME mysql timestamp issue see sleeps above |
|
9886917c8545
Add more sleeps to work around mysql timestamp issue.
John Rouillard <rouilj@ieee.org>
parents:
5234
diff
changeset
|
1224 time.sleep(2) |
|
5232
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1225 result=self.db.user.set(id, roles="User") |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1226 # make the user fred current. |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1227 self.db.setCurrentUser('fred') |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1228 self.assertEqual(self.db.getuid(), id) |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1229 |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1230 # check history as the user fred |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1231 # include quiet properties |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1232 # but require View perms |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1233 result=self.db.user.history(new_user, skipquiet=False) |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1234 result.sort() |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1235 ''' result should look like |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1236 [('3', <Date 2017-04-15.01:43:26.911>, '1', 'create', {}), |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1237 ('3', <Date 2017-04-15.01:43:26.911>, '1', 'set', |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1238 {'username': 'pete', 'assignable': False, |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1239 'supervisor': None, 'age': 10})] |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1240 ''' |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1241 # analyze last item |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1242 (id, tx_date, user, action, args) = result[-1] |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1243 expected= {'username': 'pete', 'assignable': False, |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1244 'supervisor': None} |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1245 |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1246 self.assertEqual('3', id) |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1247 self.assertEqual('1', user) |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1248 self.assertEqual('set', action) |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1249 self.assertEqual(expected, args) |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1250 |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1251 # reset the user to admin |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1252 self.db.setCurrentUser('admin') |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1253 self.assertEqual(self.db.getuid(), '1') # admin is always 1 |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1254 |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1255 def testJournals(self): |
|
2906
a8808157f892
fix some bugs introduced in refactoring of blobfiles filename()
Richard Jones <richard@users.sourceforge.net>
parents:
2899
diff
changeset
|
1256 muid = self.db.user.create(username="mary") |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1257 self.db.user.create(username="pete") |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1258 self.db.issue.create(title="spam", status='1') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1259 self.db.commit() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1260 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1261 # journal entry for issue create |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1262 journal = self.db.getjournal('issue', '1') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1263 self.assertEqual(1, len(journal)) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1264 (nodeid, date_stamp, journaltag, action, params) = journal[0] |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1265 self.assertEqual(nodeid, '1') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1266 self.assertEqual(journaltag, self.db.user.lookup('admin')) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1267 self.assertEqual(action, 'create') |
|
5395
23b8e6067f7c
Python 3 preparation: update calls to dict methods.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5390
diff
changeset
|
1268 keys = sorted(params.keys()) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1269 self.assertEqual(keys, []) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1270 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1271 # journal entry for link |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1272 journal = self.db.getjournal('user', '1') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1273 self.assertEqual(1, len(journal)) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1274 self.db.issue.set('1', assignedto='1') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1275 self.db.commit() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1276 journal = self.db.getjournal('user', '1') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1277 self.assertEqual(2, len(journal)) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1278 (nodeid, date_stamp, journaltag, action, params) = journal[1] |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1279 self.assertEqual('1', nodeid) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1280 self.assertEqual('1', journaltag) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1281 self.assertEqual('link', action) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1282 self.assertEqual(('issue', '1', 'assignedto'), params) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1283 |
|
2754
1f89984c0ea5
testJournals: if backend is too fast, two journal entries...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2753
diff
changeset
|
1284 # wait a bit to keep proper order of journal entries |
|
1f89984c0ea5
testJournals: if backend is too fast, two journal entries...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2753
diff
changeset
|
1285 time.sleep(0.01) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1286 # journal entry for unlink |
|
2906
a8808157f892
fix some bugs introduced in refactoring of blobfiles filename()
Richard Jones <richard@users.sourceforge.net>
parents:
2899
diff
changeset
|
1287 self.db.setCurrentUser('mary') |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1288 self.db.issue.set('1', assignedto='2') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1289 self.db.commit() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1290 journal = self.db.getjournal('user', '1') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1291 self.assertEqual(3, len(journal)) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1292 (nodeid, date_stamp, journaltag, action, params) = journal[2] |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1293 self.assertEqual('1', nodeid) |
|
2906
a8808157f892
fix some bugs introduced in refactoring of blobfiles filename()
Richard Jones <richard@users.sourceforge.net>
parents:
2899
diff
changeset
|
1294 self.assertEqual(muid, journaltag) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1295 self.assertEqual('unlink', action) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1296 self.assertEqual(('issue', '1', 'assignedto'), params) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1297 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1298 # test disabling journalling |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1299 # ... get the last entry |
|
2098
18addf2a8596
Implemented proper datatypes in mysql and postgresql backends...
Richard Jones <richard@users.sourceforge.net>
parents:
2089
diff
changeset
|
1300 jlen = len(self.db.getjournal('user', '1')) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1301 self.db.issue.disableJournalling() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1302 self.db.issue.set('1', title='hello world') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1303 self.db.commit() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1304 # see if the change was journalled when it shouldn't have been |
|
2098
18addf2a8596
Implemented proper datatypes in mysql and postgresql backends...
Richard Jones <richard@users.sourceforge.net>
parents:
2089
diff
changeset
|
1305 self.assertEqual(jlen, len(self.db.getjournal('user', '1'))) |
|
18addf2a8596
Implemented proper datatypes in mysql and postgresql backends...
Richard Jones <richard@users.sourceforge.net>
parents:
2089
diff
changeset
|
1306 jlen = len(self.db.getjournal('issue', '1')) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1307 self.db.issue.enableJournalling() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1308 self.db.issue.set('1', title='hello world 2') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1309 self.db.commit() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1310 # see if the change was journalled |
|
2098
18addf2a8596
Implemented proper datatypes in mysql and postgresql backends...
Richard Jones <richard@users.sourceforge.net>
parents:
2089
diff
changeset
|
1311 self.assertNotEqual(jlen, len(self.db.getjournal('issue', '1'))) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1312 |
|
5315
5a014410f254
Fix issue2550954: History display breaks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5311
diff
changeset
|
1313 def testJournalNonexistingProperty(self): |
|
5a014410f254
Fix issue2550954: History display breaks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5311
diff
changeset
|
1314 # Test for non-existing properties, link/unlink events to |
|
5a014410f254
Fix issue2550954: History display breaks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5311
diff
changeset
|
1315 # non-existing classes and link/unlink events to non-existing |
|
5a014410f254
Fix issue2550954: History display breaks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5311
diff
changeset
|
1316 # properties in a class: These all may be the result of a schema |
|
5a014410f254
Fix issue2550954: History display breaks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5311
diff
changeset
|
1317 # change and should not lead to a traceback. |
|
5317
c0cda00af479
Fix tests for memorydb and anydbm backends
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5315
diff
changeset
|
1318 self.db.user.create(username="mary", roles="User") |
|
5315
5a014410f254
Fix issue2550954: History display breaks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5311
diff
changeset
|
1319 id = self.db.issue.create(title="spam", status='1') |
|
5330
c5e72a3c69dd
I forgot that mysql is missing fractional seconds in it's
John Rouillard <rouilj@ieee.org>
parents:
5329
diff
changeset
|
1320 # FIXME delay by two seconds due to mysql missing |
|
c5e72a3c69dd
I forgot that mysql is missing fractional seconds in it's
John Rouillard <rouilj@ieee.org>
parents:
5329
diff
changeset
|
1321 # fractional seconds. This keeps the journal order correct. |
|
c5e72a3c69dd
I forgot that mysql is missing fractional seconds in it's
John Rouillard <rouilj@ieee.org>
parents:
5329
diff
changeset
|
1322 time.sleep(2) |
|
5329
19e12a540b91
Add a valid journal entry to the testJournalNonexistingProperty tests
John Rouillard <rouilj@ieee.org>
parents:
5319
diff
changeset
|
1323 self.db.issue.set(id, title='green eggs') |
|
5330
c5e72a3c69dd
I forgot that mysql is missing fractional seconds in it's
John Rouillard <rouilj@ieee.org>
parents:
5329
diff
changeset
|
1324 time.sleep(2) |
|
5315
5a014410f254
Fix issue2550954: History display breaks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5311
diff
changeset
|
1325 self.db.commit() |
|
5a014410f254
Fix issue2550954: History display breaks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5311
diff
changeset
|
1326 journal = self.db.getjournal('issue', id) |
|
5a014410f254
Fix issue2550954: History display breaks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5311
diff
changeset
|
1327 now = date.Date('.') |
|
5a014410f254
Fix issue2550954: History display breaks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5311
diff
changeset
|
1328 sec = date.Interval('0:00:01') |
|
5a014410f254
Fix issue2550954: History display breaks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5311
diff
changeset
|
1329 sec2 = date.Interval('0:00:02') |
|
5329
19e12a540b91
Add a valid journal entry to the testJournalNonexistingProperty tests
John Rouillard <rouilj@ieee.org>
parents:
5319
diff
changeset
|
1330 jp0 = dict(title = 'spam') |
|
5315
5a014410f254
Fix issue2550954: History display breaks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5311
diff
changeset
|
1331 # Non-existing property changed |
|
5a014410f254
Fix issue2550954: History display breaks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5311
diff
changeset
|
1332 jp1 = dict(nonexisting = None) |
|
5a014410f254
Fix issue2550954: History display breaks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5311
diff
changeset
|
1333 journal.append ((id, now, '1', 'set', jp1)) |
|
5a014410f254
Fix issue2550954: History display breaks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5311
diff
changeset
|
1334 # Link from user-class to non-existing property |
|
5a014410f254
Fix issue2550954: History display breaks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5311
diff
changeset
|
1335 jp2 = ('user', '1', 'xyzzy') |
|
5a014410f254
Fix issue2550954: History display breaks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5311
diff
changeset
|
1336 journal.append ((id, now+sec, '1', 'link', jp2)) |
|
5a014410f254
Fix issue2550954: History display breaks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5311
diff
changeset
|
1337 # Link from non-existing class |
|
5a014410f254
Fix issue2550954: History display breaks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5311
diff
changeset
|
1338 jp3 = ('frobozz', '1', 'xyzzy') |
|
5a014410f254
Fix issue2550954: History display breaks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5311
diff
changeset
|
1339 journal.append ((id, now+sec2, '1', 'link', jp3)) |
|
5a014410f254
Fix issue2550954: History display breaks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5311
diff
changeset
|
1340 self.db.setjournal('issue', id, journal) |
|
5a014410f254
Fix issue2550954: History display breaks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5311
diff
changeset
|
1341 self.db.commit() |
|
5a014410f254
Fix issue2550954: History display breaks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5311
diff
changeset
|
1342 result=self.db.issue.history(id) |
|
5a014410f254
Fix issue2550954: History display breaks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5311
diff
changeset
|
1343 result.sort() |
|
5317
c0cda00af479
Fix tests for memorydb and anydbm backends
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5315
diff
changeset
|
1344 # anydbm drops unknown properties during serialisation |
|
c0cda00af479
Fix tests for memorydb and anydbm backends
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5315
diff
changeset
|
1345 if self.db.dbtype == 'anydbm': |
|
c0cda00af479
Fix tests for memorydb and anydbm backends
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5315
diff
changeset
|
1346 self.assertEqual(len(result), 4) |
|
5329
19e12a540b91
Add a valid journal entry to the testJournalNonexistingProperty tests
John Rouillard <rouilj@ieee.org>
parents:
5319
diff
changeset
|
1347 self.assertEqual(result [1][4], jp0) |
|
5317
c0cda00af479
Fix tests for memorydb and anydbm backends
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5315
diff
changeset
|
1348 self.assertEqual(result [2][4], jp2) |
|
c0cda00af479
Fix tests for memorydb and anydbm backends
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5315
diff
changeset
|
1349 self.assertEqual(result [3][4], jp3) |
|
5329
19e12a540b91
Add a valid journal entry to the testJournalNonexistingProperty tests
John Rouillard <rouilj@ieee.org>
parents:
5319
diff
changeset
|
1350 else: |
|
19e12a540b91
Add a valid journal entry to the testJournalNonexistingProperty tests
John Rouillard <rouilj@ieee.org>
parents:
5319
diff
changeset
|
1351 self.assertEqual(len(result), 5) |
|
19e12a540b91
Add a valid journal entry to the testJournalNonexistingProperty tests
John Rouillard <rouilj@ieee.org>
parents:
5319
diff
changeset
|
1352 self.assertEqual(result [1][4], jp0) |
|
5753
486824f4455a
Dump results of test. Getting intermittent failure from
John Rouillard <rouilj@ieee.org>
parents:
5725
diff
changeset
|
1353 print(result) # following test fails sometimes under sqlite |
|
486824f4455a
Dump results of test. Getting intermittent failure from
John Rouillard <rouilj@ieee.org>
parents:
5725
diff
changeset
|
1354 # in travis. Looks like an ordering issue |
|
486824f4455a
Dump results of test. Getting intermittent failure from
John Rouillard <rouilj@ieee.org>
parents:
5725
diff
changeset
|
1355 # in python 3.5. Print result to debug. |
|
5329
19e12a540b91
Add a valid journal entry to the testJournalNonexistingProperty tests
John Rouillard <rouilj@ieee.org>
parents:
5319
diff
changeset
|
1356 self.assertEqual(result [2][4], jp1) |
|
19e12a540b91
Add a valid journal entry to the testJournalNonexistingProperty tests
John Rouillard <rouilj@ieee.org>
parents:
5319
diff
changeset
|
1357 self.assertEqual(result [3][4], jp2) |
|
19e12a540b91
Add a valid journal entry to the testJournalNonexistingProperty tests
John Rouillard <rouilj@ieee.org>
parents:
5319
diff
changeset
|
1358 self.assertEqual(result [4][4], jp3) |
|
5315
5a014410f254
Fix issue2550954: History display breaks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5311
diff
changeset
|
1359 self.db.close() |
|
5a014410f254
Fix issue2550954: History display breaks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5311
diff
changeset
|
1360 # Verify that normal user doesn't see obsolete props/classes |
|
5317
c0cda00af479
Fix tests for memorydb and anydbm backends
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5315
diff
changeset
|
1361 # Backend memorydb cannot re-open db for different user |
|
c0cda00af479
Fix tests for memorydb and anydbm backends
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5315
diff
changeset
|
1362 if self.db.dbtype != 'memorydb': |
|
c0cda00af479
Fix tests for memorydb and anydbm backends
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5315
diff
changeset
|
1363 self.open_database('mary') |
|
c0cda00af479
Fix tests for memorydb and anydbm backends
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5315
diff
changeset
|
1364 setupSchema(self.db, 0, self.module) |
|
5329
19e12a540b91
Add a valid journal entry to the testJournalNonexistingProperty tests
John Rouillard <rouilj@ieee.org>
parents:
5319
diff
changeset
|
1365 # allow mary to see issue fields like title |
|
19e12a540b91
Add a valid journal entry to the testJournalNonexistingProperty tests
John Rouillard <rouilj@ieee.org>
parents:
5319
diff
changeset
|
1366 self.db.security.addPermissionToRole('User', 'View', 'issue') |
|
5317
c0cda00af479
Fix tests for memorydb and anydbm backends
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5315
diff
changeset
|
1367 result=self.db.issue.history(id) |
|
5329
19e12a540b91
Add a valid journal entry to the testJournalNonexistingProperty tests
John Rouillard <rouilj@ieee.org>
parents:
5319
diff
changeset
|
1368 self.assertEqual(len(result), 2) |
|
19e12a540b91
Add a valid journal entry to the testJournalNonexistingProperty tests
John Rouillard <rouilj@ieee.org>
parents:
5319
diff
changeset
|
1369 self.assertEqual(result [1][4], jp0) |
|
5315
5a014410f254
Fix issue2550954: History display breaks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5311
diff
changeset
|
1370 |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1371 def testJournalPreCommit(self): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1372 id = self.db.user.create(username="mary") |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1373 self.assertEqual(len(self.db.getjournal('user', id)), 1) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1374 self.db.commit() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1375 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1376 def testPack(self): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1377 id = self.db.issue.create(title="spam", status='1') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1378 self.db.commit() |
|
2255
4990fd3d57a7
fix mysql testing date granularity thingy
Richard Jones <richard@users.sourceforge.net>
parents:
2247
diff
changeset
|
1379 time.sleep(1) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1380 self.db.issue.set(id, status='2') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1381 self.db.commit() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1382 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1383 # sleep for at least a second, then get a date to pack at |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1384 time.sleep(1) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1385 pack_before = date.Date('.') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1386 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1387 # wait another second and add one more entry |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1388 time.sleep(1) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1389 self.db.issue.set(id, status='3') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1390 self.db.commit() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1391 jlen = len(self.db.getjournal('issue', id)) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1392 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1393 # pack |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1394 self.db.pack(pack_before) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1395 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1396 # we should have the create and last set entries now |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1397 self.assertEqual(jlen-1, len(self.db.getjournal('issue', id))) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1398 |
|
1986
910b39f8c5b8
use the upload-supplied content-type if there is one
Richard Jones <richard@users.sourceforge.net>
parents:
1955
diff
changeset
|
1399 def testIndexerSearching(self): |
|
910b39f8c5b8
use the upload-supplied content-type if there is one
Richard Jones <richard@users.sourceforge.net>
parents:
1955
diff
changeset
|
1400 f1 = self.db.file.create(content='hello', type="text/plain") |
|
2089
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
1401 # content='world' has the wrong content-type and won't be indexed |
|
1986
910b39f8c5b8
use the upload-supplied content-type if there is one
Richard Jones <richard@users.sourceforge.net>
parents:
1955
diff
changeset
|
1402 f2 = self.db.file.create(content='world', type="text/frozz", |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1403 comment='blah blah') |
|
1986
910b39f8c5b8
use the upload-supplied content-type if there is one
Richard Jones <richard@users.sourceforge.net>
parents:
1955
diff
changeset
|
1404 i1 = self.db.issue.create(files=[f1, f2], title="flebble plop") |
|
2872
d530b68e4b42
don't index common words [SF#1046612]
Richard Jones <richard@users.sourceforge.net>
parents:
2820
diff
changeset
|
1405 i2 = self.db.issue.create(title="flebble the frooz") |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1406 self.db.commit() |
|
3033
f8d0fd056ac0
fix indexer searching with no valid words [SF#1086787]
Richard Jones <richard@users.sourceforge.net>
parents:
3016
diff
changeset
|
1407 self.assertEquals(self.db.indexer.search([], self.db.issue), {}) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1408 self.assertEquals(self.db.indexer.search(['hello'], self.db.issue), |
|
1986
910b39f8c5b8
use the upload-supplied content-type if there is one
Richard Jones <richard@users.sourceforge.net>
parents:
1955
diff
changeset
|
1409 {i1: {'files': [f1]}}) |
|
4349
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
4347
diff
changeset
|
1410 # content='world' has the wrong content-type and shouldn't be indexed |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1411 self.assertEquals(self.db.indexer.search(['world'], self.db.issue), {}) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1412 self.assertEquals(self.db.indexer.search(['frooz'], self.db.issue), |
|
1986
910b39f8c5b8
use the upload-supplied content-type if there is one
Richard Jones <richard@users.sourceforge.net>
parents:
1955
diff
changeset
|
1413 {i2: {}}) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1414 self.assertEquals(self.db.indexer.search(['flebble'], self.db.issue), |
|
1986
910b39f8c5b8
use the upload-supplied content-type if there is one
Richard Jones <richard@users.sourceforge.net>
parents:
1955
diff
changeset
|
1415 {i1: {}, i2: {}}) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1416 |
|
3048
d9b4224f955c
merge from maint-0-8
Richard Jones <richard@users.sourceforge.net>
parents:
3033
diff
changeset
|
1417 # test AND'ing of search terms |
|
d9b4224f955c
merge from maint-0-8
Richard Jones <richard@users.sourceforge.net>
parents:
3033
diff
changeset
|
1418 self.assertEquals(self.db.indexer.search(['frooz', 'flebble'], |
|
d9b4224f955c
merge from maint-0-8
Richard Jones <richard@users.sourceforge.net>
parents:
3033
diff
changeset
|
1419 self.db.issue), {i2: {}}) |
|
d9b4224f955c
merge from maint-0-8
Richard Jones <richard@users.sourceforge.net>
parents:
3033
diff
changeset
|
1420 |
|
2872
d530b68e4b42
don't index common words [SF#1046612]
Richard Jones <richard@users.sourceforge.net>
parents:
2820
diff
changeset
|
1421 # unindexed stopword |
|
d530b68e4b42
don't index common words [SF#1046612]
Richard Jones <richard@users.sourceforge.net>
parents:
2820
diff
changeset
|
1422 self.assertEquals(self.db.indexer.search(['the'], self.db.issue), {}) |
|
d530b68e4b42
don't index common words [SF#1046612]
Richard Jones <richard@users.sourceforge.net>
parents:
2820
diff
changeset
|
1423 |
|
3997
edbb89730dc2
Fix indexer handling of indexed Link properties
Richard Jones <richard@users.sourceforge.net>
parents:
3995
diff
changeset
|
1424 def testIndexerSearchingLink(self): |
|
edbb89730dc2
Fix indexer handling of indexed Link properties
Richard Jones <richard@users.sourceforge.net>
parents:
3995
diff
changeset
|
1425 m1 = self.db.msg.create(content="one two") |
|
edbb89730dc2
Fix indexer handling of indexed Link properties
Richard Jones <richard@users.sourceforge.net>
parents:
3995
diff
changeset
|
1426 i1 = self.db.issue.create(messages=[m1]) |
|
edbb89730dc2
Fix indexer handling of indexed Link properties
Richard Jones <richard@users.sourceforge.net>
parents:
3995
diff
changeset
|
1427 m2 = self.db.msg.create(content="two three") |
|
edbb89730dc2
Fix indexer handling of indexed Link properties
Richard Jones <richard@users.sourceforge.net>
parents:
3995
diff
changeset
|
1428 i2 = self.db.issue.create(feedback=m2) |
|
edbb89730dc2
Fix indexer handling of indexed Link properties
Richard Jones <richard@users.sourceforge.net>
parents:
3995
diff
changeset
|
1429 self.db.commit() |
|
edbb89730dc2
Fix indexer handling of indexed Link properties
Richard Jones <richard@users.sourceforge.net>
parents:
3995
diff
changeset
|
1430 self.assertEquals(self.db.indexer.search(['two'], self.db.issue), |
|
edbb89730dc2
Fix indexer handling of indexed Link properties
Richard Jones <richard@users.sourceforge.net>
parents:
3995
diff
changeset
|
1431 {i1: {'messages': [m1]}, i2: {'feedback': [m2]}}) |
|
edbb89730dc2
Fix indexer handling of indexed Link properties
Richard Jones <richard@users.sourceforge.net>
parents:
3995
diff
changeset
|
1432 |
|
3751
44603dd791b7
full-text search wasn't coping with multiple multilinks to the same class
Richard Jones <richard@users.sourceforge.net>
parents:
3746
diff
changeset
|
1433 def testIndexerSearchMulti(self): |
|
44603dd791b7
full-text search wasn't coping with multiple multilinks to the same class
Richard Jones <richard@users.sourceforge.net>
parents:
3746
diff
changeset
|
1434 m1 = self.db.msg.create(content="one two") |
|
44603dd791b7
full-text search wasn't coping with multiple multilinks to the same class
Richard Jones <richard@users.sourceforge.net>
parents:
3746
diff
changeset
|
1435 m2 = self.db.msg.create(content="two three") |
|
44603dd791b7
full-text search wasn't coping with multiple multilinks to the same class
Richard Jones <richard@users.sourceforge.net>
parents:
3746
diff
changeset
|
1436 i1 = self.db.issue.create(messages=[m1]) |
|
44603dd791b7
full-text search wasn't coping with multiple multilinks to the same class
Richard Jones <richard@users.sourceforge.net>
parents:
3746
diff
changeset
|
1437 i2 = self.db.issue.create(spam=[m2]) |
|
44603dd791b7
full-text search wasn't coping with multiple multilinks to the same class
Richard Jones <richard@users.sourceforge.net>
parents:
3746
diff
changeset
|
1438 self.db.commit() |
|
44603dd791b7
full-text search wasn't coping with multiple multilinks to the same class
Richard Jones <richard@users.sourceforge.net>
parents:
3746
diff
changeset
|
1439 self.assertEquals(self.db.indexer.search([], self.db.issue), {}) |
|
44603dd791b7
full-text search wasn't coping with multiple multilinks to the same class
Richard Jones <richard@users.sourceforge.net>
parents:
3746
diff
changeset
|
1440 self.assertEquals(self.db.indexer.search(['one'], self.db.issue), |
|
44603dd791b7
full-text search wasn't coping with multiple multilinks to the same class
Richard Jones <richard@users.sourceforge.net>
parents:
3746
diff
changeset
|
1441 {i1: {'messages': [m1]}}) |
|
44603dd791b7
full-text search wasn't coping with multiple multilinks to the same class
Richard Jones <richard@users.sourceforge.net>
parents:
3746
diff
changeset
|
1442 self.assertEquals(self.db.indexer.search(['two'], self.db.issue), |
|
44603dd791b7
full-text search wasn't coping with multiple multilinks to the same class
Richard Jones <richard@users.sourceforge.net>
parents:
3746
diff
changeset
|
1443 {i1: {'messages': [m1]}, i2: {'spam': [m2]}}) |
|
44603dd791b7
full-text search wasn't coping with multiple multilinks to the same class
Richard Jones <richard@users.sourceforge.net>
parents:
3746
diff
changeset
|
1444 self.assertEquals(self.db.indexer.search(['three'], self.db.issue), |
|
44603dd791b7
full-text search wasn't coping with multiple multilinks to the same class
Richard Jones <richard@users.sourceforge.net>
parents:
3746
diff
changeset
|
1445 {i2: {'spam': [m2]}}) |
|
44603dd791b7
full-text search wasn't coping with multiple multilinks to the same class
Richard Jones <richard@users.sourceforge.net>
parents:
3746
diff
changeset
|
1446 |
|
3547
7728ee93efd2
fix reindexing in Xapian
Richard Jones <richard@users.sourceforge.net>
parents:
3546
diff
changeset
|
1447 def testReindexingChange(self): |
|
2089
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
1448 search = self.db.indexer.search |
|
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
1449 issue = self.db.issue |
|
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
1450 i1 = issue.create(title="flebble plop") |
|
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
1451 i2 = issue.create(title="flebble frooz") |
|
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
1452 self.db.commit() |
|
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
1453 self.assertEquals(search(['plop'], issue), {i1: {}}) |
|
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
1454 self.assertEquals(search(['flebble'], issue), {i1: {}, i2: {}}) |
|
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
1455 |
|
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
1456 # change i1's title |
|
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
1457 issue.set(i1, title="plop") |
|
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
1458 self.db.commit() |
|
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
1459 self.assertEquals(search(['plop'], issue), {i1: {}}) |
|
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
1460 self.assertEquals(search(['flebble'], issue), {i2: {}}) |
|
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
1461 |
|
3547
7728ee93efd2
fix reindexing in Xapian
Richard Jones <richard@users.sourceforge.net>
parents:
3546
diff
changeset
|
1462 def testReindexingClear(self): |
|
7728ee93efd2
fix reindexing in Xapian
Richard Jones <richard@users.sourceforge.net>
parents:
3546
diff
changeset
|
1463 search = self.db.indexer.search |
|
7728ee93efd2
fix reindexing in Xapian
Richard Jones <richard@users.sourceforge.net>
parents:
3546
diff
changeset
|
1464 issue = self.db.issue |
|
7728ee93efd2
fix reindexing in Xapian
Richard Jones <richard@users.sourceforge.net>
parents:
3546
diff
changeset
|
1465 i1 = issue.create(title="flebble plop") |
|
7728ee93efd2
fix reindexing in Xapian
Richard Jones <richard@users.sourceforge.net>
parents:
3546
diff
changeset
|
1466 i2 = issue.create(title="flebble frooz") |
|
7728ee93efd2
fix reindexing in Xapian
Richard Jones <richard@users.sourceforge.net>
parents:
3546
diff
changeset
|
1467 self.db.commit() |
|
7728ee93efd2
fix reindexing in Xapian
Richard Jones <richard@users.sourceforge.net>
parents:
3546
diff
changeset
|
1468 self.assertEquals(search(['plop'], issue), {i1: {}}) |
|
7728ee93efd2
fix reindexing in Xapian
Richard Jones <richard@users.sourceforge.net>
parents:
3546
diff
changeset
|
1469 self.assertEquals(search(['flebble'], issue), {i1: {}, i2: {}}) |
|
7728ee93efd2
fix reindexing in Xapian
Richard Jones <richard@users.sourceforge.net>
parents:
3546
diff
changeset
|
1470 |
|
2089
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
1471 # unset i1's title |
|
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
1472 issue.set(i1, title="") |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1473 self.db.commit() |
|
2089
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
1474 self.assertEquals(search(['plop'], issue), {}) |
|
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
1475 self.assertEquals(search(['flebble'], issue), {i2: {}}) |
|
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
1476 |
|
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
1477 def testFileClassReindexing(self): |
|
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
1478 f1 = self.db.file.create(content='hello') |
|
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
1479 f2 = self.db.file.create(content='hello, world') |
|
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
1480 i1 = self.db.issue.create(files=[f1, f2]) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1481 self.db.commit() |
|
2089
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
1482 d = self.db.indexer.search(['hello'], self.db.issue) |
|
5649
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5494
diff
changeset
|
1483 self.assertTrue(i1 in d) |
|
2089
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
1484 d[i1]['files'].sort() |
|
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
1485 self.assertEquals(d, {i1: {'files': [f1, f2]}}) |
|
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
1486 self.assertEquals(self.db.indexer.search(['world'], self.db.issue), |
|
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
1487 {i1: {'files': [f2]}}) |
|
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
1488 self.db.file.set(f1, content="world") |
|
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
1489 self.db.commit() |
|
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
1490 d = self.db.indexer.search(['world'], self.db.issue) |
|
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
1491 d[i1]['files'].sort() |
|
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
1492 self.assertEquals(d, {i1: {'files': [f1, f2]}}) |
|
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
1493 self.assertEquals(self.db.indexer.search(['hello'], self.db.issue), |
|
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
1494 {i1: {'files': [f2]}}) |
|
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
1495 |
|
3601
7b25567f0f54
indexing may be turned off for FileClass "content" now
Richard Jones <richard@users.sourceforge.net>
parents:
3586
diff
changeset
|
1496 def testFileClassIndexingNoNoNo(self): |
|
7b25567f0f54
indexing may be turned off for FileClass "content" now
Richard Jones <richard@users.sourceforge.net>
parents:
3586
diff
changeset
|
1497 f1 = self.db.file.create(content='hello') |
|
7b25567f0f54
indexing may be turned off for FileClass "content" now
Richard Jones <richard@users.sourceforge.net>
parents:
3586
diff
changeset
|
1498 self.db.commit() |
|
7b25567f0f54
indexing may be turned off for FileClass "content" now
Richard Jones <richard@users.sourceforge.net>
parents:
3586
diff
changeset
|
1499 self.assertEquals(self.db.indexer.search(['hello'], self.db.file), |
|
7b25567f0f54
indexing may be turned off for FileClass "content" now
Richard Jones <richard@users.sourceforge.net>
parents:
3586
diff
changeset
|
1500 {'1': {}}) |
|
7b25567f0f54
indexing may be turned off for FileClass "content" now
Richard Jones <richard@users.sourceforge.net>
parents:
3586
diff
changeset
|
1501 |
|
7b25567f0f54
indexing may be turned off for FileClass "content" now
Richard Jones <richard@users.sourceforge.net>
parents:
3586
diff
changeset
|
1502 f1 = self.db.file_nidx.create(content='hello') |
|
7b25567f0f54
indexing may be turned off for FileClass "content" now
Richard Jones <richard@users.sourceforge.net>
parents:
3586
diff
changeset
|
1503 self.db.commit() |
|
7b25567f0f54
indexing may be turned off for FileClass "content" now
Richard Jones <richard@users.sourceforge.net>
parents:
3586
diff
changeset
|
1504 self.assertEquals(self.db.indexer.search(['hello'], self.db.file_nidx), |
|
7b25567f0f54
indexing may be turned off for FileClass "content" now
Richard Jones <richard@users.sourceforge.net>
parents:
3586
diff
changeset
|
1505 {}) |
|
7b25567f0f54
indexing may be turned off for FileClass "content" now
Richard Jones <richard@users.sourceforge.net>
parents:
3586
diff
changeset
|
1506 |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1507 def testForcedReindexing(self): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1508 self.db.issue.create(title="flebble frooz") |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1509 self.db.commit() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1510 self.assertEquals(self.db.indexer.search(['flebble'], self.db.issue), |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1511 {'1': {}}) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1512 self.db.indexer.quiet = 1 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1513 self.db.indexer.force_reindex() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1514 self.db.post_init() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1515 self.db.indexer.quiet = 9 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1516 self.assertEquals(self.db.indexer.search(['flebble'], self.db.issue), |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1517 {'1': {}}) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1518 |
|
4349
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
4347
diff
changeset
|
1519 def testIndexingPropertiesOnImport(self): |
|
3935
1dab48842cbd
Throwing up hands in resignation and finally deleting the metakit backend.
Richard Jones <richard@users.sourceforge.net>
parents:
3931
diff
changeset
|
1520 # import an issue |
|
3844
cf8b716d9ac2
Fix for [SF#698136] Trouble with full-text indexer, with test.
Erik Forsberg <forsberg@users.sourceforge.net>
parents:
3826
diff
changeset
|
1521 title = 'Bzzt' |
|
cf8b716d9ac2
Fix for [SF#698136] Trouble with full-text indexer, with test.
Erik Forsberg <forsberg@users.sourceforge.net>
parents:
3826
diff
changeset
|
1522 nodeid = self.db.issue.import_list(['title', 'messages', 'files', |
|
4349
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
4347
diff
changeset
|
1523 'spam', 'nosy', 'superseder'], [repr(title), '[]', '[]', |
|
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
4347
diff
changeset
|
1524 '[]', '[]', '[]']) |
|
3844
cf8b716d9ac2
Fix for [SF#698136] Trouble with full-text indexer, with test.
Erik Forsberg <forsberg@users.sourceforge.net>
parents:
3826
diff
changeset
|
1525 self.db.commit() |
|
cf8b716d9ac2
Fix for [SF#698136] Trouble with full-text indexer, with test.
Erik Forsberg <forsberg@users.sourceforge.net>
parents:
3826
diff
changeset
|
1526 |
|
cf8b716d9ac2
Fix for [SF#698136] Trouble with full-text indexer, with test.
Erik Forsberg <forsberg@users.sourceforge.net>
parents:
3826
diff
changeset
|
1527 # Content of title attribute is indexed |
|
cf8b716d9ac2
Fix for [SF#698136] Trouble with full-text indexer, with test.
Erik Forsberg <forsberg@users.sourceforge.net>
parents:
3826
diff
changeset
|
1528 self.assertEquals(self.db.indexer.search([title], self.db.issue), |
|
3935
1dab48842cbd
Throwing up hands in resignation and finally deleting the metakit backend.
Richard Jones <richard@users.sourceforge.net>
parents:
3931
diff
changeset
|
1529 {str(nodeid):{}}) |
|
3882
46ef2a6fd79d
config option to limit nosy attachments based on size
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3872
diff
changeset
|
1530 |
|
3844
cf8b716d9ac2
Fix for [SF#698136] Trouble with full-text indexer, with test.
Erik Forsberg <forsberg@users.sourceforge.net>
parents:
3826
diff
changeset
|
1531 |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1532 # |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1533 # searching tests follow |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1534 # |
|
1988
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1535 def testFindIncorrectProperty(self): |
|
1951
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
1536 self.assertRaises(TypeError, self.db.issue.find, title='fubar') |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
1537 |
|
1988
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1538 def _find_test_setup(self): |
|
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1539 self.db.file.create(content='') |
|
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1540 self.db.file.create(content='') |
|
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1541 self.db.user.create(username='') |
|
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1542 one = self.db.issue.create(status="1", nosy=['1']) |
|
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1543 two = self.db.issue.create(status="2", nosy=['2'], files=['1'], |
|
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1544 assignedto='2') |
|
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1545 three = self.db.issue.create(status="1", nosy=['1','2']) |
|
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1546 four = self.db.issue.create(status="3", assignedto='1', |
|
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1547 files=['1','2']) |
|
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1548 return one, two, three, four |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1549 |
|
1988
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1550 def testFindLink(self): |
|
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1551 one, two, three, four = self._find_test_setup() |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1552 got = self.db.issue.find(status='1') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1553 got.sort() |
|
1988
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1554 self.assertEqual(got, [one, three]) |
|
1912
2b0ab61db194
fixes for [SF#818339]
Richard Jones <richard@users.sourceforge.net>
parents:
1906
diff
changeset
|
1555 got = self.db.issue.find(status={'1':1}) |
|
2b0ab61db194
fixes for [SF#818339]
Richard Jones <richard@users.sourceforge.net>
parents:
1906
diff
changeset
|
1556 got.sort() |
|
1988
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1557 self.assertEqual(got, [one, three]) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1558 |
|
1988
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1559 def testFindLinkFail(self): |
|
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1560 self._find_test_setup() |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1561 self.assertEqual(self.db.issue.find(status='4'), []) |
|
1912
2b0ab61db194
fixes for [SF#818339]
Richard Jones <richard@users.sourceforge.net>
parents:
1906
diff
changeset
|
1562 self.assertEqual(self.db.issue.find(status={'4':1}), []) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1563 |
|
1988
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1564 def testFindLinkUnset(self): |
|
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1565 one, two, three, four = self._find_test_setup() |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1566 got = self.db.issue.find(assignedto=None) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1567 got.sort() |
|
1988
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1568 self.assertEqual(got, [one, three]) |
|
1912
2b0ab61db194
fixes for [SF#818339]
Richard Jones <richard@users.sourceforge.net>
parents:
1906
diff
changeset
|
1569 got = self.db.issue.find(assignedto={None:1}) |
|
2b0ab61db194
fixes for [SF#818339]
Richard Jones <richard@users.sourceforge.net>
parents:
1906
diff
changeset
|
1570 got.sort() |
|
1988
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1571 self.assertEqual(got, [one, three]) |
|
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1572 |
|
2494
ea7fb2f416db
fixed RDBMS Class.find() to handle None value in multiple find...
Richard Jones <richard@users.sourceforge.net>
parents:
2472
diff
changeset
|
1573 def testFindMultipleLink(self): |
|
ea7fb2f416db
fixed RDBMS Class.find() to handle None value in multiple find...
Richard Jones <richard@users.sourceforge.net>
parents:
2472
diff
changeset
|
1574 one, two, three, four = self._find_test_setup() |
|
2968
0aaf356fd105
merge from maint-0-7
Richard Jones <richard@users.sourceforge.net>
parents:
2906
diff
changeset
|
1575 l = self.db.issue.find(status={'1':1, '3':1}) |
|
0aaf356fd105
merge from maint-0-7
Richard Jones <richard@users.sourceforge.net>
parents:
2906
diff
changeset
|
1576 l.sort() |
|
0aaf356fd105
merge from maint-0-7
Richard Jones <richard@users.sourceforge.net>
parents:
2906
diff
changeset
|
1577 self.assertEqual(l, [one, three, four]) |
|
0aaf356fd105
merge from maint-0-7
Richard Jones <richard@users.sourceforge.net>
parents:
2906
diff
changeset
|
1578 l = self.db.issue.find(assignedto={None:1, '1':1}) |
|
0aaf356fd105
merge from maint-0-7
Richard Jones <richard@users.sourceforge.net>
parents:
2906
diff
changeset
|
1579 l.sort() |
|
0aaf356fd105
merge from maint-0-7
Richard Jones <richard@users.sourceforge.net>
parents:
2906
diff
changeset
|
1580 self.assertEqual(l, [one, three, four]) |
|
2494
ea7fb2f416db
fixed RDBMS Class.find() to handle None value in multiple find...
Richard Jones <richard@users.sourceforge.net>
parents:
2472
diff
changeset
|
1581 |
|
1988
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1582 def testFindMultilink(self): |
|
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1583 one, two, three, four = self._find_test_setup() |
|
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1584 got = self.db.issue.find(nosy='2') |
|
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1585 got.sort() |
|
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1586 self.assertEqual(got, [two, three]) |
|
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1587 got = self.db.issue.find(nosy={'2':1}) |
|
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1588 got.sort() |
|
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1589 self.assertEqual(got, [two, three]) |
|
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1590 got = self.db.issue.find(nosy={'2':1}, files={}) |
|
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1591 got.sort() |
|
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1592 self.assertEqual(got, [two, three]) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1593 |
|
1988
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1594 def testFindMultiMultilink(self): |
|
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1595 one, two, three, four = self._find_test_setup() |
|
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1596 got = self.db.issue.find(nosy='2', files='1') |
|
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1597 got.sort() |
|
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1598 self.assertEqual(got, [two, three, four]) |
|
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1599 got = self.db.issue.find(nosy={'2':1}, files={'1':1}) |
|
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1600 got.sort() |
|
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1601 self.assertEqual(got, [two, three, four]) |
|
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1602 |
|
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1603 def testFindMultilinkFail(self): |
|
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1604 self._find_test_setup() |
|
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1605 self.assertEqual(self.db.issue.find(nosy='3'), []) |
|
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1606 self.assertEqual(self.db.issue.find(nosy={'3':1}), []) |
|
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1607 |
|
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1608 def testFindMultilinkUnset(self): |
|
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1609 self._find_test_setup() |
|
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1610 self.assertEqual(self.db.issue.find(nosy={}), []) |
|
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1611 |
|
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1612 def testFindLinkAndMultilink(self): |
|
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1613 one, two, three, four = self._find_test_setup() |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1614 got = self.db.issue.find(status='1', nosy='2') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1615 got.sort() |
|
1988
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1616 self.assertEqual(got, [one, two, three]) |
|
1912
2b0ab61db194
fixes for [SF#818339]
Richard Jones <richard@users.sourceforge.net>
parents:
1906
diff
changeset
|
1617 got = self.db.issue.find(status={'1':1}, nosy={'2':1}) |
|
2b0ab61db194
fixes for [SF#818339]
Richard Jones <richard@users.sourceforge.net>
parents:
1906
diff
changeset
|
1618 got.sort() |
|
1988
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1619 self.assertEqual(got, [one, two, three]) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1620 |
|
1988
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1621 def testFindRetired(self): |
|
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1622 one, two, three, four = self._find_test_setup() |
|
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1623 self.assertEqual(len(self.db.issue.find(status='1')), 2) |
|
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1624 self.db.issue.retire(one) |
|
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1625 self.assertEqual(len(self.db.issue.find(status='1')), 1) |
|
1951
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
1626 |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1627 def testStringFind(self): |
|
1951
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
1628 self.assertRaises(TypeError, self.db.issue.stringFind, status='1') |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
1629 |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1630 ids = [] |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1631 ids.append(self.db.issue.create(title="spam")) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1632 self.db.issue.create(title="not spam") |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1633 ids.append(self.db.issue.create(title="spam")) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1634 ids.sort() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1635 got = self.db.issue.stringFind(title='spam') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1636 got.sort() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1637 self.assertEqual(got, ids) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1638 self.assertEqual(self.db.issue.stringFind(title='fubar'), []) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1639 |
|
1951
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
1640 # test retiring a node |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
1641 self.db.issue.retire(ids[0]) |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
1642 self.assertEqual(len(self.db.issue.stringFind(title='spam')), 1) |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
1643 |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1644 def filteringSetup(self, classname='issue'): |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1645 for user in ( |
|
4365
667c818f6a22
- unify bool searching (filter method) across backends
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4364
diff
changeset
|
1646 {'username': 'bleep', 'age': 1, 'assignable': True}, |
|
667c818f6a22
- unify bool searching (filter method) across backends
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4364
diff
changeset
|
1647 {'username': 'blop', 'age': 1.5, 'assignable': True}, |
|
667c818f6a22
- unify bool searching (filter method) across backends
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4364
diff
changeset
|
1648 {'username': 'blorp', 'age': 2, 'assignable': False}): |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1649 self.db.user.create(**user) |
|
3675
f3785d646f22
Added two new tests:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3636
diff
changeset
|
1650 file_content = ''.join([chr(i) for i in range(255)]) |
|
f3785d646f22
Added two new tests:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3636
diff
changeset
|
1651 f = self.db.file.create(content=file_content) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1652 for issue in ( |
|
1955
b00ad075bb2f
more unit tests, fixes and cleanups
Richard Jones <richard@users.sourceforge.net>
parents:
1951
diff
changeset
|
1653 {'title': 'issue one', 'status': '2', 'assignedto': '1', |
|
2536
70ede89e8056
handle postgresql bug in SQL generation [SF#984591]
Richard Jones <richard@users.sourceforge.net>
parents:
2533
diff
changeset
|
1654 'foo': date.Interval('1:10'), 'priority': '3', |
|
2603
5ccd99777869
fix metakit handling of filter on Link==None; fix some unit tests
Richard Jones <richard@users.sourceforge.net>
parents:
2602
diff
changeset
|
1655 'deadline': date.Date('2003-02-16.22:50')}, |
|
2318
fa2f7ba34399
merge from maint-0-7
Richard Jones <richard@users.sourceforge.net>
parents:
2255
diff
changeset
|
1656 {'title': 'issue two', 'status': '1', 'assignedto': '2', |
|
fa2f7ba34399
merge from maint-0-7
Richard Jones <richard@users.sourceforge.net>
parents:
2255
diff
changeset
|
1657 'foo': date.Interval('1d'), 'priority': '3', |
|
2603
5ccd99777869
fix metakit handling of filter on Link==None; fix some unit tests
Richard Jones <richard@users.sourceforge.net>
parents:
2602
diff
changeset
|
1658 'deadline': date.Date('2003-01-01.00:00')}, |
|
2601
113548baeed2
API clarification.
Richard Jones <richard@users.sourceforge.net>
parents:
2536
diff
changeset
|
1659 {'title': 'issue three', 'status': '1', 'priority': '2', |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1660 'nosy': ['1','2'], 'deadline': date.Date('2003-02-18')}, |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1661 {'title': 'non four', 'status': '3', |
|
2536
70ede89e8056
handle postgresql bug in SQL generation [SF#984591]
Richard Jones <richard@users.sourceforge.net>
parents:
2533
diff
changeset
|
1662 'foo': date.Interval('0:10'), 'priority': '2', |
|
3682
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
1663 'nosy': ['1','2','3'], 'deadline': date.Date('2004-03-08'), |
|
3675
f3785d646f22
Added two new tests:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3636
diff
changeset
|
1664 'files': [f]}): |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1665 self.db.issue.create(**issue) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1666 self.db.commit() |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1667 return self.iterSetup(classname) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1668 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1669 def testFilteringID(self): |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1670 ae, filter, filter_iter = self.filteringSetup() |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1671 for filt in filter, filter_iter: |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1672 ae(filt(None, {'id': '1'}, ('+','id'), (None,None)), ['1']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1673 ae(filt(None, {'id': '2'}, ('+','id'), (None,None)), ['2']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1674 ae(filt(None, {'id': '100'}, ('+','id'), (None,None)), []) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1675 |
|
4365
667c818f6a22
- unify bool searching (filter method) across backends
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4364
diff
changeset
|
1676 def testFilteringBoolean(self): |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1677 ae, filter, filter_iter = self.filteringSetup('user') |
|
4365
667c818f6a22
- unify bool searching (filter method) across backends
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4364
diff
changeset
|
1678 a = 'assignable' |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1679 for filt in filter, filter_iter: |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1680 ae(filt(None, {a: '1'}, ('+','id'), (None,None)), ['3','4']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1681 ae(filt(None, {a: '0'}, ('+','id'), (None,None)), ['5']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1682 ae(filt(None, {a: ['1']}, ('+','id'), (None,None)), ['3','4']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1683 ae(filt(None, {a: ['0']}, ('+','id'), (None,None)), ['5']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1684 ae(filt(None, {a: ['0','1']}, ('+','id'), (None,None)), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1685 ['3','4','5']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1686 ae(filt(None, {a: 'True'}, ('+','id'), (None,None)), ['3','4']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1687 ae(filt(None, {a: 'False'}, ('+','id'), (None,None)), ['5']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1688 ae(filt(None, {a: ['True']}, ('+','id'), (None,None)), ['3','4']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1689 ae(filt(None, {a: ['False']}, ('+','id'), (None,None)), ['5']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1690 ae(filt(None, {a: ['False','True']}, ('+','id'), (None,None)), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1691 ['3','4','5']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1692 ae(filt(None, {a: True}, ('+','id'), (None,None)), ['3','4']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1693 ae(filt(None, {a: False}, ('+','id'), (None,None)), ['5']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1694 ae(filt(None, {a: 1}, ('+','id'), (None,None)), ['3','4']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1695 ae(filt(None, {a: 0}, ('+','id'), (None,None)), ['5']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1696 ae(filt(None, {a: [1]}, ('+','id'), (None,None)), ['3','4']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1697 ae(filt(None, {a: [0]}, ('+','id'), (None,None)), ['5']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1698 ae(filt(None, {a: [0,1]}, ('+','id'), (None,None)), ['3','4','5']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1699 ae(filt(None, {a: [True]}, ('+','id'), (None,None)), ['3','4']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1700 ae(filt(None, {a: [False]}, ('+','id'), (None,None)), ['5']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1701 ae(filt(None, {a: [False,True]}, ('+','id'), (None,None)), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1702 ['3','4','5']) |
|
4365
667c818f6a22
- unify bool searching (filter method) across backends
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4364
diff
changeset
|
1703 |
|
2418
89072e66b5f5
fixed filtering by floats in anydbm [SF#963584]
Richard Jones <richard@users.sourceforge.net>
parents:
2400
diff
changeset
|
1704 def testFilteringNumber(self): |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1705 ae, filter, filter_iter = self.filteringSetup('user') |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1706 for filt in filter, filter_iter: |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1707 ae(filt(None, {'age': '1'}, ('+','id'), (None,None)), ['3']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1708 ae(filt(None, {'age': '1.5'}, ('+','id'), (None,None)), ['4']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1709 ae(filt(None, {'age': '2'}, ('+','id'), (None,None)), ['5']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1710 ae(filt(None, {'age': ['1','2']}, ('+','id'), (None,None)), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1711 ['3','5']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1712 ae(filt(None, {'age': 2}, ('+','id'), (None,None)), ['5']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1713 ae(filt(None, {'age': [1,2]}, ('+','id'), (None,None)), ['3','5']) |
|
2418
89072e66b5f5
fixed filtering by floats in anydbm [SF#963584]
Richard Jones <richard@users.sourceforge.net>
parents:
2400
diff
changeset
|
1714 |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1715 def testFilteringString(self): |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1716 ae, filter, filter_iter = self.filteringSetup() |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1717 for filt in filter, filter_iter: |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1718 ae(filt(None, {'title': ['one']}, ('+','id'), (None,None)), ['1']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1719 ae(filt(None, {'title': ['issue one']}, ('+','id'), (None,None)), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1720 ['1']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1721 ae(filt(None, {'title': ['issue', 'one']}, ('+','id'), (None,None)), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1722 ['1']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1723 ae(filt(None, {'title': ['issue']}, ('+','id'), (None,None)), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1724 ['1','2','3']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1725 ae(filt(None, {'title': ['one', 'two']}, ('+','id'), (None,None)), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1726 []) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1727 |
|
4787
4a017661e414
Closed issue2550805 (Postgresql should search title case insensitive), by Tom Ekberg.
Bernhard Reiter <bernhard@intevation.de>
parents:
4786
diff
changeset
|
1728 def testFilteringStringCase(self): |
|
4a017661e414
Closed issue2550805 (Postgresql should search title case insensitive), by Tom Ekberg.
Bernhard Reiter <bernhard@intevation.de>
parents:
4786
diff
changeset
|
1729 """ |
|
4a017661e414
Closed issue2550805 (Postgresql should search title case insensitive), by Tom Ekberg.
Bernhard Reiter <bernhard@intevation.de>
parents:
4786
diff
changeset
|
1730 Similar to testFilteringString except the search parameters |
|
4a017661e414
Closed issue2550805 (Postgresql should search title case insensitive), by Tom Ekberg.
Bernhard Reiter <bernhard@intevation.de>
parents:
4786
diff
changeset
|
1731 have different capitalization. |
|
4a017661e414
Closed issue2550805 (Postgresql should search title case insensitive), by Tom Ekberg.
Bernhard Reiter <bernhard@intevation.de>
parents:
4786
diff
changeset
|
1732 """ |
|
4a017661e414
Closed issue2550805 (Postgresql should search title case insensitive), by Tom Ekberg.
Bernhard Reiter <bernhard@intevation.de>
parents:
4786
diff
changeset
|
1733 ae, filter, filter_iter = self.filteringSetup() |
|
4a017661e414
Closed issue2550805 (Postgresql should search title case insensitive), by Tom Ekberg.
Bernhard Reiter <bernhard@intevation.de>
parents:
4786
diff
changeset
|
1734 for filt in filter, filter_iter: |
|
4a017661e414
Closed issue2550805 (Postgresql should search title case insensitive), by Tom Ekberg.
Bernhard Reiter <bernhard@intevation.de>
parents:
4786
diff
changeset
|
1735 ae(filt(None, {'title': ['One']}, ('+','id'), (None,None)), ['1']) |
|
4a017661e414
Closed issue2550805 (Postgresql should search title case insensitive), by Tom Ekberg.
Bernhard Reiter <bernhard@intevation.de>
parents:
4786
diff
changeset
|
1736 ae(filt(None, {'title': ['Issue One']}, ('+','id'), (None,None)), |
|
4a017661e414
Closed issue2550805 (Postgresql should search title case insensitive), by Tom Ekberg.
Bernhard Reiter <bernhard@intevation.de>
parents:
4786
diff
changeset
|
1737 ['1']) |
|
4a017661e414
Closed issue2550805 (Postgresql should search title case insensitive), by Tom Ekberg.
Bernhard Reiter <bernhard@intevation.de>
parents:
4786
diff
changeset
|
1738 ae(filt(None, {'title': ['ISSUE', 'ONE']}, ('+','id'), (None,None)), |
|
4a017661e414
Closed issue2550805 (Postgresql should search title case insensitive), by Tom Ekberg.
Bernhard Reiter <bernhard@intevation.de>
parents:
4786
diff
changeset
|
1739 ['1']) |
|
4a017661e414
Closed issue2550805 (Postgresql should search title case insensitive), by Tom Ekberg.
Bernhard Reiter <bernhard@intevation.de>
parents:
4786
diff
changeset
|
1740 ae(filt(None, {'title': ['iSSUE']}, ('+','id'), (None,None)), |
|
4a017661e414
Closed issue2550805 (Postgresql should search title case insensitive), by Tom Ekberg.
Bernhard Reiter <bernhard@intevation.de>
parents:
4786
diff
changeset
|
1741 ['1','2','3']) |
|
4a017661e414
Closed issue2550805 (Postgresql should search title case insensitive), by Tom Ekberg.
Bernhard Reiter <bernhard@intevation.de>
parents:
4786
diff
changeset
|
1742 ae(filt(None, {'title': ['One', 'Two']}, ('+','id'), (None,None)), |
|
4a017661e414
Closed issue2550805 (Postgresql should search title case insensitive), by Tom Ekberg.
Bernhard Reiter <bernhard@intevation.de>
parents:
4786
diff
changeset
|
1743 []) |
|
4a017661e414
Closed issue2550805 (Postgresql should search title case insensitive), by Tom Ekberg.
Bernhard Reiter <bernhard@intevation.de>
parents:
4786
diff
changeset
|
1744 |
|
4849
e68920390aad
Fix SQL wildcards in string search
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4787
diff
changeset
|
1745 def testFilteringSpecialChars(self): |
|
e68920390aad
Fix SQL wildcards in string search
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4787
diff
changeset
|
1746 """ Special characters in SQL search are '%' and '_', some used |
|
e68920390aad
Fix SQL wildcards in string search
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4787
diff
changeset
|
1747 to lead to a traceback. |
|
e68920390aad
Fix SQL wildcards in string search
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4787
diff
changeset
|
1748 """ |
|
e68920390aad
Fix SQL wildcards in string search
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4787
diff
changeset
|
1749 ae, filter, filter_iter = self.filteringSetup() |
|
e68920390aad
Fix SQL wildcards in string search
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4787
diff
changeset
|
1750 self.db.issue.set('1', title="With % symbol") |
|
e68920390aad
Fix SQL wildcards in string search
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4787
diff
changeset
|
1751 self.db.issue.set('2', title="With _ symbol") |
|
e68920390aad
Fix SQL wildcards in string search
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4787
diff
changeset
|
1752 self.db.issue.set('3', title="With \\ symbol") |
|
e68920390aad
Fix SQL wildcards in string search
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4787
diff
changeset
|
1753 self.db.issue.set('4', title="With ' symbol") |
|
e68920390aad
Fix SQL wildcards in string search
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4787
diff
changeset
|
1754 d = dict (status = '1') |
|
e68920390aad
Fix SQL wildcards in string search
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4787
diff
changeset
|
1755 for filt in filter, filter_iter: |
|
e68920390aad
Fix SQL wildcards in string search
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4787
diff
changeset
|
1756 ae(filt(None, dict(title='%'), ('+','id'), (None,None)), ['1']) |
|
e68920390aad
Fix SQL wildcards in string search
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4787
diff
changeset
|
1757 ae(filt(None, dict(title='_'), ('+','id'), (None,None)), ['2']) |
|
e68920390aad
Fix SQL wildcards in string search
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4787
diff
changeset
|
1758 ae(filt(None, dict(title='\\'), ('+','id'), (None,None)), ['3']) |
|
e68920390aad
Fix SQL wildcards in string search
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4787
diff
changeset
|
1759 ae(filt(None, dict(title="'"), ('+','id'), (None,None)), ['4']) |
|
e68920390aad
Fix SQL wildcards in string search
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4787
diff
changeset
|
1760 |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1761 def testFilteringLink(self): |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1762 ae, filter, filter_iter = self.filteringSetup() |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1763 a = 'assignedto' |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1764 grp = (None, None) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1765 for filt in filter, filter_iter: |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1766 ae(filt(None, {'status': '1'}, ('+','id'), grp), ['2','3']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1767 ae(filt(None, {a: '-1'}, ('+','id'), grp), ['3','4']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1768 ae(filt(None, {a: None}, ('+','id'), grp), ['3','4']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1769 ae(filt(None, {a: [None]}, ('+','id'), grp), ['3','4']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1770 ae(filt(None, {a: ['-1', None]}, ('+','id'), grp), ['3','4']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1771 ae(filt(None, {a: ['1', None]}, ('+','id'), grp), ['1', '3','4']) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1772 |
|
4850
6998ad77841e
Fix bug in SQL generation
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4849
diff
changeset
|
1773 def testFilteringLinkSortSearchMultilink(self): |
|
6998ad77841e
Fix bug in SQL generation
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4849
diff
changeset
|
1774 ae, filter, filter_iter = self.filteringSetup() |
|
6998ad77841e
Fix bug in SQL generation
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4849
diff
changeset
|
1775 a = 'assignedto' |
|
6998ad77841e
Fix bug in SQL generation
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4849
diff
changeset
|
1776 grp = (None, None) |
|
6998ad77841e
Fix bug in SQL generation
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4849
diff
changeset
|
1777 for filt in filter, filter_iter: |
|
6998ad77841e
Fix bug in SQL generation
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4849
diff
changeset
|
1778 ae(filt(None, {'status.mls': '1'}, ('+','status')), ['2','3']) |
|
6998ad77841e
Fix bug in SQL generation
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4849
diff
changeset
|
1779 ae(filt(None, {'status.mls': '2'}, ('+','status')), ['2','3']) |
|
6998ad77841e
Fix bug in SQL generation
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4849
diff
changeset
|
1780 |
|
3675
f3785d646f22
Added two new tests:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3636
diff
changeset
|
1781 def testFilteringMultilinkAndGroup(self): |
|
f3785d646f22
Added two new tests:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3636
diff
changeset
|
1782 """testFilteringMultilinkAndGroup: |
|
f3785d646f22
Added two new tests:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3636
diff
changeset
|
1783 See roundup Bug 1541128: apparently grouping by something and |
|
f3785d646f22
Added two new tests:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3636
diff
changeset
|
1784 searching a Multilink failed with MySQL 5.0 |
|
f3785d646f22
Added two new tests:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3636
diff
changeset
|
1785 """ |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1786 ae, filter, filter_iter = self.filteringSetup() |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1787 for f in filter, filter_iter: |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1788 ae(f(None, {'files': '1'}, ('-','activity'), ('+','status')), ['4']) |
|
3675
f3785d646f22
Added two new tests:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3636
diff
changeset
|
1789 |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1790 def testFilteringRetired(self): |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1791 ae, filter, filter_iter = self.filteringSetup() |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1792 self.db.issue.retire('2') |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1793 for f in filter, filter_iter: |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1794 ae(f(None, {'status': '1'}, ('+','id'), (None,None)), ['3']) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1795 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1796 def testFilteringMultilink(self): |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1797 ae, filter, filter_iter = self.filteringSetup() |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1798 for filt in filter, filter_iter: |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1799 ae(filt(None, {'nosy': '3'}, ('+','id'), (None,None)), ['4']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1800 ae(filt(None, {'nosy': '-1'}, ('+','id'), (None,None)), ['1', '2']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1801 ae(filt(None, {'nosy': ['1','2']}, ('+', 'status'), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1802 ('-', 'deadline')), ['4', '3']) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1803 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1804 def testFilteringMany(self): |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1805 ae, filter, filter_iter = self.filteringSetup() |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1806 for f in filter, filter_iter: |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1807 ae(f(None, {'nosy': '2', 'status': '1'}, ('+','id'), (None,None)), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1808 ['3']) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1809 |
|
3746
5cde43526788
*** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents:
3743
diff
changeset
|
1810 def testFilteringRangeBasic(self): |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1811 ae, filter, filter_iter = self.filteringSetup() |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1812 d = 'deadline' |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1813 for f in filter, filter_iter: |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1814 ae(f(None, {d: 'from 2003-02-10 to 2003-02-23'}), ['1','3']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1815 ae(f(None, {d: '2003-02-10; 2003-02-23'}), ['1','3']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1816 ae(f(None, {d: '; 2003-02-16'}), ['2']) |
|
3746
5cde43526788
*** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents:
3743
diff
changeset
|
1817 |
|
5cde43526788
*** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents:
3743
diff
changeset
|
1818 def testFilteringRangeTwoSyntaxes(self): |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1819 ae, filter, filter_iter = self.filteringSetup() |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1820 for filt in filter, filter_iter: |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1821 ae(filt(None, {'deadline': 'from 2003-02-16'}), ['1', '3', '4']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1822 ae(filt(None, {'deadline': '2003-02-16;'}), ['1', '3', '4']) |
|
3746
5cde43526788
*** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents:
3743
diff
changeset
|
1823 |
|
5cde43526788
*** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents:
3743
diff
changeset
|
1824 def testFilteringRangeYearMonthDay(self): |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1825 ae, filter, filter_iter = self.filteringSetup() |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1826 for filt in filter, filter_iter: |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1827 ae(filt(None, {'deadline': '2002'}), []) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1828 ae(filt(None, {'deadline': '2003'}), ['1', '2', '3']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1829 ae(filt(None, {'deadline': '2004'}), ['4']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1830 ae(filt(None, {'deadline': '2003-02-16'}), ['1']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1831 ae(filt(None, {'deadline': '2003-02-17'}), []) |
|
3746
5cde43526788
*** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents:
3743
diff
changeset
|
1832 |
|
3952
c68581212cf7
add some Range testing, all of which currently fails
Richard Jones <richard@users.sourceforge.net>
parents:
3935
diff
changeset
|
1833 def testFilteringRangeMonths(self): |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1834 ae, filter, filter_iter = self.filteringSetup() |
|
3955
de6326aee6d0
Final fix for date range searching stuff: fix the test :)
Richard Jones <richard@users.sourceforge.net>
parents:
3953
diff
changeset
|
1835 for month in range(1, 13): |
|
3952
c68581212cf7
add some Range testing, all of which currently fails
Richard Jones <richard@users.sourceforge.net>
parents:
3935
diff
changeset
|
1836 for n in range(1, month+1): |
|
c68581212cf7
add some Range testing, all of which currently fails
Richard Jones <richard@users.sourceforge.net>
parents:
3935
diff
changeset
|
1837 i = self.db.issue.create(title='%d.%d'%(month, n), |
|
3955
de6326aee6d0
Final fix for date range searching stuff: fix the test :)
Richard Jones <richard@users.sourceforge.net>
parents:
3953
diff
changeset
|
1838 deadline=date.Date('2001-%02d-%02d.00:00'%(month, n))) |
|
3952
c68581212cf7
add some Range testing, all of which currently fails
Richard Jones <richard@users.sourceforge.net>
parents:
3935
diff
changeset
|
1839 self.db.commit() |
|
c68581212cf7
add some Range testing, all of which currently fails
Richard Jones <richard@users.sourceforge.net>
parents:
3935
diff
changeset
|
1840 |
|
c68581212cf7
add some Range testing, all of which currently fails
Richard Jones <richard@users.sourceforge.net>
parents:
3935
diff
changeset
|
1841 for month in range(1, 13): |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1842 for filt in filter, filter_iter: |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1843 r = filt(None, dict(deadline='2001-%02d'%month)) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1844 assert len(r) == month, 'month %d != length %d'%(month, len(r)) |
|
3952
c68581212cf7
add some Range testing, all of which currently fails
Richard Jones <richard@users.sourceforge.net>
parents:
3935
diff
changeset
|
1845 |
|
3746
5cde43526788
*** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents:
3743
diff
changeset
|
1846 def testFilteringRangeInterval(self): |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1847 ae, filter, filter_iter = self.filteringSetup() |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1848 for filt in filter, filter_iter: |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1849 ae(filt(None, {'foo': 'from 0:50 to 2:00'}), ['1']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1850 ae(filt(None, {'foo': 'from 0:50 to 1d 2:00'}), ['1', '2']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1851 ae(filt(None, {'foo': 'from 5:50'}), ['2']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1852 ae(filt(None, {'foo': 'to 0:05'}), []) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1853 |
|
3746
5cde43526788
*** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents:
3743
diff
changeset
|
1854 def testFilteringRangeGeekInterval(self): |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1855 ae, filter, filter_iter = self.filteringSetup() |
| 4876 | 1856 # Note: When querying, create date one minute later than the |
| 1857 # timespan later queried to avoid race conditions where the | |
| 1858 # creation of the deadline is more than a second ago when | |
| 1859 # queried -- in that case we wouldn't get the expected result. | |
| 1860 # By extending the interval by a minute we would need a very | |
| 1861 # slow machine for this test to fail :-) | |
|
3586
f47bddab5a49
date spec wasn't allowing week intervals
Richard Jones <richard@users.sourceforge.net>
parents:
3554
diff
changeset
|
1862 for issue in ( |
| 4876 | 1863 { 'deadline': date.Date('. -2d') + date.Interval ('00:01')}, |
| 1864 { 'deadline': date.Date('. -1d') + date.Interval ('00:01')}, | |
| 1865 { 'deadline': date.Date('. -8d') + date.Interval ('00:01')}, | |
|
3586
f47bddab5a49
date spec wasn't allowing week intervals
Richard Jones <richard@users.sourceforge.net>
parents:
3554
diff
changeset
|
1866 ): |
|
f47bddab5a49
date spec wasn't allowing week intervals
Richard Jones <richard@users.sourceforge.net>
parents:
3554
diff
changeset
|
1867 self.db.issue.create(**issue) |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1868 for filt in filter, filter_iter: |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1869 ae(filt(None, {'deadline': '-2d;'}), ['5', '6']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1870 ae(filt(None, {'deadline': '-1d;'}), ['6']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1871 ae(filt(None, {'deadline': '-1w;'}), ['5', '6']) |
| 4876 | 1872 ae(filt(None, {'deadline': '. -2d;'}), ['5', '6']) |
| 1873 ae(filt(None, {'deadline': '. -1d;'}), ['6']) | |
| 1874 ae(filt(None, {'deadline': '. -1w;'}), ['5', '6']) | |
|
3586
f47bddab5a49
date spec wasn't allowing week intervals
Richard Jones <richard@users.sourceforge.net>
parents:
3554
diff
changeset
|
1875 |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1876 def testFilteringIntervalSort(self): |
|
2318
fa2f7ba34399
merge from maint-0-7
Richard Jones <richard@users.sourceforge.net>
parents:
2255
diff
changeset
|
1877 # 1: '1:10' |
|
fa2f7ba34399
merge from maint-0-7
Richard Jones <richard@users.sourceforge.net>
parents:
2255
diff
changeset
|
1878 # 2: '1d' |
|
fa2f7ba34399
merge from maint-0-7
Richard Jones <richard@users.sourceforge.net>
parents:
2255
diff
changeset
|
1879 # 3: None |
|
fa2f7ba34399
merge from maint-0-7
Richard Jones <richard@users.sourceforge.net>
parents:
2255
diff
changeset
|
1880 # 4: '0:10' |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1881 ae, filter, filter_iter = self.filteringSetup() |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1882 for filt in filter, filter_iter: |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1883 # ascending should sort None, 1:10, 1d |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1884 ae(filt(None, {}, ('+','foo'), (None,None)), ['3', '4', '1', '2']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1885 # descending should sort 1d, 1:10, None |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1886 ae(filt(None, {}, ('-','foo'), (None,None)), ['2', '1', '4', '3']) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1887 |
|
3681
b9301ae1c34d
Added a test case for string comparison:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3675
diff
changeset
|
1888 def testFilteringStringSort(self): |
|
b9301ae1c34d
Added a test case for string comparison:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3675
diff
changeset
|
1889 # 1: 'issue one' |
|
b9301ae1c34d
Added a test case for string comparison:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3675
diff
changeset
|
1890 # 2: 'issue two' |
|
b9301ae1c34d
Added a test case for string comparison:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3675
diff
changeset
|
1891 # 3: 'issue three' |
|
b9301ae1c34d
Added a test case for string comparison:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3675
diff
changeset
|
1892 # 4: 'non four' |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1893 ae, filter, filter_iter = self.filteringSetup() |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1894 for filt in filter, filter_iter: |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1895 ae(filt(None, {}, ('+','title')), ['1', '3', '2', '4']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1896 ae(filt(None, {}, ('-','title')), ['4', '2', '3', '1']) |
|
3681
b9301ae1c34d
Added a test case for string comparison:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3675
diff
changeset
|
1897 # Test string case: For now allow both, w/wo case matching. |
|
b9301ae1c34d
Added a test case for string comparison:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3675
diff
changeset
|
1898 # 1: 'issue one' |
|
b9301ae1c34d
Added a test case for string comparison:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3675
diff
changeset
|
1899 # 2: 'issue two' |
|
b9301ae1c34d
Added a test case for string comparison:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3675
diff
changeset
|
1900 # 3: 'Issue three' |
|
b9301ae1c34d
Added a test case for string comparison:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3675
diff
changeset
|
1901 # 4: 'non four' |
|
b9301ae1c34d
Added a test case for string comparison:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3675
diff
changeset
|
1902 self.db.issue.set('3', title='Issue three') |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1903 for filt in filter, filter_iter: |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1904 ae(filt(None, {}, ('+','title')), ['1', '3', '2', '4']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1905 ae(filt(None, {}, ('-','title')), ['4', '2', '3', '1']) |
|
3681
b9301ae1c34d
Added a test case for string comparison:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3675
diff
changeset
|
1906 # Obscure bug in anydbm backend trying to convert to number |
|
b9301ae1c34d
Added a test case for string comparison:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3675
diff
changeset
|
1907 # 1: '1st issue' |
|
b9301ae1c34d
Added a test case for string comparison:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3675
diff
changeset
|
1908 # 2: '2' |
|
b9301ae1c34d
Added a test case for string comparison:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3675
diff
changeset
|
1909 # 3: 'Issue three' |
|
b9301ae1c34d
Added a test case for string comparison:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3675
diff
changeset
|
1910 # 4: 'non four' |
|
b9301ae1c34d
Added a test case for string comparison:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3675
diff
changeset
|
1911 self.db.issue.set('1', title='1st issue') |
|
b9301ae1c34d
Added a test case for string comparison:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3675
diff
changeset
|
1912 self.db.issue.set('2', title='2') |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1913 for filt in filter, filter_iter: |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1914 ae(filt(None, {}, ('+','title')), ['1', '2', '3', '4']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1915 ae(filt(None, {}, ('-','title')), ['4', '3', '2', '1']) |
|
3681
b9301ae1c34d
Added a test case for string comparison:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3675
diff
changeset
|
1916 |
|
2185
c52a931879c4
sort/group by multilink in RDBMS
Richard Jones <richard@users.sourceforge.net>
parents:
2102
diff
changeset
|
1917 def testFilteringMultilinkSort(self): |
|
3682
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
1918 # 1: [] Reverse: 1: [] |
|
3882
46ef2a6fd79d
config option to limit nosy attachments based on size
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3872
diff
changeset
|
1919 # 2: [] 2: [] |
|
46ef2a6fd79d
config option to limit nosy attachments based on size
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3872
diff
changeset
|
1920 # 3: ['admin','fred'] 3: ['fred','admin'] |
|
3682
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
1921 # 4: ['admin','bleep','fred'] 4: ['fred','bleep','admin'] |
|
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
1922 # Note the sort order for the multilink doen't change when |
|
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
1923 # reversing the sort direction due to the re-sorting of the |
|
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
1924 # multilink! |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1925 # Note that we don't test filter_iter here, Multilink sort-order |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1926 # isn't defined for that. |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1927 ae, filt, dummy = self.filteringSetup() |
|
2185
c52a931879c4
sort/group by multilink in RDBMS
Richard Jones <richard@users.sourceforge.net>
parents:
2102
diff
changeset
|
1928 ae(filt(None, {}, ('+','nosy'), (None,None)), ['1', '2', '4', '3']) |
|
3682
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
1929 ae(filt(None, {}, ('-','nosy'), (None,None)), ['4', '3', '1', '2']) |
|
2185
c52a931879c4
sort/group by multilink in RDBMS
Richard Jones <richard@users.sourceforge.net>
parents:
2102
diff
changeset
|
1930 |
|
3675
f3785d646f22
Added two new tests:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3636
diff
changeset
|
1931 def testFilteringMultilinkSortGroup(self): |
|
f3785d646f22
Added two new tests:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3636
diff
changeset
|
1932 # 1: status: 2 "in-progress" nosy: [] |
|
f3785d646f22
Added two new tests:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3636
diff
changeset
|
1933 # 2: status: 1 "unread" nosy: [] |
|
3682
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
1934 # 3: status: 1 "unread" nosy: ['admin','fred'] |
|
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
1935 # 4: status: 3 "testing" nosy: ['admin','bleep','fred'] |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1936 # Note that we don't test filter_iter here, Multilink sort-order |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1937 # isn't defined for that. |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1938 ae, filt, dummy = self.filteringSetup() |
|
3675
f3785d646f22
Added two new tests:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3636
diff
changeset
|
1939 ae(filt(None, {}, ('+','nosy'), ('+','status')), ['1', '4', '2', '3']) |
|
f3785d646f22
Added two new tests:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3636
diff
changeset
|
1940 ae(filt(None, {}, ('-','nosy'), ('+','status')), ['1', '4', '3', '2']) |
|
3682
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
1941 ae(filt(None, {}, ('+','nosy'), ('-','status')), ['2', '3', '4', '1']) |
|
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
1942 ae(filt(None, {}, ('-','nosy'), ('-','status')), ['3', '2', '4', '1']) |
|
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
1943 ae(filt(None, {}, ('+','status'), ('+','nosy')), ['1', '2', '4', '3']) |
|
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
1944 ae(filt(None, {}, ('-','status'), ('+','nosy')), ['2', '1', '4', '3']) |
|
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
1945 ae(filt(None, {}, ('+','status'), ('-','nosy')), ['4', '3', '1', '2']) |
|
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
1946 ae(filt(None, {}, ('-','status'), ('-','nosy')), ['4', '3', '2', '1']) |
|
3675
f3785d646f22
Added two new tests:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3636
diff
changeset
|
1947 |
|
3525
7be25d75c3d5
Fixed SQL generation for sort/group by separate Link properties [SF#1417565]
Richard Jones <richard@users.sourceforge.net>
parents:
3486
diff
changeset
|
1948 def testFilteringLinkSortGroup(self): |
|
3682
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
1949 # 1: status: 2 -> 'i', priority: 3 -> 1 |
|
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
1950 # 2: status: 1 -> 'u', priority: 3 -> 1 |
|
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
1951 # 3: status: 1 -> 'u', priority: 2 -> 3 |
|
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
1952 # 4: status: 3 -> 't', priority: 2 -> 3 |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1953 ae, filter, filter_iter = self.filteringSetup() |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1954 for filt in filter, filter_iter: |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1955 ae(filt(None, {}, ('+','status'), ('+','priority')), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1956 ['1', '2', '4', '3']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1957 ae(filt(None, {'priority':'2'}, ('+','status'), ('+','priority')), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1958 ['4', '3']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1959 ae(filt(None, {'priority.order':'3'}, ('+','status'), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1960 ('+','priority')), ['4', '3']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1961 ae(filt(None, {'priority':['2','3']}, ('+','priority'), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1962 ('+','status')), ['1', '4', '2', '3']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1963 ae(filt(None, {}, ('+','priority'), ('+','status')), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1964 ['1', '4', '2', '3']) |
|
3525
7be25d75c3d5
Fixed SQL generation for sort/group by separate Link properties [SF#1417565]
Richard Jones <richard@users.sourceforge.net>
parents:
3486
diff
changeset
|
1965 |
|
2318
fa2f7ba34399
merge from maint-0-7
Richard Jones <richard@users.sourceforge.net>
parents:
2255
diff
changeset
|
1966 def testFilteringDateSort(self): |
|
2603
5ccd99777869
fix metakit handling of filter on Link==None; fix some unit tests
Richard Jones <richard@users.sourceforge.net>
parents:
2602
diff
changeset
|
1967 # '1': '2003-02-16.22:50' |
|
5ccd99777869
fix metakit handling of filter on Link==None; fix some unit tests
Richard Jones <richard@users.sourceforge.net>
parents:
2602
diff
changeset
|
1968 # '2': '2003-01-01.00:00' |
|
2318
fa2f7ba34399
merge from maint-0-7
Richard Jones <richard@users.sourceforge.net>
parents:
2255
diff
changeset
|
1969 # '3': '2003-02-18' |
|
fa2f7ba34399
merge from maint-0-7
Richard Jones <richard@users.sourceforge.net>
parents:
2255
diff
changeset
|
1970 # '4': '2004-03-08' |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1971 ae, filter, filter_iter = self.filteringSetup() |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1972 for f in filter, filter_iter: |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1973 # ascending |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1974 ae(f(None, {}, ('+','deadline'), (None,None)), ['2', '1', '3', '4']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1975 # descending |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1976 ae(f(None, {}, ('-','deadline'), (None,None)), ['4', '3', '1', '2']) |
|
2318
fa2f7ba34399
merge from maint-0-7
Richard Jones <richard@users.sourceforge.net>
parents:
2255
diff
changeset
|
1977 |
|
fa2f7ba34399
merge from maint-0-7
Richard Jones <richard@users.sourceforge.net>
parents:
2255
diff
changeset
|
1978 def testFilteringDateSortPriorityGroup(self): |
|
2603
5ccd99777869
fix metakit handling of filter on Link==None; fix some unit tests
Richard Jones <richard@users.sourceforge.net>
parents:
2602
diff
changeset
|
1979 # '1': '2003-02-16.22:50' 1 => 2 |
|
5ccd99777869
fix metakit handling of filter on Link==None; fix some unit tests
Richard Jones <richard@users.sourceforge.net>
parents:
2602
diff
changeset
|
1980 # '2': '2003-01-01.00:00' 3 => 1 |
|
2318
fa2f7ba34399
merge from maint-0-7
Richard Jones <richard@users.sourceforge.net>
parents:
2255
diff
changeset
|
1981 # '3': '2003-02-18' 2 => 3 |
|
fa2f7ba34399
merge from maint-0-7
Richard Jones <richard@users.sourceforge.net>
parents:
2255
diff
changeset
|
1982 # '4': '2004-03-08' 1 => 2 |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1983 ae, filter, filter_iter = self.filteringSetup() |
|
2318
fa2f7ba34399
merge from maint-0-7
Richard Jones <richard@users.sourceforge.net>
parents:
2255
diff
changeset
|
1984 |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1985 for filt in filter, filter_iter: |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1986 # ascending |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1987 ae(filt(None, {}, ('+','deadline'), ('+','priority')), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1988 ['2', '1', '3', '4']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1989 ae(filt(None, {}, ('-','deadline'), ('+','priority')), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1990 ['1', '2', '4', '3']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1991 # descending |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1992 ae(filt(None, {}, ('+','deadline'), ('-','priority')), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1993 ['3', '4', '2', '1']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1994 ae(filt(None, {}, ('-','deadline'), ('-','priority')), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1995 ['4', '3', '1', '2']) |
|
3634
57c66056ffe4
Implemented what I'll call for now "transitive searching"...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3601
diff
changeset
|
1996 |
|
57c66056ffe4
Implemented what I'll call for now "transitive searching"...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3601
diff
changeset
|
1997 def testFilteringTransitiveLinkUser(self): |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1998 ae, filter, filter_iter = self.filteringSetupTransitiveSearch('user') |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1999 for f in filter, filter_iter: |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2000 ae(f(None, {'supervisor.username': 'ceo'}, ('+','username')), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2001 ['4', '5']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2002 ae(f(None, {'supervisor.supervisor.username': 'ceo'}, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2003 ('+','username')), ['6', '7', '8', '9', '10']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2004 ae(f(None, {'supervisor.supervisor': '3'}, ('+','username')), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2005 ['6', '7', '8', '9', '10']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2006 ae(f(None, {'supervisor.supervisor.id': '3'}, ('+','username')), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2007 ['6', '7', '8', '9', '10']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2008 ae(f(None, {'supervisor.username': 'grouplead1'}, ('+','username')), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2009 ['6', '7']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2010 ae(f(None, {'supervisor.username': 'grouplead2'}, ('+','username')), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2011 ['8', '9', '10']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2012 ae(f(None, {'supervisor.username': 'grouplead2', |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2013 'supervisor.supervisor.username': 'ceo'}, ('+','username')), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2014 ['8', '9', '10']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2015 ae(f(None, {'supervisor.supervisor': '3', 'supervisor': '4'}, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2016 ('+','username')), ['6', '7']) |
|
3634
57c66056ffe4
Implemented what I'll call for now "transitive searching"...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3601
diff
changeset
|
2017 |
|
3682
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2018 def testFilteringTransitiveLinkSort(self): |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2019 ae, filter, filter_iter = self.filteringSetupTransitiveSearch() |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2020 ae, ufilter, ufilter_iter = self.iterSetup('user') |
|
3682
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2021 # Need to make ceo his own (and first two users') supervisor, |
|
3685
4d9adb8bc3b1
Null-value sorting fixes:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3684
diff
changeset
|
2022 # otherwise we will depend on sorting order of NULL values. |
|
4d9adb8bc3b1
Null-value sorting fixes:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3684
diff
changeset
|
2023 # Leave that to a separate test. |
|
3682
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2024 self.db.user.set('1', supervisor = '3') |
|
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2025 self.db.user.set('2', supervisor = '3') |
|
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2026 self.db.user.set('3', supervisor = '3') |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2027 for ufilt in ufilter, ufilter_iter: |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2028 ae(ufilt(None, {'supervisor':'3'}, []), ['1', '2', '3', '4', '5']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2029 ae(ufilt(None, {}, [('+','supervisor.supervisor.supervisor'), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2030 ('+','supervisor.supervisor'), ('+','supervisor'), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2031 ('+','username')]), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2032 ['1', '3', '2', '4', '5', '6', '7', '8', '9', '10']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2033 ae(ufilt(None, {}, [('+','supervisor.supervisor.supervisor'), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2034 ('-','supervisor.supervisor'), ('-','supervisor'), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2035 ('+','username')]), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2036 ['8', '9', '10', '6', '7', '1', '3', '2', '4', '5']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2037 for f in filter, filter_iter: |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2038 ae(f(None, {}, [('+','assignedto.supervisor.supervisor.supervisor'), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2039 ('+','assignedto.supervisor.supervisor'), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2040 ('+','assignedto.supervisor'), ('+','assignedto')]), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2041 ['1', '2', '3', '4', '5', '6', '7', '8']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2042 ae(f(None, {}, [('+','assignedto.supervisor.supervisor.supervisor'), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2043 ('+','assignedto.supervisor.supervisor'), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2044 ('-','assignedto.supervisor'), ('+','assignedto')]), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2045 ['4', '5', '6', '7', '8', '1', '2', '3']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2046 ae(f(None, {}, [('+','assignedto.supervisor.supervisor.supervisor'), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2047 ('+','assignedto.supervisor.supervisor'), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2048 ('+','assignedto.supervisor'), ('+','assignedto'), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2049 ('-','status')]), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2050 ['2', '1', '3', '4', '5', '6', '8', '7']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2051 ae(f(None, {}, [('+','assignedto.supervisor.supervisor.supervisor'), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2052 ('+','assignedto.supervisor.supervisor'), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2053 ('+','assignedto.supervisor'), ('+','assignedto'), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2054 ('+','status')]), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2055 ['1', '2', '3', '4', '5', '7', '6', '8']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2056 ae(f(None, {}, [('+','assignedto.supervisor.supervisor.supervisor'), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2057 ('+','assignedto.supervisor.supervisor'), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2058 ('-','assignedto.supervisor'), ('+','assignedto'), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2059 ('+','status')]), ['4', '5', '7', '6', '8', '1', '2', '3']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2060 ae(f(None, {'assignedto':['6','7','8','9','10']}, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2061 [('+','assignedto.supervisor.supervisor.supervisor'), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2062 ('+','assignedto.supervisor.supervisor'), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2063 ('-','assignedto.supervisor'), ('+','assignedto'), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2064 ('+','status')]), ['4', '5', '7', '6', '8', '1', '2', '3']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2065 ae(f(None, {'assignedto':['6','7','8','9']}, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2066 [('+','assignedto.supervisor.supervisor.supervisor'), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2067 ('+','assignedto.supervisor.supervisor'), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2068 ('-','assignedto.supervisor'), ('+','assignedto'), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2069 ('+','status')]), ['4', '5', '1', '2', '3']) |
|
3682
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2070 |
|
3685
4d9adb8bc3b1
Null-value sorting fixes:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3684
diff
changeset
|
2071 def testFilteringTransitiveLinkSortNull(self): |
|
4d9adb8bc3b1
Null-value sorting fixes:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3684
diff
changeset
|
2072 """Check sorting of NULL values""" |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2073 ae, filter, filter_iter = self.filteringSetupTransitiveSearch() |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2074 ae, ufilter, ufilter_iter = self.iterSetup('user') |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2075 for ufilt in ufilter, ufilter_iter: |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2076 ae(ufilt(None, {}, [('+','supervisor.supervisor.supervisor'), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2077 ('+','supervisor.supervisor'), ('+','supervisor'), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2078 ('+','username')]), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2079 ['1', '3', '2', '4', '5', '6', '7', '8', '9', '10']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2080 ae(ufilt(None, {}, [('+','supervisor.supervisor.supervisor'), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2081 ('-','supervisor.supervisor'), ('-','supervisor'), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2082 ('+','username')]), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2083 ['8', '9', '10', '6', '7', '4', '5', '1', '3', '2']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2084 for f in filter, filter_iter: |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2085 ae(f(None, {}, [('+','assignedto.supervisor.supervisor.supervisor'), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2086 ('+','assignedto.supervisor.supervisor'), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2087 ('+','assignedto.supervisor'), ('+','assignedto')]), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2088 ['1', '2', '3', '4', '5', '6', '7', '8']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2089 ae(f(None, {}, [('+','assignedto.supervisor.supervisor.supervisor'), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2090 ('+','assignedto.supervisor.supervisor'), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2091 ('-','assignedto.supervisor'), ('+','assignedto')]), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2092 ['4', '5', '6', '7', '8', '1', '2', '3']) |
|
3685
4d9adb8bc3b1
Null-value sorting fixes:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3684
diff
changeset
|
2093 |
|
3634
57c66056ffe4
Implemented what I'll call for now "transitive searching"...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3601
diff
changeset
|
2094 def testFilteringTransitiveLinkIssue(self): |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2095 ae, filter, filter_iter = self.filteringSetupTransitiveSearch() |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2096 for filt in filter, filter_iter: |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2097 ae(filt(None, {'assignedto.supervisor.username': 'grouplead1'}, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2098 ('+','id')), ['1', '2', '3']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2099 ae(filt(None, {'assignedto.supervisor.username': 'grouplead2'}, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2100 ('+','id')), ['4', '5', '6', '7', '8']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2101 ae(filt(None, {'assignedto.supervisor.username': 'grouplead2', |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2102 'status': '1'}, ('+','id')), ['4', '6', '8']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2103 ae(filt(None, {'assignedto.supervisor.username': 'grouplead2', |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2104 'status': '2'}, ('+','id')), ['5', '7']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2105 ae(filt(None, {'assignedto.supervisor.username': ['grouplead2'], |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2106 'status': '2'}, ('+','id')), ['5', '7']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2107 ae(filt(None, {'assignedto.supervisor': ['4', '5'], 'status': '2'}, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2108 ('+','id')), ['1', '3', '5', '7']) |
|
3634
57c66056ffe4
Implemented what I'll call for now "transitive searching"...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3601
diff
changeset
|
2109 |
|
57c66056ffe4
Implemented what I'll call for now "transitive searching"...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3601
diff
changeset
|
2110 def testFilteringTransitiveMultilink(self): |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2111 ae, filter, filter_iter = self.filteringSetupTransitiveSearch() |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2112 for filt in filter, filter_iter: |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2113 ae(filt(None, {'messages.author.username': 'grouplead1'}, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2114 ('+','id')), []) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2115 ae(filt(None, {'messages.author': '6'}, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2116 ('+','id')), ['1', '2']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2117 ae(filt(None, {'messages.author.id': '6'}, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2118 ('+','id')), ['1', '2']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2119 ae(filt(None, {'messages.author.username': 'worker1'}, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2120 ('+','id')), ['1', '2']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2121 ae(filt(None, {'messages.author': '10'}, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2122 ('+','id')), ['6', '7', '8']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2123 ae(filt(None, {'messages.author': '9'}, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2124 ('+','id')), ['5', '8']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2125 ae(filt(None, {'messages.author': ['9', '10']}, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2126 ('+','id')), ['5', '6', '7', '8']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2127 ae(filt(None, {'messages.author': ['8', '9']}, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2128 ('+','id')), ['4', '5', '8']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2129 ae(filt(None, {'messages.author': ['8', '9'], 'status' : '1'}, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2130 ('+','id')), ['4', '8']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2131 ae(filt(None, {'messages.author': ['8', '9'], 'status' : '2'}, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2132 ('+','id')), ['5']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2133 ae(filt(None, {'messages.author': ['8', '9', '10'], |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2134 'messages.date': '2006-01-22.21:00;2006-01-23'}, ('+','id')), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2135 ['6', '7', '8']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2136 ae(filt(None, {'nosy.supervisor.username': 'ceo'}, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2137 ('+','id')), ['1', '2']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2138 ae(filt(None, {'messages.author': ['6', '9']}, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2139 ('+','id')), ['1', '2', '5', '8']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2140 ae(filt(None, {'messages': ['5', '7']}, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2141 ('+','id')), ['3', '5', '8']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2142 ae(filt(None, {'messages.author': ['6', '9'], |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2143 'messages': ['5', '7']}, ('+','id')), ['5', '8']) |
|
3634
57c66056ffe4
Implemented what I'll call for now "transitive searching"...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3601
diff
changeset
|
2144 |
|
3682
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2145 def testFilteringTransitiveMultilinkSort(self): |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2146 # Note that we don't test filter_iter here, Multilink sort-order |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2147 # isn't defined for that. |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2148 ae, filt, dummy = self.filteringSetupTransitiveSearch() |
|
3682
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2149 ae(filt(None, {}, [('+','messages.author')]), |
|
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2150 ['1', '2', '3', '4', '5', '8', '6', '7']) |
|
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2151 ae(filt(None, {}, [('-','messages.author')]), |
|
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2152 ['8', '6', '7', '5', '4', '3', '1', '2']) |
|
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2153 ae(filt(None, {}, [('+','messages.date')]), |
|
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2154 ['6', '7', '8', '5', '4', '3', '1', '2']) |
|
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2155 ae(filt(None, {}, [('-','messages.date')]), |
|
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2156 ['1', '2', '3', '4', '8', '5', '6', '7']) |
|
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2157 ae(filt(None, {}, [('+','messages.author'),('+','messages.date')]), |
|
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2158 ['1', '2', '3', '4', '5', '8', '6', '7']) |
|
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2159 ae(filt(None, {}, [('-','messages.author'),('+','messages.date')]), |
|
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2160 ['8', '6', '7', '5', '4', '3', '1', '2']) |
|
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2161 ae(filt(None, {}, [('+','messages.author'),('-','messages.date')]), |
|
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2162 ['1', '2', '3', '4', '5', '8', '6', '7']) |
|
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2163 ae(filt(None, {}, [('-','messages.author'),('-','messages.date')]), |
|
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2164 ['8', '6', '7', '5', '4', '3', '1', '2']) |
|
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2165 ae(filt(None, {}, [('+','messages.author'),('+','assignedto')]), |
|
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2166 ['1', '2', '3', '4', '5', '8', '6', '7']) |
|
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2167 ae(filt(None, {}, [('+','messages.author'), |
|
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2168 ('-','assignedto.supervisor'),('-','assignedto')]), |
|
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2169 ['1', '2', '3', '4', '5', '8', '6', '7']) |
|
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2170 ae(filt(None, {}, |
|
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2171 [('+','messages.author.supervisor.supervisor.supervisor'), |
|
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2172 ('+','messages.author.supervisor.supervisor'), |
|
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2173 ('+','messages.author.supervisor'), ('+','messages.author')]), |
|
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2174 ['1', '2', '3', '4', '5', '6', '7', '8']) |
|
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2175 self.db.user.setorderprop('age') |
|
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2176 self.db.msg.setorderprop('date') |
|
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2177 ae(filt(None, {}, [('+','messages'), ('+','messages.author')]), |
|
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2178 ['6', '7', '8', '5', '4', '3', '1', '2']) |
|
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2179 ae(filt(None, {}, [('+','messages.author'), ('+','messages')]), |
|
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2180 ['6', '7', '8', '5', '4', '3', '1', '2']) |
|
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2181 self.db.msg.setorderprop('author') |
|
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2182 # Orderprop is a Link/Multilink: |
|
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2183 # messages are sorted by orderprop().labelprop(), i.e. by |
|
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2184 # author.username, *not* by author.orderprop() (author.age)! |
|
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2185 ae(filt(None, {}, [('+','messages')]), |
|
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2186 ['1', '2', '3', '4', '5', '8', '6', '7']) |
|
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2187 ae(filt(None, {}, [('+','messages.author'), ('+','messages')]), |
|
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2188 ['6', '7', '8', '5', '4', '3', '1', '2']) |
|
3882
46ef2a6fd79d
config option to limit nosy attachments based on size
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3872
diff
changeset
|
2189 # The following will sort by |
|
3682
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2190 # author.supervisor.username and then by |
|
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2191 # author.username |
|
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2192 # I've resited the tempation to implement recursive orderprop |
|
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2193 # here: There could even be loops if several classes specify a |
|
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2194 # Link or Multilink as the orderprop... |
|
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2195 # msg: 4: worker1 (id 5) : grouplead1 (id 4) ceo (id 3) |
|
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2196 # msg: 5: worker2 (id 7) : grouplead1 (id 4) ceo (id 3) |
|
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2197 # msg: 6: worker3 (id 8) : grouplead2 (id 5) ceo (id 3) |
|
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2198 # msg: 7: worker4 (id 9) : grouplead2 (id 5) ceo (id 3) |
|
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2199 # msg: 8: worker5 (id 10) : grouplead2 (id 5) ceo (id 3) |
|
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2200 # issue 1: messages 4 sortkey:[[grouplead1], [worker1], 1] |
|
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2201 # issue 2: messages 4 sortkey:[[grouplead1], [worker1], 2] |
|
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2202 # issue 3: messages 5 sortkey:[[grouplead1], [worker2], 3] |
|
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2203 # issue 4: messages 6 sortkey:[[grouplead2], [worker3], 4] |
|
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2204 # issue 5: messages 7 sortkey:[[grouplead2], [worker4], 5] |
|
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2205 # issue 6: messages 8 sortkey:[[grouplead2], [worker5], 6] |
|
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2206 # issue 7: messages 8 sortkey:[[grouplead2], [worker5], 7] |
|
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2207 # issue 8: messages 7,8 sortkey:[[grouplead2, grouplead2], ...] |
|
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2208 self.db.user.setorderprop('supervisor') |
|
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2209 ae(filt(None, {}, [('+','messages.author'), ('-','messages')]), |
|
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2210 ['3', '1', '2', '6', '7', '5', '4', '8']) |
|
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2211 |
|
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2212 def testFilteringSortId(self): |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2213 ae, filter, filter_iter = self.filteringSetupTransitiveSearch('user') |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2214 for filt in filter, filter_iter: |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2215 ae(filt(None, {}, ('+','id')), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2216 ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10']) |
|
3682
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2217 |
|
5318
506c7ee9a385
Add a 'retired' parameter to Class.filter
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5317
diff
changeset
|
2218 def testFilteringRetiredString(self): |
|
506c7ee9a385
Add a 'retired' parameter to Class.filter
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5317
diff
changeset
|
2219 ae, filter, filter_iter = self.filteringSetup() |
|
506c7ee9a385
Add a 'retired' parameter to Class.filter
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5317
diff
changeset
|
2220 self.db.issue.retire('1') |
|
506c7ee9a385
Add a 'retired' parameter to Class.filter
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5317
diff
changeset
|
2221 self.db.commit() |
|
506c7ee9a385
Add a 'retired' parameter to Class.filter
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5317
diff
changeset
|
2222 r = { None: (['1'], ['1'], ['1'], ['1', '2', '3'], []) |
|
506c7ee9a385
Add a 'retired' parameter to Class.filter
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5317
diff
changeset
|
2223 , True: (['1'], ['1'], ['1'], ['1'], []) |
|
506c7ee9a385
Add a 'retired' parameter to Class.filter
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5317
diff
changeset
|
2224 , False: ([], [], [], ['2', '3'], []) |
|
506c7ee9a385
Add a 'retired' parameter to Class.filter
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5317
diff
changeset
|
2225 } |
|
506c7ee9a385
Add a 'retired' parameter to Class.filter
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5317
diff
changeset
|
2226 for filt in filter, filter_iter: |
|
506c7ee9a385
Add a 'retired' parameter to Class.filter
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5317
diff
changeset
|
2227 for retire in True, False, None: |
|
506c7ee9a385
Add a 'retired' parameter to Class.filter
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5317
diff
changeset
|
2228 ae(filt(None, {'title': ['one']}, ('+','id'), |
|
506c7ee9a385
Add a 'retired' parameter to Class.filter
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5317
diff
changeset
|
2229 retired=retire), r[retire][0]) |
|
506c7ee9a385
Add a 'retired' parameter to Class.filter
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5317
diff
changeset
|
2230 ae(filt(None, {'title': ['issue one']}, ('+','id'), |
|
506c7ee9a385
Add a 'retired' parameter to Class.filter
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5317
diff
changeset
|
2231 retired=retire), r[retire][1]) |
|
506c7ee9a385
Add a 'retired' parameter to Class.filter
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5317
diff
changeset
|
2232 ae(filt(None, {'title': ['issue', 'one']}, ('+','id'), |
|
506c7ee9a385
Add a 'retired' parameter to Class.filter
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5317
diff
changeset
|
2233 retired=retire), r[retire][2]) |
|
506c7ee9a385
Add a 'retired' parameter to Class.filter
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5317
diff
changeset
|
2234 ae(filt(None, {'title': ['issue']}, ('+','id'), |
|
506c7ee9a385
Add a 'retired' parameter to Class.filter
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5317
diff
changeset
|
2235 retired=retire), r[retire][3]) |
|
506c7ee9a385
Add a 'retired' parameter to Class.filter
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5317
diff
changeset
|
2236 ae(filt(None, {'title': ['one', 'two']}, ('+','id'), |
|
506c7ee9a385
Add a 'retired' parameter to Class.filter
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5317
diff
changeset
|
2237 retired=retire), r[retire][4]) |
|
506c7ee9a385
Add a 'retired' parameter to Class.filter
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5317
diff
changeset
|
2238 |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2239 # XXX add sorting tests for other types |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2240 |
|
4255
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
2241 # nuke and re-create db for restore |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
2242 def nukeAndCreate(self): |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
2243 # shut down this db and nuke it |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
2244 self.db.close() |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
2245 self.nuke_database() |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
2246 |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
2247 # open a new, empty database |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
2248 os.makedirs(config.DATABASE + '/files') |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
2249 self.db = self.module.Database(config, 'admin') |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
2250 setupSchema(self.db, 0, self.module) |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
2251 |
|
1920
f9316d2cd5ba
Fixed retirement of items in rdbms imports [SF#841355]
Richard Jones <richard@users.sourceforge.net>
parents:
1912
diff
changeset
|
2252 def testImportExport(self): |
|
f9316d2cd5ba
Fixed retirement of items in rdbms imports [SF#841355]
Richard Jones <richard@users.sourceforge.net>
parents:
1912
diff
changeset
|
2253 # use the filtering setup to create a bunch of items |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2254 ae, dummy1, dummy2 = self.filteringSetup() |
|
3826
bf2e9535da00
Journal and database testing.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3822
diff
changeset
|
2255 # Get some stuff into the journal for testing import/export of |
|
bf2e9535da00
Journal and database testing.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3822
diff
changeset
|
2256 # journal data: |
|
bf2e9535da00
Journal and database testing.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3822
diff
changeset
|
2257 self.db.user.set('4', password = password.Password('xyzzy')) |
|
bf2e9535da00
Journal and database testing.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3822
diff
changeset
|
2258 self.db.user.set('4', age = 3) |
|
bf2e9535da00
Journal and database testing.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3822
diff
changeset
|
2259 self.db.user.set('4', assignable = True) |
|
bf2e9535da00
Journal and database testing.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3822
diff
changeset
|
2260 self.db.issue.set('1', title = 'i1', status = '3') |
|
bf2e9535da00
Journal and database testing.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3822
diff
changeset
|
2261 self.db.issue.set('1', deadline = date.Date('2007')) |
|
bf2e9535da00
Journal and database testing.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3822
diff
changeset
|
2262 self.db.issue.set('1', foo = date.Interval('1:20')) |
|
bf2e9535da00
Journal and database testing.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3822
diff
changeset
|
2263 p = self.db.priority.create(name = 'some_prio_without_order') |
|
bf2e9535da00
Journal and database testing.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3822
diff
changeset
|
2264 self.db.commit() |
|
bf2e9535da00
Journal and database testing.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3822
diff
changeset
|
2265 self.db.user.set('4', password = password.Password('123xyzzy')) |
|
bf2e9535da00
Journal and database testing.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3822
diff
changeset
|
2266 self.db.user.set('4', assignable = False) |
|
bf2e9535da00
Journal and database testing.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3822
diff
changeset
|
2267 self.db.priority.set(p, order = '4711') |
|
bf2e9535da00
Journal and database testing.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3822
diff
changeset
|
2268 self.db.commit() |
|
bf2e9535da00
Journal and database testing.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3822
diff
changeset
|
2269 |
|
1920
f9316d2cd5ba
Fixed retirement of items in rdbms imports [SF#841355]
Richard Jones <richard@users.sourceforge.net>
parents:
1912
diff
changeset
|
2270 self.db.user.retire('3') |
|
f9316d2cd5ba
Fixed retirement of items in rdbms imports [SF#841355]
Richard Jones <richard@users.sourceforge.net>
parents:
1912
diff
changeset
|
2271 self.db.issue.retire('2') |
|
f9316d2cd5ba
Fixed retirement of items in rdbms imports [SF#841355]
Richard Jones <richard@users.sourceforge.net>
parents:
1912
diff
changeset
|
2272 |
|
f9316d2cd5ba
Fixed retirement of items in rdbms imports [SF#841355]
Richard Jones <richard@users.sourceforge.net>
parents:
1912
diff
changeset
|
2273 # grab snapshot of the current database |
|
f9316d2cd5ba
Fixed retirement of items in rdbms imports [SF#841355]
Richard Jones <richard@users.sourceforge.net>
parents:
1912
diff
changeset
|
2274 orig = {} |
|
3826
bf2e9535da00
Journal and database testing.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3822
diff
changeset
|
2275 origj = {} |
|
1920
f9316d2cd5ba
Fixed retirement of items in rdbms imports [SF#841355]
Richard Jones <richard@users.sourceforge.net>
parents:
1912
diff
changeset
|
2276 for cn,klass in self.db.classes.items(): |
|
f9316d2cd5ba
Fixed retirement of items in rdbms imports [SF#841355]
Richard Jones <richard@users.sourceforge.net>
parents:
1912
diff
changeset
|
2277 cl = orig[cn] = {} |
|
3826
bf2e9535da00
Journal and database testing.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3822
diff
changeset
|
2278 jn = origj[cn] = {} |
|
1920
f9316d2cd5ba
Fixed retirement of items in rdbms imports [SF#841355]
Richard Jones <richard@users.sourceforge.net>
parents:
1912
diff
changeset
|
2279 for id in klass.list(): |
|
f9316d2cd5ba
Fixed retirement of items in rdbms imports [SF#841355]
Richard Jones <richard@users.sourceforge.net>
parents:
1912
diff
changeset
|
2280 it = cl[id] = {} |
|
3826
bf2e9535da00
Journal and database testing.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3822
diff
changeset
|
2281 jn[id] = self.db.getjournal(cn, id) |
|
1920
f9316d2cd5ba
Fixed retirement of items in rdbms imports [SF#841355]
Richard Jones <richard@users.sourceforge.net>
parents:
1912
diff
changeset
|
2282 for name in klass.getprops().keys(): |
|
f9316d2cd5ba
Fixed retirement of items in rdbms imports [SF#841355]
Richard Jones <richard@users.sourceforge.net>
parents:
1912
diff
changeset
|
2283 it[name] = klass.get(id, name) |
|
f9316d2cd5ba
Fixed retirement of items in rdbms imports [SF#841355]
Richard Jones <richard@users.sourceforge.net>
parents:
1912
diff
changeset
|
2284 |
| 2496 | 2285 os.mkdir('_test_export') |
| 2286 try: | |
| 2287 # grab the export | |
| 2288 export = {} | |
| 2289 journals = {} | |
| 2290 for cn,klass in self.db.classes.items(): | |
| 2291 names = klass.export_propnames() | |
| 2292 cl = export[cn] = [names+['is retired']] | |
| 2293 for id in klass.getnodeids(): | |
| 2294 cl.append(klass.export_list(names, id)) | |
| 2295 if hasattr(klass, 'export_files'): | |
| 2296 klass.export_files('_test_export', id) | |
| 2297 journals[cn] = klass.export_journals() | |
|
1920
f9316d2cd5ba
Fixed retirement of items in rdbms imports [SF#841355]
Richard Jones <richard@users.sourceforge.net>
parents:
1912
diff
changeset
|
2298 |
|
4255
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
2299 self.nukeAndCreate() |
|
1920
f9316d2cd5ba
Fixed retirement of items in rdbms imports [SF#841355]
Richard Jones <richard@users.sourceforge.net>
parents:
1912
diff
changeset
|
2300 |
| 2496 | 2301 # import |
| 2302 for cn, items in export.items(): | |
| 2303 klass = self.db.classes[cn] | |
| 2304 names = items[0] | |
| 2305 maxid = 1 | |
| 2306 for itemprops in items[1:]: | |
| 2307 id = int(klass.import_list(names, itemprops)) | |
| 2308 if hasattr(klass, 'import_files'): | |
|
3546
a4edd24c32be
test fixes and checking of indexer overwrites (xapian currently fails)
Richard Jones <richard@users.sourceforge.net>
parents:
3525
diff
changeset
|
2309 klass.import_files('_test_export', str(id)) |
| 2496 | 2310 maxid = max(maxid, id) |
| 2311 self.db.setid(cn, str(maxid+1)) | |
| 2312 klass.import_journals(journals[cn]) | |
|
3826
bf2e9535da00
Journal and database testing.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3822
diff
changeset
|
2313 # This is needed, otherwise journals won't be there for anydbm |
|
bf2e9535da00
Journal and database testing.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3822
diff
changeset
|
2314 self.db.commit() |
| 2496 | 2315 finally: |
| 2316 shutil.rmtree('_test_export') | |
|
1920
f9316d2cd5ba
Fixed retirement of items in rdbms imports [SF#841355]
Richard Jones <richard@users.sourceforge.net>
parents:
1912
diff
changeset
|
2317 |
|
1951
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
2318 # compare with snapshot of the database |
|
5395
23b8e6067f7c
Python 3 preparation: update calls to dict methods.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5390
diff
changeset
|
2319 for cn, items in orig.items(): |
|
1920
f9316d2cd5ba
Fixed retirement of items in rdbms imports [SF#841355]
Richard Jones <richard@users.sourceforge.net>
parents:
1912
diff
changeset
|
2320 klass = self.db.classes[cn] |
|
2102
666402433998
Fix some tests.
Richard Jones <richard@users.sourceforge.net>
parents:
2098
diff
changeset
|
2321 propdefs = klass.getprops(1) |
|
1920
f9316d2cd5ba
Fixed retirement of items in rdbms imports [SF#841355]
Richard Jones <richard@users.sourceforge.net>
parents:
1912
diff
changeset
|
2322 # ensure retired items are retired :) |
|
5395
23b8e6067f7c
Python 3 preparation: update calls to dict methods.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5390
diff
changeset
|
2323 l = sorted(items.keys()) |
|
1920
f9316d2cd5ba
Fixed retirement of items in rdbms imports [SF#841355]
Richard Jones <richard@users.sourceforge.net>
parents:
1912
diff
changeset
|
2324 m = klass.list(); m.sort() |
|
2217
98d3bf8ffb19
store Intervals as two columns (and other fixes
Richard Jones <richard@users.sourceforge.net>
parents:
2198
diff
changeset
|
2325 ae(l, m, '%s id list wrong %r vs. %r'%(cn, l, m)) |
|
1920
f9316d2cd5ba
Fixed retirement of items in rdbms imports [SF#841355]
Richard Jones <richard@users.sourceforge.net>
parents:
1912
diff
changeset
|
2326 for id, props in items.items(): |
|
f9316d2cd5ba
Fixed retirement of items in rdbms imports [SF#841355]
Richard Jones <richard@users.sourceforge.net>
parents:
1912
diff
changeset
|
2327 for name, value in props.items(): |
|
2089
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
2328 l = klass.get(id, name) |
|
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
2329 if isinstance(value, type([])): |
|
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
2330 value.sort() |
|
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
2331 l.sort() |
|
2102
666402433998
Fix some tests.
Richard Jones <richard@users.sourceforge.net>
parents:
2098
diff
changeset
|
2332 try: |
|
666402433998
Fix some tests.
Richard Jones <richard@users.sourceforge.net>
parents:
2098
diff
changeset
|
2333 ae(l, value) |
|
666402433998
Fix some tests.
Richard Jones <richard@users.sourceforge.net>
parents:
2098
diff
changeset
|
2334 except AssertionError: |
|
666402433998
Fix some tests.
Richard Jones <richard@users.sourceforge.net>
parents:
2098
diff
changeset
|
2335 if not isinstance(propdefs[name], Date): |
|
666402433998
Fix some tests.
Richard Jones <richard@users.sourceforge.net>
parents:
2098
diff
changeset
|
2336 raise |
|
666402433998
Fix some tests.
Richard Jones <richard@users.sourceforge.net>
parents:
2098
diff
changeset
|
2337 # don't get hung up on rounding errors |
|
666402433998
Fix some tests.
Richard Jones <richard@users.sourceforge.net>
parents:
2098
diff
changeset
|
2338 assert not l.__cmp__(value, int_seconds=1) |
|
5395
23b8e6067f7c
Python 3 preparation: update calls to dict methods.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5390
diff
changeset
|
2339 for jc, items in origj.items(): |
|
23b8e6067f7c
Python 3 preparation: update calls to dict methods.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5390
diff
changeset
|
2340 for id, oj in items.items(): |
|
3826
bf2e9535da00
Journal and database testing.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3822
diff
changeset
|
2341 rj = self.db.getjournal(jc, id) |
|
bf2e9535da00
Journal and database testing.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3822
diff
changeset
|
2342 # Both mysql and postgresql have some minor issues with |
|
bf2e9535da00
Journal and database testing.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3822
diff
changeset
|
2343 # rounded seconds on export/import, so we compare only |
|
bf2e9535da00
Journal and database testing.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3822
diff
changeset
|
2344 # the integer part. |
|
bf2e9535da00
Journal and database testing.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3822
diff
changeset
|
2345 for j in oj: |
|
bf2e9535da00
Journal and database testing.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3822
diff
changeset
|
2346 j[1].second = float(int(j[1].second)) |
|
bf2e9535da00
Journal and database testing.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3822
diff
changeset
|
2347 for j in rj: |
|
bf2e9535da00
Journal and database testing.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3822
diff
changeset
|
2348 j[1].second = float(int(j[1].second)) |
|
5481
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5476
diff
changeset
|
2349 oj.sort(key = NoneAndDictComparable) |
|
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5476
diff
changeset
|
2350 rj.sort(key = NoneAndDictComparable) |
|
3826
bf2e9535da00
Journal and database testing.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3822
diff
changeset
|
2351 ae(oj, rj) |
|
1920
f9316d2cd5ba
Fixed retirement of items in rdbms imports [SF#841355]
Richard Jones <richard@users.sourceforge.net>
parents:
1912
diff
changeset
|
2352 |
|
f9316d2cd5ba
Fixed retirement of items in rdbms imports [SF#841355]
Richard Jones <richard@users.sourceforge.net>
parents:
1912
diff
changeset
|
2353 # make sure the retired items are actually imported |
|
2089
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
2354 ae(self.db.user.get('4', 'username'), 'blop') |
|
1920
f9316d2cd5ba
Fixed retirement of items in rdbms imports [SF#841355]
Richard Jones <richard@users.sourceforge.net>
parents:
1912
diff
changeset
|
2355 ae(self.db.issue.get('2', 'title'), 'issue two') |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2356 |
|
1951
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
2357 # make sure id counters are set correctly |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
2358 maxid = max([int(id) for id in self.db.user.list()]) |
|
5468
0cde8a595893
fix tests for Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5395
diff
changeset
|
2359 newid = int(self.db.user.create(username='testing')) |
|
1951
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
2360 assert newid > maxid |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
2361 |
|
4255
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
2362 # test import/export via admin interface |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
2363 def testAdminImportExport(self): |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
2364 import roundup.admin |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
2365 import csv |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
2366 # use the filtering setup to create a bunch of items |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2367 ae, dummy1, dummy2 = self.filteringSetup() |
|
4255
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
2368 # create large field |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
2369 self.db.priority.create(name = 'X' * 500) |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
2370 self.db.config.CSV_FIELD_SIZE = 400 |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
2371 self.db.commit() |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
2372 output = [] |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
2373 # ugly hack to get stderr output and disable stdout output |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
2374 # during regression test. Depends on roundup.admin not using |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
2375 # anything but stdout/stderr from sys (which is currently the |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
2376 # case) |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
2377 def stderrwrite(s): |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
2378 output.append(s) |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
2379 roundup.admin.sys = MockNull () |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
2380 try: |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
2381 roundup.admin.sys.stderr.write = stderrwrite |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
2382 tool = roundup.admin.AdminTool() |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
2383 home = '.' |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
2384 tool.tracker_home = home |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
2385 tool.db = self.db |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
2386 tool.verbose = False |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
2387 tool.do_export (['_test_export']) |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
2388 self.assertEqual(len(output), 2) |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
2389 self.assertEqual(output [1], '\n') |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
2390 self.failUnless(output [0].startswith |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
2391 ('Warning: config csv_field_size should be at least')) |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
2392 self.failUnless(int(output[0].split()[-1]) > 500) |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
2393 |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
2394 if hasattr(roundup.admin.csv, 'field_size_limit'): |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
2395 self.nukeAndCreate() |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
2396 self.db.config.CSV_FIELD_SIZE = 400 |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
2397 tool = roundup.admin.AdminTool() |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
2398 tool.tracker_home = home |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
2399 tool.db = self.db |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
2400 tool.verbose = False |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
2401 self.assertRaises(csv.Error, tool.do_import, ['_test_export']) |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
2402 |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
2403 self.nukeAndCreate() |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
2404 self.db.config.CSV_FIELD_SIZE = 3200 |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
2405 tool = roundup.admin.AdminTool() |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
2406 tool.tracker_home = home |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
2407 tool.db = self.db |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
2408 tool.verbose = False |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
2409 tool.do_import(['_test_export']) |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
2410 finally: |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
2411 roundup.admin.sys = sys |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
2412 shutil.rmtree('_test_export') |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
2413 |
|
5110
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2414 # test props from args parsing |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2415 def testAdminOtherCommands(self): |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2416 import roundup.admin |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2417 |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2418 # use the filtering setup to create a bunch of items |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2419 ae, dummy1, dummy2 = self.filteringSetup() |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2420 # create large field |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2421 self.db.priority.create(name = 'X' * 500) |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2422 self.db.config.CSV_FIELD_SIZE = 400 |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2423 self.db.commit() |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2424 |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2425 eoutput = [] # stderr output |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2426 soutput = [] # stdout output |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2427 |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2428 def stderrwrite(s): |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2429 eoutput.append(s) |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2430 def stdoutwrite(s): |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2431 soutput.append(s) |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2432 roundup.admin.sys = MockNull () |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2433 try: |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2434 roundup.admin.sys.stderr.write = stderrwrite |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2435 roundup.admin.sys.stdout.write = stdoutwrite |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2436 |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2437 tool = roundup.admin.AdminTool() |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2438 home = '.' |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2439 tool.tracker_home = home |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2440 tool.db = self.db |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2441 tool.verbose = False |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2442 tool.separator = "\n" |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2443 tool.print_designator = True |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2444 |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2445 # test props_from_args |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2446 self.assertRaises(UsageError, tool.props_from_args, "fullname") # invalid propname |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2447 |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2448 self.assertEqual(tool.props_from_args("="), {'': None}) # not sure this desired, I'd expect UsageError |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2449 |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2450 props = tool.props_from_args(["fullname=robert", "friends=+rouilj,+other", "key="]) |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2451 self.assertEqual(props, {'fullname': 'robert', 'friends': '+rouilj,+other', 'key': None}) |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2452 |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2453 # test get_class() |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2454 self.assertRaises(UsageError, tool.get_class, "bar") # invalid class |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2455 |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2456 # This writes to stdout, need to figure out how to redirect to a variable. |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2457 # classhandle = tool.get_class("user") # valid class |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2458 # FIXME there should be some test here |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2459 |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2460 issue_class_spec = tool.do_specification(["issue"]) |
|
5469
115efa91f7a1
only compare sorted output as order depends on implementation details
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5468
diff
changeset
|
2461 self.assertEqual(sorted (soutput), |
|
115efa91f7a1
only compare sorted output as order depends on implementation details
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5468
diff
changeset
|
2462 ['assignedto: <roundup.hyperdb.Link to "user">\n', |
|
115efa91f7a1
only compare sorted output as order depends on implementation details
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5468
diff
changeset
|
2463 'deadline: <roundup.hyperdb.Date>\n', |
|
115efa91f7a1
only compare sorted output as order depends on implementation details
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5468
diff
changeset
|
2464 'feedback: <roundup.hyperdb.Link to "msg">\n', |
|
115efa91f7a1
only compare sorted output as order depends on implementation details
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5468
diff
changeset
|
2465 'files: <roundup.hyperdb.Multilink to "file">\n', |
|
115efa91f7a1
only compare sorted output as order depends on implementation details
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5468
diff
changeset
|
2466 'foo: <roundup.hyperdb.Interval>\n', |
|
115efa91f7a1
only compare sorted output as order depends on implementation details
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5468
diff
changeset
|
2467 'messages: <roundup.hyperdb.Multilink to "msg">\n', |
|
115efa91f7a1
only compare sorted output as order depends on implementation details
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5468
diff
changeset
|
2468 'nosy: <roundup.hyperdb.Multilink to "user">\n', |
|
115efa91f7a1
only compare sorted output as order depends on implementation details
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5468
diff
changeset
|
2469 'priority: <roundup.hyperdb.Link to "priority">\n', |
|
115efa91f7a1
only compare sorted output as order depends on implementation details
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5468
diff
changeset
|
2470 'spam: <roundup.hyperdb.Multilink to "msg">\n', |
|
115efa91f7a1
only compare sorted output as order depends on implementation details
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5468
diff
changeset
|
2471 'status: <roundup.hyperdb.Link to "status">\n', |
|
115efa91f7a1
only compare sorted output as order depends on implementation details
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5468
diff
changeset
|
2472 'superseder: <roundup.hyperdb.Multilink to "issue">\n', |
|
115efa91f7a1
only compare sorted output as order depends on implementation details
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5468
diff
changeset
|
2473 'title: <roundup.hyperdb.String>\n']) |
|
5110
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2474 |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2475 #userclassprop=tool.do_list(["mls"]) |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2476 #tool.print_designator = False |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2477 #userclassprop=tool.do_get(["realname","user1"]) |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2478 |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2479 # test do_create |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2480 soutput[:] = [] # empty for next round of output |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2481 userclass=tool.do_create(["issue", "title='title1 title'", "nosy=1,3"]) # should be issue 5 |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2482 userclass=tool.do_create(["issue", "title='title2 title'", "nosy=2,3"]) # should be issue 6 |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2483 self.assertEqual(soutput, ['5\n', '6\n']) |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2484 # verify nosy setting |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2485 props=self.db.issue.get('5', "nosy") |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2486 self.assertEqual(props, ['1','3']) |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2487 |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2488 # test do_set using newly created issues |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2489 # remove user 3 from issues |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2490 # verifies issue2550572 |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2491 userclass=tool.do_set(["issue5,issue6", "nosy=-3"]) |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2492 # verify proper result |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2493 props=self.db.issue.get('5', "nosy") |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2494 self.assertEqual(props, ['1']) |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2495 props=self.db.issue.get('6', "nosy") |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2496 self.assertEqual(props, ['2']) |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2497 |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2498 # basic usage test. TODO add full output verification |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2499 soutput[:] = [] # empty for next round of output |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2500 tool.usage(message="Hello World") |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2501 self.failUnless(soutput[0].startswith('Problem: Hello World'), None) |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2502 |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2503 # check security output |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2504 soutput[:] = [] # empty for next round of output |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2505 tool.do_security("Admin") |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2506 self.assertEqual(soutput, [ 'New Web users get the Role "User"\n', |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2507 'New Email users get the Role "User"\n', |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2508 'Role "admin":\n', |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2509 ' User may create everything (Create)\n', |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2510 ' User may edit everything (Edit)\n', |
|
5139
e098536107ea
update: 1c90f15a177f requires an update to the tests to account for the new Restore permission
John Rouillard <rouilj@ieee.org>
parents:
5112
diff
changeset
|
2511 ' User may restore everything (Restore)\n', |
|
5110
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2512 ' User may retire everything (Retire)\n', |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2513 ' User may view everything (View)\n', |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2514 ' User may access the web interface (Web Access)\n', |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2515 ' User may manipulate user Roles through the web (Web Roles)\n', |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2516 ' User may use the email interface (Email Access)\n', |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2517 'Role "anonymous":\n', 'Role "user":\n', |
|
5232
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
2518 ' User is allowed to access msg (View for "msg" only)\n', |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
2519 ' Prevent users from seeing roles (View for "user": [\'username\', \'supervisor\', \'assignable\'] only)\n']) |
|
5110
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2520 |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2521 |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2522 self.nukeAndCreate() |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2523 tool = roundup.admin.AdminTool() |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2524 tool.tracker_home = home |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2525 tool.db = self.db |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2526 tool.verbose = False |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2527 finally: |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2528 roundup.admin.sys = sys |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
2529 |
|
5163
6ae426092d7d
Some patches from wking to make admin.py bypass checks like nuking a
John Rouillard <rouilj@ieee.org>
parents:
5139
diff
changeset
|
2530 |
|
6ae426092d7d
Some patches from wking to make admin.py bypass checks like nuking a
John Rouillard <rouilj@ieee.org>
parents:
5139
diff
changeset
|
2531 # test duplicate relative tracker home initialisation (issue2550757) |
|
6ae426092d7d
Some patches from wking to make admin.py bypass checks like nuking a
John Rouillard <rouilj@ieee.org>
parents:
5139
diff
changeset
|
2532 def testAdminDuplicateInitialisation(self): |
|
6ae426092d7d
Some patches from wking to make admin.py bypass checks like nuking a
John Rouillard <rouilj@ieee.org>
parents:
5139
diff
changeset
|
2533 import roundup.admin |
|
6ae426092d7d
Some patches from wking to make admin.py bypass checks like nuking a
John Rouillard <rouilj@ieee.org>
parents:
5139
diff
changeset
|
2534 output = [] |
|
6ae426092d7d
Some patches from wking to make admin.py bypass checks like nuking a
John Rouillard <rouilj@ieee.org>
parents:
5139
diff
changeset
|
2535 def stderrwrite(s): |
|
6ae426092d7d
Some patches from wking to make admin.py bypass checks like nuking a
John Rouillard <rouilj@ieee.org>
parents:
5139
diff
changeset
|
2536 output.append(s) |
|
6ae426092d7d
Some patches from wking to make admin.py bypass checks like nuking a
John Rouillard <rouilj@ieee.org>
parents:
5139
diff
changeset
|
2537 roundup.admin.sys = MockNull () |
|
6ae426092d7d
Some patches from wking to make admin.py bypass checks like nuking a
John Rouillard <rouilj@ieee.org>
parents:
5139
diff
changeset
|
2538 t = '_test_initialise' |
|
6ae426092d7d
Some patches from wking to make admin.py bypass checks like nuking a
John Rouillard <rouilj@ieee.org>
parents:
5139
diff
changeset
|
2539 try: |
|
6ae426092d7d
Some patches from wking to make admin.py bypass checks like nuking a
John Rouillard <rouilj@ieee.org>
parents:
5139
diff
changeset
|
2540 roundup.admin.sys.stderr.write = stderrwrite |
|
6ae426092d7d
Some patches from wking to make admin.py bypass checks like nuking a
John Rouillard <rouilj@ieee.org>
parents:
5139
diff
changeset
|
2541 tool = roundup.admin.AdminTool() |
|
6ae426092d7d
Some patches from wking to make admin.py bypass checks like nuking a
John Rouillard <rouilj@ieee.org>
parents:
5139
diff
changeset
|
2542 tool.force = True |
|
6ae426092d7d
Some patches from wking to make admin.py bypass checks like nuking a
John Rouillard <rouilj@ieee.org>
parents:
5139
diff
changeset
|
2543 args = (None, 'classic', 'anydbm', |
|
6ae426092d7d
Some patches from wking to make admin.py bypass checks like nuking a
John Rouillard <rouilj@ieee.org>
parents:
5139
diff
changeset
|
2544 'MAIL_DOMAIN=%s' % config.MAIL_DOMAIN) |
|
6ae426092d7d
Some patches from wking to make admin.py bypass checks like nuking a
John Rouillard <rouilj@ieee.org>
parents:
5139
diff
changeset
|
2545 tool.do_install(t, args=args) |
|
6ae426092d7d
Some patches from wking to make admin.py bypass checks like nuking a
John Rouillard <rouilj@ieee.org>
parents:
5139
diff
changeset
|
2546 args = (None, 'mypasswd') |
|
6ae426092d7d
Some patches from wking to make admin.py bypass checks like nuking a
John Rouillard <rouilj@ieee.org>
parents:
5139
diff
changeset
|
2547 tool.do_initialise(t, args=args) |
|
6ae426092d7d
Some patches from wking to make admin.py bypass checks like nuking a
John Rouillard <rouilj@ieee.org>
parents:
5139
diff
changeset
|
2548 tool.do_initialise(t, args=args) |
|
6ae426092d7d
Some patches from wking to make admin.py bypass checks like nuking a
John Rouillard <rouilj@ieee.org>
parents:
5139
diff
changeset
|
2549 try: # python >=2.7 |
|
6ae426092d7d
Some patches from wking to make admin.py bypass checks like nuking a
John Rouillard <rouilj@ieee.org>
parents:
5139
diff
changeset
|
2550 self.assertNotIn(t, os.listdir(t)) |
|
6ae426092d7d
Some patches from wking to make admin.py bypass checks like nuking a
John Rouillard <rouilj@ieee.org>
parents:
5139
diff
changeset
|
2551 except AttributeError: |
|
6ae426092d7d
Some patches from wking to make admin.py bypass checks like nuking a
John Rouillard <rouilj@ieee.org>
parents:
5139
diff
changeset
|
2552 self.assertFalse('db' in os.listdir(t)) |
|
6ae426092d7d
Some patches from wking to make admin.py bypass checks like nuking a
John Rouillard <rouilj@ieee.org>
parents:
5139
diff
changeset
|
2553 finally: |
|
6ae426092d7d
Some patches from wking to make admin.py bypass checks like nuking a
John Rouillard <rouilj@ieee.org>
parents:
5139
diff
changeset
|
2554 roundup.admin.sys = sys |
|
6ae426092d7d
Some patches from wking to make admin.py bypass checks like nuking a
John Rouillard <rouilj@ieee.org>
parents:
5139
diff
changeset
|
2555 if os.path.exists(t): |
|
6ae426092d7d
Some patches from wking to make admin.py bypass checks like nuking a
John Rouillard <rouilj@ieee.org>
parents:
5139
diff
changeset
|
2556 shutil.rmtree(t) |
|
6ae426092d7d
Some patches from wking to make admin.py bypass checks like nuking a
John Rouillard <rouilj@ieee.org>
parents:
5139
diff
changeset
|
2557 |
|
1951
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
2558 def testAddProperty(self): |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
2559 self.db.issue.create(title="spam", status='1') |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
2560 self.db.commit() |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
2561 |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
2562 self.db.issue.addprop(fixer=Link("user")) |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
2563 # force any post-init stuff to happen |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
2564 self.db.post_init() |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
2565 props = self.db.issue.getprops() |
|
5395
23b8e6067f7c
Python 3 preparation: update calls to dict methods.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5390
diff
changeset
|
2566 keys = sorted(props.keys()) |
|
2077
3e0961d6d44d
Added the "actor" property.
Richard Jones <richard@users.sourceforge.net>
parents:
2075
diff
changeset
|
2567 self.assertEqual(keys, ['activity', 'actor', 'assignedto', 'creation', |
|
3997
edbb89730dc2
Fix indexer handling of indexed Link properties
Richard Jones <richard@users.sourceforge.net>
parents:
3995
diff
changeset
|
2568 'creator', 'deadline', 'feedback', 'files', 'fixer', 'foo', 'id', 'messages', |
|
3751
44603dd791b7
full-text search wasn't coping with multiple multilinks to the same class
Richard Jones <richard@users.sourceforge.net>
parents:
3746
diff
changeset
|
2569 'nosy', 'priority', 'spam', 'status', 'superseder', 'title']) |
|
1951
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
2570 self.assertEqual(self.db.issue.get('1', "fixer"), None) |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
2571 |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
2572 def testRemoveProperty(self): |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
2573 self.db.issue.create(title="spam", status='1') |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
2574 self.db.commit() |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
2575 |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
2576 del self.db.issue.properties['title'] |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
2577 self.db.post_init() |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
2578 props = self.db.issue.getprops() |
|
5395
23b8e6067f7c
Python 3 preparation: update calls to dict methods.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5390
diff
changeset
|
2579 keys = sorted(props.keys()) |
|
2077
3e0961d6d44d
Added the "actor" property.
Richard Jones <richard@users.sourceforge.net>
parents:
2075
diff
changeset
|
2580 self.assertEqual(keys, ['activity', 'actor', 'assignedto', 'creation', |
|
3997
edbb89730dc2
Fix indexer handling of indexed Link properties
Richard Jones <richard@users.sourceforge.net>
parents:
3995
diff
changeset
|
2581 'creator', 'deadline', 'feedback', 'files', 'foo', 'id', 'messages', |
|
3751
44603dd791b7
full-text search wasn't coping with multiple multilinks to the same class
Richard Jones <richard@users.sourceforge.net>
parents:
3746
diff
changeset
|
2582 'nosy', 'priority', 'spam', 'status', 'superseder']) |
|
1951
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
2583 self.assertEqual(self.db.issue.list(), ['1']) |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
2584 |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
2585 def testAddRemoveProperty(self): |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
2586 self.db.issue.create(title="spam", status='1') |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
2587 self.db.commit() |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
2588 |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
2589 self.db.issue.addprop(fixer=Link("user")) |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
2590 del self.db.issue.properties['title'] |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
2591 self.db.post_init() |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
2592 props = self.db.issue.getprops() |
|
5395
23b8e6067f7c
Python 3 preparation: update calls to dict methods.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5390
diff
changeset
|
2593 keys = sorted(props.keys()) |
|
2077
3e0961d6d44d
Added the "actor" property.
Richard Jones <richard@users.sourceforge.net>
parents:
2075
diff
changeset
|
2594 self.assertEqual(keys, ['activity', 'actor', 'assignedto', 'creation', |
|
3999
953234004ba2
unit test fix for added property
Richard Jones <richard@users.sourceforge.net>
parents:
3997
diff
changeset
|
2595 'creator', 'deadline', 'feedback', 'files', 'fixer', 'foo', 'id', |
|
953234004ba2
unit test fix for added property
Richard Jones <richard@users.sourceforge.net>
parents:
3997
diff
changeset
|
2596 'messages', 'nosy', 'priority', 'spam', 'status', 'superseder']) |
|
1951
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
2597 self.assertEqual(self.db.issue.list(), ['1']) |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
2598 |
|
3882
46ef2a6fd79d
config option to limit nosy attachments based on size
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3872
diff
changeset
|
2599 def testNosyMail(self) : |
|
46ef2a6fd79d
config option to limit nosy attachments based on size
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3872
diff
changeset
|
2600 """Creates one issue with two attachments, one smaller and one larger |
|
46ef2a6fd79d
config option to limit nosy attachments based on size
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3872
diff
changeset
|
2601 than the set max_attachment_size. |
|
46ef2a6fd79d
config option to limit nosy attachments based on size
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3872
diff
changeset
|
2602 """ |
|
4407
f6a2bfd351ee
force tests checking text output to work in the "C" locale
Richard Jones <richard@users.sourceforge.net>
parents:
4365
diff
changeset
|
2603 old_translate_ = roundupdb._ |
|
f6a2bfd351ee
force tests checking text output to work in the "C" locale
Richard Jones <richard@users.sourceforge.net>
parents:
4365
diff
changeset
|
2604 roundupdb._ = i18n.get_translation(language='C').gettext |
|
3882
46ef2a6fd79d
config option to limit nosy attachments based on size
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3872
diff
changeset
|
2605 db = self.db |
|
46ef2a6fd79d
config option to limit nosy attachments based on size
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3872
diff
changeset
|
2606 db.config.NOSY_MAX_ATTACHMENT_SIZE = 4096 |
|
46ef2a6fd79d
config option to limit nosy attachments based on size
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3872
diff
changeset
|
2607 res = dict(mail_to = None, mail_msg = None) |
|
46ef2a6fd79d
config option to limit nosy attachments based on size
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3872
diff
changeset
|
2608 def dummy_snd(s, to, msg, res=res) : |
|
46ef2a6fd79d
config option to limit nosy attachments based on size
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3872
diff
changeset
|
2609 res["mail_to"], res["mail_msg"] = to, msg |
|
46ef2a6fd79d
config option to limit nosy attachments based on size
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3872
diff
changeset
|
2610 backup, Mailer.smtp_send = Mailer.smtp_send, dummy_snd |
|
46ef2a6fd79d
config option to limit nosy attachments based on size
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3872
diff
changeset
|
2611 try : |
|
5493
725266c03eab
updated mailgw to no longer use mimetools based on jerrykan's patch
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5492
diff
changeset
|
2612 f1 = db.file.create(name="test1.txt", content="x" * 20, type="application/octet-stream") |
|
725266c03eab
updated mailgw to no longer use mimetools based on jerrykan's patch
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5492
diff
changeset
|
2613 f2 = db.file.create(name="test2.txt", content="y" * 5000, type="application/octet-stream") |
|
3882
46ef2a6fd79d
config option to limit nosy attachments based on size
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3872
diff
changeset
|
2614 m = db.msg.create(content="one two", author="admin", |
|
46ef2a6fd79d
config option to limit nosy attachments based on size
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3872
diff
changeset
|
2615 files = [f1, f2]) |
|
46ef2a6fd79d
config option to limit nosy attachments based on size
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3872
diff
changeset
|
2616 i = db.issue.create(title='spam', files = [f1, f2], |
|
46ef2a6fd79d
config option to limit nosy attachments based on size
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3872
diff
changeset
|
2617 messages = [m], nosy = [db.user.lookup("fred")]) |
|
46ef2a6fd79d
config option to limit nosy attachments based on size
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3872
diff
changeset
|
2618 |
|
46ef2a6fd79d
config option to limit nosy attachments based on size
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3872
diff
changeset
|
2619 db.issue.nosymessage(i, m, {}) |
|
4102
dcca66d56815
fix unit test compatibility
Richard Jones <richard@users.sourceforge.net>
parents:
4089
diff
changeset
|
2620 mail_msg = str(res["mail_msg"]) |
|
3882
46ef2a6fd79d
config option to limit nosy attachments based on size
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3872
diff
changeset
|
2621 self.assertEqual(res["mail_to"], ["fred@example.com"]) |
|
5649
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5494
diff
changeset
|
2622 self.assertTrue("From: admin" in mail_msg) |
|
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5494
diff
changeset
|
2623 self.assertTrue("Subject: [issue1] spam" in mail_msg) |
|
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5494
diff
changeset
|
2624 self.assertTrue("New submission from admin" in mail_msg) |
|
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5494
diff
changeset
|
2625 self.assertTrue("one two" in mail_msg) |
|
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5494
diff
changeset
|
2626 self.assertTrue("File 'test1.txt' not attached" not in mail_msg) |
|
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5494
diff
changeset
|
2627 self.assertTrue(b2s(base64.encodestring(s2b("xxx"))).rstrip() in mail_msg) |
|
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5494
diff
changeset
|
2628 self.assertTrue("File 'test2.txt' not attached" in mail_msg) |
|
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5494
diff
changeset
|
2629 self.assertTrue(b2s(base64.encodestring(s2b("yyy"))).rstrip() not in mail_msg) |
|
3882
46ef2a6fd79d
config option to limit nosy attachments based on size
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3872
diff
changeset
|
2630 finally : |
|
4407
f6a2bfd351ee
force tests checking text output to work in the "C" locale
Richard Jones <richard@users.sourceforge.net>
parents:
4365
diff
changeset
|
2631 roundupdb._ = old_translate_ |
|
3882
46ef2a6fd79d
config option to limit nosy attachments based on size
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3872
diff
changeset
|
2632 Mailer.smtp_send = backup |
|
46ef2a6fd79d
config option to limit nosy attachments based on size
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3872
diff
changeset
|
2633 |
|
5493
725266c03eab
updated mailgw to no longer use mimetools based on jerrykan's patch
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5492
diff
changeset
|
2634 def testNosyMailTextAndBinary(self) : |
|
725266c03eab
updated mailgw to no longer use mimetools based on jerrykan's patch
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5492
diff
changeset
|
2635 """Creates one issue with two attachments, one as text and one as binary. |
|
725266c03eab
updated mailgw to no longer use mimetools based on jerrykan's patch
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5492
diff
changeset
|
2636 """ |
|
725266c03eab
updated mailgw to no longer use mimetools based on jerrykan's patch
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5492
diff
changeset
|
2637 old_translate_ = roundupdb._ |
|
725266c03eab
updated mailgw to no longer use mimetools based on jerrykan's patch
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5492
diff
changeset
|
2638 roundupdb._ = i18n.get_translation(language='C').gettext |
|
725266c03eab
updated mailgw to no longer use mimetools based on jerrykan's patch
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5492
diff
changeset
|
2639 db = self.db |
|
725266c03eab
updated mailgw to no longer use mimetools based on jerrykan's patch
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5492
diff
changeset
|
2640 res = dict(mail_to = None, mail_msg = None) |
|
725266c03eab
updated mailgw to no longer use mimetools based on jerrykan's patch
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5492
diff
changeset
|
2641 def dummy_snd(s, to, msg, res=res) : |
|
725266c03eab
updated mailgw to no longer use mimetools based on jerrykan's patch
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5492
diff
changeset
|
2642 res["mail_to"], res["mail_msg"] = to, msg |
|
725266c03eab
updated mailgw to no longer use mimetools based on jerrykan's patch
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5492
diff
changeset
|
2643 backup, Mailer.smtp_send = Mailer.smtp_send, dummy_snd |
|
725266c03eab
updated mailgw to no longer use mimetools based on jerrykan's patch
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5492
diff
changeset
|
2644 try : |
|
725266c03eab
updated mailgw to no longer use mimetools based on jerrykan's patch
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5492
diff
changeset
|
2645 f1 = db.file.create(name="test1.txt", content="Hello world", type="text/plain") |
|
725266c03eab
updated mailgw to no longer use mimetools based on jerrykan's patch
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5492
diff
changeset
|
2646 f2 = db.file.create(name="test2.bin", content=b"\x01\x02\x03\xfe\xff", type="application/octet-stream") |
|
725266c03eab
updated mailgw to no longer use mimetools based on jerrykan's patch
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5492
diff
changeset
|
2647 m = db.msg.create(content="one two", author="admin", |
|
725266c03eab
updated mailgw to no longer use mimetools based on jerrykan's patch
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5492
diff
changeset
|
2648 files = [f1, f2]) |
|
725266c03eab
updated mailgw to no longer use mimetools based on jerrykan's patch
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5492
diff
changeset
|
2649 i = db.issue.create(title='spam', files = [f1, f2], |
|
725266c03eab
updated mailgw to no longer use mimetools based on jerrykan's patch
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5492
diff
changeset
|
2650 messages = [m], nosy = [db.user.lookup("fred")]) |
|
725266c03eab
updated mailgw to no longer use mimetools based on jerrykan's patch
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5492
diff
changeset
|
2651 |
|
725266c03eab
updated mailgw to no longer use mimetools based on jerrykan's patch
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5492
diff
changeset
|
2652 db.issue.nosymessage(i, m, {}) |
|
725266c03eab
updated mailgw to no longer use mimetools based on jerrykan's patch
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5492
diff
changeset
|
2653 mail_msg = str(res["mail_msg"]) |
|
725266c03eab
updated mailgw to no longer use mimetools based on jerrykan's patch
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5492
diff
changeset
|
2654 self.assertEqual(res["mail_to"], ["fred@example.com"]) |
|
5649
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5494
diff
changeset
|
2655 self.assertTrue("From: admin" in mail_msg) |
|
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5494
diff
changeset
|
2656 self.assertTrue("Subject: [issue1] spam" in mail_msg) |
|
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5494
diff
changeset
|
2657 self.assertTrue("New submission from admin" in mail_msg) |
|
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5494
diff
changeset
|
2658 self.assertTrue("one two" in mail_msg) |
|
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5494
diff
changeset
|
2659 self.assertTrue("Hello world" in mail_msg) |
|
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5494
diff
changeset
|
2660 self.assertTrue(b2s(base64.encodestring(b"\x01\x02\x03\xfe\xff")).rstrip() in mail_msg) |
|
5493
725266c03eab
updated mailgw to no longer use mimetools based on jerrykan's patch
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5492
diff
changeset
|
2661 finally : |
|
725266c03eab
updated mailgw to no longer use mimetools based on jerrykan's patch
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5492
diff
changeset
|
2662 roundupdb._ = old_translate_ |
|
725266c03eab
updated mailgw to no longer use mimetools based on jerrykan's patch
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5492
diff
changeset
|
2663 Mailer.smtp_send = backup |
|
725266c03eab
updated mailgw to no longer use mimetools based on jerrykan's patch
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5492
diff
changeset
|
2664 |
|
5494
b7fa56ced601
use gpg module instead of pyme module for PGP encryption
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5493
diff
changeset
|
2665 @pytest.mark.skipif(gpgmelib.gpg is None, reason='Skipping PGPNosy test') |
|
4542
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4490
diff
changeset
|
2666 def testPGPNosyMail(self) : |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4490
diff
changeset
|
2667 """Creates one issue with two attachments, one smaller and one larger |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4490
diff
changeset
|
2668 than the set max_attachment_size. Recipients are one with and |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4490
diff
changeset
|
2669 one without encryption enabled via a gpg group. |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4490
diff
changeset
|
2670 """ |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4490
diff
changeset
|
2671 old_translate_ = roundupdb._ |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4490
diff
changeset
|
2672 roundupdb._ = i18n.get_translation(language='C').gettext |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4490
diff
changeset
|
2673 db = self.db |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4490
diff
changeset
|
2674 db.config.NOSY_MAX_ATTACHMENT_SIZE = 4096 |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4490
diff
changeset
|
2675 db.config['PGP_HOMEDIR'] = gpgmelib.pgphome |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4490
diff
changeset
|
2676 db.config['PGP_ROLES'] = 'pgp' |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4490
diff
changeset
|
2677 db.config['PGP_ENABLE'] = True |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4490
diff
changeset
|
2678 db.config['PGP_ENCRYPT'] = True |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4490
diff
changeset
|
2679 gpgmelib.setUpPGP() |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4490
diff
changeset
|
2680 res = [] |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4490
diff
changeset
|
2681 def dummy_snd(s, to, msg, res=res) : |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4490
diff
changeset
|
2682 res.append (dict (mail_to = to, mail_msg = msg)) |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4490
diff
changeset
|
2683 backup, Mailer.smtp_send = Mailer.smtp_send, dummy_snd |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4490
diff
changeset
|
2684 try : |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4490
diff
changeset
|
2685 john = db.user.create(username="john", roles='User,pgp', |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4490
diff
changeset
|
2686 address='john@test.test', realname='John Doe') |
|
5493
725266c03eab
updated mailgw to no longer use mimetools based on jerrykan's patch
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5492
diff
changeset
|
2687 f1 = db.file.create(name="test1.txt", content="x" * 20, type="application/octet-stream") |
|
725266c03eab
updated mailgw to no longer use mimetools based on jerrykan's patch
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5492
diff
changeset
|
2688 f2 = db.file.create(name="test2.txt", content="y" * 5000, type="application/octet-stream") |
|
4542
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4490
diff
changeset
|
2689 m = db.msg.create(content="one two", author="admin", |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4490
diff
changeset
|
2690 files = [f1, f2]) |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4490
diff
changeset
|
2691 i = db.issue.create(title='spam', files = [f1, f2], |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4490
diff
changeset
|
2692 messages = [m], nosy = [db.user.lookup("fred"), john]) |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4490
diff
changeset
|
2693 |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4490
diff
changeset
|
2694 db.issue.nosymessage(i, m, {}) |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4490
diff
changeset
|
2695 res.sort(key=lambda x: x['mail_to']) |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4490
diff
changeset
|
2696 self.assertEqual(res[0]["mail_to"], ["fred@example.com"]) |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4490
diff
changeset
|
2697 self.assertEqual(res[1]["mail_to"], ["john@test.test"]) |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4490
diff
changeset
|
2698 mail_msg = str(res[0]["mail_msg"]) |
|
5649
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5494
diff
changeset
|
2699 self.assertTrue("From: admin" in mail_msg) |
|
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5494
diff
changeset
|
2700 self.assertTrue("Subject: [issue1] spam" in mail_msg) |
|
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5494
diff
changeset
|
2701 self.assertTrue("New submission from admin" in mail_msg) |
|
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5494
diff
changeset
|
2702 self.assertTrue("one two" in mail_msg) |
|
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5494
diff
changeset
|
2703 self.assertTrue("File 'test1.txt' not attached" not in mail_msg) |
|
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5494
diff
changeset
|
2704 self.assertTrue(b2s(base64.encodestring(s2b("xxx"))).rstrip() in mail_msg) |
|
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5494
diff
changeset
|
2705 self.assertTrue("File 'test2.txt' not attached" in mail_msg) |
|
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5494
diff
changeset
|
2706 self.assertTrue(b2s(base64.encodestring(s2b("yyy"))).rstrip() not in mail_msg) |
|
4542
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4490
diff
changeset
|
2707 mail_msg = str(res[1]["mail_msg"]) |
|
5494
b7fa56ced601
use gpg module instead of pyme module for PGP encryption
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5493
diff
changeset
|
2708 parts = message_from_string(mail_msg).get_payload() |
|
4542
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4490
diff
changeset
|
2709 self.assertEqual(len(parts),2) |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4490
diff
changeset
|
2710 self.assertEqual(parts[0].get_payload().strip(), 'Version: 1') |
|
5494
b7fa56ced601
use gpg module instead of pyme module for PGP encryption
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5493
diff
changeset
|
2711 crypt = gpgmelib.gpg.core.Data(parts[1].get_payload()) |
|
b7fa56ced601
use gpg module instead of pyme module for PGP encryption
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5493
diff
changeset
|
2712 plain = gpgmelib.gpg.core.Data() |
|
b7fa56ced601
use gpg module instead of pyme module for PGP encryption
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5493
diff
changeset
|
2713 ctx = gpgmelib.gpg.core.Context() |
|
4542
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4490
diff
changeset
|
2714 res = ctx.op_decrypt(crypt, plain) |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4490
diff
changeset
|
2715 self.assertEqual(res, None) |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4490
diff
changeset
|
2716 plain.seek(0,0) |
|
5649
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5494
diff
changeset
|
2717 self.assertTrue("From: admin" in mail_msg) |
|
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5494
diff
changeset
|
2718 self.assertTrue("Subject: [issue1] spam" in mail_msg) |
|
5494
b7fa56ced601
use gpg module instead of pyme module for PGP encryption
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5493
diff
changeset
|
2719 mail_msg = str(message_from_bytes(plain.read())) |
|
5649
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5494
diff
changeset
|
2720 self.assertTrue("New submission from admin" in mail_msg) |
|
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5494
diff
changeset
|
2721 self.assertTrue("one two" in mail_msg) |
|
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5494
diff
changeset
|
2722 self.assertTrue("File 'test1.txt' not attached" not in mail_msg) |
|
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5494
diff
changeset
|
2723 self.assertTrue(b2s(base64.encodestring(s2b("xxx"))).rstrip() in mail_msg) |
|
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5494
diff
changeset
|
2724 self.assertTrue("File 'test2.txt' not attached" in mail_msg) |
|
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5494
diff
changeset
|
2725 self.assertTrue(b2s(base64.encodestring(s2b("yyy"))).rstrip() not in mail_msg) |
|
4542
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4490
diff
changeset
|
2726 finally : |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4490
diff
changeset
|
2727 roundupdb._ = old_translate_ |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4490
diff
changeset
|
2728 Mailer.smtp_send = backup |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4490
diff
changeset
|
2729 gpgmelib.tearDownPGP() |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4490
diff
changeset
|
2730 |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2731 class ROTest(MyTestCase): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2732 def setUp(self): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2733 # remove previous test, ignore errors |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2734 if os.path.exists(config.DATABASE): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2735 shutil.rmtree(config.DATABASE) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2736 os.makedirs(config.DATABASE + '/files') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2737 self.db = self.module.Database(config, 'admin') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2738 setupSchema(self.db, 1, self.module) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2739 self.db.close() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2740 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2741 self.db = self.module.Database(config) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2742 setupSchema(self.db, 0, self.module) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2743 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2744 def testExceptions(self): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2745 # this tests the exceptions that should be raised |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2746 ar = self.assertRaises |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2747 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2748 # this tests the exceptions that should be raised |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2749 ar(DatabaseError, self.db.status.create, name="foo") |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2750 ar(DatabaseError, self.db.status.set, '1', name="foo") |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2751 ar(DatabaseError, self.db.status.retire, '1') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2752 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2753 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2754 class SchemaTest(MyTestCase): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2755 def setUp(self): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2756 # remove previous test, ignore errors |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2757 if os.path.exists(config.DATABASE): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2758 shutil.rmtree(config.DATABASE) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2759 os.makedirs(config.DATABASE + '/files') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2760 |
|
1951
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
2761 def test_reservedProperties(self): |
|
4349
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
4347
diff
changeset
|
2762 self.open_database() |
|
1951
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
2763 self.assertRaises(ValueError, self.module.Class, self.db, "a", |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
2764 creation=String()) |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
2765 self.assertRaises(ValueError, self.module.Class, self.db, "a", |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
2766 activity=String()) |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
2767 self.assertRaises(ValueError, self.module.Class, self.db, "a", |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
2768 creator=String()) |
|
2077
3e0961d6d44d
Added the "actor" property.
Richard Jones <richard@users.sourceforge.net>
parents:
2075
diff
changeset
|
2769 self.assertRaises(ValueError, self.module.Class, self.db, "a", |
|
3e0961d6d44d
Added the "actor" property.
Richard Jones <richard@users.sourceforge.net>
parents:
2075
diff
changeset
|
2770 actor=String()) |
|
1951
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
2771 |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2772 def init_a(self): |
|
4349
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
4347
diff
changeset
|
2773 self.open_database() |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2774 a = self.module.Class(self.db, "a", name=String()) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2775 a.setkey("name") |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2776 self.db.post_init() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2777 |
|
3601
7b25567f0f54
indexing may be turned off for FileClass "content" now
Richard Jones <richard@users.sourceforge.net>
parents:
3586
diff
changeset
|
2778 def test_fileClassProps(self): |
|
4349
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
4347
diff
changeset
|
2779 self.open_database() |
|
3601
7b25567f0f54
indexing may be turned off for FileClass "content" now
Richard Jones <richard@users.sourceforge.net>
parents:
3586
diff
changeset
|
2780 a = self.module.FileClass(self.db, 'a') |
|
5395
23b8e6067f7c
Python 3 preparation: update calls to dict methods.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5390
diff
changeset
|
2781 l = sorted(a.getprops().keys()) |
|
5649
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5494
diff
changeset
|
2782 self.assertTrue(l, ['activity', 'actor', 'content', 'created', |
|
3601
7b25567f0f54
indexing may be turned off for FileClass "content" now
Richard Jones <richard@users.sourceforge.net>
parents:
3586
diff
changeset
|
2783 'creation', 'type']) |
|
7b25567f0f54
indexing may be turned off for FileClass "content" now
Richard Jones <richard@users.sourceforge.net>
parents:
3586
diff
changeset
|
2784 |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2785 def init_ab(self): |
|
4349
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
4347
diff
changeset
|
2786 self.open_database() |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2787 a = self.module.Class(self.db, "a", name=String()) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2788 a.setkey("name") |
|
2196
85954067e496
mysql and postgresql schema mutation now handle added Multilinks; fixed test too
Richard Jones <richard@users.sourceforge.net>
parents:
2185
diff
changeset
|
2789 b = self.module.Class(self.db, "b", name=String(), |
|
85954067e496
mysql and postgresql schema mutation now handle added Multilinks; fixed test too
Richard Jones <richard@users.sourceforge.net>
parents:
2185
diff
changeset
|
2790 fooz=Multilink('a')) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2791 b.setkey("name") |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2792 self.db.post_init() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2793 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2794 def test_addNewClass(self): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2795 self.init_a() |
|
1951
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
2796 |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
2797 self.assertRaises(ValueError, self.module.Class, self.db, "a", |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
2798 name=String()) |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
2799 |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2800 aid = self.db.a.create(name='apple') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2801 self.db.commit(); self.db.close() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2802 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2803 # add a new class to the schema and check creation of new items |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2804 # (and existence of old ones) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2805 self.init_ab() |
|
2196
85954067e496
mysql and postgresql schema mutation now handle added Multilinks; fixed test too
Richard Jones <richard@users.sourceforge.net>
parents:
2185
diff
changeset
|
2806 bid = self.db.b.create(name='bear', fooz=[aid]) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2807 self.assertEqual(self.db.a.get(aid, 'name'), 'apple') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2808 self.db.commit() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2809 self.db.close() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2810 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2811 # now check we can recall the added class' items |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2812 self.init_ab() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2813 self.assertEqual(self.db.a.get(aid, 'name'), 'apple') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2814 self.assertEqual(self.db.a.lookup('apple'), aid) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2815 self.assertEqual(self.db.b.get(bid, 'name'), 'bear') |
|
2196
85954067e496
mysql and postgresql schema mutation now handle added Multilinks; fixed test too
Richard Jones <richard@users.sourceforge.net>
parents:
2185
diff
changeset
|
2816 self.assertEqual(self.db.b.get(bid, 'fooz'), [aid]) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2817 self.assertEqual(self.db.b.lookup('bear'), bid) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2818 |
|
1883
043e1b699047
more unit test work
Richard Jones <richard@users.sourceforge.net>
parents:
1873
diff
changeset
|
2819 # confirm journal's ok |
|
043e1b699047
more unit test work
Richard Jones <richard@users.sourceforge.net>
parents:
1873
diff
changeset
|
2820 self.db.getjournal('a', aid) |
|
043e1b699047
more unit test work
Richard Jones <richard@users.sourceforge.net>
parents:
1873
diff
changeset
|
2821 self.db.getjournal('b', bid) |
|
043e1b699047
more unit test work
Richard Jones <richard@users.sourceforge.net>
parents:
1873
diff
changeset
|
2822 |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2823 def init_amod(self): |
|
4349
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
4347
diff
changeset
|
2824 self.open_database() |
|
2727
93e2e5b55a3c
new Interval props weren't created properly in rdbms
Richard Jones <richard@users.sourceforge.net>
parents:
2695
diff
changeset
|
2825 a = self.module.Class(self.db, "a", name=String(), newstr=String(), |
|
93e2e5b55a3c
new Interval props weren't created properly in rdbms
Richard Jones <richard@users.sourceforge.net>
parents:
2695
diff
changeset
|
2826 newint=Interval(), newnum=Number(), newbool=Boolean(), |
|
93e2e5b55a3c
new Interval props weren't created properly in rdbms
Richard Jones <richard@users.sourceforge.net>
parents:
2695
diff
changeset
|
2827 newdate=Date()) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2828 a.setkey("name") |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2829 b = self.module.Class(self.db, "b", name=String()) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2830 b.setkey("name") |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2831 self.db.post_init() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2832 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2833 def test_modifyClass(self): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2834 self.init_ab() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2835 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2836 # add item to user and issue class |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2837 aid = self.db.a.create(name='apple') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2838 bid = self.db.b.create(name='bear') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2839 self.db.commit(); self.db.close() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2840 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2841 # modify "a" schema |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2842 self.init_amod() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2843 self.assertEqual(self.db.a.get(aid, 'name'), 'apple') |
|
2727
93e2e5b55a3c
new Interval props weren't created properly in rdbms
Richard Jones <richard@users.sourceforge.net>
parents:
2695
diff
changeset
|
2844 self.assertEqual(self.db.a.get(aid, 'newstr'), None) |
|
93e2e5b55a3c
new Interval props weren't created properly in rdbms
Richard Jones <richard@users.sourceforge.net>
parents:
2695
diff
changeset
|
2845 self.assertEqual(self.db.a.get(aid, 'newint'), None) |
|
3935
1dab48842cbd
Throwing up hands in resignation and finally deleting the metakit backend.
Richard Jones <richard@users.sourceforge.net>
parents:
3931
diff
changeset
|
2846 # hack - metakit can't return None for missing values, and we're not |
|
1dab48842cbd
Throwing up hands in resignation and finally deleting the metakit backend.
Richard Jones <richard@users.sourceforge.net>
parents:
3931
diff
changeset
|
2847 # really checking for that behavior here anyway |
|
5649
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5494
diff
changeset
|
2848 self.assertTrue(not self.db.a.get(aid, 'newnum')) |
|
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5494
diff
changeset
|
2849 self.assertTrue(not self.db.a.get(aid, 'newbool')) |
|
2727
93e2e5b55a3c
new Interval props weren't created properly in rdbms
Richard Jones <richard@users.sourceforge.net>
parents:
2695
diff
changeset
|
2850 self.assertEqual(self.db.a.get(aid, 'newdate'), None) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2851 self.assertEqual(self.db.b.get(aid, 'name'), 'bear') |
|
2727
93e2e5b55a3c
new Interval props weren't created properly in rdbms
Richard Jones <richard@users.sourceforge.net>
parents:
2695
diff
changeset
|
2852 aid2 = self.db.a.create(name='aardvark', newstr='booz') |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2853 self.db.commit(); self.db.close() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2854 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2855 # test |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2856 self.init_amod() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2857 self.assertEqual(self.db.a.get(aid, 'name'), 'apple') |
|
2727
93e2e5b55a3c
new Interval props weren't created properly in rdbms
Richard Jones <richard@users.sourceforge.net>
parents:
2695
diff
changeset
|
2858 self.assertEqual(self.db.a.get(aid, 'newstr'), None) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2859 self.assertEqual(self.db.b.get(aid, 'name'), 'bear') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2860 self.assertEqual(self.db.a.get(aid2, 'name'), 'aardvark') |
|
2727
93e2e5b55a3c
new Interval props weren't created properly in rdbms
Richard Jones <richard@users.sourceforge.net>
parents:
2695
diff
changeset
|
2861 self.assertEqual(self.db.a.get(aid2, 'newstr'), 'booz') |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2862 |
|
1883
043e1b699047
more unit test work
Richard Jones <richard@users.sourceforge.net>
parents:
1873
diff
changeset
|
2863 # confirm journal's ok |
|
043e1b699047
more unit test work
Richard Jones <richard@users.sourceforge.net>
parents:
1873
diff
changeset
|
2864 self.db.getjournal('a', aid) |
|
043e1b699047
more unit test work
Richard Jones <richard@users.sourceforge.net>
parents:
1873
diff
changeset
|
2865 self.db.getjournal('a', aid2) |
|
043e1b699047
more unit test work
Richard Jones <richard@users.sourceforge.net>
parents:
1873
diff
changeset
|
2866 |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2867 def init_amodkey(self): |
|
4349
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
4347
diff
changeset
|
2868 self.open_database() |
|
2727
93e2e5b55a3c
new Interval props weren't created properly in rdbms
Richard Jones <richard@users.sourceforge.net>
parents:
2695
diff
changeset
|
2869 a = self.module.Class(self.db, "a", name=String(), newstr=String()) |
|
93e2e5b55a3c
new Interval props weren't created properly in rdbms
Richard Jones <richard@users.sourceforge.net>
parents:
2695
diff
changeset
|
2870 a.setkey("newstr") |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2871 b = self.module.Class(self.db, "b", name=String()) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2872 b.setkey("name") |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2873 self.db.post_init() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2874 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2875 def test_changeClassKey(self): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2876 self.init_amod() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2877 aid = self.db.a.create(name='apple') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2878 self.assertEqual(self.db.a.lookup('apple'), aid) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2879 self.db.commit(); self.db.close() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2880 |
|
2727
93e2e5b55a3c
new Interval props weren't created properly in rdbms
Richard Jones <richard@users.sourceforge.net>
parents:
2695
diff
changeset
|
2881 # change the key to newstr on a |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2882 self.init_amodkey() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2883 self.assertEqual(self.db.a.get(aid, 'name'), 'apple') |
|
2727
93e2e5b55a3c
new Interval props weren't created properly in rdbms
Richard Jones <richard@users.sourceforge.net>
parents:
2695
diff
changeset
|
2884 self.assertEqual(self.db.a.get(aid, 'newstr'), None) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2885 self.assertRaises(KeyError, self.db.a.lookup, 'apple') |
|
2727
93e2e5b55a3c
new Interval props weren't created properly in rdbms
Richard Jones <richard@users.sourceforge.net>
parents:
2695
diff
changeset
|
2886 aid2 = self.db.a.create(name='aardvark', newstr='booz') |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2887 self.db.commit(); self.db.close() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2888 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2889 # check |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2890 self.init_amodkey() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2891 self.assertEqual(self.db.a.lookup('booz'), aid2) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2892 |
|
1883
043e1b699047
more unit test work
Richard Jones <richard@users.sourceforge.net>
parents:
1873
diff
changeset
|
2893 # confirm journal's ok |
|
043e1b699047
more unit test work
Richard Jones <richard@users.sourceforge.net>
parents:
1873
diff
changeset
|
2894 self.db.getjournal('a', aid) |
|
043e1b699047
more unit test work
Richard Jones <richard@users.sourceforge.net>
parents:
1873
diff
changeset
|
2895 |
|
3554
5e70726a86dd
fixed schema migration problem when Class keys were removed
Richard Jones <richard@users.sourceforge.net>
parents:
3547
diff
changeset
|
2896 def test_removeClassKey(self): |
|
5e70726a86dd
fixed schema migration problem when Class keys were removed
Richard Jones <richard@users.sourceforge.net>
parents:
3547
diff
changeset
|
2897 self.init_amod() |
|
5e70726a86dd
fixed schema migration problem when Class keys were removed
Richard Jones <richard@users.sourceforge.net>
parents:
3547
diff
changeset
|
2898 aid = self.db.a.create(name='apple') |
|
5e70726a86dd
fixed schema migration problem when Class keys were removed
Richard Jones <richard@users.sourceforge.net>
parents:
3547
diff
changeset
|
2899 self.assertEqual(self.db.a.lookup('apple'), aid) |
|
5e70726a86dd
fixed schema migration problem when Class keys were removed
Richard Jones <richard@users.sourceforge.net>
parents:
3547
diff
changeset
|
2900 self.db.commit(); self.db.close() |
|
5e70726a86dd
fixed schema migration problem when Class keys were removed
Richard Jones <richard@users.sourceforge.net>
parents:
3547
diff
changeset
|
2901 |
|
5e70726a86dd
fixed schema migration problem when Class keys were removed
Richard Jones <richard@users.sourceforge.net>
parents:
3547
diff
changeset
|
2902 self.db = self.module.Database(config, 'admin') |
|
5e70726a86dd
fixed schema migration problem when Class keys were removed
Richard Jones <richard@users.sourceforge.net>
parents:
3547
diff
changeset
|
2903 a = self.module.Class(self.db, "a", name=String(), newstr=String()) |
|
5e70726a86dd
fixed schema migration problem when Class keys were removed
Richard Jones <richard@users.sourceforge.net>
parents:
3547
diff
changeset
|
2904 self.db.post_init() |
|
5e70726a86dd
fixed schema migration problem when Class keys were removed
Richard Jones <richard@users.sourceforge.net>
parents:
3547
diff
changeset
|
2905 |
|
5e70726a86dd
fixed schema migration problem when Class keys were removed
Richard Jones <richard@users.sourceforge.net>
parents:
3547
diff
changeset
|
2906 aid2 = self.db.a.create(name='apple', newstr='booz') |
|
5e70726a86dd
fixed schema migration problem when Class keys were removed
Richard Jones <richard@users.sourceforge.net>
parents:
3547
diff
changeset
|
2907 self.db.commit() |
|
5e70726a86dd
fixed schema migration problem when Class keys were removed
Richard Jones <richard@users.sourceforge.net>
parents:
3547
diff
changeset
|
2908 |
|
5e70726a86dd
fixed schema migration problem when Class keys were removed
Richard Jones <richard@users.sourceforge.net>
parents:
3547
diff
changeset
|
2909 |
|
2198
41a73b06d2ee
*** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents:
2197
diff
changeset
|
2910 def init_amodml(self): |
|
4349
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
4347
diff
changeset
|
2911 self.open_database() |
|
2196
85954067e496
mysql and postgresql schema mutation now handle added Multilinks; fixed test too
Richard Jones <richard@users.sourceforge.net>
parents:
2185
diff
changeset
|
2912 a = self.module.Class(self.db, "a", name=String(), |
|
2727
93e2e5b55a3c
new Interval props weren't created properly in rdbms
Richard Jones <richard@users.sourceforge.net>
parents:
2695
diff
changeset
|
2913 newml=Multilink('a')) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2914 a.setkey('name') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2915 self.db.post_init() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2916 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2917 def test_makeNewMultilink(self): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2918 self.init_a() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2919 aid = self.db.a.create(name='apple') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2920 self.assertEqual(self.db.a.lookup('apple'), aid) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2921 self.db.commit(); self.db.close() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2922 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2923 # add a multilink prop |
|
2198
41a73b06d2ee
*** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents:
2197
diff
changeset
|
2924 self.init_amodml() |
|
2727
93e2e5b55a3c
new Interval props weren't created properly in rdbms
Richard Jones <richard@users.sourceforge.net>
parents:
2695
diff
changeset
|
2925 bid = self.db.a.create(name='bear', newml=[aid]) |
|
93e2e5b55a3c
new Interval props weren't created properly in rdbms
Richard Jones <richard@users.sourceforge.net>
parents:
2695
diff
changeset
|
2926 self.assertEqual(self.db.a.find(newml=aid), [bid]) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2927 self.assertEqual(self.db.a.lookup('apple'), aid) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2928 self.db.commit(); self.db.close() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2929 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2930 # check |
|
2198
41a73b06d2ee
*** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents:
2197
diff
changeset
|
2931 self.init_amodml() |
|
2727
93e2e5b55a3c
new Interval props weren't created properly in rdbms
Richard Jones <richard@users.sourceforge.net>
parents:
2695
diff
changeset
|
2932 self.assertEqual(self.db.a.find(newml=aid), [bid]) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2933 self.assertEqual(self.db.a.lookup('apple'), aid) |
|
2196
85954067e496
mysql and postgresql schema mutation now handle added Multilinks; fixed test too
Richard Jones <richard@users.sourceforge.net>
parents:
2185
diff
changeset
|
2934 self.assertEqual(self.db.a.lookup('bear'), bid) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2935 |
|
1883
043e1b699047
more unit test work
Richard Jones <richard@users.sourceforge.net>
parents:
1873
diff
changeset
|
2936 # confirm journal's ok |
|
043e1b699047
more unit test work
Richard Jones <richard@users.sourceforge.net>
parents:
1873
diff
changeset
|
2937 self.db.getjournal('a', aid) |
|
2196
85954067e496
mysql and postgresql schema mutation now handle added Multilinks; fixed test too
Richard Jones <richard@users.sourceforge.net>
parents:
2185
diff
changeset
|
2938 self.db.getjournal('a', bid) |
|
1883
043e1b699047
more unit test work
Richard Jones <richard@users.sourceforge.net>
parents:
1873
diff
changeset
|
2939 |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2940 def test_removeMultilink(self): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2941 # add a multilink prop |
|
2198
41a73b06d2ee
*** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents:
2197
diff
changeset
|
2942 self.init_amodml() |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2943 aid = self.db.a.create(name='apple') |
|
2727
93e2e5b55a3c
new Interval props weren't created properly in rdbms
Richard Jones <richard@users.sourceforge.net>
parents:
2695
diff
changeset
|
2944 bid = self.db.a.create(name='bear', newml=[aid]) |
|
93e2e5b55a3c
new Interval props weren't created properly in rdbms
Richard Jones <richard@users.sourceforge.net>
parents:
2695
diff
changeset
|
2945 self.assertEqual(self.db.a.find(newml=aid), [bid]) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2946 self.assertEqual(self.db.a.lookup('apple'), aid) |
| 2197 | 2947 self.assertEqual(self.db.a.lookup('bear'), bid) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2948 self.db.commit(); self.db.close() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2949 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2950 # remove the multilink |
| 2197 | 2951 self.init_a() |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2952 self.assertEqual(self.db.a.lookup('apple'), aid) |
| 2197 | 2953 self.assertEqual(self.db.a.lookup('bear'), bid) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2954 |
|
1883
043e1b699047
more unit test work
Richard Jones <richard@users.sourceforge.net>
parents:
1873
diff
changeset
|
2955 # confirm journal's ok |
|
043e1b699047
more unit test work
Richard Jones <richard@users.sourceforge.net>
parents:
1873
diff
changeset
|
2956 self.db.getjournal('a', aid) |
| 2197 | 2957 self.db.getjournal('a', bid) |
|
1883
043e1b699047
more unit test work
Richard Jones <richard@users.sourceforge.net>
parents:
1873
diff
changeset
|
2958 |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2959 def test_removeClass(self): |
|
2198
41a73b06d2ee
*** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents:
2197
diff
changeset
|
2960 self.init_ab() |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2961 aid = self.db.a.create(name='apple') |
|
2198
41a73b06d2ee
*** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents:
2197
diff
changeset
|
2962 bid = self.db.b.create(name='bear') |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2963 self.db.commit(); self.db.close() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2964 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2965 # drop the b class |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2966 self.init_a() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2967 self.assertEqual(self.db.a.get(aid, 'name'), 'apple') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2968 self.assertEqual(self.db.a.lookup('apple'), aid) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2969 self.db.commit(); self.db.close() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2970 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2971 # now check we can recall the added class' items |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2972 self.init_a() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2973 self.assertEqual(self.db.a.get(aid, 'name'), 'apple') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2974 self.assertEqual(self.db.a.lookup('apple'), aid) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2975 |
|
1883
043e1b699047
more unit test work
Richard Jones <richard@users.sourceforge.net>
parents:
1873
diff
changeset
|
2976 # confirm journal's ok |
|
043e1b699047
more unit test work
Richard Jones <richard@users.sourceforge.net>
parents:
1873
diff
changeset
|
2977 self.db.getjournal('a', aid) |
|
043e1b699047
more unit test work
Richard Jones <richard@users.sourceforge.net>
parents:
1873
diff
changeset
|
2978 |
|
1951
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
2979 class RDBMSTest: |
|
4089
eddb82d0964c
Add compatibility package to allow us to deal with Python versions 2.3..2.6.
Richard Jones <richard@users.sourceforge.net>
parents:
4082
diff
changeset
|
2980 """ tests specific to RDBMS backends """ |
|
1951
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
2981 def test_indexTest(self): |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
2982 self.assertEqual(self.db.sql_index_exists('_issue', '_issue_id_idx'), 1) |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
2983 self.assertEqual(self.db.sql_index_exists('_issue', '_issue_x_idx'), 0) |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
2984 |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2985 class FilterCacheTest(commonDBTest): |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2986 def testFilteringTransitiveLinkCache(self): |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2987 ae, filter, filter_iter = self.filteringSetupTransitiveSearch() |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2988 ae, ufilter, ufilter_iter = self.iterSetup('user') |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2989 # Need to make ceo his own (and first two users') supervisor |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2990 self.db.user.set('1', supervisor = '3') |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2991 self.db.user.set('2', supervisor = '3') |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2992 self.db.user.set('3', supervisor = '3') |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2993 # test bool value |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2994 self.db.user.set('4', assignable = True) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2995 self.db.user.set('3', assignable = False) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2996 filt = self.db.issue.filter_iter |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2997 ufilt = self.db.user.filter_iter |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2998 user_result = \ |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2999 { '1' : {'username': 'admin', 'assignable': None, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3000 'supervisor': '3', 'realname': None, 'roles': 'Admin', |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3001 'creator': '1', 'age': None, 'actor': '1', |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3002 'address': None} |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3003 , '2' : {'username': 'fred', 'assignable': None, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3004 'supervisor': '3', 'realname': None, 'roles': 'User', |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3005 'creator': '1', 'age': None, 'actor': '1', |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3006 'address': 'fred@example.com'} |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3007 , '3' : {'username': 'ceo', 'assignable': False, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3008 'supervisor': '3', 'realname': None, 'roles': None, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3009 'creator': '1', 'age': 129.0, 'actor': '1', |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3010 'address': None} |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3011 , '4' : {'username': 'grouplead1', 'assignable': True, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3012 'supervisor': '3', 'realname': None, 'roles': None, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3013 'creator': '1', 'age': 29.0, 'actor': '1', |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3014 'address': None} |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3015 , '5' : {'username': 'grouplead2', 'assignable': None, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3016 'supervisor': '3', 'realname': None, 'roles': None, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3017 'creator': '1', 'age': 29.0, 'actor': '1', |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3018 'address': None} |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3019 , '6' : {'username': 'worker1', 'assignable': None, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3020 'supervisor': '4', 'realname': None, 'roles': None, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3021 'creator': '1', 'age': 25.0, 'actor': '1', |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3022 'address': None} |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3023 , '7' : {'username': 'worker2', 'assignable': None, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3024 'supervisor': '4', 'realname': None, 'roles': None, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3025 'creator': '1', 'age': 24.0, 'actor': '1', |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3026 'address': None} |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3027 , '8' : {'username': 'worker3', 'assignable': None, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3028 'supervisor': '5', 'realname': None, 'roles': None, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3029 'creator': '1', 'age': 23.0, 'actor': '1', |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3030 'address': None} |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3031 , '9' : {'username': 'worker4', 'assignable': None, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3032 'supervisor': '5', 'realname': None, 'roles': None, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3033 'creator': '1', 'age': 22.0, 'actor': '1', |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3034 'address': None} |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3035 , '10' : {'username': 'worker5', 'assignable': None, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3036 'supervisor': '5', 'realname': None, 'roles': None, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3037 'creator': '1', 'age': 21.0, 'actor': '1', |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3038 'address': None} |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3039 } |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3040 foo = date.Interval('-1d') |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3041 issue_result = \ |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3042 { '1' : {'title': 'ts1', 'status': '2', 'assignedto': '6', |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3043 'priority': '3', 'messages' : ['4'], 'nosy' : ['4']} |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3044 , '2' : {'title': 'ts2', 'status': '1', 'assignedto': '6', |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3045 'priority': '3', 'messages' : ['4'], 'nosy' : ['5']} |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3046 , '3' : {'title': 'ts4', 'status': '2', 'assignedto': '7', |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3047 'priority': '3', 'messages' : ['5']} |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3048 , '4' : {'title': 'ts5', 'status': '1', 'assignedto': '8', |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3049 'priority': '3', 'messages' : ['6']} |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3050 , '5' : {'title': 'ts6', 'status': '2', 'assignedto': '9', |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3051 'priority': '3', 'messages' : ['7']} |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3052 , '6' : {'title': 'ts7', 'status': '1', 'assignedto': '10', |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3053 'priority': '3', 'messages' : ['8'], 'foo' : None} |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3054 , '7' : {'title': 'ts8', 'status': '2', 'assignedto': '10', |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3055 'priority': '3', 'messages' : ['8'], 'foo' : foo} |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3056 , '8' : {'title': 'ts9', 'status': '1', 'assignedto': '10', |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3057 'priority': '3', 'messages' : ['7', '8']} |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3058 } |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3059 result = [] |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3060 self.db.clearCache() |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3061 for id in ufilt(None, {}, [('+','supervisor.supervisor.supervisor'), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3062 ('-','supervisor.supervisor'), ('-','supervisor'), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3063 ('+','username')]): |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3064 result.append(id) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3065 nodeid = id |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3066 for x in range(4): |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3067 assert(('user', nodeid) in self.db.cache) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3068 n = self.db.user.getnode(nodeid) |
|
5395
23b8e6067f7c
Python 3 preparation: update calls to dict methods.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5390
diff
changeset
|
3069 for k, v in user_result[nodeid].items(): |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3070 ae((k, n[k]), (k, v)) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3071 for k in 'creation', 'activity': |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3072 assert(n[k]) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3073 nodeid = n.supervisor |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3074 self.db.clearCache() |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3075 ae (result, ['8', '9', '10', '6', '7', '1', '3', '2', '4', '5']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3076 |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3077 result = [] |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3078 self.db.clearCache() |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3079 for id in filt(None, {}, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3080 [('+','assignedto.supervisor.supervisor.supervisor'), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3081 ('+','assignedto.supervisor.supervisor'), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3082 ('-','assignedto.supervisor'), ('+','assignedto')]): |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3083 result.append(id) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3084 assert(('issue', id) in self.db.cache) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3085 n = self.db.issue.getnode(id) |
|
5395
23b8e6067f7c
Python 3 preparation: update calls to dict methods.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5390
diff
changeset
|
3086 for k, v in issue_result[id].items(): |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3087 ae((k, n[k]), (k, v)) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3088 for k in 'creation', 'activity': |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3089 assert(n[k]) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3090 nodeid = n.assignedto |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3091 for x in range(4): |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3092 assert(('user', nodeid) in self.db.cache) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3093 n = self.db.user.getnode(nodeid) |
|
5395
23b8e6067f7c
Python 3 preparation: update calls to dict methods.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5390
diff
changeset
|
3094 for k, v in user_result[nodeid].items(): |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3095 ae((k, n[k]), (k, v)) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3096 for k in 'creation', 'activity': |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3097 assert(n[k]) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3098 nodeid = n.supervisor |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3099 self.db.clearCache() |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3100 ae (result, ['4', '5', '6', '7', '8', '1', '2', '3']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3101 |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3102 |
|
5033
63c79c0992ae
Update tests to work with py.test
John Kristensen <john@jerrykan.com>
parents:
4886
diff
changeset
|
3103 class ClassicInitBase(object): |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3104 count = 0 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3105 db = None |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3106 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3107 def setUp(self): |
|
4878
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
3108 ClassicInitBase.count = ClassicInitBase.count + 1 |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3109 self.dirname = '_test_init_%s'%self.count |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3110 try: |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3111 shutil.rmtree(self.dirname) |
|
5248
198b6e810c67
Use Python-3-compatible 'as' syntax for except statements
Eric S. Raymond <esr@thyrsus.com>
parents:
5235
diff
changeset
|
3112 except OSError as error: |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3113 if error.errno not in (errno.ENOENT, errno.ESRCH): raise |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3114 |
|
4878
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
3115 def tearDown(self): |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
3116 if self.db is not None: |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
3117 self.db.close() |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
3118 try: |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
3119 shutil.rmtree(self.dirname) |
|
5248
198b6e810c67
Use Python-3-compatible 'as' syntax for except statements
Eric S. Raymond <esr@thyrsus.com>
parents:
5235
diff
changeset
|
3120 except OSError as error: |
|
4878
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
3121 if error.errno not in (errno.ENOENT, errno.ESRCH): raise |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
3122 |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
3123 class ClassicInitTest(ClassicInitBase): |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3124 def testCreation(self): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3125 ae = self.assertEqual |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3126 |
|
2820
da2a9175eb83
tracker setup put in separate function for use in other test suites
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2754
diff
changeset
|
3127 # set up and open a tracker |
|
da2a9175eb83
tracker setup put in separate function for use in other test suites
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2754
diff
changeset
|
3128 tracker = setupTracker(self.dirname, self.backend) |
|
da2a9175eb83
tracker setup put in separate function for use in other test suites
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2754
diff
changeset
|
3129 # open the database |
|
2689
9d044127c5eb
tracker.open() requires the 2nd argument - journal tag name
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2687
diff
changeset
|
3130 db = self.db = tracker.open('test') |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3131 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3132 # check the basics of the schema and initial data set |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3133 l = db.priority.list() |
|
3963
3230f9c88086
Fix race condition for key properties in rdbms backends [SF#1876683]
Richard Jones <richard@users.sourceforge.net>
parents:
3955
diff
changeset
|
3134 l.sort() |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3135 ae(l, ['1', '2', '3', '4', '5']) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3136 l = db.status.list() |
|
3963
3230f9c88086
Fix race condition for key properties in rdbms backends [SF#1876683]
Richard Jones <richard@users.sourceforge.net>
parents:
3955
diff
changeset
|
3137 l.sort() |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3138 ae(l, ['1', '2', '3', '4', '5', '6', '7', '8']) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3139 l = db.keyword.list() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3140 ae(l, []) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3141 l = db.user.list() |
|
3963
3230f9c88086
Fix race condition for key properties in rdbms backends [SF#1876683]
Richard Jones <richard@users.sourceforge.net>
parents:
3955
diff
changeset
|
3142 l.sort() |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3143 ae(l, ['1', '2']) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3144 l = db.msg.list() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3145 ae(l, []) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3146 l = db.file.list() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3147 ae(l, []) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3148 l = db.issue.list() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3149 ae(l, []) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3150 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3151 |
|
4878
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
3152 class ConcurrentDBTest(ClassicInitBase): |
|
4448
2784c239e6c8
clear the cache on commit for rdbms backends:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4421
diff
changeset
|
3153 def testConcurrency(self): |
|
2784c239e6c8
clear the cache on commit for rdbms backends:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4421
diff
changeset
|
3154 # The idea here is a read-modify-update cycle in the presence of |
|
2784c239e6c8
clear the cache on commit for rdbms backends:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4421
diff
changeset
|
3155 # a cache that has to be properly handled. The same applies if |
|
2784c239e6c8
clear the cache on commit for rdbms backends:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4421
diff
changeset
|
3156 # we extend a String or otherwise modify something that depends |
|
2784c239e6c8
clear the cache on commit for rdbms backends:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4421
diff
changeset
|
3157 # on the previous value. |
|
2784c239e6c8
clear the cache on commit for rdbms backends:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4421
diff
changeset
|
3158 |
|
2784c239e6c8
clear the cache on commit for rdbms backends:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4421
diff
changeset
|
3159 # set up and open a tracker |
|
2784c239e6c8
clear the cache on commit for rdbms backends:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4421
diff
changeset
|
3160 tracker = setupTracker(self.dirname, self.backend) |
|
2784c239e6c8
clear the cache on commit for rdbms backends:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4421
diff
changeset
|
3161 # open the database |
|
2784c239e6c8
clear the cache on commit for rdbms backends:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4421
diff
changeset
|
3162 self.db = tracker.open('admin') |
|
2784c239e6c8
clear the cache on commit for rdbms backends:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4421
diff
changeset
|
3163 |
|
2784c239e6c8
clear the cache on commit for rdbms backends:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4421
diff
changeset
|
3164 prio = '1' |
|
2784c239e6c8
clear the cache on commit for rdbms backends:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4421
diff
changeset
|
3165 self.assertEqual(self.db.priority.get(prio, 'order'), 1.0) |
|
2784c239e6c8
clear the cache on commit for rdbms backends:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4421
diff
changeset
|
3166 def inc(db): |
|
2784c239e6c8
clear the cache on commit for rdbms backends:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4421
diff
changeset
|
3167 db.priority.set(prio, order=db.priority.get(prio, 'order') + 1) |
|
2784c239e6c8
clear the cache on commit for rdbms backends:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4421
diff
changeset
|
3168 |
|
2784c239e6c8
clear the cache on commit for rdbms backends:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4421
diff
changeset
|
3169 inc(self.db) |
|
2784c239e6c8
clear the cache on commit for rdbms backends:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4421
diff
changeset
|
3170 |
|
2784c239e6c8
clear the cache on commit for rdbms backends:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4421
diff
changeset
|
3171 db2 = tracker.open("admin") |
|
2784c239e6c8
clear the cache on commit for rdbms backends:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4421
diff
changeset
|
3172 self.assertEqual(db2.priority.get(prio, 'order'), 1.0) |
|
2784c239e6c8
clear the cache on commit for rdbms backends:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4421
diff
changeset
|
3173 db2.commit() |
|
2784c239e6c8
clear the cache on commit for rdbms backends:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4421
diff
changeset
|
3174 self.db.commit() |
|
2784c239e6c8
clear the cache on commit for rdbms backends:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4421
diff
changeset
|
3175 self.assertEqual(self.db.priority.get(prio, 'order'), 2.0) |
|
2784c239e6c8
clear the cache on commit for rdbms backends:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4421
diff
changeset
|
3176 |
|
2784c239e6c8
clear the cache on commit for rdbms backends:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4421
diff
changeset
|
3177 inc(db2) |
|
2784c239e6c8
clear the cache on commit for rdbms backends:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4421
diff
changeset
|
3178 db2.commit() |
|
2784c239e6c8
clear the cache on commit for rdbms backends:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4421
diff
changeset
|
3179 db2.clearCache() |
|
2784c239e6c8
clear the cache on commit for rdbms backends:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4421
diff
changeset
|
3180 self.assertEqual(db2.priority.get(prio, 'order'), 3.0) |
|
2784c239e6c8
clear the cache on commit for rdbms backends:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4421
diff
changeset
|
3181 db2.close() |
|
2784c239e6c8
clear the cache on commit for rdbms backends:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4421
diff
changeset
|
3182 |
|
4878
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
3183 class HTMLItemTest(ClassicInitBase): |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
3184 class Request : |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
3185 """ Fake html request """ |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
3186 rfile = None |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
3187 def start_response (self, a, b) : |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
3188 pass |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
3189 # end def start_response |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
3190 # end class Request |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
3191 |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
3192 def setUp(self): |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
3193 super(HTMLItemTest, self).setUp() |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
3194 self.tracker = tracker = setupTracker(self.dirname, self.backend) |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
3195 db = self.db = tracker.open('admin') |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
3196 req = self.Request() |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
3197 env = dict (PATH_INFO='', REQUEST_METHOD='GET', QUERY_STRING='') |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
3198 self.client = self.tracker.Client(self.tracker, req, env, None) |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
3199 self.client.db = db |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
3200 self.client.language = None |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
3201 self.client.userid = db.getuid() |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
3202 self.client.classname = 'issue' |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
3203 user = {'username': 'worker5', 'realname': 'Worker', 'roles': 'User'} |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
3204 u = self.db.user.create(**user) |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
3205 u_m = self.db.msg.create(author = u, content = 'bla' |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
3206 , date = date.Date ('2006-01-01')) |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
3207 issue = {'title': 'ts1', 'status': '2', 'assignedto': '3', |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
3208 'priority': '3', 'messages' : [u_m], 'nosy' : ['3']} |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
3209 self.db.issue.create(**issue) |
|
4879
302c967d710c
HTML* classes for cgi: handle MissingValue case
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4878
diff
changeset
|
3210 issue = {'title': 'ts2', 'status': '2', |
|
302c967d710c
HTML* classes for cgi: handle MissingValue case
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4878
diff
changeset
|
3211 'messages' : [u_m], 'nosy' : ['3']} |
|
302c967d710c
HTML* classes for cgi: handle MissingValue case
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4878
diff
changeset
|
3212 self.db.issue.create(**issue) |
|
4878
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
3213 |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
3214 def testHTMLItemAttributes(self): |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
3215 issue = HTMLItem(self.client, 'issue', '1') |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
3216 ae = self.assertEqual |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
3217 ae(issue.title.plain(),'ts1') |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
3218 ae(issue ['title'].plain(),'ts1') |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
3219 ae(issue.status.plain(),'deferred') |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
3220 ae(issue ['status'].plain(),'deferred') |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
3221 ae(issue.assignedto.plain(),'worker5') |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
3222 ae(issue ['assignedto'].plain(),'worker5') |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
3223 ae(issue.priority.plain(),'bug') |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
3224 ae(issue ['priority'].plain(),'bug') |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
3225 ae(issue.messages.plain(),'1') |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
3226 ae(issue ['messages'].plain(),'1') |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
3227 ae(issue.nosy.plain(),'worker5') |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
3228 ae(issue ['nosy'].plain(),'worker5') |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
3229 ae(len(issue.messages),1) |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
3230 ae(len(issue ['messages']),1) |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
3231 ae(len(issue.nosy),1) |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
3232 ae(len(issue ['nosy']),1) |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
3233 |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
3234 def testHTMLItemDereference(self): |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
3235 issue = HTMLItem(self.client, 'issue', '1') |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
3236 ae = self.assertEqual |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
3237 ae(str(issue.priority.name),'bug') |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
3238 ae(str(issue.priority['name']),'bug') |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
3239 ae(str(issue ['priority']['name']),'bug') |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
3240 ae(str(issue ['priority'].name),'bug') |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
3241 ae(str(issue.assignedto.username),'worker5') |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
3242 ae(str(issue.assignedto['username']),'worker5') |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
3243 ae(str(issue ['assignedto']['username']),'worker5') |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
3244 ae(str(issue ['assignedto'].username),'worker5') |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
3245 for n in issue.nosy: |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
3246 ae(n.username.plain(),'worker5') |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
3247 ae(n['username'].plain(),'worker5') |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
3248 for n in issue.messages: |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
3249 ae(n.author.username.plain(),'worker5') |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
3250 ae(n.author['username'].plain(),'worker5') |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
3251 ae(n['author'].username.plain(),'worker5') |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
3252 ae(n['author']['username'].plain(),'worker5') |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
3253 |
|
4448
2784c239e6c8
clear the cache on commit for rdbms backends:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4421
diff
changeset
|
3254 |
|
4879
302c967d710c
HTML* classes for cgi: handle MissingValue case
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4878
diff
changeset
|
3255 def testHTMLItemDerefFail(self): |
|
302c967d710c
HTML* classes for cgi: handle MissingValue case
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4878
diff
changeset
|
3256 issue = HTMLItem(self.client, 'issue', '2') |
|
302c967d710c
HTML* classes for cgi: handle MissingValue case
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4878
diff
changeset
|
3257 ae = self.assertEqual |
|
302c967d710c
HTML* classes for cgi: handle MissingValue case
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4878
diff
changeset
|
3258 ae(issue.assignedto.plain(),'') |
|
302c967d710c
HTML* classes for cgi: handle MissingValue case
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4878
diff
changeset
|
3259 ae(issue ['assignedto'].plain(),'') |
|
302c967d710c
HTML* classes for cgi: handle MissingValue case
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4878
diff
changeset
|
3260 ae(issue.priority.plain(),'') |
|
302c967d710c
HTML* classes for cgi: handle MissingValue case
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4878
diff
changeset
|
3261 ae(issue ['priority'].plain(),'') |
|
302c967d710c
HTML* classes for cgi: handle MissingValue case
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4878
diff
changeset
|
3262 m = '[Attempt to look up %s on a missing value]' |
|
302c967d710c
HTML* classes for cgi: handle MissingValue case
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4878
diff
changeset
|
3263 ae(str(issue.priority.name),m%'name') |
|
302c967d710c
HTML* classes for cgi: handle MissingValue case
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4878
diff
changeset
|
3264 ae(str(issue ['priority'].name),m%'name') |
|
302c967d710c
HTML* classes for cgi: handle MissingValue case
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4878
diff
changeset
|
3265 ae(str(issue.assignedto.username),m%'username') |
|
302c967d710c
HTML* classes for cgi: handle MissingValue case
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4878
diff
changeset
|
3266 ae(str(issue ['assignedto'].username),m%'username') |
|
302c967d710c
HTML* classes for cgi: handle MissingValue case
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4878
diff
changeset
|
3267 ae(bool(issue ['assignedto']['username']),False) |
|
302c967d710c
HTML* classes for cgi: handle MissingValue case
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4878
diff
changeset
|
3268 ae(bool(issue ['priority']['name']),False) |
|
302c967d710c
HTML* classes for cgi: handle MissingValue case
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4878
diff
changeset
|
3269 |
|
5310
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3270 def makeForm(args): |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3271 form = cgi.FieldStorage() |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3272 for k,v in args.items(): |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3273 if type(v) is type([]): |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3274 [form.list.append(cgi.MiniFieldStorage(k, x)) for x in v] |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3275 elif isinstance(v, FileUpload): |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3276 x = cgi.MiniFieldStorage(k, v.content) |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3277 x.filename = v.filename |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3278 form.list.append(x) |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3279 else: |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3280 form.list.append(cgi.MiniFieldStorage(k, v)) |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3281 return form |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3282 |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3283 class FileUpload: |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3284 def __init__(self, content, filename): |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3285 self.content = content |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3286 self.filename = filename |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3287 |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3288 class FormTestParent(object): |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3289 |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3290 backend = "anydbm" |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3291 def setupDetectors(self): |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3292 pass |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3293 |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3294 def setUp(self): |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3295 self.dirname = '_test_cgi_form' |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3296 # set up and open a tracker |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3297 self.instance = setupTracker(self.dirname, backend = self.backend) |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3298 |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3299 # We may want to register separate detectors |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3300 self.setupDetectors() |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3301 |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3302 # open the database |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3303 self.db = self.instance.open('admin') |
|
5719
cd33bbf03cf3
Added Otk support to db_test_base to make test_cgi work. I think this
John Rouillard <rouilj@ieee.org>
parents:
5649
diff
changeset
|
3304 self.db.Otk = MockNull() |
|
cd33bbf03cf3
Added Otk support to db_test_base to make test_cgi work. I think this
John Rouillard <rouilj@ieee.org>
parents:
5649
diff
changeset
|
3305 self.db.Otk.data = {} |
|
cd33bbf03cf3
Added Otk support to db_test_base to make test_cgi work. I think this
John Rouillard <rouilj@ieee.org>
parents:
5649
diff
changeset
|
3306 self.db.Otk.getall = self.data_get |
|
cd33bbf03cf3
Added Otk support to db_test_base to make test_cgi work. I think this
John Rouillard <rouilj@ieee.org>
parents:
5649
diff
changeset
|
3307 self.db.Otk.set = self.data_set |
|
5310
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3308 self.db.tx_Source = "web" |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3309 self.db.user.create(username='Chef', address='chef@bork.bork.bork', |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3310 realname='Bork, Chef', roles='User') |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3311 self.db.user.create(username='mary', address='mary@test.test', |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3312 roles='User', realname='Contrary, Mary') |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3313 |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3314 self.db.issue.addprop(tx_Source=hyperdb.String()) |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3315 self.db.msg.addprop(tx_Source=hyperdb.String()) |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3316 self.db.post_init() |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3317 |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3318 def setupClient(self, form, classname, nodeid=None, template='item', env_addon=None): |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3319 cl = client.Client(self.instance, None, {'PATH_INFO':'/', |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3320 'REQUEST_METHOD':'POST'}, makeForm(form)) |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3321 cl.classname = classname |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3322 cl.base = 'http://whoami.com/path/' |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3323 cl.nodeid = nodeid |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3324 cl.language = ('en',) |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3325 cl.userid = '1' |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3326 cl.db = self.db |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3327 cl.user = 'admin' |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3328 cl.template = template |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3329 if env_addon is not None: |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3330 cl.env.update(env_addon) |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3331 return cl |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3332 |
|
5719
cd33bbf03cf3
Added Otk support to db_test_base to make test_cgi work. I think this
John Rouillard <rouilj@ieee.org>
parents:
5649
diff
changeset
|
3333 def data_get(self, key): |
|
cd33bbf03cf3
Added Otk support to db_test_base to make test_cgi work. I think this
John Rouillard <rouilj@ieee.org>
parents:
5649
diff
changeset
|
3334 return self.db.Otk.data[key] |
|
cd33bbf03cf3
Added Otk support to db_test_base to make test_cgi work. I think this
John Rouillard <rouilj@ieee.org>
parents:
5649
diff
changeset
|
3335 |
|
cd33bbf03cf3
Added Otk support to db_test_base to make test_cgi work. I think this
John Rouillard <rouilj@ieee.org>
parents:
5649
diff
changeset
|
3336 def data_set(self, key, **value): |
|
cd33bbf03cf3
Added Otk support to db_test_base to make test_cgi work. I think this
John Rouillard <rouilj@ieee.org>
parents:
5649
diff
changeset
|
3337 self.db.Otk.data[key] = value |
|
cd33bbf03cf3
Added Otk support to db_test_base to make test_cgi work. I think this
John Rouillard <rouilj@ieee.org>
parents:
5649
diff
changeset
|
3338 |
|
5310
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3339 def parseForm(self, form, classname='test', nodeid=None): |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3340 cl = self.setupClient(form, classname, nodeid) |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3341 return cl.parsePropsFromForm(create=1) |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3342 |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3343 def tearDown(self): |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3344 self.db.close() |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3345 try: |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3346 shutil.rmtree(self.dirname) |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3347 except OSError as error: |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3348 if error.errno not in (errno.ENOENT, errno.ESRCH): raise |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3349 |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3350 class SpecialAction(actions.EditItemAction): |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3351 x = False |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3352 def handle(self): |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3353 self.__class__.x = True |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3354 cl = self.db.getclass(self.classname) |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3355 cl.set(self.nodeid, status='2') |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3356 cl.set(self.nodeid, title="Just a test") |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3357 assert(0, "not reached") |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3358 self.db.commit() |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3359 |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3360 def reject_title(db, cl, nodeid, newvalues): |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3361 if 'title' in newvalues: |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3362 raise Reject ("REJECT TITLE CHANGE") |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3363 |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3364 def init_reject(db): |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3365 db.issue.audit("set", reject_title) |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3366 |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3367 def get_extensions(self, what): |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3368 """ For monkey-patch of instance.get_extensions: The old method is |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3369 kept as _get_extensions, we use the new method to return our own |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3370 auditors/reactors. |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3371 """ |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3372 if what == 'detectors': |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3373 return [init_reject] |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3374 return self._get_extensions(what) |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3375 |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3376 class SpecialActionTest(FormTestParent): |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3377 |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3378 def setupDetectors(self): |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3379 self.instance._get_extensions = self.instance.get_extensions |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3380 def ge(what): |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3381 return get_extensions(self.instance, what) |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3382 self.instance.get_extensions = ge |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3383 |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3384 def setUp(self): |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3385 FormTestParent.setUp(self) |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3386 |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3387 self.instance.registerAction('special', SpecialAction) |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3388 self.issue = self.db.issue.create (title = "hello", status='1') |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3389 self.db.commit () |
|
5381
0942fe89e82e
Python 3 preparation: change "x.has_key(y)" to "y in x".
Joseph Myers <jsm@polyomino.org.uk>
parents:
5376
diff
changeset
|
3390 if 'SENDMAILDEBUG' not in os.environ: |
|
5310
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3391 os.environ['SENDMAILDEBUG'] = 'mail-test2.log' |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3392 self.SENDMAILDEBUG = os.environ['SENDMAILDEBUG'] |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3393 page_template = """ |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3394 <html> |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3395 <body> |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3396 <p tal:condition="options/error_message|nothing" |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3397 tal:repeat="m options/error_message" |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3398 tal:content="structure m"/> |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3399 <p tal:content="context/title/plain"/> |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3400 <p tal:content="context/status/plain"/> |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3401 <p tal:content="structure context/submit"/> |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3402 </body> |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3403 </html> |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3404 """.strip () |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3405 self.form = {':action': 'special'} |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3406 cl = self.setupClient(self.form, 'issue', self.issue) |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3407 pt = RoundupPageTemplate() |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3408 pt.pt_edit(page_template, 'text/html') |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3409 self.out = [] |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3410 def wh(s): |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3411 self.out.append(s) |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3412 cl.write_html = wh |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3413 def load_template(x): |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3414 return pt |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3415 cl.instance.templates.load = load_template |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3416 cl.selectTemplate = MockNull() |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3417 cl.determine_context = MockNull () |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3418 def hasPermission(s, p, classname=None, d=None, e=None, **kw): |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3419 return True |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3420 self.hasPermission = actions.Action.hasPermission |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3421 actions.Action.hasPermission = hasPermission |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3422 self.e1 = _HTMLItem.is_edit_ok |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3423 _HTMLItem.is_edit_ok = lambda x : True |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3424 self.e2 = HTMLProperty.is_edit_ok |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3425 HTMLProperty.is_edit_ok = lambda x : True |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3426 # Make sure header check passes |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3427 cl.env['HTTP_REFERER'] = 'http://whoami.com/path/' |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3428 self.client = cl |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3429 |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3430 def tearDown(self): |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3431 FormTestParent.tearDown(self) |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3432 # Remove monkey-patches |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3433 self.instance.get_extensions = self.instance._get_extensions |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3434 del self.instance._get_extensions |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3435 actions.Action.hasPermission = self.hasPermission |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3436 _HTMLItem.is_edit_ok = self.e1 |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3437 HTMLProperty.is_edit_ok = self.e2 |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3438 if os.path.exists(self.SENDMAILDEBUG): |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3439 #os.remove(self.SENDMAILDEBUG) |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3440 pass |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3441 |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3442 def testInnerMain(self): |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3443 cl = self.client |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3444 cl.session_api = MockNull(_sid="1234567890") |
|
5488
52cb53eedf77
reworked random number use
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5481
diff
changeset
|
3445 self.form ['@nonce'] = anti_csrf_nonce(cl) |
|
5310
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3446 cl.form = makeForm(self.form) |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3447 # inner_main will re-open the database! |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3448 # Note that in the template above, the rendering of the |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3449 # context/submit button will also call anti_csrf_nonce which |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3450 # does a commit of the otk to the database. |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3451 cl.inner_main() |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3452 cl.db.close() |
|
5376
64b05e24dbd8
Python 3 preparation: convert print to a function.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5330
diff
changeset
|
3453 print(self.out) |
|
5310
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3454 # Make sure the action was called |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3455 self.assertEqual(SpecialAction.x, True) |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3456 # Check that the Reject worked: |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3457 self.assertNotEqual(-1, self.out[0].index('REJECT TITLE CHANGE')) |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3458 # Re-open db |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3459 self.db.close() |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3460 self.db = self.instance.open ('admin') |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3461 # We shouldn't see any changes |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3462 self.assertEqual(self.db.issue.get(self.issue, 'title'), 'hello') |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3463 self.assertEqual(self.db.issue.get(self.issue, 'status'), '1') |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
3464 |
|
2680
c26a9a5a25d2
rdbms backends require new config object. make one.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2605
diff
changeset
|
3465 # vim: set et sts=4 sw=4 : |
