Skip to content

lilei0311/github-environment-test-suite

Repository files navigation

GitHub环境测试套件

一个用于全面测试GitHub权限和功能完整性的自动化工具。

🎯 功能特性

📋 环境检查

  • Git客户端版本和配置
  • 网络连接性(GitHub API)
  • 必要工具(curl, jq, git)
  • GitHub CLI (gh) 可用性

🔐 Token权限验证

  • Token有效性检查
  • 用户身份验证
  • 权限范围分析
  • 过期时间检测

🚀 GitHub API测试

  • REST API访问测试
  • GraphQL API访问测试
  • 速率限制检查
  • 错误处理验证

📁 仓库操作测试

  • 创建/删除仓库
  • 推送/拉取代码
  • 分支管理
  • 标签操作

🔧 GitHub功能测试

  • Issues创建和管理
  • Pull Requests流程
  • GitHub Actions执行
  • Webhooks配置
  • 仓库设置访问

📊 权限范围检查

  • 验证拥有的仓库权限
  • 组织访问权限
  • 团队权限
  • 安装权限(Github Apps)

🚀 快速开始

前置要求

  1. GitHub Personal Access Token(需要以下权限):
    • repo(全部权限)
    • admin:org(只读)
    • user
    • project
    • notifications
    • gist
    • workflow

设置环境变量

export GITHUB_TOKEN="your_personal_access_token"

运行测试

# 完整测试
./test_github_environment.sh

# 仅运行特定测试
./test_github_environment.sh --test api
./test_github_environment.sh --test git
./test_github_environment.sh --test permissions

# 生成详细报告
./test_github_environment.sh --report

📁 项目结构

testing/
├── test_github_environment.sh    # 主测试脚本
├── config/
│   └── test_config.json          # 测试配置
├── modules/
│   ├── env_check.sh              # 环境检查模块
│   ├── token_test.sh             # Token测试模块
│   ├── api_test.sh               # API测试模块
│   ├── git_test.sh               # Git操作测试模块
│   ├── repo_test.sh              # 仓库功能测试模块
│   └── permissions_test.sh       # 权限范围测试模块
├── logs/
│   ├── test_results.json         # JSON格式测试结果
│   ├── detailed_report.md        # 详细Markdown报告
│   └── error_log.txt             # 错误日志
└── examples/
    └── sample_test_output.txt    # 示例输出

🔧 测试模块详解

1. 环境检查 (env_check.sh)

  • 检查Git版本和配置
  • 验证网络连接到GitHub
  • 检查必要工具是否安装
  • 测试GitHub CLI可用性

2. Token验证 (token_test.sh)

  • 验证Token格式和有效性
  • 获取用户信息
  • 检查Token权限范围
  • 验证过期时间

3. API测试 (api_test.sh)

  • REST API端点测试
  • GraphQL查询测试
  • 速率限制检查
  • 错误响应处理

4. Git操作测试 (git_test.sh)

  • 克隆仓库
  • 提交更改
  • 推送/拉取操作
  • 分支和标签管理
  • 冲突处理

5. 仓库功能测试 (repo_test.sh)

  • 创建/删除测试仓库
  • Issues生命周期
  • Pull Requests流程
  • GitHub Actions工作流
  • Webhooks管理

6. 权限范围测试 (permissions_test.sh)

  • 验证对不同资源的访问权限
  • 检查组织权限
  • 验证团队访问
  • 测试GitHub Apps权限

📊 测试报告

测试完成后生成以下报告:

JSON格式结果

{
  "summary": {
    "total_tests": 42,
    "passed": 38,
    "failed": 4,
    "success_rate": 90.48
  },
  "environment": {
    "git_version": "2.39.0",
    "github_cli_installed": true
  },
  "token": {
    "valid": true,
    "username": "your-username",
    "scopes": ["repo", "user", "workflow"]
  },
  "permissions": {
    "repositories": {
      "create": true,
      "delete": true
    },
    "organizations": {
      "read": true,
      "write": false
    }
  }
}

Markdown报告

包含:

  • 执行摘要
  • 详细测试结果
  • 建议和修复步骤
  • 下一步操作

🔒 安全注意事项

  1. Token安全:测试完成后会自动清理Token痕迹
  2. 测试仓库:所有创建的测试仓库都会在测试完成后删除
  3. 数据隐私:所有测试数据都是临时的,不会保留敏感信息
  4. 权限最小化:测试仅使用必要的权限,不会过度请求

🛠️ 故障排除

常见问题和解决方案

Token无效

❌ Token validation failed: Bad credentials

解决:重新生成Token,确保包含所有必要权限

网络连接问题

❌ Cannot connect to GitHub API

解决:检查网络连接,确保可访问api.github.com

权限不足

❌ Insufficient permissions for repository creation

解决:重新生成Token,确保包含repo完整权限

GitHub CLI未安装

⚠️ GitHub CLI (gh) not installed

解决:安装GitHub CLI或跳过相关测试

📈 扩展和自定义

添加自定义测试

  1. modules/目录创建新的测试脚本
  2. 在主脚本中注册新的测试模块
  3. 更新配置文件和报告生成

调整测试参数

编辑config/test_config.json

{
  "test_repository": "github-env-test-temp",
  "cleanup": true,
  "verbose": false,
  "timeout_seconds": 30
}

🤝 贡献

欢迎提交问题和拉取请求!

📄 许可证

MIT


注意:此项目仅用于测试目的,请勿用于生产环境。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages