annotate MoinMoin/_tests/test_user.py @ 5922:25900eaeb864

passlib integration - enhanced password hash security Docs for passlib: http://packages.python.org/passlib/ Updated docs/CHANGES about the moin integration. Updated docs/REQUIREMENTS about passlib requirements. Added/Adapted related unit tests. Added logging for password hash processing errors.
author Thomas Waldmann <tw AT waldmann-edv DOT de>
date Sat, 19 Jan 2013 00:32:21 +0100
parents 5126fadbf24f
children 05a6897ee496
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
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
16
2818
7fceb3588211 tests: convert user tests to py.test, fix tests
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 2448
diff changeset
17 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
18 """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
19
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
20 def testAscii(self):
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
21 """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
22 # u'MoinMoin' and 'MoinMoin' should be encoded to same result
5922
25900eaeb864 passlib integration - enhanced password hash security
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5918
diff changeset
23 cfg = self.request.cfg
25900eaeb864 passlib integration - enhanced password hash security
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5918
diff changeset
24 tests = [
25900eaeb864 passlib integration - enhanced password hash security
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5918
diff changeset
25 ('{PASSLIB}', '12345', "{PASSLIB}$6$rounds=1001$12345$jrPUCzPJt1yiixDbzIgSBoKED0/DlNDTHZN3lVarCtN6IM/.LoAw5pgUQH112CErU6wS8HXTZNpqb7wVjHLs/0"),
25900eaeb864 passlib integration - enhanced password hash security
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5918
diff changeset
26 ('{SSHA}', '12345', "{SSHA}xkDIIx1I7A4gC98Vt/+UelIkTDYxMjM0NQ=="),
25900eaeb864 passlib integration - enhanced password hash security
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5918
diff changeset
27 ]
25900eaeb864 passlib integration - enhanced password hash security
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5918
diff changeset
28 for scheme, salt, expected in tests:
25900eaeb864 passlib integration - enhanced password hash security
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5918
diff changeset
29 result = user.encodePassword(cfg, "MoinMoin", salt=salt, scheme=scheme)
25900eaeb864 passlib integration - enhanced password hash security
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5918
diff changeset
30 assert result == expected
25900eaeb864 passlib integration - enhanced password hash security
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5918
diff changeset
31 result = user.encodePassword(cfg, u"MoinMoin", salt=salt, scheme=scheme)
25900eaeb864 passlib integration - enhanced password hash security
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5918
diff changeset
32 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
33
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
34 def testUnicode(self):
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
35 """ user: encode unicode password """
5922
25900eaeb864 passlib integration - enhanced password hash security
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5918
diff changeset
36 cfg = self.request.cfg
25900eaeb864 passlib integration - enhanced password hash security
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5918
diff changeset
37 tests = [
25900eaeb864 passlib integration - enhanced password hash security
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5918
diff changeset
38 ('{PASSLIB}', '12345', "{PASSLIB}$6$rounds=1001$12345$5srFB66ZCu2JgGwPgdfb1lHRmqkjnKC/RxdsFlWn2WzoQh3btIjH6Ai1LJV9iYLDa9kLP/VQYa4DHLkRnaBw8."),
25900eaeb864 passlib integration - enhanced password hash security
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5918
diff changeset
39 ('{SSHA}', '12345', "{SSHA}YiwfeVWdVW9luqyVn8t2JivlzmUxMjM0NQ=="),
25900eaeb864 passlib integration - enhanced password hash security
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5918
diff changeset
40 ]
25900eaeb864 passlib integration - enhanced password hash security
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5918
diff changeset
41 for scheme, salt, expected in tests:
25900eaeb864 passlib integration - enhanced password hash security
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5918
diff changeset
42 result = user.encodePassword(cfg, u'סיסמה סודית בהחלט', salt=salt, scheme=scheme) # Hebrew
25900eaeb864 passlib integration - enhanced password hash security
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5918
diff changeset
43 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
44
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
45
2818
7fceb3588211 tests: convert user tests to py.test, fix tests
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 2448
diff changeset
46 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
47 """user: login tests"""
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
48
2818
7fceb3588211 tests: convert user tests to py.test, fix tests
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 2448
diff changeset
49 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
50 # Save original user and cookie
4212
1ca179133f01 Fix tests: small fixes after merge
Florian Krupicka <florian.krupicka@googlemail.com>
parents: 3820
diff changeset
51 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
52 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
53
0
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
54 # Create anon user for the tests
4212
1ca179133f01 Fix tests: small fixes after merge
Florian Krupicka <florian.krupicka@googlemail.com>
parents: 3820
diff changeset
55 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
56 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
57
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
58 self.user = None
5922
25900eaeb864 passlib integration - enhanced password hash security
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5918
diff changeset
59 self.passlib_support = self.request.cfg.passlib_support
25900eaeb864 passlib integration - enhanced password hash security
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5918
diff changeset
60 self.password_scheme = self.request.cfg.password_scheme
892
9931a09387b0 some whitespace cleanup in the tests
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 682
diff changeset
61
2818
7fceb3588211 tests: convert user tests to py.test, fix tests
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 2448
diff changeset
62 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
63 """ Run after each test
2286
01f05e74aa9c Big PEP8 and whitespace cleanup
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 2165
diff changeset
64
0
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
65 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
66 """
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
67 # 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
68 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
69 try:
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
70 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
71 os.remove(path)
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
72 except OSError:
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
73 pass
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
74 del self.user
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
75
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
76 # Restore original user
4212
1ca179133f01 Fix tests: small fixes after merge
Florian Krupicka <florian.krupicka@googlemail.com>
parents: 3820
diff changeset
77 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
78 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
79
0
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
80 # 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
81 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
82 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
83 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
84 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
85 pass
892
9931a09387b0 some whitespace cleanup in the tests
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 682
diff changeset
86
0
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
87 def testAsciiPassword(self):
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
88 """ 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
89 # Create test user
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
90 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
91 password = name
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
92 self.createUser(name, password)
892
9931a09387b0 some whitespace cleanup in the tests
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 682
diff changeset
93
2286
01f05e74aa9c Big PEP8 and whitespace cleanup
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 2165
diff changeset
94 # 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
95 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
96 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
97
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
98 def testUnicodePassword(self):
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
99 """ 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
100 # Create test user
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
101 name = u'__שם משתמש לא קיים__' # Hebrew
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
102 password = name
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
103 self.createUser(name, password)
892
9931a09387b0 some whitespace cleanup in the tests
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 682
diff changeset
104
0
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
105 # Try to "login"
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
106 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
107 assert theUser.valid
5740
51240cc99af5 Add new tests for user auth with migrated passwords (ARP1, MD5, DES)
pavel_vinogradov
parents: 5739
diff changeset
108
51240cc99af5 Add new tests for user auth with migrated passwords (ARP1, MD5, DES)
pavel_vinogradov
parents: 5739
diff changeset
109 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
110 """
51240cc99af5 Add new tests for user auth with migrated passwords (ARP1, MD5, DES)
pavel_vinogradov
parents: 5739
diff changeset
111 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
112 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
113 """
51240cc99af5 Add new tests for user auth with migrated passwords (ARP1, MD5, DES)
pavel_vinogradov
parents: 5739
diff changeset
114 # Create test user
51240cc99af5 Add new tests for user auth with migrated passwords (ARP1, MD5, DES)
pavel_vinogradov
parents: 5739
diff changeset
115 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
116 password = '12345'
5746
ff282aaf7912 Replace test password hashes (for APR1 and DES) with htpasswd generated
pavel_vinogradov
parents: 5745
diff changeset
117 # 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
118 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
119 self.createUser(name, pw_hash, True)
5786
8cb5ab136b87 fix trailing blanks
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5747
diff changeset
120
5740
51240cc99af5 Add new tests for user auth with migrated passwords (ARP1, MD5, DES)
pavel_vinogradov
parents: 5739
diff changeset
121 # 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
122 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
123 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
124 # 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
125 theuser = user.User(self.request, name=name, password=password)
5922
25900eaeb864 passlib integration - enhanced password hash security
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5918
diff changeset
126 assert theuser.enc_password.startswith(self.password_scheme)
5740
51240cc99af5 Add new tests for user auth with migrated passwords (ARP1, MD5, DES)
pavel_vinogradov
parents: 5739
diff changeset
127
51240cc99af5 Add new tests for user auth with migrated passwords (ARP1, MD5, DES)
pavel_vinogradov
parents: 5739
diff changeset
128 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
129 """
51240cc99af5 Add new tests for user auth with migrated passwords (ARP1, MD5, DES)
pavel_vinogradov
parents: 5739
diff changeset
130 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
131 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
132 """
51240cc99af5 Add new tests for user auth with migrated passwords (ARP1, MD5, DES)
pavel_vinogradov
parents: 5739
diff changeset
133 # Create test user
51240cc99af5 Add new tests for user auth with migrated passwords (ARP1, MD5, DES)
pavel_vinogradov
parents: 5739
diff changeset
134 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
135 password = '12345'
5126fadbf24f password related code and tests - clean up and refactor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5786
diff changeset
136 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
137 self.createUser(name, pw_hash, True)
5786
8cb5ab136b87 fix trailing blanks
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5747
diff changeset
138
5740
51240cc99af5 Add new tests for user auth with migrated passwords (ARP1, MD5, DES)
pavel_vinogradov
parents: 5739
diff changeset
139 # 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
140 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
141 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
142 # 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
143 theuser = user.User(self.request, name=name, password=password)
5922
25900eaeb864 passlib integration - enhanced password hash security
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5918
diff changeset
144 assert theuser.enc_password.startswith(self.password_scheme)
5740
51240cc99af5 Add new tests for user auth with migrated passwords (ARP1, MD5, DES)
pavel_vinogradov
parents: 5739
diff changeset
145
51240cc99af5 Add new tests for user auth with migrated passwords (ARP1, MD5, DES)
pavel_vinogradov
parents: 5739
diff changeset
146 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
147 """
51240cc99af5 Add new tests for user auth with migrated passwords (ARP1, MD5, DES)
pavel_vinogradov
parents: 5739
diff changeset
148 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
149 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
150 """
51240cc99af5 Add new tests for user auth with migrated passwords (ARP1, MD5, DES)
pavel_vinogradov
parents: 5739
diff changeset
151 # Create test user
51240cc99af5 Add new tests for user auth with migrated passwords (ARP1, MD5, DES)
pavel_vinogradov
parents: 5739
diff changeset
152 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
153 password = '12345'
5746
ff282aaf7912 Replace test password hashes (for APR1 and DES) with htpasswd generated
pavel_vinogradov
parents: 5745
diff changeset
154 # 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
155 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
156 self.createUser(name, pw_hash, True)
5786
8cb5ab136b87 fix trailing blanks
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5747
diff changeset
157
5740
51240cc99af5 Add new tests for user auth with migrated passwords (ARP1, MD5, DES)
pavel_vinogradov
parents: 5739
diff changeset
158 try:
51240cc99af5 Add new tests for user auth with migrated passwords (ARP1, MD5, DES)
pavel_vinogradov
parents: 5739
diff changeset
159 import crypt
51240cc99af5 Add new tests for user auth with migrated passwords (ARP1, MD5, DES)
pavel_vinogradov
parents: 5739
diff changeset
160 # 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
161 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
162 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
163 # 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
164 theuser = user.User(self.request, name=name, password=password)
5922
25900eaeb864 passlib integration - enhanced password hash security
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5918
diff changeset
165 assert theuser.enc_password.startswith(self.password_scheme)
5740
51240cc99af5 Add new tests for user auth with migrated passwords (ARP1, MD5, DES)
pavel_vinogradov
parents: 5739
diff changeset
166 except ImportError:
5744
50b3926c8880 Fix py.test.skip message in test_auth_with_des_stored_password test.
pavel_vinogradov
parents: 5743
diff changeset
167 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
168
5918
5126fadbf24f password related code and tests - clean up and refactor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5786
diff changeset
169 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
170 """
5126fadbf24f password related code and tests - clean up and refactor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5786
diff changeset
171 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
172 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
173 """
5126fadbf24f password related code and tests - clean up and refactor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5786
diff changeset
174 # 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
175 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
176 password = '12345'
5126fadbf24f password related code and tests - clean up and refactor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5786
diff changeset
177 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
178 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
179
5126fadbf24f password related code and tests - clean up and refactor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5786
diff changeset
180 # 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
181 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
182 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
183 # 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
184 theuser = user.User(self.request, name=name, password=password)
5922
25900eaeb864 passlib integration - enhanced password hash security
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5918
diff changeset
185 assert theuser.enc_password.startswith(self.password_scheme)
5918
5126fadbf24f password related code and tests - clean up and refactor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5786
diff changeset
186
5126fadbf24f password related code and tests - clean up and refactor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5786
diff changeset
187 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
188 """
5126fadbf24f password related code and tests - clean up and refactor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5786
diff changeset
189 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
190 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
191 """
5126fadbf24f password related code and tests - clean up and refactor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5786
diff changeset
192 # 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
193 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
194 password = '12345'
5126fadbf24f password related code and tests - clean up and refactor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5786
diff changeset
195 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
196 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
197
5126fadbf24f password related code and tests - clean up and refactor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5786
diff changeset
198 # 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
199 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
200 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
201 # 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
202 theuser = user.User(self.request, name=name, password=password)
5922
25900eaeb864 passlib integration - enhanced password hash security
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5918
diff changeset
203 assert theuser.enc_password.startswith(self.password_scheme)
25900eaeb864 passlib integration - enhanced password hash security
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5918
diff changeset
204
25900eaeb864 passlib integration - enhanced password hash security
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5918
diff changeset
205 def test_auth_with_passlib_stored_password(self):
25900eaeb864 passlib integration - enhanced password hash security
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5918
diff changeset
206 """
25900eaeb864 passlib integration - enhanced password hash security
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5918
diff changeset
207 Create user with {PASSLIB} password and check that user can login.
25900eaeb864 passlib integration - enhanced password hash security
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5918
diff changeset
208 """
25900eaeb864 passlib integration - enhanced password hash security
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5918
diff changeset
209 if not self.passlib_support:
25900eaeb864 passlib integration - enhanced password hash security
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5918
diff changeset
210 py.test.skip("test requires passlib, but passlib_support is False")
25900eaeb864 passlib integration - enhanced password hash security
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5918
diff changeset
211 # Create test user
25900eaeb864 passlib integration - enhanced password hash security
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5918
diff changeset
212 name = u'Test User'
25900eaeb864 passlib integration - enhanced password hash security
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5918
diff changeset
213 password = '12345'
25900eaeb864 passlib integration - enhanced password hash security
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5918
diff changeset
214 pw_hash = '{PASSLIB}$6$rounds=1001$/AVWSh/RUWpcppfl$8DCRGLaBD3KoV4Ag67sUv6b2QdrUFXk1yWCxqWnBLJ.iHSe4Piv6nqzSQgELeLPIvwTC9APaWv1XCTOHjkLOj/'
25900eaeb864 passlib integration - enhanced password hash security
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5918
diff changeset
215 self.createUser(name, pw_hash, True)
25900eaeb864 passlib integration - enhanced password hash security
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5918
diff changeset
216
25900eaeb864 passlib integration - enhanced password hash security
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5918
diff changeset
217 # Try to "login"
25900eaeb864 passlib integration - enhanced password hash security
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5918
diff changeset
218 theuser = user.User(self.request, name=name, password=password)
25900eaeb864 passlib integration - enhanced password hash security
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5918
diff changeset
219 assert theuser.valid
25900eaeb864 passlib integration - enhanced password hash security
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5918
diff changeset
220 # Check if the stored password was auto-upgraded on login and saved
25900eaeb864 passlib integration - enhanced password hash security
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5918
diff changeset
221 theuser = user.User(self.request, name=name, password=password)
25900eaeb864 passlib integration - enhanced password hash security
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5918
diff changeset
222 assert theuser.enc_password.startswith(self.password_scheme)
5918
5126fadbf24f password related code and tests - clean up and refactor
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5786
diff changeset
223
2038
bd83616af43a test_user: tests for subscription of pages and subpages
Reimar Bauer <rb.proj AT googlemail DOT com>
parents: 2006
diff changeset
224 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
225 """ 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
226 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
227 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
228 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
229 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
230 # 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
231 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
232 theUser.subscribe(pagename)
2827
c61cd68592c2 test_user: fixed indenting
Reimar Bauer <rb.proj AT googlemail DOT com>
parents: 2818
diff changeset
233 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
234
2038
bd83616af43a test_user: tests for subscription of pages and subpages
Reimar Bauer <rb.proj AT googlemail DOT com>
parents: 2006
diff changeset
235 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
236 """ 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
237 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
238 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
239 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
240 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
241 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
242 # 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
243 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
244 theUser.subscribe(pagename)
2827
c61cd68592c2 test_user: fixed indenting
Reimar Bauer <rb.proj AT googlemail DOT com>
parents: 2818
diff changeset
245 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
246
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
247 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
248 """ 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
249 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
250 """
4ede355c6089 bugfix for renaming of users (/MoinMoinBugs/RenamingUserAllowsOldUsernameToLogin) (ported from 1.6)
Reimar Bauer <rb.proj AT googlemail DOT com>
parents: 2827
diff changeset
251 # 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
252 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
253 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
254 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
255 # 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
256 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
257 # 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
258 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
259 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
260 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
261
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
262 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
263
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
264 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
265 """
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
266 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
267 """
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
268 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
269 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
270 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
271 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
272 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
273 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
274
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
275 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
276 """
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
277 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
278 """
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
279 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
280 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
281 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
282 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
283 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
284 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
285 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
286
0
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
287 # Helpers ---------------------------------------------------------
892
9931a09387b0 some whitespace cleanup in the tests
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 682
diff changeset
288
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
289 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
290 """ 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
291 """
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
292 # Create user
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
293 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
294 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
295 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
296 if not pwencoded:
5922
25900eaeb864 passlib integration - enhanced password hash security
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 5918
diff changeset
297 password = user.encodePassword(self.request.cfg, 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
298 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
299
0
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
300 # 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
301 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
302 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
303 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
304
0
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
305 # Save test user
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
306 self.user.save()
892
9931a09387b0 some whitespace cleanup in the tests
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 682
diff changeset
307
0
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
308 # Validate user creation
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
309 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
310 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
311 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
312
0
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
313
2818
7fceb3588211 tests: convert user tests to py.test, fix tests
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 2448
diff changeset
314 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
315
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
316 def testGroupNames(self):
892
9931a09387b0 some whitespace cleanup in the tests
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 682
diff changeset
317 """ 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
318 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
319 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
320
0
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
321
2818
7fceb3588211 tests: convert user tests to py.test, fix tests
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 2448
diff changeset
322 class TestIsValidName(object):
892
9931a09387b0 some whitespace cleanup in the tests
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 682
diff changeset
323
0
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
324 def testNonAlnumCharacters(self):
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
325 """ 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
326
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
327 : 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
328 """
2818
7fceb3588211 tests: convert user tests to py.test, fix tests
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 2448
diff changeset
329 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
330 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
331 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
332 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
333 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
334
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
335 def testWhitespace(self):
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
336 """ 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
337 cases = (
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
338 u' User Name',
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
339 u'User Name ',
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
340 u'User Name',
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
341 )
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
342 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
343 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
344
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
345 def testValid(self):
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
346 """ 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
347 cases = (
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
348 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
349 u'ניר סופר', # Hebrew
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
350 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
351 u'가각간갇갈 갉갊감 갬갯걀갼' # Hangul (gibberish)
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
352 )
77665d8e2254 tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff changeset
353 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
354 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
355
2448
c9949c55ff5e add coverage_modules attribute for coverage testing
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 2286
diff changeset
356
c9949c55ff5e add coverage_modules attribute for coverage testing
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 2286
diff changeset
357 coverage_modules = ['MoinMoin.user']
c9949c55ff5e add coverage_modules attribute for coverage testing
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 2286
diff changeset
358