@webda/core
Version:
Expose API with Lambda
78 lines • 3.5 kB
JavaScript
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