From 6af1241a63b7d9ccc2f56e6279dfe692cdcc8b4a Mon Sep 17 00:00:00 2001 From: Julen Landa Alustiza Date: Dec 04 2019 09:58:31 +0000 Subject: [PATCH 1/2] tests: test userdash with a member of a non-user type group --- diff --git a/tests/test_pagure_flask_ui_app_userdash.py b/tests/test_pagure_flask_ui_app_userdash.py index 57bea41..ea92bd6 100644 --- a/tests/test_pagure_flask_ui_app_userdash.py +++ b/tests/test_pagure_flask_ui_app_userdash.py @@ -376,6 +376,53 @@ class PagureFlaskAppUserdashTests(tests.Modeltests): ) self.assertEqual(output_text.count('title="Private project"'), 1) + def test_index_logged_in_non_user_group(self): + """ + Test the index endpoint when logged in with a member of non-user type + group. + """ + tests.create_projects(self.session) + + # Add a 3rd project just for foo + item = pagure.lib.model.Project( + user_id=2, # foo + name="test3", + description="test project #3 with a very long description", + hook_token="aaabbbeeefff", + ) + self.session.add(item) + self.session.commit() + + # Add admin group + item = pagure.lib.model.PagureGroup( + group_name="admin", + group_type="admin", + user_id=1, # pingou + display_name="admin", + description="Admin Group", + ) + self.session.add(item) + self.session.commit() + + # Add foo to admin group + item = pagure.lib.model.PagureUserGroup( + user_id=2, group_id=1 # foo # admin group + ) + self.session.add(item) + self.session.commit() + + user = tests.FakeUser(username="foo") + with tests.user_set(self.app.application, user): + output = self.app.get("/dashboard/projects") + self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) + self.assertIn( + '

My Projects

\n' + ' 1 Projects\n', + output_text, + ) + if __name__ == "__main__": unittest.main(verbosity=2) From dd2cf24d1fc45e8798989c0b1fc089bff8458e35 Mon Sep 17 00:00:00 2001 From: Julen Landa Alustiza Date: Dec 04 2019 10:20:05 +0000 Subject: [PATCH 2/2] ui/app: just append groups to groups list when we actually get groups from the db query --- diff --git a/pagure/ui/app.py b/pagure/ui/app.py index 697c148..563e830 100644 --- a/pagure/ui/app.py +++ b/pagure/ui/app.py @@ -159,11 +159,11 @@ def userdash_projects(): groups = [] for group in user.groups: - groups.append( - pagure.lib.query.search_groups( - flask.g.session, group_name=group, group_type="user" - ) + group_obj = pagure.lib.query.search_groups( + flask.g.session, group_name=group, group_type="user" ) + if group_obj: + groups.append(group_obj) acl = flask.request.args.get("acl", "").strip().lower() or None search_pattern = flask.request.args.get("search_pattern", None)