add mule and @ts-ignore where needed

This commit is contained in:
StarAppeal
2025-09-25 02:03:09 +02:00
parent 35fe178b02
commit 46b5845140
14 changed files with 173 additions and 43 deletions
+1
View File
@@ -4,6 +4,7 @@ import express from "express";
import {RestAuth} from "../../src/rest/auth";
import {JwtAuthenticator} from "../../src/utils/jwtAuthenticator";
import {PasswordUtils} from "../../src/utils/passwordUtils";
// @ts-ignore
import {createMockJwtAuthenticator, createMockUserService, createPublicTestApp} from "../helpers/testSetup";
import crypto from "crypto";
@@ -2,6 +2,7 @@ import { describe, it, expect } from "vitest";
import request from "supertest";
import { JwtTokenPropertiesExtractor } from "../../src/rest/jwtTokenPropertiesExtractor";
// @ts-ignore
import { createTestApp } from "../helpers/testSetup";
describe("JwtTokenPropertiesExtractor", () => {
@@ -2,6 +2,7 @@ import { describe, it, expect, vi, beforeEach, afterEach, type Mocked } from "vi
import { Request, Response, NextFunction } from "express";
import { authenticateJwt } from "../../../src/rest/middleware/authenticateJwt";
// @ts-ignore
import { createMockJwtAuthenticator } from "../../helpers/testSetup";
vi.mock("../../../src/utils/jwtAuthenticator");
@@ -43,6 +44,7 @@ describe("authenticateJwt middleware", () => {
_authenticateJwt(req, res, next);
expect(mockJwtInstance.verifyToken).toHaveBeenCalledWith("valid-jwt-token");
// @ts-ignore
expect(req.payload).toEqual(mockPayload);
expect(next).toHaveBeenCalledOnce();
expect(res.status).not.toHaveBeenCalled();
+2
View File
@@ -1,6 +1,7 @@
import { describe, it, expect, vi, beforeEach, afterEach, type Mocked } from "vitest";
import { Request, Response, NextFunction } from "express";
import { isAdmin } from "../../../src/rest/middleware/isAdmin";
// @ts-ignore
import { createMockUserService } from "../../helpers/testSetup";
import { notFound } from "../../../src/rest/utils/responses";
@@ -28,6 +29,7 @@ describe("isAdmin middleware", () => {
mockedUserService = createMockUserService();
req = {
// @ts-ignore
payload: { uuid, username: "username", id: ""}
};
+1
View File
@@ -2,6 +2,7 @@ import {describe, it, expect, vi, beforeEach, afterEach} from "vitest";
import request from "supertest";
import {RestUser} from "../../src/rest/restUser";
// @ts-ignore
import {createMockUserService, setupTestEnvironment, type TestEnvironment} from "../helpers/testSetup";
vi.mock("../../src/services/db/UserService", () => ({
+1
View File
@@ -3,6 +3,7 @@ import request from "supertest";
import express from "express";
import { RestWebSocket } from "../../src/rest/restWebSocket";
// @ts-ignore
import { createTestApp, createMockWebSocketServer } from "../helpers/testSetup";
vi.mock("../../src/websocket", () => ({
+1
View File
@@ -3,6 +3,7 @@ import request from "supertest";
import express from "express";
import { SpotifyTokenGenerator } from "../../src/rest/spotifyTokenGenerator";
// @ts-ignore
import { createTestApp, createMockSpotifyTokenService } from "../helpers/testSetup";
vi.mock("../../src/db/services/spotifyTokenService");
+2
View File
@@ -4,11 +4,13 @@ import { Server } from "../src/server";
import { Router, type Request, type Response, type NextFunction } from "express"; // Import Express types
import type { Express } from "express";
import { authLimiter } from "../src/rest/middleware/rateLimit";
import {
createMockJwtAuthenticator,
createMockSpotifyPollingService,
createMockSpotifyTokenService,
createMockUserService
// @ts-ignore
} from "./helpers/testSetup";
@@ -6,6 +6,7 @@ import { SpotifyTokenService } from "../../src/services/spotifyTokenService";
import { appEventBus, SPOTIFY_STATE_UPDATED_EVENT } from "../../src/utils/eventBus";
import { SpotifyPollingService } from "../../src/services/spotifyPollingService";
import { IUser } from "../../src/db/models/user";
// @ts-ignore
import { createMockSpotifyApiService, createMockSpotifyTokenService, createMockUserService } from "../helpers/testSetup";
vi.mock("../../src/services/db/UserService");
@@ -4,6 +4,7 @@ import {GetStateEvent} from "../../../../src/utils/websocket/websocketCustomEven
import {GetSettingsEvent} from "../../../../src/utils/websocket/websocketCustomEvents/getSettingsEvent";
import {GetSpotifyUpdatesEvent} from "../../../../src/utils/websocket/websocketCustomEvents/getSpotifyUpdatesEvent";
import {SpotifyPollingService} from "../../../../src/services/spotifyPollingService";
// @ts-ignore
import {createMockSpotifyPollingService,} from "../../../helpers/testSetup";
import {StopSpotifyUpdatesEvent} from "../../../../src/utils/websocket/websocketCustomEvents/stopSpotifyUpdatesEvent";
import {GetWeatherUpdatesEvent
+27 -26
View File
@@ -1,15 +1,16 @@
import { describe, it, expect, vi, beforeEach, type Mocked } from "vitest";
import { Server } from "http";
import { WebSocket, Server as WebSocketServer } from "ws";
import { ExtendedWebSocketServer } from "../src/websocket";
import { WebsocketServerEventHandler } from "../src/utils/websocket/websocketServerEventHandler";
import { WebsocketEventHandler } from "../src/utils/websocket/websocketEventHandler";
import { getEventListeners } from "../src/utils/websocket/websocketCustomEvents/websocketEventUtils";
import { createMockUserService} from "./helpers/testSetup";
import {describe, it, expect, vi, beforeEach, type Mocked} from "vitest";
import {Server} from "http";
import {WebSocket, Server as WebSocketServer} from "ws";
import {ExtendedWebSocketServer} from "../src/websocket";
import {WebsocketServerEventHandler} from "../src/utils/websocket/websocketServerEventHandler";
import {WebsocketEventHandler} from "../src/utils/websocket/websocketEventHandler";
import {getEventListeners} from "../src/utils/websocket/websocketCustomEvents/websocketEventUtils";
// @ts-ignore
import {createMockJwtAuthenticator, createMockUserService} from "./helpers/testSetup";
import {UserService} from "../src/services/db/UserService";
import {SpotifyPollingService} from "../src/services/spotifyPollingService";
import { USER_UPDATED_EVENT, SPOTIFY_STATE_UPDATED_EVENT } from "../src/utils/eventBus";
import { WebsocketEventType } from "../src/utils/websocket/websocketCustomEvents/websocketEventType";
import {USER_UPDATED_EVENT, SPOTIFY_STATE_UPDATED_EVENT} from "../src/utils/eventBus";
import {WebsocketEventType} from "../src/utils/websocket/websocketCustomEvents/websocketEventType";
import {WeatherPollingService} from "../src/services/weatherPollingService";
let mockWssInstance: Mocked<WebSocketServer>;
@@ -31,7 +32,7 @@ vi.mock("../src/utils/eventBus", () => ({
vi.mock("ws", () => ({
Server: vi.fn().mockImplementation(() => mockWssInstance),
WebSocket: { OPEN: 1, CLOSED: 3 },
WebSocket: {OPEN: 1, CLOSED: 3},
}));
vi.mock("../src/utils/verifyClient");
@@ -70,7 +71,7 @@ describe("ExtendedWebSocketServer", () => {
mockUserService = createMockUserService();
extendedWss = new ExtendedWebSocketServer(mockHttpServer, mockUserService, mockSpotifyPollingService, mockWeatherPollingService);
extendedWss = new ExtendedWebSocketServer(mockHttpServer, mockUserService, mockSpotifyPollingService, mockWeatherPollingService, createMockJwtAuthenticator() as any);
});
describe("Constructor and Setup", () => {
@@ -96,22 +97,22 @@ describe("ExtendedWebSocketServer", () => {
describe("broadcast", () => {
it("should send a message to all connected clients that are OPEN", () => {
const client1 = { readyState: WebSocket.OPEN, send: vi.fn() };
const client2 = { readyState: WebSocket.CLOSED, send: vi.fn() };
const client1 = {readyState: WebSocket.OPEN, send: vi.fn()};
const client2 = {readyState: WebSocket.CLOSED, send: vi.fn()};
mockWssInstance.clients.add(client1 as any).add(client2 as any);
extendedWss.broadcast("hello");
expect(client1.send).toHaveBeenCalledWith("hello", { binary: false });
expect(client1.send).toHaveBeenCalledWith("hello", {binary: false});
expect(client2.send).not.toHaveBeenCalled();
});
});
describe("sendMessageToUser", () => {
it("should send a message to a specific user by their UUID", () => {
const client1 = { readyState: WebSocket.OPEN, payload: { uuid: "uuid-1" }, send: vi.fn() };
const client2 = { readyState: WebSocket.OPEN, payload: { uuid: "uuid-2" }, send: vi.fn() };
const client1 = {readyState: WebSocket.OPEN, payload: {uuid: "uuid-1"}, send: vi.fn()};
const client2 = {readyState: WebSocket.OPEN, payload: {uuid: "uuid-2"}, send: vi.fn()};
mockWssInstance.clients.add(client1 as any).add(client2 as any);
extendedWss.sendMessageToUser("uuid-1", "private");
expect(client1.send).toHaveBeenCalledWith("private", { binary: false });
expect(client1.send).toHaveBeenCalledWith("private", {binary: false});
expect(client2.send).not.toHaveBeenCalled();
});
});
@@ -124,7 +125,7 @@ describe("ExtendedWebSocketServer", () => {
beforeEach(() => {
connectionHandler = vi.mocked(mockServerEventHandler.enableConnectionEvent).mock.calls[0][0];
mockWsClient = {
emit: vi.fn(), on: vi.fn(), user: { lastState: { global: { mode: "idle" } } },
emit: vi.fn(), on: vi.fn(), user: {lastState: {global: {mode: "idle"}}},
};
mockClientEventHandler = {
enableErrorEvent: vi.fn(),
@@ -135,7 +136,7 @@ describe("ExtendedWebSocketServer", () => {
} as unknown as Mocked<WebsocketEventHandler>;
vi.mocked(WebsocketEventHandler).mockImplementation(() => mockClientEventHandler);
vi.mocked(getEventListeners).mockReturnValue([{ event: "custom", handler: vi.fn() } as any]);
vi.mocked(getEventListeners).mockReturnValue([{event: "custom", handler: vi.fn()} as any]);
});
it("should create and configure a WebsocketEventHandler for new clients", () => {
@@ -161,7 +162,7 @@ describe("ExtendedWebSocketServer", () => {
beforeEach(() => {
mockClient = {
readyState: WebSocket.OPEN,
payload: { uuid: "user-123" },
payload: {uuid: "user-123"},
send: vi.fn(),
emit: vi.fn(),
};
@@ -172,7 +173,7 @@ describe("ExtendedWebSocketServer", () => {
const userUpdateListener = eventBusListeners.get(USER_UPDATED_EVENT);
expect(userUpdateListener).toBeDefined();
const updatedUserPayload = { uuid: "user-123", name: "Neuer Name" };
const updatedUserPayload = {uuid: "user-123", name: "Neuer Name"};
userUpdateListener!(updatedUserPayload);
@@ -187,8 +188,8 @@ describe("ExtendedWebSocketServer", () => {
const spotifyStateListener = eventBusListeners.get(SPOTIFY_STATE_UPDATED_EVENT);
expect(spotifyStateListener).toBeDefined();
const spotifyUpdatePayload = { state: { item: { name: "Neuer Song" } } };
const eventPayload = { uuid: "user-123", ...spotifyUpdatePayload };
const spotifyUpdatePayload = {state: {item: {name: "Neuer Song"}}};
const eventPayload = {uuid: "user-123", ...spotifyUpdatePayload};
spotifyStateListener!(eventPayload);
@@ -197,14 +198,14 @@ describe("ExtendedWebSocketServer", () => {
type: "SPOTIFY_UPDATE",
payload: spotifyUpdatePayload.state,
});
expect(mockClient.send).toHaveBeenCalledWith(expectedMessage, { binary: false });
expect(mockClient.send).toHaveBeenCalledWith(expectedMessage, {binary: false});
});
it("should not send a message if the target client is not connected", () => {
const userUpdateListener = eventBusListeners.get(USER_UPDATED_EVENT);
const spotifyStateListener = eventBusListeners.get(SPOTIFY_STATE_UPDATED_EVENT);
const eventPayload = { uuid: "user-unknown", name: "some data" };
const eventPayload = {uuid: "user-unknown", name: "some data"};
userUpdateListener!(eventPayload);