[linter] manual-fix

This commit is contained in:
Sergey Konovalov
2025-08-31 00:01:32 +03:00
parent 412dd8848d
commit 7a930a9af2
4 changed files with 62 additions and 77 deletions

View File

@ -31,7 +31,6 @@
*/
const {describe, test, expect, afterAll, beforeAll} = require('@jest/globals');
const http = require('http');
const {signToken} = require('../../../DocService/sources/DocsCoServer');
const storage = require('../../../Common/sources/storage/storage-base');
@ -62,10 +61,13 @@ const testFilesNames = {
getList: 'DocService-DocsCoServer-forgottenFilesCommands-getForgottenList-integration-test'
};
function makeRequest(requestBody, timeout = 5000) {
return new Promise(async (resolve, reject) => {
const timer = setTimeout(() => reject('Request timeout'), timeout);
/**
* Makes HTTP request to the command service
* @param {Object} requestBody - Request payload
* @param {number} timeout - Request timeout in milliseconds
* @returns {Promise<string>} Response data
*/
async function makeRequest(requestBody, timeout = 5000) {
let body = '';
if (cfgTokenEnableRequestOutbox) {
const secret = utils.getSecretByElem(cfgSecretOutbox);
@ -75,36 +77,29 @@ function makeRequest(requestBody, timeout = 5000) {
body = JSON.stringify(requestBody);
}
const options = {
port: '8000',
path: '/coauthoring/CommandService.ashx',
const controller = new AbortController();
const timeoutId = setTimeout(() => controller.abort(), timeout);
try {
const response = await fetch('http://localhost:8000/coauthoring/CommandService.ashx', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Content-Length': Buffer.byteLength(body)
'Content-Length': Buffer.byteLength(body).toString()
},
body,
signal: controller.signal
});
clearTimeout(timeoutId);
return await response.text();
} catch (error) {
clearTimeout(timeoutId);
if (error.name === 'AbortError') {
throw new Error('Request timeout');
}
throw error;
}
};
const request = http.request(options, response => {
response.setEncoding('utf8');
let data = '';
response.on('data', chunk => {
data += chunk;
});
response.on('end', () => {
resolve(data);
clearTimeout(timer);
});
});
request.on('error', error => {
reject(error);
clearTimeout(timer);
});
request.write(body);
request.end();
});
}
function getKeysDirectories(keys) {

View File

@ -242,7 +242,7 @@ function runTestForDir(ctx, isMultitenantMode, specialDir) {
expect(outputText.toString('utf8')).toEqual(testFileData3);
});
test('getSignedUrl', async () => {
let url, urls, data;
let url, data;
url = await storage.getSignedUrl(ctx, baseUrl, testFile1, urlType, undefined, undefined, specialDir);
data = await request(url);
expect(data).toEqual(testFileData1);
@ -260,27 +260,24 @@ function runTestForDir(ctx, isMultitenantMode, specialDir) {
expect(data).toEqual(testFileData4);
});
test('getSignedUrls', async () => {
let urls, data;
urls = await storage.getSignedUrls(ctx, baseUrl, testDir, urlType, undefined, specialDir);
data = [];
const urls = await storage.getSignedUrls(ctx, baseUrl, testDir, urlType, undefined, specialDir);
const data = [];
for (const i in urls) {
data.push(await request(urls[i]));
}
expect(data.sort()).toEqual([testFileData1, testFileData2, testFileData3, testFileData4].sort());
});
test('getSignedUrlsArrayByArray', async () => {
let urls, data;
urls = await storage.getSignedUrlsArrayByArray(ctx, baseUrl, [testFile1, testFile2], urlType, specialDir);
data = [];
const urls = await storage.getSignedUrlsArrayByArray(ctx, baseUrl, [testFile1, testFile2], urlType, specialDir);
const data = [];
for (let i = 0; i < urls.length; ++i) {
data.push(await request(urls[i]));
}
expect(data.sort()).toEqual([testFileData1, testFileData2].sort());
});
test('getSignedUrlsByArray', async () => {
let urls, data;
urls = await storage.getSignedUrlsByArray(ctx, baseUrl, [testFile3, testFile4], undefined, urlType, specialDir);
data = [];
const urls = await storage.getSignedUrlsByArray(ctx, baseUrl, [testFile3, testFile4], undefined, urlType, specialDir);
const data = [];
for (const i in urls) {
data.push(await request(urls[i]));
}
@ -361,32 +358,30 @@ describe('storage mix common and forgotten dir', () => {
tenantManager.setMultitenantMode(false);
let buffer = Buffer.from(testFileData1);
let res = await storage.putObject(ctx, testFile1, buffer, buffer.length, specialDirCache);
const res = await storage.putObject(ctx, testFile1, buffer, buffer.length, specialDirCache);
expect(res).toEqual(undefined);
let list = await storage.listObjects(ctx, testDir, specialDirCache);
expect(list.sort()).toEqual([testFile1].sort());
buffer = Buffer.from(testFileData2);
res = await storage.putObject(ctx, testFile2, buffer, buffer.length, specialDirForgotten);
expect(res).toEqual(undefined);
const res2 = await storage.putObject(ctx, testFile2, buffer, buffer.length, specialDirForgotten);
expect(res2).toEqual(undefined);
list = await storage.listObjects(ctx, testDir, specialDirForgotten);
expect(list.sort()).toEqual([testFile2].sort());
});
test('copyPath', async () => {
let list, res;
res = await storage.copyPath(ctx, testDir, testDir, specialDirCache, specialDirForgotten);
const res = await storage.copyPath(ctx, testDir, testDir, specialDirCache, specialDirForgotten);
expect(res).toEqual(undefined);
list = await storage.listObjects(ctx, testDir, specialDirForgotten);
const list = await storage.listObjects(ctx, testDir, specialDirForgotten);
expect(list.sort()).toEqual([testFile1, testFile2].sort());
});
test('copyObject', async () => {
let list, res;
res = await storage.copyObject(ctx, testFile2, testFile2, specialDirForgotten, specialDirCache);
const res = await storage.copyObject(ctx, testFile2, testFile2, specialDirForgotten, specialDirCache);
expect(res).toEqual(undefined);
list = await storage.listObjects(ctx, testDir, specialDirCache);
const list = await storage.listObjects(ctx, testDir, specialDirCache);
expect(list.sort()).toEqual([testFile1, testFile2].sort());
});

View File

@ -1,20 +1,16 @@
const {describe, test, expect, beforeAll, afterAll} = require('@jest/globals');
const {Writable, Readable} = require('stream');
const {Readable} = require('stream');
const {buffer} = require('node:stream/consumers');
const http = require('http');
const https = require('https');
const express = require('express');
const operationContext = require('../../Common/sources/operationContext');
const utils = require('../../Common/sources/utils');
const fs = require('fs').promises;
const path = require('path');
// Create operation context for tests
const ctx = new operationContext.Context();
// Test server setup
let server;
let testServer;
let proxyServer;
const PORT = 3456;
const BASE_URL = `http://localhost:${PORT}`;
@ -98,9 +94,8 @@ describe('HTTP Request Unit Tests', () => {
});
// Endpoint that simulates timeout
app.get('/api/timeout', (req, res) => {
app.get('/api/timeout', (_req, _res) => {
// Never send response to trigger timeout
});
app.use('/api/status/:code', (req, res) => {
@ -116,8 +111,9 @@ describe('HTTP Request Unit Tests', () => {
app.get('/api/error', (req, res) => {
res.status(500).json({error: 'Internal Server Error'});
});
// Endpoint that simulates a slow response headers
app.get('/api/slow-headers', (req, res) => {
app.get('/api/slow-headers', (_req, res) => {
// Delay sending headers
setTimeout(() => {
res.json({success: true});
@ -136,7 +132,7 @@ describe('HTTP Request Unit Tests', () => {
});
// Endpoint that simulates slow/chunked response with inactivity periods
app.get('/api/slow-body', (req, res) => {
app.get('/api/slow-body', (_req, res) => {
// Send headers immediately
res.setHeader('Content-Type', 'application/json');
res.write('{"part1": "First part of the response",');
@ -161,12 +157,11 @@ describe('HTTP Request Unit Tests', () => {
});
// POST endpoint that times out
app.post('/api/timeout', express.json(), (req, res) => {
app.post('/api/timeout', express.json(), (_req, _res) => {
// Never send response to trigger timeout
});
app.get('/api/binary', (req, res) => {
app.get('/api/binary', (_req, res) => {
// PNG file signature as binary data
const binaryData = Buffer.from([0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a]);
res.setHeader('content-type', 'image/png');
@ -175,13 +170,13 @@ describe('HTTP Request Unit Tests', () => {
});
// Large file endpoint
app.get('/api/large', (req, res) => {
app.get('/api/large', (_req, res) => {
res.setHeader('content-type', 'application/octet-stream');
res.send(Buffer.alloc(2 * 1024 * 1024)); //2MB
});
// Large file endpoint with truly no content-length header
app.get('/api/large-chunked', (req, res) => {
app.get('/api/large-chunked', (_req, res) => {
res.setHeader('content-type', 'application/octet-stream');
res.setHeader('transfer-encoding', 'chunked');
res.write(Buffer.alloc(2 * 1024 * 1024));
@ -217,7 +212,7 @@ describe('HTTP Request Unit Tests', () => {
// Setup proxy server
const proxyApp = express();
proxyApp.use((req, res, next) => {
proxyApp.use((req, res) => {
// Record request details
const requestInfo = {
method: req.method,
@ -497,7 +492,7 @@ describe('HTTP Request Unit Tests', () => {
});
try {
const result = await utils.downloadUrlPromise(
await utils.downloadUrlPromise(
mockCtx,
`${BASE_URL}/api/redirect`,
{wholeCycle: '5s', connectionAndInactivity: '3s'},
@ -528,7 +523,7 @@ describe('HTTP Request Unit Tests', () => {
});
try {
const result = await utils.downloadUrlPromise(
await utils.downloadUrlPromise(
mockCtx,
`${BASE_URL}/api/redirect`,
{wholeCycle: '5s', connectionAndInactivity: '3s'},
@ -607,7 +602,7 @@ describe('HTTP Request Unit Tests', () => {
null,
true
);
const receivedData = await buffer(stream);
await buffer(stream);
throw new Error('Expected an error to be thrown');
} catch (error) {
expect(error.code).toBe('EMSGSIZE');
@ -623,7 +618,7 @@ describe('HTTP Request Unit Tests', () => {
null,
true
);
const receivedData = await buffer(stream);
await buffer(stream);
throw new Error('Expected an error to be thrown');
} catch (error) {
expect(error.code).toBe('EMSGSIZE');
@ -1269,7 +1264,7 @@ describe('HTTP Request Unit Tests', () => {
try {
const postData = JSON.stringify({test: 'data'});
const result = await utils.postRequestPromise(
await utils.postRequestPromise(
ctx,
`${BASE_URL}/api/status/205`,
postData,

View File

@ -18,7 +18,7 @@ process.env['NODE_CONFIG'] = JSON.stringify({
});
// Required modules
const {describe, test, expect, beforeAll, afterAll, it, jest} = require('@jest/globals');
const {describe, expect, beforeAll, afterAll, it} = require('@jest/globals');
const http = require('http');
const operationContext = require('../../Common/sources/operationContext');