UNPKG

@webda/core

Version:

Expose API with Lambda

78 lines 3.5 kB
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; import { suite, test } from "@testdeck/mocha"; import * as assert from "assert"; import * as fs from "fs"; import { unlinkSync } from "fs"; import { emptyDirSync } from "fs-extra"; import { FileQueue } from "./filequeue.js"; import { QueueTest } from "./queue.spec.js"; let FileQueueTest = class FileQueueTest extends QueueTest { async basic() { let queue = this.getService("FileQueue"); await queue.__clean(); await this.simple(queue); } async lock() { let queue = this.getService("FileQueue"); await queue.__clean(); // Try to receive one message only await queue.sendMessage({ test: "plop" }); let msg = await queue.receiveMessage(); let msg2 = await queue.receiveMessage(); assert.strictEqual(msg.length, 1); // Check if there is no more message left assert.strictEqual(msg2.length, 0); // Wait for the lock to expire, as it is set at 1 second in config file await this.sleep(1000); await queue.sendMessage({ test: "plop2" }); msg2 = await queue.receiveMessage(); assert.strictEqual(msg2.length, 1); assert.deepStrictEqual(msg2[0], msg[0]); // Check if the deletion is not crashing even if the lock file is removed unlinkSync(`${queue.getParameters().folder}/${msg[0].ReceiptHandle}.json.lock`); await queue.deleteMessage(msg[0].ReceiptHandle); msg2 = await queue.receiveMessage(); // Check if the deletion is not crashing even if the content file is removed unlinkSync(`${queue.getParameters().folder}/${msg2[0].ReceiptHandle}.json`); await queue.deleteMessage(msg2[0].ReceiptHandle); // Check if default parameter is correctly set queue = new FileQueue(this.webda, "q", {}); assert.strictEqual(queue.getParameters().expire, 30000); } async sendMessage() { let queue = this.getService("FileQueue"); let firstCall = true; queue.getFile = (uid) => { if (firstCall) { fs.writeFileSync(`${queue.getParameters().folder}/${uid}.json`, "{}"); firstCall = false; } return `${queue.getParameters().folder}/${uid}.json`; }; await queue.sendMessage({ plop: "test" }); emptyDirSync(queue.getParameters().folder); fs.rmdirSync(queue.getParameters().folder); assert.ok(!fs.existsSync(queue.getParameters().folder)); queue.computeParameters(); assert.ok(fs.existsSync(queue.getParameters().folder)); queue.computeParameters(); } }; __decorate([ test ], FileQueueTest.prototype, "basic", null); __decorate([ test ], FileQueueTest.prototype, "lock", null); __decorate([ test ], FileQueueTest.prototype, "sendMessage", null); FileQueueTest = __decorate([ suite ], FileQueueTest); //# sourceMappingURL=filequeue.spec.js.map