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)
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'])