From be8735f62aebfd1bca21d2255a0e7aad4dc599ac Mon Sep 17 00:00:00 2001 From: skrzepto Date: Jul 21 2016 21:03:21 +0000 Subject: [PATCH 1/6] fixed logout test and added adding widget test --- diff --git a/hubs/tests/test_fedora_hubs_flask_api.py b/hubs/tests/test_fedora_hubs_flask_api.py index d099987..49ab3d7 100644 --- a/hubs/tests/test_fedora_hubs_flask_api.py +++ b/hubs/tests/test_fedora_hubs_flask_api.py @@ -34,17 +34,12 @@ class HubsAPITest(hubs.tests.APPTest): '/login">login' in result.data) def test_hub_logged_out(self): - with app.test_request_context('/ralph'): - import flask - flask.g.oidc_id_token = None - # need to manually call the @app.before_request - # since unittest don't call it - hubs.app.check_auth() + with tests.auth_set(app, None): # check_auth doesn't load in unittest result = self.app.get('/ralph', follow_redirects=True) - # assert the status code of the response self.assertEqual(result.status_code, 200) - str_expected = 'Not logged in. Click to ' \ - 'login' + str_expected = '
Ralph
' + self.assertTrue(str_expected in result.data) + str_expected = 'Not logged in.' self.assertTrue(str_expected in result.data) def test_groups_logged_out(self): @@ -325,6 +320,19 @@ class HubsAPITest(hubs.tests.APPTest): result = self.app.get(url) self.assertEqual(result.data, '1') + def test_hub_add_widget_valid_side(self): + user = tests.FakeAuthorization('ralph') + with tests.auth_set(app, user): + url = '/ralph/add/about?position=right' + result = self.app.get(url) + self.assertTrue('Adding widget "about"to hub: ralph' in result.data) + + def test_hub_add_widget_invalid_side(self): + user = tests.FakeAuthorization('ralph') + with tests.auth_set(app, user): + url = '/ralph/add/about?position=invalid' + result = self.app.get(url) + self.assertEqual(result.status_code, 400) if __name__ == '__main__': unittest.main() From f89ab2268d3657e3fb049359cccfad14f7c404fa Mon Sep 17 00:00:00 2001 From: skrzepto Date: Jul 21 2016 21:03:21 +0000 Subject: [PATCH 2/6] added hub deletion and source tests --- diff --git a/hubs/tests/test_fedora_hubs_flask_api.py b/hubs/tests/test_fedora_hubs_flask_api.py index 49ab3d7..2eafd21 100644 --- a/hubs/tests/test_fedora_hubs_flask_api.py +++ b/hubs/tests/test_fedora_hubs_flask_api.py @@ -334,5 +334,22 @@ class HubsAPITest(hubs.tests.APPTest): result = self.app.get(url) self.assertEqual(result.status_code, 400) + def test_hub_delete(self): + user = tests.FakeAuthorization('ralph') + with tests.auth_set(app, user): + url = '/ralph/31/delete' # 31 is widget feed for ralph + result = self.app.post(url) + self.assertEqual(result.status_code, 302) + self.assertTrue('/ralph/edit' in result.data) + + def test_source_name(self): + with tests.auth_set(app, None): + url = '/source/about' + result = self.app.get(url) + self.assertEqual(result.status_code, 302) + expected_str = 'https://pagure.io/fedora-hubs/' \ + 'blob/develop/f/hubs/widgets/about.py' + self.assertTrue(expected_str in result.data) + if __name__ == '__main__': unittest.main() From 24d457f0d03f537a4f49a07c769e760ddd04c203 Mon Sep 17 00:00:00 2001 From: skrzepto Date: Jul 21 2016 21:03:21 +0000 Subject: [PATCH 3/6] adding tests for source url, modified to catch files that dont exist --- diff --git a/hubs/app.py b/hubs/app.py index c152053..0007f66 100755 --- a/hubs/app.py +++ b/hubs/app.py @@ -453,7 +453,13 @@ 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 = '' + + try: + fname = base + registry[name].__file__.split(base, 1)[1] + except KeyError: + flask.abort(404) + fname = fname.replace('.pyc', '.py') return flask.redirect(SOURCE_URL + fname) diff --git a/hubs/tests/test_fedora_hubs_flask_api.py b/hubs/tests/test_fedora_hubs_flask_api.py index 2eafd21..5ef5732 100644 --- a/hubs/tests/test_fedora_hubs_flask_api.py +++ b/hubs/tests/test_fedora_hubs_flask_api.py @@ -351,5 +351,12 @@ class HubsAPITest(hubs.tests.APPTest): 'blob/develop/f/hubs/widgets/about.py' self.assertTrue(expected_str in result.data) + def test_source_name_not_existent(self): + with tests.auth_set(app, None): + url = '/source/notexistent' + result = self.app.get(url) + self.assertEqual(result.status_code, 404) + + if __name__ == '__main__': unittest.main() From 082d298d8cccab0c1d370b898e5dd57baee7549b Mon Sep 17 00:00:00 2001 From: skrzepto Date: Jul 21 2016 21:03:21 +0000 Subject: [PATCH 4/6] adding tests for library widget --- diff --git a/hubs/tests/test_widgets/__init__.py b/hubs/tests/test_widgets/__init__.py index b0b7d64..9b9ac69 100644 --- a/hubs/tests/test_widgets/__init__.py +++ b/hubs/tests/test_widgets/__init__.py @@ -48,6 +48,14 @@ class WidgetTest(unittest.TestCase): index=500, _config=json.dumps({"text": "Testing."}), ) + + hub.widgets.append(widget) + + widget = hubs.models.Widget( + plugin='library', + index=51, + _config=json.dumps({"urls": "ralph/"}) # we must add a url or itll crash + ) hub.widgets.append(widget) for team in ['i18n', 'infra', 'old']: diff --git a/hubs/tests/test_widgets/test_library.py b/hubs/tests/test_widgets/test_library.py new file mode 100644 index 0000000..ba558b1 --- /dev/null +++ b/hubs/tests/test_widgets/test_library.py @@ -0,0 +1,35 @@ +import json + +import hubs.tests.test_widgets +import hubs.models + +class TestLibrary(hubs.tests.test_widgets.WidgetTest): + plugin = 'library' # The name in hubs.widgets.registry + + def test_data_simple(self): + widget = self.widget_instance('ralph', self.plugin) + response = self.app.get('/ralph/%i/json/' % widget.idx) + self.assertEqual(response.status_code, 200) + data = json.loads(response.data) + # del data['data']['widget_url'] + expected_dict = { + "config": { + "urls": "ralph/" + }, + "data": { + "edit_url": "/ralph/52/edit", + "source_url": "/source/library", + "urls": [ + "ralph/" + ], + "widget_url": "/ralph/52" + }, + "description": None, + "hub": "ralph", + "id": 52, + "index": 51, + "left": False, + "plugin": "library" + } + + self.assertDictEqual(data['data'], expected_dict['data']) From 879343ff798feabe3a3f04f73e1a809f67bd38ea Mon Sep 17 00:00:00 2001 From: skrzepto Date: Jul 21 2016 21:03:21 +0000 Subject: [PATCH 5/6] on some machines getting data for calendars doesnt always work and crashes test --- diff --git a/hubs/tests/test_widgets/test_meetings.py b/hubs/tests/test_widgets/test_meetings.py index 0a48a83..7184796 100644 --- a/hubs/tests/test_widgets/test_meetings.py +++ b/hubs/tests/test_widgets/test_meetings.py @@ -12,12 +12,13 @@ class TestMeetings(hubs.tests.test_widgets.WidgetTest): response = self.app.get('/%s/%i/json/' % (team, widget.idx)) self.assertEqual(200, response.status_code) data = json.loads(response.data) - meeting = data['data']['meetings']["%s meeting" % team] - self.assertIn(team, meeting['meeting_name']) + calendar_name = data['data']['calendar'] + self.assertIn(team, calendar_name) def test_render_simple(self): team = 'i18n' widget = self.widget_instance(team, self.plugin) response = self.app.get('/%s/%i/' % (team, widget.idx)) self.assertEqual(200, response.status_code) - self.assertIn('The i18n meeting is ', response.data) + self.assertIn('i18n', response.data) + self.assertIn('Request A New Meeting', response.data) \ No newline at end of file From 80ca59a64ede57439fc52670b73640b4bb874ab8 Mon Sep 17 00:00:00 2001 From: skrzepto Date: Jul 21 2016 21:03:21 +0000 Subject: [PATCH 6/6] removing unecessary comment --- diff --git a/hubs/tests/test_widgets/test_library.py b/hubs/tests/test_widgets/test_library.py index ba558b1..27a32cf 100644 --- a/hubs/tests/test_widgets/test_library.py +++ b/hubs/tests/test_widgets/test_library.py @@ -11,7 +11,6 @@ class TestLibrary(hubs.tests.test_widgets.WidgetTest): response = self.app.get('/ralph/%i/json/' % widget.idx) self.assertEqual(response.status_code, 200) data = json.loads(response.data) - # del data['data']['widget_url'] expected_dict = { "config": { "urls": "ralph/"