<?php
require __DIR__ . '/../bootstrap.php';

use Gestoreasy\Core\Http\Request;
use Gestoreasy\Core\Http\RateLimitMiddleware;

// Teste mínimo do rate limit em rota sensível (/api/auth/login)
function assertTrue($cond, $msg) { if (!$cond) { echo "FAIL: $msg\n"; exit(1); } }

// IP aleatório para isolar janela de rate limit
$ip = '203.0.113.' . rand(1, 254);
$_SERVER['REMOTE_ADDR'] = $ip;

$req = new Request([], [], [], [], 'POST', '/api/auth/login');

// Primeiras 10 requisições devem passar (limite por IP = 10)
for ($i = 1; $i <= 10; $i++) {
    $res = RateLimitMiddleware::enforceForSensitiveRoutes($req);
    assertTrue($res === null, "Tentativa $i deve ser permitida");
}

// 11ª deve bloquear com 429
$res = RateLimitMiddleware::enforceForSensitiveRoutes($req);
assertTrue($res !== null, 'Deve retornar resposta ao exceder limite');
assertTrue($res->status === 429, 'Status deve ser 429');

echo "PASS: RateLimitMiddleware para /api/auth/login bloqueia após 10 requisições por IP.\n";