Skip to content

Commit ba08200

Browse files
committed
test: добавлены тесты для HTTP Proxy и Forward Proxy
- Добавлены тесты для handleHTTPProxy (различные HTTP методы, заголовки, ошибки) - Добавлены edge cases тесты для spoolBody - Добавлены тесты для handleHTTPForwardRequest - Добавлены тесты для handleHTTPForwardWebSocket - Добавлены тесты для handleConnectTunnel - Добавлены тесты для handleConnectMITM - Создан общий файл http_test_helpers.go с вспомогательными типами
1 parent 9704555 commit ba08200

23 files changed

+6176
-33
lines changed

TEST_COVERAGE_PLAN.md

Lines changed: 207 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,207 @@
1+
# План улучшения покрытия тестами до 71%
2+
3+
**Текущее покрытие:** 65.9%
4+
**Целевое покрытие:** 71%
5+
**Необходимо добавить:** ~5.1%
6+
7+
## Агент 1: HTTP API Handlers (Script Handlers & Router)
8+
9+
### Цель: Улучшить покрытие HTTP API handlers с фокусом на script handlers и router
10+
11+
### Файлы для работы:
12+
- `internal/infrastructure/httpapi/script_handlers.go`
13+
- `ExportScriptAsZip` (65.4%) - добавить тесты для ошибок создания ZIP файлов
14+
- `DownloadProject` (70.6%) - добавить тесты для edge cases
15+
- `DeleteScript` (75.0%) - добавить тесты для ошибок удаления
16+
17+
- `internal/infrastructure/httpapi/router.go`
18+
- `buildBaseMux` (61.8%) - добавить тесты для различных маршрутов и middleware
19+
20+
### Задачи:
21+
1. Добавить тесты для `ExportScriptAsZip`:
22+
- Тест с пустым скриптом (без sourceCode и dependencies)
23+
- Тест с большим количеством зависимостей
24+
- Тест с различными типами языков
25+
26+
2. Добавить тесты для `DownloadProject`:
27+
- Тест со скриптом без sourceCode
28+
- Тест со скриптом без dependencies
29+
- Тест с большим количеством файлов
30+
31+
3. Добавить тесты для `buildBaseMux`:
32+
- Тест регистрации всех маршрутов
33+
- Тест middleware цепочки
34+
- Тест обработки ошибок маршрутизации
35+
36+
### Ожидаемый прирост покрытия: ~1.2-1.5%
37+
38+
---
39+
40+
## Агент 2: Scripting Infrastructure (Compilers & Downloaders)
41+
42+
### Цель: Улучшить покрытие компиляторов и загрузчиков скриптов
43+
44+
### Файлы для работы:
45+
- `internal/features/scripting/infrastructure/compilers/rust.go`
46+
- `Compile` (53.5%) - добавить тесты для различных сценариев компиляции
47+
- `OptimizeWASM` (28.6%) - добавить тесты для оптимизации WASM
48+
49+
- `internal/features/scripting/infrastructure/compilers/swift.go`
50+
- `Compile` (52.3%) - добавить тесты для компиляции Swift
51+
- `ValidateSyntax` (14.3%) - добавить тесты для валидации синтаксиса
52+
53+
- `internal/features/scripting/infrastructure/compilers/kotlin.go`
54+
- `Compile` (61.8%) - добавить тесты для компиляции Kotlin
55+
- `ValidateSyntax` (22.6%) - добавить тесты для валидации синтаксиса
56+
57+
- `internal/features/scripting/infrastructure/compilers/zig.go`
58+
- `Compile` (58.6%) - добавить тесты для компиляции Zig
59+
- `ValidateSyntax` (16.7%) - добавить тесты для валидации синтаксиса
60+
61+
- `internal/features/scripting/infrastructure/downloaders/base.go`
62+
- `attemptDownload` (71.2%) - добавить тесты для retry логики
63+
- `ExtractTarXz` (73.5%) - добавить тесты для извлечения архивов
64+
- `ExtractTarGz` (74.3%) - добавить тесты для извлечения архивов
65+
- `ExtractZip` (71.4%) - добавить тесты для извлечения ZIP
66+
67+
### Задачи:
68+
1. Добавить тесты для компиляторов:
69+
- Тесты успешной компиляции с различными входными данными
70+
- Тесты обработки ошибок компиляции
71+
- Тесты валидации синтаксиса с невалидным кодом
72+
- Тесты для `OptimizeWASM` с различными входными WASM файлами
73+
74+
2. Добавить тесты для downloaders:
75+
- Тесты retry логики при ошибках загрузки
76+
- Тесты извлечения различных типов архивов
77+
- Тесты обработки поврежденных архивов
78+
- Тесты обработки сетевых ошибок
79+
80+
### Ожидаемый прирост покрытия: ~1.3-1.6%
81+
82+
---
83+
84+
## Агент 3: HTTP Proxy & Forward Proxy Handlers
85+
86+
### Цель: Улучшить покрытие proxy handlers и forward proxy функциональности
87+
88+
### Файлы для работы:
89+
- `internal/infrastructure/httpapi/httpproxy.go`
90+
- `handleHTTPProxy` (58.2%) - добавить тесты для различных сценариев проксирования
91+
- `spoolBody` (75.0%) - добавить тесты для edge cases
92+
93+
- `internal/infrastructure/httpapi/forwardproxy.go`
94+
- `handleForwardProxy` (62.5%) - добавить тесты для forward proxy
95+
- `handleHTTPForwardRequest` (45.4%) - добавить тесты для HTTP forward requests
96+
- `handleHTTPForwardWebSocket` (15.4%) - добавить тесты для WebSocket forwarding
97+
- `handleConnectTunnel` (43.3%) - добавить тесты для CONNECT туннелирования
98+
- `handleConnectMITM` (2.9%) - добавить тесты для MITM CONNECT
99+
100+
- `internal/infrastructure/httpapi/intercept_codec.go`
101+
- `encodeForIntercept` (66.7%) - добавить тесты для кодирования данных
102+
103+
### Задачи:
104+
1. Добавить тесты для `handleHTTPProxy`:
105+
- Тесты проксирования различных HTTP методов
106+
- Тесты обработки заголовков
107+
- Тесты обработки тела запроса/ответа
108+
- Тесты обработки ошибок upstream сервера
109+
110+
2. Добавить тесты для forward proxy:
111+
- Тесты forward proxy для HTTP запросов
112+
- Тесты WebSocket forwarding
113+
- Тесты CONNECT туннелирования
114+
- Тесты MITM CONNECT (если возможно без реального сертификата)
115+
116+
3. Добавить тесты для intercept codec:
117+
- Тесты кодирования различных типов данных
118+
- Тесты обработки больших тел запросов/ответов
119+
120+
### Ожидаемый прирост покрытия: ~1.2-1.5%
121+
122+
---
123+
124+
## Агент 4: Process Detection & Scripting Executors
125+
126+
### Цель: Улучшить покрытие детекции процессов и executors для скриптов
127+
128+
### Файлы для работы:
129+
- `internal/features/process/infrastructure/detector/detector_darwin.go`
130+
- `DetectByPort` (50.0%) - добавить тесты для детекции процессов (если возможно без реальных процессов)
131+
132+
- `internal/features/scripting/infrastructure/dart/executor.go`
133+
- `NewDartExecutor` (62.5%) - добавить тесты для создания executor
134+
- `Execute` (13.8%) - добавить тесты для выполнения Dart скриптов
135+
- `Close` (60.0%) - добавить тесты для закрытия executor
136+
137+
- `internal/features/scripting/infrastructure/extism/executor.go`
138+
- `Execute` (58.1%) - добавить тесты для выполнения Extism скриптов
139+
140+
- `internal/features/scripting/infrastructure/cache/filesystem_cache.go`
141+
- `ClearAll` (69.2%) - добавить тесты для очистки кэша
142+
- `GetCacheSize` (68.8%) - добавить тесты для получения размера кэша
143+
144+
- `internal/features/proxy/infrastructure/persistence/repo.go`
145+
- `Load` (73.3%) - добавить тесты для загрузки proxy конфигурации
146+
147+
### Задачи:
148+
1. Добавить тесты для process detector (если возможно):
149+
- Тесты детекции процессов по порту (mock реализация)
150+
- Тесты обработки ошибок детекции
151+
152+
2. Добавить тесты для executors:
153+
- Тесты создания Dart executor с различными конфигурациями
154+
- Тесты выполнения Dart скриптов с различными входными данными
155+
- Тесты закрытия executor и очистки ресурсов
156+
- Тесты выполнения Extism скриптов
157+
158+
3. Добавить тесты для cache:
159+
- Тесты очистки кэша с различными состояниями
160+
- Тесты получения размера кэша с различными данными
161+
162+
4. Добавить тесты для proxy persistence:
163+
- Тесты загрузки конфигурации proxy
164+
- Тесты обработки ошибок загрузки
165+
166+
### Ожидаемый прирост покрытия: ~1.1-1.4%
167+
168+
---
169+
170+
## Общие рекомендации для всех агентов:
171+
172+
1. **Следовать принципам SOLID** - создавать качественные тесты, которые реально тестируют функциональность
173+
2. **Избегать платформо-зависимых тестов** - пропускать тесты, которые могут не работать на всех платформах
174+
3. **Использовать моки** - создавать mock реализации для зависимостей
175+
4. **Тестировать error paths** - покрывать не только happy path, но и обработку ошибок
176+
5. **Запускать тесты** - после добавления тестов запускать `go test` и проверять покрытие
177+
6. **Форматировать код** - всегда запускать `go fmt ./...` после изменений
178+
179+
## Команды для проверки прогресса:
180+
181+
```bash
182+
# Запустить тесты и получить покрытие
183+
go test -short -covermode=atomic -coverprofile=coverage.out $(go list ./... | grep -v /internal/integration | grep -v /internal/e2e)
184+
185+
# Проверить общее покрытие
186+
go tool cover -func=coverage.out | grep "total:" | awk '{print $3}'
187+
188+
# Проверить покрытие конкретного файла
189+
go tool cover -func=coverage.out | grep "script_handlers.go"
190+
191+
# Форматировать код
192+
go fmt ./...
193+
```
194+
195+
## Приоритеты:
196+
197+
1. **Высокий приоритет:** HTTP API handlers (Агент 1) - наибольший потенциал для улучшения
198+
2. **Высокий приоритет:** Scripting Infrastructure (Агент 2) - много файлов с низким покрытием
199+
3. **Средний приоритет:** Proxy Handlers (Агент 3) - сложные интеграционные тесты
200+
4. **Низкий приоритет:** Process Detection (Агент 4) - может быть сложно тестировать без реальных процессов
201+
202+
## Критерии завершения:
203+
204+
- Общее покрытие достигло 71% или выше
205+
- Все добавленные тесты проходят успешно
206+
- Код отформатирован (`go fmt`)
207+
- Нет новых linter ошибок

0 commit comments

Comments
 (0)