-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathtest_google_auth.js
More file actions
123 lines (101 loc) · 4.52 KB
/
test_google_auth.js
File metadata and controls
123 lines (101 loc) · 4.52 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
120
121
122
123
const axios = require('axios');
// Configuración
const API_BASE_URL = 'http://localhost:4000';
// Token de ejemplo de Google (este sería generado por el frontend)
// En un caso real, este token vendría del frontend después de la autenticación con Google
const EJEMPLO_GOOGLE_TOKEN = 'eyJhbGciOiJSUzI1NiIsImtpZCI6IjExIn0...'; // Token de ejemplo
async function probarAutenticacionGoogle() {
console.log('🧪 Iniciando pruebas de autenticación con Google...\n');
try {
// Prueba 1: Registro/Login con Google
console.log('📝 Prueba 1: Autenticación con Google');
console.log('⚠️ NOTA: Esta prueba requiere un token real de Google');
console.log('💡 Para obtener un token real:');
console.log(' 1. Implementa el frontend con Google Sign-In');
console.log(' 2. O usa la consola de Google Cloud para generar tokens de prueba');
console.log('');
// Esta llamada fallaría con un token de ejemplo, pero muestra la estructura
try {
const response = await axios.post(`${API_BASE_URL}/usuarios/auth/google`, {
googleToken: EJEMPLO_GOOGLE_TOKEN
});
console.log('✅ Autenticación exitosa:');
console.log('📄 Respuesta:', response.data);
// Guardar el token JWT para pruebas adicionales
const jwtToken = response.data.token;
// Prueba 2: Obtener perfil con token JWT
console.log('\n📝 Prueba 2: Obtener perfil de usuario');
const perfilResponse = await axios.get(`${API_BASE_URL}/usuarios/perfil`, {
headers: {
'Authorization': `Bearer ${jwtToken}`
}
});
console.log('✅ Perfil obtenido:');
console.log('📄 Datos del usuario:', perfilResponse.data);
// Prueba 3: Desvincular Google (opcional)
console.log('\n📝 Prueba 3: Desvincular cuenta de Google');
const desvincularResponse = await axios.delete(`${API_BASE_URL}/usuarios/auth/google/unlink`, {
headers: {
'Authorization': `Bearer ${jwtToken}`
}
});
console.log('✅ Cuenta desvinculada:');
console.log('📄 Respuesta:', desvincularResponse.data);
} catch (authError) {
if (authError.response) {
console.log('❌ Error esperado (token de ejemplo inválido):');
console.log('📄 Código:', authError.response.status);
console.log('📄 Mensaje:', authError.response.data.message);
console.log('📄 Error:', authError.response.data.error);
} else {
console.error('❌ Error de conexión:', authError.message);
}
}
console.log('\n📋 Endpoints disponibles para Google OAuth:');
console.log(' POST /usuarios/auth/google');
console.log(' - Body: { "googleToken": "tu_token_de_google" }');
console.log(' - Respuesta: { "token": "jwt_token", "nombre": "...", ... }');
console.log('');
console.log(' DELETE /usuarios/auth/google/unlink');
console.log(' - Headers: { "Authorization": "Bearer jwt_token" }');
console.log(' - Respuesta: { "message": "Cuenta desvinculada..." }');
console.log('');
console.log('📚 Documentación de integración:');
console.log(' 1. Frontend debe implementar Google Sign-In');
console.log(' 2. Enviar el ID token de Google al endpoint /usuarios/auth/google');
console.log(' 3. Recibir JWT token para autenticación en la aplicación');
console.log(' 4. Usar JWT token para acceder a endpoints protegidos');
} catch (error) {
console.error('❌ Error general en las pruebas:', error.message);
}
}
// Función para probar la conexión básica
async function probarConexionServidor() {
try {
console.log('🔍 Verificando conexión con el servidor...');
const response = await axios.get(`${API_BASE_URL}/ping`);
console.log('✅ Servidor disponible:', response.data);
return true;
} catch (error) {
console.error('❌ Servidor no disponible:', error.message);
console.log('💡 Asegúrate de que el servidor esté ejecutándose en puerto 4000');
return false;
}
}
// Ejecutar pruebas
async function ejecutarPruebas() {
console.log('🚀 Iniciando pruebas de Google OAuth\n');
const servidorDisponible = await probarConexionServidor();
if (servidorDisponible) {
await probarAutenticacionGoogle();
}
console.log('\n✨ Pruebas completadas');
}
// Ejecutar si se llama directamente
if (require.main === module) {
ejecutarPruebas().catch(console.error);
}
module.exports = {
probarAutenticacionGoogle,
probarConexionServidor
};