mirror of
https://github.com/cozystack/cozystack.git
synced 2026-11-05 03:27:07 +09:00
## What this PR does The aggregated API previously accepted tenant names containing hyphens (e.g. `foo-bar`) because `ValidateApplicationName` delegated entirely to `IsDNS1035Label`, which permits them. The tenant Helm chart's `tenant.name` helper then rejected the release at template time — so users saw a successful `kubectl apply` followed by a confusing Flux/HelmRelease reconciliation error. This PR extends `ValidateApplicationName` with a `kindName` parameter and enforces an alphanumeric-only rule (`^[a-z][a-z0-9]*$`) for the Tenant kind. A `TenantKind` constant centralizes the kind string, and `REST.validateNameFormat` wraps the check symmetrically with the existing `validateNameLength`. The tenant chart README is updated to match the already-correct website documentation. Test coverage includes: - Unit tests for the validation package (format + error message contract) - REST wrapper and Update→Create fall-through path tests with a fake client - E2E BATS regression test with explicit exit-code checks and cleanup Fixes #2375 ### Release note ```release-note [api] Tenant names containing dashes are now rejected at API level during creation, with a specific error message, instead of being silently accepted and failing later during Helm reconciliation. ``` <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Tenant names now require lowercase letters and digits only, must start with a letter; dashes are rejected with a tenant-specific error. * **Documentation** * Tenant naming guidelines updated to reflect the stricter alphanumeric-only requirement. * **Tests** * New unit and end-to-end tests added to verify tenant naming enforcement and tenant-specific error messaging. <!-- end of auto-generated comment: release notes by coderabbit.ai -->