import os import gitlab from dotenv import load_dotenv def setup_test_project(): load_dotenv() gl = gitlab.Gitlab("https://gitlab.com", private_token=os.getenv("GITLAB_TOKEN")) gl.auth() project_name = "context-brain-test" # Check if project exists projects = gl.projects.list(get_all=False) target_project = next((p for p in projects if p.name == project_name), None) if not target_project: print(f"[*] Creating new project: {project_name}") target_project = gl.projects.create({'name': project_name}) else: print(f"[*] Using existing project: {project_name} (ID: {target_project.id})") # Ensure project has some content try: target_project.files.get(file_path='README.md', ref='main') except: print("[*] Initializing repository with README.md") target_project.files.create({ 'file_path': 'README.md', 'branch': 'main', 'content': '# Context Brain Test Project\nThis is a dummy project for testing the GitLab Context Brain.', 'commit_message': 'Initial commit' }) # Create a new branch and a file for the MR branch_name = "feature/test-mr" try: target_project.branches.create({'branch': branch_name, 'ref': 'main'}) except: pass # Branch might already exist try: target_project.files.create({ 'file_path': 'vuln_example.py', 'branch': branch_name, 'content': 'def handler(event):\n print("Processing event...")\n # Potential SQL Injection point\n query = f"SELECT * FROM users WHERE id = {event.get(\'id\')}"\n return query\n', 'commit_message': 'Add dummy code with potential issues' }) except: target_project.files.update({ 'file_path': 'vuln_example.py', 'branch': branch_name, 'content': 'def handler(event):\n print("Processing event...")\n # Potential SQL Injection point\n query = f"SELECT * FROM users WHERE id = {event.get(\'id\')}"\n return query\n', 'commit_message': 'Update dummy code' }) # Create Merge Request mr = target_project.mergerequests.create({ 'source_branch': branch_name, 'target_branch': 'main', 'title': 'Feature: Add dummy processing logic', 'description': 'This MR adds some basic processing logic and needs context brain analysis.' }) print(f"✅ Success! Created MR IID: {mr.iid} in Project ID: {target_project.id}") print(f"🔗 MR URL: {mr.web_url}") return target_project.id, mr.iid if __name__ == "__main__": setup_test_project()