Mercurial > public > mercurial-scm > hg-stable
comparison tests/test-hgweb-auth.py @ 43076:2372284d9457
formatting: blacken the codebase
This is using my patch to black
(https://github.com/psf/black/pull/826) so we don't un-wrap collection
literals.
Done with:
hg files 'set:**.py - mercurial/thirdparty/** - "contrib/python-zstandard/**"' | xargs black -S
# skip-blame mass-reformatting only
# no-check-commit reformats foo_bar functions
Differential Revision: https://phab.mercurial-scm.org/D6971
author | Augie Fackler <augie@google.com> |
---|---|
date | Sun, 06 Oct 2019 09:45:02 -0400 |
parents | 30dd20a56f3e |
children | 9d2b2df2c2ba |
comparison
equal
deleted
inserted
replaced
43075:57875cf423c9 | 43076:2372284d9457 |
---|---|
1 from __future__ import absolute_import, print_function | 1 from __future__ import absolute_import, print_function |
2 | 2 |
3 from mercurial import demandimport; demandimport.enable() | 3 from mercurial import demandimport |
4 | |
5 demandimport.enable() | |
4 from mercurial import ( | 6 from mercurial import ( |
5 error, | 7 error, |
6 pycompat, | 8 pycompat, |
7 ui as uimod, | 9 ui as uimod, |
8 url, | 10 url, |
9 util, | 11 util, |
10 ) | 12 ) |
11 from mercurial.utils import ( | 13 from mercurial.utils import stringutil |
12 stringutil, | |
13 ) | |
14 | 14 |
15 urlerr = util.urlerr | 15 urlerr = util.urlerr |
16 urlreq = util.urlreq | 16 urlreq = util.urlreq |
17 | |
17 | 18 |
18 class myui(uimod.ui): | 19 class myui(uimod.ui): |
19 def interactive(self): | 20 def interactive(self): |
20 return False | 21 return False |
21 | 22 |
23 | |
22 origui = myui.load() | 24 origui = myui.load() |
25 | |
23 | 26 |
24 def writeauth(items): | 27 def writeauth(items): |
25 ui = origui.copy() | 28 ui = origui.copy() |
26 for name, value in items.items(): | 29 for name, value in items.items(): |
27 ui.setconfig(b'auth', name, value) | 30 ui.setconfig(b'auth', name, value) |
28 return ui | 31 return ui |
29 | 32 |
33 | |
30 def _stringifyauthinfo(ai): | 34 def _stringifyauthinfo(ai): |
31 if ai is None: | 35 if ai is None: |
32 return ai | 36 return ai |
33 realm, authuris, user, passwd = ai | 37 realm, authuris, user, passwd = ai |
34 return (pycompat.strurl(realm), | 38 return ( |
35 [pycompat.strurl(u) for u in authuris], | 39 pycompat.strurl(realm), |
36 pycompat.strurl(user), | 40 [pycompat.strurl(u) for u in authuris], |
37 pycompat.strurl(passwd), | 41 pycompat.strurl(user), |
42 pycompat.strurl(passwd), | |
38 ) | 43 ) |
44 | |
39 | 45 |
40 def test(auth, urls=None): | 46 def test(auth, urls=None): |
41 print('CFG:', pycompat.sysstr(stringutil.pprint(auth, bprefix=True))) | 47 print('CFG:', pycompat.sysstr(stringutil.pprint(auth, bprefix=True))) |
42 prefixes = set() | 48 prefixes = set() |
43 for k in auth: | 49 for k in auth: |
55 try: | 61 try: |
56 pm = url.passwordmgr(ui, urlreq.httppasswordmgrwithdefaultrealm()) | 62 pm = url.passwordmgr(ui, urlreq.httppasswordmgrwithdefaultrealm()) |
57 u, authinfo = util.url(uri).authinfo() | 63 u, authinfo = util.url(uri).authinfo() |
58 if authinfo is not None: | 64 if authinfo is not None: |
59 pm.add_password(*_stringifyauthinfo(authinfo)) | 65 pm.add_password(*_stringifyauthinfo(authinfo)) |
60 print(' ', tuple(pycompat.strurl(a) for a in | 66 print( |
61 pm.find_user_password('test', | 67 ' ', |
62 pycompat.strurl(u)))) | 68 tuple( |
69 pycompat.strurl(a) | |
70 for a in pm.find_user_password('test', pycompat.strurl(u)) | |
71 ), | |
72 ) | |
63 except error.Abort: | 73 except error.Abort: |
64 print(' ','abort') | 74 print(' ', 'abort') |
65 | 75 |
66 if not urls: | 76 if not urls: |
67 urls = [ | 77 urls = [ |
68 b'http://example.org/foo', | 78 b'http://example.org/foo', |
69 b'http://example.org/foo/bar', | 79 b'http://example.org/foo/bar', |
71 b'https://example.org/foo', | 81 b'https://example.org/foo', |
72 b'https://example.org/foo/bar', | 82 b'https://example.org/foo/bar', |
73 b'https://example.org/bar', | 83 b'https://example.org/bar', |
74 b'https://x@example.org/bar', | 84 b'https://x@example.org/bar', |
75 b'https://y@example.org/bar', | 85 b'https://y@example.org/bar', |
76 ] | 86 ] |
77 for u in urls: | 87 for u in urls: |
78 _test(u) | 88 _test(u) |
79 | 89 |
80 | 90 |
81 print('\n*** Test in-uri schemes\n') | 91 print('\n*** Test in-uri schemes\n') |
88 test({b'x.prefix': b'example.org', b'x.schemes': b'http'}) | 98 test({b'x.prefix': b'example.org', b'x.schemes': b'http'}) |
89 test({b'x.prefix': b'example.org', b'x.schemes': b'https'}) | 99 test({b'x.prefix': b'example.org', b'x.schemes': b'https'}) |
90 test({b'x.prefix': b'example.org', b'x.schemes': b'http https'}) | 100 test({b'x.prefix': b'example.org', b'x.schemes': b'http https'}) |
91 | 101 |
92 print('\n*** Test prefix matching\n') | 102 print('\n*** Test prefix matching\n') |
93 test({b'x.prefix': b'http://example.org/foo', | 103 test( |
94 b'y.prefix': b'http://example.org/bar'}) | 104 { |
95 test({b'x.prefix': b'http://example.org/foo', | 105 b'x.prefix': b'http://example.org/foo', |
96 b'y.prefix': b'http://example.org/foo/bar'}) | 106 b'y.prefix': b'http://example.org/bar', |
107 } | |
108 ) | |
109 test( | |
110 { | |
111 b'x.prefix': b'http://example.org/foo', | |
112 b'y.prefix': b'http://example.org/foo/bar', | |
113 } | |
114 ) | |
97 test({b'x.prefix': b'*', b'y.prefix': b'https://example.org/bar'}) | 115 test({b'x.prefix': b'*', b'y.prefix': b'https://example.org/bar'}) |
98 | 116 |
99 print('\n*** Test user matching\n') | 117 print('\n*** Test user matching\n') |
100 test({b'x.prefix': b'http://example.org/foo', | 118 test( |
101 b'x.username': None, | 119 { |
102 b'x.password': b'xpassword'}, | 120 b'x.prefix': b'http://example.org/foo', |
103 urls=[b'http://y@example.org/foo']) | 121 b'x.username': None, |
104 test({b'x.prefix': b'http://example.org/foo', | 122 b'x.password': b'xpassword', |
105 b'x.username': None, | 123 }, |
106 b'x.password': b'xpassword', | 124 urls=[b'http://y@example.org/foo'], |
107 b'y.prefix': b'http://example.org/foo', | 125 ) |
108 b'y.username': b'y', | 126 test( |
109 b'y.password': b'ypassword'}, | 127 { |
110 urls=[b'http://y@example.org/foo']) | 128 b'x.prefix': b'http://example.org/foo', |
111 test({b'x.prefix': b'http://example.org/foo/bar', | 129 b'x.username': None, |
112 b'x.username': None, | 130 b'x.password': b'xpassword', |
113 b'x.password': b'xpassword', | 131 b'y.prefix': b'http://example.org/foo', |
114 b'y.prefix': b'http://example.org/foo', | 132 b'y.username': b'y', |
115 b'y.username': b'y', | 133 b'y.password': b'ypassword', |
116 b'y.password': b'ypassword'}, | 134 }, |
117 urls=[b'http://y@example.org/foo/bar']) | 135 urls=[b'http://y@example.org/foo'], |
136 ) | |
137 test( | |
138 { | |
139 b'x.prefix': b'http://example.org/foo/bar', | |
140 b'x.username': None, | |
141 b'x.password': b'xpassword', | |
142 b'y.prefix': b'http://example.org/foo', | |
143 b'y.username': b'y', | |
144 b'y.password': b'ypassword', | |
145 }, | |
146 urls=[b'http://y@example.org/foo/bar'], | |
147 ) | |
118 | 148 |
119 print('\n*** Test user matching with name in prefix\n') | 149 print('\n*** Test user matching with name in prefix\n') |
120 | 150 |
121 # prefix, username and URL have the same user | 151 # prefix, username and URL have the same user |
122 test({b'x.prefix': b'https://example.org/foo', | 152 test( |
123 b'x.username': None, | 153 { |
124 b'x.password': b'xpassword', | 154 b'x.prefix': b'https://example.org/foo', |
125 b'y.prefix': b'http://y@example.org/foo', | 155 b'x.username': None, |
126 b'y.username': b'y', | 156 b'x.password': b'xpassword', |
127 b'y.password': b'ypassword'}, | 157 b'y.prefix': b'http://y@example.org/foo', |
128 urls=[b'http://y@example.org/foo']) | 158 b'y.username': b'y', |
159 b'y.password': b'ypassword', | |
160 }, | |
161 urls=[b'http://y@example.org/foo'], | |
162 ) | |
129 # Prefix has a different user from username and URL | 163 # Prefix has a different user from username and URL |
130 test({b'y.prefix': b'http://z@example.org/foo', | 164 test( |
131 b'y.username': b'y', | 165 { |
132 b'y.password': b'ypassword'}, | 166 b'y.prefix': b'http://z@example.org/foo', |
133 urls=[b'http://y@example.org/foo']) | 167 b'y.username': b'y', |
168 b'y.password': b'ypassword', | |
169 }, | |
170 urls=[b'http://y@example.org/foo'], | |
171 ) | |
134 # Prefix has a different user from URL; no username | 172 # Prefix has a different user from URL; no username |
135 test({b'y.prefix': b'http://z@example.org/foo', | 173 test( |
136 b'y.password': b'ypassword'}, | 174 {b'y.prefix': b'http://z@example.org/foo', b'y.password': b'ypassword'}, |
137 urls=[b'http://y@example.org/foo']) | 175 urls=[b'http://y@example.org/foo'], |
176 ) | |
138 # Prefix and URL have same user, but doesn't match username | 177 # Prefix and URL have same user, but doesn't match username |
139 test({b'y.prefix': b'http://y@example.org/foo', | 178 test( |
140 b'y.username': b'z', | 179 { |
141 b'y.password': b'ypassword'}, | 180 b'y.prefix': b'http://y@example.org/foo', |
142 urls=[b'http://y@example.org/foo']) | 181 b'y.username': b'z', |
182 b'y.password': b'ypassword', | |
183 }, | |
184 urls=[b'http://y@example.org/foo'], | |
185 ) | |
143 # Prefix and URL have the same user; no username | 186 # Prefix and URL have the same user; no username |
144 test({b'y.prefix': b'http://y@example.org/foo', | 187 test( |
145 b'y.password': b'ypassword'}, | 188 {b'y.prefix': b'http://y@example.org/foo', b'y.password': b'ypassword'}, |
146 urls=[b'http://y@example.org/foo']) | 189 urls=[b'http://y@example.org/foo'], |
190 ) | |
147 # Prefix user, but no URL user or username | 191 # Prefix user, but no URL user or username |
148 test({b'y.prefix': b'http://y@example.org/foo', | 192 test( |
149 b'y.password': b'ypassword'}, | 193 {b'y.prefix': b'http://y@example.org/foo', b'y.password': b'ypassword'}, |
150 urls=[b'http://example.org/foo']) | 194 urls=[b'http://example.org/foo'], |
195 ) | |
196 | |
151 | 197 |
152 def testauthinfo(fullurl, authurl): | 198 def testauthinfo(fullurl, authurl): |
153 print('URIs:', fullurl, authurl) | 199 print('URIs:', fullurl, authurl) |
154 pm = urlreq.httppasswordmgrwithdefaultrealm() | 200 pm = urlreq.httppasswordmgrwithdefaultrealm() |
155 ai = _stringifyauthinfo(util.url(pycompat.bytesurl(fullurl)).authinfo()[1]) | 201 ai = _stringifyauthinfo(util.url(pycompat.bytesurl(fullurl)).authinfo()[1]) |
156 pm.add_password(*ai) | 202 pm.add_password(*ai) |
157 print(pm.find_user_password('test', authurl)) | 203 print(pm.find_user_password('test', authurl)) |
158 | 204 |
205 | |
159 print('\n*** Test urllib2 and util.url\n') | 206 print('\n*** Test urllib2 and util.url\n') |
160 testauthinfo('http://user@example.com:8080/foo', 'http://example.com:8080/foo') | 207 testauthinfo('http://user@example.com:8080/foo', 'http://example.com:8080/foo') |