test: cover malformed hello runtime flow
This commit is contained in:
@@ -287,6 +287,44 @@ describe("Yonexus.Server runtime flow", () => {
|
||||
expect(recordAfterHeartbeat?.lastHeartbeatAt).toBe(now);
|
||||
});
|
||||
|
||||
it("returns MALFORMED_MESSAGE for hello without payload and keeps the connection open", async () => {
|
||||
const store = createMockStore();
|
||||
const transportState = createMockTransport();
|
||||
const runtime = createYonexusServerRuntime({
|
||||
config: {
|
||||
followerIdentifiers: ["client-a"],
|
||||
notifyBotToken: "stub-token",
|
||||
adminUserId: "admin-user",
|
||||
listenHost: "127.0.0.1",
|
||||
listenPort: 8787
|
||||
},
|
||||
store,
|
||||
transport: transportState.transport,
|
||||
now: () => 1_710_000_000
|
||||
});
|
||||
|
||||
await runtime.start();
|
||||
|
||||
const connection = createConnection();
|
||||
await runtime.handleMessage(
|
||||
connection,
|
||||
encodeBuiltin({
|
||||
type: "hello",
|
||||
requestId: "req-bad-hello",
|
||||
timestamp: 1_710_000_000
|
||||
})
|
||||
);
|
||||
|
||||
expect(transportState.sentToConnection).toHaveLength(1);
|
||||
const errorResponse = decodeBuiltin(transportState.sentToConnection[0].message);
|
||||
expect(errorResponse.type).toBe("error");
|
||||
expect(errorResponse.payload).toMatchObject({
|
||||
code: "MALFORMED_MESSAGE",
|
||||
message: "hello payload is required"
|
||||
});
|
||||
expect((connection.ws.close as ReturnType<typeof vi.fn>)).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it("rejects unauthenticated rule messages by closing the connection", async () => {
|
||||
const store = createMockStore();
|
||||
const transportState = createMockTransport();
|
||||
|
||||
Reference in New Issue
Block a user