# Security Manager Unit Tests ## Descrição Este directório contém os testes unitários para a classe `Security_Manager` do Care API, focando nas funcionalidades críticas de segurança: ### 5 Testes Principais 1. **test_validate_endpoint_permissions()** - Validação de permissões de endpoints - Endpoints públicos (status, health, version) - Endpoints de autenticação (login, password reset) - Endpoints protegidos (require JWT) 2. **test_rate_limiting_enforcement()** - Aplicação de rate limiting - Diferentes limites por tipo de endpoint - Separação por endereço IP - Bloqueio quando limite excedido 3. **test_authentication_requirement_check()** - Verificação de autenticação - Headers Authorization obrigatórios - Formato Bearer válido - Disponibilidade do serviço JWT 4. **test_sql_injection_protection()** - Proteção contra SQL injection - Sanitização de inputs maliciosos - Validação por tipo de dados - Bloqueio de padrões perigosos 5. **test_xss_prevention()** - Prevenção XSS - Escape de outputs HTML - Sanitização recursiva de arrays/objects - Diferentes contextos (text, html, url, attribute, javascript) ## Como Executar ### Executar apenas testes de Security Manager: ```bash vendor/bin/phpunit tests/unit/Security/SecurityManagerTest.php ``` ### Executar todos os testes unitários: ```bash vendor/bin/phpunit --testsuite="KiviCare API Unit Tests" ``` ### Com coverage: ```bash vendor/bin/phpunit tests/unit/Security/SecurityManagerTest.php --coverage-text ``` ## Dependências - **PHPUnit 10+** - Framework de testes - **WordPress Test Framework** - Ambiente WordPress para testes - **Care API Security Manager** - Classe sendo testada ## Estrutura dos Testes Cada teste segue a estrutura: 1. **Setup** - Configuração do ambiente (transients, mocks, $_SERVER vars) 2. **Execute** - Execução da funcionalidade 3. **Assert** - Validação dos resultados 4. **Cleanup** - Limpeza automática no tearDown() ## Cobertura de Testes Os testes cobrem: - ✅ Cenários positivos (funcionamento correcto) - ✅ Cenários negativos (falhas esperadas) - ✅ Edge cases (valores limites, formatos inválidos) - ✅ Casos de erro (serviços indisponíveis) ## Notas Técnicas - **Transients Mockados**: Rate limiting usa sistema de transients mockado para testes isolados - **WordPress Nonces**: Usa nonces reais do WordPress para autenticidade - **PHP 8.1+ Compatible**: Sintaxe moderna com strict types - **PSR-4 Autoloading**: Namespaces correctos para autoload - **WordPress Coding Standards**: Segue WPCS para consistência ## Exemplo de Output ``` PHPUnit 10.5.0 testValidateEndpointPermissions ✓ testRateLimitingEnforcement ✓ testAuthenticationRequirementCheck ✓ testSqlInjectionProtection ✓ testXssPrevention ✓ Time: 00:00.123, Memory: 10.00 MB OK (5 tests, 47 assertions) ``` --- **Implementado**: 2025-09-14 | **Versão**: 1.0.0 | **Autor**: Descomplicar®