Skip to content

Commit 5246510

Browse files
committed
Merge branch 'beta'
2 parents 0be5d02 + 3f75f7b commit 5246510

File tree

20 files changed

+946
-703
lines changed

20 files changed

+946
-703
lines changed

CHANGELOG.md

+43
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,46 @@
1+
## [8.9.0-beta.3](https://github.com/nodkz/mongodb-memory-server/compare/v8.9.0-beta.2...v8.9.0-beta.3) (2022-08-21)
2+
3+
4+
### Dependencies
5+
6+
* **mongodb:** upgrade to version 4.9.0 ([a0b5599](https://github.com/nodkz/mongodb-memory-server/commit/a0b5599bad49f0b1f1d554c22f2d46b4c29b1712)), closes [#676](https://github.com/nodkz/mongodb-memory-server/issues/676)
7+
8+
## [8.9.0-beta.2](https://github.com/nodkz/mongodb-memory-server/compare/v8.9.0-beta.1...v8.9.0-beta.2) (2022-08-17)
9+
10+
11+
### Refactor
12+
13+
* **MongoBinaryDownloadUrl::translateArch:** combine case "arm64" & "aarch64" ([4eb48da](https://github.com/nodkz/mongodb-memory-server/commit/4eb48dae1fd94934d1c891eecdae745b0d7dd28f))
14+
15+
## [8.9.0-beta.1](https://github.com/nodkz/mongodb-memory-server/compare/v8.8.0...v8.9.0-beta.1) (2022-08-17)
16+
17+
18+
### Features
19+
20+
* **errors:** add generic MMS Error ([7fc4acc](https://github.com/nodkz/mongodb-memory-server/commit/7fc4accd8bdd18f82d67a2cb321259a1bc5793c7))
21+
* **MongoBinaryDownload::extract:** dont include ".dll" files in the filter anymore ([a7c685b](https://github.com/nodkz/mongodb-memory-server/commit/a7c685b8a91e898917386f38217f07c346b132ea))
22+
23+
24+
### Style
25+
26+
* **MongoBinaryDownload::extractTarGz:** rename some variables to current convention ([bcb4dab](https://github.com/nodkz/mongodb-memory-server/commit/bcb4dab07b49505c63ec23c3d1f2a65ef2384ece))
27+
28+
29+
### Fixes
30+
31+
* **MongoBinaryDownload::extractTarGz:** wrap error messages in "GenericMMSError" ([a8733dc](https://github.com/nodkz/mongodb-memory-server/commit/a8733dc4d5f14b5f71e086b2c93bf1423e548be2))
32+
* **MongoMemoryReplSet::_initReplSet:** use "extraConnectionOptions" when "_ranCreateAuth" is "true" ([e116128](https://github.com/nodkz/mongodb-memory-server/commit/e1161284addab03b41b51be8c2dfb7617b5bae19))
33+
* **MongoMemoryReplSet::cleanup:** reset "_ranCreateAuth" on cleanup ([2fc87e7](https://github.com/nodkz/mongodb-memory-server/commit/2fc87e77183418b6ed21902afdb35d5b806a9215))
34+
35+
36+
### Dependencies
37+
38+
* **@types/jest:** upgrade to version 28.1.7 ([db3e729](https://github.com/nodkz/mongodb-memory-server/commit/db3e72936e5696570a12dc706cebaa5bf307e3ac))
39+
* **@types/semver:** upgrade to version 7.3.12 ([8c61c71](https://github.com/nodkz/mongodb-memory-server/commit/8c61c714806cceeefe22fe51b834705eb2e69cba))
40+
* **@typescript-eslint/*:** upgrade to version 5.33.1 ([cb0e223](https://github.com/nodkz/mongodb-memory-server/commit/cb0e223073b41cdb9c0dd6578c14b953cb643cbf))
41+
* **eslint:** upgrade to version 8.22.0 ([01591eb](https://github.com/nodkz/mongodb-memory-server/commit/01591eb3adb7eb75dcb1f5cdf85905857725dab4))
42+
* **ts-jest:** upgrade to version 28.0.8 ([10bb530](https://github.com/nodkz/mongodb-memory-server/commit/10bb53001ad4957f885cd7d525aa5660683c2a25))
43+
144
## [8.8.0](https://github.com/nodkz/mongodb-memory-server/compare/v8.7.2...v8.8.0) (2022-07-24)
245

346

package.json

+5-5
Original file line numberDiff line numberDiff line change
@@ -14,23 +14,23 @@
1414
"@semantic-release/github": "7.2.3",
1515
"@semantic-release/npm": "7.1.3",
1616
"@semantic-release/release-notes-generator": "9.0.3",
17-
"@types/jest": "^28.1.6",
17+
"@types/jest": "^28.1.7",
1818
"@types/node": "~14.14.45",
19-
"@typescript-eslint/eslint-plugin": "5.30.7",
20-
"@typescript-eslint/parser": "5.30.7",
19+
"@typescript-eslint/eslint-plugin": "5.33.1",
20+
"@typescript-eslint/parser": "5.33.1",
2121
"commitlint": "16.2.4",
2222
"conventional-changelog-conventionalcommits": "5.0.0",
2323
"cross-env": "7.0.3",
2424
"doctoc": "2.2.0",
25-
"eslint": "8.20.0",
25+
"eslint": "8.22.0",
2626
"eslint-config-prettier": "^8.5.0",
2727
"eslint-plugin-prettier": "4.2.1",
2828
"husky": "7.0.4",
2929
"jest": "28.1.3",
3030
"lint-staged": "11.2.6",
3131
"prettier": "2.7.1",
3232
"semantic-release": "17.4.7",
33-
"ts-jest": "28.0.7",
33+
"ts-jest": "28.0.8",
3434
"typescript": "4.4.4"
3535
},
3636
"workspaces": {

packages/mongodb-memory-server-core/package.json

+6-4
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "mongodb-memory-server-core",
3-
"version": "8.8.0",
3+
"version": "8.9.0-beta.3",
44
"description": "MongoDB Server for testing (core package, without autodownload). The server will allow you to connect your favourite ODM or client library to the MongoDB Server and run parallel integration tests isolated from each other.",
55
"main": "lib/index",
66
"types": "lib/index.d.ts",
@@ -33,11 +33,13 @@
3333
"devDependencies": {
3434
"@types/debug": "^4.1.7",
3535
"@types/find-cache-dir": "^3.2.1",
36-
"@types/semver": "^7.3.10",
36+
"@types/semver": "^7.3.12",
3737
"@types/tar-stream": "^2.2.2",
3838
"@types/uuid": "^8.3.4",
3939
"@types/yauzl": "^2.10.0",
40-
"rimraf": "^3.0.2"
40+
"@types/yazl": "^2.4.2",
41+
"rimraf": "^3.0.2",
42+
"yazl": "^2.5.1"
4143
},
4244
"dependencies": {
4345
"@types/tmp": "^0.2.3",
@@ -48,7 +50,7 @@
4850
"get-port": "^5.1.1",
4951
"https-proxy-agent": "^5.0.1",
5052
"md5-file": "^5.0.0",
51-
"mongodb": "~4.7.0",
53+
"mongodb": "~4.9.0",
5254
"new-find-package-json": "^2.0.0",
5355
"semver": "^7.3.7",
5456
"tar-stream": "^2.1.4",

packages/mongodb-memory-server-core/src/MongoMemoryReplSet.ts

+6
Original file line numberDiff line numberDiff line change
@@ -619,6 +619,7 @@ export class MongoMemoryReplSet extends EventEmitter implements ManagerAdvanced
619619
}
620620

621621
this.servers = [];
622+
this._ranCreateAuth = false;
622623

623624
return;
624625
}
@@ -673,9 +674,14 @@ export class MongoMemoryReplSet extends EventEmitter implements ManagerAdvanced
673674
const uris = this.servers.map((server) => server.getUri());
674675
const isInMemory = this.servers[0].instanceInfo?.storageEngine === 'ephemeralForTest';
675676

677+
const extraOptions = this._ranCreateAuth
678+
? this.servers[0].instanceInfo?.instance.extraConnectionOptions ?? {}
679+
: {};
680+
676681
const con: MongoClient = await MongoClient.connect(uris[0], {
677682
// somehow since mongodb-nodejs 4.0, this option is needed when the server is set to be in a replset
678683
directConnection: true,
684+
...extraOptions,
679685
});
680686
log('_initReplSet: connected');
681687

packages/mongodb-memory-server-core/src/__tests__/MongoMemoryReplSet.test.ts

+49-38
Original file line numberDiff line numberDiff line change
@@ -312,56 +312,60 @@ describe('single server replset', () => {
312312
replSet: { auth: {}, count: 3, storageEngine: 'wiredTiger' },
313313
});
314314

315-
utils.assertion(!utils.isNullOrUndefined(replSet.replSetOpts.auth));
316-
utils.assertion(typeof replSet.replSetOpts.auth === 'object');
315+
async function testConnections() {
316+
utils.assertion(!utils.isNullOrUndefined(replSet.replSetOpts.auth));
317+
utils.assertion(typeof replSet.replSetOpts.auth === 'object');
317318

318-
utils.assertion(!utils.isNullOrUndefined(replSet.replSetOpts.auth.customRootName));
319-
utils.assertion(!utils.isNullOrUndefined(replSet.replSetOpts.auth.customRootPwd));
319+
utils.assertion(!utils.isNullOrUndefined(replSet.replSetOpts.auth.customRootName));
320+
utils.assertion(!utils.isNullOrUndefined(replSet.replSetOpts.auth.customRootPwd));
320321

321-
// test unpriviliged connection
322-
{
323-
const con = await MongoClient.connect(replSet.getUri());
322+
// test unpriviliged connection
323+
{
324+
const con = await MongoClient.connect(replSet.getUri());
324325

325-
const db = con.db('somedb');
326-
const col = db.collection('somecol');
326+
const db = con.db('somedb');
327+
const col = db.collection('somecol');
327328

328-
try {
329-
await col.insertOne({ test: 1 });
330-
fail('Expected insertion to fail');
331-
} catch (err) {
332-
expect(err).toBeInstanceOf(MongoServerError);
333-
expect((err as MongoServerError).codeName).toEqual('Unauthorized');
334-
} finally {
335-
await con.close();
329+
try {
330+
await col.insertOne({ test: 1 });
331+
fail('Expected insertion to fail');
332+
} catch (err) {
333+
expect(err).toBeInstanceOf(MongoServerError);
334+
expect((err as MongoServerError).codeName).toEqual('Unauthorized');
335+
} finally {
336+
await con.close();
337+
}
336338
}
337-
}
338339

339-
// test priviliged connection
340-
{
341-
const con: MongoClient = await MongoClient.connect(replSet.getUri(), {
342-
authSource: 'admin',
343-
authMechanism: 'SCRAM-SHA-256',
344-
auth: {
345-
username: replSet.replSetOpts.auth.customRootName,
346-
password: replSet.replSetOpts.auth.customRootPwd,
347-
},
348-
});
340+
// test priviliged connection
341+
{
342+
const con: MongoClient = await MongoClient.connect(replSet.getUri(), {
343+
authSource: 'admin',
344+
authMechanism: 'SCRAM-SHA-256',
345+
auth: {
346+
username: replSet.replSetOpts.auth.customRootName,
347+
password: replSet.replSetOpts.auth.customRootPwd,
348+
},
349+
});
349350

350-
const admindb = con.db('admin');
351-
const users: { users?: { user: string }[] } = await admindb.command({
352-
usersInfo: replSet.replSetOpts.auth.customRootName,
353-
});
354-
expect(users.users).toHaveLength(1);
355-
expect(users.users?.[0].user).toEqual(replSet.replSetOpts.auth.customRootName);
351+
const admindb = con.db('admin');
352+
const users: { users?: { user: string }[] } = await admindb.command({
353+
usersInfo: replSet.replSetOpts.auth.customRootName,
354+
});
355+
expect(users.users).toHaveLength(1);
356+
expect(users.users?.[0].user).toEqual(replSet.replSetOpts.auth.customRootName);
356357

357-
const db = con.db('somedb');
358-
const col = db.collection('somecol');
358+
const db = con.db('somedb');
359+
const col = db.collection('somecol');
359360

360-
expect(await col.insertOne({ test: 1 })).toHaveProperty('acknowledged', true);
361+
expect(await col.insertOne({ test: 1 })).toHaveProperty('acknowledged', true);
361362

362-
await con.close();
363+
await con.close();
364+
}
363365
}
364366

367+
await testConnections();
368+
365369
// @ts-expect-error because "initAllServers" is protected
366370
expect(MongoMemoryReplSet.prototype.initAllServers).toHaveBeenCalledTimes(1);
367371
expect(console.warn).toHaveBeenCalledTimes(0);
@@ -372,6 +376,13 @@ describe('single server replset', () => {
372376
expect(replSet.servers[2].instanceInfo?.instance.instanceOpts.auth).toStrictEqual(true);
373377
}
374378

379+
await replSet.stop({ doCleanup: false });
380+
381+
// test restart for "_ranCreateAuth" restart testing
382+
await replSet.start();
383+
384+
await testConnections();
385+
375386
await replSet.stop();
376387
});
377388
});

packages/mongodb-memory-server-core/src/util/MongoBinaryDownload.ts

+7-9
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import { assertion, mkdir, pathExists } from './utils';
1515
import { DryMongoBinary } from './DryMongoBinary';
1616
import { MongoBinaryOpts } from './MongoBinary';
1717
import { clearLine } from 'readline';
18-
import { Md5CheckFailedError } from './errors';
18+
import { GenericMMSError, Md5CheckFailedError } from './errors';
1919

2020
const log = debug('MongoMS:MongoBinaryDownload');
2121

@@ -281,7 +281,7 @@ export class MongoBinaryDownload {
281281

282282
await mkdir(path.dirname(mongodbFullPath));
283283

284-
const filter = (file: string) => /(?:bin\/(?:mongod(?:\.exe)?)|(?:.*\.dll))$/i.test(file);
284+
const filter = (file: string) => /(?:bin\/(?:mongod(?:\.exe)?))$/i.test(file);
285285

286286
if (/(.tar.gz|.tgz)$/.test(mongoDBArchive)) {
287287
await this.extractTarGz(mongoDBArchive, mongodbFullPath, filter);
@@ -332,22 +332,20 @@ export class MongoBinaryDownload {
332332
stream.resume();
333333
});
334334

335-
return new Promise((resolve, reject) => {
335+
return new Promise((res, rej) => {
336336
createReadStream(mongoDBArchive)
337337
.on('error', (err) => {
338-
reject('Unable to open tarball ' + mongoDBArchive + ': ' + err);
338+
rej(new GenericMMSError('Unable to open tarball ' + mongoDBArchive + ': ' + err));
339339
})
340340
.pipe(createUnzip())
341341
.on('error', (err) => {
342-
reject('Error during unzip for ' + mongoDBArchive + ': ' + err);
342+
rej(new GenericMMSError('Error during unzip for ' + mongoDBArchive + ': ' + err));
343343
})
344344
.pipe(extract)
345345
.on('error', (err) => {
346-
reject('Error during untar for ' + mongoDBArchive + ': ' + err);
346+
rej(new GenericMMSError('Error during untar for ' + mongoDBArchive + ': ' + err));
347347
})
348-
.on('finish', (result) => {
349-
resolve(result);
350-
});
348+
.on('finish', res);
351349
});
352350
}
353351

packages/mongodb-memory-server-core/src/util/MongoBinaryDownloadUrl.ts

-1
Original file line numberDiff line numberDiff line change
@@ -544,7 +544,6 @@ export class MongoBinaryDownloadUrl implements MongoBinaryDownloadUrlOpts {
544544
case 'x64':
545545
return 'x86_64';
546546
case 'arm64':
547-
return 'aarch64';
548547
case 'aarch64':
549548
return 'aarch64';
550549
default:

0 commit comments

Comments
 (0)