1
0
mirror of https://github.com/immich-app/immich.git synced 2025-08-08 23:07:06 +02:00

fix(server): Allow commas and braces in import paths (#13259)

fix commas and braces in paths
This commit is contained in:
Jonathan Jogenfors
2024-10-07 21:43:21 +02:00
committed by GitHub
parent 94d213bbb9
commit 5b00bc499f
2 changed files with 65 additions and 6 deletions

View File

@ -347,6 +347,62 @@ describe('/libraries', () => {
expect(assets.items.find((asset) => asset.originalPath.includes('directoryB'))).toBeDefined();
});
it('should scan multiple import paths with commas', async () => {
// https://github.com/immich-app/immich/issues/10699
const library = await utils.createLibrary(admin.accessToken, {
ownerId: admin.userId,
importPaths: [`${testAssetDirInternal}/temp/folder, a`, `${testAssetDirInternal}/temp/folder, b`],
});
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');
const { assets } = await utils.metadataSearch(admin.accessToken, { libraryId: library.id });
expect(assets.count).toBe(2);
expect(assets.items.find((asset) => asset.originalPath.includes('folder, a'))).toBeDefined();
expect(assets.items.find((asset) => asset.originalPath.includes('folder, b'))).toBeDefined();
utils.removeImageFile(`${testAssetDir}/temp/folder, a/assetA.png`);
utils.removeImageFile(`${testAssetDir}/temp/folder, b/assetB.png`);
});
it('should scan multiple import paths with braces', async () => {
// https://github.com/immich-app/immich/issues/10699
const library = await utils.createLibrary(admin.accessToken, {
ownerId: admin.userId,
importPaths: [`${testAssetDirInternal}/temp/folder{ a`, `${testAssetDirInternal}/temp/folder} b`],
});
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');
const { assets } = await utils.metadataSearch(admin.accessToken, { libraryId: library.id });
expect(assets.count).toBe(2);
expect(assets.items.find((asset) => asset.originalPath.includes('folder{ a'))).toBeDefined();
expect(assets.items.find((asset) => asset.originalPath.includes('folder} b'))).toBeDefined();
utils.removeImageFile(`${testAssetDir}/temp/folder{ a/assetA.png`);
utils.removeImageFile(`${testAssetDir}/temp/folder} b/assetB.png`);
});
it('should reimport a modified file', async () => {
const library = await utils.createLibrary(admin.accessToken, {
ownerId: admin.userId,