-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathtest_foto_perfil_logic.js
More file actions
119 lines (99 loc) · 5.73 KB
/
test_foto_perfil_logic.js
File metadata and controls
119 lines (99 loc) · 5.73 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
const usuariosModel = require('./models/usuariosModel');
async function testFotoPerfilLogic() {
console.log('🧪 Test: Simulando lógica de foto de perfil de Google OAuth\n');
// Simular datos de Google User (como los que devuelve el middleware)
const mockGoogleUser = {
googleId: '123456789012345678901',
email: 'testuser@gmail.com',
name: 'Test User',
picture: 'https://lh3.googleusercontent.com/a/ACg8ocJH01WpRt5pwRmU-AYRvxKRvWZAG_LyBh_4j3gXOg=s96-c',
given_name: 'Test',
family_name: 'User',
verified: true
};
console.log('📋 Datos del usuario Google simulado:');
console.log(' 📧 Email:', mockGoogleUser.email);
console.log(' 👤 Nombre:', mockGoogleUser.name);
console.log(' 📸 Foto URL:', mockGoogleUser.picture);
console.log(' 🆔 Google ID:', mockGoogleUser.googleId);
try {
// 1. Verificar si ya existe un usuario con este Google ID
console.log('\n🔍 1. Buscando usuario existente...');
let usuario = await usuariosModel.obtenerUsuarioPorGoogleId(mockGoogleUser.googleId);
if (usuario) {
console.log('✅ Usuario existente encontrado:', usuario.correo_electronico);
console.log(' 📸 Foto actual:', usuario.foto_perfil_url || 'Sin foto');
// Si no tiene foto, actualizar con la de Google
if (!usuario.foto_perfil_url && mockGoogleUser.picture) {
console.log('🔄 Actualizando foto de perfil desde Google...');
const usuarioActualizado = await usuariosModel.actualizarFotoPerfilGoogle(usuario.usuario_id, mockGoogleUser.picture);
console.log('✅ Foto actualizada:', usuarioActualizado.foto_perfil_url);
}
} else {
console.log('❌ Usuario no encontrado con Google ID');
// 2. Verificar si existe usuario con el mismo email
console.log('\n🔍 2. Buscando usuario por email...');
const usuarioExistente = await usuariosModel.verificarCorreoExistente(mockGoogleUser.email);
if (usuarioExistente && !usuarioExistente.google_id) {
console.log('✅ Usuario existente sin Google ID:', usuarioExistente.correo_electronico);
console.log(' 📸 Foto actual:', usuarioExistente.foto_perfil_url || 'Sin foto');
// Vincular Google ID
console.log('🔗 Vinculando cuenta con Google...');
usuario = await usuariosModel.vincularGoogleId(usuarioExistente.usuario_id, mockGoogleUser.googleId);
// Si no tiene foto, actualizar con la de Google
if (!usuarioExistente.foto_perfil_url && mockGoogleUser.picture) {
console.log('🔄 Actualizando foto de perfil desde Google...');
const usuarioActualizado = await usuariosModel.actualizarFotoPerfilGoogle(usuarioExistente.usuario_id, mockGoogleUser.picture);
console.log('✅ Foto actualizada:', usuarioActualizado.foto_perfil_url);
usuario.foto_perfil_url = usuarioActualizado.foto_perfil_url;
}
} else {
console.log('❌ Usuario no encontrado por email, creando nuevo usuario...');
// 3. Crear nuevo usuario con foto de Google
console.log('\n🆕 3. Registrando nuevo usuario con Google...');
const nombreCompleto = mockGoogleUser.name || '';
const partesNombre = nombreCompleto.split(' ');
const nombre = mockGoogleUser.given_name || partesNombre[0] || '';
const apellido_paterno = mockGoogleUser.family_name || partesNombre[1] || '';
const apellido_materno = partesNombre[2] || '';
usuario = await usuariosModel.registrarUsuarioGoogle(
nombre,
apellido_paterno,
apellido_materno,
mockGoogleUser.email,
mockGoogleUser.googleId,
mockGoogleUser.picture // ← FOTO DE GOOGLE GUARDADA AQUÍ
);
console.log('✅ Usuario creado exitosamente:');
console.log(' 👤 Nombre:', usuario.nombre, usuario.apellido_paterno);
console.log(' 📧 Email:', mockGoogleUser.email);
console.log(' 📸 Foto URL:', usuario.foto_perfil_url);
console.log(' 🆔 User ID:', usuario.usuario_id);
}
}
// 4. Simular respuesta del endpoint
console.log('\n🎯 Respuesta final del endpoint:');
const respuestaFinal = {
token: 'jwt_token_aqui',
nombre: usuario.nombre,
apellido_paterno: usuario.apellido_paterno,
apellido_materno: usuario.apellido_materno,
foto_perfil_url: usuario.foto_perfil_url || mockGoogleUser.picture || null,
email: mockGoogleUser.email,
rol_id: usuario.rol_id,
loginMethod: 'google'
};
console.log('✅ Respuesta simulada:', JSON.stringify(respuestaFinal, null, 2));
if (respuestaFinal.foto_perfil_url) {
console.log('\n🎉 ¡ÉXITO! La foto de perfil de Google se procesó correctamente');
console.log('📸 URL de la foto:', respuestaFinal.foto_perfil_url);
} else {
console.log('\n⚠️ No se encontró foto de perfil');
}
} catch (error) {
console.error('❌ Error en el test:', error.message);
console.error('🔍 Detalles del error:', error);
}
}
// Ejecutar test
testFotoPerfilLogic();