Merge pull request #15345 from overleaf/revert-15341-csh-issue-11625-mongo-ug-5-notifications

Revert "Upgrade mongodb module for notifications from 4.11.0 to 6.1.0"

GitOrigin-RevId: 298272afa24ccb7a8543342ad09f558fc034f282
This commit is contained in:
Christopher Hoskin 2023-10-19 15:17:27 +01:00 committed by Copybot
parent 02fa5c3a99
commit 4c298c9290
5 changed files with 79 additions and 92 deletions

131
package-lock.json generated
View file

@ -38477,7 +38477,7 @@
"bunyan": "^1.8.15", "bunyan": "^1.8.15",
"express": "^4.18.2", "express": "^4.18.2",
"method-override": "^3.0.0", "method-override": "^3.0.0",
"mongodb": "^6.1.0", "mongodb": "^4.11.0",
"request": "^2.88.2" "request": "^2.88.2"
}, },
"devDependencies": { "devDependencies": {
@ -38489,70 +38489,54 @@
} }
}, },
"services/notifications/node_modules/bson": { "services/notifications/node_modules/bson": {
"version": "6.2.0", "version": "4.7.2",
"resolved": "https://registry.npmjs.org/bson/-/bson-6.2.0.tgz", "resolved": "https://registry.npmjs.org/bson/-/bson-4.7.2.tgz",
"integrity": "sha512-ID1cI+7bazPDyL9wYy9GaQ8gEEohWvcUl/Yf0dIdutJxnmInEEyCsb4awy/OiBfall7zBA179Pahi3vCdFze3Q==", "integrity": "sha512-Ry9wCtIZ5kGqkJoi6aD8KjxFZEx78guTQDnpXWiNthsxzrxAK/i8E6pCHAIZTbaEFWcOCvbecMukfK7XUvyLpQ==",
"dependencies": {
"buffer": "^5.6.0"
},
"engines": { "engines": {
"node": ">=16.20.1" "node": ">=6.9.0"
} }
}, },
"services/notifications/node_modules/gcp-metadata": { "services/notifications/node_modules/buffer": {
"version": "5.3.0", "version": "5.7.1",
"resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-5.3.0.tgz", "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
"integrity": "sha512-FNTkdNEnBdlqF2oatizolQqNANMrcqJt6AAYt99B3y1aLLC8Hc5IOBb+ZnnzllodEEf6xMBp6wRcBbc16fa65w==", "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
"optional": true, "funding": [
"peer": true, {
"dependencies": { "type": "github",
"gaxios": "^5.0.0", "url": "https://github.com/sponsors/feross"
"json-bigint": "^1.0.0"
}, },
"engines": { {
"node": ">=12" "type": "patreon",
"url": "https://www.patreon.com/feross"
},
{
"type": "consulting",
"url": "https://feross.org/support"
}
],
"dependencies": {
"base64-js": "^1.3.1",
"ieee754": "^1.1.13"
} }
}, },
"services/notifications/node_modules/mongodb": { "services/notifications/node_modules/mongodb": {
"version": "6.1.0", "version": "4.17.1",
"resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.1.0.tgz", "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-4.17.1.tgz",
"integrity": "sha512-AvzNY0zMkpothZ5mJAaIo2bGDjlJQqqAbn9fvtVgwIIUPEfdrqGxqNjjbuKyrgQxg2EvCmfWdjq+4uj96c0YPw==", "integrity": "sha512-MBuyYiPUPRTqfH2dV0ya4dcr2E5N52ocBuZ8Sgg/M030nGF78v855B3Z27mZJnp8PxjnUquEnAtjOsphgMZOlQ==",
"dependencies": { "dependencies": {
"@mongodb-js/saslprep": "^1.1.0", "bson": "^4.7.2",
"bson": "^6.1.0", "mongodb-connection-string-url": "^2.6.0",
"mongodb-connection-string-url": "^2.6.0"
},
"engines": {
"node": ">=16.20.1"
},
"peerDependencies": {
"@aws-sdk/credential-providers": "^3.188.0",
"@mongodb-js/zstd": "^1.1.0",
"gcp-metadata": "^5.2.0",
"kerberos": "^2.0.1",
"mongodb-client-encryption": ">=6.0.0 <7",
"snappy": "^7.2.2",
"socks": "^2.7.1" "socks": "^2.7.1"
}, },
"peerDependenciesMeta": { "engines": {
"@aws-sdk/credential-providers": { "node": ">=12.9.0"
"optional": true
}, },
"@mongodb-js/zstd": { "optionalDependencies": {
"optional": true "@aws-sdk/credential-providers": "^3.186.0",
}, "@mongodb-js/saslprep": "^1.1.0"
"gcp-metadata": {
"optional": true
},
"kerberos": {
"optional": true
},
"mongodb-client-encryption": {
"optional": true
},
"snappy": {
"optional": true
},
"socks": {
"optional": true
}
} }
}, },
"services/project-history": { "services/project-history": {
@ -46781,36 +46765,39 @@
"express": "^4.18.2", "express": "^4.18.2",
"method-override": "^3.0.0", "method-override": "^3.0.0",
"mocha": "^10.2.0", "mocha": "^10.2.0",
"mongodb": "^6.1.0", "mongodb": "^4.11.0",
"request": "^2.88.2", "request": "^2.88.2",
"sandboxed-module": "^2.0.4", "sandboxed-module": "^2.0.4",
"sinon": "^9.2.4" "sinon": "^9.2.4"
}, },
"dependencies": { "dependencies": {
"bson": { "bson": {
"version": "6.2.0", "version": "4.7.2",
"resolved": "https://registry.npmjs.org/bson/-/bson-6.2.0.tgz", "resolved": "https://registry.npmjs.org/bson/-/bson-4.7.2.tgz",
"integrity": "sha512-ID1cI+7bazPDyL9wYy9GaQ8gEEohWvcUl/Yf0dIdutJxnmInEEyCsb4awy/OiBfall7zBA179Pahi3vCdFze3Q==" "integrity": "sha512-Ry9wCtIZ5kGqkJoi6aD8KjxFZEx78guTQDnpXWiNthsxzrxAK/i8E6pCHAIZTbaEFWcOCvbecMukfK7XUvyLpQ==",
},
"gcp-metadata": {
"version": "5.3.0",
"resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-5.3.0.tgz",
"integrity": "sha512-FNTkdNEnBdlqF2oatizolQqNANMrcqJt6AAYt99B3y1aLLC8Hc5IOBb+ZnnzllodEEf6xMBp6wRcBbc16fa65w==",
"optional": true,
"peer": true,
"requires": { "requires": {
"gaxios": "^5.0.0", "buffer": "^5.6.0"
"json-bigint": "^1.0.0" }
},
"buffer": {
"version": "5.7.1",
"resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
"integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
"requires": {
"base64-js": "^1.3.1",
"ieee754": "^1.1.13"
} }
}, },
"mongodb": { "mongodb": {
"version": "6.1.0", "version": "4.17.1",
"resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.1.0.tgz", "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-4.17.1.tgz",
"integrity": "sha512-AvzNY0zMkpothZ5mJAaIo2bGDjlJQqqAbn9fvtVgwIIUPEfdrqGxqNjjbuKyrgQxg2EvCmfWdjq+4uj96c0YPw==", "integrity": "sha512-MBuyYiPUPRTqfH2dV0ya4dcr2E5N52ocBuZ8Sgg/M030nGF78v855B3Z27mZJnp8PxjnUquEnAtjOsphgMZOlQ==",
"requires": { "requires": {
"@aws-sdk/credential-providers": "^3.186.0",
"@mongodb-js/saslprep": "^1.1.0", "@mongodb-js/saslprep": "^1.1.0",
"bson": "^6.1.0", "bson": "^4.7.2",
"mongodb-connection-string-url": "^2.6.0" "mongodb-connection-string-url": "^2.6.0",
"socks": "^2.7.1"
} }
} }
} }

