@sync-in/server 1.4.0 → 1.5.1
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/CHANGELOG.md +26 -0
- package/README.md +2 -1
- package/package.json +5 -5
- package/server/applications/comments/comments.controller.spec.js +103 -4
- package/server/applications/comments/comments.controller.spec.js.map +1 -1
- package/server/applications/comments/services/comments-manager.service.spec.js +409 -9
- package/server/applications/comments/services/comments-manager.service.spec.js.map +1 -1
- package/server/applications/files/adapters/files-indexer-mysql.service.spec.js +333 -0
- package/server/applications/files/adapters/files-indexer-mysql.service.spec.js.map +1 -0
- package/server/applications/files/constants/routes.js +6 -1
- package/server/applications/files/constants/routes.js.map +1 -1
- package/server/applications/files/files-only-office.controller.js +11 -0
- package/server/applications/files/files-only-office.controller.js.map +1 -1
- package/server/applications/files/files-only-office.controller.spec.js +97 -3
- package/server/applications/files/files-only-office.controller.spec.js.map +1 -1
- package/server/applications/files/files-tasks.controller.spec.js +91 -1
- package/server/applications/files/files-tasks.controller.spec.js.map +1 -1
- package/server/applications/files/files.controller.spec.js +268 -46
- package/server/applications/files/files.controller.spec.js.map +1 -1
- package/server/applications/files/guards/files-only-office.guard.spec.js +77 -1
- package/server/applications/files/guards/files-only-office.guard.spec.js.map +1 -1
- package/server/applications/files/services/files-only-office-manager.service.js +5 -0
- package/server/applications/files/services/files-only-office-manager.service.js.map +1 -1
- package/server/applications/links/links.controller.spec.js +91 -58
- package/server/applications/links/links.controller.spec.js.map +1 -1
- package/server/applications/links/services/links-manager.service.js +4 -6
- package/server/applications/links/services/links-manager.service.js.map +1 -1
- package/server/applications/links/services/links-manager.service.spec.js +378 -14
- package/server/applications/links/services/links-manager.service.spec.js.map +1 -1
- package/server/applications/links/services/links-queries.service.js +1 -1
- package/server/applications/links/services/links-queries.service.js.map +1 -1
- package/server/applications/notifications/notifications.controller.spec.js +56 -1
- package/server/applications/notifications/notifications.controller.spec.js.map +1 -1
- package/server/applications/notifications/services/notifications-manager.service.spec.js +461 -5
- package/server/applications/notifications/services/notifications-manager.service.spec.js.map +1 -1
- package/server/applications/shares/services/shares-manager.service.spec.js +590 -14
- package/server/applications/shares/services/shares-manager.service.spec.js.map +1 -1
- package/server/applications/sync/interceptors/sync-diff-gzip-body.interceptor.spec.js +120 -0
- package/server/applications/sync/interceptors/sync-diff-gzip-body.interceptor.spec.js.map +1 -0
- package/server/applications/sync/services/sync-clients-manager.service.spec.js +548 -8
- package/server/applications/sync/services/sync-clients-manager.service.spec.js.map +1 -1
- package/server/applications/sync/services/sync-manager.service.spec.js +837 -5
- package/server/applications/sync/services/sync-manager.service.spec.js.map +1 -1
- package/server/applications/sync/services/sync-paths-manager.service.spec.js +900 -7
- package/server/applications/sync/services/sync-paths-manager.service.spec.js.map +1 -1
- package/server/applications/users/services/admin-users-manager.service.js +22 -24
- package/server/applications/users/services/admin-users-manager.service.js.map +1 -1
- package/server/applications/users/services/admin-users-manager.service.spec.js +763 -17
- package/server/applications/users/services/admin-users-manager.service.spec.js.map +1 -1
- package/server/applications/users/services/users-manager.service.js +1 -1
- package/server/applications/users/services/users-manager.service.js.map +1 -1
- package/server/applications/users/services/users-manager.service.spec.js +938 -49
- package/server/applications/users/services/users-manager.service.spec.js.map +1 -1
- package/server/applications/webdav/decorators/if-header.decorator.js +4 -1
- package/server/applications/webdav/decorators/if-header.decorator.js.map +1 -1
- package/server/applications/webdav/filters/webdav.filter.spec.js +77 -0
- package/server/applications/webdav/filters/webdav.filter.spec.js.map +1 -0
- package/server/applications/webdav/guards/webdav-protocol.guard.js +3 -7
- package/server/applications/webdav/guards/webdav-protocol.guard.js.map +1 -1
- package/server/applications/webdav/guards/webdav-protocol.guard.spec.js +580 -0
- package/server/applications/webdav/guards/webdav-protocol.guard.spec.js.map +1 -0
- package/server/applications/webdav/services/webdav-methods.service.spec.js +1582 -3
- package/server/applications/webdav/services/webdav-methods.service.spec.js.map +1 -1
- package/server/applications/webdav/services/webdav-spaces.service.spec.js +390 -2
- package/server/applications/webdav/services/webdav-spaces.service.spec.js.map +1 -1
- package/server/applications/webdav/webdav.controller.js +2 -2
- package/server/applications/webdav/webdav.controller.js.map +1 -1
- package/server/authentication/guards/auth-basic.guard.js.map +1 -1
- package/server/authentication/guards/auth-digest.guard.js +1 -2
- package/server/authentication/guards/auth-digest.guard.js.map +1 -1
- package/server/authentication/guards/auth-local.guard.js.map +1 -1
- package/server/infrastructure/context/interceptors/context.interceptor.spec.js +135 -0
- package/server/infrastructure/context/interceptors/context.interceptor.spec.js.map +1 -0
- package/static/3rdpartylicenses.txt +26 -26
- package/static/assets/pdfjs/build/pdf.mjs +1177 -255
- package/static/assets/pdfjs/build/pdf.mjs.map +1 -1
- package/static/assets/pdfjs/build/pdf.sandbox.mjs +25 -2
- package/static/assets/pdfjs/build/pdf.sandbox.mjs.map +1 -1
- package/static/assets/pdfjs/build/pdf.worker.mjs +140 -16
- package/static/assets/pdfjs/build/pdf.worker.mjs.map +1 -1
- package/static/assets/pdfjs/version +1 -1
- package/static/assets/pdfjs/web/debugger.css +31 -0
- package/static/assets/pdfjs/web/debugger.mjs +144 -2
- package/static/assets/pdfjs/web/images/comment-editButton.svg +6 -1
- package/static/assets/pdfjs/web/locale/ach/viewer.ftl +0 -63
- package/static/assets/pdfjs/web/locale/af/viewer.ftl +0 -71
- package/static/assets/pdfjs/web/locale/an/viewer.ftl +0 -63
- package/static/assets/pdfjs/web/locale/ast/viewer.ftl +0 -60
- package/static/assets/pdfjs/web/locale/az/viewer.ftl +0 -63
- package/static/assets/pdfjs/web/locale/be/viewer.ftl +38 -0
- package/static/assets/pdfjs/web/locale/bg/viewer.ftl +0 -37
- package/static/assets/pdfjs/web/locale/bn/viewer.ftl +0 -63
- package/static/assets/pdfjs/web/locale/bo/viewer.ftl +0 -63
- package/static/assets/pdfjs/web/locale/br/viewer.ftl +0 -37
- package/static/assets/pdfjs/web/locale/brx/viewer.ftl +0 -63
- package/static/assets/pdfjs/web/locale/bs/viewer.ftl +22 -0
- package/static/assets/pdfjs/web/locale/ca/viewer.ftl +0 -54
- package/static/assets/pdfjs/web/locale/cak/viewer.ftl +0 -54
- package/static/assets/pdfjs/web/locale/ckb/viewer.ftl +0 -63
- package/static/assets/pdfjs/web/locale/cs/viewer.ftl +38 -0
- package/static/assets/pdfjs/web/locale/cy/viewer.ftl +38 -0
- package/static/assets/pdfjs/web/locale/da/viewer.ftl +38 -0
- package/static/assets/pdfjs/web/locale/de/viewer.ftl +38 -0
- package/static/assets/pdfjs/web/locale/dsb/viewer.ftl +38 -0
- package/static/assets/pdfjs/web/locale/el/viewer.ftl +38 -0
- package/static/assets/pdfjs/web/locale/en-CA/viewer.ftl +38 -0
- package/static/assets/pdfjs/web/locale/en-GB/viewer.ftl +38 -0
- package/static/assets/pdfjs/web/locale/en-US/viewer.ftl +25 -0
- package/static/assets/pdfjs/web/locale/eo/viewer.ftl +38 -0
- package/static/assets/pdfjs/web/locale/es-AR/viewer.ftl +38 -0
- package/static/assets/pdfjs/web/locale/es-CL/viewer.ftl +38 -0
- package/static/assets/pdfjs/web/locale/es-MX/viewer.ftl +0 -6
- package/static/assets/pdfjs/web/locale/et/viewer.ftl +0 -57
- package/static/assets/pdfjs/web/locale/fa/viewer.ftl +0 -37
- package/static/assets/pdfjs/web/locale/ff/viewer.ftl +0 -63
- package/static/assets/pdfjs/web/locale/fi/viewer.ftl +38 -0
- package/static/assets/pdfjs/web/locale/fr/viewer.ftl +38 -0
- package/static/assets/pdfjs/web/locale/fy-NL/viewer.ftl +38 -0
- package/static/assets/pdfjs/web/locale/ga-IE/viewer.ftl +0 -71
- package/static/assets/pdfjs/web/locale/gd/viewer.ftl +0 -54
- package/static/assets/pdfjs/web/locale/gl/viewer.ftl +8 -0
- package/static/assets/pdfjs/web/locale/gn/viewer.ftl +38 -0
- package/static/assets/pdfjs/web/locale/gu-IN/viewer.ftl +0 -63
- package/static/assets/pdfjs/web/locale/he/viewer.ftl +38 -0
- package/static/assets/pdfjs/web/locale/hi-IN/viewer.ftl +0 -60
- package/static/assets/pdfjs/web/locale/hsb/viewer.ftl +38 -0
- package/static/assets/pdfjs/web/locale/hu/viewer.ftl +38 -0
- package/static/assets/pdfjs/web/locale/hy-AM/viewer.ftl +0 -49
- package/static/assets/pdfjs/web/locale/hye/viewer.ftl +0 -60
- package/static/assets/pdfjs/web/locale/ia/viewer.ftl +38 -0
- package/static/assets/pdfjs/web/locale/is/viewer.ftl +0 -3
- package/static/assets/pdfjs/web/locale/it/viewer.ftl +31 -0
- package/static/assets/pdfjs/web/locale/ja/viewer.ftl +8 -0
- package/static/assets/pdfjs/web/locale/ka/viewer.ftl +48 -10
- package/static/assets/pdfjs/web/locale/kab/viewer.ftl +5 -0
- package/static/assets/pdfjs/web/locale/kk/viewer.ftl +8 -0
- package/static/assets/pdfjs/web/locale/km/viewer.ftl +0 -63
- package/static/assets/pdfjs/web/locale/kn/viewer.ftl +0 -71
- package/static/assets/pdfjs/web/locale/ko/viewer.ftl +38 -0
- package/static/assets/pdfjs/web/locale/lij/viewer.ftl +0 -63
- package/static/assets/pdfjs/web/locale/lo/viewer.ftl +0 -54
- package/static/assets/pdfjs/web/locale/lt/viewer.ftl +0 -60
- package/static/assets/pdfjs/web/locale/ltg/viewer.ftl +0 -63
- package/static/assets/pdfjs/web/locale/lv/viewer.ftl +0 -63
- package/static/assets/pdfjs/web/locale/meh/viewer.ftl +0 -75
- package/static/assets/pdfjs/web/locale/mk/viewer.ftl +0 -63
- package/static/assets/pdfjs/web/locale/ml/viewer.ftl +0 -3
- package/static/assets/pdfjs/web/locale/mr/viewer.ftl +0 -63
- package/static/assets/pdfjs/web/locale/ms/viewer.ftl +0 -63
- package/static/assets/pdfjs/web/locale/my/viewer.ftl +0 -71
- package/static/assets/pdfjs/web/locale/nb-NO/viewer.ftl +44 -6
- package/static/assets/pdfjs/web/locale/ne-NP/viewer.ftl +0 -71
- package/static/assets/pdfjs/web/locale/nl/viewer.ftl +38 -0
- package/static/assets/pdfjs/web/locale/nn-NO/viewer.ftl +45 -1
- package/static/assets/pdfjs/web/locale/oc/viewer.ftl +0 -31
- package/static/assets/pdfjs/web/locale/pa-IN/viewer.ftl +38 -0
- package/static/assets/pdfjs/web/locale/pl/viewer.ftl +39 -1
- package/static/assets/pdfjs/web/locale/pt-BR/viewer.ftl +38 -0
- package/static/assets/pdfjs/web/locale/ro/viewer.ftl +355 -1
- package/static/assets/pdfjs/web/locale/ru/viewer.ftl +38 -0
- package/static/assets/pdfjs/web/locale/sat/viewer.ftl +0 -54
- package/static/assets/pdfjs/web/locale/sc/viewer.ftl +0 -38
- package/static/assets/pdfjs/web/locale/scn/viewer.ftl +0 -92
- package/static/assets/pdfjs/web/locale/sco/viewer.ftl +0 -60
- package/static/assets/pdfjs/web/locale/si/viewer.ftl +0 -51
- package/static/assets/pdfjs/web/locale/sk/viewer.ftl +38 -0
- package/static/assets/pdfjs/web/locale/skr/viewer.ftl +0 -27
- package/static/assets/pdfjs/web/locale/sl/viewer.ftl +8 -0
- package/static/assets/pdfjs/web/locale/son/viewer.ftl +0 -71
- package/static/assets/pdfjs/web/locale/sr/viewer.ftl +0 -33
- package/static/assets/pdfjs/web/locale/sv-SE/viewer.ftl +38 -0
- package/static/assets/pdfjs/web/locale/szl/viewer.ftl +0 -63
- package/static/assets/pdfjs/web/locale/ta/viewer.ftl +0 -63
- package/static/assets/pdfjs/web/locale/te/viewer.ftl +0 -60
- package/static/assets/pdfjs/web/locale/tg/viewer.ftl +38 -0
- package/static/assets/pdfjs/web/locale/tl/viewer.ftl +0 -63
- package/static/assets/pdfjs/web/locale/tr/viewer.ftl +40 -2
- package/static/assets/pdfjs/web/locale/trs/viewer.ftl +0 -72
- package/static/assets/pdfjs/web/locale/ur/viewer.ftl +0 -60
- package/static/assets/pdfjs/web/locale/uz/viewer.ftl +0 -71
- package/static/assets/pdfjs/web/locale/vi/viewer.ftl +38 -0
- package/static/assets/pdfjs/web/locale/wo/viewer.ftl +0 -77
- package/static/assets/pdfjs/web/locale/xh/viewer.ftl +0 -71
- package/static/assets/pdfjs/web/locale/zh-CN/viewer.ftl +38 -0
- package/static/assets/pdfjs/web/locale/zh-TW/viewer.ftl +38 -0
- package/static/assets/pdfjs/web/viewer.css +649 -120
- package/static/assets/pdfjs/web/viewer.html +19 -0
- package/static/assets/pdfjs/web/viewer.mjs +489 -38
- package/static/assets/pdfjs/web/viewer.mjs.map +1 -1
- package/static/chunk-22EANI6R.js +1 -0
- package/static/{chunk-N2LYWNTC.js → chunk-2456KVFZ.js} +1 -1
- package/static/{chunk-YCINY2YI.js → chunk-2LVCLKCK.js} +1 -1
- package/static/{chunk-5YKWZT33.js → chunk-2V5S7DWD.js} +1 -1
- package/static/{chunk-3GC2BQZD.js → chunk-44YDXGNZ.js} +1 -1
- package/static/{chunk-W3QXNDI5.js → chunk-4LSJLWYV.js} +1 -1
- package/static/{chunk-T55FAU2O.js → chunk-4UT5VH7R.js} +1 -1
- package/static/{chunk-VMQMD36Z.js → chunk-5GOMMRRE.js} +1 -1
- package/static/{chunk-TXPODW5Q.js → chunk-5J4VRDKB.js} +1 -1
- package/static/{chunk-FQ4AFNGE.js → chunk-6PVKNZ7Q.js} +1 -1
- package/static/{chunk-XE5YHU5J.js → chunk-BIUNUYZ5.js} +1 -1
- package/static/{chunk-X43VWRFP.js → chunk-DFQKHCDR.js} +1 -1
- package/static/{chunk-TDQAEVZN.js → chunk-EE2TDTY4.js} +1 -1
- package/static/{chunk-MOVWEZ7J.js → chunk-ESNDJ5T6.js} +1 -1
- package/static/{chunk-TCFKH6K6.js → chunk-GDKKLLEU.js} +1 -1
- package/static/{chunk-VHYIXL7R.js → chunk-GSR2MCQG.js} +1 -1
- package/static/{chunk-LJIGRUEF.js → chunk-HR7KS5BR.js} +1 -1
- package/static/chunk-HW2H3ISM.js +559 -0
- package/static/{chunk-HZA7R43P.js → chunk-IMB3C547.js} +1 -1
- package/static/{chunk-B2Y2RNFP.js → chunk-J4ALHUDX.js} +1 -1
- package/static/{chunk-PF4K7MVG.js → chunk-KP6LSQTK.js} +1 -1
- package/static/{chunk-C23BPTJZ.js → chunk-LUZCOHFN.js} +1 -1
- package/static/{chunk-GBCYYDCI.js → chunk-MHSCCXVL.js} +1 -1
- package/static/{chunk-PY3BGNJN.js → chunk-OMRQYBXV.js} +1 -1
- package/static/chunk-P7CTJ5BG.js +27 -0
- package/static/{chunk-Y2CDUS4J.js → chunk-P7PX67IR.js} +4 -4
- package/static/{chunk-VMUOUCEI.js → chunk-PPO7DBVO.js} +1 -1
- package/static/{chunk-TTQ37MUV.js → chunk-RSS6GYNE.js} +1 -1
- package/static/{chunk-WWIC7UW3.js → chunk-SLGGINMR.js} +1 -1
- package/static/{chunk-KZQCFEPT.js → chunk-UHD5XD3G.js} +1 -1
- package/static/{chunk-TNW2CGK6.js → chunk-UPYYAJCJ.js} +1 -1
- package/static/{chunk-6F55D74O.js → chunk-VHYPQ3D4.js} +1 -1
- package/static/{chunk-DGVNNICG.js → chunk-YQSDS6BO.js} +1 -1
- package/static/{chunk-MTRNPGS4.js → chunk-ZC5NIT55.js} +1 -1
- package/static/index.html +1 -1
- package/static/main-FYD34UEC.js +7 -0
- package/static/chunk-RSNLYAN6.js +0 -560
- package/static/chunk-WHMS3PJ3.js +0 -24
- package/static/chunk-ZZ3LHYOY.js +0 -1
- package/static/main-7LDKYVXO.js +0 -10
package/CHANGELOG.md
CHANGED
|
@@ -1,4 +1,30 @@
|
|
|
1
1
|
|
|
2
|
+
## [1.5.1](https://github.com/Sync-in/server/compare/v1.5.0...v1.5.1) (2025-09-07)
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
### Bug Fixes
|
|
6
|
+
|
|
7
|
+
* **docker:** fix /app ownership for .init file ([e43f478](https://github.com/Sync-in/server/commit/e43f47873768fa24ba2e66bc1bbd90214bde5ca1))
|
|
8
|
+
|
|
9
|
+
## [1.5.0](https://github.com/Sync-in/server/compare/v1.4.0...v1.5.0) (2025-09-07)
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
### Features
|
|
13
|
+
|
|
14
|
+
* **files:** optimize document opening to avoid extra API calls ([bf57d93](https://github.com/Sync-in/server/commit/bf57d93dcaea312328db9f1f5290e46471d2f638))
|
|
15
|
+
* **frontend:files:** display count for multiple selected files and open sidebar pasteboard when adding files ([39feccd](https://github.com/Sync-in/server/commit/39feccd3d89f29cdc4effb2bb4c016c7c1258729))
|
|
16
|
+
* **frontend:spaces:** enable keyboard navigation when files are selected in list mode ([7e38ce2](https://github.com/Sync-in/server/commit/7e38ce29fbfe11b84ccd7824aea1e43ae46e0d0f))
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
### Bug Fixes
|
|
20
|
+
|
|
21
|
+
* **backend:links:** increment nbAccess even when no limit is set ([d6d2e74](https://github.com/Sync-in/server/commit/d6d2e7425c16510ee9e15107a02f21d2038be89f))
|
|
22
|
+
* **frontend:spaces:** prevent false positives when checking external location ([f1fdd0d](https://github.com/Sync-in/server/commit/f1fdd0d4088e98f4e24f4a4c18cf6f67e3e5d0d4))
|
|
23
|
+
|
|
24
|
+
### Performance
|
|
25
|
+
* **docker:** only change application data ownership ([6e88991](https://github.com/Sync-in/server/commit/6e889915fedf613030e43919e637d7888aea94a1))
|
|
26
|
+
|
|
27
|
+
|
|
2
28
|
## [1.4.0](https://github.com/Sync-in/server/compare/v1.3.9...v1.4.0) (2025-08-26)
|
|
3
29
|
|
|
4
30
|
|
package/README.md
CHANGED
|
@@ -18,6 +18,7 @@ _Welcome to the official Sync-in server repository!_
|
|
|
18
18
|
<a href="https://hub.docker.com/r/syncin/server" target="_blank"><img src="https://img.shields.io/docker/pulls/syncin/server?logo=docker&label=Docker%20Hub%20Pulls" alt="Docker pulls"/></a>
|
|
19
19
|
<a href="https://www.npmjs.com/package/@sync-in/server" target="_blank"><img src="https://img.shields.io/npm/d18m/@sync-in/server.svg?logo=npm&label=NPM%20Downloads&color=cb3837" alt="NPM"/></a>
|
|
20
20
|
<a href="https://discord.gg/qhJyzwaymT" target="_blank"><img src="https://img.shields.io/discord/1391081837849346088?logo=discord&label=Discord" alt="Discord"/></a>
|
|
21
|
+
<a href="https://deepwiki.com/Sync-in/server"><img src="https://deepwiki.com/badge.svg" alt="Ask DeepWiki"></a>
|
|
21
22
|
|
|
22
23
|
The **Sync-in Server** is designed to run on your own infrastructure, it gives you **full control over your data** while offering a modern,
|
|
23
24
|
intuitive interface for both internal and external users.
|
|
@@ -91,7 +92,7 @@ If you find it useful, you can:
|
|
|
91
92
|
## 🤝 Contributing
|
|
92
93
|
Before submitting your pull request, please confirm the following:
|
|
93
94
|
|
|
94
|
-
- ✅ I have read and followed the [contribution guide](
|
|
95
|
+
- ✅ I have read and followed the [contribution guide](CONTRIBUTING.md).
|
|
95
96
|
- ✅ I am submitting this pull request in good faith and to help improve Sync-in.
|
|
96
97
|
|
|
97
98
|
---
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sync-in/server",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.5.1",
|
|
4
4
|
"description": "The secure, open-source platform for file storage, sharing, collaboration, and sync",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Johan Legrand",
|
|
@@ -74,7 +74,7 @@
|
|
|
74
74
|
"dependencies": {
|
|
75
75
|
"@fastify/cookie": "11.0.2",
|
|
76
76
|
"@fastify/helmet": "13.0.1",
|
|
77
|
-
"@fastify/multipart": "9.
|
|
77
|
+
"@fastify/multipart": "9.2.1",
|
|
78
78
|
"@fastify/send": "4.1.0",
|
|
79
79
|
"@fastify/static": "8.2.0",
|
|
80
80
|
"@knaadh/nestjs-drizzle-mysql2": "1.2.0",
|
|
@@ -105,14 +105,14 @@
|
|
|
105
105
|
"js-yaml": "4.1.0",
|
|
106
106
|
"ldapts": "8.0.9",
|
|
107
107
|
"mime-types": "3.0.1",
|
|
108
|
-
"mysql2": "3.14.
|
|
108
|
+
"mysql2": "3.14.4",
|
|
109
109
|
"nestjs-pino": "4.4.0",
|
|
110
|
-
"nodemailer": "7.0.
|
|
110
|
+
"nodemailer": "7.0.6",
|
|
111
111
|
"passport-http": "0.3.0",
|
|
112
112
|
"passport-jwt": "4.0.1",
|
|
113
113
|
"passport-local": "1.0.0",
|
|
114
114
|
"passport": "0.7.0",
|
|
115
|
-
"pdfjs-dist": "5.4.
|
|
115
|
+
"pdfjs-dist": "5.4.149",
|
|
116
116
|
"pino-pretty": "13.1.1",
|
|
117
117
|
"redis": "4.7.1",
|
|
118
118
|
"sax": "1.4.1",
|
|
@@ -22,7 +22,33 @@ const _commentscontroller = require("./comments.controller");
|
|
|
22
22
|
const _commentsmanagerservice = require("./services/comments-manager.service");
|
|
23
23
|
const _commentsqueriesservice = require("./services/comments-queries.service");
|
|
24
24
|
describe(_commentscontroller.CommentsController.name, ()=>{
|
|
25
|
-
let
|
|
25
|
+
let commentsController;
|
|
26
|
+
let commentsManager;
|
|
27
|
+
const user = {
|
|
28
|
+
id: 'user-1'
|
|
29
|
+
};
|
|
30
|
+
const space = {
|
|
31
|
+
id: 'space-1'
|
|
32
|
+
};
|
|
33
|
+
const commentsSample = [
|
|
34
|
+
{
|
|
35
|
+
id: 'c1'
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
id: 'c2'
|
|
39
|
+
}
|
|
40
|
+
];
|
|
41
|
+
const commentSample = {
|
|
42
|
+
id: 'c1',
|
|
43
|
+
text: 'hello'
|
|
44
|
+
};
|
|
45
|
+
const commentsManagerMock = {
|
|
46
|
+
getComments: jest.fn(),
|
|
47
|
+
createComment: jest.fn(),
|
|
48
|
+
updateComment: jest.fn(),
|
|
49
|
+
deleteComment: jest.fn(),
|
|
50
|
+
getRecents: jest.fn()
|
|
51
|
+
};
|
|
26
52
|
beforeAll(async ()=>{
|
|
27
53
|
const module = await _testing.Test.createTestingModule({
|
|
28
54
|
controllers: [
|
|
@@ -42,7 +68,10 @@ describe(_commentscontroller.CommentsController.name, ()=>{
|
|
|
42
68
|
useValue: {}
|
|
43
69
|
},
|
|
44
70
|
_contextmanagerservice.ContextManager,
|
|
45
|
-
|
|
71
|
+
{
|
|
72
|
+
provide: _commentsmanagerservice.CommentsManager,
|
|
73
|
+
useValue: commentsManagerMock
|
|
74
|
+
},
|
|
46
75
|
_commentsqueriesservice.CommentsQueries,
|
|
47
76
|
_spacesmanagerservice.SpacesManager,
|
|
48
77
|
_spacesqueriesservice.SpacesQueries,
|
|
@@ -53,10 +82,80 @@ describe(_commentscontroller.CommentsController.name, ()=>{
|
|
|
53
82
|
_linksqueriesservice.LinksQueries
|
|
54
83
|
]
|
|
55
84
|
}).compile();
|
|
56
|
-
|
|
85
|
+
commentsController = module.get(_commentscontroller.CommentsController);
|
|
86
|
+
commentsManager = module.get(_commentsmanagerservice.CommentsManager);
|
|
87
|
+
});
|
|
88
|
+
beforeEach(()=>{
|
|
89
|
+
jest.clearAllMocks();
|
|
57
90
|
});
|
|
58
91
|
it('should be defined', ()=>{
|
|
59
|
-
expect(
|
|
92
|
+
expect(commentsController).toBeDefined();
|
|
93
|
+
});
|
|
94
|
+
it('getFromSpace calls CommentsManager.getComments and returns the list', async ()=>{
|
|
95
|
+
commentsManager.getComments.mockResolvedValueOnce(commentsSample);
|
|
96
|
+
const res = await commentsController.getFromSpace(user, space);
|
|
97
|
+
expect(commentsManager.getComments).toHaveBeenCalledTimes(1);
|
|
98
|
+
expect(commentsManager.getComments).toHaveBeenCalledWith(user, space);
|
|
99
|
+
expect(res).toEqual(commentsSample);
|
|
100
|
+
});
|
|
101
|
+
it('createFromSpace calls CommentsManager.createComment and returns the created comment', async ()=>{
|
|
102
|
+
const dto = {
|
|
103
|
+
text: 'new comment'
|
|
104
|
+
};
|
|
105
|
+
commentsManager.createComment.mockResolvedValueOnce(commentSample);
|
|
106
|
+
const res = await commentsController.createFromSpace(user, space, dto);
|
|
107
|
+
expect(commentsManager.createComment).toHaveBeenCalledTimes(1);
|
|
108
|
+
expect(commentsManager.createComment).toHaveBeenCalledWith(user, space, dto);
|
|
109
|
+
expect(res).toEqual(commentSample);
|
|
110
|
+
});
|
|
111
|
+
it('updateFromSpace calls CommentsManager.updateComment and returns the updated comment', async ()=>{
|
|
112
|
+
const dto = {
|
|
113
|
+
id: 'c1',
|
|
114
|
+
text: 'updated'
|
|
115
|
+
};
|
|
116
|
+
const updated = {
|
|
117
|
+
id: 'c1',
|
|
118
|
+
text: 'updated'
|
|
119
|
+
};
|
|
120
|
+
commentsManager.updateComment.mockResolvedValueOnce(updated);
|
|
121
|
+
const res = await commentsController.updateFromSpace(user, space, dto);
|
|
122
|
+
expect(commentsManager.updateComment).toHaveBeenCalledTimes(1);
|
|
123
|
+
expect(commentsManager.updateComment).toHaveBeenCalledWith(user, space, dto);
|
|
124
|
+
expect(res).toEqual(updated);
|
|
125
|
+
});
|
|
126
|
+
it('deleteFromSpace calls CommentsManager.deleteComment', async ()=>{
|
|
127
|
+
const dto = {
|
|
128
|
+
id: 'c1'
|
|
129
|
+
};
|
|
130
|
+
commentsManager.deleteComment.mockResolvedValueOnce(undefined);
|
|
131
|
+
await expect(commentsController.deleteFromSpace(user, space, dto)).resolves.toBeUndefined();
|
|
132
|
+
expect(commentsManager.deleteComment).toHaveBeenCalledTimes(1);
|
|
133
|
+
expect(commentsManager.deleteComment).toHaveBeenCalledWith(user, space, dto);
|
|
134
|
+
});
|
|
135
|
+
it('getRecents calls CommentsManager.getRecents with the provided limit', async ()=>{
|
|
136
|
+
const recents = [
|
|
137
|
+
{
|
|
138
|
+
id: 'r1'
|
|
139
|
+
}
|
|
140
|
+
];
|
|
141
|
+
commentsManager.getRecents.mockResolvedValueOnce(recents);
|
|
142
|
+
const res = await commentsController.getRecents(user, 5);
|
|
143
|
+
expect(commentsManager.getRecents).toHaveBeenCalledTimes(1);
|
|
144
|
+
expect(commentsManager.getRecents).toHaveBeenCalledWith(user, 5);
|
|
145
|
+
expect(res).toEqual(recents);
|
|
146
|
+
});
|
|
147
|
+
it('getRecents uses the default limit (10) when not provided', async ()=>{
|
|
148
|
+
const recents = [
|
|
149
|
+
{
|
|
150
|
+
id: 'r2'
|
|
151
|
+
}
|
|
152
|
+
];
|
|
153
|
+
commentsManager.getRecents.mockResolvedValueOnce(recents);
|
|
154
|
+
// Call with undefined to trigger the parameter default value
|
|
155
|
+
const res = await commentsController.getRecents(user, undefined);
|
|
156
|
+
expect(commentsManager.getRecents).toHaveBeenCalledTimes(1);
|
|
157
|
+
expect(commentsManager.getRecents).toHaveBeenCalledWith(user, 10);
|
|
158
|
+
expect(res).toEqual(recents);
|
|
60
159
|
});
|
|
61
160
|
});
|
|
62
161
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../backend/src/applications/comments/comments.controller.spec.ts"],"sourcesContent":["/*\n * Copyright (C) 2012-2025 Johan Legrand <johan.legrand@sync-in.com>\n * This file is part of Sync-in | The open source file sync and share solution\n * See the LICENSE file for licensing details\n */\n\nimport { Test, TestingModule } from '@nestjs/testing'\nimport { Cache } from '../../infrastructure/cache/services/cache.service'\nimport { ContextManager } from '../../infrastructure/context/services/context-manager.service'\nimport { DB_TOKEN_PROVIDER } from '../../infrastructure/database/constants'\nimport { FilesQueries } from '../files/services/files-queries.service'\nimport { LinksQueries } from '../links/services/links-queries.service'\nimport { NotificationsManager } from '../notifications/services/notifications-manager.service'\nimport { SharesManager } from '../shares/services/shares-manager.service'\nimport { SharesQueries } from '../shares/services/shares-queries.service'\nimport { SpacesManager } from '../spaces/services/spaces-manager.service'\nimport { SpacesQueries } from '../spaces/services/spaces-queries.service'\nimport { UsersQueries } from '../users/services/users-queries.service'\nimport { CommentsController } from './comments.controller'\nimport { CommentsManager } from './services/comments-manager.service'\nimport { CommentsQueries } from './services/comments-queries.service'\n\ndescribe(CommentsController.name, () => {\n let
|
|
1
|
+
{"version":3,"sources":["../../../../backend/src/applications/comments/comments.controller.spec.ts"],"sourcesContent":["/*\n * Copyright (C) 2012-2025 Johan Legrand <johan.legrand@sync-in.com>\n * This file is part of Sync-in | The open source file sync and share solution\n * See the LICENSE file for licensing details\n */\n\nimport { Test, TestingModule } from '@nestjs/testing'\nimport { Cache } from '../../infrastructure/cache/services/cache.service'\nimport { ContextManager } from '../../infrastructure/context/services/context-manager.service'\nimport { DB_TOKEN_PROVIDER } from '../../infrastructure/database/constants'\nimport { FilesQueries } from '../files/services/files-queries.service'\nimport { LinksQueries } from '../links/services/links-queries.service'\nimport { NotificationsManager } from '../notifications/services/notifications-manager.service'\nimport { SharesManager } from '../shares/services/shares-manager.service'\nimport { SharesQueries } from '../shares/services/shares-queries.service'\nimport { SpacesManager } from '../spaces/services/spaces-manager.service'\nimport { SpacesQueries } from '../spaces/services/spaces-queries.service'\nimport { UsersQueries } from '../users/services/users-queries.service'\nimport { CommentsController } from './comments.controller'\nimport { CommentsManager } from './services/comments-manager.service'\nimport { CommentsQueries } from './services/comments-queries.service'\n\ndescribe(CommentsController.name, () => {\n let commentsController: CommentsController\n let commentsManager: jest.Mocked<CommentsManager>\n\n const user: any = { id: 'user-1' }\n const space: any = { id: 'space-1' }\n\n const commentsSample = [{ id: 'c1' }, { id: 'c2' }] as any\n const commentSample = { id: 'c1', text: 'hello' } as any\n\n const commentsManagerMock: jest.Mocked<CommentsManager> = {\n getComments: jest.fn(),\n createComment: jest.fn(),\n updateComment: jest.fn(),\n deleteComment: jest.fn(),\n getRecents: jest.fn()\n } as any\n\n beforeAll(async () => {\n const module: TestingModule = await Test.createTestingModule({\n controllers: [CommentsController],\n providers: [\n { provide: NotificationsManager, useValue: {} },\n { provide: DB_TOKEN_PROVIDER, useValue: {} },\n { provide: Cache, useValue: {} },\n ContextManager,\n { provide: CommentsManager, useValue: commentsManagerMock },\n CommentsQueries,\n SpacesManager,\n SpacesQueries,\n FilesQueries,\n SharesManager,\n SharesQueries,\n UsersQueries,\n LinksQueries\n ]\n }).compile()\n\n commentsController = module.get<CommentsController>(CommentsController)\n commentsManager = module.get(CommentsManager)\n })\n\n beforeEach(() => {\n jest.clearAllMocks()\n })\n\n it('should be defined', () => {\n expect(commentsController).toBeDefined()\n })\n\n it('getFromSpace calls CommentsManager.getComments and returns the list', async () => {\n commentsManager.getComments.mockResolvedValueOnce(commentsSample)\n\n const res = await commentsController.getFromSpace(user, space)\n\n expect(commentsManager.getComments).toHaveBeenCalledTimes(1)\n expect(commentsManager.getComments).toHaveBeenCalledWith(user, space)\n expect(res).toEqual(commentsSample)\n })\n\n it('createFromSpace calls CommentsManager.createComment and returns the created comment', async () => {\n const dto: any = { text: 'new comment' }\n commentsManager.createComment.mockResolvedValueOnce(commentSample)\n\n const res = await commentsController.createFromSpace(user, space, dto)\n\n expect(commentsManager.createComment).toHaveBeenCalledTimes(1)\n expect(commentsManager.createComment).toHaveBeenCalledWith(user, space, dto)\n expect(res).toEqual(commentSample)\n })\n\n it('updateFromSpace calls CommentsManager.updateComment and returns the updated comment', async () => {\n const dto: any = { id: 'c1', text: 'updated' }\n const updated = { id: 'c1', text: 'updated' } as any\n commentsManager.updateComment.mockResolvedValueOnce(updated)\n\n const res = await commentsController.updateFromSpace(user, space, dto)\n\n expect(commentsManager.updateComment).toHaveBeenCalledTimes(1)\n expect(commentsManager.updateComment).toHaveBeenCalledWith(user, space, dto)\n expect(res).toEqual(updated)\n })\n\n it('deleteFromSpace calls CommentsManager.deleteComment', async () => {\n const dto: any = { id: 'c1' }\n commentsManager.deleteComment.mockResolvedValueOnce(undefined)\n\n await expect(commentsController.deleteFromSpace(user, space, dto)).resolves.toBeUndefined()\n\n expect(commentsManager.deleteComment).toHaveBeenCalledTimes(1)\n expect(commentsManager.deleteComment).toHaveBeenCalledWith(user, space, dto)\n })\n\n it('getRecents calls CommentsManager.getRecents with the provided limit', async () => {\n const recents = [{ id: 'r1' }] as any\n commentsManager.getRecents.mockResolvedValueOnce(recents)\n\n const res = await commentsController.getRecents(user, 5 as any)\n\n expect(commentsManager.getRecents).toHaveBeenCalledTimes(1)\n expect(commentsManager.getRecents).toHaveBeenCalledWith(user, 5)\n expect(res).toEqual(recents)\n })\n\n it('getRecents uses the default limit (10) when not provided', async () => {\n const recents = [{ id: 'r2' }] as any\n commentsManager.getRecents.mockResolvedValueOnce(recents)\n\n // Call with undefined to trigger the parameter default value\n const res = await commentsController.getRecents(user, undefined as any)\n\n expect(commentsManager.getRecents).toHaveBeenCalledTimes(1)\n expect(commentsManager.getRecents).toHaveBeenCalledWith(user, 10)\n expect(res).toEqual(recents)\n })\n})\n"],"names":["describe","CommentsController","name","commentsController","commentsManager","user","id","space","commentsSample","commentSample","text","commentsManagerMock","getComments","jest","fn","createComment","updateComment","deleteComment","getRecents","beforeAll","module","Test","createTestingModule","controllers","providers","provide","NotificationsManager","useValue","DB_TOKEN_PROVIDER","Cache","ContextManager","CommentsManager","CommentsQueries","SpacesManager","SpacesQueries","FilesQueries","SharesManager","SharesQueries","UsersQueries","LinksQueries","compile","get","beforeEach","clearAllMocks","it","expect","toBeDefined","mockResolvedValueOnce","res","getFromSpace","toHaveBeenCalledTimes","toHaveBeenCalledWith","toEqual","dto","createFromSpace","updated","updateFromSpace","undefined","deleteFromSpace","resolves","toBeUndefined","recents"],"mappings":"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"}
|