mirror of
https://github.com/immich-app/immich
synced 2026-08-22 13:13:05 +00:00
44 lines
1.7 KiB
TypeScript
44 lines
1.7 KiB
TypeScript
import { Kysely } from 'kysely';
|
|
import { AccessRepository } from 'src/repositories/access.repository';
|
|
import { AssetRepository } from 'src/repositories/asset.repository';
|
|
import { EventRepository } from 'src/repositories/event.repository';
|
|
import { LoggingRepository } from 'src/repositories/logging.repository';
|
|
import { StackRepository } from 'src/repositories/stack.repository';
|
|
import { DB } from 'src/schema';
|
|
import { StackService } from 'src/services/stack.service';
|
|
import { newMediumService } from 'test/medium.factory';
|
|
import { factory } from 'test/small.factory';
|
|
import { getKyselyDB } from 'test/utils';
|
|
|
|
let defaultDatabase: Kysely<DB>;
|
|
|
|
const setup = (db?: Kysely<DB>) => {
|
|
return newMediumService(StackService, {
|
|
database: db || defaultDatabase,
|
|
real: [AccessRepository, AssetRepository, StackRepository],
|
|
mock: [EventRepository, LoggingRepository],
|
|
});
|
|
};
|
|
|
|
beforeAll(async () => {
|
|
defaultDatabase = await getKyselyDB();
|
|
});
|
|
|
|
describe(StackService.name, () => {
|
|
describe('create', () => {
|
|
it('should not stack an asset of another user', async () => {
|
|
const { sut, ctx } = setup();
|
|
const { user } = await ctx.newUser();
|
|
const { user: otherUser } = await ctx.newUser();
|
|
const { asset } = await ctx.newAsset({ ownerId: user.id });
|
|
const { asset: otherAsset } = await ctx.newAsset({ ownerId: otherUser.id });
|
|
|
|
await expect(sut.create(factory.auth({ user }), { assetIds: [asset.id, otherAsset.id] })).rejects.toThrow(
|
|
'Not found or no asset.update access',
|
|
);
|
|
await expect(
|
|
ctx.database.selectFrom('stack').selectAll().where('ownerId', '=', user.id).execute(),
|
|
).resolves.toEqual([]);
|
|
});
|
|
});
|
|
});
|