View file

@ -18,11 +18,11 @@ const logger = require('@overleaf/logger')
module.exports = { module.exports = {
check(callback) { check(callback) {
const userId = new ObjectId() const userId = ObjectId()
const cleanupNotifications = callback => const cleanupNotifications = callback =>
db.notifications.remove({ user_id: userId }, callback) db.notifications.remove({ user_id: userId }, callback)
let notificationKey = `smoke-test-notification-${new ObjectId()}` let notificationKey = `smoke-test-notification-${ObjectId()}`
const getOpts = endPath => ({ const getOpts = endPath => ({
url: `http://localhost:${port}/user/${userId}${endPath}`, url: `http://localhost:${port}/user/${userId}${endPath}`,
timeout: 5000, timeout: 5000,

View file

@ -20,7 +20,7 @@ module.exports = Notifications = {
callback = function () {} callback = function () {}
} }
const query = { const query = {
user_id: new ObjectId(userId), user_id: ObjectId(userId),
templateKey: { $exists: true }, templateKey: { $exists: true },
} }
db.notifications.find(query).toArray(callback) db.notifications.find(query).toArray(callback)
@ -31,7 +31,7 @@ module.exports = Notifications = {
callback = function () {} callback = function () {}
} }
const query = { const query = {
user_id: new ObjectId(userId), user_id: ObjectId(userId),
key: notification.key, key: notification.key,
} }
return db.notifications.count(query, function (err, count) { return db.notifications.count(query, function (err, count) {
@ -54,7 +54,7 @@ module.exports = Notifications = {
return callback() return callback()
} }
const doc = { const doc = {
user_id: new ObjectId(userId), user_id: ObjectId(userId),
key: notification.key, key: notification.key,
messageOpts: notification.messageOpts, messageOpts: notification.messageOpts,
templateKey: notification.templateKey, templateKey: notification.templateKey,
@ -88,8 +88,8 @@ module.exports = Notifications = {
removeNotificationId(userId, notificationId, callback) { removeNotificationId(userId, notificationId, callback) {
const searchOps = { const searchOps = {
user_id: new ObjectId(userId), user_id: ObjectId(userId),
_id: new ObjectId(notificationId), _id: ObjectId(notificationId),
} }
const updateOperation = { $unset: { templateKey: true, messageOpts: true } } const updateOperation = { $unset: { templateKey: true, messageOpts: true } }
db.notifications.updateOne(searchOps, updateOperation, callback) db.notifications.updateOne(searchOps, updateOperation, callback)
@ -97,7 +97,7 @@ module.exports = Notifications = {
removeNotificationKey(userId, notificationKey, callback) { removeNotificationKey(userId, notificationKey, callback) {
const searchOps = { const searchOps = {
user_id: new ObjectId(userId), user_id: ObjectId(userId),
key: notificationKey, key: notificationKey,
} }
const updateOperation = { $unset: { templateKey: true } } const updateOperation = { $unset: { templateKey: true } }

View file

@ -26,7 +26,7 @@
"bunyan": "^1.8.15", "bunyan": "^1.8.15",
"express": "^4.18.2", "express": "^4.18.2",
"method-override": "^3.0.0", "method-override": "^3.0.0",
"mongodb": "^6.1.0", "mongodb": "^4.11.0",
"request": "^2.88.2" "request": "^2.88.2"
}, },
"devDependencies": { "devDependencies": {

View file

@ -18,7 +18,7 @@ const assert = require('assert')
const { ObjectId } = require('mongodb') const { ObjectId } = require('mongodb')
const userId = '51dc93e6fb625a261300003b' const userId = '51dc93e6fb625a261300003b'
const notificationId = '574ee8d6f40c3a244e704249' const notificationId = 'fb625a26f09d'
const notificationKey = 'notification-key' const notificationKey = 'notification-key'
describe('Notifications Tests', function () { describe('Notifications Tests', function () {
@ -46,7 +46,7 @@ describe('Notifications Tests', function () {
}) })
this.stubbedNotification = { this.stubbedNotification = {
user_id: new ObjectId(userId), user_id: ObjectId(userId),
key: 'notification-key', key: 'notification-key',
messageOpts: 'some info', messageOpts: 'some info',
templateKey: 'template-key', templateKey: 'template-key',
@ -63,7 +63,7 @@ describe('Notifications Tests', function () {
if (err) return done(err) if (err) return done(err)
notifications.should.equal(this.stubbedNotificationArray) notifications.should.equal(this.stubbedNotificationArray)
assert.deepEqual(this.findStub.args[0][0], { assert.deepEqual(this.findStub.args[0][0], {
user_id: new ObjectId(userId), user_id: ObjectId(userId),
templateKey: { $exists: true }, templateKey: { $exists: true },
}) })
return done() return done()
@ -75,7 +75,7 @@ describe('Notifications Tests', function () {
describe('addNotification', function () { describe('addNotification', function () {
beforeEach(function () { beforeEach(function () {
this.stubbedNotification = { this.stubbedNotification = {
user_id: new ObjectId(userId), user_id: ObjectId(userId),
key: 'notification-key', key: 'notification-key',
messageOpts: 'some info', messageOpts: 'some info',
templateKey: 'template-key', templateKey: 'template-key',
@ -150,7 +150,7 @@ describe('Notifications Tests', function () {
describe('when the notification is set to expire', function () { describe('when the notification is set to expire', function () {
beforeEach(function () { beforeEach(function () {
this.stubbedNotification = { this.stubbedNotification = {
user_id: new ObjectId(userId), user_id: ObjectId(userId),
key: 'notification-key', key: 'notification-key',
messageOpts: 'some info', messageOpts: 'some info',
templateKey: 'template-key', templateKey: 'template-key',
@ -190,7 +190,7 @@ describe('Notifications Tests', function () {
return describe('when the notification has a nonsensical expires field', function () { return describe('when the notification has a nonsensical expires field', function () {
beforeEach(function () { beforeEach(function () {
this.stubbedNotification = { this.stubbedNotification = {
user_id: new ObjectId(userId), user_id: ObjectId(userId),
key: 'notification-key', key: 'notification-key',
messageOpts: 'some info', messageOpts: 'some info',
templateKey: 'template-key', templateKey: 'template-key',
@ -229,8 +229,8 @@ describe('Notifications Tests', function () {
err => { err => {
if (err) return done(err) if (err) return done(err)
const searchOps = { const searchOps = {
user_id: new ObjectId(userId), user_id: ObjectId(userId),
_id: new ObjectId(notificationId), _id: ObjectId(notificationId),
} }
const updateOperation = { const updateOperation = {
$unset: { templateKey: true, messageOpts: true }, $unset: { templateKey: true, messageOpts: true },
@ -253,7 +253,7 @@ describe('Notifications Tests', function () {
err => { err => {
if (err) return done(err) if (err) return done(err)
const searchOps = { const searchOps = {
user_id: new ObjectId(userId), user_id: ObjectId(userId),
key: notificationKey, key: notificationKey,
} }
const updateOperation = { const updateOperation = {