forked from baron/baron-sso
test: 프론트엔드/백엔드 테스트 커버리지 및 시나리오 보강 (Issue #291)
- FE: Vitest 환경 구축 및 공통 UI 컴포넌트(Badge, Button) 테스트 추가 - FE: Playwright E2E 테스트(Auth, Tenant CRUD 및 Validation) 시나리오 보강 - BE: Testcontainers 기반 Repository 통합 테스트(PostgreSQL) 추가 - BE: TenantRepository 계층 구조(Hierarchy), DB 제약조건(Unique) 테스트 - BE: UserRepository 통합 테스트(CRUD, Delete) 추가 - BE: PasswordPolicy 유틸리티 테스트 보강 - BE: TenantService 엣지 케이스(중복 슬러그, 권한 등) 검증 로직 추가 - Fix: 하위 테넌트 생성 시 ParentID 누락 문제 해결
This commit is contained in:
62
backend/internal/utils/password_policy_test.go
Normal file
62
backend/internal/utils/password_policy_test.go
Normal file
@@ -0,0 +1,62 @@
|
||||
package utils
|
||||
|
||||
import (
|
||||
"baron-sso-backend/internal/domain"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func TestValidatePasswordWithPolicy(t *testing.T) {
|
||||
policy := &domain.PasswordPolicy{
|
||||
MinLength: 8,
|
||||
Lowercase: true,
|
||||
Uppercase: true,
|
||||
Number: true,
|
||||
NonAlphanumeric: true,
|
||||
MinCharacterTypes: 3,
|
||||
}
|
||||
|
||||
t.Run("Valid Password", func(t *testing.T) {
|
||||
err := ValidatePasswordWithPolicy(policy, "Pass1234!")
|
||||
assert.NoError(t, err)
|
||||
})
|
||||
|
||||
t.Run("Too Short", func(t *testing.T) {
|
||||
err := ValidatePasswordWithPolicy(policy, "P123!")
|
||||
assert.Error(t, err)
|
||||
assert.Contains(t, err.Error(), "최소 8자")
|
||||
})
|
||||
|
||||
t.Run("Missing Lowercase", func(t *testing.T) {
|
||||
err := ValidatePasswordWithPolicy(policy, "PASS1234!")
|
||||
assert.Error(t, err)
|
||||
assert.Contains(t, err.Error(), "소문자")
|
||||
})
|
||||
|
||||
t.Run("Missing Symbol", func(t *testing.T) {
|
||||
err := ValidatePasswordWithPolicy(policy, "Pass1234")
|
||||
assert.Error(t, err)
|
||||
assert.Contains(t, err.Error(), "특수문자")
|
||||
})
|
||||
}
|
||||
|
||||
func TestGeneratePasswordWithPolicy(t *testing.T) {
|
||||
policy := &domain.PasswordPolicy{
|
||||
MinLength: 16,
|
||||
Lowercase: true,
|
||||
Uppercase: true,
|
||||
Number: true,
|
||||
NonAlphanumeric: true,
|
||||
}
|
||||
|
||||
t.Run("Generate and Validate", func(t *testing.T) {
|
||||
password, err := GeneratePasswordWithPolicy(policy)
|
||||
assert.NoError(t, err)
|
||||
assert.Len(t, password, 16)
|
||||
|
||||
// Generated password must satisfy the policy
|
||||
err = ValidatePasswordWithPolicy(policy, password)
|
||||
assert.NoError(t, err, "Generated password '%s' does not satisfy policy", password)
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user