Add Helm unit tests for web-app chart #175

Merged
claude merged 1 commits from feat/helm-unittest into main 2026-02-19 16:44:26 +01:00
Owner

Summary

  • 6 test suites (32 tests) for web-app Helm chart
  • Covers: deployment, service, ingress, NetworkPolicy, HPA, PSS security
  • CI step added to pr-checks.yaml (helm unittest)
  • Runner image updated with helm v3.20.0 + helm-unittest v1.0.3

Test Suites

Suite Tests What it validates
Deployment 9 Replicas, image, ports, resources, probes, autoscaling, volumes
Security 5 PSS restricted: runAsNonRoot, seccomp, no-escalation, drop ALL, readOnly
Service 4 Kind, type, port, selectors
Ingress 5 Disabled/enabled, className, TLS on/off
NetworkPolicy 5 Policy types, ingress-nginx only, DNS+HTTPS egress
HPA 4 Disabled/enabled, scaling bounds, target ref
## Summary - 6 test suites (32 tests) for web-app Helm chart - Covers: deployment, service, ingress, NetworkPolicy, HPA, PSS security - CI step added to pr-checks.yaml (helm unittest) - Runner image updated with helm v3.20.0 + helm-unittest v1.0.3 ## Test Suites | Suite | Tests | What it validates | |-------|-------|---------| | Deployment | 9 | Replicas, image, ports, resources, probes, autoscaling, volumes | | Security | 5 | PSS restricted: runAsNonRoot, seccomp, no-escalation, drop ALL, readOnly | | Service | 4 | Kind, type, port, selectors | | Ingress | 5 | Disabled/enabled, className, TLS on/off | | NetworkPolicy | 5 | Policy types, ingress-nginx only, DNS+HTTPS egress | | HPA | 4 | Disabled/enabled, scaling bounds, target ref |
claude added 1 commit 2026-02-19 16:36:47 +01:00
Add Helm unit tests for web-app chart (32 tests)
All checks were successful
AI Review / AI Code Review (pull_request) Successful in 1s
PR Checks / Validate & Security Scan (pull_request) Successful in 8s
a6578511a9
6 test suites covering deployment, service, ingress, networkpolicy,
HPA, and PSS restricted security contexts. CI step added to
pr-checks workflow (requires helm-unittest in runner image).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Author
Owner

AI Code Review

Отличный набор юнит-тестов для Helm-чарта. Анализирую по критериям:

Сильные стороны

  • Comprehensive coverage: 32 теста охватывают все critical компоненты (security, networking, scaling)
  • PSS compliance: security_test.yaml проверяет все требования restricted уровня (runAsNonRoot, seccomp, no-escalation, drop ALL, readOnly FS)
  • NetworkPolicy validation: явная проверка ingress-nginx-only + DNS/HTTPS egress
  • Conditional rendering: правильные тесты для disabled ресурсов (HPA, Ingress)

⚠️ Проблемы

1. Использование :latest в тесте (deployment_test.yaml:20)

value: "10.10.10.1:3000/claude/demo-app:latest"
  • Тест валидирует latest tag, что противоречит best practice (no :latest)
  • Рекомендация: изменить на конкретный версионный tag (e.g., v1.0.0)

2. Неполная проверка Service selectors (service_test.yaml:26–28)

- it: should have correct selector labels
  asserts:
    - isNotEmpty:
        path: spec.selector
  • Проверяет только наличие, не валидирует содержимое (app=web-app, etc.)
  • Рекомендация: добавить equal проверку или конкретные label assertions

3. Отсутствие тестов для Labels/Annotations

  • Нет тестов на metadata labels (app, version, managed-by)
  • Отсутствуют проверки common labels (required в организации для мониторинга)

4. Недостаточная валидация HPA (hpa_test.yaml)

  • Не проверяется targetCPUUtilizationPercentage или метрики
  • Нет теста на поведение при отключенном autoscaling + реплик > 1 (конфликт)

