Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Entregable 3 #79

Merged
merged 136 commits into from
Apr 2, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
136 commits
Select commit Hold shift + click to select a range
8058847
Hotfix
iyanfdezz Mar 5, 2024
a9d3eb0
Mejora stats
UO288443 Mar 5, 2024
8e38023
Mejora CSS
UO288443 Mar 5, 2024
08cc87f
Merge branch 'fixing-stats' of https://github.com/Arquisoft/wiq_es1a …
UO288443 Mar 5, 2024
b169473
Cambios en CSS e inicio test
UO288443 Mar 5, 2024
4b58908
Ahora el tiempo restante se calcula con el ultimo click
iyanfdezz Mar 5, 2024
bffdd48
Merge branch 'fixing-stats' of https://github.com/Arquisoft/wiq_es1a …
iyanfdezz Mar 5, 2024
60e2393
App test make
UO288443 Mar 5, 2024
b2a9558
Test WrongRute
UO288443 Mar 5, 2024
33e0970
Test Authenticate
UO288443 Mar 5, 2024
5abbd6d
Ahora se redondea a 2 decimales
iyanfdezz Mar 5, 2024
69ecdbd
Making progress migrating to a new service
iyanfdezz Mar 5, 2024
d5a7808
fix
iyanfdezz Mar 5, 2024
9f88e38
making progess (game does not end)
iyanfdezz Mar 6, 2024
71252cc
Minor changes
iyanfdezz Mar 7, 2024
90f09e3
Merge branch 'develop' into newstatsservice
iyanfdezz Mar 10, 2024
8e38f12
Fix
iyanfdezz Mar 10, 2024
0c11abe
Trying to make it work
iyanfdezz Mar 10, 2024
e6467c0
Sigue sin ir
iyanfdezz Mar 10, 2024
6e3ffe5
Merge branch 'master' into newstatsservice
iyanfdezz Mar 11, 2024
61b2557
Making progress
iyanfdezz Mar 11, 2024
605f07d
Mejoras en la interfaz del landing
CANCI0 Mar 11, 2024
b0baa59
Empezando cambios en el nav
CANCI0 Mar 11, 2024
e6ccfb7
Seguimos
iyanfdezz Mar 11, 2024
e18ee47
Mejoras + barra de tiempo restante
CANCI0 Mar 11, 2024
5596045
Ahora la barra es más fluida
CANCI0 Mar 11, 2024
b9bc421
Por fin funciona madre de dios
iyanfdezz Mar 11, 2024
3a6d770
Eliminando los console.log
iyanfdezz Mar 11, 2024
ee6ae2f
Añadida barra de tiempo a Batería de sabios
CANCI0 Mar 12, 2024
58359a1
Más mejoras en el login
CANCI0 Mar 12, 2024
b615189
Se han corregido errores de estilo y añadido botones al menú
CANCI0 Mar 12, 2024
534754d
Merge pull request #64 from Arquisoft/Mejorar-IU
CANCI0 Mar 12, 2024
df91317
Se ha cambiado ratio correctas/incorrectas por %de aciertos
iyanfdezz Mar 12, 2024
6702f76
Añadido botón para responder sin esperar a que acabe el tiempo
iyanfdezz Mar 12, 2024
bdd7f3a
Creación de statas para baería. Unificado modelo de stats de clasico …
iyanfdezz Mar 12, 2024
77e28ee
Se ha añadido pestaña de configuración
CANCI0 Mar 12, 2024
d6e8b56
Ahora las temáticas se guardan en el localStorage
CANCI0 Mar 12, 2024
54c7903
Añadido manejo de errores
CANCI0 Mar 12, 2024
70d70b7
Arreglada ambigüedad de modos en las stats
iyanfdezz Mar 12, 2024
ead5283
Inexplicablemente no funciona
CANCI0 Mar 12, 2024
610b330
Añadidos parámetros de tiempo a la configuración
CANCI0 Mar 12, 2024
ff25cb9
Ya se guardan las stats de Bateria
iyanfdezz Mar 12, 2024
862823b
El getStats va pero no funciona el cambiar de modo
iyanfdezz Mar 12, 2024
13813b6
Añadido ranking
iyanfdezz Mar 13, 2024
8fa4a7e
Arreglos (no funciona guardar más de una partida)
iyanfdezz Mar 13, 2024
35a770f
Descubrí el fallo (pendiente de arreglo)
iyanfdezz Mar 13, 2024
82dc0b4
Ya funciona toda la configuración
CANCI0 Mar 13, 2024
22316ca
Merge pull request #65 from Arquisoft/Configuración
CANCI0 Mar 13, 2024
d25e29a
Ya funciona el guardado de varias partidas
iyanfdezz Mar 18, 2024
5fcd715
Eliminando console.log
iyanfdezz Mar 18, 2024
b9cba48
Ya funcioan bien la vista de estadísticas y ranking
iyanfdezz Mar 18, 2024
e27117d
Merge branch 'develop' into newstatsservice
CANCI0 Mar 18, 2024
b236ca3
Merge pull request #67 from Arquisoft/newstatsservice
CANCI0 Mar 18, 2024
7dbd274
Añadiendo distintos parametros al ranking
iyanfdezz Mar 19, 2024
b28c331
Añadido combobox
iyanfdezz Mar 19, 2024
ca6a4fa
Merge branch 'newstatsservice' of https://github.com/Arquisoft/wiq_es…
iyanfdezz Mar 20, 2024
5c93b07
Redodeado el tiempo restante
iyanfdezz Mar 20, 2024
881de30
Separado el Ranking a una vista aparte
iyanfdezz Mar 20, 2024
20452ff
Arreglando fallos y añadido link de ranking
iyanfdezz Mar 20, 2024
245f088
Arreglos
iyanfdezz Mar 20, 2024
09c488a
Ya se guarda el tiempo por pergunta
iyanfdezz Mar 21, 2024
e93d42d
Añadido filtrado de ranking por tiempo medio
iyanfdezz Mar 21, 2024
ee45456
Ya se puede filtrar por tiempo medio
iyanfdezz Mar 21, 2024
2772b56
Ya se guarda la última pregunta
iyanfdezz Mar 21, 2024
85a01ca
Avances en el estilo de la aplicación
CANCI0 Mar 21, 2024
436b27c
Ya se puede volver a filtrar por puntos de media
iyanfdezz Mar 21, 2024
235e50d
Merge pull request #68 from Arquisoft/newstatsservice
iyanfdezz Mar 21, 2024
6b58bf1
Todas las vistas mejoradas
CANCI0 Mar 21, 2024
b9f73a3
Añadida ruta de stats al nav
CANCI0 Mar 21, 2024
c19ce22
Modales añadidos
CANCI0 Mar 21, 2024
2081c8c
Añadido Jordi
iyanfdezz Mar 21, 2024
d4489b0
Merge remote-tracking branch 'origin/UI-Improvement' into newstatsser…
iyanfdezz Mar 21, 2024
6d129bf
mejorando la UI de stats
iyanfdezz Mar 21, 2024
3d6b2df
mejorando la UI de ranking
iyanfdezz Mar 21, 2024
9b78782
Añadido el enlace al ranking
iyanfdezz Mar 21, 2024
5c310b6
Merge pull request #69 from Arquisoft/newstatsservice
iyanfdezz Mar 22, 2024
91d5563
Arreglo en una URL
iyanfdezz Mar 23, 2024
c63b5cc
Merge branch 'develop' of https://github.com/Arquisoft/wiq_es1a into …
iyanfdezz Mar 23, 2024
b634cee
Otro arreglo en la URL
iyanfdezz Mar 23, 2024
680e2cd
Soy imbecil
iyanfdezz Mar 23, 2024
a7b6d96
Añadiendo vista básica de perfil de usuario
iyanfdezz Mar 28, 2024
8988b80
Ya funciona el perfil de usuario
iyanfdezz Mar 28, 2024
abb7c8a
Añadido historial de partidas recientes en el perfil del usuario
iyanfdezz Mar 28, 2024
50bae90
Merge pull request #71 from Arquisoft/newstatsservice
iyanfdezz Mar 28, 2024
572bec0
Especificación de OpenAPI
iyanfdezz Mar 28, 2024
99a2489
Añadiendo errores forbidden
iyanfdezz Mar 28, 2024
006eeaa
Arreglos
iyanfdezz Mar 28, 2024
d954b4d
Merge branch 'develop' into openapi
iyanfdezz Mar 28, 2024
6792e67
Ajustando tamaños
iyanfdezz Mar 28, 2024
838a58a
Mejorando la vista del Sobre nosotros y otras correcciones
iyanfdezz Mar 30, 2024
0d0a54f
Empezando a hacer test de Stats
iyanfdezz Mar 30, 2024
4be86bc
Empezando test de perfil
iyanfdezz Mar 30, 2024
f15ea50
Test de Ranking
iyanfdezz Apr 1, 2024
4d988c6
Ya van los test de Stats
iyanfdezz Apr 1, 2024
662e1f4
Más test de perfil
iyanfdezz Apr 1, 2024
bfc765e
Eliminado el timeout de las estadisticas, añadido botón de buscar
iyanfdezz Apr 1, 2024
5846d72
Merge pull request #74 from Arquisoft/openapi
iyanfdezz Apr 1, 2024
798844f
Añadidos márgenes a varios componentes
CANCI0 Apr 1, 2024
951abb0
Ahora los elementos del Nav están bien centrados
CANCI0 Apr 1, 2024
49c2de3
Mejoras en la vista de estadísticas
CANCI0 Apr 1, 2024
b82cff3
Se ha añadido hover a los links del nav
CANCI0 Apr 1, 2024
5b0a153
Solucionado error con los mensajes de error en el login
CANCI0 Apr 1, 2024
0d3ea1d
Error de nombre
CANCI0 Apr 1, 2024
4d02709
Merge pull request #75 from Arquisoft/UI-Improvement
CANCI0 Apr 1, 2024
77837e8
Algunas pruebas arregladas
CANCI0 Apr 1, 2024
620a303
Test de Sobre Nosotros
iyanfdezz Apr 1, 2024
de824d0
Clasico va, COnfig no
CANCI0 Apr 1, 2024
12475b0
Merge branch '50-realizar-pruebas-unitarias' of https://github.com/Ar…
CANCI0 Apr 1, 2024
affb794
Pasa un tests de bateria, el otro no
CANCI0 Apr 1, 2024
66ed707
Ya van los dos tests
CANCI0 Apr 1, 2024
f5a1f66
Pasan tests de WrongRoute
CANCI0 Apr 1, 2024
ace78e7
Pasan tests de Home
CANCI0 Apr 1, 2024
a5d5dcb
Pasan todos los tests
CANCI0 Apr 1, 2024
c70de84
Modificado release.yml
iyanfdezz Apr 1, 2024
ae16fc5
Añadidos tests del gateway service
iyanfdezz Apr 1, 2024
45b5d3e
Añadidos test del user service
iyanfdezz Apr 1, 2024
ce33cee
Correcciones en los test de user service (ya van)
iyanfdezz Apr 1, 2024
6b8ad62
Ahora se muestran marcadas las temáticas actuales
CANCI0 Apr 1, 2024
4bedbdd
Eliminados los test de guardado de partidas
iyanfdezz Apr 1, 2024
aa35da5
Merge branch '50-realizar-pruebas-unitarias' of https://github.com/Ar…
iyanfdezz Apr 1, 2024
02f0b64
Arreglando el avgTime
iyanfdezz Apr 1, 2024
365e918
Más arreglos del tiempo medio
iyanfdezz Apr 2, 2024
bed83e6
Cambios en el environment
iyanfdezz Apr 2, 2024
7b7f566
Cambiando el nombre de la pestaña
iyanfdezz Apr 2, 2024
24a781e
Merge pull request #76 from Arquisoft/50-realizar-pruebas-unitarias
CANCI0 Apr 2, 2024
9f22d87
Corregido error de cara al despliegue
CANCI0 Apr 2, 2024
0129c79
Más correcciones para el despliegue
CANCI0 Apr 2, 2024
f083ba3
Añadido gestión de error al modo clásico
CANCI0 Apr 2, 2024
bbbd395
Arreglado error de formato en el tiempo medio de perfil
CANCI0 Apr 2, 2024
c77a054
Warnings eliminados
CANCI0 Apr 2, 2024
75388ca
Texto de los modales justificado
CANCI0 Apr 2, 2024
d707062
Ya funciona el tiempo de Batería
iyanfdezz Apr 2, 2024
39ef09d
Merge branch '50-realizar-pruebas-unitarias' of https://github.com/Ar…
iyanfdezz Apr 2, 2024
f3d3f3b
Eliminando console.log
iyanfdezz Apr 2, 2024
1cfab1b
Merge pull request #77 from Arquisoft/50-realizar-pruebas-unitarias
iyanfdezz Apr 2, 2024
5917c61
Merge pull request #78 from Arquisoft/openapi
iyanfdezz Apr 2, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions .env
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ teamname="wiq_es1a"
AUTH_SERVICE_URL=http://localhost:8002
USER_SERVICE_URL=http://localhost:8001
QUESTION_SERVICE_URL=http://localhost:8003
AUTH_SERVICE_URL=http://localhost:8004
STATS_SERVICE_URL=http://localhost:8004
GATEWAY_SERVICE_URL=http://gatewayservice:8000
MONGODB_URI=mongodb://localhost:27017/userdb
MONGODB_URI=mongodb://localhost:27017/userdb
MONGODB_STATS_URI=mongodb://localhost:27017/statsdb
6 changes: 5 additions & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,10 @@ jobs:
needs: [e2e-tests]
steps:
- uses: actions/checkout@v4
- name: Update OpenAPI configuration
run: |
DEPLOY_HOST=${{ secrets.DEPLOY_HOST }}
sed -i "s/SOMEIP/${DEPLOY_HOST}/g" gatewayservice/openapi.yaml
- name: Publish to Registry
uses: elgohr/Publish-Docker-Github-Action@v5
with:
Expand Down Expand Up @@ -170,4 +174,4 @@ jobs:
wget https://raw.githubusercontent.com/arquisoft/wiq_es1a/master/docker-compose.yml -O docker-compose.yml
wget https://raw.githubusercontent.com/arquisoft/wiq_es1a/master/.env -O .env
docker compose --profile prod down
docker compose --profile prod up -d
docker compose --profile prod up -d --pull always
4 changes: 1 addition & 3 deletions docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,14 +28,12 @@ services:
build: ./statsservice
depends_on:
- mongodb
- userservice
ports:
- "8004:8004"
networks:
- mynetwork
environment:
MONGODB_URI: mongodb://mongodb:27017/userdb
USER_SERVICE_URL: http://userservice:8001
MONGODB_STATS_URI: mongodb://mongodb:27017/statsdb

