Files
App-Estoque-LiberiKids/test-upload-catalogo.js
2025-11-29 21:31:52 -03:00

127 lines
4.0 KiB
JavaScript
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// Script de teste para verificar upload no bucket catalogo
require('dotenv').config();
const { createClient } = require('@supabase/supabase-js');
const supabaseUrl = process.env.SUPABASE_URL;
const supabaseKey = process.env.SUPABASE_SERVICE_KEY || process.env.SUPABASE_ANON_KEY;
if (!supabaseUrl || !supabaseKey) {
console.error('❌ Variáveis de ambiente não configuradas');
console.log('SUPABASE_URL:', supabaseUrl ? '✓' : '✗');
console.log('SUPABASE_KEY:', supabaseKey ? '✓' : '✗');
process.exit(1);
}
const supabase = createClient(supabaseUrl, supabaseKey);
async function testCatalogoBucket() {
console.log('🔍 Testando bucket "catalogo"...\n');
try {
// 1. Verificar se o bucket existe
console.log('1⃣ Verificando se bucket existe...');
const { data: buckets, error: bucketsError } = await supabase
.storage
.listBuckets();
if (bucketsError) {
console.error('❌ Erro ao listar buckets:', bucketsError.message);
return;
}
const catalogoBucket = buckets.find(b => b.id === 'catalogo');
if (catalogoBucket) {
console.log('✅ Bucket "catalogo" existe!');
console.log(' - ID:', catalogoBucket.id);
console.log(' - Nome:', catalogoBucket.name);
console.log(' - Público:', catalogoBucket.public);
console.log('');
} else {
console.log('❌ Bucket "catalogo" NÃO existe!');
console.log('\n📋 Execute o script SQL para criar:');
console.log(' sql/setup-bucket-catalogo.sql\n');
return;
}
// 2. Testar criação de pasta
console.log('2⃣ Testando criação de pasta...');
const testBuffer = Buffer.from('teste', 'utf-8');
const testPath = 'produto_test/test.txt';
const { data: uploadData, error: uploadError } = await supabase
.storage
.from('catalogo')
.upload(testPath, testBuffer, {
contentType: 'text/plain',
upsert: true
});
if (uploadError) {
console.error('❌ Erro ao fazer upload:', uploadError.message);
console.log('\n💡 Possíveis causas:');
console.log(' 1. Políticas RLS não configuradas');
console.log(' 2. Usando ANON_KEY em vez de SERVICE_KEY');
console.log(' 3. Bucket não é público');
console.log('\n📋 Execute o script SQL completo:');
console.log(' sql/setup-bucket-catalogo.sql\n');
return;
}
console.log('✅ Upload teste realizado com sucesso!');
console.log(' - Path:', uploadData.path);
console.log('');
// 3. Verificar URL pública
console.log('3⃣ Verificando URL pública...');
const { data: urlData } = supabase
.storage
.from('catalogo')
.getPublicUrl(testPath);
console.log('✅ URL pública gerada:');
console.log(' ', urlData.publicUrl);
console.log('');
// 4. Listar arquivos
console.log('4⃣ Listando arquivos...');
const { data: files, error: listError } = await supabase
.storage
.from('catalogo')
.list('produto_test');
if (listError) {
console.error('❌ Erro ao listar:', listError.message);
} else {
console.log('✅ Arquivos encontrados:', files.length);
files.forEach(file => {
console.log(' -', file.name);
});
console.log('');
}
// 5. Limpar teste
console.log('5⃣ Limpando arquivo de teste...');
const { error: deleteError } = await supabase
.storage
.from('catalogo')
.remove([testPath]);
if (deleteError) {
console.error('❌ Erro ao deletar:', deleteError.message);
} else {
console.log('✅ Arquivo de teste removido');
}
console.log('\n🎉 TODOS OS TESTES PASSARAM!');
console.log('\n✅ O bucket "catalogo" está configurado corretamente.');
console.log('✅ Você pode usar o sistema de fotos adicionais.');
} catch (error) {
console.error('\n❌ Erro inesperado:', error.message);
console.error(error);
}
}
testCatalogoBucket();