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

use Gestoreasy\Core\Kernel;
use Gestoreasy\Core\Http\Request;

function assertTrue($cond, $msg) { if (!$cond) { echo "FAIL: $msg\n"; exit(1); } }

$kernel = new Kernel();
$tenant = 'default';

// Autenticação por API Key
putenv('SPED_API_KEY=TEST-SPED-KEY');
$_ENV['SPED_API_KEY'] = 'TEST-SPED-KEY';
$headersApi = [ 'x-tenant-id' => $tenant, 'x-api-key' => 'TEST-SPED-KEY', 'content-type' => 'application/json' ];

echo "=== Teste Automatizado: Upload de Documento (ANEXO) ===\n";
$content = "hello upload";
$body = [ 'tipo' => 'ANEXO', 'filename' => 'test-up.json', 'content_base64' => base64_encode($content) ];
$reqUp = new Request($headersApi, [], $body, [], 'POST', '/api/fiscal/documentos/upload');
$resUp = $kernel->handle($reqUp);
assertTrue($resUp->status === 200, 'POST /api/fiscal/documentos/upload deve retornar 200');
assertTrue(is_array($resUp->body), 'Resposta JSON válida');
assertTrue(!empty($resUp->body['ok']), 'Campo ok=true');
assertTrue(isset($resUp->body['item']) && is_array($resUp->body['item']), 'Retorna item');
$item = $resUp->body['item'];
assertTrue(($item['tipo'] ?? '') === 'ANEXO', 'Tipo ANEXO correto');
assertTrue(strpos($item['nome'] ?? '', 'test-up.json') !== false, 'Nome contém test-up.json');
assertTrue(!empty($item['caminho']), 'Caminho presente');

// Validar conteúdo no disco
$abs = dirname(__DIR__) . $item['caminho'];
assertTrue(is_file($abs), 'Arquivo existe no disco');
$contentDisk = file_get_contents($abs);
assertTrue($contentDisk === $content, 'Conteúdo do arquivo confere');

// Limpeza
@unlink($abs);

echo "\n=== Teste Finalizado com sucesso ===\n";
exit(0);