コード例 #1
0
def main():
    """
    Manage a SonarQube's groups, using a
    SonarAPIHandler connected to the given host.
    """
    options = parser.parse_args()
    h = SonarAPIHandler(host=options.host,
                        port=options.port,
                        user=options.user,
                        password=options.password,
                        token=options.authtoken,
                        base_path=options.basepath)

    if options.command == 'list':
        groups = h.get_groups(options.fields, options.query).json()
        table = PrettyTable(
            ['ID', 'Name', 'Description', 'Members', 'Default'])
        for group in groups['groups']:
            table.add_row([
                group.get('id'),
                group.get('name'),
                group.get('description'),
                group.get('membersCount'),
                group.get('default')
            ])
        print(table)
    elif options.command == 'create':
        res = h.create_group(options.name, options.description).json()
        print(res['group'])
    elif options.command == 'update':
        res = h.update_group(options.gid, options.name,
                             options.description).json()
        print(res['group'])
    elif options.command == 'delete':
        res = h.delete_group(options.gid, options.name)
        if res.status_code == 204:
            print("Group was successfully deleted")
        else:
            print("Error[%s] %s" % (res.status_code, res.reason))
    elif options.command == 'add-user':
        res = h.add_user_group(options.login, options.gid, options.name)
        if res.status_code == 204:
            print("User was successfully added")
        else:
            print("Error[%s] %s" % (res.status_code, res.reason))
    elif options.command == 'remove-user':
        res = h.remove_user_group(options.login, options.gid, options.name)
        if res.status_code == 204:
            print("User was successfully removed")
        else:
            print("Error[%s] %s" % (res.status_code, res.reason))
    elif options.command == 'list-users':
        users = h.get_group_users(options.gid, options.name,
                                  options.query).json()
        table = PrettyTable(['Login', 'Name'])
        for user in users['users']:
            table.add_row([user['login'], user['name']])
        print(table)
コード例 #2
0
class GroupsTest(TestCase):
    def setUp(self):
        self.host = 'http://localhost'
        self.port = '9000'
        self.user = '******'
        self.password = '******'
        self.test_group = str(uuid.uuid1())
        username = str(uuid.uuid1())
        self.sonar = SonarAPIHandler(user=self.user, password=self.password)
        self.test_user = self.sonar.create_user(
            username, 'qwerty', username,
            "{}@example.com".format(username)).json().get('user')

    # List
    @mock.patch('sonarqube_api.cmd.users.argparse.ArgumentParser.parse_args')
    def test_cmd_list_groups(self, parse_mock):
        parse_mock.return_value = argparse.Namespace(host=self.host,
                                                     port=self.port,
                                                     user=self.user,
                                                     password=self.password,
                                                     authtoken=None,
                                                     basepath=None,
                                                     command='list',
                                                     fields=None,
                                                     query=None)
        groups.main()

    # Create
    @mock.patch('sonarqube_api.cmd.users.argparse.ArgumentParser.parse_args')
    def test_cmd_create_group(self, parse_mock):
        parse_mock.return_value = argparse.Namespace(host=self.host,
                                                     port=self.port,
                                                     user=self.user,
                                                     password=self.password,
                                                     authtoken=None,
                                                     basepath=None,
                                                     command='create',
                                                     name=self.test_group,
                                                     description=None)
        groups.main()

    # Update and delete
    @mock.patch('sonarqube_api.cmd.users.argparse.ArgumentParser.parse_args')
    def test_cmd_update_delete_group(self, parse_mock):
        res = self.sonar.create_group(str(uuid.uuid1())).json()
        parse_mock.return_value = argparse.Namespace(
            host=self.host,
            port=self.port,
            user=self.user,
            password=self.password,
            authtoken=None,
            basepath=None,
            command='update',
            gid=res['group']['id'],
            name=None,
            description='Awesome group')
        groups.main()

        parse_mock.return_value = argparse.Namespace(host=self.host,
                                                     port=self.port,
                                                     user=self.user,
                                                     password=self.password,
                                                     authtoken=None,
                                                     basepath=None,
                                                     command='delete',
                                                     gid=res['group']['id'],
                                                     name=None)
        groups.main()

    # Add and remove user
    @mock.patch('sonarqube_api.cmd.users.argparse.ArgumentParser.parse_args')
    def test_cmd_add_remove_user_group(self, parse_mock):
        res = self.sonar.create_group(str(uuid.uuid1())).json()
        parse_mock.return_value = argparse.Namespace(
            host=self.host,
            port=self.port,
            user=self.user,
            password=self.password,
            authtoken=None,
            basepath=None,
            command='add-user',
            login=self.test_user['login'],
            name=res['group']['name'],
            gid=None)
        groups.main()

        parse_mock.return_value = argparse.Namespace(
            host=self.host,
            port=self.port,
            user=self.user,
            password=self.password,
            authtoken=None,
            basepath=None,
            command='remove-user',
            login=self.test_user['login'],
            name=res['group']['name'],
            gid=None)
        groups.main()
        self.sonar.delete_group(name=res['group']['name'])

    # List users
    @mock.patch('sonarqube_api.cmd.users.argparse.ArgumentParser.parse_args')
    def test_cmd_list_users_group(self, parse_mock):
        res = self.sonar.create_group(str(uuid.uuid1())).json()
        self.sonar.add_user_group(self.test_user['login'],
                                  name=res['group']['name'])
        parse_mock.return_value = argparse.Namespace(host=self.host,
                                                     port=self.port,
                                                     user=self.user,
                                                     password=self.password,
                                                     authtoken=None,
                                                     basepath=None,
                                                     command='list-users',
                                                     name=res['group']['name'],
                                                     gid=None,
                                                     query=None)
        groups.main()
        self.sonar.delete_group(name=res['group']['name'])