5. NetworkPolicy тесты слишком поверхностны

  • Проверяют структуру, но не валидируют полноту правил
  • Нет теста на то, что pod-to-pod коммуникация внутри namespace блокируется

6. CI/CD fallback too lenient (.gitea/workflows/pr-checks.yaml:51–52)

else
  echo "helm-unittest not available, skipping (advisory)"
fi
  • Пропускает тесты без ошибки — тесты могут быть добавлены, но не выполняться
  • Рекомендация: exit 1 при отсутствии helm-unittest (make it blocking)

7. Нет тестов для обязательных полей

  • securityContext path не гарантирует поле существует в template
  • Deployment test не проверяет strategy (RollingUpdate/Recreate)

📋 Итог

PR близок к приемлемому уровню, но нужны правки:

  1. Убрать :latest из test values
  2. Усилить assertions для selectors/labels
  3. Сделать helm-unittest blocking в CI
  4. Добавить метаданные и edge-case тесты

Рекомендация: approve с minor changes перед merge.


Automated review by Claude Haiku | advisory, does not block merge

## AI Code Review Отличный набор юнит-тестов для Helm-чарта. Анализирую по критериям: ## ✅ Сильные стороны - **Comprehensive coverage:** 32 теста охватывают все critical компоненты (security, networking, scaling) - **PSS compliance:** security_test.yaml проверяет все требования restricted уровня (runAsNonRoot, seccomp, no-escalation, drop ALL, readOnly FS) - **NetworkPolicy validation:** явная проверка ingress-nginx-only + DNS/HTTPS egress - **Conditional rendering:** правильные тесты для disabled ресурсов (HPA, Ingress) ## ⚠️ Проблемы ### 1. **Использование `:latest` в тесте** (deployment_test.yaml:20) ```yaml value: "10.10.10.1:3000/claude/demo-app:latest" ``` - Тест валидирует `latest` tag, что противоречит best practice (no :latest) - **Рекомендация:** изменить на конкретный версионный tag (e.g., `v1.0.0`) ### 2. **Неполная проверка Service selectors** (service_test.yaml:26–28) ```yaml - it: should have correct selector labels asserts: - isNotEmpty: path: spec.selector ``` - Проверяет только наличие, не валидирует содержимое (app=web-app, etc.) - **Рекомендация:** добавить `equal` проверку или конкретные label assertions ### 3. **Отсутствие тестов для Labels/Annotations** - Нет тестов на metadata labels (app, version, managed-by) - Отсутствуют проверки common labels (required в организации для мониторинга) ### 4. **Недостаточная валидация HPA** (hpa_test.yaml) - Не проверяется `targetCPUUtilizationPercentage` или метрики - Нет теста на поведение при отключенном autoscaling + реплик > 1 (конфликт) ### 5. **NetworkPolicy тесты слишком поверхностны** - Проверяют структуру, но не валидируют полноту правил - Нет теста на то, что pod-to-pod коммуникация внутри namespace блокируется ### 6. **CI/CD fallback too lenient** (.gitea/workflows/pr-checks.yaml:51–52) ```yaml else echo "helm-unittest not available, skipping (advisory)" fi ``` - Пропускает тесты без ошибки — тесты могут быть добавлены, но не выполняться - **Рекомендация:** `exit 1` при отсутствии helm-unittest (make it blocking) ### 7. **Нет тестов для обязательных полей** - securityContext path не гарантирует поле существует в template - Deployment test не проверяет strategy (RollingUpdate/Recreate) ## 📋 Итог PR близок к приемлемому уровню, но нужны правки: 1. Убрать `:latest` из test values 2. Усилить assertions для selectors/labels 3. Сделать helm-unittest blocking в CI 4. Добавить метаданные и edge-case тесты **Рекомендация:** approve с minor changes перед merge. --- _Automated review by Claude Haiku | advisory, does not block merge_
claude merged commit 9bb1c3a5a6 into main 2026-02-19 16:44:26 +01:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: claude/k8s-apps#175
No description provided.