Este repositorio contiene las pruebas de aceptación de Chotuve.
Las pruebas de aceptación mantienen un contexto entre paso y paso con la información relevante a la característica que se desea probar. Para mantener la consistencia entre pasos, se definen algunas convenciones sobre nombres de atributos dentro del contexto:
context.yo
: Instancia deChotuveAppClient
que refiere a la primera persona de las pruebas. Se carga en los pasos del estilo "inicié sesión".context.yo.last_response
: Última respuesta obtenida del app server. No es necesario verificar que las respuestas devuelvan 200/201/etc. en caso de que no fuera así se lanzará una excepción.context.error
: Si se espera que una solicitud falle (no devuelva 2**) la excepción generada por la instancia deChotuveAppClient
se debe atrapar y almacenar en este atributo.context.data
: Si se espera que una solicitud devuelva datos, los datos recibidos se deben almacenar en este atributo.
Existen 5 scripts para correr las pruebas:
run-acceptance-tests.sh
: El script por defecto para integración continua.run-tests-url.sh
: Permite correr las pruebas indicando la URL de cada servicio.dev-run-acceptance-tests-url.sh
: Para correr las pruebas localmente con las URL por defecto apuntando alocalhost
y su respectivo puerto.behave-local-url-dev.sh
: Igual al anterior pero correbehave
localmente en lugar de correrlo dentro de una imagen de Docker.dev-run-acceptance-tests-repo.sh
: Para correr las pruebas localmente levantando la imagen desde la carpeta con el repositorio de cada servidor, ubicada en../chotuve-*-server
.
Para correr las pruebas en el servidor de integración continua o antes de agregar
cambios a un PR, se utiliza el script run-acceptance-tests.sh
.
Este script va a crear una red interna de Docker llamada "chotuve" o utilizar
una ya existente, levantar una imagen productiva de cada servidor sobre esta
red con una base de datos vacía, y luego correr behave
apuntándolo a estos
servicios.
Se soportan las siguientes opciones:
--chotuve-[app|auth|media]-repo=<directorio>
: Permite indicar donde está clonado el repositorio para cada uno de los servidores. Si no se indica este parámetro para algún servidor se lo clonará la rama master de su respectivo repositorio en Github.--no-docker-for-behave
: Por defectobehave
se corre dentro de un contenedor de Docker para garantizar que la ejecución es siempre la misma y evitar ensuciar el sistema. Esto tiene la desventaja de que es un poco más lento, con lo cual se puede pasar esta opción para correrbehave
directamente en la máquina local. Require que se instale el archivorequirements.txt
en la máquina previamente.
Ejemplo de uso descargando todos los repositorios:
$ ./run-acceptance-tests.sh
Ejemplo de uso descargando sólo los repositorios de App server y Media server:
$ ./run-acceptance-tests.sh --chotuve-auth-repo=../chotuve-auth-server
Es posible correr las pruebas de aceptación sin levantar ningún servicio,
indicándole a behave
la URL de cada uno de los servidores. Esto se hace
corriendo el script run-tests-url.sh
.
Este script únicamente va a correr behave
apuntándolo a las URL indicadas.
Se soportan las siguientes opciones:
--chotuve-[app|auth|media]-url=<URL>
: Requerido. Indica cuál es la URL de cada servidor.--no-docker-for-behave
: Al igual que enrun-acceptance-tests.sh
, permite elegir correrbehave
en la máquina local.
Ejemplo de uso:
$ ./run-tests-url.sh --chotuve-media-url=http://localhost:27080 --chotuve-auth-url=http://localhost:26080 --chotuve-app-url=http://localhost:28080