Trek_CN/server/tests/unit/services
Julien G. 6072b969d6
Bug fixes - May 2nd 2026 (#941)
* fix: collab chat input hidden by mobile bottom nav bar

Closes #939

* chore: prepare database for nest + typeorm

* fix(ssrf): relax internal network resolution (#947)

* docs(ssrf): update Internal-Network-Access wiki to reflect relaxed guard

Loopback, link-local, and .local/.internal hostnames are now all
overridable with ALLOW_INTERNAL_NETWORK=true (commit 9a08368). Merge
the two-tier "always blocked / conditionally blocked" structure into a
single table, add a warning about cloud metadata exposure.

* fix(ssrf): let .local/.internal hostnames pass to IP-level checks

The pre-DNS hostname block was redundant: any .local/.internal host
that resolves to a private IP is already gated by isPrivateNetwork +
ALLOW_INTERNAL_NETWORK, and any that resolves to loopback/link-local
is caught by isAlwaysBlocked unconditionally.

Dropping the hostname pre-check means Docker/LAN deployments can reach
services on .local hostnames (e.g. immich.local) with
ALLOW_INTERNAL_NETWORK=true, while loopback and link-local IPs
(including 169.254.169.254) remain hard-blocked with no override.

Reverts the isAlwaysBlocked guard loosening from 9a08368.

* fix(auth): trim username and email on all write paths

Self-registration stored values verbatim, so trailing whitespace could
produce rows that lookup code (which trims input) silently misses.
Trim username and email before validation and INSERT in registerUser,
adminService.updateUser, and oidcService.findOrCreateUser. updateSettings
and adminService.createUser already trimmed correctly.

Adds a one-shot backfill migration (trimUserWhitespace) that trims
existing dirty rows; collisions are resolved by appending __migrated_<id>
to the value with a loud console.warn so operators can review affected
accounts.

18 new tests covering registration trim, duplicate detection, admin
update trim, trip-member lookup regression, and all migration branches.

* feat(notices): add v3014-whitespace-collision admin notice

Adds a dismissible banner for admins on v3.0.14+ that fires only when
the whitespace-trimming migration detected a username/email collision
(stored in app_settings as whitespace_migration_collision=true).

Notice conditions: existingUserBeforeVersion(3.0.14) + role=admin +
custom predicate reading the app_settings flag. Predicate registered in
registry.ts; migration step writes the flag when hadCollision=true.

All 15 translation files updated with title/body keys.
7 integration tests added (SN-COLLISION-1 through -7) covering all
condition branches: shown when all conditions met, hidden when flag
absent/false, hidden for non-admin, hidden for new user, hidden below
min app version, hidden after dismissal.
2026-05-03 17:39:45 +02:00
..
adminService.test.ts fix(tests): update tests for granular auth toggles 2026-04-11 20:33:51 +02:00
apiKeyCrypto.test.ts Add comprehensive backend test suite (#339) 2026-04-03 13:17:53 +02:00
atlasService.test.ts fix(tests): update test helpers and assertions for migration-98 photo schema 2026-04-14 13:54:48 +02:00
auditLog.test.ts Add comprehensive backend test suite (#339) 2026-04-03 13:17:53 +02:00
authService.test.ts Add comprehensive backend test suite (#339) 2026-04-03 13:17:53 +02:00
authServiceDb.test.ts feat(auth): split OIDC_ONLY into granular auth toggles 2026-04-11 20:21:36 +02:00
backupService.test.ts fix(backups,files): auto-backups rejected by validator; trip file download broken after cookie migration 2026-04-21 11:18:17 +02:00
budgetService.test.ts test: apply suite review improvements (01–11) 2026-04-06 20:08:13 +02:00
categoryService.test.ts test: expand test suite to 87.3% backend coverage 2026-04-06 20:08:30 +02:00
collabService.test.ts test: add comprehensive coverage for OAuth scopes, MCP, and core services 2026-04-11 14:08:09 +02:00
cookie.test.ts test: update cookie test to match sameSite lax change 2026-04-03 14:42:48 +02:00
dayService.test.ts test: expand test suite to 87.3% backend coverage 2026-04-06 20:08:30 +02:00
ephemeralTokens.test.ts test: expand test suite to 87.3% backend coverage 2026-04-06 20:08:30 +02:00
inAppNotificationActions.test.ts test: apply suite review improvements (01–11) 2026-04-06 20:08:13 +02:00
inAppNotificationPrefs.test.ts feat(notifications): add unified multi-channel notification system 2026-04-05 01:22:18 +02:00
journeyService.test.ts fix(journey,pdf): journey reorder sort_order + PDF multi-day transport (#848) 2026-04-23 10:53:32 +02:00
journeyShareService.test.ts fix: update backend tests and service bugs for gallery 1-to-N schema 2026-04-22 16:05:18 +02:00
kmlImportUtils.test.ts feat(places): unified file import modal with drag-and-drop and deduplication 2026-04-15 06:07:26 +02:00
kmzUnpack.test.ts fix(kml-import): address PR #488 review issues 2026-04-15 05:16:47 +02:00
mapsService.test.ts test(maps): update getPlacePhoto stubs to use text() instead of json() 2026-04-21 00:16:54 +02:00
memoriesHelpers.test.ts test: add comprehensive coverage for OAuth scopes, MCP, and core services 2026-04-11 14:08:09 +02:00
memoriesUnified.test.ts test: add comprehensive coverage for OAuth scopes, MCP, and core services 2026-04-11 14:08:09 +02:00
mfaCrypto.test.ts Add comprehensive backend test suite (#339) 2026-04-03 13:17:53 +02:00
migration.test.ts feat(notifications): add unified multi-channel notification system 2026-04-05 01:22:18 +02:00
notificationPreferencesService.test.ts test(notifications): bump event_types count to 9 after adding todo_due 2026-04-20 17:38:25 +02:00
notifications.test.ts feat(notifications): add ntfy as a first-class notification channel 2026-04-15 13:59:25 +02:00
notificationService.test.ts feat(notifications): add ntfy as a first-class notification channel 2026-04-15 13:59:25 +02:00
oauthService.test.ts fix(mcp): add RFC 9728 PRM, RFC 8707 audience binding, and collab sub-feature gating 2026-04-20 07:34:38 +02:00
oidcService.test.ts fix(oidc,ui): restore Authentik login and fix mobile delete dialog (#845) 2026-04-23 09:13:35 +02:00
packingService.test.ts test: expand test suite to 87.3% backend coverage 2026-04-06 20:08:30 +02:00
passwordPolicy.test.ts Add comprehensive backend test suite (#339) 2026-04-03 13:17:53 +02:00
permissions.test.ts test: expand test suite to 87.3% backend coverage 2026-04-06 20:08:30 +02:00
placeService.test.ts feat(import): selective GPX/KML element import and performance improvements 2026-04-18 01:28:37 +02:00
queryHelpers.test.ts test: apply suite review improvements (01–11) 2026-04-06 20:08:13 +02:00
settingsService.test.ts test: expand test suite to 87.3% backend coverage 2026-04-06 20:08:30 +02:00
tagService.test.ts test: expand test suite to 87.3% backend coverage 2026-04-06 20:08:30 +02:00
todoService.test.ts test: expand test suite to 87.3% backend coverage 2026-04-06 20:08:30 +02:00
trimUserWhitespace.test.ts Bug fixes - May 2nd 2026 (#941) 2026-05-03 17:39:45 +02:00
tripService.test.ts Bug fixes - April 27th 2026 (#907) 2026-04-28 05:17:20 +02:00
vacayService.test.ts test: expand test suite to 87.3% backend coverage 2026-04-06 20:08:30 +02:00
versionNotification.test.ts fix: restore broken tests after prerelease workflow refactor 2026-04-12 17:19:24 +02:00
weatherService.test.ts fix tests for sidebar/settings refactor + weather archive fallback 2026-04-18 11:45:19 +02:00