This is an automated email from the ASF dual-hosted git repository. brondsem pushed a commit to branch db/8361 in repository https://gitbox.apache.org/repos/asf/allura.git
commit 4b3f53b58b6a53d55a38abdee1aa3385b5ae0d06 Author: Dave Brondsema <d...@brondsema.net> AuthorDate: Mon May 11 18:11:37 2020 -0400 [#8361] test_admin fixes; MaxBytesValidator should not convert --- Allura/allura/lib/validators.py | 4 ++-- Allura/allura/tests/decorators.py | 14 +++++++++---- Allura/allura/tests/functional/test_admin.py | 31 ++++++++++++++-------------- Allura/allura/tests/functional/test_auth.py | 4 ++-- 4 files changed, 30 insertions(+), 23 deletions(-) diff --git a/Allura/allura/lib/validators.py b/Allura/allura/lib/validators.py index cd29024..f84ec5a 100644 --- a/Allura/allura/lib/validators.py +++ b/Allura/allura/lib/validators.py @@ -117,8 +117,8 @@ class MaxBytesValidator(fev.FancyValidator): max = 255 def _to_python(self, value, state): - value = h.really_unicode(value or '').encode('utf-8') - if len(value) > self.max: + value_bytes = h.really_unicode(value or '').encode('utf-8') + if len(value_bytes) > self.max: raise fe.Invalid("Please enter a value less than %s bytes long." % self.max, value, state) return value diff --git a/Allura/allura/tests/decorators.py b/Allura/allura/tests/decorators.py index 647674f..0a48ae7 100644 --- a/Allura/allura/tests/decorators.py +++ b/Allura/allura/tests/decorators.py @@ -173,11 +173,17 @@ def audits(*messages, **kwargs): preamble = '(Done by user: {}\n)?IP Address: {}\nUser-Agent: {}\n'.format(actor, ip_addr, user_agent) else: preamble = '' + for message in messages: - assert M.AuditLog.query.find(dict(message=re.compile(preamble + message))).count(), \ - 'Could not find "%s"%s' % (message, - '\nYou may need to escape the regex chars in the text you are matching' - if message != re.escape(message) else '') + found = M.AuditLog.query.find(dict(message=re.compile(preamble + message))).count() + if not found: + hints = '' + all = M.AuditLog.query.find().all() + if len(all) < 10: + hints += '\nin these AuditLog messages:\n\t' + '\n\t'.join(a.message for a in all) + if message != re.escape(message): + hints += '\nYou may need to escape the regex chars in the text you are matching' + raise AssertionError('Could not find "%s"%s' % (message, hints)) @contextlib.contextmanager diff --git a/Allura/allura/tests/functional/test_admin.py b/Allura/allura/tests/functional/test_admin.py index 15f862e..b02294b 100644 --- a/Allura/allura/tests/functional/test_admin.py +++ b/Allura/allura/tests/functional/test_admin.py @@ -20,8 +20,6 @@ from __future__ import unicode_literals from __future__ import absolute_import import os from datetime import datetime - -import allura import pkg_resources from io import BytesIO import logging @@ -34,7 +32,9 @@ from ming.orm.ormsession import ThreadLocalORMSession from tg import expose from tg import tmpl_context as c, app_globals as g import mock +import six +import allura from allura.tests import TestController from allura.tests import decorators as td from allura.tests.decorators import audits, out_audits @@ -59,12 +59,13 @@ class TestProjectAdmin(TestController): 'change summary to Milkshakes are for crazy monkeys', 'change project name to My Test Project', 'change short description to (\u00bf A Test Project \?){45}'): - self.app.post('/admin/update', status=302, params=dict( + r = self.app.post('/admin/update', params=dict( name='My Test Project', shortname='test', summary='Milkshakes are for crazy monkeys', short_description=('\u00bf A Test Project ?' * 45).encode('utf-8'), labels='aaa,bbb')) + assert r.status_int == 302, (r.status, r.html.select('.error,.fielderror')) r = self.app.get('/admin/overview') assert b'A Test Project ?\xc2\xbf A' in r.body assert 'Test Subproject' not in r @@ -168,7 +169,7 @@ class TestProjectAdmin(TestController): def test_features(self): proj = M.Project.query.get(shortname='test') assert_equals(proj.features, []) - with audits("change project features to \[u'One', u'Two'\]"): + with audits("change project features to \[{u}'One', {u}'Two'\]".format(u='u' if six.PY2 else '')): resp = self.app.post('/admin/update', params={ 'features-0.feature': 'One', 'features-1.feature': ' ', @@ -838,10 +839,10 @@ class TestProjectAdmin(TestController): dev_holder = r.html.find('table', {'id': 'usergroup_admin'}).findAll('tr')[2] mem_holder = r.html.find('table', {'id': 'usergroup_admin'}).findAll('tr')[3] mem_id = mem_holder['data-group'] - # neither group has update permission - assert dev_holder.findAll('ul')[1].findAll('li')[2]['class'] == ["no"] - assert mem_holder.findAll('ul')[1].findAll('li')[2]['class'] == ["no"] - # add update permission to Member + # neither group has create permission + assert dev_holder.select_one('li[data-permission=create]')['class'] == ["no"] + assert mem_holder.select_one('li[data-permission=create]')['class'] == ["no"] + # add create permission to Member r = self.app.post('/admin/groups/change_perm', params={ 'role_id': mem_id, 'permission': 'create', @@ -849,10 +850,10 @@ class TestProjectAdmin(TestController): r = self.app.get('/admin/groups/') dev_holder = r.html.find('table', {'id': 'usergroup_admin'}).findAll('tr')[2] mem_holder = r.html.find('table', {'id': 'usergroup_admin'}).findAll('tr')[3] - # Member now has update permission - assert mem_holder.findAll('ul')[1].findAll('li')[2]['class'] == ["yes"] - # Developer has inherited update permission from Member - assert dev_holder.findAll('ul')[1].findAll('li')[2]['class'] == ["inherit"] + # Member now has create permission + assert mem_holder.select_one('li[data-permission=create]')['class'] == ["yes"] + # Developer has inherited create permission from Member + assert dev_holder.select_one('li[data-permission=create]')['class'] == ["inherit"] # remove update permission from Member r = self.app.post('/admin/groups/change_perm', params={ 'role_id': mem_id, @@ -861,9 +862,9 @@ class TestProjectAdmin(TestController): r = self.app.get('/admin/groups/') dev_holder = r.html.find('table', {'id': 'usergroup_admin'}).findAll('tr')[2] mem_holder = r.html.find('table', {'id': 'usergroup_admin'}).findAll('tr')[3] - # neither group has update permission - assert dev_holder.findAll('ul')[1].findAll('li')[2]['class'] == ["no"] - assert mem_holder.findAll('ul')[1].findAll('li')[2]['class'] == ["no"] + # neither group has create permission + assert dev_holder.select_one('li[data-permission=create]')['class'] == ["no"] + assert mem_holder.select_one('li[data-permission=create]')['class'] == ["no"] def test_permission_inherit(self): r = self.app.get('/admin/groups/') diff --git a/Allura/allura/tests/functional/test_auth.py b/Allura/allura/tests/functional/test_auth.py index 3d922b6..5d2688c 100644 --- a/Allura/allura/tests/functional/test_auth.py +++ b/Allura/allura/tests/functional/test_auth.py @@ -861,9 +861,9 @@ class TestAuth(TestController): field_name = None for k, v in six.iteritems(form.fields): if subscribed: - check = c and v[0].value == 'on' + check = v and v[0].value == 'on' else: - check = c and v[0].value != 'on' + check = v and v[0].value != 'on' if k and k.endswith('.subscribed') and check: field_name = k.replace('.subscribed', '') assert field_name, "Can't find unsubscribed tool for user"