authservice:
container_name: authservice-${teamname:-defaultASW}
Expand Down
84 changes: 65 additions & 19 deletions gatewayservice/gateway-service.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,17 @@ const express = require("express");
const axios = require("axios");
const cors = require("cors");
const promBundle = require("express-prom-bundle");

const YAML = require('yaml');
const fs = require("fs");
const swaggerUi = require('swagger-ui-express');
const app = express();
const port = 8000;

const authServiceUrl = process.env.AUTH_SERVICE_URL || "http://localhost:8002";
const userServiceUrl = process.env.USER_SERVICE_URL || "http://localhost:8001";
const questionServiceUrl =
process.env.QUESTION_SERVICE_URL || "http://localhost:8003";
const statsServiceUrl = process.env.AUTH_SERVICE_URL || "http://localhost:8004";
const statsServiceUrl = process.env.STATS_SERVICE_URL || "http://localhost:8004";

app.use(cors());
app.use(express.json());
Expand Down Expand Up @@ -53,6 +55,36 @@ app.post("/adduser", async (req, res) => {
}
});

app.get("/userInfo", async (req, res) => {
try {
// Forward the question request to the user service
const userResponse = await axios.get(
userServiceUrl + "/userInfo",
{ params: req.query }
);
res.json(userResponse.data);
} catch (error) {
res
.status(error.response.status)
.json({ error: error.response.data.error });
}
});

