Exemplo n.º 1
0
 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}".')
Exemplo n.º 2
0
 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}".')
Exemplo n.º 3
0
    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
Exemplo n.º 4
0
 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)
Exemplo n.º 5
0
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'
Exemplo n.º 6
0
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
Exemplo n.º 7
0
 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]
Exemplo n.º 8
0
    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)
Exemplo n.º 9
0
 def delete(self):
     """
     Delete this group from Marquee
     """
     GsGroupsApi.delete_group(self.id)
     _logger.info(f'Group "{self.id}" deleted from Marquee.')