oauth-db-cli 0.1.0

Command-line tool for managing OAuth-DB platform
Documentation
# OAuth-DB CLI 测试文档

## 测试概览

OAuth-DB CLI 包含全面的端到端(E2E)测试套件,确保所有功能正常工作。

### 测试统计

- **总测试数**: 23 个
- **通过**: 19 个
- **忽略**: 4 个(需要真实后端服务器)
- **测试文件**: 3 个

## 测试分类

### 1. 认证测试 (e2e_auth.rs)

测试用户认证和账户管理功能。

#### 已实现的测试

- `test_logout_success` - 测试登出功能
-`test_whoami_not_logged_in` - 测试未登录时的 whoami 命令
-`test_accounts_list` - 测试账户列表显示
-`test_accounts_list_empty` - 测试空账户列表
-`test_accounts_switch` - 测试账户切换
-`test_accounts_switch_not_found` - 测试切换到不存在的账户
-`test_accounts_remove` - 测试删除账户
-`test_accounts_remove_not_found` - 测试删除不存在的账户
-`test_multiple_accounts_workflow` - 测试多账户工作流
-`test_account_persistence` - 测试账户持久化

#### 需要后端服务器的测试(已忽略)

- 🔶 `test_login_success` - 测试成功登录
- 🔶 `test_whoami` - 测试 whoami 命令
- 🔶 `test_login_invalid_credentials` - 测试无效凭证登录
- 🔶 `test_login_custom_server` - 测试自定义服务器登录

### 2. 基础功能测试 (e2e_basic.rs)

测试 CLI 的基本命令和帮助信息。

- `test_version` - 测试版本显示
-`test_help` - 测试帮助信息
-`test_invalid_command` - 测试无效命令处理
-`test_user_help` - 测试用户命令帮助
-`test_user_create_help` - 测试用户创建帮助
-`test_app_help` - 测试应用命令帮助
-`test_app_create_help` - 测试应用创建帮助
-`test_admin_help` - 测试管理员命令帮助

### 3. 配置管理测试 (e2e_config.rs)

测试配置文件的读写和管理。

- `test_config_list_default` - 测试列出默认配置
-`test_config_get_server_url` - 测试获取服务器 URL
-`test_config_set_output_format` - 测试设置输出格式
-`test_config_reset` - 测试重置配置
-`test_config_get_nonexistent_key` - 测试获取不存在的配置键

## 运行测试

### 运行所有测试

```bash
cargo test -p oauth-db-cli
```

### 运行特定测试文件

```bash
# 认证测试
cargo test --test e2e_auth

# 基础功能测试
cargo test --test e2e_basic

# 配置管理测试
cargo test --test e2e_config
```

### 运行单个测试

```bash
cargo test --test e2e_auth test_accounts_list
```

### 包含被忽略的测试

```bash
# 需要先启动后端服务器
cargo test --test e2e_auth -- --ignored
```

## 测试架构

### 测试隔离

- **配置隔离**: 认证测试使用全局互斥锁 (`CONFIG_LOCK`) 确保测试不会相互干扰
- **串行执行**: 使用 `#[serial]` 标记确保测试按顺序执行
- **配置备份**: 每个测试前备份现有配置,测试后恢复

### 测试辅助工具

#### TestContext (helpers.rs)

提供测试环境管理:
- 创建临时测试目录
- 生成测试配置文件
- 管理测试账户
- 自动清理

#### 配置管理函数

- `get_real_config_dir()` - 获取真实配置目录
- `backup_config()` - 备份现有配置
- `restore_config()` - 恢复配置

## 测试覆盖范围

### 已覆盖的功能

✅ 用户认证(登录/登出)
✅ 账户管理(列表/切换/删除)
✅ 配置管理(读取/设置/重置)
✅ 命令行界面(帮助/版本)
✅ 错误处理(无效命令/不存在的资源)
✅ 多账户支持
✅ 配置持久化

### 待添加的测试

- 应用管理测试(创建/列表/删除应用)
- 用户管理测试(创建/列表/删除用户)
- 平台管理测试(创建/列表/删除平台)
- 输出格式测试(JSON/YAML/表格)
- 颜色输出测试
- 日志级别测试

## 持续集成

测试可以在 CI/CD 环境中运行:

```bash
# 只运行不需要后端的测试
cargo test -p oauth-db-cli

# 如果有后端服务器,运行所有测试
cargo test -p oauth-db-cli -- --include-ignored
```

## 故障排查

### 测试失败:配置文件冲突

如果测试失败并提示配置文件问题:

1. 确保没有其他测试同时运行
2. 检查配置目录权限
3. 手动清理配置目录:`rm -rf ~/.config/oauth-db-cli/`

### 测试超时

某些测试可能需要更长时间:

```bash
cargo test -p oauth-db-cli -- --test-threads=1
```

## 贡献指南

添加新测试时:

1. 在适当的测试文件中添加测试函数
2. 使用 `#[tokio::test]``#[serial]` 标记
3. 如果需要后端服务器,添加 `#[ignore]` 标记
4. 使用 `CONFIG_LOCK` 保护配置文件访问
5. 确保测试后清理资源
6. 更新本文档

## 测试最佳实践

1. **独立性**: 每个测试应该独立运行,不依赖其他测试
2. **清理**: 测试后清理所有创建的资源
3. **明确性**: 测试名称应清楚描述测试内容
4. **完整性**: 测试应验证所有相关的输出和副作用
5. **可维护性**: 使用辅助函数减少重复代码