def add_users(self, users: List[User]): """ Add a list of users to a group :param users: List of User objects """ user_ids = [user.id for user in users] GsGroupsApi.add_users_to_group(group_id=self.id, user_ids=user_ids) _logger.info(f'Users added to "{self.name}".')
def delete_users(self, users: List[User]): """ Remove a list of users to a group :param users: List of User objects """ user_ids = [user.id for user in users] GsGroupsApi.delete_users_from_group(group_id=self.id, user_ids=user_ids) _logger.info(f'Users removed from "{self.name}".')
def get_many(cls, group_ids: List[str] = None, names: List[str] = None): """ Resolve requested parameters into a list of Group objects :param group_ids: Group's unique GS Marquee IDs :param names: Group's names :return: A list of Group objects that corresponds to requested parameters """ group_ids = group_ids if group_ids else [] names = names if names else [] if not group_ids + names: return [] group_ids = [ id_[6:] if id_.startswith('group:') else id_ for id_ in group_ids ] results = GsGroupsApi.get_groups(ids=group_ids, names=names) all_groups = [] for group in results: all_groups.append( Group(group_id=group.id, name=group.name, entitlements=Entitlements.from_target(group.entitlements) if group.entitlements else None, description=group.description, tags=group.tags)) return all_groups
def save(self): """ If the group id already exists in Marquee, update it. If not, create a new Marquee Group """ if self._group_exists(): _logger.info(f'Updating group "{self.id}"') result = GsGroupsApi.update_group(group_id=self.id, group=self.to_target()) else: _logger.info(f'Creating group "{self.id}"') result = GsGroupsApi.create_group(group=self.to_target()) return Group(group_id=result.id, name=result.name, entitlements=Entitlements.from_target(result.entitlements) if result.entitlements else None if result.entitlements else None, description=result.description, tags=result.tags)
def test_create_group(mocker): target_group = TargetGroup.from_dict({ "name": "Fake Group", "id": "id123", "createdById": "3563ed98a93f44c0a016fed2e5c8ce9d", "lastUpdatedById": "3563ed98a93f44c0a016fed2e5c8ce9d", "ownerId": "3563ed98a93f44c0a016fed2e5c8ce9d", "createdTime": "2020-05-22T10:57:40.449-04:00", "lastUpdatedTime": "2020-05-22T10:57:40.449-04:00" }) # mock GsSession mocker.patch.object(GsSession.__class__, 'default_value', return_value=GsSession.get(Environment.QA, 'client_id', 'secret')) mocker.patch.object(GsSession.current, '_post', return_value=target_group) # run test response = GsGroupsApi.create_group(target_group) GsSession.current._post.assert_called_with('/groups', target_group, cls=TargetGroup) assert response.name == 'Fake Group'
def test_get_groups(mocker): mock_response = { "totalResults": 1, "results": [{ "name": "GSOE Real Time Sync - gsoe.c3e2418dcfd0c6590134deb4caa9b7d65a92a4a761cf20436298560a9ed410a0", "id": "gsoe.c3e2418dcfd0c6590134deb4caa9b7d65a92a4a761cf20436298560a9ed410a0", "createdById": "3563ed98a93f44c0a016fed2e5c8ce9d", "lastUpdatedById": "3563ed98a93f44c0a016fed2e5c8ce9d", "ownerId": "3563ed98a93f44c0a016fed2e5c8ce9d", "createdTime": "2020-05-22T10:57:40.449-04:00", "lastUpdatedTime": "2020-05-22T10:57:40.449-04:00" }] } # mock GsSession mocker.patch.object(GsSession.__class__, 'default_value', return_value=GsSession.get(Environment.QA, 'client_id', 'secret')) mocker.patch.object(GsSession.current, '_get', return_value=mock_response) # run test response = GsGroupsApi.get_groups(ids=['id1', 'id2'], names=['name1'], tags=['tag1'], limit=1) GsSession.current._get.assert_called_with( '/groups?limit=1&offset=0&id=id1&id=id2&name=name1&tags=tag1', cls=TargetGroup) assert len(response) == 1
def get_users(self) -> List[User]: """ Get a list of all users in this group """ users = GsGroupsApi.get_users_in_group(self.id) return [User(user_id=user.get('id'), name=user.get('name'), email=user.get('email'), company=user.get('company')) for user in users]
def get(cls, group_id: str): """ Resolve a group ID into a single Group object :param group_id: Group's unique GS Marquee ID :return: A Group object that corresponds to requested ID """ group_id = group_id[6:] if group_id and group_id.startswith('group:') else group_id result = GsGroupsApi.get_group(group_id=group_id) return Group(group_id=result.id, name=result.name, entitlements=Entitlements.from_target(result.entitlements) if result.entitlements else None if result.entitlements else None, description=result.description, tags=result.tags)
def delete(self): """ Delete this group from Marquee """ GsGroupsApi.delete_group(self.id) _logger.info(f'Group "{self.id}" deleted from Marquee.')