Mercurial > bitten > bitten-test
changeset 434:ca0fded18882
Fixes and more tests for the admin panels.
author | cmlenz |
---|---|
date | Thu, 16 Aug 2007 22:07:47 +0000 |
parents | 201f467e0ec1 |
children | 8424a8afd1a1 |
files | bitten/admin.py bitten/templates/bitten_admin_configs.cs bitten/tests/admin.py |
diffstat | 3 files changed, 58 insertions(+), 19 deletions(-) [+] |
line wrap: on
line diff
--- a/bitten/admin.py +++ b/bitten/admin.py @@ -98,7 +98,7 @@ if req.method == 'POST': if 'save' in req.args: - self._save_config(req, config) + self._update_config(req, config) req.redirect(req.abs_href.admin(cat, page)) data['config'] = { @@ -142,7 +142,12 @@ # Internal methods def _activate_configs(self, req): + req.perm.assert_permission('BUILD_MODIFY') + active = req.args.get('active') + if not active: + return + active = isinstance(active, list) and active or [active] db = self.env.get_db_cnx() for config in BuildConfig.select(self.env, db=db, @@ -153,6 +158,14 @@ def _create_config(self, req): req.perm.assert_permission('BUILD_CREATE') + + name = req.args.get('name') + if not name: + raise TracError('Missing required field "name"', 'Missing field') + if not re.match(r'^[\w.-]+$', name): + raise TracError('The field "name" may only contain letters, ' + 'digits, periods, or dashes.', 'Invalid field') + config = BuildConfig(self.env) config.name = req.args.get('name') config.label = req.args.get('label', config.name) @@ -175,6 +188,8 @@ db.commit() def _update_config(self, req, config): + req.perm.assert_permission('BUILD_MODIFY') + name = req.args.get('name') if not name: raise TracError('Missing required field "name"', 'Missing field') @@ -194,8 +209,7 @@ try: repos.get_node(path, req.args.get('min_rev')) except TracError, e: - raise TracError(e, - 'Invalid value for oldest revision') + raise TracError(e, 'Invalid value for oldest revision') recipe_xml = req.args.get('recipe', '') if recipe_xml:
--- a/bitten/templates/bitten_admin_configs.cs +++ b/bitten/templates/bitten_admin_configs.cs @@ -61,12 +61,18 @@ <form class="addnew" id="addcomp" method="post"> <fieldset> <legend>Add Configuration:</legend> - <div class="field"> - <label>Name:<br /><input type="text" name="name" /></label> - </div> - <div class="field"> - <label>Label:<br /><input type="text" name="label" /></label> - </div> + <table summary=""><tr> + <td class="name"><div class="field"><label>Name:<br /> + <input type="text" name="name" size="12" /> + </label></div></td> + <td class="label"><div class="field"><label>Label:<br /> + <input type="text" name="label" size="22" /> + </label></div></td> + </tr><tr> + <td class="path" colspan="2"><div class="field"> + <label>Path:<br /><input type="text" name="path" size="32" /></label> + </div> + </tr></table> <div class="buttons"> <input type="submit" name="add" value="Add"> </div>
--- a/bitten/tests/admin.py +++ b/bitten/tests/admin.py @@ -247,6 +247,18 @@ config = BuildConfig.fetch(self.env, name='bar') self.assertEqual('Bar', config.label) + def test_process_add_config_no_name(self): + req = Mock(method='POST', perm=PermissionCache(self.env, 'joe'), + args={'add': '', 'name': ''}) + + provider = BuildConfigurationsAdminPageProvider(self.env) + try: + provider.process_admin_request(req, 'bitten', 'configs', '') + self.fail('Expected TracError') + + except TracError, e: + self.assertEqual('Missing required field "name"', e.message) + def test_process_add_config_no_perms(self): BuildConfig(self.env, name='foo', label='Foo', path='branches/foo', active=True).insert() @@ -257,12 +269,8 @@ args={'add': '', 'name': 'bar', 'label': 'Bar'}) provider = BuildConfigurationsAdminPageProvider(self.env) - try: - provider.process_admin_request(req, 'bitten', 'configs', '') - self.fail('Expected PermissionError') - - except PermissionError: - pass + self.assertRaises(PermissionError, provider.process_admin_request, req, + 'bitten', 'configs', '') def test_process_remove_config(self): BuildConfig(self.env, name='foo', label='Foo', path='branches/foo', @@ -328,12 +336,23 @@ args={'remove': '', 'sel': 'bar'}) provider = BuildConfigurationsAdminPageProvider(self.env) + self.assertRaises(PermissionError, provider.process_admin_request, req, + 'bitten', 'configs', '') + + def test_process_update_config_no_name(self): + BuildConfig(self.env, name='foo', label='Foo', path='branches/foo', + active=True).insert() + + req = Mock(method='POST', perm=PermissionCache(self.env, 'joe'), + args={'save': ''}) + + provider = BuildConfigurationsAdminPageProvider(self.env) try: - provider.process_admin_request(req, 'bitten', 'configs', '') - self.fail('Expected PermissionError') + provider.process_admin_request(req, 'bitten', 'configs', 'foo') + self.fail('Expected TracError') - except PermissionError: - pass + except TracError, e: + self.assertEqual('Missing required field "name"', e.message) def suite():