diff --git a/e2e/src/api/specs/library.e2e-spec.ts b/e2e/src/api/specs/library.e2e-spec.ts index 21fb945d1a..141b23d099 100644 --- a/e2e/src/api/specs/library.e2e-spec.ts +++ b/e2e/src/api/specs/library.e2e-spec.ts @@ -1,4 +1,4 @@ -import { LibraryResponseDto, LoginResponseDto, getAllLibraries, scanLibrary } from '@immich/sdk'; +import { LibraryResponseDto, LoginResponseDto, getAllLibraries } from '@immich/sdk'; import { cpSync, existsSync, rmSync, unlinkSync } from 'node:fs'; import { Socket } from 'socket.io-client'; import { userDto, uuidDto } from 'src/fixtures'; @@ -8,8 +8,6 @@ import request from 'supertest'; import { utimes } from 'utimes'; import { afterAll, beforeAll, beforeEach, describe, expect, it } from 'vitest'; -const scan = async (accessToken: string, id: string) => scanLibrary({ id }, { headers: asBearerAuth(accessToken) }); - describe('/libraries', () => { let admin: LoginResponseDto; let user: LoginResponseDto; @@ -298,6 +296,7 @@ describe('/libraries', () => { expect(status).toBe(204); await utils.waitForQueueFinish(admin.accessToken, 'library'); + await utils.waitForQueueFinish(admin.accessToken, 'sidecar'); await utils.waitForQueueFinish(admin.accessToken, 'metadataExtraction'); const { assets } = await utils.searchAssets(admin.accessToken, { @@ -313,15 +312,7 @@ describe('/libraries', () => { importPaths: [`${testAssetDirInternal}/temp/directoryA`], }); - const { status } = await request(app) - .post(`/libraries/${library.id}/scan`) - .set('Authorization', `Bearer ${admin.accessToken}`) - .send(); - expect(status).toBe(204); - - await utils.waitForQueueFinish(admin.accessToken, 'library'); - await utils.waitForQueueFinish(admin.accessToken, 'metadataExtraction'); - await utils.waitForQueueFinish(admin.accessToken, 'thumbnailGeneration'); + await utils.scan(admin.accessToken, library.id, true); const { assets } = await utils.searchAssets(admin.accessToken, { originalPath: `${testAssetDirInternal}/temp/directoryA/assetA.png`, @@ -341,13 +332,7 @@ describe('/libraries', () => { exclusionPatterns: ['**/directoryA'], }); - const { status } = await request(app) - .post(`/libraries/${library.id}/scan`) - .set('Authorization', `Bearer ${admin.accessToken}`) - .send(); - expect(status).toBe(204); - - await utils.waitForQueueFinish(admin.accessToken, 'library'); + await utils.scan(admin.accessToken, library.id, true); const { assets } = await utils.searchAssets(admin.accessToken, { libraryId: library.id }); @@ -361,13 +346,7 @@ describe('/libraries', () => { importPaths: [`${testAssetDirInternal}/temp/directoryA`, `${testAssetDirInternal}/temp/directoryB`], }); - const { status } = await request(app) - .post(`/libraries/${library.id}/scan`) - .set('Authorization', `Bearer ${admin.accessToken}`) - .send(); - expect(status).toBe(204); - - await utils.waitForQueueFinish(admin.accessToken, 'library'); + await utils.scan(admin.accessToken, library.id, true); const { assets } = await utils.searchAssets(admin.accessToken, { libraryId: library.id }); @@ -386,13 +365,7 @@ describe('/libraries', () => { utils.createImageFile(`${testAssetDir}/temp/folder, a/assetA.png`); utils.createImageFile(`${testAssetDir}/temp/folder, b/assetB.png`); - const { status } = await request(app) - .post(`/libraries/${library.id}/scan`) - .set('Authorization', `Bearer ${admin.accessToken}`) - .send(); - expect(status).toBe(204); - - await utils.waitForQueueFinish(admin.accessToken, 'library'); + await utils.scan(admin.accessToken, library.id, true); const { assets } = await utils.searchAssets(admin.accessToken, { libraryId: library.id }); @@ -414,13 +387,7 @@ describe('/libraries', () => { utils.createImageFile(`${testAssetDir}/temp/folder{ a/assetA.png`); utils.createImageFile(`${testAssetDir}/temp/folder} b/assetB.png`); - const { status } = await request(app) - .post(`/libraries/${library.id}/scan`) - .set('Authorization', `Bearer ${admin.accessToken}`) - .send(); - expect(status).toBe(204); - - await utils.waitForQueueFinish(admin.accessToken, 'library'); + await utils.scan(admin.accessToken, library.id, true); const { assets } = await utils.searchAssets(admin.accessToken, { libraryId: library.id }); @@ -472,13 +439,7 @@ describe('/libraries', () => { utils.createImageFile(`${testAssetDir}/temp/folder${char}1/asset1.png`); utils.createImageFile(`${testAssetDir}/temp/folder${char}2/asset2.png`); - const { status } = await request(app) - .post(`/libraries/${library.id}/scan`) - .set('Authorization', `Bearer ${admin.accessToken}`) - .send(); - expect(status).toBe(204); - - await utils.waitForQueueFinish(admin.accessToken, 'library'); + await utils.scan(admin.accessToken, library.id, true); const { assets } = await utils.searchAssets(admin.accessToken, { libraryId: library.id }); @@ -502,7 +463,7 @@ describe('/libraries', () => { utils.createImageFile(`${testAssetDir}/temp/reimport/asset.jpg`); await utimes(`${testAssetDir}/temp/reimport/asset.jpg`, 447_775_200_000); - await scan(admin.accessToken, library.id); + await utils.scan(admin.accessToken, library.id); await utils.waitForQueueFinish(admin.accessToken, 'library'); await utils.waitForQueueFinish(admin.accessToken, 'sidecar'); await utils.waitForQueueFinish(admin.accessToken, 'metadataExtraction'); @@ -510,15 +471,7 @@ describe('/libraries', () => { cpSync(`${testAssetDir}/albums/nature/tanners_ridge.jpg`, `${testAssetDir}/temp/reimport/asset.jpg`); await utimes(`${testAssetDir}/temp/reimport/asset.jpg`, 447_775_200_001); - const { status } = await request(app) - .post(`/libraries/${library.id}/scan`) - .set('Authorization', `Bearer ${admin.accessToken}`) - .send(); - expect(status).toBe(204); - - await utils.waitForQueueFinish(admin.accessToken, 'library'); - await utils.waitForQueueFinish(admin.accessToken, 'sidecar'); - await utils.waitForQueueFinish(admin.accessToken, 'metadataExtraction'); + await utils.scan(admin.accessToken, library.id, true); const { assets } = await utils.searchAssets(admin.accessToken, { libraryId: library.id, @@ -549,21 +502,13 @@ describe('/libraries', () => { utils.createImageFile(`${testAssetDir}/temp/reimport/asset.jpg`); await utimes(`${testAssetDir}/temp/reimport/asset.jpg`, 447_775_200_000); - await scan(admin.accessToken, library.id); + await utils.scan(admin.accessToken, library.id); await utils.waitForQueueFinish(admin.accessToken, 'library'); cpSync(`${testAssetDir}/albums/nature/tanners_ridge.jpg`, `${testAssetDir}/temp/reimport/asset.jpg`); await utimes(`${testAssetDir}/temp/reimport/asset.jpg`, 447_775_200_000); - const { status } = await request(app) - .post(`/libraries/${library.id}/scan`) - .set('Authorization', `Bearer ${admin.accessToken}`) - .send(); - expect(status).toBe(204); - - await utils.waitForQueueFinish(admin.accessToken, 'library'); - await utils.waitForQueueFinish(admin.accessToken, 'sidecar'); - await utils.waitForQueueFinish(admin.accessToken, 'metadataExtraction'); + await utils.scan(admin.accessToken, library.id, true); const { assets } = await utils.searchAssets(admin.accessToken, { libraryId: library.id, @@ -593,7 +538,7 @@ describe('/libraries', () => { utils.createImageFile(`${testAssetDir}/temp/offline/offline.png`); - await scan(admin.accessToken, library.id); + await utils.scan(admin.accessToken, library.id); await utils.waitForQueueFinish(admin.accessToken, 'library'); const { assets } = await utils.searchAssets(admin.accessToken, { libraryId: library.id }); @@ -601,13 +546,7 @@ describe('/libraries', () => { utils.removeImageFile(`${testAssetDir}/temp/offline/offline.png`); - const { status } = await request(app) - .post(`/libraries/${library.id}/scan`) - .set('Authorization', `Bearer ${admin.accessToken}`) - .send(); - expect(status).toBe(204); - - await utils.waitForQueueFinish(admin.accessToken, 'library'); + await utils.scan(admin.accessToken, library.id, true); const trashedAsset = await utils.getAssetInfo(admin.accessToken, assets.items[0].id); expect(trashedAsset.originalPath).toBe(`${testAssetDirInternal}/temp/offline/offline.png`); @@ -625,7 +564,7 @@ describe('/libraries', () => { importPaths: [`${testAssetDirInternal}/temp/offline`], }); - await scan(admin.accessToken, library.id); + await utils.scan(admin.accessToken, library.id); await utils.waitForQueueFinish(admin.accessToken, 'library'); const { assets } = await utils.searchAssets(admin.accessToken, { libraryId: library.id }); @@ -637,13 +576,7 @@ describe('/libraries', () => { importPaths: [`${testAssetDirInternal}/temp/another-path/`], }); - const { status } = await request(app) - .post(`/libraries/${library.id}/scan`) - .set('Authorization', `Bearer ${admin.accessToken}`) - .send(); - expect(status).toBe(204); - - await utils.waitForQueueFinish(admin.accessToken, 'library'); + await utils.scan(admin.accessToken, library.id, true); const trashedAsset = await utils.getAssetInfo(admin.accessToken, assets.items[0].id); expect(trashedAsset.originalPath).toBe(`${testAssetDirInternal}/temp/offline/offline.png`); @@ -663,7 +596,7 @@ describe('/libraries', () => { importPaths: [`${testAssetDirInternal}/temp`], }); - await scan(admin.accessToken, library.id); + await utils.scan(admin.accessToken, library.id); await utils.waitForQueueFinish(admin.accessToken, 'library'); const { assets } = await utils.searchAssets(admin.accessToken, { @@ -674,7 +607,7 @@ describe('/libraries', () => { await utils.updateLibrary(admin.accessToken, library.id, { exclusionPatterns: ['**/directoryB/**'] }); - await scan(admin.accessToken, library.id); + await utils.scan(admin.accessToken, library.id); await utils.waitForQueueFinish(admin.accessToken, 'library'); const trashedAsset = await utils.getAssetInfo(admin.accessToken, assets.items[0].id); @@ -697,19 +630,13 @@ describe('/libraries', () => { importPaths: [`${testAssetDirInternal}/temp`], }); - await scan(admin.accessToken, library.id); + await utils.scan(admin.accessToken, library.id); await utils.waitForQueueFinish(admin.accessToken, 'library'); const { assets: assetsBefore } = await utils.searchAssets(admin.accessToken, { libraryId: library.id }); expect(assetsBefore.count).toBeGreaterThan(1); - const { status } = await request(app) - .post(`/libraries/${library.id}/scan`) - .set('Authorization', `Bearer ${admin.accessToken}`) - .send(); - expect(status).toBe(204); - - await utils.waitForQueueFinish(admin.accessToken, 'library'); + await utils.scan(admin.accessToken, library.id, true); const { assets } = await utils.searchAssets(admin.accessToken, { libraryId: library.id }); @@ -726,7 +653,7 @@ describe('/libraries', () => { cpSync(`${testAssetDir}/metadata/xmp/dates/2000.xmp`, `${testAssetDir}/temp/xmp/glarus.xmp`); cpSync(`${testAssetDir}/formats/raw/Nikon/D80/glarus.nef`, `${testAssetDir}/temp/xmp/glarus.nef`); - await scan(admin.accessToken, library.id); + await utils.scan(admin.accessToken, library.id); await utils.waitForQueueFinish(admin.accessToken, 'library'); await utils.waitForQueueFinish(admin.accessToken, 'sidecar'); @@ -753,7 +680,7 @@ describe('/libraries', () => { cpSync(`${testAssetDir}/metadata/xmp/dates/2000.xmp`, `${testAssetDir}/temp/xmp/glarus.nef.xmp`); cpSync(`${testAssetDir}/formats/raw/Nikon/D80/glarus.nef`, `${testAssetDir}/temp/xmp/glarus.nef`); - await scan(admin.accessToken, library.id); + await utils.scan(admin.accessToken, library.id); await utils.waitForQueueFinish(admin.accessToken, 'library'); await utils.waitForQueueFinish(admin.accessToken, 'sidecar'); await utils.waitForQueueFinish(admin.accessToken, 'metadataExtraction'); @@ -780,7 +707,7 @@ describe('/libraries', () => { cpSync(`${testAssetDir}/metadata/xmp/dates/2010.xmp`, `${testAssetDir}/temp/xmp/glarus.xmp`); cpSync(`${testAssetDir}/formats/raw/Nikon/D80/glarus.nef`, `${testAssetDir}/temp/xmp/glarus.nef`); - await scan(admin.accessToken, library.id); + await utils.scan(admin.accessToken, library.id); await utils.waitForQueueFinish(admin.accessToken, 'library'); await utils.waitForQueueFinish(admin.accessToken, 'sidecar'); await utils.waitForQueueFinish(admin.accessToken, 'metadataExtraction'); @@ -807,7 +734,7 @@ describe('/libraries', () => { cpSync(`${testAssetDir}/formats/raw/Nikon/D80/glarus.nef`, `${testAssetDir}/temp/xmp/glarus.nef`); await utimes(`${testAssetDir}/temp/xmp/glarus.nef`, 447_775_200_000); - await scan(admin.accessToken, library.id); + await utils.scan(admin.accessToken, library.id); await utils.waitForQueueFinish(admin.accessToken, 'library'); await utils.waitForQueueFinish(admin.accessToken, 'sidecar'); await utils.waitForQueueFinish(admin.accessToken, 'metadataExtraction'); @@ -816,7 +743,7 @@ describe('/libraries', () => { unlinkSync(`${testAssetDir}/temp/xmp/glarus.xmp`); await utimes(`${testAssetDir}/temp/xmp/glarus.nef`, 447_775_200_001); - await scan(admin.accessToken, library.id); + await utils.scan(admin.accessToken, library.id); await utils.waitForQueueFinish(admin.accessToken, 'library'); await utils.waitForQueueFinish(admin.accessToken, 'sidecar'); await utils.waitForQueueFinish(admin.accessToken, 'metadataExtraction'); @@ -842,7 +769,7 @@ describe('/libraries', () => { cpSync(`${testAssetDir}/formats/raw/Nikon/D80/glarus.nef`, `${testAssetDir}/temp/xmp/glarus.nef`); await utimes(`${testAssetDir}/temp/xmp/glarus.nef`, 447_775_200_000); - await scan(admin.accessToken, library.id); + await utils.scan(admin.accessToken, library.id); await utils.waitForQueueFinish(admin.accessToken, 'library'); await utils.waitForQueueFinish(admin.accessToken, 'sidecar'); await utils.waitForQueueFinish(admin.accessToken, 'metadataExtraction'); @@ -850,7 +777,7 @@ describe('/libraries', () => { cpSync(`${testAssetDir}/metadata/xmp/dates/2000.xmp`, `${testAssetDir}/temp/xmp/glarus.xmp`); await utimes(`${testAssetDir}/temp/xmp/glarus.nef`, 447_775_200_001); - await scan(admin.accessToken, library.id); + await utils.scan(admin.accessToken, library.id); await utils.waitForQueueFinish(admin.accessToken, 'library'); await utils.waitForQueueFinish(admin.accessToken, 'sidecar'); await utils.waitForQueueFinish(admin.accessToken, 'metadataExtraction'); @@ -876,7 +803,7 @@ describe('/libraries', () => { cpSync(`${testAssetDir}/formats/raw/Nikon/D80/glarus.nef`, `${testAssetDir}/temp/xmp/glarus.nef`); await utimes(`${testAssetDir}/temp/xmp/glarus.nef`, 447_775_200_000); - await scan(admin.accessToken, library.id); + await utils.scan(admin.accessToken, library.id); await utils.waitForQueueFinish(admin.accessToken, 'library'); await utils.waitForQueueFinish(admin.accessToken, 'sidecar'); await utils.waitForQueueFinish(admin.accessToken, 'metadataExtraction'); @@ -884,7 +811,7 @@ describe('/libraries', () => { cpSync(`${testAssetDir}/metadata/xmp/dates/2000.xmp`, `${testAssetDir}/temp/xmp/glarus.nef.xmp`); await utimes(`${testAssetDir}/temp/xmp/glarus.nef`, 447_775_200_001); - await scan(admin.accessToken, library.id); + await utils.scan(admin.accessToken, library.id); await utils.waitForQueueFinish(admin.accessToken, 'library'); await utils.waitForQueueFinish(admin.accessToken, 'sidecar'); await utils.waitForQueueFinish(admin.accessToken, 'metadataExtraction'); @@ -911,7 +838,7 @@ describe('/libraries', () => { cpSync(`${testAssetDir}/formats/raw/Nikon/D80/glarus.nef`, `${testAssetDir}/temp/xmp/glarus.nef`); await utimes(`${testAssetDir}/temp/xmp/glarus.nef`, 447_775_200_000); - await scan(admin.accessToken, library.id); + await utils.scan(admin.accessToken, library.id); await utils.waitForQueueFinish(admin.accessToken, 'library'); await utils.waitForQueueFinish(admin.accessToken, 'sidecar'); await utils.waitForQueueFinish(admin.accessToken, 'metadataExtraction'); @@ -920,7 +847,7 @@ describe('/libraries', () => { unlinkSync(`${testAssetDir}/temp/xmp/glarus.nef.xmp`); await utimes(`${testAssetDir}/temp/xmp/glarus.nef`, 447_775_200_001); - await scan(admin.accessToken, library.id); + await utils.scan(admin.accessToken, library.id); await utils.waitForQueueFinish(admin.accessToken, 'library'); await utils.waitForQueueFinish(admin.accessToken, 'sidecar'); await utils.waitForQueueFinish(admin.accessToken, 'metadataExtraction'); @@ -947,7 +874,7 @@ describe('/libraries', () => { cpSync(`${testAssetDir}/formats/raw/Nikon/D80/glarus.nef`, `${testAssetDir}/temp/xmp/glarus.nef`); await utimes(`${testAssetDir}/temp/xmp/glarus.nef`, 447_775_200_000); - await scan(admin.accessToken, library.id); + await utils.scan(admin.accessToken, library.id); await utils.waitForQueueFinish(admin.accessToken, 'library'); await utils.waitForQueueFinish(admin.accessToken, 'sidecar'); await utils.waitForQueueFinish(admin.accessToken, 'metadataExtraction'); @@ -955,7 +882,7 @@ describe('/libraries', () => { unlinkSync(`${testAssetDir}/temp/xmp/glarus.nef.xmp`); await utimes(`${testAssetDir}/temp/xmp/glarus.nef`, 447_775_200_001); - await scan(admin.accessToken, library.id); + await utils.scan(admin.accessToken, library.id); await utils.waitForQueueFinish(admin.accessToken, 'library'); await utils.waitForQueueFinish(admin.accessToken, 'sidecar'); await utils.waitForQueueFinish(admin.accessToken, 'metadataExtraction'); @@ -982,7 +909,7 @@ describe('/libraries', () => { cpSync(`${testAssetDir}/formats/raw/Nikon/D80/glarus.nef`, `${testAssetDir}/temp/xmp/glarus.nef`); await utimes(`${testAssetDir}/temp/xmp/glarus.nef`, 447_775_200_000); - await scan(admin.accessToken, library.id); + await utils.scan(admin.accessToken, library.id); await utils.waitForQueueFinish(admin.accessToken, 'library'); await utils.waitForQueueFinish(admin.accessToken, 'sidecar'); await utils.waitForQueueFinish(admin.accessToken, 'metadataExtraction'); @@ -990,7 +917,7 @@ describe('/libraries', () => { unlinkSync(`${testAssetDir}/temp/xmp/glarus.xmp`); await utimes(`${testAssetDir}/temp/xmp/glarus.nef`, 447_775_200_001); - await scan(admin.accessToken, library.id); + await utils.scan(admin.accessToken, library.id); await utils.waitForQueueFinish(admin.accessToken, 'library'); await utils.waitForQueueFinish(admin.accessToken, 'sidecar'); await utils.waitForQueueFinish(admin.accessToken, 'metadataExtraction'); @@ -1016,22 +943,14 @@ describe('/libraries', () => { importPaths: [`${testAssetDirInternal}/temp/offline`], }); - await scan(admin.accessToken, library.id); + await utils.scan(admin.accessToken, library.id); await utils.waitForQueueFinish(admin.accessToken, 'library'); const { assets } = await utils.searchAssets(admin.accessToken, { libraryId: library.id }); utils.renameImageFile(`${testAssetDir}/temp/offline/offline.png`, `${testAssetDir}/temp/offline.png`); - { - const { status } = await request(app) - .post(`/libraries/${library.id}/scan`) - .set('Authorization', `Bearer ${admin.accessToken}`) - .send(); - expect(status).toBe(204); - } - - await utils.waitForQueueFinish(admin.accessToken, 'library'); + await utils.scan(admin.accessToken, library.id, true); const offlineAsset = await utils.getAssetInfo(admin.accessToken, assets.items[0].id); expect(offlineAsset.isTrashed).toBe(true); @@ -1045,15 +964,7 @@ describe('/libraries', () => { utils.renameImageFile(`${testAssetDir}/temp/offline.png`, `${testAssetDir}/temp/offline/offline.png`); - { - const { status } = await request(app) - .post(`/libraries/${library.id}/scan`) - .set('Authorization', `Bearer ${admin.accessToken}`) - .send(); - expect(status).toBe(204); - } - - await utils.waitForQueueFinish(admin.accessToken, 'library'); + await utils.scan(admin.accessToken, library.id, true); const backOnlineAsset = await utils.getAssetInfo(admin.accessToken, assets.items[0].id); @@ -1075,22 +986,14 @@ describe('/libraries', () => { importPaths: [`${testAssetDirInternal}/temp/offline`], }); - await scan(admin.accessToken, library.id); + await utils.scan(admin.accessToken, library.id); await utils.waitForQueueFinish(admin.accessToken, 'library'); const { assets } = await utils.searchAssets(admin.accessToken, { libraryId: library.id }); utils.renameImageFile(`${testAssetDir}/temp/offline/offline.png`, `${testAssetDir}/temp/offline.png`); - { - const { status } = await request(app) - .post(`/libraries/${library.id}/scan`) - .set('Authorization', `Bearer ${admin.accessToken}`) - .send(); - expect(status).toBe(204); - } - - await utils.waitForQueueFinish(admin.accessToken, 'library'); + await utils.scan(admin.accessToken, library.id, true); { const { assets } = await utils.searchAssets(admin.accessToken, { libraryId: library.id, withDeleted: true }); @@ -1111,15 +1014,7 @@ describe('/libraries', () => { importPaths: [`${testAssetDirInternal}/temp/another-path`], }); - { - const { status } = await request(app) - .post(`/libraries/${library.id}/scan`) - .set('Authorization', `Bearer ${admin.accessToken}`) - .send(); - expect(status).toBe(204); - } - - await utils.waitForQueueFinish(admin.accessToken, 'library'); + await utils.scan(admin.accessToken, library.id, true); const stillOfflineAsset = await utils.getAssetInfo(admin.accessToken, assets.items[0].id); @@ -1143,22 +1038,14 @@ describe('/libraries', () => { importPaths: [`${testAssetDirInternal}/temp/offline`], }); - await scan(admin.accessToken, library.id); + await utils.scan(admin.accessToken, library.id); await utils.waitForQueueFinish(admin.accessToken, 'library'); const { assets } = await utils.searchAssets(admin.accessToken, { libraryId: library.id }); utils.renameImageFile(`${testAssetDir}/temp/offline/offline.png`, `${testAssetDir}/temp/offline.png`); - { - const { status } = await request(app) - .post(`/libraries/${library.id}/scan`) - .set('Authorization', `Bearer ${admin.accessToken}`) - .send(); - expect(status).toBe(204); - } - - await utils.waitForQueueFinish(admin.accessToken, 'library'); + await utils.scan(admin.accessToken, library.id, true); { const { assets } = await utils.searchAssets(admin.accessToken, { libraryId: library.id, withDeleted: true }); @@ -1175,15 +1062,7 @@ describe('/libraries', () => { await utils.updateLibrary(admin.accessToken, library.id, { exclusionPatterns: ['**/offline/**'] }); - { - const { status } = await request(app) - .post(`/libraries/${library.id}/scan`) - .set('Authorization', `Bearer ${admin.accessToken}`) - .send(); - expect(status).toBe(204); - } - - await utils.waitForQueueFinish(admin.accessToken, 'library'); + await utils.scan(admin.accessToken, library.id, true); const stillOfflineAsset = await utils.getAssetInfo(admin.accessToken, assets.items[0].id); @@ -1303,7 +1182,7 @@ describe('/libraries', () => { importPaths: [`${testAssetDirInternal}/temp`], }); - await scan(admin.accessToken, library.id); + await utils.scan(admin.accessToken, library.id); await utils.waitForQueueFinish(admin.accessToken, 'library'); const { status, body } = await request(app) diff --git a/e2e/src/utils.ts b/e2e/src/utils.ts index d303b71eaa..e55fe720c1 100644 --- a/e2e/src/utils.ts +++ b/e2e/src/utils.ts @@ -30,6 +30,7 @@ import { getAssetInfo, getConfigDefaults, login, + scanLibrary, searchAssets, sendJobCommand, setBaseUrl, @@ -553,6 +554,16 @@ export const utils = { await immichCli(['login', app, `${key.secret}`]); return key.secret; }, + + scan: async (accessToken: string, id: string, wait = false) => { + await scanLibrary({ id }, { headers: asBearerAuth(accessToken) }); + + if (wait) { + await utils.waitForQueueFinish(accessToken, 'library'); + await utils.waitForQueueFinish(accessToken, 'sidecar'); + await utils.waitForQueueFinish(accessToken, 'metadataExtraction'); + } + }, }; utils.initSdk();