app.post("/saveGameList", async (req, res) => {
try {
// Forward the save game request to the stats service
const gameResponse = await axios.post(
userServiceUrl + "/saveGameList",
req.body
);
res.json(gameResponse.data);
} catch (error) {
res
.status(error.response.status)
.json({ error: error.response.data.error });
}
});

app.get("/questions", async (req, res) => {
try {
// Forward the question request to the question service
Expand All @@ -68,6 +100,21 @@ app.get("/questions", async (req, res) => {
}
});

app.post("/questions", async (req, res) => {
try {
// Forward the question request to the question service
const questionResponse = await axios.post(
questionServiceUrl + "/questions",
{ body: req.body }
);
res.json(questionResponse.data);
} catch (error) {
res
.status(error.response.status)
.json({ error: error.response.data.error });
}
});

app.get("/stats", async (req, res) => {
try {
// Forward the stats request to the stats service
Expand Down Expand Up @@ -97,10 +144,9 @@ app.post("/saveGame", async (req, res) => {
}
});

app.get("/getstats", async (req, res) => {
app.get("/ranking", async (req, res) => {
try {
// Forward the stats request to the stats service
const statsResponse = await axios.get(userServiceUrl + "/getstats", {
const statsResponse = await axios.get(statsServiceUrl + "/ranking", {
params: req.query,
});
res.json(statsResponse.data);
Expand All @@ -111,20 +157,20 @@ app.get("/getstats", async (req, res) => {
}
});

app.post("/userSaveGame", async (req, res) => {
try {
// Forward the save game request to the stats service
const gameResponse = await axios.post(
userServiceUrl + "/userSaveGame",
req.body
);
res.json(gameResponse.data);
} catch (error) {
res
.status(error.response.status)
.json({ error: error.response.data.error });
}
});
openapiPath='./openapi.yaml'
if (fs.existsSync(openapiPath)) {
const file = fs.readFileSync(openapiPath, 'utf8');

// Parse the YAML content into a JavaScript object representing the Swagger document
const swaggerDocument = YAML.parse(file);

// Serve the Swagger UI documentation at the '/api-doc' endpoint
// This middleware serves the Swagger UI files and sets up the Swagger UI page
// It takes the parsed Swagger document as input
app.use('/api-doc', swaggerUi.serve, swaggerUi.setup(swaggerDocument));
} else {
console.log("Not configuring OpenAPI. Configuration file not present.")
}

// Start the gateway service
const server = app.listen(port, () => {
Expand Down
32 changes: 32 additions & 0 deletions gatewayservice/gateway-service.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,12 @@ describe('Gateway Service', () => {
}
],
});
} else if (url.endsWith('/stats')) {
return Promise.resolve({ data: { stats: 'mockedStats' } });
} else if (url.endsWith('/userInfo')) {
return Promise.resolve({ data: { userInfo: 'mockedUserInfo' } });
} else if (url.endsWith('/ranking')) {
return Promise.resolve({ data: { ranking: 'mockedRanking' } });
}
});

Expand Down Expand Up @@ -89,4 +95,30 @@ describe('Gateway Service', () => {
}
]);
});

// Test /userInfo endpoint
it('should forward userInfo request to user service', async () => {
const response = await request(app)
.get('/userInfo')
.query({ user: 'testuser' });

expect(response.statusCode).toBe(200);
expect(response.body).toEqual({ userInfo: 'mockedUserInfo' });
});

// Test /stats endpoint
it('should forward stats request to stats service', async () => {
const response = await request(app).get("/stats").query({ user: 'testuser', gamemode: 'classic' });

expect(response.statusCode).toBe(200);
expect(response.body).toEqual({ stats: 'mockedStats' });
});

// Test /ranking endpoint
it('should forward ranking request to stats service', async () => {
const response = await request(app).get("/ranking").query({ gamemode: 'classic', filterBy: 'all' });

expect(response.statusCode).toBe(200);
expect(response.body).toEqual({ ranking: 'mockedRanking' });
});
});
Loading