diff --git a/ceo/tui/controllers/SearchGroupController.py b/ceo/tui/controllers/SearchGroupController.py index 98bb49d..171bc88 100644 --- a/ceo/tui/controllers/SearchGroupController.py +++ b/ceo/tui/controllers/SearchGroupController.py @@ -26,8 +26,8 @@ class SearchGroupController(SyncRequestController): def group_info_callback(self, button, cn): self.model.name = cn - self.model.want_info = True; - self.request_in_progress = False; + self.model.want_info = True + self.request_in_progress = False self.on_next_button_pressed(button) def on_next_button_pressed(self, button): diff --git a/ceo/tui/views/SearchGroupResponseView.py b/ceo/tui/views/SearchGroupResponseView.py index cae8bea..627e905 100644 --- a/ceo/tui/views/SearchGroupResponseView.py +++ b/ceo/tui/views/SearchGroupResponseView.py @@ -2,7 +2,6 @@ import urwid from .ColumnResponseView import ColumnResponseView from .utils import decorate_button -from ceo.tui.models import GetGroupModel class SearchGroupResponseView(ColumnResponseView): @@ -10,9 +9,9 @@ class SearchGroupResponseView(ColumnResponseView): super().__init__(model, controller, app) matches = self.model.resp_json.copy() - rows = [ (urwid.Text(resp), - decorate_button(urwid.Button('more info', on_press=self.create_callback(resp)))) - for resp in matches if resp != ''] + rows = [(urwid.Text(resp), + decorate_button(urwid.Button('more info', on_press=self.create_callback(resp)))) + for resp in matches if resp != ''] self.set_rows(rows, on_next=self.controller.get_next_menu_callback('Welcome')) diff --git a/tests/ceod/api/test_groups.py b/tests/ceod/api/test_groups.py index 67388ea..38d79f9 100644 --- a/tests/ceod/api/test_groups.py +++ b/tests/ceod/api/test_groups.py @@ -111,6 +111,61 @@ def test_api_add_member_to_group(client, create_group_result, ldap_user): assert data['members'] == [] +@pytest.fixture(scope='module') +def create_random_names(): + # 20 random names generated using this website: https://randomwordgenerator.com/ + random_names = [ + "inspiration", + "at", + "pneumonia", + "vision", + "infrastructure", + "ceremony", + "plastic", + "ambition", + "brain", + "iron", + "world", + "overlook", + "pledge", + "discreet", + "glide", + "brilliance", + "meet", + "hobby", + "applaud", + "frighten", + ] + yield random_names + + +@pytest.fixture(scope='module') +def create_searchable_groups(client, create_random_names): + random_names = create_random_names + for name in random_names: + status, data = client.post('/api/groups', json={ + 'cn': name, + 'description': 'Groups with distinct names for testing searching', + }) + assert status == 200 + assert data[-1]['status'] == 'completed' + yield random_names + + +def test_api_group_search(client, create_searchable_groups): + cns = create_searchable_groups + for i, cn in enumerate(cns): + status, data = client.get(f'/api/groups/search/{cn}/{i + 1}') + assert status == 200 + assert data[0] == cn + assert len(data) == (i + 1) + + for cn in cns: + status, data = client.delete(f'/api/groups/{cn}') + assert status == 200 + assert data[-1]['status'] == 'completed' + + def test_api_group_auxiliary(cfg, client, ldap_user, g_admin_ctx): # Make sure that syscom has auxiliary mailing lists and groups # defined in ceod_test_local.ini.