saveinmed/saveinmed-frontend/test-completar-registro.js
Tiago Yamamoto b39caf0fd0 first commit
2025-12-17 13:58:26 -03:00

297 lines
No EOL
8.4 KiB
JavaScript

const axios = require('axios');
// Configurações
const BASE_URL = 'https://bff-dev.saveinmed.com.br/api/v1';
const EMAIL = 'andre.fr93@gmail.com';
const SENHA = 'j875bth9';
let accessToken = '';
let userId = '';
async function login() {
console.log('🔐 Fazendo login...');
try {
const response = await axios.post(`${BASE_URL}/auth/login`, {
identificador: EMAIL,
senha: SENHA
});
accessToken = response.data.access_token;
console.log('✅ Login realizado com sucesso');
console.log('Token:', accessToken.substring(0, 20) + '...');
return true;
} catch (error) {
console.error('❌ Erro no login:', error.response?.data || error.message);
return false;
}
}
async function getUserData() {
console.log('👤 Buscando dados do usuário...');
try {
const response = await axios.get(`${BASE_URL}/auth/me`, {
headers: {
'Authorization': `Bearer ${accessToken}`,
'accept': 'application/json'
}
});
userId = response.data.id || response.data._id || response.data.userId;
console.log('✅ Dados do usuário obtidos');
console.log('User ID:', userId);
console.log('Dados:', JSON.stringify(response.data, null, 2));
return response.data;
} catch (error) {
console.error('❌ Erro ao buscar dados do usuário:', error.response?.data || error.message);
return null;
}
}
async function criarEndereco() {
console.log('📍 Criando endereço...');
const enderecoData = {
titulo: "Endereço Principal Teste",
cep: "15990200",
logradouro: "Rua São Lourenço",
numero: "123",
complemento: "casa",
cidade: "Matão",
estado: "SP",
pais: "Brasil",
bairro: "Centro"
};
try {
const response = await axios.post(`${BASE_URL}/enderecos`, enderecoData, {
headers: {
'Authorization': `Bearer ${accessToken}`,
'Content-Type': 'application/json',
'accept': 'application/json'
}
});
const enderecoId = response.data.id || response.data._id;
console.log('✅ Endereço criado com ID:', enderecoId);
console.log('Resposta:', JSON.stringify(response.data, null, 2));
return enderecoId;
} catch (error) {
console.error('❌ Erro ao criar endereço:', error.response?.data || error.message);
console.error('Status:', error.response?.status);
console.error('Headers:', error.response?.headers);
return null;
}
}
async function criarEmpresa(enderecoId) {
console.log('🏢 Criando empresa...');
// Vamos testar com um payload mais simples primeiro
const empresaData = {
cnpj: "15961591595252",
"razao-social": "TESTE LTDA",
"nome-fantasia": "TESTE",
"data-abertura": "2000-02-20",
situacao: "Ativa",
"natureza-juridica": "TESTE sda",
porte: "MEI",
"capital-social": 50000,
telefone: "15654894156",
email: "andre.fr93@gmail.com",
"atividade-principal-codigo": "1510",
"atividade-principal-desc": "TESTE TESTE",
enderecos: enderecoId ? [enderecoId] : []
};
console.log('Payload empresa:', JSON.stringify(empresaData, null, 2));
try {
const response = await axios.post(`${BASE_URL}/empresas`, empresaData, {
headers: {
'Authorization': `Bearer ${accessToken}`,
'Content-Type': 'application/json',
'accept': 'application/json'
}
});
const empresaId = response.data.id || response.data._id;
console.log('✅ Empresa criada com ID:', empresaId);
console.log('Resposta:', JSON.stringify(response.data, null, 2));
return empresaId;
} catch (error) {
console.error('❌ Erro ao criar empresa:');
console.error('Status:', error.response?.status);
console.error('Data:', error.response?.data);
// Vamos tentar sem alguns campos para identificar o problema
console.log('\n🔄 Tentando com payload simplificado...');
const empresaSimples = {
cnpj: "15961591595252",
"razao-social": "TESTE LTDA",
"nome-fantasia": "TESTE",
"data-abertura": "2000-02-20",
situacao: "Ativa",
"natureza-juridica": "TESTE sda",
porte: "MEI",
"capital-social": 50000,
telefone: "15654894156",
email: "andre.fr93@gmail.com",
"atividade-principal-codigo": "1510",
"atividade-principal-desc": "TESTE TESTE"
// Removendo enderecos para testar
};
try {
const response2 = await axios.post(`${BASE_URL}/empresas`, empresaSimples, {
headers: {
'Authorization': `Bearer ${accessToken}`,
'Content-Type': 'application/json',
'accept': 'application/json'
}
});
const empresaId = response2.data.id || response2.data._id;
console.log('✅ Empresa criada com payload simplificado - ID:', empresaId);
return empresaId;
} catch (error2) {
console.error('❌ Erro mesmo com payload simplificado:', error2.response?.data);
return null;
}
}
}
async function atualizarUsuario(enderecoId, empresaId) {
console.log('👤 Atualizando usuário...');
if (!userId) {
console.error('❌ ID do usuário não encontrado');
return false;
}
// Primeiro buscar dados atuais
const userData = await getUserData();
if (!userData) {
return false;
}
// Gerenciar arrays de endereços e empresas - extrair apenas IDs
const enderecosExistentes = userData.enderecos || [];
const empresasExistentes = userData.empresasDados || [];
// Extrair apenas os IDs dos endereços existentes
const enderecosIds = enderecosExistentes.map((endereco) => {
if (typeof endereco === 'string') {
return endereco; // Já é um ID
}
return endereco.$id || endereco.id || endereco; // Extrair ID do objeto
});
// Extrair apenas os IDs das empresas existentes
const empresasIds = empresasExistentes.map((empresa) => {
if (typeof empresa === 'string') {
return empresa; // Já é um ID
}
return empresa.$id || empresa.id || empresa; // Extrair ID do objeto
});
const usuarioData = {
...userData,
nome: "NANDO",
email: EMAIL,
cpf: "12345678901", // CPF com exatamente 11 dígitos
"nome-social": "NANDO TESTE", // Não pode ser vazio
"registro-completo": true,
enderecos: enderecoId ? [...enderecosIds, enderecoId] : enderecosIds,
empresasDados: empresaId ? [...empresasIds, empresaId] : empresasIds
};
console.log('Payload usuário:', JSON.stringify(usuarioData, null, 2));
try {
const response = await axios.patch(`${BASE_URL}/usuarios/${userId}`, usuarioData, {
headers: {
'Authorization': `Bearer ${accessToken}`,
'Content-Type': 'application/json',
'accept': 'application/json'
}
});
console.log('✅ Usuário atualizado com sucesso');
console.log('Resposta:', JSON.stringify(response.data, null, 2));
return true;
} catch (error) {
console.error('❌ Erro ao atualizar usuário:');
console.error('Status:', error.response?.status);
console.error('Data:', error.response?.data);
if (error.response?.data) {
console.error('Detalhes do erro:', JSON.stringify(error.response.data, null, 2));
}
return false;
}
}
async function testarFluxoCompleto() {
console.log('🚀 Iniciando teste do fluxo completo...\n');
// 1. Login
const loginSuccess = await login();
if (!loginSuccess) {
console.log('❌ Falha no login, abortando teste');
return;
}
console.log('\n');
// 2. Buscar dados do usuário
const userData = await getUserData();
if (!userData) {
console.log('❌ Falha ao buscar dados do usuário, abortando teste');
return;
}
console.log('\n');
// 3. Criar endereço
const enderecoId = await criarEndereco();
if (!enderecoId) {
console.log('❌ Falha ao criar endereço, abortando teste');
return;
}
console.log('\n');
// 4. Criar empresa
const empresaId = await criarEmpresa(enderecoId);
if (!empresaId) {
console.log('❌ Falha ao criar empresa, abortando teste');
return;
}
console.log('\n');
// 5. Atualizar usuário
const updateSuccess = await atualizarUsuario(enderecoId, empresaId);
if (!updateSuccess) {
console.log('❌ Falha ao atualizar usuário');
return;
}
console.log('\n🎉 Teste completo realizado com sucesso!');
console.log(`✅ Endereço ID: ${enderecoId}`);
console.log(`✅ Empresa ID: ${empresaId}`);
console.log(`✅ Usuário atualizado`);
}
// Executar teste
testarFluxoCompleto().catch(console.error);