@Test public void testHandleChallengeRequests() throws Exception { S2C_CHALLENGE_Packet packet = mock(S2C_CHALLENGE_Packet.class); when(packet.getChallengeNumber()).thenReturn(1234); when(server.getReply()).thenReturn(packet); this.server.handleResponseForRequest(GameServer.REQUEST_CHALLENGE); assertEquals(1234, this.server.challengeNumber); verify(this.server).sendRequest(any(A2S_PLAYER_Packet.class)); }
@Test public void testHandleRulesRequests() throws Exception { S2A_RULES_Packet packet = mock(S2A_RULES_Packet.class); HashMap<String, String> rulesMap = new HashMap<String, String>(); rulesMap.put("test", "test"); when(packet.getRulesHash()).thenReturn(rulesMap); when(server.getReply()).thenReturn(packet); this.server.handleResponseForRequest(GameServer.REQUEST_RULES); assertEquals("test", this.server.rulesHash.get("test")); verify(this.server).sendRequest(any(A2S_RULES_Packet.class)); }
@Test public void testHandleInfoRequests() throws Exception { S2A_INFO2_Packet packet = mock(S2A_INFO2_Packet.class); HashMap<String, Object> infoMap = new HashMap<String, Object>(); infoMap.put("test", "test"); when(packet.getInfo()).thenReturn(infoMap); when(server.getReply()).thenReturn(packet); this.server.handleResponseForRequest(GameServer.REQUEST_INFO); assertEquals("test", this.server.serverInfo.get("test")); verify(this.server).sendRequest(any(A2S_INFO_Packet.class)); }
@Test public void testHandlePlayerRequests() throws Exception { SteamPlayer player = mock(SteamPlayer.class); S2A_PLAYER_Packet packet = mock(S2A_PLAYER_Packet.class); HashMap<String, SteamPlayer> playerMap = new HashMap<String, SteamPlayer>(); playerMap.put("test", player); when(packet.getPlayerHash()).thenReturn(playerMap); when(server.getReply()).thenReturn(packet); this.server.handleResponseForRequest(GameServer.REQUEST_PLAYER); // Asserting null because we do not populate our list of players // from S2A Player Packets at the moment because it seems like Rust game servers // do not implement the ability to return valid data from those packets // Instead player data is fully retrieved from the RCON status command, instead // of a mixture of that command plus the S2A Player Packet assertNull(this.server.playerHash); verify(this.server).sendRequest(any(A2S_PLAYER_Packet.class)); }