Skip to content

Commit fb53794

Browse files
authored
feat: upgrade Mongoose (#52)
BREAKING CHANGE: upgrade to Mongoose 6.x and drop Node 10 support
1 parent 18ba862 commit fb53794

File tree

6 files changed

+1042
-1523
lines changed

6 files changed

+1042
-1523
lines changed

.github/workflows/main.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ jobs:
66
strategy:
77
fail-fast: false
88
matrix:
9-
node-version: [^10, ^12, ^14]
9+
node-version: [^12, ^14]
1010
steps:
1111
- name: Checkout
1212
uses: actions/checkout@v2
@@ -33,7 +33,7 @@ jobs:
3333
strategy:
3434
fail-fast: false
3535
matrix:
36-
node-version: [ ^10, ^12, ^14 ]
36+
node-version: [ ^12, ^14 ]
3737
steps:
3838
- name: Checkout
3939
uses: actions/checkout@v2

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@
6060
},
6161
"devDependencies": {
6262
"@typescript-eslint/eslint-plugin": "^4.21.0",
63-
"casbin": "^5.11.1",
63+
"casbin": "^5.11.5",
6464
"chai": "^4.3.0",
6565
"coveralls": "^3.0.9",
6666
"cz-conventional-changelog": "^3.3.0",
@@ -79,7 +79,7 @@
7979
"typescript": "^4.2.3"
8080
},
8181
"dependencies": {
82-
"mongoose": "^5.12.3"
82+
"mongoose": "^6.0.12"
8383
},
8484
"peerDependencies": {
8585
"casbin": "^5.0.7"

src/adapter.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ export class MongooseAdapter implements BatchAdapter, FilteredAdapter, Updatable
4848
private filtered: boolean;
4949
private isSynced: boolean;
5050
private uri: string;
51-
private options: ConnectOptions;
51+
private options?: ConnectOptions;
5252
private mongooseInstance: Mongoose;
5353
private autoAbort: boolean;
5454
private autoCommit: boolean;
@@ -66,7 +66,7 @@ export class MongooseAdapter implements BatchAdapter, FilteredAdapter, Updatable
6666
* const adapter = new MongooseAdapter('MONGO_URI');
6767
* const adapter = new MongooseAdapter('MONGO_URI', { mongoose_options: 'here' })
6868
*/
69-
constructor(uri: string, options: ConnectOptions) {
69+
constructor(uri: string, options?: ConnectOptions) {
7070
if (!uri) {
7171
throw new AdapterError('You must provide Mongo URI to connect to!');
7272
}

test/helpers/helpers.js

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,29 +22,27 @@ const rbacPolicy = path.resolve(__dirname, '../fixtures/rbac_policy.csv');
2222
const rbacDenyDomainModel = path.resolve(__dirname, '../fixtures/rbac_with_domains_with_deny_model.conf');
2323
const rbacDenyDomainPolicy = path.resolve(__dirname, '../fixtures/rbac_with_domains_with_deny_policy.csv');
2424

25-
const MONGOOSE_OPTIONS = { useNewUrlParser: true, useCreateIndex: true, useUnifiedTopology: true };
26-
2725
async function createEnforcer () {
28-
const adapter = await MongooseAdapter.newAdapter('mongodb://localhost:27001,localhost:27002/casbin?replicaSet=rs0', MONGOOSE_OPTIONS);
26+
const adapter = await MongooseAdapter.newAdapter('mongodb://localhost:27001,localhost:27002/casbin?replicaSet=rs0');
2927

3028
return newEnforcer(basicModel, adapter);
3129
}
3230

3331
async function createAdapter (useTransaction = false) {
34-
return MongooseAdapter.newAdapter('mongodb://localhost:27001,localhost:27002/casbin?replicaSet=rs0', MONGOOSE_OPTIONS, {
32+
return MongooseAdapter.newAdapter('mongodb://localhost:27001,localhost:27002/casbin?replicaSet=rs0', {
3533
filtered: false,
3634
synced: useTransaction
3735
});
3836
}
3937

4038
async function createSyncedAdapter () {
41-
const adapter = MongooseAdapter.newSyncedAdapter('mongodb://localhost:27001,localhost:27002/casbin?replicaSet=rs0', MONGOOSE_OPTIONS);
39+
const adapter = MongooseAdapter.newSyncedAdapter('mongodb://localhost:27001,localhost:27002/casbin?replicaSet=rs0');
4240
await new Promise(resolve => setTimeout(resolve, 1000));
4341
return adapter;
4442
}
4543

4644
async function createDisconnectedAdapter () {
47-
return new MongooseAdapter('mongodb://localhost:27001,localhost:27002/casbin?replicaSet=rs0', MONGOOSE_OPTIONS);
45+
return new MongooseAdapter('mongodb://localhost:27001,localhost:27002/casbin?replicaSet=rs0');
4846
}
4947

5048
module.exports = {

test/unit/adapter.test.js

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,13 @@
1515
const { assert } = require('chai');
1616
const { MongooseAdapter } = require('../../lib/cjs');
1717

18-
const MONGOOSE_OPTIONS = { useNewUrlParser: true, useCreateIndex: true, useUnifiedTopology: true };
19-
2018
describe('MongooseAdapter', () => {
2119
it('Should properly throw error if Mongo URI is not provided', async () => {
2220
assert.throws(() => new MongooseAdapter(), 'You must provide Mongo URI to connect to!');
2321
});
2422

2523
it('Should properly instantiate adapter', async () => {
26-
const adapter = new MongooseAdapter('mongodb://localhost:27001/casbin', MONGOOSE_OPTIONS);
24+
const adapter = new MongooseAdapter('mongodb://localhost:27001/casbin');
2725

2826
assert.instanceOf(adapter, MongooseAdapter);
2927
assert.isFalse(adapter.isFiltered());
@@ -32,7 +30,7 @@ describe('MongooseAdapter', () => {
3230
});
3331

3432
it('Should properly create new instance via static newAdapter', async () => {
35-
const adapter = await MongooseAdapter.newAdapter('mongodb://localhost:27001,localhost:27002/casbin?replicaSet=rs0', MONGOOSE_OPTIONS);
33+
const adapter = await MongooseAdapter.newAdapter('mongodb://localhost:27001,localhost:27002/casbin?replicaSet=rs0');
3634

3735
assert.instanceOf(adapter, MongooseAdapter);
3836
assert.isFalse(adapter.isFiltered());
@@ -41,7 +39,7 @@ describe('MongooseAdapter', () => {
4139
});
4240

4341
it('Should properly create filtered instance via static newFilteredAdapter', async () => {
44-
const adapter = await MongooseAdapter.newFilteredAdapter('mongodb://localhost:27001,localhost:27002/casbin?replicaSet=rs0', MONGOOSE_OPTIONS);
42+
const adapter = await MongooseAdapter.newFilteredAdapter('mongodb://localhost:27001,localhost:27002/casbin?replicaSet=rs0');
4543

4644
assert.instanceOf(adapter, MongooseAdapter);
4745
assert.isTrue(adapter.isFiltered());
@@ -50,7 +48,7 @@ describe('MongooseAdapter', () => {
5048
});
5149

5250
it('Should have implemented interface for casbin', async () => {
53-
const adapter = new MongooseAdapter('mongodb://localhost:27001,localhost:27002/casbin?replicaSet=rs0', MONGOOSE_OPTIONS);
51+
const adapter = new MongooseAdapter('mongodb://localhost:27001,localhost:27002/casbin?replicaSet=rs0');
5452

5553
assert.isFunction(MongooseAdapter.newAdapter);
5654
assert.isFunction(MongooseAdapter.newFilteredAdapter);

0 commit comments

Comments
 (0)