annotate MoinMoin/_tests/test_user.py @ 5918:5126fadbf24f

password related code and tests - clean up and refactor use user.DEFAULT_ALG constant instead of hardcoded default algorithm check auto-upgrade of stored hashes to DEFAULT_ALG at login time, remove the now redundant upgrade tests add a test for sha to DEFAULT_ALG (ssha) upgrade add a test for ssha auth reimplement ssha pw check in the same way as for other hash algorithms, so it is in no way specialcased. add another check whether hash upgrade is needed. cosmetic other changes
author Thomas Waldmann <tw AT waldmann-edv DOT de>
date Fri, 18 Jan 2013 01:29:28 +0100
parents 8cb5ab136b87
children 25900eaeb864
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
2 """
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
3 MoinMoin - MoinMoin.user Tests
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
4
1918
bb2e053067fb fixing copyright headers: remove umlauts (encoding troubles), make epydoc compatible, reformat
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 1801
diff changeset
5 @copyright: 2003-2004 by Juergen Hermann <jh@web.de>
4656
052b6926c82d test_user: added two tests for the difference of retrieving an user object by uid or name
Reimar Bauer <rb.proj AT googlemail DOT com>
parents: 4027
diff changeset
6 2009 by ReimarBauer
5918
5126fadbf24f password related code and tests - clean up and refactor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5786
diff changeset
7 2013 by MoinMoin:ThomasWaldmann
0
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
8 @license: GNU GPL, see COPYING for details.
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
9 """
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
10
2818
7fceb3588211 tests: convert user tests to py.test, fix tests
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 2448
diff changeset
11 import os
2006
1339d6fdc4ff Changed tests to use py.test. Also changed the semantics a bit - the test wiki directory is only created freshly if it does not exist.
Alexander Schremmer <alex AT alexanderweb DOT de>
parents: 1918
diff changeset
12 import py
1339d6fdc4ff Changed tests to use py.test. Also changed the semantics a bit - the test wiki directory is only created freshly if it does not exist.
Alexander Schremmer <alex AT alexanderweb DOT de>
parents: 1918
diff changeset
13
0
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
14 from MoinMoin import user, caching
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
15
5918
5126fadbf24f password related code and tests - clean up and refactor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5786
diff changeset
16 DEFAULT_ALG = user.DEFAULT_ALG
5126fadbf24f password related code and tests - clean up and refactor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5786
diff changeset
17
2006
1339d6fdc4ff Changed tests to use py.test. Also changed the semantics a bit - the test wiki directory is only created freshly if it does not exist.
Alexander Schremmer <alex AT alexanderweb DOT de>
parents: 1918
diff changeset
18
2818
7fceb3588211 tests: convert user tests to py.test, fix tests
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 2448
diff changeset
19 class TestEncodePassword(object):
0
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
20 """user: encode passwords tests"""
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
21
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
22 def testAscii(self):
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
23 """user: encode ascii password"""
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
24 # u'MoinMoin' and 'MoinMoin' should be encoded to same result
3818
fe9305d5c7cf user: adjust tests, add one for password upgrade and fix a bug found
Johannes Berg <johannes AT sipsolutions DOT net>
parents: 3120
diff changeset
25 expected = "{SSHA}xkDIIx1I7A4gC98Vt/+UelIkTDYxMjM0NQ=="
892
9931a09387b0 some whitespace cleanup in the tests
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 682
diff changeset
26
3818
fe9305d5c7cf user: adjust tests, add one for password upgrade and fix a bug found
Johannes Berg <johannes AT sipsolutions DOT net>
parents: 3120
diff changeset
27 result = user.encodePassword("MoinMoin", salt='12345')
2818
7fceb3588211 tests: convert user tests to py.test, fix tests
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 2448
diff changeset
28 assert result == expected
3818
fe9305d5c7cf user: adjust tests, add one for password upgrade and fix a bug found
Johannes Berg <johannes AT sipsolutions DOT net>
parents: 3120
diff changeset
29 result = user.encodePassword(u"MoinMoin", salt='12345')
2818
7fceb3588211 tests: convert user tests to py.test, fix tests
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 2448
diff changeset
30 assert result == expected
0
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
31
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
32 def testUnicode(self):
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
33 """ user: encode unicode password """
3818
fe9305d5c7cf user: adjust tests, add one for password upgrade and fix a bug found
Johannes Berg <johannes AT sipsolutions DOT net>
parents: 3120
diff changeset
34 result = user.encodePassword(u'סיסמה סודית בהחלט', salt='12345') # Hebrew
fe9305d5c7cf user: adjust tests, add one for password upgrade and fix a bug found
Johannes Berg <johannes AT sipsolutions DOT net>
parents: 3120
diff changeset
35 expected = "{SSHA}YiwfeVWdVW9luqyVn8t2JivlzmUxMjM0NQ=="
2818
7fceb3588211 tests: convert user tests to py.test, fix tests
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 2448
diff changeset
36 assert result == expected
0
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
37
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
38
2818
7fceb3588211 tests: convert user tests to py.test, fix tests
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 2448
diff changeset
39 class TestLoginWithPassword(object):
0
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
40 """user: login tests"""
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
41
2818
7fceb3588211 tests: convert user tests to py.test, fix tests
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 2448
diff changeset
42 def setup_method(self, method):
0
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
43 # Save original user and cookie
4212
1ca179133f01 Fix tests: small fixes after merge
Florian Krupicka <florian.krupicka@googlemail.com>
parents: 3820
diff changeset
44 self.saved_cookie = self.request.cookies
0
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
45 self.saved_user = self.request.user
892
9931a09387b0 some whitespace cleanup in the tests
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 682
diff changeset
46
0
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
47 # Create anon user for the tests
4212
1ca179133f01 Fix tests: small fixes after merge
Florian Krupicka <florian.krupicka@googlemail.com>
parents: 3820
diff changeset
48 self.request.cookies = {}
0
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
49 self.request.user = user.User(self.request)
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
50
2165
eed1c7da25eb test_user: fix wrong subscription tests and a few other problems
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 2140
diff changeset
51 self.user = None
892
9931a09387b0 some whitespace cleanup in the tests
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 682
diff changeset
52
2818
7fceb3588211 tests: convert user tests to py.test, fix tests
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 2448
diff changeset
53 def teardown_method(self, method):
0
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
54 """ Run after each test
2286
01f05e74aa9c Big PEP8 and whitespace cleanup
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 2165
diff changeset
55
0
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
56 Remove user and reset user listing cache.
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
57 """
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
58 # Remove user file and user
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
59 if self.user is not None:
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
60 try:
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
61 path = self.user._User__filename()
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
62 os.remove(path)
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
63 except OSError:
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
64 pass
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
65 del self.user
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
66
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
67 # Restore original user
4212
1ca179133f01 Fix tests: small fixes after merge
Florian Krupicka <florian.krupicka@googlemail.com>
parents: 3820
diff changeset
68 self.request.cookies = self.saved_cookie
0
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
69 self.request.user = self.saved_user
892
9931a09387b0 some whitespace cleanup in the tests
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 682
diff changeset
70
0
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
71 # Remove user name to id cache, or next test will fail
682
1314fdb74689 refactor CacheEntry usage to use scope param
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 0
diff changeset
72 caching.CacheEntry(self.request, 'user', 'name2id', scope='wiki').remove()
2165
eed1c7da25eb test_user: fix wrong subscription tests and a few other problems
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 2140
diff changeset
73 try:
eed1c7da25eb test_user: fix wrong subscription tests and a few other problems
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 2140
diff changeset
74 del self.request.cfg.cache.name2id
eed1c7da25eb test_user: fix wrong subscription tests and a few other problems
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 2140
diff changeset
75 except:
eed1c7da25eb test_user: fix wrong subscription tests and a few other problems
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 2140
diff changeset
76 pass
892
9931a09387b0 some whitespace cleanup in the tests
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 682
diff changeset
77
0
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
78 def testAsciiPassword(self):
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
79 """ user: login with ascii password """
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
80 # Create test user
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
81 name = u'__Non Existent User Name__'
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
82 password = name
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
83 self.createUser(name, password)
892
9931a09387b0 some whitespace cleanup in the tests
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 682
diff changeset
84
2286
01f05e74aa9c Big PEP8 and whitespace cleanup
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 2165
diff changeset
85 # Try to "login"
0
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
86 theUser = user.User(self.request, name=name, password=password)
2818
7fceb3588211 tests: convert user tests to py.test, fix tests
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 2448
diff changeset
87 assert theUser.valid
0
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
88
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
89 def testUnicodePassword(self):
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
90 """ user: login with non-ascii password """
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
91 # Create test user
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
92 name = u'__שם משתמש לא קיים__' # Hebrew
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
93 password = name
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
94 self.createUser(name, password)
892
9931a09387b0 some whitespace cleanup in the tests
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 682
diff changeset
95
0
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
96 # Try to "login"
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
97 theUser = user.User(self.request, name=name, password=password)
2818
7fceb3588211 tests: convert user tests to py.test, fix tests
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 2448
diff changeset
98 assert theUser.valid
5740
51240cc99af5 Add new tests for user auth with migrated passwords (ARP1, MD5, DES)
pavel_vinogradov
parents: 5739
diff changeset
99
51240cc99af5 Add new tests for user auth with migrated passwords (ARP1, MD5, DES)
pavel_vinogradov
parents: 5739
diff changeset
100 def test_auth_with_apr1_stored_password(self):
51240cc99af5 Add new tests for user auth with migrated passwords (ARP1, MD5, DES)
pavel_vinogradov
parents: 5739
diff changeset
101 """
51240cc99af5 Add new tests for user auth with migrated passwords (ARP1, MD5, DES)
pavel_vinogradov
parents: 5739
diff changeset
102 Create user with {APR1} password and check that user can login.
5918
5126fadbf24f password related code and tests - clean up and refactor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5786
diff changeset
103 Also check if auto-upgrade happens and is saved to disk.
5740
51240cc99af5 Add new tests for user auth with migrated passwords (ARP1, MD5, DES)
pavel_vinogradov
parents: 5739
diff changeset
104 """
51240cc99af5 Add new tests for user auth with migrated passwords (ARP1, MD5, DES)
pavel_vinogradov
parents: 5739
diff changeset
105 # Create test user
51240cc99af5 Add new tests for user auth with migrated passwords (ARP1, MD5, DES)
pavel_vinogradov
parents: 5739
diff changeset
106 name = u'Test User'
5918
5126fadbf24f password related code and tests - clean up and refactor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5786
diff changeset
107 password = '12345'
5746
ff282aaf7912 Replace test password hashes (for APR1 and DES) with htpasswd generated
pavel_vinogradov
parents: 5745
diff changeset
108 # generated with "htpasswd -nbm blaze 12345"
5918
5126fadbf24f password related code and tests - clean up and refactor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5786
diff changeset
109 pw_hash = '{APR1}$apr1$NG3VoiU5$PSpHT6tV0ZMKkSZ71E3qg.'
5126fadbf24f password related code and tests - clean up and refactor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5786
diff changeset
110 self.createUser(name, pw_hash, True)
5786
8cb5ab136b87 fix trailing blanks
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5747
diff changeset
111
5740
51240cc99af5 Add new tests for user auth with migrated passwords (ARP1, MD5, DES)
pavel_vinogradov
parents: 5739
diff changeset
112 # Try to "login"
5918
5126fadbf24f password related code and tests - clean up and refactor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5786
diff changeset
113 theuser = user.User(self.request, name=name, password=password)
5740
51240cc99af5 Add new tests for user auth with migrated passwords (ARP1, MD5, DES)
pavel_vinogradov
parents: 5739
diff changeset
114 assert theuser.valid
5918
5126fadbf24f password related code and tests - clean up and refactor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5786
diff changeset
115 # Check if the stored password was auto-upgraded on login and saved
5126fadbf24f password related code and tests - clean up and refactor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5786
diff changeset
116 theuser = user.User(self.request, name=name, password=password)
5126fadbf24f password related code and tests - clean up and refactor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5786
diff changeset
117 assert theuser.enc_password.startswith(DEFAULT_ALG)
5740
51240cc99af5 Add new tests for user auth with migrated passwords (ARP1, MD5, DES)
pavel_vinogradov
parents: 5739
diff changeset
118
51240cc99af5 Add new tests for user auth with migrated passwords (ARP1, MD5, DES)
pavel_vinogradov
parents: 5739
diff changeset
119 def test_auth_with_md5_stored_password(self):
51240cc99af5 Add new tests for user auth with migrated passwords (ARP1, MD5, DES)
pavel_vinogradov
parents: 5739
diff changeset
120 """
51240cc99af5 Add new tests for user auth with migrated passwords (ARP1, MD5, DES)
pavel_vinogradov
parents: 5739
diff changeset
121 Create user with {MD5} password and check that user can login.
5918
5126fadbf24f password related code and tests - clean up and refactor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5786
diff changeset
122 Also check if auto-upgrade happens and is saved to disk.
5740
51240cc99af5 Add new tests for user auth with migrated passwords (ARP1, MD5, DES)
pavel_vinogradov
parents: 5739
diff changeset
123 """
51240cc99af5 Add new tests for user auth with migrated passwords (ARP1, MD5, DES)
pavel_vinogradov
parents: 5739
diff changeset
124 # Create test user
51240cc99af5 Add new tests for user auth with migrated passwords (ARP1, MD5, DES)
pavel_vinogradov
parents: 5739
diff changeset
125 name = u'Test User'
5918
5126fadbf24f password related code and tests - clean up and refactor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5786
diff changeset
126 password = '12345'
5126fadbf24f password related code and tests - clean up and refactor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5786
diff changeset
127 pw_hash = '{MD5}$1$salt$etVYf53ma13QCiRbQOuRk/'
5126fadbf24f password related code and tests - clean up and refactor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5786
diff changeset
128 self.createUser(name, pw_hash, True)
5786
8cb5ab136b87 fix trailing blanks
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5747
diff changeset
129
5740
51240cc99af5 Add new tests for user auth with migrated passwords (ARP1, MD5, DES)
pavel_vinogradov
parents: 5739
diff changeset
130 # Try to "login"
5918
5126fadbf24f password related code and tests - clean up and refactor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5786
diff changeset
131 theuser = user.User(self.request, name=name, password=password)
5740
51240cc99af5 Add new tests for user auth with migrated passwords (ARP1, MD5, DES)
pavel_vinogradov
parents: 5739
diff changeset
132 assert theuser.valid
5918
5126fadbf24f password related code and tests - clean up and refactor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5786
diff changeset
133 # Check if the stored password was auto-upgraded on login and saved
5126fadbf24f password related code and tests - clean up and refactor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5786
diff changeset
134 theuser = user.User(self.request, name=name, password=password)
5126fadbf24f password related code and tests - clean up and refactor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5786
diff changeset
135 assert theuser.enc_password.startswith(DEFAULT_ALG)
5740
51240cc99af5 Add new tests for user auth with migrated passwords (ARP1, MD5, DES)
pavel_vinogradov
parents: 5739
diff changeset
136
51240cc99af5 Add new tests for user auth with migrated passwords (ARP1, MD5, DES)
pavel_vinogradov
parents: 5739
diff changeset
137 def test_auth_with_des_stored_password(self):
51240cc99af5 Add new tests for user auth with migrated passwords (ARP1, MD5, DES)
pavel_vinogradov
parents: 5739
diff changeset
138 """
51240cc99af5 Add new tests for user auth with migrated passwords (ARP1, MD5, DES)
pavel_vinogradov
parents: 5739
diff changeset
139 Create user with {DES} password and check that user can login.
5918
5126fadbf24f password related code and tests - clean up and refactor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5786
diff changeset
140 Also check if auto-upgrade happens and is saved to disk.
5740
51240cc99af5 Add new tests for user auth with migrated passwords (ARP1, MD5, DES)
pavel_vinogradov
parents: 5739
diff changeset
141 """
51240cc99af5 Add new tests for user auth with migrated passwords (ARP1, MD5, DES)
pavel_vinogradov
parents: 5739
diff changeset
142 # Create test user
51240cc99af5 Add new tests for user auth with migrated passwords (ARP1, MD5, DES)
pavel_vinogradov
parents: 5739
diff changeset
143 name = u'Test User'
5918
5126fadbf24f password related code and tests - clean up and refactor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5786
diff changeset
144 password = '12345'
5746
ff282aaf7912 Replace test password hashes (for APR1 and DES) with htpasswd generated
pavel_vinogradov
parents: 5745
diff changeset
145 # generated with "htpasswd -nbd blaze 12345"
5918
5126fadbf24f password related code and tests - clean up and refactor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5786
diff changeset
146 pw_hash = '{DES}gArsfn7O5Yqfo'
5126fadbf24f password related code and tests - clean up and refactor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5786
diff changeset
147 self.createUser(name, pw_hash, True)
5786
8cb5ab136b87 fix trailing blanks
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5747
diff changeset
148
5740
51240cc99af5 Add new tests for user auth with migrated passwords (ARP1, MD5, DES)
pavel_vinogradov
parents: 5739
diff changeset
149 try:
51240cc99af5 Add new tests for user auth with migrated passwords (ARP1, MD5, DES)
pavel_vinogradov
parents: 5739
diff changeset
150 import crypt
51240cc99af5 Add new tests for user auth with migrated passwords (ARP1, MD5, DES)
pavel_vinogradov
parents: 5739
diff changeset
151 # Try to "login"
5918
5126fadbf24f password related code and tests - clean up and refactor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5786
diff changeset
152 theuser = user.User(self.request, name=name, password=password)
5740
51240cc99af5 Add new tests for user auth with migrated passwords (ARP1, MD5, DES)
pavel_vinogradov
parents: 5739
diff changeset
153 assert theuser.valid
5918
5126fadbf24f password related code and tests - clean up and refactor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5786
diff changeset
154 # Check if the stored password was auto-upgraded on login and saved
5126fadbf24f password related code and tests - clean up and refactor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5786
diff changeset
155 theuser = user.User(self.request, name=name, password=password)
5126fadbf24f password related code and tests - clean up and refactor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5786
diff changeset
156 assert theuser.enc_password.startswith(DEFAULT_ALG)
5740
51240cc99af5 Add new tests for user auth with migrated passwords (ARP1, MD5, DES)
pavel_vinogradov
parents: 5739
diff changeset
157 except ImportError:
5744
50b3926c8880 Fix py.test.skip message in test_auth_with_des_stored_password test.
pavel_vinogradov
parents: 5743
diff changeset
158 py.test.skip("Platform does not provide crypt module!")
5786
8cb5ab136b87 fix trailing blanks
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5747
diff changeset
159
5918
5126fadbf24f password related code and tests - clean up and refactor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5786
diff changeset
160 def test_auth_with_sha_stored_password(self):
5126fadbf24f password related code and tests - clean up and refactor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5786
diff changeset
161 """
5126fadbf24f password related code and tests - clean up and refactor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5786
diff changeset
162 Create user with {SHA} password and check that user can login.
5126fadbf24f password related code and tests - clean up and refactor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5786
diff changeset
163 Also check if auto-upgrade happens and is saved to disk.
5126fadbf24f password related code and tests - clean up and refactor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5786
diff changeset
164 """
5126fadbf24f password related code and tests - clean up and refactor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5786
diff changeset
165 # Create test user
5126fadbf24f password related code and tests - clean up and refactor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5786
diff changeset
166 name = u'Test User'
5126fadbf24f password related code and tests - clean up and refactor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5786
diff changeset
167 password = '12345'
5126fadbf24f password related code and tests - clean up and refactor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5786
diff changeset
168 pw_hash = '{SHA}jLIjfQZ5yojbZGTqxg2pY0VROWQ='
5126fadbf24f password related code and tests - clean up and refactor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5786
diff changeset
169 self.createUser(name, pw_hash, True)
5126fadbf24f password related code and tests - clean up and refactor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5786
diff changeset
170
5126fadbf24f password related code and tests - clean up and refactor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5786
diff changeset
171 # Try to "login"
5126fadbf24f password related code and tests - clean up and refactor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5786
diff changeset
172 theuser = user.User(self.request, name=name, password=password)
5126fadbf24f password related code and tests - clean up and refactor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5786
diff changeset
173 assert theuser.valid
5126fadbf24f password related code and tests - clean up and refactor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5786
diff changeset
174 # Check if the stored password was auto-upgraded on login and saved
5126fadbf24f password related code and tests - clean up and refactor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5786
diff changeset
175 theuser = user.User(self.request, name=name, password=password)
5126fadbf24f password related code and tests - clean up and refactor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5786
diff changeset
176 assert theuser.enc_password.startswith(DEFAULT_ALG)
5126fadbf24f password related code and tests - clean up and refactor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5786
diff changeset
177
5126fadbf24f password related code and tests - clean up and refactor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5786
diff changeset
178 def test_auth_with_ssha_stored_password(self):
5126fadbf24f password related code and tests - clean up and refactor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5786
diff changeset
179 """
5126fadbf24f password related code and tests - clean up and refactor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5786
diff changeset
180 Create user with {SSHA} password and check that user can login.
5126fadbf24f password related code and tests - clean up and refactor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5786
diff changeset
181 Also check if auto-upgrade happens and is saved to disk.
5126fadbf24f password related code and tests - clean up and refactor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5786
diff changeset
182 """
5126fadbf24f password related code and tests - clean up and refactor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5786
diff changeset
183 # Create test user
5126fadbf24f password related code and tests - clean up and refactor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5786
diff changeset
184 name = u'Test User'
5126fadbf24f password related code and tests - clean up and refactor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5786
diff changeset
185 password = '12345'
5126fadbf24f password related code and tests - clean up and refactor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5786
diff changeset
186 pw_hash = '{SSHA}dbeFtH5EGkOI1jgPADlGZgHWq072TIsKqWfHX7zZbUQa85Ze8774Rg=='
5126fadbf24f password related code and tests - clean up and refactor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5786
diff changeset
187 self.createUser(name, pw_hash, True)
5126fadbf24f password related code and tests - clean up and refactor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5786
diff changeset
188
5126fadbf24f password related code and tests - clean up and refactor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5786
diff changeset
189 # Try to "login"
5126fadbf24f password related code and tests - clean up and refactor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5786
diff changeset
190 theuser = user.User(self.request, name=name, password=password)
5126fadbf24f password related code and tests - clean up and refactor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5786
diff changeset
191 assert theuser.valid
5126fadbf24f password related code and tests - clean up and refactor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5786
diff changeset
192 # Check if the stored password was auto-upgraded on login and saved
5126fadbf24f password related code and tests - clean up and refactor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5786
diff changeset
193 theuser = user.User(self.request, name=name, password=password)
5126fadbf24f password related code and tests - clean up and refactor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5786
diff changeset
194 assert theuser.enc_password.startswith(DEFAULT_ALG)
5126fadbf24f password related code and tests - clean up and refactor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5786
diff changeset
195
2038
bd83616af43a test_user: tests for subscription of pages and subpages
Reimar Bauer <rb.proj AT googlemail DOT com>
parents: 2006
diff changeset
196 def testSubscriptionSubscribedPage(self):
bd83616af43a test_user: tests for subscription of pages and subpages
Reimar Bauer <rb.proj AT googlemail DOT com>
parents: 2006
diff changeset
197 """ user: tests isSubscribedTo """
bd83616af43a test_user: tests for subscription of pages and subpages
Reimar Bauer <rb.proj AT googlemail DOT com>
parents: 2006
diff changeset
198 pagename = u'HelpMiscellaneous'
bd83616af43a test_user: tests for subscription of pages and subpages
Reimar Bauer <rb.proj AT googlemail DOT com>
parents: 2006
diff changeset
199 name = u'__Jürgen Herman__'
bd83616af43a test_user: tests for subscription of pages and subpages
Reimar Bauer <rb.proj AT googlemail DOT com>
parents: 2006
diff changeset
200 password = name
3818
fe9305d5c7cf user: adjust tests, add one for password upgrade and fix a bug found
Johannes Berg <johannes AT sipsolutions DOT net>
parents: 3120
diff changeset
201 self.createUser(name, password)
2038
bd83616af43a test_user: tests for subscription of pages and subpages
Reimar Bauer <rb.proj AT googlemail DOT com>
parents: 2006
diff changeset
202 # Login - this should replace the old password in the user file
bd83616af43a test_user: tests for subscription of pages and subpages
Reimar Bauer <rb.proj AT googlemail DOT com>
parents: 2006
diff changeset
203 theUser = user.User(self.request, name=name, password=password)
bd83616af43a test_user: tests for subscription of pages and subpages
Reimar Bauer <rb.proj AT googlemail DOT com>
parents: 2006
diff changeset
204 theUser.subscribe(pagename)
2827
c61cd68592c2 test_user: fixed indenting
Reimar Bauer <rb.proj AT googlemail DOT com>
parents: 2818
diff changeset
205 assert theUser.isSubscribedTo([pagename]) # list(!) of pages to check
892
9931a09387b0 some whitespace cleanup in the tests
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 682
diff changeset
206
2038
bd83616af43a test_user: tests for subscription of pages and subpages
Reimar Bauer <rb.proj AT googlemail DOT com>
parents: 2006
diff changeset
207 def testSubscriptionSubPage(self):
bd83616af43a test_user: tests for subscription of pages and subpages
Reimar Bauer <rb.proj AT googlemail DOT com>
parents: 2006
diff changeset
208 """ user: tests isSubscribedTo on a subpage """
bd83616af43a test_user: tests for subscription of pages and subpages
Reimar Bauer <rb.proj AT googlemail DOT com>
parents: 2006
diff changeset
209 pagename = u'HelpMiscellaneous'
bd83616af43a test_user: tests for subscription of pages and subpages
Reimar Bauer <rb.proj AT googlemail DOT com>
parents: 2006
diff changeset
210 testPagename = u'HelpMiscellaneous/FrequentlyAskedQuestions'
bd83616af43a test_user: tests for subscription of pages and subpages
Reimar Bauer <rb.proj AT googlemail DOT com>
parents: 2006
diff changeset
211 name = u'__Jürgen Herman__'
bd83616af43a test_user: tests for subscription of pages and subpages
Reimar Bauer <rb.proj AT googlemail DOT com>
parents: 2006
diff changeset
212 password = name
3818
fe9305d5c7cf user: adjust tests, add one for password upgrade and fix a bug found
Johannes Berg <johannes AT sipsolutions DOT net>
parents: 3120
diff changeset
213 self.createUser(name, password)
2038
bd83616af43a test_user: tests for subscription of pages and subpages
Reimar Bauer <rb.proj AT googlemail DOT com>
parents: 2006
diff changeset
214 # Login - this should replace the old password in the user file
bd83616af43a test_user: tests for subscription of pages and subpages
Reimar Bauer <rb.proj AT googlemail DOT com>
parents: 2006
diff changeset
215 theUser = user.User(self.request, name=name, password=password)
bd83616af43a test_user: tests for subscription of pages and subpages
Reimar Bauer <rb.proj AT googlemail DOT com>
parents: 2006
diff changeset
216 theUser.subscribe(pagename)
2827
c61cd68592c2 test_user: fixed indenting
Reimar Bauer <rb.proj AT googlemail DOT com>
parents: 2818
diff changeset
217 assert not theUser.isSubscribedTo([testPagename]) # list(!) of pages to check
3120
a7c1680aeaa0 PEP8 fixes, mostly whitespace
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 3103
diff changeset
218
3103
4ede355c6089 bugfix for renaming of users (/MoinMoinBugs/RenamingUserAllowsOldUsernameToLogin) (ported from 1.6)
Reimar Bauer <rb.proj AT googlemail DOT com>
parents: 2827
diff changeset
219 def testRenameUser(self):
4ede355c6089 bugfix for renaming of users (/MoinMoinBugs/RenamingUserAllowsOldUsernameToLogin) (ported from 1.6)
Reimar Bauer <rb.proj AT googlemail DOT com>
parents: 2827
diff changeset
220 """ create user and then rename user and check
4ede355c6089 bugfix for renaming of users (/MoinMoinBugs/RenamingUserAllowsOldUsernameToLogin) (ported from 1.6)
Reimar Bauer <rb.proj AT googlemail DOT com>
parents: 2827
diff changeset
221 if the old username is removed from the cache name2id
4ede355c6089 bugfix for renaming of users (/MoinMoinBugs/RenamingUserAllowsOldUsernameToLogin) (ported from 1.6)
Reimar Bauer <rb.proj AT googlemail DOT com>
parents: 2827
diff changeset
222 """
4ede355c6089 bugfix for renaming of users (/MoinMoinBugs/RenamingUserAllowsOldUsernameToLogin) (ported from 1.6)
Reimar Bauer <rb.proj AT googlemail DOT com>
parents: 2827
diff changeset
223 # Create test user
4ede355c6089 bugfix for renaming of users (/MoinMoinBugs/RenamingUserAllowsOldUsernameToLogin) (ported from 1.6)
Reimar Bauer <rb.proj AT googlemail DOT com>
parents: 2827
diff changeset
224 name = u'__Some Name__'
4ede355c6089 bugfix for renaming of users (/MoinMoinBugs/RenamingUserAllowsOldUsernameToLogin) (ported from 1.6)
Reimar Bauer <rb.proj AT googlemail DOT com>
parents: 2827
diff changeset
225 password = name
4ede355c6089 bugfix for renaming of users (/MoinMoinBugs/RenamingUserAllowsOldUsernameToLogin) (ported from 1.6)
Reimar Bauer <rb.proj AT googlemail DOT com>
parents: 2827
diff changeset
226 self.createUser(name, password)
4ede355c6089 bugfix for renaming of users (/MoinMoinBugs/RenamingUserAllowsOldUsernameToLogin) (ported from 1.6)
Reimar Bauer <rb.proj AT googlemail DOT com>
parents: 2827
diff changeset
227 # Login - this should replace the old password in the user file
4ede355c6089 bugfix for renaming of users (/MoinMoinBugs/RenamingUserAllowsOldUsernameToLogin) (ported from 1.6)
Reimar Bauer <rb.proj AT googlemail DOT com>
parents: 2827
diff changeset
228 theUser = user.User(self.request, name=name)
4ede355c6089 bugfix for renaming of users (/MoinMoinBugs/RenamingUserAllowsOldUsernameToLogin) (ported from 1.6)
Reimar Bauer <rb.proj AT googlemail DOT com>
parents: 2827
diff changeset
229 # Rename user
4ede355c6089 bugfix for renaming of users (/MoinMoinBugs/RenamingUserAllowsOldUsernameToLogin) (ported from 1.6)
Reimar Bauer <rb.proj AT googlemail DOT com>
parents: 2827
diff changeset
230 theUser.name = u'__SomeName__'
4ede355c6089 bugfix for renaming of users (/MoinMoinBugs/RenamingUserAllowsOldUsernameToLogin) (ported from 1.6)
Reimar Bauer <rb.proj AT googlemail DOT com>
parents: 2827
diff changeset
231 theUser.save()
4ede355c6089 bugfix for renaming of users (/MoinMoinBugs/RenamingUserAllowsOldUsernameToLogin) (ported from 1.6)
Reimar Bauer <rb.proj AT googlemail DOT com>
parents: 2827
diff changeset
232 theUser = user.User(self.request, name=name, password=password)
3120
a7c1680aeaa0 PEP8 fixes, mostly whitespace
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 3103
diff changeset
233
3103
4ede355c6089 bugfix for renaming of users (/MoinMoinBugs/RenamingUserAllowsOldUsernameToLogin) (ported from 1.6)
Reimar Bauer <rb.proj AT googlemail DOT com>
parents: 2827
diff changeset
234 assert not theUser.exists()
2165
eed1c7da25eb test_user: fix wrong subscription tests and a few other problems
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 2140
diff changeset
235
4656
052b6926c82d test_user: added two tests for the difference of retrieving an user object by uid or name
Reimar Bauer <rb.proj AT googlemail DOT com>
parents: 4027
diff changeset
236 def test_for_email_attribute_by_name(self):
052b6926c82d test_user: added two tests for the difference of retrieving an user object by uid or name
Reimar Bauer <rb.proj AT googlemail DOT com>
parents: 4027
diff changeset
237 """
052b6926c82d test_user: added two tests for the difference of retrieving an user object by uid or name
Reimar Bauer <rb.proj AT googlemail DOT com>
parents: 4027
diff changeset
238 checks for no access to the email attribute by getting the user object from name
052b6926c82d test_user: added two tests for the difference of retrieving an user object by uid or name
Reimar Bauer <rb.proj AT googlemail DOT com>
parents: 4027
diff changeset
239 """
052b6926c82d test_user: added two tests for the difference of retrieving an user object by uid or name
Reimar Bauer <rb.proj AT googlemail DOT com>
parents: 4027
diff changeset
240 name = u"__TestUser__"
052b6926c82d test_user: added two tests for the difference of retrieving an user object by uid or name
Reimar Bauer <rb.proj AT googlemail DOT com>
parents: 4027
diff changeset
241 password = u"ekfdweurwerh"
052b6926c82d test_user: added two tests for the difference of retrieving an user object by uid or name
Reimar Bauer <rb.proj AT googlemail DOT com>
parents: 4027
diff changeset
242 email = "__TestUser__@moinhost"
4657
1da5c7d21660 test_user: fixed the wrong encoding of the password
Reimar Bauer <rb.proj AT googlemail DOT com>
parents: 4656
diff changeset
243 self.createUser(name, password, email=email)
4656
052b6926c82d test_user: added two tests for the difference of retrieving an user object by uid or name
Reimar Bauer <rb.proj AT googlemail DOT com>
parents: 4027
diff changeset
244 theuser = user.User(self.request, name=name)
052b6926c82d test_user: added two tests for the difference of retrieving an user object by uid or name
Reimar Bauer <rb.proj AT googlemail DOT com>
parents: 4027
diff changeset
245 assert theuser.email == ""
052b6926c82d test_user: added two tests for the difference of retrieving an user object by uid or name
Reimar Bauer <rb.proj AT googlemail DOT com>
parents: 4027
diff changeset
246
052b6926c82d test_user: added two tests for the difference of retrieving an user object by uid or name
Reimar Bauer <rb.proj AT googlemail DOT com>
parents: 4027
diff changeset
247 def test_for_email_attribut_by_uid(self):
052b6926c82d test_user: added two tests for the difference of retrieving an user object by uid or name
Reimar Bauer <rb.proj AT googlemail DOT com>
parents: 4027
diff changeset
248 """
052b6926c82d test_user: added two tests for the difference of retrieving an user object by uid or name
Reimar Bauer <rb.proj AT googlemail DOT com>
parents: 4027
diff changeset
249 checks access to the email attribute by getting the user object from the uid
052b6926c82d test_user: added two tests for the difference of retrieving an user object by uid or name
Reimar Bauer <rb.proj AT googlemail DOT com>
parents: 4027
diff changeset
250 """
052b6926c82d test_user: added two tests for the difference of retrieving an user object by uid or name
Reimar Bauer <rb.proj AT googlemail DOT com>
parents: 4027
diff changeset
251 name = u"__TestUser2__"
052b6926c82d test_user: added two tests for the difference of retrieving an user object by uid or name
Reimar Bauer <rb.proj AT googlemail DOT com>
parents: 4027
diff changeset
252 password = u"ekERErwerwerh"
052b6926c82d test_user: added two tests for the difference of retrieving an user object by uid or name
Reimar Bauer <rb.proj AT googlemail DOT com>
parents: 4027
diff changeset
253 email = "__TestUser2__@moinhost"
4657
1da5c7d21660 test_user: fixed the wrong encoding of the password
Reimar Bauer <rb.proj AT googlemail DOT com>
parents: 4656
diff changeset
254 self.createUser(name, password, email=email)
4656
052b6926c82d test_user: added two tests for the difference of retrieving an user object by uid or name
Reimar Bauer <rb.proj AT googlemail DOT com>
parents: 4027
diff changeset
255 uid = user.getUserId(self.request, name)
052b6926c82d test_user: added two tests for the difference of retrieving an user object by uid or name
Reimar Bauer <rb.proj AT googlemail DOT com>
parents: 4027
diff changeset
256 theuser = user.User(self.request, uid)
052b6926c82d test_user: added two tests for the difference of retrieving an user object by uid or name
Reimar Bauer <rb.proj AT googlemail DOT com>
parents: 4027
diff changeset
257 assert theuser.email == email
052b6926c82d test_user: added two tests for the difference of retrieving an user object by uid or name
Reimar Bauer <rb.proj AT googlemail DOT com>
parents: 4027
diff changeset
258
0
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
259 # Helpers ---------------------------------------------------------
892
9931a09387b0 some whitespace cleanup in the tests
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 682
diff changeset
260
4656
052b6926c82d test_user: added two tests for the difference of retrieving an user object by uid or name
Reimar Bauer <rb.proj AT googlemail DOT com>
parents: 4027
diff changeset
261 def createUser(self, name, password, pwencoded=False, email=None):
2286
01f05e74aa9c Big PEP8 and whitespace cleanup
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 2165
diff changeset
262 """ helper to create test user
0
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
263 """
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
264 # Create user
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
265 self.user = user.User(self.request)
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
266 self.user.name = name
4656
052b6926c82d test_user: added two tests for the difference of retrieving an user object by uid or name
Reimar Bauer <rb.proj AT googlemail DOT com>
parents: 4027
diff changeset
267 self.user.email = email
3818
fe9305d5c7cf user: adjust tests, add one for password upgrade and fix a bug found
Johannes Berg <johannes AT sipsolutions DOT net>
parents: 3120
diff changeset
268 if not pwencoded:
fe9305d5c7cf user: adjust tests, add one for password upgrade and fix a bug found
Johannes Berg <johannes AT sipsolutions DOT net>
parents: 3120
diff changeset
269 password = user.encodePassword(password)
fe9305d5c7cf user: adjust tests, add one for password upgrade and fix a bug found
Johannes Berg <johannes AT sipsolutions DOT net>
parents: 3120
diff changeset
270 self.user.enc_password = password
892
9931a09387b0 some whitespace cleanup in the tests
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 682
diff changeset
271
0
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
272 # Validate that we are not modifying existing user data file!
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
273 if self.user.exists():
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
274 self.user = None
2006
1339d6fdc4ff Changed tests to use py.test. Also changed the semantics a bit - the test wiki directory is only created freshly if it does not exist.
Alexander Schremmer <alex AT alexanderweb DOT de>
parents: 1918
diff changeset
275 py.test.skip("Test user exists, will not override existing user data file!")
892
9931a09387b0 some whitespace cleanup in the tests
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 682
diff changeset
276
0
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
277 # Save test user
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
278 self.user.save()
892
9931a09387b0 some whitespace cleanup in the tests
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 682
diff changeset
279
0
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
280 # Validate user creation
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
281 if not self.user.exists():
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
282 self.user = None
2006
1339d6fdc4ff Changed tests to use py.test. Also changed the semantics a bit - the test wiki directory is only created freshly if it does not exist.
Alexander Schremmer <alex AT alexanderweb DOT de>
parents: 1918
diff changeset
283 py.test.skip("Can't create test user")
892
9931a09387b0 some whitespace cleanup in the tests
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 682
diff changeset
284
0
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
285
2818
7fceb3588211 tests: convert user tests to py.test, fix tests
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 2448
diff changeset
286 class TestGroupName(object):
0
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
287
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
288 def testGroupNames(self):
892
9931a09387b0 some whitespace cleanup in the tests
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 682
diff changeset
289 """ user: isValidName: reject group names """
0
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
290 test = u'AdminGroup'
2818
7fceb3588211 tests: convert user tests to py.test, fix tests
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 2448
diff changeset
291 assert not user.isValidName(self.request, test)
892
9931a09387b0 some whitespace cleanup in the tests
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 682
diff changeset
292
0
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
293
2818
7fceb3588211 tests: convert user tests to py.test, fix tests
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 2448
diff changeset
294 class TestIsValidName(object):
892
9931a09387b0 some whitespace cleanup in the tests
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 682
diff changeset
295
0
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
296 def testNonAlnumCharacters(self):
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
297 """ user: isValidName: reject unicode non alpha numeric characters
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
298
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
299 : and , used in acl rules, we might add more characters to the syntax.
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
300 """
2818
7fceb3588211 tests: convert user tests to py.test, fix tests
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 2448
diff changeset
301 invalid = u'! # $ % ^ & * ( ) = + , : ; " | ~ / \\ \u0000 \u202a'.split()
0
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
302 base = u'User%sName'
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
303 for c in invalid:
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
304 name = base % c
2818
7fceb3588211 tests: convert user tests to py.test, fix tests
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 2448
diff changeset
305 assert not user.isValidName(self.request, name)
0
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
306
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
307 def testWhitespace(self):
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
308 """ user: isValidName: reject leading, trailing or multiple whitespace """
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
309 cases = (
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
310 u' User Name',
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
311 u'User Name ',
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
312 u'User Name',
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
313 )
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
314 for test in cases:
2818
7fceb3588211 tests: convert user tests to py.test, fix tests
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 2448
diff changeset
315 assert not user.isValidName(self.request, test)
0
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
316
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
317 def testValid(self):
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
318 """ user: isValidName: accept names in any language, with spaces """
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
319 cases = (
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
320 u'Jürgen Hermann', # German
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
321 u'ניר סופר', # Hebrew
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
322 u'CamelCase', # Good old camel case
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
323 u'가각간갇갈 갉갊감 갬갯걀갼' # Hangul (gibberish)
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
324 )
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
325 for test in cases:
2818
7fceb3588211 tests: convert user tests to py.test, fix tests
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 2448
diff changeset
326 assert user.isValidName(self.request, test)
0
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
327
2448
c9949c55ff5e add coverage_modules attribute for coverage testing
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 2286
diff changeset
328
c9949c55ff5e add coverage_modules attribute for coverage testing
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 2286
diff changeset
329 coverage_modules = ['MoinMoin.user']
c9949c55ff5e add coverage_modules attribute for coverage testing
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 2286
diff changeset
330