mirror of
https://github.com/mauriceboe/TREK.git
synced 2026-10-18 21:16:47 +00:00
test(server): the suites left in tests/unit/services move next to the code they cover
src/services is gone, so the folder named a layer that no longer exists. The airtrail suites go to tests/unit/nest/integrations, the crypto, cookie, avatar, password policy, timezone and conflict helpers to tests/unit/nest/common, the kitinerary mapper to booking-import, the photo media suite to photos, the atlas bundle guard to tests/unit/nest and the two migration suites to tests/unit/db. Only the relative import paths change, and the format baseline follows the new paths.
This commit is contained in:
@@ -1131,6 +1131,7 @@
|
||||
"tests/unit/db/known-migrations.test.ts",
|
||||
"tests/unit/db/legacy-baseline.test.ts",
|
||||
"tests/unit/db/migrate-encryption-parity.test.ts",
|
||||
"tests/unit/db/migration.test.ts",
|
||||
"tests/unit/db/nul-safe-sqlite-platform.test.ts",
|
||||
"tests/unit/db/repositories/Addons.repository.test.ts",
|
||||
"tests/unit/db/repositories/AppSettings.repository.test.ts",
|
||||
@@ -1224,6 +1225,7 @@
|
||||
"tests/unit/db/tour-types-migration.test.ts",
|
||||
"tests/unit/db/tours-migration.test.ts",
|
||||
"tests/unit/db/transaction-yield.test.ts",
|
||||
"tests/unit/db/trimUserWhitespace.test.ts",
|
||||
"tests/unit/db/trip-access.test.ts",
|
||||
"tests/unit/db/trip-days-backfill-migration.test.ts",
|
||||
"tests/unit/db/trip-files-prefix-migration.test.ts",
|
||||
@@ -1312,6 +1314,7 @@
|
||||
"tests/unit/nest/atlas-visit-dates.test.ts",
|
||||
"tests/unit/nest/atlas.controller.test.ts",
|
||||
"tests/unit/nest/atlas.service.test.ts",
|
||||
"tests/unit/nest/atlasBundle.test.ts",
|
||||
"tests/unit/nest/audit-log.logger.test.ts",
|
||||
"tests/unit/nest/audit.service.test.ts",
|
||||
"tests/unit/nest/auth.controller.test.ts",
|
||||
@@ -1325,6 +1328,7 @@
|
||||
"tests/unit/nest/booking-import/booking-import.service.test.ts",
|
||||
"tests/unit/nest/booking-import/import-jobs.service.test.ts",
|
||||
"tests/unit/nest/booking-import/kitinerary-extractor.service.test.ts",
|
||||
"tests/unit/nest/booking-import/kitineraryMapper.test.ts",
|
||||
"tests/unit/nest/booking-import/reservation-import.controller.test.ts",
|
||||
"tests/unit/nest/boot-restore.test.ts",
|
||||
"tests/unit/nest/budget.controller.test.ts",
|
||||
@@ -1343,6 +1347,12 @@
|
||||
"tests/unit/nest/collab.service.test.ts",
|
||||
"tests/unit/nest/collections.controller.test.ts",
|
||||
"tests/unit/nest/collections.service.test.ts",
|
||||
"tests/unit/nest/common/avatarUrl.test.ts",
|
||||
"tests/unit/nest/common/conflictUpdate.test.ts",
|
||||
"tests/unit/nest/common/cookie.test.ts",
|
||||
"tests/unit/nest/common/crypto/apiKeyCrypto.test.ts",
|
||||
"tests/unit/nest/common/crypto/mfaCrypto.test.ts",
|
||||
"tests/unit/nest/common/passwordPolicy.test.ts",
|
||||
"tests/unit/nest/common/request-correlation.test.ts",
|
||||
"tests/unit/nest/common/row-id.test.ts",
|
||||
"tests/unit/nest/common/rowShape.test.ts",
|
||||
@@ -1398,6 +1408,12 @@
|
||||
"tests/unit/nest/google-transit.provider.test.ts",
|
||||
"tests/unit/nest/idempotency.interceptor.test.ts",
|
||||
"tests/unit/nest/immich.service.test.ts",
|
||||
"tests/unit/nest/integrations/airtrailImport.test.ts",
|
||||
"tests/unit/nest/integrations/airtrailMapper.test.ts",
|
||||
"tests/unit/nest/integrations/airtrailSync.test.ts",
|
||||
"tests/unit/nest/integrations/airtrailTestConnection.test.ts",
|
||||
"tests/unit/nest/integrations/airtrailWriteGate.test.ts",
|
||||
"tests/unit/nest/integrations/airtrailWriteback.test.ts",
|
||||
"tests/unit/nest/journey-book.service.test.ts",
|
||||
"tests/unit/nest/journey-domain.service.test.ts",
|
||||
"tests/unit/nest/journey-photo-capture.service.test.ts",
|
||||
@@ -1485,6 +1501,7 @@
|
||||
"tests/unit/nest/photo-capture-backfill.service.test.ts",
|
||||
"tests/unit/nest/photo-provider.test.ts",
|
||||
"tests/unit/nest/photo-resolver.service.test.ts",
|
||||
"tests/unit/nest/photos/trekPhotoMedia.test.ts",
|
||||
"tests/unit/nest/place-enrichment.brand.test.ts",
|
||||
"tests/unit/nest/place-enrichment.controller.test.ts",
|
||||
"tests/unit/nest/place-enrichment.description.test.ts",
|
||||
@@ -1701,23 +1718,6 @@
|
||||
"tests/unit/scripts/pg-probe/schema.test.ts",
|
||||
"tests/unit/scripts/test-sql-ratchet.test.ts",
|
||||
"tests/unit/scripts/tx-writes.test.ts",
|
||||
"tests/unit/services/airtrailImport.test.ts",
|
||||
"tests/unit/services/airtrailMapper.test.ts",
|
||||
"tests/unit/services/airtrailSync.test.ts",
|
||||
"tests/unit/services/airtrailTestConnection.test.ts",
|
||||
"tests/unit/services/airtrailWriteGate.test.ts",
|
||||
"tests/unit/services/airtrailWriteback.test.ts",
|
||||
"tests/unit/services/apiKeyCrypto.test.ts",
|
||||
"tests/unit/services/atlasBundle.test.ts",
|
||||
"tests/unit/services/avatarUrl.test.ts",
|
||||
"tests/unit/services/conflictUpdate.test.ts",
|
||||
"tests/unit/services/cookie.test.ts",
|
||||
"tests/unit/services/kitineraryMapper.test.ts",
|
||||
"tests/unit/services/mfaCrypto.test.ts",
|
||||
"tests/unit/services/migration.test.ts",
|
||||
"tests/unit/services/passwordPolicy.test.ts",
|
||||
"tests/unit/services/trekPhotoMedia.test.ts",
|
||||
"tests/unit/services/trimUserWhitespace.test.ts",
|
||||
"tests/unit/shared-contract.test.ts",
|
||||
"tests/unit/shutdown.test.ts",
|
||||
"tests/unit/systemNotices/conditions.test.ts",
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
import { describe, it, expect } from 'vitest';
|
||||
import { mapReservations } from '../../../src/nest/booking-import/kitinerary-mapper';
|
||||
import { mapReservations } from '../../../../src/nest/booking-import/kitinerary-mapper';
|
||||
|
||||
const airport = (iata: string, lat: number, lng: number) => ({
|
||||
iataCode: iata,
|
||||
+1
-1
@@ -4,7 +4,7 @@
|
||||
* an OIDC `picture` claim (#1399); the helper resolves both to a renderable src.
|
||||
*/
|
||||
import { describe, it, expect } from 'vitest';
|
||||
import { avatarUrl } from '../../../src/nest/common/avatarUrl';
|
||||
import { avatarUrl } from '../../../../src/nest/common/avatarUrl';
|
||||
|
||||
describe('avatarUrl', () => {
|
||||
it('AVATAR-URL-001: prefixes an uploaded file name with the avatars path', () => {
|
||||
+31
-31
@@ -5,8 +5,8 @@
|
||||
*/
|
||||
import { describe, it, expect, vi, beforeAll, beforeEach, afterAll } from 'vitest';
|
||||
|
||||
vi.mock('../../../src/db/database', async () => {
|
||||
const { createSnapshotTestDb } = await import('../../helpers/db-mock');
|
||||
vi.mock('../../../../src/db/database', async () => {
|
||||
const { createSnapshotTestDb } = await import('../../../helpers/db-mock');
|
||||
const db = createSnapshotTestDb();
|
||||
return {
|
||||
db,
|
||||
@@ -17,29 +17,29 @@ vi.mock('../../../src/db/database', async () => {
|
||||
};
|
||||
});
|
||||
|
||||
import { db as testDb } from '../../../src/db/database';
|
||||
import { resetTestDb } from '../../helpers/test-db';
|
||||
import { findRow } from '../../helpers/factories/rows';
|
||||
import { Places } from '../../../src/db/entities/Places.entity';
|
||||
import { createUser, createTrip } from '../../helpers/factories';
|
||||
import { accommodationsOver } from '../../helpers/accommodations-service';
|
||||
import { isUpdateConflict } from '../../../src/nest/common/conflictResult';
|
||||
import { PackingService } from '../../../src/nest/packing/packing.service';
|
||||
import { PlacesService } from '../../../src/nest/places/places.service';
|
||||
import { buildPlaceImportService } from '../../helpers/place-import';
|
||||
import { buildMapsService } from '../../helpers/maps-service';
|
||||
import { PermissionsService } from '../../../src/nest/permissions/permissions.service';
|
||||
import { RealtimeService } from '../../../src/nest/realtime/realtime.service';
|
||||
import { QueryHelpersService } from '../../../src/nest/query-helpers/query-helpers.service';
|
||||
import { UnsplashService } from '../../../src/nest/unsplash/unsplash.service';
|
||||
import { PlacePhotoCacheService } from '../../../src/nest/place-photos/place-photo-cache.service';
|
||||
import { JourneyDomainService } from '../../../src/nest/journey/journey-domain.service';
|
||||
import { TrekPhotoRegistrationService } from '../../../src/nest/photos/trek-photo-registration.service';
|
||||
import { TrekPhotos } from '../../../src/db/entities/TrekPhotos.entity';
|
||||
import { TripPhotos } from '../../../src/db/entities/TripPhotos.entity';
|
||||
import { RuntimeEnvService } from '../../../src/nest/app-config/runtime-env.service';
|
||||
import { notificationsStub } from '../../helpers/notifications';
|
||||
import { makeStorageFixture } from '../../helpers/storage-fixture';
|
||||
import { db as testDb } from '../../../../src/db/database';
|
||||
import { resetTestDb } from '../../../helpers/test-db';
|
||||
import { findRow } from '../../../helpers/factories/rows';
|
||||
import { Places } from '../../../../src/db/entities/Places.entity';
|
||||
import { createUser, createTrip } from '../../../helpers/factories';
|
||||
import { accommodationsOver } from '../../../helpers/accommodations-service';
|
||||
import { isUpdateConflict } from '../../../../src/nest/common/conflictResult';
|
||||
import { PackingService } from '../../../../src/nest/packing/packing.service';
|
||||
import { PlacesService } from '../../../../src/nest/places/places.service';
|
||||
import { buildPlaceImportService } from '../../../helpers/place-import';
|
||||
import { buildMapsService } from '../../../helpers/maps-service';
|
||||
import { PermissionsService } from '../../../../src/nest/permissions/permissions.service';
|
||||
import { RealtimeService } from '../../../../src/nest/realtime/realtime.service';
|
||||
import { QueryHelpersService } from '../../../../src/nest/query-helpers/query-helpers.service';
|
||||
import { UnsplashService } from '../../../../src/nest/unsplash/unsplash.service';
|
||||
import { PlacePhotoCacheService } from '../../../../src/nest/place-photos/place-photo-cache.service';
|
||||
import { JourneyDomainService } from '../../../../src/nest/journey/journey-domain.service';
|
||||
import { TrekPhotoRegistrationService } from '../../../../src/nest/photos/trek-photo-registration.service';
|
||||
import { TrekPhotos } from '../../../../src/db/entities/TrekPhotos.entity';
|
||||
import { TripPhotos } from '../../../../src/db/entities/TripPhotos.entity';
|
||||
import { RuntimeEnvService } from '../../../../src/nest/app-config/runtime-env.service';
|
||||
import { notificationsStub } from '../../../helpers/notifications';
|
||||
import { makeStorageFixture } from '../../../helpers/storage-fixture';
|
||||
import {
|
||||
createTestUnitOfWork,
|
||||
createTestAppSettingsRepo,
|
||||
@@ -55,13 +55,13 @@ import {
|
||||
createTestCategoriesRepo,
|
||||
createTestTripsRepo,
|
||||
sharedTestOrm,
|
||||
} from '../../helpers/test-uow';
|
||||
import { createTestBudgetItemsRepo } from '../../helpers/files-repos';
|
||||
import { createTestCollectionPlacesRepo } from '../../helpers/test-uow';
|
||||
} from '../../../helpers/test-uow';
|
||||
import { createTestBudgetItemsRepo } from '../../../helpers/files-repos';
|
||||
import { createTestCollectionPlacesRepo } from '../../../helpers/test-uow';
|
||||
import {
|
||||
createTestJourneysRepo, createTestJourneyContributorsRepo, createTestJourneyTripsRepo, createTestJourneyEntriesRepo,
|
||||
createTestJourneyPhotosRepo, createTestJourneyEntryPhotosRepo,
|
||||
} from '../../helpers/journey-repos';
|
||||
} from '../../../helpers/journey-repos';
|
||||
import {
|
||||
createTestPackingItemsRepo,
|
||||
createTestPackingItemContributorsRepo,
|
||||
@@ -70,8 +70,8 @@ import {
|
||||
createTestPackingTemplatesRepo,
|
||||
createTestPackingTemplateCategoriesRepo,
|
||||
createTestPackingTemplateItemsRepo,
|
||||
} from '../../helpers/packing-repos';
|
||||
import { noGoogleQuota } from '../../helpers/google-quota';
|
||||
} from '../../../helpers/packing-repos';
|
||||
import { noGoogleQuota } from '../../../helpers/google-quota';
|
||||
|
||||
const realtime = new RealtimeService();
|
||||
const runtimeEnv = new RuntimeEnvService();
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
|
||||
|
||||
import { cookieOptions } from '../../../src/nest/common/cookie';
|
||||
import { SESSION_DURATION_MS, SESSION_DURATION_REMEMBER_MS } from '../../../src/config';
|
||||
import { cookieOptions } from '../../../../src/nest/common/cookie';
|
||||
import { SESSION_DURATION_MS, SESSION_DURATION_REMEMBER_MS } from '../../../../src/config';
|
||||
|
||||
describe('cookieOptions', () => {
|
||||
afterEach(() => {
|
||||
+1
-1
@@ -5,7 +5,7 @@ import {
|
||||
decrypt_api_key,
|
||||
maybe_encrypt_api_key,
|
||||
is_encrypted_api_key,
|
||||
} from '../../../src/nest/common/crypto/apiKeyCrypto';
|
||||
} from '../../../../../src/nest/common/crypto/apiKeyCrypto';
|
||||
|
||||
describe('apiKeyCrypto', () => {
|
||||
const PLAINTEXT_KEY = 'my-secret-api-key-12345';
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
import { describe, it, expect } from 'vitest';
|
||||
|
||||
import { encryptMfaSecret, decryptMfaSecret } from '../../../src/nest/common/crypto/mfaCrypto';
|
||||
import { encryptMfaSecret, decryptMfaSecret } from '../../../../../src/nest/common/crypto/mfaCrypto';
|
||||
|
||||
describe('mfaCrypto', () => {
|
||||
const TOTP_SECRET = 'JBSWY3DPEHPK3PXP'; // typical base32 TOTP secret
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
import { describe, it, expect } from 'vitest';
|
||||
import { validatePassword } from '../../../src/nest/common/passwordPolicy';
|
||||
import { validatePassword } from '../../../../src/nest/common/passwordPolicy';
|
||||
|
||||
describe('validatePassword', () => {
|
||||
// AUTH-006 — Registration with weak password
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
import { localParts, resolveTimeZone } from '../../../src/nest/common/timezoneService';
|
||||
import { localParts, resolveTimeZone } from '../../../../src/nest/common/timezoneService';
|
||||
|
||||
import { describe, expect, it } from 'vitest';
|
||||
|
||||
+21
-21
@@ -8,27 +8,27 @@ import { describe, it, expect, vi, beforeEach } from 'vitest';
|
||||
* doesn't actually chain.
|
||||
*/
|
||||
|
||||
import { db } from '../../../src/db/database';
|
||||
import { createUser, createTrip } from '../../helpers/factories';
|
||||
import type { AirtrailAirport, AirtrailFlightRaw } from '../../../src/nest/integrations/airtrail.client';
|
||||
import { AirtrailImportService } from '../../../src/nest/integrations/airtrail-import.service';
|
||||
import { PermissionsService } from '../../../src/nest/permissions/permissions.service';
|
||||
import { RealtimeService } from '../../../src/nest/realtime/realtime.service';
|
||||
import { BudgetService } from '../../../src/nest/budget/budget.service';
|
||||
import { ExchangeRatesService } from '../../../src/nest/budget/exchange-rates.service';
|
||||
import { ReservationsService } from '../../../src/nest/reservations/reservations.service';
|
||||
import { ReservationsReadService } from '../../../src/nest/reservations/reservations-read.service';
|
||||
import type { AirtrailClient } from '../../../src/nest/integrations/airtrail.client';
|
||||
import type { AirtrailService } from '../../../src/nest/integrations/airtrail.service';
|
||||
import { notificationsStub } from '../../helpers/notifications';
|
||||
import { accommodationsOver } from '../../helpers/accommodations-service';
|
||||
import { createTestUnitOfWork, createTestAppSettingsRepo, createTestReservationsRepo, createTestReservationEndpointsRepo, createTestReservationTravelersRepo, createTestReservationDayPositionsRepo, createTestDayAccommodationsRepo, createTestDaysRepo, createTestPlacesRepo, createTestDayAssignmentsRepo, createTestTripMembersRepo, createTestUsersRepo, createTestTripsRepo, sharedTestOrm } from '../../helpers/test-uow';
|
||||
import { createTestBudgetItemsRepo } from '../../helpers/files-repos';
|
||||
import { budgetRepoArgs } from '../../helpers/budget-repos';
|
||||
import { findRow, findRows } from '../../helpers/factories/rows';
|
||||
import { Days } from '../../../src/db/entities/Days.entity';
|
||||
import { Reservations } from '../../../src/db/entities/Reservations.entity';
|
||||
import { ReservationEndpoints } from '../../../src/db/entities/ReservationEndpoints.entity';
|
||||
import { db } from '../../../../src/db/database';
|
||||
import { createUser, createTrip } from '../../../helpers/factories';
|
||||
import type { AirtrailAirport, AirtrailFlightRaw } from '../../../../src/nest/integrations/airtrail.client';
|
||||
import { AirtrailImportService } from '../../../../src/nest/integrations/airtrail-import.service';
|
||||
import { PermissionsService } from '../../../../src/nest/permissions/permissions.service';
|
||||
import { RealtimeService } from '../../../../src/nest/realtime/realtime.service';
|
||||
import { BudgetService } from '../../../../src/nest/budget/budget.service';
|
||||
import { ExchangeRatesService } from '../../../../src/nest/budget/exchange-rates.service';
|
||||
import { ReservationsService } from '../../../../src/nest/reservations/reservations.service';
|
||||
import { ReservationsReadService } from '../../../../src/nest/reservations/reservations-read.service';
|
||||
import type { AirtrailClient } from '../../../../src/nest/integrations/airtrail.client';
|
||||
import type { AirtrailService } from '../../../../src/nest/integrations/airtrail.service';
|
||||
import { notificationsStub } from '../../../helpers/notifications';
|
||||
import { accommodationsOver } from '../../../helpers/accommodations-service';
|
||||
import { createTestUnitOfWork, createTestAppSettingsRepo, createTestReservationsRepo, createTestReservationEndpointsRepo, createTestReservationTravelersRepo, createTestReservationDayPositionsRepo, createTestDayAccommodationsRepo, createTestDaysRepo, createTestPlacesRepo, createTestDayAssignmentsRepo, createTestTripMembersRepo, createTestUsersRepo, createTestTripsRepo, sharedTestOrm } from '../../../helpers/test-uow';
|
||||
import { createTestBudgetItemsRepo } from '../../../helpers/files-repos';
|
||||
import { budgetRepoArgs } from '../../../helpers/budget-repos';
|
||||
import { findRow, findRows } from '../../../helpers/factories/rows';
|
||||
import { Days } from '../../../../src/db/entities/Days.entity';
|
||||
import { Reservations } from '../../../../src/db/entities/Reservations.entity';
|
||||
import { ReservationEndpoints } from '../../../../src/db/entities/ReservationEndpoints.entity';
|
||||
|
||||
// The client and the per-user credentials are the only stubs; the reservation
|
||||
// writes go through the real service against the real test DB, as before. They
|
||||
+2
-2
@@ -1,6 +1,6 @@
|
||||
import { describe, it, expect } from 'vitest';
|
||||
import { canonicalHash, mapFlightToReservation, mapFlightsToMultiLegReservation, normalizeFlight } from '../../../src/nest/integrations/airtrail.mapper';
|
||||
import type { AirtrailFlightRaw } from '../../../src/nest/integrations/airtrail.client';
|
||||
import { canonicalHash, mapFlightToReservation, mapFlightsToMultiLegReservation, normalizeFlight } from '../../../../src/nest/integrations/airtrail.mapper';
|
||||
import type { AirtrailFlightRaw } from '../../../../src/nest/integrations/airtrail.client';
|
||||
|
||||
function airport(over: Partial<AirtrailFlightRaw['from']> = {}): NonNullable<AirtrailFlightRaw['from']> {
|
||||
return {
|
||||
+2
-2
@@ -1,6 +1,6 @@
|
||||
import { describe, it, expect } from 'vitest';
|
||||
import { buildSavePayload } from '../../../src/nest/integrations/airtrail-sync.service';
|
||||
import type { AirtrailAirport, AirtrailFlightRaw, AirtrailSavePayload } from '../../../src/nest/integrations/airtrail.client';
|
||||
import { buildSavePayload } from '../../../../src/nest/integrations/airtrail-sync.service';
|
||||
import type { AirtrailAirport, AirtrailFlightRaw, AirtrailSavePayload } from '../../../../src/nest/integrations/airtrail.client';
|
||||
|
||||
/**
|
||||
* buildSavePayload spreads the raw flight, so the body also carries the
|
||||
+10
-10
@@ -1,20 +1,20 @@
|
||||
import { describe, it, expect, vi, beforeAll, beforeEach, afterAll } from 'vitest';
|
||||
|
||||
// Avoid any real DNS/network from the SSRF guard during saveSettings and the probe.
|
||||
vi.mock('../../../src/utils/ssrfGuard', () => ({
|
||||
vi.mock('../../../../src/utils/ssrfGuard', () => ({
|
||||
checkSsrf: vi.fn(async () => ({ allowed: true, isPrivate: false })),
|
||||
safeFetch: vi.fn(),
|
||||
}));
|
||||
|
||||
import { db } from '../../../src/db/database';
|
||||
import { createUser } from '../../helpers/factories';
|
||||
import { AirtrailService } from '../../../src/nest/integrations/airtrail.service';
|
||||
import type { AirtrailClient } from '../../../src/nest/integrations/airtrail.client';
|
||||
import { AuditService } from '../../../src/nest/audit/audit.service';
|
||||
import { createTestOrm, type TestOrm } from '../../helpers/test-orm';
|
||||
import { AuditLog } from '../../../src/db/entities/AuditLog.entity';
|
||||
import { Users } from '../../../src/db/entities/Users.entity';
|
||||
import { UserAirtrailRepository } from '../../../src/db/repositories/UserAirtrail.repository';
|
||||
import { db } from '../../../../src/db/database';
|
||||
import { createUser } from '../../../helpers/factories';
|
||||
import { AirtrailService } from '../../../../src/nest/integrations/airtrail.service';
|
||||
import type { AirtrailClient } from '../../../../src/nest/integrations/airtrail.client';
|
||||
import { AuditService } from '../../../../src/nest/audit/audit.service';
|
||||
import { createTestOrm, type TestOrm } from '../../../helpers/test-orm';
|
||||
import { AuditLog } from '../../../../src/db/entities/AuditLog.entity';
|
||||
import { Users } from '../../../../src/db/entities/Users.entity';
|
||||
import { UserAirtrailRepository } from '../../../../src/db/repositories/UserAirtrail.repository';
|
||||
|
||||
// The probe is the only call that would leave the process, so the client is a
|
||||
// stub; the credential handling around it runs against the real row.
|
||||
+13
-13
@@ -10,24 +10,24 @@ import { describe, it, expect, vi, beforeEach } from 'vitest';
|
||||
* the collaborators are visible in the signature instead of resolved by path.
|
||||
* Only the mapper stays a module mock, because it stayed free functions.
|
||||
*/
|
||||
vi.mock('../../../src/nest/integrations/airtrail.mapper', () => ({
|
||||
vi.mock('../../../../src/nest/integrations/airtrail.mapper', () => ({
|
||||
canonicalHash: vi.fn(() => 'hash'),
|
||||
mapFlightToReservation: vi.fn(() => ({})),
|
||||
entityCode: (e: any) => e?.icao || e?.iata || null,
|
||||
}));
|
||||
|
||||
import { AirtrailLinkService } from '../../../src/nest/integrations/airtrail-link.service';
|
||||
import { AirtrailAuthError } from '../../../src/nest/integrations/airtrail.client';
|
||||
import type { ReservationsRepository } from '../../../src/db/repositories/Reservations.repository';
|
||||
import type { ReservationEndpointsRepository } from '../../../src/db/repositories/ReservationEndpoints.repository';
|
||||
import type { AppSettingsRepository } from '../../../src/db/repositories/AppSettings.repository';
|
||||
import type { RealtimeService } from '../../../src/nest/realtime/realtime.service';
|
||||
import type { AddonsService } from '../../../src/nest/addons/addons.service';
|
||||
import { AirtrailSyncService } from '../../../src/nest/integrations/airtrail-sync.service';
|
||||
import type { ReservationsService } from '../../../src/nest/reservations/reservations.service';
|
||||
import type { ReservationsReadService } from '../../../src/nest/reservations/reservations-read.service';
|
||||
import type { AirtrailClient } from '../../../src/nest/integrations/airtrail.client';
|
||||
import type { AirtrailService } from '../../../src/nest/integrations/airtrail.service';
|
||||
import { AirtrailLinkService } from '../../../../src/nest/integrations/airtrail-link.service';
|
||||
import { AirtrailAuthError } from '../../../../src/nest/integrations/airtrail.client';
|
||||
import type { ReservationsRepository } from '../../../../src/db/repositories/Reservations.repository';
|
||||
import type { ReservationEndpointsRepository } from '../../../../src/db/repositories/ReservationEndpoints.repository';
|
||||
import type { AppSettingsRepository } from '../../../../src/db/repositories/AppSettings.repository';
|
||||
import type { RealtimeService } from '../../../../src/nest/realtime/realtime.service';
|
||||
import type { AddonsService } from '../../../../src/nest/addons/addons.service';
|
||||
import { AirtrailSyncService } from '../../../../src/nest/integrations/airtrail-sync.service';
|
||||
import type { ReservationsService } from '../../../../src/nest/reservations/reservations.service';
|
||||
import type { ReservationsReadService } from '../../../../src/nest/reservations/reservations-read.service';
|
||||
import type { AirtrailClient } from '../../../../src/nest/integrations/airtrail.client';
|
||||
import type { AirtrailService } from '../../../../src/nest/integrations/airtrail.service';
|
||||
|
||||
const linkedRow = { id: 5, trip_id: 9, external_id: '42', external_owner_user_id: 7, sync_enabled: 1 };
|
||||
|
||||
+10
-10
@@ -5,20 +5,20 @@ import { describe, it, expect, vi, beforeAll, afterAll } from 'vitest';
|
||||
import 'reflect-metadata';
|
||||
|
||||
// Avoid any real DNS/network from the SSRF guard during saveSettings.
|
||||
vi.mock('../../../src/utils/ssrfGuard', () => ({
|
||||
vi.mock('../../../../src/utils/ssrfGuard', () => ({
|
||||
checkSsrf: vi.fn(async () => ({ allowed: true, isPrivate: false })),
|
||||
safeFetch: vi.fn(),
|
||||
}));
|
||||
|
||||
import { db } from '../../../src/db/database';
|
||||
import { createUser } from '../../helpers/factories';
|
||||
import { AirtrailService } from '../../../src/nest/integrations/airtrail.service';
|
||||
import { AirtrailClient } from '../../../src/nest/integrations/airtrail.client';
|
||||
import { AuditService } from '../../../src/nest/database/../audit/audit.service';
|
||||
import { createTestOrm, type TestOrm } from '../../helpers/test-orm';
|
||||
import { AuditLog } from '../../../src/db/entities/AuditLog.entity';
|
||||
import { Users } from '../../../src/db/entities/Users.entity';
|
||||
import { UserAirtrailRepository } from '../../../src/db/repositories/UserAirtrail.repository';
|
||||
import { db } from '../../../../src/db/database';
|
||||
import { createUser } from '../../../helpers/factories';
|
||||
import { AirtrailService } from '../../../../src/nest/integrations/airtrail.service';
|
||||
import { AirtrailClient } from '../../../../src/nest/integrations/airtrail.client';
|
||||
import { AuditService } from '../../../../src/nest/audit/audit.service';
|
||||
import { createTestOrm, type TestOrm } from '../../../helpers/test-orm';
|
||||
import { AuditLog } from '../../../../src/db/entities/AuditLog.entity';
|
||||
import { Users } from '../../../../src/db/entities/Users.entity';
|
||||
import { UserAirtrailRepository } from '../../../../src/db/repositories/UserAirtrail.repository';
|
||||
|
||||
// The free functions became methods with the airtrail fold; same SQL, same
|
||||
// behaviour, one instance over the same db handle.
|
||||
+10
-10
@@ -4,22 +4,22 @@
|
||||
*/
|
||||
import { describe, it, expect, vi, beforeAll, beforeEach, afterAll } from 'vitest';
|
||||
|
||||
vi.mock('../../../src/db/database', async () => {
|
||||
const { createSnapshotTestDb } = await import('../../helpers/db-mock');
|
||||
vi.mock('../../../../src/db/database', async () => {
|
||||
const { createSnapshotTestDb } = await import('../../../helpers/db-mock');
|
||||
const db = createSnapshotTestDb();
|
||||
// FKs off: this suite only checks media_type persistence, not owner/user integrity.
|
||||
db.exec('PRAGMA foreign_keys = OFF');
|
||||
return { db, closeDb: () => {}, reinitialize: () => {}, getPlaceWithTags: async () => null, canAccessTrip: async () => null, isOwner: async () => false };
|
||||
});
|
||||
|
||||
import { db as testDb } from '../../../src/db/database';
|
||||
import { createUser } from '../../helpers/factories';
|
||||
import { TrekPhotoRegistrationService } from '../../../src/nest/photos/trek-photo-registration.service';
|
||||
import { TrekPhotos } from '../../../src/db/entities/TrekPhotos.entity';
|
||||
import { TripPhotos } from '../../../src/db/entities/TripPhotos.entity';
|
||||
import { JourneyPhotos } from '../../../src/db/entities/JourneyPhotos.entity';
|
||||
import { createTestOrm, type TestOrm } from '../../helpers/test-orm';
|
||||
import { deleteRows } from '../../helpers/factories/rows';
|
||||
import { db as testDb } from '../../../../src/db/database';
|
||||
import { createUser } from '../../../helpers/factories';
|
||||
import { TrekPhotoRegistrationService } from '../../../../src/nest/photos/trek-photo-registration.service';
|
||||
import { TrekPhotos } from '../../../../src/db/entities/TrekPhotos.entity';
|
||||
import { TripPhotos } from '../../../../src/db/entities/TripPhotos.entity';
|
||||
import { JourneyPhotos } from '../../../../src/db/entities/JourneyPhotos.entity';
|
||||
import { createTestOrm, type TestOrm } from '../../../helpers/test-orm';
|
||||
import { deleteRows } from '../../../helpers/factories/rows';
|
||||
|
||||
// Was photos.bridge, deleted with the other three that had no consumer outside
|
||||
// the container. These call the repository directly now.
|
||||
Reference in New Issue
Block a user