Fixed frontend tests. (#6210)

* Fixed frontend tests.

* Use old socket io syntax.

* uSE ESM:

* Remove padvar.

* Remove cypress.
This commit is contained in:
SamTV12345 2024-03-08 18:50:29 +01:00 committed by GitHub
parent 2fa2d5bd17
commit d34b964cc2
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 18 additions and 23 deletions

View file

@ -21,9 +21,9 @@
* limitations under the License. * limitations under the License.
*/ */
const ueberDB = require('ueberdb2'); import ueberDB from 'ueberdb2';
const settings = require('../utils/Settings'); const settings = require('../utils/Settings');
const log4js = require('log4js'); import log4js from 'log4js';
const stats = require('../stats') const stats = require('../stats')
const logger = log4js.getLogger('ueberDB'); const logger = log4js.getLogger('ueberDB');

View file

@ -957,7 +957,6 @@ const handleClientReady = async (socket:any, message: typeof ChatMessage) => {
rev: pad.getHeadRevisionNumber(), rev: pad.getHeadRevisionNumber(),
time: currentTime, time: currentTime,
}, },
socketTransportProtocols: settings.socketTransportProtocols,
colorPalette: authorManager.getColorPalette(), colorPalette: authorManager.getColorPalette(),
clientIp: '127.0.0.1', clientIp: '127.0.0.1',
userColor: authorColorId, userColor: authorColorId,

View file

