Skip to content

Commit e3f3f7d

Browse files
authored
move all file tests in correct test file (#2395)
1 parent bb1f688 commit e3f3f7d

File tree

2 files changed

+184
-188
lines changed

2 files changed

+184
-188
lines changed

packages/controller/test/lib/testFiles.ts

Lines changed: 184 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,8 @@ import type { TestContext } from '../_Types';
22

33
export function register(it: Mocha.TestFunction, expect: Chai.ExpectStatic, context: TestContext): void {
44
const testName = `${context.name} ${context.adapterShortName} files: `;
5-
// chmodFile
6-
// readDir
7-
// unlink
8-
// rename
9-
// mkdir
5+
const namespace = 'testObject.0';
6+
const testId = `${namespace}.testFilesObj`;
107

118
// setBinaryState
129
it(testName + 'setForeignBinaryState', async () => {
@@ -267,6 +264,188 @@ export function register(it: Mocha.TestFunction, expect: Chai.ExpectStatic, cont
267264
expect(error.toString()).to.be.equal('Error: Not exists');
268265
}
269266
});
267+
268+
it(testName + 'should create and read file with callback', done => {
269+
const objects = context.objects;
270+
objects.setObject(testId, { type: 'meta', native: {} } as ioBroker.SettableMetaObject, err => {
271+
expect(err).to.be.not.ok;
272+
objects.writeFile(testId, 'myFile/abc.txt', 'dataInFile', err => {
273+
err && console.error(`Got ${JSON.stringify(objects.getStatus())}: ${err.stack}`);
274+
expect(err).to.be.not.ok;
275+
276+
objects.readFile(testId, 'myFile/abc.txt', null, (err, data, mimeType) => {
277+
expect(err).to.be.not.ok;
278+
expect(data).to.be.equal('dataInFile');
279+
expect(mimeType).to.be.equal('text/plain');
280+
objects.rm(testId, 'myFile/*', null, (err, files) => {
281+
expect(err).to.be.not.ok;
282+
const file = files!.find(f => f.file === 'abc.txt');
283+
expect(file!.file).to.be.equal('abc.txt');
284+
expect(file!.path).to.be.equal('myFile');
285+
objects.readFile(testId, 'myFile/abc.txt', null, (err, _data, _mimeType) => {
286+
expect(err!.message).to.be.equal('Not exists');
287+
done();
288+
});
289+
});
290+
});
291+
});
292+
});
293+
});
294+
295+
it(testName + 'should create and read file async', async () => {
296+
const fileDir = 'myFile';
297+
const fileName = 'abc2.txt';
298+
const fullFileName = `${fileDir}/${fileName}`;
299+
300+
const objects = context.objects;
301+
await objects.setObject(testId, { type: 'meta', native: {} } as ioBroker.SettableMetaObject);
302+
303+
await objects.writeFile(testId, fullFileName, 'dataInFile');
304+
305+
const { file, mimeType } = await objects.readFile(testId, fullFileName, null);
306+
expect(file).to.be.equal('dataInFile');
307+
expect(mimeType).to.be.equal('text/plain');
308+
const files = await objects.rmAsync(testId, `${fileDir}/*`, {});
309+
const deletedFile = files!.find(f => f.file === fileName);
310+
expect(deletedFile!.file).to.be.equal(fileName);
311+
expect(deletedFile!.path).to.be.equal(fileDir);
312+
try {
313+
await objects.readFile(testId, fullFileName, null);
314+
expect(1).to.be.equal(2, 'Should have thrown, because file has been deleted');
315+
} catch (e) {
316+
expect(e.message).to.be.equal('Not exists');
317+
}
318+
});
319+
320+
it(testName + 'should read directory', done => {
321+
const objects = context.objects;
322+
objects.writeFile(testId, 'myFileA/abc1.txt', 'dataInFile', err => {
323+
expect(err).to.be.not.ok;
324+
objects.writeFile(testId, 'myFileA/abc2.txt', Buffer.from('ABC'), err => {
325+
expect(err).to.be.not.ok;
326+
objects.readDir(testId, 'myFileA/', null, (err, data) => {
327+
expect(err).to.be.not.ok;
328+
expect(data!.length).to.be.equal(2);
329+
expect(data![0].file).to.be.equal('abc1.txt');
330+
expect(data![1].file).to.be.equal('abc2.txt');
331+
expect(data![1].stats.size).to.be.equal(3);
332+
done();
333+
});
334+
});
335+
});
336+
});
337+
338+
it(testName + 'should read file and prevent path traversing', done => {
339+
const objects = context.objects;
340+
objects.readFile(testId, '../../myFileA/abc1.txt', null, (err, data, _mimeType) => {
341+
expect(err).to.be.not.ok;
342+
expect(data).to.be.equal('dataInFile');
343+
objects.readFile(testId, '/myFileA/abc1.txt', null, (err, data, _mimeType) => {
344+
expect(err).to.be.not.ok;
345+
expect(data).to.be.equal('dataInFile');
346+
objects.readFile(testId, '/../../myFileA/abc1.txt', null, (err, data, _mimeType) => {
347+
expect(err).to.be.not.ok;
348+
expect(data).to.be.equal('dataInFile');
349+
objects.readFile(testId, 'myFileA/../blubb/../myFileA/abc1.txt', null, (err, data, _mimeType) => {
350+
expect(err).to.be.not.ok;
351+
expect(data).to.be.equal('dataInFile');
352+
objects.readFile(
353+
testId,
354+
'/myFileA/../blubb/../myFileA/abc1.txt',
355+
null,
356+
(err, data, _mimeType) => {
357+
expect(err).to.be.not.ok;
358+
expect(data).to.be.equal('dataInFile');
359+
objects.readFile(
360+
testId,
361+
'../blubb/../myFileA/abc1.txt',
362+
null,
363+
(err, data, _mimeType) => {
364+
expect(err).to.be.not.ok;
365+
expect(data).to.be.equal('dataInFile');
366+
objects.readFile(
367+
testId,
368+
'/../blubb/../myFileA/abc1.txt',
369+
null,
370+
(err, data, _mimeType) => {
371+
expect(err).to.be.not.ok;
372+
expect(data).to.be.equal('dataInFile');
373+
done();
374+
}
375+
);
376+
}
377+
);
378+
}
379+
);
380+
});
381+
});
382+
});
383+
});
384+
});
385+
386+
it(testName + 'should unlink file', done => {
387+
const objects = context.objects;
388+
objects.unlink(testId, 'myFileA/abc1.txt', null, err => {
389+
expect(err).to.be.not.ok;
390+
objects.unlink(testId, 'myFileA/abc1.txt', null, err => {
391+
expect(err!.message).to.be.equal('Not exists');
392+
done();
393+
});
394+
});
395+
});
396+
397+
it(testName + 'should rename file', done => {
398+
const objects = context.objects;
399+
objects.writeFile(testId, 'myFile1/abcRename.txt', Buffer.from('abcd'), err => {
400+
expect(err).to.be.not.ok;
401+
objects.rename(testId, 'myFile1/abcRename.txt', 'myFileA/abc3.txt', null, err => {
402+
expect(err).to.be.not.ok;
403+
objects.readFile(testId, 'myFileA/abc3.txt', null, (err, data, _meta) => {
404+
expect(err).to.be.not.ok;
405+
expect(data!.toString('utf8')).to.be.equal('abcd');
406+
objects.readFile(testId, 'myFile1/abcRename.txt', null, err => {
407+
expect(err!.message).to.be.equal('Not exists');
408+
done();
409+
});
410+
});
411+
});
412+
});
413+
});
414+
415+
it(testName + 'should touch file', done => {
416+
const objects = context.objects;
417+
objects.readDir(testId, 'myFileA', null, (err, files) => {
418+
expect(err).to.be.not.ok;
419+
const file = files!.find(f => f.file === 'abc3.txt');
420+
421+
setTimeout(() => {
422+
objects.touch(testId, 'myFileA/abc3.txt', null, err => {
423+
expect(err).to.be.not.ok;
424+
objects.readDir(testId, 'myFileA', null, (_err, files) => {
425+
const file1 = files!.find(f => f.file === 'abc3.txt');
426+
expect(file1!.modifiedAt).to.be.not.equal(file!.modifiedAt);
427+
done();
428+
});
429+
});
430+
}, 200);
431+
});
432+
});
433+
434+
it(testName + 'should create directory', done => {
435+
const objects = context.objects;
436+
objects.mkdir(testId, 'myFile' + Math.round(Math.random() * 100_000), null, err => {
437+
expect(err).to.be.not.ok;
438+
done();
439+
});
440+
});
441+
442+
it(testName + 'should enable file cache', done => {
443+
const objects = context.objects;
444+
objects.enableFileCache(true, err => {
445+
expect(err).to.be.not.ok;
446+
done();
447+
});
448+
});
270449
}
271450

272451
module.exports.register = register;

packages/controller/test/lib/testObjects.ts

Lines changed: 0 additions & 183 deletions
Original file line numberDiff line numberDiff line change
@@ -414,192 +414,9 @@ export function register(it: Mocha.TestFunction, expect: Chai.ExpectStatic, cont
414414
expect(exists).to.be.true;
415415
});
416416

