@storyous/test-utils 2.0.1 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/testUtils.d.ts +1 -1
- package/lib/testUtils.js +2 -2
- package/lib/testUtils.ts +2 -2
- package/package.json +2 -2
- package/dist/mockTransport.d.ts +0 -10
- package/dist/mockTransport.js +0 -53
- package/dist/testUtils.d.ts +0 -27
- package/dist/testUtils.js +0 -85
package/lib/testUtils.d.ts
CHANGED
package/lib/testUtils.js
CHANGED
|
@@ -56,7 +56,7 @@ const testUtils = {
|
|
|
56
56
|
return parsed.toString();
|
|
57
57
|
},
|
|
58
58
|
async cleanTestingDatabases(mongodbUrl) {
|
|
59
|
-
const client = new mongodb_1.MongoClient(mongodbUrl
|
|
59
|
+
const client = new mongodb_1.MongoClient(mongodbUrl);
|
|
60
60
|
await client.connect();
|
|
61
61
|
const db = client.db();
|
|
62
62
|
const { databaseName } = db;
|
|
@@ -82,4 +82,4 @@ const testUtils = {
|
|
|
82
82
|
},
|
|
83
83
|
};
|
|
84
84
|
exports.default = testUtils;
|
|
85
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
85
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdFV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidGVzdFV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsZ0RBQW9DO0FBRXBDLHFDQUFzQztBQUN0Qyw0REFBcUQ7QUFFckQsMERBQXNEO0FBQ3RELG9FQUE0QztBQVM1QyxNQUFNLFNBQVMsR0FBRztJQUNkLElBQUksRUFBaUIsSUFBSTtJQUN6QixvQkFBb0IsRUFBMkIsU0FBUztJQUN4RCxnQkFBZ0IsRUFBNkIsU0FBUztJQUV0RCxJQUFJLENBQUUsRUFDRixLQUFLLEVBQUUsR0FBRyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sR0FDM0I7UUFDVCxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsR0FBRyxLQUFLLENBQUM7UUFDaEQsTUFBTSxDQUFDLEtBQUssSUFBSSxFQUFFO1lBQ2QsSUFBSSxnQkFBZ0IsRUFBRTtnQkFDbEIsTUFBTSxJQUFJLENBQUMscUJBQXFCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQzthQUN0RDtZQUVELElBQUksR0FBRyxFQUFFO2dCQUNMLElBQUksQ0FBQyxJQUFJLEdBQUcsY0FBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO2FBQzNEO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ1osSUFBSSxNQUFNLEVBQUU7Z0JBQ1IsSUFBSSxDQUFDLG9CQUFvQixHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUM7Z0JBQ2hELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLHVCQUFhLEVBQUUsQ0FBQztnQkFDNUMsTUFBTSxDQUFDLFlBQVksR0FBRyxvQkFBVSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQzthQUMzRTtRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsU0FBUyxDQUFDLEdBQUcs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
|
package/lib/testUtils.ts
CHANGED
|
@@ -8,7 +8,7 @@ import MockTransport from './mockTransport';
|
|
|
8
8
|
|
|
9
9
|
interface TypeParams {
|
|
10
10
|
mocha: any,
|
|
11
|
-
app?: () => Koa
|
|
11
|
+
app?: () => Koa | Promise<Koa>,
|
|
12
12
|
cleanDatabaseUrl?: string,
|
|
13
13
|
mailer?: { _transporter: any }
|
|
14
14
|
}
|
|
@@ -74,7 +74,7 @@ const testUtils = {
|
|
|
74
74
|
},
|
|
75
75
|
|
|
76
76
|
async cleanTestingDatabases (mongodbUrl: string): Promise<void> {
|
|
77
|
-
const client = new MongoClient(mongodbUrl
|
|
77
|
+
const client = new MongoClient(mongodbUrl);
|
|
78
78
|
await client.connect();
|
|
79
79
|
const db = client.db();
|
|
80
80
|
const { databaseName } = db;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@storyous/test-utils",
|
|
3
|
-
"version": "2.0
|
|
3
|
+
"version": "2.1.0",
|
|
4
4
|
"description": "",
|
|
5
5
|
"homepage": "https://github.com/Storyous/mono-utils#readme",
|
|
6
6
|
"license": "ISC",
|
|
@@ -39,5 +39,5 @@
|
|
|
39
39
|
"nodemailer": "^6.7.3",
|
|
40
40
|
"supertest": "^6.2.2"
|
|
41
41
|
},
|
|
42
|
-
"gitHead": "
|
|
42
|
+
"gitHead": "ed409653b7dd12242cc30388c106bb9c3cee7c56"
|
|
43
43
|
}
|
package/dist/mockTransport.d.ts
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { Transport } from 'nodemailer';
|
|
2
|
-
import MailMessage from 'nodemailer/lib/mailer/mail-message';
|
|
3
|
-
export default class MockTransport implements Transport {
|
|
4
|
-
private _sentMail;
|
|
5
|
-
readonly name: 'Mock';
|
|
6
|
-
readonly version: '1.0.0';
|
|
7
|
-
getSentMail(): MailMessage<any>[];
|
|
8
|
-
send(mail: MailMessage<any>, callback: (err: Error | null, info?: any) => void): void;
|
|
9
|
-
private _validate;
|
|
10
|
-
}
|
package/dist/mockTransport.js
DELETED
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
class MockTransport {
|
|
4
|
-
constructor() {
|
|
5
|
-
this._sentMail = [];
|
|
6
|
-
this._validate = (address) => {
|
|
7
|
-
if (!address) {
|
|
8
|
-
return new Error('Error validating address.');
|
|
9
|
-
}
|
|
10
|
-
if (typeof address !== 'string') {
|
|
11
|
-
address = address.address;
|
|
12
|
-
}
|
|
13
|
-
if (address.length > 254) {
|
|
14
|
-
return new Error('Error validating address.');
|
|
15
|
-
}
|
|
16
|
-
if (!address.match(/^[^@]+@.+\..+$/)) {
|
|
17
|
-
return new Error('Error validating address.');
|
|
18
|
-
}
|
|
19
|
-
return null;
|
|
20
|
-
};
|
|
21
|
-
}
|
|
22
|
-
getSentMail() {
|
|
23
|
-
return this._sentMail;
|
|
24
|
-
}
|
|
25
|
-
send(mail, callback) {
|
|
26
|
-
let err;
|
|
27
|
-
if (!mail.data.to) {
|
|
28
|
-
callback(new Error('I need to know who this email is being sent to :-('));
|
|
29
|
-
return;
|
|
30
|
-
}
|
|
31
|
-
if (Array.isArray(mail.data.to)) {
|
|
32
|
-
for (let i = 0; i < mail.data.to.length; i++) {
|
|
33
|
-
const address = mail.data.to[i];
|
|
34
|
-
err = this._validate(address);
|
|
35
|
-
if (err !== null) {
|
|
36
|
-
callback(err);
|
|
37
|
-
return;
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
else {
|
|
42
|
-
err = this._validate(mail.data.to);
|
|
43
|
-
if (err !== null) {
|
|
44
|
-
callback(err);
|
|
45
|
-
return;
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
this._sentMail.push(mail);
|
|
49
|
-
callback(null, { accepted: [mail.data.to] });
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
exports.default = MockTransport;
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ja1RyYW5zcG9ydC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL2xpYi9tb2NrVHJhbnNwb3J0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBSUEsTUFBcUIsYUFBYTtJQUFsQztRQUNZLGNBQVMsR0FBdUIsRUFBRSxDQUFDO1FBdUNuQyxjQUFTLEdBQUcsQ0FBQyxPQUEwQixFQUFFLEVBQUU7WUFDL0MsSUFBSSxDQUFDLE9BQU8sRUFBRTtnQkFDVixPQUFPLElBQUksS0FBSyxDQUFDLDJCQUEyQixDQUFDLENBQUM7YUFDakQ7WUFFRCxJQUFJLE9BQU8sT0FBTyxLQUFLLFFBQVEsRUFBRTtnQkFDN0IsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUM7YUFDN0I7WUFFRCxJQUFJLE9BQU8sQ0FBQyxNQUFNLEdBQUcsR0FBRyxFQUFFO2dCQUN0QixPQUFPLElBQUksS0FBSyxDQUFDLDJCQUEyQixDQUFDLENBQUM7YUFDakQ7WUFFRCxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFO2dCQUNsQyxPQUFPLElBQUksS0FBSyxDQUFDLDJCQUEyQixDQUFDLENBQUM7YUFDakQ7WUFFRCxPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDLENBQUM7SUFDTixDQUFDO0lBcERHLFdBQVc7UUFDUCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDMUIsQ0FBQztJQUVNLElBQUksQ0FBRSxJQUFzQixFQUFFLFFBQWlEO1FBQ2xGLElBQUksR0FBRyxDQUFDO1FBRVIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFO1lBQ2YsUUFBUSxDQUFDLElBQUksS0FBSyxDQUFDLG9EQUFvRCxDQUFDLENBQUMsQ0FBQztZQUMxRSxPQUFPO1NBQ1Y7UUFFRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRTtZQUM3QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUMxQyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDaEMsR0FBRyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQzlCLElBQUksR0FBRyxLQUFLLElBQUksRUFBRTtvQkFDZCxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQ2QsT0FBTztpQkFDVjthQUNKO1NBQ0o7YUFBTTtZQUNILEdBQUcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDbkMsSUFBSSxHQUFHLEtBQUssSUFBSSxFQUFFO2dCQUNkLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDZCxPQUFPO2FBQ1Y7U0FDSjtRQUVELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFCLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNqRCxDQUFDO0NBcUJKO0FBM0RELGdDQTJEQyJ9
|
package/dist/testUtils.d.ts
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
|
-
/// <reference types="koa-bodyparser" />
|
|
3
|
-
import http from 'http';
|
|
4
|
-
import Koa from 'koa';
|
|
5
|
-
import nodemailer from 'nodemailer';
|
|
6
|
-
import MailMessage from 'nodemailer/lib/mailer/mail-message';
|
|
7
|
-
import { SuperAgentTest } from 'supertest';
|
|
8
|
-
import MockTransport from './mockTransport';
|
|
9
|
-
interface TypeParams {
|
|
10
|
-
mocha: any;
|
|
11
|
-
app?: () => Koa;
|
|
12
|
-
cleanDatabaseUrl?: string;
|
|
13
|
-
mailer?: {
|
|
14
|
-
_transporter: any;
|
|
15
|
-
};
|
|
16
|
-
}
|
|
17
|
-
declare const testUtils: {
|
|
18
|
-
_app: http.Server | null;
|
|
19
|
-
_originalTransporter: nodemailer.Transporter<any> | undefined;
|
|
20
|
-
_mockTransporter: MockTransport | undefined;
|
|
21
|
-
init({ mocha, app, cleanDatabaseUrl, mailer, }: TypeParams): void;
|
|
22
|
-
getSentMails(): MailMessage<any>[];
|
|
23
|
-
request(): SuperAgentTest;
|
|
24
|
-
uniqueDatabase(mongodbUrl?: string | undefined): string | null;
|
|
25
|
-
cleanTestingDatabases(mongodbUrl: string): Promise<void>;
|
|
26
|
-
};
|
|
27
|
-
export default testUtils;
|
package/dist/testUtils.js
DELETED
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const http_1 = __importDefault(require("http"));
|
|
7
|
-
const mongodb_1 = require("mongodb");
|
|
8
|
-
const nodemailer_1 = __importDefault(require("nodemailer"));
|
|
9
|
-
const supertest_1 = __importDefault(require("supertest"));
|
|
10
|
-
const mockTransport_1 = __importDefault(require("./mockTransport"));
|
|
11
|
-
const testUtils = {
|
|
12
|
-
_app: null,
|
|
13
|
-
_originalTransporter: undefined,
|
|
14
|
-
_mockTransporter: undefined,
|
|
15
|
-
init({ mocha, app, cleanDatabaseUrl, mailer, }) {
|
|
16
|
-
const { afterEach, before, beforeEach } = mocha;
|
|
17
|
-
before(async () => {
|
|
18
|
-
if (cleanDatabaseUrl) {
|
|
19
|
-
await this.cleanTestingDatabases(cleanDatabaseUrl);
|
|
20
|
-
}
|
|
21
|
-
if (app) {
|
|
22
|
-
this._app = http_1.default.createServer((await app()).callback());
|
|
23
|
-
}
|
|
24
|
-
});
|
|
25
|
-
beforeEach(() => {
|
|
26
|
-
if (mailer) {
|
|
27
|
-
this._originalTransporter = mailer._transporter;
|
|
28
|
-
this._mockTransporter = new mockTransport_1.default();
|
|
29
|
-
mailer._transporter = nodemailer_1.default.createTransport(this._mockTransporter);
|
|
30
|
-
}
|
|
31
|
-
});
|
|
32
|
-
afterEach(() => {
|
|
33
|
-
if (mailer) {
|
|
34
|
-
mailer._transporter = this._originalTransporter;
|
|
35
|
-
}
|
|
36
|
-
});
|
|
37
|
-
},
|
|
38
|
-
getSentMails() {
|
|
39
|
-
if (!this._mockTransporter) {
|
|
40
|
-
throw new Error('The Email Transporter is not initialized yet!');
|
|
41
|
-
}
|
|
42
|
-
return this._mockTransporter.getSentMail();
|
|
43
|
-
},
|
|
44
|
-
request() {
|
|
45
|
-
if (!this._app) {
|
|
46
|
-
throw new Error('The app is not initialized yet!');
|
|
47
|
-
}
|
|
48
|
-
return supertest_1.default.agent(this._app);
|
|
49
|
-
},
|
|
50
|
-
uniqueDatabase(mongodbUrl) {
|
|
51
|
-
if (!mongodbUrl) {
|
|
52
|
-
return null;
|
|
53
|
-
}
|
|
54
|
-
const parsed = new URL(mongodbUrl);
|
|
55
|
-
parsed.pathname = `${parsed.pathname}___${Date.now()}`;
|
|
56
|
-
return parsed.toString();
|
|
57
|
-
},
|
|
58
|
-
async cleanTestingDatabases(mongodbUrl) {
|
|
59
|
-
const client = new mongodb_1.MongoClient(mongodbUrl, { directConnection: true });
|
|
60
|
-
await client.connect();
|
|
61
|
-
const db = client.db();
|
|
62
|
-
const { databaseName } = db;
|
|
63
|
-
if (!/testing/i.test(databaseName)) {
|
|
64
|
-
throw new Error('The database name has to contains the "testing" keyword.');
|
|
65
|
-
}
|
|
66
|
-
const postfixMatcher = /___([0-9]{12,})/;
|
|
67
|
-
const baseName = databaseName.replace(postfixMatcher, '');
|
|
68
|
-
const matcher = new RegExp(`^${baseName}(${postfixMatcher.source})?$`);
|
|
69
|
-
const adminDb = db.admin();
|
|
70
|
-
const { databases } = await adminDb.listDatabases({ nameOnly: true });
|
|
71
|
-
const maxAgeDate = new Date();
|
|
72
|
-
maxAgeDate.setMinutes(maxAgeDate.getMinutes() - 15);
|
|
73
|
-
await Promise.all(databases.map(async ({ name }) => {
|
|
74
|
-
const [match, , timestamp] = name.match(matcher) || [];
|
|
75
|
-
if (match && (!timestamp || new Date(parseInt(timestamp, 10)) < maxAgeDate)) {
|
|
76
|
-
// eslint-disable-next-line no-console
|
|
77
|
-
console.log(`DROPPING OLD TESTING database ${name}`);
|
|
78
|
-
await client.db(name).dropDatabase();
|
|
79
|
-
}
|
|
80
|
-
}));
|
|
81
|
-
await client.close();
|
|
82
|
-
},
|
|
83
|
-
};
|
|
84
|
-
exports.default = testUtils;
|
|
85
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdFV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vbGliL3Rlc3RVdGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLGdEQUFvQztBQUVwQyxxQ0FBc0M7QUFDdEMsNERBQXFEO0FBRXJELDBEQUFzRDtBQUN0RCxvRUFBNEM7QUFTNUMsTUFBTSxTQUFTLEdBQUc7SUFDZCxJQUFJLEVBQWlCLElBQUk7SUFDekIsb0JBQW9CLEVBQTJCLFNBQVM7SUFDeEQsZ0JBQWdCLEVBQTZCLFNBQVM7SUFFdEQsSUFBSSxDQUFFLEVBQ0YsS0FBSyxFQUFFLEdBQUcsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLEdBQzNCO1FBQ1QsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLEdBQUcsS0FBSyxDQUFDO1FBQ2hELE1BQU0sQ0FBQyxLQUFLLElBQUksRUFBRTtZQUNkLElBQUksZ0JBQWdCLEVBQUU7Z0JBQ2xCLE1BQU0sSUFBSSxDQUFDLHFCQUFxQixDQUFDLGdCQUFnQixDQUFDLENBQUM7YUFDdEQ7WUFFRCxJQUFJLEdBQUcsRUFBRTtnQkFDTCxJQUFJLENBQUMsSUFBSSxHQUFHLGNBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQzthQUMzRDtRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNaLElBQUksTUFBTSxFQUFFO2dCQUNSLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDO2dCQUNoRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSx1QkFBYSxFQUFFLENBQUM7Z0JBQzVDLE1BQU0sQ0FBQyxZQUFZLEdBQUcsb0JBQVUsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7YUFDM0U7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILFNBQVMsQ0FB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
|