Open luismoralesp opened 6 years ago
Tengo una confusión, ¿si uso un mock, no seria necesario usar un servicio de Oauth2 para hacer mi test?.
si claro, por eso te decia que podías usar un servicio oauth2 y existente, alguna aplicación que ya use ese método de autenticación.
Aquí unos ejemplos de google: https://developers.google.com/oauthplayground/
Buenas tardes, ciertamente no he podido dominar el asunto de las pruebas, en teoria me parece claro pero en la implementación algo confuso, les comparto una posible prueba para authorizacion con Oauth2 https://repl.it/repls/EthicalAridBellsandwhistles
Gracias @luismoralesp, el enlace que me mandaste me sirvió empila, lo dejaré aquí para futuras referencias http://www.daimto.com/google-authentication-with-curl/. Necesito ahora subir el proyecto con las pruebas que estoy realizando, ¿si lo subo aqui en grit como se haría con los demas proyectos?, por ejemplo con el servicio de Oauth2
Exelente @Cromeror, me alegro que te halla sido de utilidad. En cuanto a subir el proyecto solo asegurate dde subirlo en una carpeta independiente, de forma que no esté en la raiz del repositorio.
Parece que ahora tengo otro problema, cuando solicito la autorización Google carga una pagina de autenticación, y al hacer una petición via http este me da un 405.
@Cromeror tienes que adjuntar el segmento de código para poder entnder mejor el problema
Esta es mi test.
User test
import services from '../../src/services'
describe('Authorization request', () => {
it('Successful', () => {
expect.assertions(1);
return services.Users.getAuthorization()
.then(response => {
expect(response.status).toEqual('200')
})
});
});
Lo que quiero probar es que getAuthorization efectivamente esta haciendo una petición al servicio de authenticación de google, para que me de authorización. la petición que realiza getAuthorization es la siguiente:
User services
import axios from 'axios'
export default {
/**
* Autentica un usuario con user + password
* @param {*} user
* @param {*} password
*/
getAuthorization() {
return axios.get(`https://accounts.google.com/o/oauth2/auth?client_id=23976511534-db9c8280tq0moimdqbdr1ajn2dl582ch.apps.googleusercontent.com&redirect_uri=urn:ietf:wg:oauth:2.0:oob&scope=https://www.googleapis.com/auth/plus.login&response_type=code`,
{
headers: {
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Methods': 'HEAD, GET, POST, OPTIONS, PUT, PATCH, DELETE',
'Access-Control-Allow-Headers': 'Access-Control-*, Origin, X-Requested-With, Content-Type, Accept, Authorization',
'Access-Control-Allow-Credentials': true,
'Access-Control-Expose-Headers': 'Access-Control-*, Origin, X-Requested-With, Content-Type, Accept, Authorization'
}
}
)
}
}
Las cabeceras se las agregué despues que me diera un error de Cors, donde decia que el cross-origin era necesario, supuse que al realizar la petición por medio del test, axios (dependencia que gestiona peticiones http) no estaba mandando los las cabeceras de origen porque no hay ningun sitio en ejecución asi que busque sobre como configurar esa cabeceras, pero ahora el error que me arroja es 405 comom te mostré en la imagen anterior.
hola @Cromeror tienes un priblema de concepto, la direccion a la que estas hacienddo petición no es parra hacer el login es solo para obtener el codigo de seguridad el cual luego si utilizaras para llamar al servicio de login, este requiere hacer un proceso manual iniciando sesion con tu cuenta dde gmail, con el objetivo de que un evitar que cualquiera pueda intentar hacer login sin pasar por una verificación anterior.
verificalo tu mismo accediendo en el navegador a el link: https://accounts.google.com/o/oauth2/auth?client_id=23976511534-db9c8280tq0moimdqbdr1ajn2dl582ch.apps.googleusercontent.com&redirect_uri=urn:ietf:wg:oauth:2.0:oob&scope=https://www.googleapis.com/auth/plus.login&response_type=code
En nuestra aplicación cada dominio de microservicio deberá estar registrado en el app de Oaut2 teniendo asi un codigo de verificación diferente para cada una.
Crear un demo de consumo de oauth2