417-
// TODO: here are also a few file tests, move them to testFiles.ts instead
418-
it(testName + 'should create and read file', done => {
419-
const objects = context.objects;
420-
objects.setObject(testId, { type: 'meta', native: {} } as ioBroker.SettableMetaObject, err => {
421-
expect(err).to.be.not.ok;
422-
objects.writeFile(testId, 'myFile/abc.txt', 'dataInFile', err => {
423-
err && console.error(`Got ${JSON.stringify(objects.getStatus())}: ${err.stack}`);
424-
expect(err).to.be.not.ok;
425-
426-
objects.readFile(testId, 'myFile/abc.txt', null, (err, data, mimeType) => {
427-
expect(err).to.be.not.ok;
428-
expect(data).to.be.equal('dataInFile');
429-
expect(mimeType).to.be.equal('text/plain');
430-
objects.rm(testId, 'myFile/*', null, (err, files) => {
431-
expect(err).to.be.not.ok;
432-
const file = files!.find(f => f.file === 'abc.txt');
433-
expect(file!.file).to.be.equal('abc.txt');
434-
expect(file!.path).to.be.equal('myFile');
435-
objects.readFile(testId, 'myFile/abc.txt', null, (err, _data, _mimeType) => {
436-
expect(err!.message).to.be.equal('Not exists');
437-
done();
438-
});
439-
});
440-
});
441-
});
442-
});
443-
});
444-
445-
it(testName + 'should create and read file async', async () => {
446-
const fileDir = 'myFile';
447-
const fileName = 'abc2.txt';
448-
const fullFileName = `${fileDir}/${fileName}`;
449-
450-
const objects = context.objects;
451-
await objects.setObject(testId, { type: 'meta', native: {} } as ioBroker.SettableMetaObject);
452-
453-
await objects.writeFile(testId, fullFileName, 'dataInFile');
454-
455-
const { file, mimeType } = await objects.readFile(testId, fullFileName, null);
456-
expect(file).to.be.equal('dataInFile');
457-
expect(mimeType).to.be.equal('text/plain');
458-
const files = await objects.rmAsync(testId, `${fileDir}/*`, {});
459-
const deletedFile = files!.find(f => f.file === fileName);
460-
expect(deletedFile!.file).to.be.equal(fileName);
461-
expect(deletedFile!.path).to.be.equal(fileDir);
462-
try {
463-
await objects.readFile(testId, fullFileName, null);
464-
expect(1).to.be.equal(2, 'Should have thrown, because file has been deleted');
465-
} catch (e) {
466-
expect(e!.message).to.be.equal('Not exists');
467-
}
468-
});
469-
470-
it(testName + 'should read directory', done => {
471-
const objects = context.objects;
472-
objects.writeFile(testId, 'myFileA/abc1.txt', 'dataInFile', err => {
473-
expect(err).to.be.not.ok;
474-
objects.writeFile(testId, 'myFileA/abc2.txt', Buffer.from('ABC'), err => {
475-
expect(err).to.be.not.ok;
476-
objects.readDir(testId, 'myFileA/', null, (err, data) => {
477-
expect(err).to.be.not.ok;
478-
expect(data!.length).to.be.equal(2);
479-
expect(data![0].file).to.be.equal('abc1.txt');
480-
expect(data![1].file).to.be.equal('abc2.txt');
481-
expect(data![1].stats.size).to.be.equal(3);
482-
done();
483-
});
484-
});
485-
});
486-
});
487-
488-
it(testName + 'should read file and prevent path traversing', done => {
489-
const objects = context.objects;
490-
objects.readFile(testId, '../../myFileA/abc1.txt', null, (err, data, _mimeType) => {
491-
expect(err).to.be.not.ok;
492-
expect(data).to.be.equal('dataInFile');
493-
objects.readFile(testId, '/myFileA/abc1.txt', null, (err, data, _mimeType) => {
494-
expect(err).to.be.not.ok;
495-
expect(data).to.be.equal('dataInFile');
496-
objects.readFile(testId, '/../../myFileA/abc1.txt', null, (err, data, _mimeType) => {
497-
expect(err).to.be.not.ok;
498-
expect(data).to.be.equal('dataInFile');
499-
objects.readFile(testId, 'myFileA/../blubb/../myFileA/abc1.txt', null, (err, data, _mimeType) => {
500-
expect(err).to.be.not.ok;
501-
expect(data).to.be.equal('dataInFile');
502-
objects.readFile(
503-
testId,
504-
'/myFileA/../blubb/../myFileA/abc1.txt',
505-
null,
506-
(err, data, _mimeType) => {
507-
expect(err).to.be.not.ok;
508-
expect(data).to.be.equal('dataInFile');
509-
objects.readFile(
510-
testId,
511-
'../blubb/../myFileA/abc1.txt',
512-
null,
513-
(err, data, _mimeType) => {
514-
expect(err).to.be.not.ok;
515-
expect(data).to.be.equal('dataInFile');
516-
objects.readFile(
517-
testId,
518-
'/../blubb/../myFileA/abc1.txt',
519-
null,
520-
(err, data, _mimeType) => {
521-
expect(err).to.be.not.ok;
522-
expect(data).to.be.equal('dataInFile');
523-
done();
524-
}
525-
);
526-
}
527-
);
528-
}
529-
);
530-
});
531-
});
532-
});
533-
});
534-
});
535-
536-
it(testName + 'should unlink file', done => {
537-
const objects = context.objects;
538-
objects.unlink(testId, 'myFileA/abc1.txt', null, err => {
539-
expect(err).to.be.not.ok;
540-
objects.unlink(testId, 'myFileA/abc1.txt', null, err => {
541-
expect(err!.message).to.be.equal('Not exists');
542-
done();
543-
});
544-
});
545-
});
546-
547-
it(testName + 'should rename file', done => {
548-
const objects = context.objects;
549-
objects.writeFile(testId, 'myFile1/abcRename.txt', Buffer.from('abcd'), err => {
550-
expect(err).to.be.not.ok;
551-
objects.rename(testId, 'myFile1/abcRename.txt', 'myFileA/abc3.txt', null, err => {
552-
expect(err).to.be.not.ok;
553-
objects.readFile(testId, 'myFileA/abc3.txt', null, (err, data, _meta) => {
554-
expect(err).to.be.not.ok;
555-
expect(data!.toString('utf8')).to.be.equal('abcd');
556-
objects.readFile(testId, 'myFile1/abcRename.txt', null, err => {
557-
expect(err!.message).to.be.equal('Not exists');
558-
done();
559-
});
560-
});
561-
});
562-
});
563-
});
564-
565-
it(testName + 'should touch file', done => {
566-
const objects = context.objects;
567-
objects.readDir(testId, 'myFileA', null, (err, files) => {
568-
expect(err).to.be.not.ok;
569-
const file = files!.find(f => f.file === 'abc3.txt');
570-
571-
setTimeout(() => {
572-
objects.touch(testId, 'myFileA/abc3.txt', null, err => {
573-
expect(err).to.be.not.ok;
574-
objects.readDir(testId, 'myFileA', null, (_err, files) => {
575-
const file1 = files!.find(f => f.file === 'abc3.txt');
576-
expect(file1!.modifiedAt).to.be.not.equal(file!.modifiedAt);
577-
done();
578-
});
579-
});
580-
}, 200);
581-
});
582-
});
583-
584-
it(testName + 'should create directory', done => {
585-
const objects = context.objects;
586-
objects.mkdir(testId, 'myFile' + Math.round(Math.random() * 100_000), null, err => {
587-
expect(err).to.be.not.ok;
588-
done();
589-
});
590-
});
591-
592417
// todo chmod
593418
// tofo chown
594419

595-
it(testName + 'should enable file cache', done => {
596-
const objects = context.objects;
597-
objects.enableFileCache(true, err => {
598-
expect(err).to.be.not.ok;
599-
done();
600-
});
601-
});
602-
603420
it(testName + 'should delete object', done => {
604421
const objects = context.objects;
605422
objects.delObject(testId, err => {

0 commit comments

Comments
 (0)