cloud-disk-sync 0.1.0

a cloud disk sync tool
Documentation
# WebDAV Provider 集成测试


## 测试设计说明


本测试采用**内存模拟WebDAV服务器**的方式,完全不依赖外部服务,具有以下优势:

### 设计特点


1. **零外部依赖**:使用 `warp` 框架在内存中模拟完整的 WebDAV 服务器
2. **快速可靠**:测试在毫秒级完成,不受网络影响
3. **隔离性好**:每个测试独立启动自己的服务器实例
4. **完整覆盖**:测试所有 WebDAV 核心操作

### 测试架构


```
┌─────────────────────┐
│  Integration Test   │
└──────────┬──────────┘
┌─────────────────────┐
│  WebDavProvider     │  (被测试的实现)
└──────────┬──────────┘
           │ HTTP
┌─────────────────────┐
│ Mock WebDAV Server  │  (使用 warp 实现)
│  (In-Memory)        │
└─────────────────────┘
```

### 模拟服务器实现


模拟服务器支持以下 WebDAV 方法:

- **PROPFIND**:列出文件和目录
- **PUT**:上传文件
- **GET**:下载文件  
- **DELETE**:删除文件/目录
- **MKCOL**:创建目录

## 测试用例列表


### 1. 基础功能测试 (`webdav_basic_test.rs`)


- `test_webdav_provider_creation`:测试正确创建 provider
-`test_webdav_provider_missing_credentials`:测试缺少凭证时的错误处理

### 2. 完整集成测试 (`webdav_integration_test.rs`)


#### 文件操作

- `test_webdav_upload_and_download`:上传下载基本流程
-`test_webdav_delete`:文件删除功能
-`test_webdav_upload_multiple_files`:批量上传
-`test_webdav_large_file_transfer`:大文件传输(1MB)

#### 目录操作

- `test_webdav_mkdir_and_list`:创建目录和列表查询
-`test_webdav_exists`:文件存在性检查

#### 高级功能

- `test_webdav_concurrent_operations`:并发操作测试
-`test_webdav_error_handling`:错误处理测试

## 运行测试


### 运行所有 WebDAV 测试

```bash
cargo test webdav
```

### 运行基础测试

```bash
cargo test --test webdav_basic_test
```

### 运行集成测试

```bash
cargo test --test webdav_integration_test
```

### 运行特定测试并显示输出

```bash
cargo test test_webdav_upload_and_download -- --nocapture
```

### 并行运行测试

```bash
cargo test webdav -- --test-threads=4
```

## 测试覆盖的场景


### 正常场景

- ✅ 上传小文件(< 1KB)
- ✅ 上传大文件(1MB)
- ✅ 下载文件并验证内容
- ✅ 创建多级目录
- ✅ 列出目录内容
- ✅ 删除文件和目录
- ✅ 并发上传10个文件

### 异常场景

- ✅ 下载不存在的文件
- ✅ 检查不存在的路径
- ✅ 缺少认证信息
- ✅ 重复创建目录

## 测试数据管理


所有测试使用系统临时目录 (`std::env::temp_dir()`) 存储测试文件,测试结束后自动清理:

```rust
let temp_dir = std::env::temp_dir();
let test_file = temp_dir.join("test.txt");
// ... 测试逻辑
tokio::fs::remove_file(&test_file).await.ok();
```

## 性能基准


在现代硬件上的典型测试性能:

- 单个文件上传/下载:< 10ms
- 并发10个文件操作:< 100ms
- 1MB文件传输:< 50ms
- 完整测试套件:< 1s

## 扩展测试


如需测试真实 WebDAV 服务器,可以:

1. 启动本地 WebDAV 服务器(如 nginx + webdav 模块)
2. 配置环境变量:
   ```bash
   export WEBDAV_TEST_URL=http://localhost:8080/dav

   export WEBDAV_TEST_USER=testuser

   export WEBDAV_TEST_PASS=testpass

   ```
3. 运行真实环境测试:
   ```bash
   cargo test webdav_real -- --ignored

   ```

## 依赖说明


测试依赖(dev-dependencies):
- `warp = "0.3"`:用于模拟 HTTP 服务器
- `bytes = "1.5"`:字节处理

这些依赖仅在测试时使用,不会影响生产代码。