ci: Fix CI not testing with Postgres 16 and flaky test (#9210)
This commit is contained in:
2
.github/workflows/ci.yml
vendored
2
.github/workflows/ci.yml
vendored
@@ -238,7 +238,7 @@ jobs:
|
|||||||
POSTGRES_IMAGE: postgis/postgis:15-3.4
|
POSTGRES_IMAGE: postgis/postgis:15-3.4
|
||||||
NODE_VERSION: 22.4.1
|
NODE_VERSION: 22.4.1
|
||||||
- name: PostgreSQL 16, PostGIS 3.4
|
- name: PostgreSQL 16, PostGIS 3.4
|
||||||
POSTGRES_IMAGE: postgis/postgis:15-3.4
|
POSTGRES_IMAGE: postgis/postgis:16-3.4
|
||||||
NODE_VERSION: 22.4.1
|
NODE_VERSION: 22.4.1
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
name: ${{ matrix.name }}
|
name: ${{ matrix.name }}
|
||||||
|
|||||||
332
package-lock.json
generated
332
package-lock.json
generated
@@ -42,8 +42,8 @@
|
|||||||
"otpauth": "9.2.2",
|
"otpauth": "9.2.2",
|
||||||
"parse": "5.3.0",
|
"parse": "5.3.0",
|
||||||
"path-to-regexp": "6.2.1",
|
"path-to-regexp": "6.2.1",
|
||||||
"pg-monitor": "2.0.0",
|
"pg-monitor": "2.1.0",
|
||||||
"pg-promise": "11.7.8",
|
"pg-promise": "11.9.1",
|
||||||
"pluralize": "8.0.0",
|
"pluralize": "8.0.0",
|
||||||
"punycode": "2.3.1",
|
"punycode": "2.3.1",
|
||||||
"rate-limit-redis": "4.2.0",
|
"rate-limit-redis": "4.2.0",
|
||||||
@@ -7057,6 +7057,21 @@
|
|||||||
"node": ">=6"
|
"node": ">=6"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/cli-color": {
|
||||||
|
"version": "2.0.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/cli-color/-/cli-color-2.0.4.tgz",
|
||||||
|
"integrity": "sha512-zlnpg0jNcibNrO7GG9IeHH7maWFeCz+Ja1wx/7tZNU5ASSSSZ+/qZciM0/LHCYxSdqv5h2sdbQ/PXYdOuetXvA==",
|
||||||
|
"dependencies": {
|
||||||
|
"d": "^1.0.1",
|
||||||
|
"es5-ext": "^0.10.64",
|
||||||
|
"es6-iterator": "^2.0.3",
|
||||||
|
"memoizee": "^0.4.15",
|
||||||
|
"timers-ext": "^0.1.7"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=0.10"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/cli-cursor": {
|
"node_modules/cli-cursor": {
|
||||||
"version": "3.1.0",
|
"version": "3.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz",
|
||||||
@@ -7692,19 +7707,17 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/d": {
|
"node_modules/d": {
|
||||||
"version": "1.0.1",
|
"version": "1.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/d/-/d-1.0.2.tgz",
|
||||||
"integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==",
|
"integrity": "sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"es5-ext": "^0.10.50",
|
"es5-ext": "^0.10.64",
|
||||||
"type": "^1.0.1"
|
"type": "^2.7.2"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=0.12"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/d/node_modules/type": {
|
|
||||||
"version": "1.2.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz",
|
|
||||||
"integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg=="
|
|
||||||
},
|
|
||||||
"node_modules/dashdash": {
|
"node_modules/dashdash": {
|
||||||
"version": "1.14.1",
|
"version": "1.14.1",
|
||||||
"resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
|
"resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
|
||||||
@@ -8568,9 +8581,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/es5-ext": {
|
"node_modules/es5-ext": {
|
||||||
"version": "0.10.63",
|
"version": "0.10.64",
|
||||||
"resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.63.tgz",
|
"resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.64.tgz",
|
||||||
"integrity": "sha512-hUCZd2Byj/mNKjfP9jXrdVZ62B8KuA/VoK7X8nUh5qT+AxDmcbvZz041oDVZdbIN1qW6XY9VDNwzkvKnZvK2TQ==",
|
"integrity": "sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==",
|
||||||
"hasInstallScript": true,
|
"hasInstallScript": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"es6-iterator": "^2.0.3",
|
"es6-iterator": "^2.0.3",
|
||||||
@@ -8599,12 +8612,26 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/es6-symbol": {
|
"node_modules/es6-symbol": {
|
||||||
"version": "3.1.3",
|
"version": "3.1.4",
|
||||||
"resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz",
|
"resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.4.tgz",
|
||||||
"integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==",
|
"integrity": "sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"d": "^1.0.1",
|
"d": "^1.0.2",
|
||||||
"ext": "^1.1.2"
|
"ext": "^1.7.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=0.12"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/es6-weak-map": {
|
||||||
|
"version": "2.0.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz",
|
||||||
|
"integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==",
|
||||||
|
"dependencies": {
|
||||||
|
"d": "1",
|
||||||
|
"es5-ext": "^0.10.46",
|
||||||
|
"es6-iterator": "^2.0.3",
|
||||||
|
"es6-symbol": "^3.1.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/escalade": {
|
"node_modules/escalade": {
|
||||||
@@ -12905,6 +12932,24 @@
|
|||||||
"node": ">= 0.6"
|
"node": ">= 0.6"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/memoizee": {
|
||||||
|
"version": "0.4.17",
|
||||||
|
"resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.17.tgz",
|
||||||
|
"integrity": "sha512-DGqD7Hjpi/1or4F/aYAspXKNm5Yili0QDAFAY4QYvpqpgiY6+1jOfqpmByzjxbWd/T9mChbCArXAbDAsTm5oXA==",
|
||||||
|
"dependencies": {
|
||||||
|
"d": "^1.0.2",
|
||||||
|
"es5-ext": "^0.10.64",
|
||||||
|
"es6-weak-map": "^2.0.3",
|
||||||
|
"event-emitter": "^0.3.5",
|
||||||
|
"is-promise": "^2.2.2",
|
||||||
|
"lru-queue": "^0.1.0",
|
||||||
|
"next-tick": "^1.1.0",
|
||||||
|
"timers-ext": "^0.1.7"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=0.12"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/memory-pager": {
|
"node_modules/memory-pager": {
|
||||||
"version": "1.5.0",
|
"version": "1.5.0",
|
||||||
"resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz",
|
"resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz",
|
||||||
@@ -17101,9 +17146,9 @@
|
|||||||
"integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow=="
|
"integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow=="
|
||||||
},
|
},
|
||||||
"node_modules/pg": {
|
"node_modules/pg": {
|
||||||
"version": "8.11.5",
|
"version": "8.12.0",
|
||||||
"resolved": "https://registry.npmjs.org/pg/-/pg-8.11.5.tgz",
|
"resolved": "https://registry.npmjs.org/pg/-/pg-8.12.0.tgz",
|
||||||
"integrity": "sha512-jqgNHSKL5cbDjFlHyYsCXmQDrfIX/3RsNwYqpd4N0Kt8niLuNoRNH+aazv6cOd43gPh9Y4DjQCtb+X0MH0Hvnw==",
|
"integrity": "sha512-A+LHUSnwnxrnL/tZ+OLfqR1SxLN3c/pgDztZ47Rpbsd4jUytsTtwQo/TLPRzPJMp/1pbhYVhH9cuSZLAajNfjQ==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"pg-connection-string": "^2.6.4",
|
"pg-connection-string": "^2.6.4",
|
||||||
"pg-pool": "^3.6.2",
|
"pg-pool": "^3.6.2",
|
||||||
@@ -17146,65 +17191,24 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/pg-minify": {
|
"node_modules/pg-minify": {
|
||||||
"version": "1.6.4",
|
"version": "1.6.5",
|
||||||
"resolved": "https://registry.npmjs.org/pg-minify/-/pg-minify-1.6.4.tgz",
|
"resolved": "https://registry.npmjs.org/pg-minify/-/pg-minify-1.6.5.tgz",
|
||||||
"integrity": "sha512-cf6hBt1YqzqPX0OznXKSv4U7e4o7eUU4zp2zQsbJ+4OCNNr7EnnAVWkIz4k0dv6UN4ouS1ZL4WlXxCrZHHl69g==",
|
"integrity": "sha512-u0UE8veaCnMfJmoklqneeBBopOAPG3/6DHqGVHYAhz8DkJXh9dnjPlz25fRxn4e+6XVzdOp7kau63Rp52fZ3WQ==",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=14.0.0"
|
"node": ">=14.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/pg-monitor": {
|
"node_modules/pg-monitor": {
|
||||||
"version": "2.0.0",
|
"version": "2.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/pg-monitor/-/pg-monitor-2.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/pg-monitor/-/pg-monitor-2.1.0.tgz",
|
||||||
"integrity": "sha512-UqjhroM701sRrJHhXeF1OwNBGxkN9R0YgkVU8A46wWn3RwK/K7QDylChMoDxo8TmGp86CBP4ZSf+RK9vD8XyVA==",
|
"integrity": "sha512-+yMzUg7oxGuj+4CQODresSFz3unIVYKDhyPp7Vrb4L34yJacVZXicFkai3s/is+mzD5KE7uKljQ7uJrL8PsTxw==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"cli-color": "2.0.3"
|
"cli-color": "2.0.4"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=14"
|
"node": ">=14"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/pg-monitor/node_modules/cli-color": {
|
|
||||||
"version": "2.0.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/cli-color/-/cli-color-2.0.3.tgz",
|
|
||||||
"integrity": "sha512-OkoZnxyC4ERN3zLzZaY9Emb7f/MhBOIpePv0Ycok0fJYT+Ouo00UBEIwsVsr0yoow++n5YWlSUgST9GKhNHiRQ==",
|
|
||||||
"dependencies": {
|
|
||||||
"d": "^1.0.1",
|
|
||||||
"es5-ext": "^0.10.61",
|
|
||||||
"es6-iterator": "^2.0.3",
|
|
||||||
"memoizee": "^0.4.15",
|
|
||||||
"timers-ext": "^0.1.7"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=0.10"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/pg-monitor/node_modules/es6-weak-map": {
|
|
||||||
"version": "2.0.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz",
|
|
||||||
"integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==",
|
|
||||||
"dependencies": {
|
|
||||||
"d": "1",
|
|
||||||
"es5-ext": "^0.10.46",
|
|
||||||
"es6-iterator": "^2.0.3",
|
|
||||||
"es6-symbol": "^3.1.1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/pg-monitor/node_modules/memoizee": {
|
|
||||||
"version": "0.4.15",
|
|
||||||
"resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.15.tgz",
|
|
||||||
"integrity": "sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ==",
|
|
||||||
"dependencies": {
|
|
||||||
"d": "^1.0.1",
|
|
||||||
"es5-ext": "^0.10.53",
|
|
||||||
"es6-weak-map": "^2.0.3",
|
|
||||||
"event-emitter": "^0.3.5",
|
|
||||||
"is-promise": "^2.2.2",
|
|
||||||
"lru-queue": "^0.1.0",
|
|
||||||
"next-tick": "^1.1.0",
|
|
||||||
"timers-ext": "^0.1.7"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/pg-pool": {
|
"node_modules/pg-pool": {
|
||||||
"version": "3.6.2",
|
"version": "3.6.2",
|
||||||
"resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.6.2.tgz",
|
"resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.6.2.tgz",
|
||||||
@@ -17214,13 +17218,13 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/pg-promise": {
|
"node_modules/pg-promise": {
|
||||||
"version": "11.7.8",
|
"version": "11.9.1",
|
||||||
"resolved": "https://registry.npmjs.org/pg-promise/-/pg-promise-11.7.8.tgz",
|
"resolved": "https://registry.npmjs.org/pg-promise/-/pg-promise-11.9.1.tgz",
|
||||||
"integrity": "sha512-s5pcLp8QLIFNhnEsxaqBtDh7LsOG3hjJbVOVpYlWPqg/g1LIixGMtbNgbxW1HkTSY5rKT9tyE0J+dw2X7bD3rQ==",
|
"integrity": "sha512-qvMmyDvWd64X0a25hCuWV40GLMbgeYf4z7ZmzxQqGHtUIlzMtxcMtaBHAMr7XVOL62wFv2ZVKW5pFruD/4ZAOg==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"assert-options": "0.8.1",
|
"assert-options": "0.8.1",
|
||||||
"pg": "8.11.5",
|
"pg": "8.12.0",
|
||||||
"pg-minify": "1.6.4",
|
"pg-minify": "1.6.5",
|
||||||
"spex": "3.3.0"
|
"spex": "3.3.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
@@ -20104,12 +20108,15 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/timers-ext": {
|
"node_modules/timers-ext": {
|
||||||
"version": "0.1.7",
|
"version": "0.1.8",
|
||||||
"resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz",
|
"resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.8.tgz",
|
||||||
"integrity": "sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==",
|
"integrity": "sha512-wFH7+SEAcKfJpfLPkrgMPvvwnEtj8W4IurvEyrKsDleXnKLCDw71w8jltvfLa8Rm4qQxxT4jmDBYbJG/z7qoww==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"es5-ext": "~0.10.46",
|
"es5-ext": "^0.10.64",
|
||||||
"next-tick": "1"
|
"next-tick": "^1.1.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=0.12"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/to-buffer": {
|
"node_modules/to-buffer": {
|
||||||
@@ -20299,9 +20306,9 @@
|
|||||||
"integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA=="
|
"integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA=="
|
||||||
},
|
},
|
||||||
"node_modules/type": {
|
"node_modules/type": {
|
||||||
"version": "2.7.2",
|
"version": "2.7.3",
|
||||||
"resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz",
|
"resolved": "https://registry.npmjs.org/type/-/type-2.7.3.tgz",
|
||||||
"integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw=="
|
"integrity": "sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ=="
|
||||||
},
|
},
|
||||||
"node_modules/type-check": {
|
"node_modules/type-check": {
|
||||||
"version": "0.4.0",
|
"version": "0.4.0",
|
||||||
@@ -26201,6 +26208,18 @@
|
|||||||
"integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==",
|
"integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"cli-color": {
|
||||||
|
"version": "2.0.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/cli-color/-/cli-color-2.0.4.tgz",
|
||||||
|
"integrity": "sha512-zlnpg0jNcibNrO7GG9IeHH7maWFeCz+Ja1wx/7tZNU5ASSSSZ+/qZciM0/LHCYxSdqv5h2sdbQ/PXYdOuetXvA==",
|
||||||
|
"requires": {
|
||||||
|
"d": "^1.0.1",
|
||||||
|
"es5-ext": "^0.10.64",
|
||||||
|
"es6-iterator": "^2.0.3",
|
||||||
|
"memoizee": "^0.4.15",
|
||||||
|
"timers-ext": "^0.1.7"
|
||||||
|
}
|
||||||
|
},
|
||||||
"cli-cursor": {
|
"cli-cursor": {
|
||||||
"version": "3.1.0",
|
"version": "3.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz",
|
||||||
@@ -26663,19 +26682,12 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"d": {
|
"d": {
|
||||||
"version": "1.0.1",
|
"version": "1.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/d/-/d-1.0.2.tgz",
|
||||||
"integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==",
|
"integrity": "sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"es5-ext": "^0.10.50",
|
"es5-ext": "^0.10.64",
|
||||||
"type": "^1.0.1"
|
"type": "^2.7.2"
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"type": {
|
|
||||||
"version": "1.2.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz",
|
|
||||||
"integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg=="
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"dashdash": {
|
"dashdash": {
|
||||||
@@ -27321,9 +27333,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"es5-ext": {
|
"es5-ext": {
|
||||||
"version": "0.10.63",
|
"version": "0.10.64",
|
||||||
"resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.63.tgz",
|
"resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.64.tgz",
|
||||||
"integrity": "sha512-hUCZd2Byj/mNKjfP9jXrdVZ62B8KuA/VoK7X8nUh5qT+AxDmcbvZz041oDVZdbIN1qW6XY9VDNwzkvKnZvK2TQ==",
|
"integrity": "sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"es6-iterator": "^2.0.3",
|
"es6-iterator": "^2.0.3",
|
||||||
"es6-symbol": "^3.1.3",
|
"es6-symbol": "^3.1.3",
|
||||||
@@ -27348,12 +27360,23 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"es6-symbol": {
|
"es6-symbol": {
|
||||||
"version": "3.1.3",
|
"version": "3.1.4",
|
||||||
"resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz",
|
"resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.4.tgz",
|
||||||
"integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==",
|
"integrity": "sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"d": "^1.0.1",
|
"d": "^1.0.2",
|
||||||
"ext": "^1.1.2"
|
"ext": "^1.7.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"es6-weak-map": {
|
||||||
|
"version": "2.0.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz",
|
||||||
|
"integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==",
|
||||||
|
"requires": {
|
||||||
|
"d": "1",
|
||||||
|
"es5-ext": "^0.10.46",
|
||||||
|
"es6-iterator": "^2.0.3",
|
||||||
|
"es6-symbol": "^3.1.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"escalade": {
|
"escalade": {
|
||||||
@@ -30551,6 +30574,21 @@
|
|||||||
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
|
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
|
||||||
"integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ=="
|
"integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ=="
|
||||||
},
|
},
|
||||||
|
"memoizee": {
|
||||||
|
"version": "0.4.17",
|
||||||
|
"resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.17.tgz",
|
||||||
|
"integrity": "sha512-DGqD7Hjpi/1or4F/aYAspXKNm5Yili0QDAFAY4QYvpqpgiY6+1jOfqpmByzjxbWd/T9mChbCArXAbDAsTm5oXA==",
|
||||||
|
"requires": {
|
||||||
|
"d": "^1.0.2",
|
||||||
|
"es5-ext": "^0.10.64",
|
||||||
|
"es6-weak-map": "^2.0.3",
|
||||||
|
"event-emitter": "^0.3.5",
|
||||||
|
"is-promise": "^2.2.2",
|
||||||
|
"lru-queue": "^0.1.0",
|
||||||
|
"next-tick": "^1.1.0",
|
||||||
|
"timers-ext": "^0.1.7"
|
||||||
|
}
|
||||||
|
},
|
||||||
"memory-pager": {
|
"memory-pager": {
|
||||||
"version": "1.5.0",
|
"version": "1.5.0",
|
||||||
"resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz",
|
"resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz",
|
||||||
@@ -33434,9 +33472,9 @@
|
|||||||
"integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow=="
|
"integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow=="
|
||||||
},
|
},
|
||||||
"pg": {
|
"pg": {
|
||||||
"version": "8.11.5",
|
"version": "8.12.0",
|
||||||
"resolved": "https://registry.npmjs.org/pg/-/pg-8.11.5.tgz",
|
"resolved": "https://registry.npmjs.org/pg/-/pg-8.12.0.tgz",
|
||||||
"integrity": "sha512-jqgNHSKL5cbDjFlHyYsCXmQDrfIX/3RsNwYqpd4N0Kt8niLuNoRNH+aazv6cOd43gPh9Y4DjQCtb+X0MH0Hvnw==",
|
"integrity": "sha512-A+LHUSnwnxrnL/tZ+OLfqR1SxLN3c/pgDztZ47Rpbsd4jUytsTtwQo/TLPRzPJMp/1pbhYVhH9cuSZLAajNfjQ==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"pg-cloudflare": "^1.1.1",
|
"pg-cloudflare": "^1.1.1",
|
||||||
"pg-connection-string": "^2.6.4",
|
"pg-connection-string": "^2.6.4",
|
||||||
@@ -33463,56 +33501,16 @@
|
|||||||
"integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw=="
|
"integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw=="
|
||||||
},
|
},
|
||||||
"pg-minify": {
|
"pg-minify": {
|
||||||
"version": "1.6.4",
|
"version": "1.6.5",
|
||||||
"resolved": "https://registry.npmjs.org/pg-minify/-/pg-minify-1.6.4.tgz",
|
"resolved": "https://registry.npmjs.org/pg-minify/-/pg-minify-1.6.5.tgz",
|
||||||
"integrity": "sha512-cf6hBt1YqzqPX0OznXKSv4U7e4o7eUU4zp2zQsbJ+4OCNNr7EnnAVWkIz4k0dv6UN4ouS1ZL4WlXxCrZHHl69g=="
|
"integrity": "sha512-u0UE8veaCnMfJmoklqneeBBopOAPG3/6DHqGVHYAhz8DkJXh9dnjPlz25fRxn4e+6XVzdOp7kau63Rp52fZ3WQ=="
|
||||||
},
|
},
|
||||||
"pg-monitor": {
|
"pg-monitor": {
|
||||||
"version": "2.0.0",
|
"version": "2.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/pg-monitor/-/pg-monitor-2.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/pg-monitor/-/pg-monitor-2.1.0.tgz",
|
||||||
"integrity": "sha512-UqjhroM701sRrJHhXeF1OwNBGxkN9R0YgkVU8A46wWn3RwK/K7QDylChMoDxo8TmGp86CBP4ZSf+RK9vD8XyVA==",
|
"integrity": "sha512-+yMzUg7oxGuj+4CQODresSFz3unIVYKDhyPp7Vrb4L34yJacVZXicFkai3s/is+mzD5KE7uKljQ7uJrL8PsTxw==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"cli-color": "2.0.3"
|
"cli-color": "2.0.4"
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"cli-color": {
|
|
||||||
"version": "2.0.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/cli-color/-/cli-color-2.0.3.tgz",
|
|
||||||
"integrity": "sha512-OkoZnxyC4ERN3zLzZaY9Emb7f/MhBOIpePv0Ycok0fJYT+Ouo00UBEIwsVsr0yoow++n5YWlSUgST9GKhNHiRQ==",
|
|
||||||
"requires": {
|
|
||||||
"d": "^1.0.1",
|
|
||||||
"es5-ext": "^0.10.61",
|
|
||||||
"es6-iterator": "^2.0.3",
|
|
||||||
"memoizee": "^0.4.15",
|
|
||||||
"timers-ext": "^0.1.7"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"es6-weak-map": {
|
|
||||||
"version": "2.0.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz",
|
|
||||||
"integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==",
|
|
||||||
"requires": {
|
|
||||||
"d": "1",
|
|
||||||
"es5-ext": "^0.10.46",
|
|
||||||
"es6-iterator": "^2.0.3",
|
|
||||||
"es6-symbol": "^3.1.1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"memoizee": {
|
|
||||||
"version": "0.4.15",
|
|
||||||
"resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.15.tgz",
|
|
||||||
"integrity": "sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ==",
|
|
||||||
"requires": {
|
|
||||||
"d": "^1.0.1",
|
|
||||||
"es5-ext": "^0.10.53",
|
|
||||||
"es6-weak-map": "^2.0.3",
|
|
||||||
"event-emitter": "^0.3.5",
|
|
||||||
"is-promise": "^2.2.2",
|
|
||||||
"lru-queue": "^0.1.0",
|
|
||||||
"next-tick": "^1.1.0",
|
|
||||||
"timers-ext": "^0.1.7"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"pg-pool": {
|
"pg-pool": {
|
||||||
@@ -33522,13 +33520,13 @@
|
|||||||
"requires": {}
|
"requires": {}
|
||||||
},
|
},
|
||||||
"pg-promise": {
|
"pg-promise": {
|
||||||
"version": "11.7.8",
|
"version": "11.9.1",
|
||||||
"resolved": "https://registry.npmjs.org/pg-promise/-/pg-promise-11.7.8.tgz",
|
"resolved": "https://registry.npmjs.org/pg-promise/-/pg-promise-11.9.1.tgz",
|
||||||
"integrity": "sha512-s5pcLp8QLIFNhnEsxaqBtDh7LsOG3hjJbVOVpYlWPqg/g1LIixGMtbNgbxW1HkTSY5rKT9tyE0J+dw2X7bD3rQ==",
|
"integrity": "sha512-qvMmyDvWd64X0a25hCuWV40GLMbgeYf4z7ZmzxQqGHtUIlzMtxcMtaBHAMr7XVOL62wFv2ZVKW5pFruD/4ZAOg==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"assert-options": "0.8.1",
|
"assert-options": "0.8.1",
|
||||||
"pg": "8.11.5",
|
"pg": "8.12.0",
|
||||||
"pg-minify": "1.6.4",
|
"pg-minify": "1.6.5",
|
||||||
"spex": "3.3.0"
|
"spex": "3.3.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -35641,12 +35639,12 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"timers-ext": {
|
"timers-ext": {
|
||||||
"version": "0.1.7",
|
"version": "0.1.8",
|
||||||
"resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz",
|
"resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.8.tgz",
|
||||||
"integrity": "sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==",
|
"integrity": "sha512-wFH7+SEAcKfJpfLPkrgMPvvwnEtj8W4IurvEyrKsDleXnKLCDw71w8jltvfLa8Rm4qQxxT4jmDBYbJG/z7qoww==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"es5-ext": "~0.10.46",
|
"es5-ext": "^0.10.64",
|
||||||
"next-tick": "1"
|
"next-tick": "^1.1.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"to-buffer": {
|
"to-buffer": {
|
||||||
@@ -35790,9 +35788,9 @@
|
|||||||
"integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA=="
|
"integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA=="
|
||||||
},
|
},
|
||||||
"type": {
|
"type": {
|
||||||
"version": "2.7.2",
|
"version": "2.7.3",
|
||||||
"resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz",
|
"resolved": "https://registry.npmjs.org/type/-/type-2.7.3.tgz",
|
||||||
"integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw=="
|
"integrity": "sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ=="
|
||||||
},
|
},
|
||||||
"type-check": {
|
"type-check": {
|
||||||
"version": "0.4.0",
|
"version": "0.4.0",
|
||||||
|
|||||||
@@ -51,8 +51,8 @@
|
|||||||
"otpauth": "9.2.2",
|
"otpauth": "9.2.2",
|
||||||
"parse": "5.3.0",
|
"parse": "5.3.0",
|
||||||
"path-to-regexp": "6.2.1",
|
"path-to-regexp": "6.2.1",
|
||||||
"pg-monitor": "2.0.0",
|
"pg-monitor": "2.1.0",
|
||||||
"pg-promise": "11.7.8",
|
"pg-promise": "11.9.1",
|
||||||
"pluralize": "8.0.0",
|
"pluralize": "8.0.0",
|
||||||
"punycode": "2.3.1",
|
"punycode": "2.3.1",
|
||||||
"rate-limit-redis": "4.2.0",
|
"rate-limit-redis": "4.2.0",
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ const UserController = require('../lib/Controllers/UserController').UserControll
|
|||||||
const Config = require('../lib/Config');
|
const Config = require('../lib/Config');
|
||||||
const ParseServer = require('../lib/index').ParseServer;
|
const ParseServer = require('../lib/index').ParseServer;
|
||||||
const triggers = require('../lib/triggers');
|
const triggers = require('../lib/triggers');
|
||||||
const { resolvingPromise, sleep } = require('./support/testUtils');
|
const { resolvingPromise, sleep } = require('../lib/TestUtils');
|
||||||
const validatorFail = () => {
|
const validatorFail = () => {
|
||||||
throw 'you are not authorized';
|
throw 'you are not authorized';
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
const batch = require('../lib/batch');
|
const batch = require('../lib/batch');
|
||||||
const request = require('../lib/request');
|
const request = require('../lib/request');
|
||||||
const TestUtils = require('../lib/TestUtils');
|
|
||||||
|
|
||||||
const originalURL = '/parse/batch';
|
const originalURL = '/parse/batch';
|
||||||
const serverURL = 'http://localhost:1234/parse';
|
const serverURL = 'http://localhost:1234/parse';
|
||||||
@@ -18,9 +17,13 @@ const headers = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
describe('batch', () => {
|
describe('batch', () => {
|
||||||
|
let createSpy;
|
||||||
|
beforeEach(async () => {
|
||||||
|
createSpy = spyOn(databaseAdapter, 'createObject').and.callThrough();
|
||||||
|
});
|
||||||
|
|
||||||
it('should return the proper url', () => {
|
it('should return the proper url', () => {
|
||||||
const internalURL = batch.makeBatchRoutingPathFunction(originalURL)('/parse/classes/Object');
|
const internalURL = batch.makeBatchRoutingPathFunction(originalURL)('/parse/classes/Object');
|
||||||
|
|
||||||
expect(internalURL).toEqual('/classes/Object');
|
expect(internalURL).toEqual('/classes/Object');
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -133,8 +136,6 @@ describe('batch', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('should handle a batch request without transaction', async () => {
|
it('should handle a batch request without transaction', async () => {
|
||||||
spyOn(databaseAdapter, 'createObject').and.callThrough();
|
|
||||||
|
|
||||||
const response = await request({
|
const response = await request({
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
headers: headers,
|
headers: headers,
|
||||||
@@ -154,7 +155,6 @@ describe('batch', () => {
|
|||||||
],
|
],
|
||||||
}),
|
}),
|
||||||
});
|
});
|
||||||
|
|
||||||
expect(response.data.length).toEqual(2);
|
expect(response.data.length).toEqual(2);
|
||||||
expect(response.data[0].success.objectId).toBeDefined();
|
expect(response.data[0].success.objectId).toBeDefined();
|
||||||
expect(response.data[0].success.createdAt).toBeDefined();
|
expect(response.data[0].success.createdAt).toBeDefined();
|
||||||
@@ -162,15 +162,13 @@ describe('batch', () => {
|
|||||||
expect(response.data[1].success.createdAt).toBeDefined();
|
expect(response.data[1].success.createdAt).toBeDefined();
|
||||||
const query = new Parse.Query('MyObject');
|
const query = new Parse.Query('MyObject');
|
||||||
const results = await query.find();
|
const results = await query.find();
|
||||||
expect(databaseAdapter.createObject.calls.count()).toBe(2);
|
expect(createSpy.calls.count()).toBe(2);
|
||||||
expect(databaseAdapter.createObject.calls.argsFor(0)[3]).toEqual(null);
|
expect(createSpy.calls.argsFor(0)[3]).toEqual(null);
|
||||||
expect(databaseAdapter.createObject.calls.argsFor(1)[3]).toEqual(null);
|
expect(createSpy.calls.argsFor(1)[3]).toEqual(null);
|
||||||
expect(results.map(result => result.get('key')).sort()).toEqual(['value1', 'value2']);
|
expect(results.map(result => result.get('key')).sort()).toEqual(['value1', 'value2']);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should handle a batch request with transaction = false', async () => {
|
it('should handle a batch request with transaction = false', async () => {
|
||||||
spyOn(databaseAdapter, 'createObject').and.callThrough();
|
|
||||||
|
|
||||||
const response = await request({
|
const response = await request({
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
headers: headers,
|
headers: headers,
|
||||||
@@ -196,11 +194,12 @@ describe('batch', () => {
|
|||||||
expect(response.data[0].success.createdAt).toBeDefined();
|
expect(response.data[0].success.createdAt).toBeDefined();
|
||||||
expect(response.data[1].success.objectId).toBeDefined();
|
expect(response.data[1].success.objectId).toBeDefined();
|
||||||
expect(response.data[1].success.createdAt).toBeDefined();
|
expect(response.data[1].success.createdAt).toBeDefined();
|
||||||
|
|
||||||
const query = new Parse.Query('MyObject');
|
const query = new Parse.Query('MyObject');
|
||||||
const results = await query.find();
|
const results = await query.find();
|
||||||
expect(databaseAdapter.createObject.calls.count()).toBe(2);
|
expect(createSpy.calls.count()).toBe(2);
|
||||||
expect(databaseAdapter.createObject.calls.argsFor(0)[3]).toEqual(null);
|
expect(createSpy.calls.argsFor(0)[3]).toEqual(null);
|
||||||
expect(databaseAdapter.createObject.calls.argsFor(1)[3]).toEqual(null);
|
expect(createSpy.calls.argsFor(1)[3]).toEqual(null);
|
||||||
expect(results.map(result => result.get('key')).sort()).toEqual(['value1', 'value2']);
|
expect(results.map(result => result.get('key')).sort()).toEqual(['value1', 'value2']);
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -209,24 +208,11 @@ describe('batch', () => {
|
|||||||
process.env.PARSE_SERVER_TEST_DB === 'postgres'
|
process.env.PARSE_SERVER_TEST_DB === 'postgres'
|
||||||
) {
|
) {
|
||||||
describe('transactions', () => {
|
describe('transactions', () => {
|
||||||
beforeEach(async () => {
|
|
||||||
await TestUtils.destroyAllDataPermanently(true);
|
|
||||||
if (process.env.MONGODB_TOPOLOGY === 'replicaset') {
|
|
||||||
await reconfigureServer({
|
|
||||||
databaseAdapter: undefined,
|
|
||||||
databaseURI:
|
|
||||||
'mongodb://localhost:27017/parseServerMongoAdapterTestDatabase?replicaSet=replicaset',
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
await reconfigureServer();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should handle a batch request with transaction = true', async () => {
|
it('should handle a batch request with transaction = true', async () => {
|
||||||
const myObject = new Parse.Object('MyObject'); // This is important because transaction only works on pre-existing collections
|
const myObject = new Parse.Object('MyObject'); // This is important because transaction only works on pre-existing collections
|
||||||
await myObject.save();
|
await myObject.save();
|
||||||
await myObject.destroy();
|
await myObject.destroy();
|
||||||
spyOn(databaseAdapter, 'createObject').and.callThrough();
|
createSpy.calls.reset();
|
||||||
const response = await request({
|
const response = await request({
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
headers: headers,
|
headers: headers,
|
||||||
@@ -254,10 +240,10 @@ describe('batch', () => {
|
|||||||
expect(response.data[1].success.createdAt).toBeDefined();
|
expect(response.data[1].success.createdAt).toBeDefined();
|
||||||
const query = new Parse.Query('MyObject');
|
const query = new Parse.Query('MyObject');
|
||||||
const results = await query.find();
|
const results = await query.find();
|
||||||
expect(databaseAdapter.createObject.calls.count() % 2).toBe(0);
|
expect(createSpy.calls.count()).toBe(2);
|
||||||
for (let i = 0; i + 1 < databaseAdapter.createObject.calls.length; i = i + 2) {
|
for (let i = 0; i + 1 < createSpy.calls.length; i = i + 2) {
|
||||||
expect(databaseAdapter.createObject.calls.argsFor(i)[3]).toBe(
|
expect(createSpy.calls.argsFor(i)[3]).toBe(
|
||||||
databaseAdapter.createObject.calls.argsFor(i + 1)[3]
|
createSpy.calls.argsFor(i + 1)[3]
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
expect(results.map(result => result.get('key')).sort()).toEqual(['value1', 'value2']);
|
expect(results.map(result => result.get('key')).sort()).toEqual(['value1', 'value2']);
|
||||||
@@ -265,9 +251,11 @@ describe('batch', () => {
|
|||||||
|
|
||||||
it('should not save anything when one operation fails in a transaction', async () => {
|
it('should not save anything when one operation fails in a transaction', async () => {
|
||||||
const myObject = new Parse.Object('MyObject'); // This is important because transaction only works on pre-existing collections
|
const myObject = new Parse.Object('MyObject'); // This is important because transaction only works on pre-existing collections
|
||||||
await myObject.save();
|
await myObject.save({ key: 'stringField' });
|
||||||
await myObject.destroy();
|
await myObject.destroy();
|
||||||
|
createSpy.calls.reset();
|
||||||
try {
|
try {
|
||||||
|
// Saving a number to a string field should fail
|
||||||
await request({
|
await request({
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
headers: headers,
|
headers: headers,
|
||||||
@@ -386,8 +374,7 @@ describe('batch', () => {
|
|||||||
const myObject2 = new Parse.Object('MyObject2'); // This is important because transaction only works on pre-existing collections
|
const myObject2 = new Parse.Object('MyObject2'); // This is important because transaction only works on pre-existing collections
|
||||||
await myObject2.save();
|
await myObject2.save();
|
||||||
await myObject2.destroy();
|
await myObject2.destroy();
|
||||||
|
createSpy.calls.reset();
|
||||||
spyOn(databaseAdapter, 'createObject').and.callThrough();
|
|
||||||
|
|
||||||
let myObjectCalls = 0;
|
let myObjectCalls = 0;
|
||||||
Parse.Cloud.beforeSave('MyObject', async () => {
|
Parse.Cloud.beforeSave('MyObject', async () => {
|
||||||
|
|||||||
@@ -1,18 +0,0 @@
|
|||||||
// Create Deferred Promise
|
|
||||||
function resolvingPromise() {
|
|
||||||
let res;
|
|
||||||
let rej;
|
|
||||||
const promise = new Promise((resolve, reject) => {
|
|
||||||
res = resolve;
|
|
||||||
rej = reject;
|
|
||||||
});
|
|
||||||
promise.resolve = res;
|
|
||||||
promise.reject = rej;
|
|
||||||
return promise;
|
|
||||||
}
|
|
||||||
|
|
||||||
function sleep(ms) {
|
|
||||||
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
||||||
}
|
|
||||||
|
|
||||||
module.exports = { resolvingPromise, sleep };
|
|
||||||
@@ -26,3 +26,19 @@ export function destroyAllDataPermanently(fast) {
|
|||||||
})
|
})
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function resolvingPromise() {
|
||||||
|
let res;
|
||||||
|
let rej;
|
||||||
|
const promise = new Promise((resolve, reject) => {
|
||||||
|
res = resolve;
|
||||||
|
rej = reject;
|
||||||
|
});
|
||||||
|
promise.resolve = res;
|
||||||
|
promise.reject = rej;
|
||||||
|
return promise;
|
||||||
|
}
|
||||||
|
|
||||||
|
export function sleep(ms) {
|
||||||
|
return new Promise((resolve) => setTimeout(resolve, ms));
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user