From 9c6dfaaca5e9e54ae64d4daeaf2be6400bb1973f Mon Sep 17 00:00:00 2001 From: AlecM33 Date: Sun, 6 Nov 2022 17:09:46 -0500 Subject: [PATCH] correctly 404 invalid games --- server/modules/GameManager.js | 26 ++++++++------------ server/modules/SocketManager.js | 3 +++ spec/unit/server/modules/GameManager_Spec.js | 2 ++ 3 files changed, 15 insertions(+), 16 deletions(-) diff --git a/server/modules/GameManager.js b/server/modules/GameManager.js index 8cec665..3befba6 100644 --- a/server/modules/GameManager.js +++ b/server/modules/GameManager.js @@ -317,26 +317,20 @@ class GameManager { namespace.in(game.accessCode).emit(globals.EVENT_IDS.START_GAME); }; - handleRequestForGameState = async (namespace, logger, gameRunner, accessCode, personCookie, ackFn, clientSocket) => { - const game = gameRunner.activeGames.get(accessCode); - if (game) { - const matchingPerson = findPersonByField(game, 'cookie', personCookie); - if (matchingPerson) { - if (matchingPerson.socketId === clientSocket.id) { - logger.trace('matching person found with an established connection to the room: ' + matchingPerson.name); - ackFn(GameStateCurator.getGameStateFromPerspectiveOfPerson(game, matchingPerson, gameRunner, clientSocket, logger)); - } else { - logger.trace('matching person found with a new connection to the room: ' + matchingPerson.name); - clientSocket.join(accessCode); - matchingPerson.socketId = clientSocket.id; - ackFn(GameStateCurator.getGameStateFromPerspectiveOfPerson(game, matchingPerson, gameRunner, clientSocket, logger)); - } + handleRequestForGameState = async (game, namespace, logger, gameRunner, accessCode, personCookie, ackFn, clientSocket) => { + const matchingPerson = findPersonByField(game, 'cookie', personCookie); + if (matchingPerson) { + if (matchingPerson.socketId === clientSocket.id) { + logger.trace('matching person found with an established connection to the room: ' + matchingPerson.name); + ackFn(GameStateCurator.getGameStateFromPerspectiveOfPerson(game, matchingPerson, gameRunner, clientSocket, logger)); } else { - rejectClientRequestForGameState(ackFn); + logger.trace('matching person found with a new connection to the room: ' + matchingPerson.name); + clientSocket.join(accessCode); + matchingPerson.socketId = clientSocket.id; + ackFn(GameStateCurator.getGameStateFromPerspectiveOfPerson(game, matchingPerson, gameRunner, clientSocket, logger)); } } else { rejectClientRequestForGameState(ackFn); - logger.trace('the game ' + accessCode + ' was not found'); } }; diff --git a/server/modules/SocketManager.js b/server/modules/SocketManager.js index 91d9f30..ad2133b 100644 --- a/server/modules/SocketManager.js +++ b/server/modules/SocketManager.js @@ -51,6 +51,7 @@ class SocketManager { switch (eventId) { case EVENT_IDS.FETCH_GAME_STATE: await gameManager.handleRequestForGameState( + game, this.namespace, this.logger, gameManager.activeGameRunner, @@ -94,6 +95,8 @@ class SocketManager { default: break; } + } else { + ackFn(null); } }); }; diff --git a/spec/unit/server/modules/GameManager_Spec.js b/spec/unit/server/modules/GameManager_Spec.js index 5be4d16..14d6343 100644 --- a/spec/unit/server/modules/GameManager_Spec.js +++ b/spec/unit/server/modules/GameManager_Spec.js @@ -192,6 +192,7 @@ describe('GameManager', () => { player.socketId = 'socket1'; spyOn(namespace.in(), 'emit'); gameManager.handleRequestForGameState( + gameRunner.activeGames.get('abc'), namespace, logger, gameRunner, @@ -212,6 +213,7 @@ describe('GameManager', () => { player.socketId = 'socket_111111'; spyOn(namespace.in(), 'emit'); gameManager.handleRequestForGameState( + gameRunner.activeGames.get('abc'), namespace, logger, gameRunner,