297 lines
No EOL
8.4 KiB
JavaScript
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); |