UNPKG

craftping

Version:

A universal ping/query library for Minecraft servers.

107 lines (94 loc) 4.17 kB
import {expect, test} from '@jest/globals'; import {testPacketReadWrite} from "./util.js"; import HandshakeRequest from "../src/Packet/Query/HandshakeRequest.js"; import HandshakeResponse from "../src/Packet/Query/HandshakeResponse.js"; import BasicStatRequest from "../src/Packet/Query/BasicStatRequest.js"; import BasicStatResponse from "../src/Packet/Query/BasicStatResponse.js"; import FullStatRequest from "../src/Packet/Query/FullStatRequest.js"; import FullStatResponse from "../src/Packet/Query/FullStatResponse.js"; test('Read and write HandshakeRequest', async () => { let packet = await testPacketReadWrite('query-basic', HandshakeRequest); expect(packet.getSessionId()).toBe(134745357); expect(packet.getType()).toBe(9); }); test('Read and write HandshakeResponse', async () => { let packet = await testPacketReadWrite('query-basic', HandshakeResponse); expect(packet.getSessionId()).toBe(134745357); expect(packet.getChallengeToken()).toBe(12475691); }); test('Read and write BasicStatRequest', async () => { let packet = await testPacketReadWrite('query-basic', BasicStatRequest); expect(packet.getSessionId()).toBe(134745357); expect(packet.getChallengeToken()).toBe(12475691); expect(packet.getType()).toBe(0); }); test('Read and write BasicStatResponse', async () => { let packet = await testPacketReadWrite('query-basic', BasicStatResponse); expect(packet.getSessionId()).toBe(134745357); expect(packet.getMotd()).toBe("A Minecraft server"); expect(packet.getGameType()).toBe("SMP"); expect(packet.getMap()).toBe("world"); expect(packet.getPlayerCount()).toBe(0); expect(packet.getMaxPlayers()).toBe(20); expect(packet.getHostPort()).toBe(25565); expect(packet.getHostIp()).toBe("127.0.1.1"); }); test('Read and write FullStatRequest', async () => { let packet = await testPacketReadWrite('query-full', FullStatRequest); expect(packet.getSessionId()).toBe(17040910); expect(packet.getChallengeToken()).toBe(16571891); expect(packet.getType()).toBe(0); }); test('Read and write FullStatResponse', async () => { let packet = await testPacketReadWrite('query-full', FullStatResponse); expect(packet.getSessionId()).toBe(17040910); expect(packet.getMotd()).toBe("A Minecraft server"); expect(packet.getGameId()).toBe("MINECRAFT"); expect(packet.getGameType()).toBe("SMP"); expect(packet.getMap()).toBe("world"); expect(packet.getVersion()).toBe("1.20.1"); expect(packet.getPlugins()).toBe(""); expect(packet.getPlayerCount()).toBe(0); expect(packet.getMaxPlayers()).toBe(20); expect(packet.getHostPort()).toBe(25565); expect(packet.getHostIp()).toBe("127.0.1.1"); expect(packet.getPlayers()).toEqual([]); }); test.each([ ["UTF-8", false], ["ISO-8859-1", true] ])('Detect encoding %s in BasicStatResponse', async (name, useLegacyEncoding) => { let buffer = new BasicStatResponse(useLegacyEncoding) .setHostIp("12.34.56.78") .setHostPort(1234) .setMaxPlayers(123) .setPlayerCount(12) .setMap("example_map") .setGameType("example_game_type") .setMotd("Example MOTD § £") .generateSessionId() .write(); let packet = new BasicStatResponse().read(buffer); expect(packet.getMotd()).toBe("Example MOTD § £"); }); test.each([ ["UTF-8", false, "1.21.11"], ["ISO-8859-1", true, "1.12.2"] ])('Detect encoding %s in FullStatResponse', async (name, useLegacyEncoding, version) => { let buffer = new FullStatResponse(useLegacyEncoding) .setHostIp("12.34.56.78") .setHostPort(1234) .setMaxPlayers(123) .setPlayerCount(12) .setMap("example_map") .setGameType("example_game_type") .setMotd("Example MOTD § £") .setPlayers(["Player1", "Player2", "Player3"]) .setPlugins("ExamplePlugin1;ExamplePlugin2") .setVersion(version) .setGameId("EXAMPLE_GAME_ID") .generateSessionId() .write(); let packet = new FullStatResponse().read(buffer); expect(packet.getMotd()).toBe("Example MOTD § £"); });