Girish Ramakrishnan
d0a66f1701
Back to mocha!
...
sorry i ever left you dear mocha
node:test has two major issues:
* --bail does not work and requires strange modules and incantations.
I was able to work around this with a custom module.
* the test reporter reports _after_ the suite is run. this makes debugging
really hard. the debugs that we print all happen before the test suite summary.
poor design overall.
2026-02-19 13:24:14 +01:00
Girish Ramakrishnan
c176ac600b
migrate tests to node:test
2026-02-19 10:13:22 +01:00
Girish Ramakrishnan
c7b321315c
integrity: add stats
2026-02-15 14:41:10 +01:00
Girish Ramakrishnan
9f2eefcbb3
embed integrity check task in backup API responses
...
The UI is polling for the taskId, might as well attach it
2026-02-15 14:11:56 +01:00
Girish Ramakrishnan
96dc79cfe6
Migrate codebase from CommonJS to ES Modules
...
- Convert all require()/module.exports to import/export across 260+ files
- Add "type": "module" to package.json to enable ESM by default
- Add migrations/package.json with "type": "commonjs" to keep db-migrate compatible
- Convert eslint.config.js to ESM with sourceType: "module"
- Replace __dirname/__filename with import.meta.dirname/import.meta.filename
- Replace require.main === module with process.argv[1] === import.meta.filename
- Remove 'use strict' directives (implicit in ESM)
- Convert dynamic require() in switch statements to static import lookup maps
(dns.js, domains.js, backupformats.js, backupsites.js, network.js)
- Extract self-referencing exports.CONSTANT patterns into standalone const
declarations (apps.js, services.js, locks.js, users.js, mail.js, etc.)
- Lazify SERVICES object in services.js to avoid circular dependency TDZ issues
- Add clearMailQueue() to mailer.js for ESM-safe queue clearing in tests
- Add _setMockApp() to ldapserver.js for ESM-safe test mocking
- Add _setMockResolve() wrapper to dig.js for ESM-safe DNS mocking in tests
- Convert backupupload.js to use dynamic imports so --check exits before
loading the module graph (which requires BOX_ENV)
- Update check-install to use ESM import for infra_version.js
- Convert scripts/ (hotfix, release, remote_hotfix.js, find-unused-translations)
- All 1315 tests passing
Migration stats (AI-assisted using Cursor with Claude):
- Wall clock time: ~3-4 hours
- Assistant completions: ~80-100
- Estimated token usage: ~1-2M tokens
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-02-14 15:11:45 +01:00
Girish Ramakrishnan
6ac914904e
backups: make listing by site only return box backups
2025-10-07 12:13:14 +02:00
Girish Ramakrishnan
6869380500
Fix tests
2025-10-07 10:01:35 +02:00
Girish Ramakrishnan
43962c4a5a
add route to list backups by site
2025-10-06 14:52:29 +02:00
Girish Ramakrishnan
c5b7264f1a
rename backupTargets to backupSites
2025-09-12 10:32:37 +02:00
Girish Ramakrishnan
59aaabecc7
backups: the get route was accidentally removed
2025-07-25 11:56:31 +02:00
Girish Ramakrishnan
3f07bb5c3a
backup targets: add test for all routes
2025-07-25 11:29:00 +02:00
Girish Ramakrishnan
3aafbd2ccb
backups: add backup multiple targets
2025-07-25 01:30:27 +02:00
Girish Ramakrishnan
931311f11f
rename backups to backuptargets
2025-07-24 18:54:10 +02:00
Girish Ramakrishnan
6ac0cd421a
use the @cloudron/superagent module
2025-07-10 10:56:05 +02:00
Girish Ramakrishnan
8e58349bfa
replace with custom superagent based on fetch API
2025-02-15 15:14:09 +01:00
Girish Ramakrishnan
0447086882
remove spurious log
2024-01-23 12:13:28 +01:00
Girish Ramakrishnan
aa8c23c8b3
rework backup root
...
notes:
* backup root cannot come from backend. for dynamic mounts backend cannot know where it is mounted
* backupConfig is 3 parts - format / mount / password . there is also this rootPath (which should not be in db)
* password should be stored separately in settings at some point
* format has to be passed along everywhere because we allow restore from same backupConfig but different format. we do this by saving the format in the backups table
fixes #819
2023-08-15 22:51:45 +05:30
Girish Ramakrishnan
e73b75e4b5
settings: move backup settings
2023-08-04 11:54:12 +05:30
Girish Ramakrishnan
9cebde3005
backups: split config and policy
...
keeping them together makes the test/validation quite complicated.
for example, when policy is changed, we test the storage backends
part of #817
2023-07-13 11:07:06 +05:30
Girish Ramakrishnan
452a4d9a75
backups: add remotePath
...
the main motivation is that id can be used in REST API routes. previously,
the id was a path and this had a "/" in it. This made /api/v1/backups/:backupId
not work.
2022-04-04 20:40:40 -07:00
Girish Ramakrishnan
a05e564ae6
Fix expectation in test
2022-04-04 14:03:07 -07:00
Girish Ramakrishnan
70695b1b0f
backups: set label of backup and control it's retention
2022-04-02 19:30:54 -07:00
Girish Ramakrishnan
ec0d64ac12
tests: complete common'ification of routes tests
2021-08-12 22:49:19 -07:00
Girish Ramakrishnan
89607d2c64
remove the backup check notification and route
...
it seems we decided that instead of a notification, we display a warning in
the backups view itself (see #719 ).
2021-06-23 22:09:23 -07:00
Girish Ramakrishnan
5db78ae359
Fix more usages of backup.intervalSecs
2020-07-29 11:25:59 -07:00
Johannes Zellner
2ea21be5bd
Add basic backup check route tests
2020-07-28 17:23:21 +02:00
Johannes Zellner
47f47d916d
Fixup tests
2020-05-28 21:05:21 +02:00
Girish Ramakrishnan
af9e3e38ce
apply backup retention policy
...
part of #441
2020-05-14 21:31:24 -07:00
Girish Ramakrishnan
5efbccd974
Revert migration change since some cloudrons already got 4.3.3
2019-11-20 14:43:01 -08:00
Girish Ramakrishnan
85c13cae58
Fix platform update logic
2019-09-24 21:21:49 -07:00
Girish Ramakrishnan
9b74bb73aa
config.js is dead, long live config.js
...
we use settings now
2019-07-26 14:51:51 -07:00
Girish Ramakrishnan
12eae1eff2
Make port a constant
2019-07-25 16:08:54 -07:00
Girish Ramakrishnan
e7127df30d
remove app ownerId
...
this is unused
2019-07-02 21:23:51 -07:00
Girish Ramakrishnan
58625c82a0
Add route to trigger backup cleaner
2019-04-13 18:10:43 -07:00
Girish Ramakrishnan
218739a6b5
Add tasks table and API
...
progress will be tracked with this table instead of being in-process
like progress.js
2018-11-19 17:37:42 -08:00
Girish Ramakrishnan
390e69c01c
Fix backup API routes
2018-11-19 14:41:16 -08:00
Girish Ramakrishnan
953b55439c
eventlog: add domain events
2018-11-10 01:25:34 -08:00
Girish Ramakrishnan
dfa318e898
Add ownerId for apps
...
This tracks who installed the app.
2018-06-28 14:13:12 -07:00
Johannes Zellner
d1ef35ae1d
Fixup all the tests to use domain tlsConfig
2018-01-31 18:09:38 +01:00
Johannes Zellner
6ef57d3f23
Fix various route handling tests
2018-01-26 21:31:22 +01:00
Girish Ramakrishnan
ee66893875
more config.fqdn() removal in tests
2018-01-24 14:58:37 -08:00
Girish Ramakrishnan
614f13ffd0
move caas tests to separate file
2018-01-18 14:22:07 -08:00
Girish Ramakrishnan
a850c0813b
caas: use caas_config for token verification
2018-01-18 13:51:02 -08:00
Girish Ramakrishnan
68c26c1d12
Fix route/ tests
2017-11-27 16:01:52 -08:00
Girish Ramakrishnan
74f3a4dd6f
remove redundant after()
2017-11-27 14:10:27 -08:00
Girish Ramakrishnan
61e2878b08
save/restore exec bit in files
...
this covers the case where user might stash some executable files
that are used by plugins.
2017-10-12 16:18:11 -07:00
Girish Ramakrishnan
e39329218d
Make tests work
2017-09-27 11:38:43 -07:00
Girish Ramakrishnan
6525a467a2
Rework backuptask into tar.js
...
This makes it easy to integrate another backup strategy
as the next step
2017-09-17 18:50:26 -07:00
Girish Ramakrishnan
ded31b977e
Add config.setFqdn and config.setZoneName
...
Part of #110
2017-06-15 19:53:20 -07:00
Girish Ramakrishnan
ca5723bbc7
more work on tests
...
disable the migrate tests for now
2017-04-24 15:45:23 -07:00