From 9a99df1ce4a699ea1cf3f14ffdd11d04184feef8 Mon Sep 17 00:00:00 2001 From: skrzepto Date: Jun 29 2016 13:45:15 +0000 Subject: edit about me widget for ralph is succesful more tests and modified source of widget to check if the widget exists first, if not 404 changing key look up to not be o(n) --- diff --git a/hubs/app.py b/hubs/app.py index 64e6b91..78dad21 100755 --- a/hubs/app.py +++ b/hubs/app.py @@ -440,9 +440,12 @@ def widget_edit_delete(hub, idx): def widget_source(name): from hubs.widgets import registry base = '/hubs/' - fname = base + registry[name].__file__.split(base, 1)[1] - fname = fname.replace('.pyc', '.py') - return flask.redirect(SOURCE_URL + fname) + if name in registry: + fname = base + registry[name].__file__.split(base, 1)[1] + fname = fname.replace('.pyc', '.py') + return flask.redirect(SOURCE_URL + fname) + else: + flask.abort(404) # Set up OpenID in stateless mode diff --git a/hubs/tests/test_fedora_hubs_flask_api.py b/hubs/tests/test_fedora_hubs_flask_api.py index d9d2325..2085553 100644 --- a/hubs/tests/test_fedora_hubs_flask_api.py +++ b/hubs/tests/test_fedora_hubs_flask_api.py @@ -281,5 +281,51 @@ class HubsAPITest(hubs.tests.APPTest): self.assertEqual(result.status_code, 302) self.assertEqual(urlparse(result.location).path, '/ralph/') + def test_hub_edit_widget_post_valid_data_logged_in(self): + user = tests.FakeAuthorization('ralph') + with tests.auth_set(app, user): + # 51 is about widget + url = '/ralph/51/edit' + data = {'text': 'new about me bio'} + result = self.app.post(url, data=data, follow_redirects=False) + self.assertEqual(result.status_code, 302) + self.assertEqual(urlparse(result.location).path, '/ralph/') + result = self.app.get('/ralph/51') + self.assertIn(data['text'], result.data) + + def test_hub_edit_widget_post_not_valid_data_logged_in(self): + user = tests.FakeAuthorization('ralph') + with tests.auth_set(app, user): + # 51 is about widget + url = '/ralph/51/edit' + data = {'text': None} + result = self.app.post(url, data=data, follow_redirects=False) + self.assertEqual(result.status_code, 302) + self.assertEqual(urlparse(result.location).path, '/ralph/') + result = self.app.get('/ralph/51') + self.assertIn('Testing.', result.data) + + def test_hub_delete_widget_post_logged_in(self): + user = tests.FakeAuthorization('ralph') + with tests.auth_set(app, user): + # 51 is about widget + url = '/ralph/51/delete' + result = self.app.post(url, data={}, follow_redirects=False) + self.assertEqual(result.status_code, 302) + self.assertEqual(urlparse(result.location).path, '/ralph/edit') + result = self.app.get('/ralph/51') + self.assertEqual(result.status_code, 404) + + def test_source_widget_valid(self): + url = 'source/about' + expected_url = 'https://pagure.io/fedora-hubs/blob/develop/f/hubs/widgets/about.py' + result = self.app.get(url, follow_redirects=False) + self.assertEqual(result.location, expected_url) + + def test_source_widget_not_valid(self): + url = 'source/notvalid' + result = self.app.get(url, follow_redirects=False) + self.assertEqual(result.status_code, 404) + if __name__ == '__main__': unittest.main()