@ -2,12 +2,12 @@
import {ArgsExpressType} from "../../types/ArgsExpressType"; import {ArgsExpressType} from "../../types/ArgsExpressType";
const events = require('events'); import events from 'events';
const express = require('../express'); const express = require('../express');
const log4js = require('log4js'); import log4js from 'log4js';
const proxyaddr = require('proxy-addr'); const proxyaddr = require('proxy-addr');
const settings = require('../../utils/Settings'); const settings = require('../../utils/Settings');
import {Server} from 'socket.io' import {Server, Socket} from 'socket.io'
const socketIORouter = require('../../handler/SocketIORouter'); const socketIORouter = require('../../handler/SocketIORouter');
const hooks = require('../../../static/js/pluginfw/hooks'); const hooks = require('../../../static/js/pluginfw/hooks');
const padMessageHandler = require('../../handler/PadMessageHandler'); const padMessageHandler = require('../../handler/PadMessageHandler');
@ -17,7 +17,7 @@ const logger = log4js.getLogger('socket.io');
const sockets = new Set(); const sockets = new Set();
const socketsEvents = new events.EventEmitter(); const socketsEvents = new events.EventEmitter();
exports.expressCloseServer = async () => { export const expressCloseServer = async () => {
if (io == null) return; if (io == null) return;
logger.info('Closing socket.io engine...'); logger.info('Closing socket.io engine...');
// Close the socket.io engine to disconnect existing clients and reject new clients. Don't call // Close the socket.io engine to disconnect existing clients and reject new clients. Don't call
@ -48,7 +48,7 @@ exports.expressCloseServer = async () => {
logger.info('All socket.io clients have disconnected'); logger.info('All socket.io clients have disconnected');
}; };
exports.socketSessionMiddleware = (args: any) => (socket: any, next: Function) => { const socketSessionMiddleware = (args: any) => (socket: any, next: Function) => {
const req = socket.request; const req = socket.request;
// Express sets req.ip but socket.io does not. Replicate Express's behavior here. // Express sets req.ip but socket.io does not. Replicate Express's behavior here.
if (req.ip == null) { if (req.ip == null) {
@ -65,19 +65,16 @@ exports.socketSessionMiddleware = (args: any) => (socket: any, next: Function) =
express.sessionMiddleware(req, {}, next); express.sessionMiddleware(req, {}, next);
}; };
exports.expressCreateServer = (hookName:string, args:ArgsExpressType, cb:Function) => { export const expressCreateServer = (hookName:string, args:ArgsExpressType, cb:Function) => {
// init socket.io and redirect all requests to the MessageHandler // init socket.io and redirect all requests to the MessageHandler
// there shouldn't be a browser that isn't compatible to all // there shouldn't be a browser that isn't compatible to all
// transports in this list at once // transports in this list at once
// e.g. XHR is disabled in IE by default, so in IE it should use jsonp-polling // e.g. XHR is disabled in IE by default, so in IE it should use jsonp-polling
io = new Server({ io = new Server(args.server,{
transports: settings.socketTransportProtocols, transports: settings.socketTransportProtocols,
})
io.attach(args.server, {
cookie: false, cookie: false,
maxHttpBufferSize: settings.socketIo.maxHttpBufferSize, maxHttpBufferSize: settings.socketIo.maxHttpBufferSize,
}); })
io.on('connection', (socket:any) => { io.on('connection', (socket:any) => {
sockets.add(socket); sockets.add(socket);
@ -92,11 +89,11 @@ exports.expressCreateServer = (hookName:string, args:ArgsExpressType, cb:Functio
}); });
}); });
io.use(exports.socketSessionMiddleware(args)); io.use(socketSessionMiddleware(args));
// Temporary workaround so all clients go through middleware and handle connection // Temporary workaround so all clients go through middleware and handle connection
io.of('/pluginfw/installer').use(exports.socketSessionMiddleware(args)) io.of('/pluginfw/installer').use(socketSessionMiddleware(args))
io.of('/settings').use(exports.socketSessionMiddleware(args)) io.of('/settings').use(socketSessionMiddleware(args))
io.use((socket:any, next:Function) => { io.use((socket:any, next:Function) => {
socket.conn.on('packet', (packet:string) => { socket.conn.on('packet', (packet:string) => {

View file

@ -88,7 +88,6 @@
"@types/sinon": "^17.0.3", "@types/sinon": "^17.0.3",
"@types/supertest": "^6.0.2", "@types/supertest": "^6.0.2",
"@types/underscore": "^1.11.15", "@types/underscore": "^1.11.15",
"cypress": "^13.6.6",
"eslint": "^8.57.0", "eslint": "^8.57.0",
"eslint-config-etherpad": "^3.0.22", "eslint-config-etherpad": "^3.0.22",
"etherpad-cli-client": "^3.0.1", "etherpad-cli-client": "^3.0.1",
@ -114,7 +113,7 @@
}, },
"scripts": { "scripts": {
"lint": "eslint .", "lint": "eslint .",
"test": "mocha --import=tsx --timeout 120000 --recursive tests/backend/specs/**.ts tests/backend/specs/**/*.ts", "test": "mocha --import=tsx --timeout 120000 --recursive tests/backend/specs/**.ts tests/backend/specs/**/*.ts ../node_modules/ep_*/static/tests/backend/specs",
"test-container": "mocha --import=tsx --timeout 5000 tests/container/specs/api", "test-container": "mocha --import=tsx --timeout 5000 tests/container/specs/api",
"dev": "node --import tsx node/server.ts", "dev": "node --import tsx node/server.ts",
"prod": "node --import tsx node/server.ts", "prod": "node --import tsx node/server.ts",

View file

@ -36,8 +36,8 @@ describe('Messages in the COLLABROOM', function () {
// User 1 starts sending a change to the server. // User 1 starts sending a change to the server.
let sendStarted; let sendStarted;
const finishSend = (() => { const finishSend = (() => {
const socketJsonObj = helper.padChrome$.window.pad.socket.json; const socketJsonObj = helper.padChrome$.window.pad.socket;
const sendBackup = socketJsonObj.send; const sendBackup = socketJsonObj.emit;
let startSend; let startSend;
sendStarted = new Promise((resolve) => { startSend = resolve; }); sendStarted = new Promise((resolve) => { startSend = resolve; });
let finishSend; let finishSend;
@ -46,7 +46,7 @@ describe('Messages in the COLLABROOM', function () {
startSend(); startSend();
sendP.then(() => { sendP.then(() => {
socketJsonObj.send = sendBackup; socketJsonObj.send = sendBackup;
socketJsonObj.send(...args); socketJsonObj.send('message', ...args);
}); });
}; };
return finishSend; return finishSend;