36 lines
1.2 KiB
TypeScript
36 lines
1.2 KiB
TypeScript
import { PrismaService } from '../../src/shared/prisma.service';
|
|
import { PrismaServiceAccountRepository } from '../../src/modules/identity/infrastructure/repositories/prisma-service-account.repository';
|
|
import { ServiceAccount } from '../../src/modules/identity/domain/entities/service-account.entity';
|
|
|
|
describe('PrismaServiceAccountRepository', () => {
|
|
it('maps prisma model to domain entity for findByClientId', async () => {
|
|
const fakeModel = {
|
|
id: 'id-1',
|
|
client_id: 'cid',
|
|
client_secret_hash: 'hash',
|
|
name: 'Bot',
|
|
role: 'BOT',
|
|
permissions: ['DEBT_READ'],
|
|
status: 'ACTIVE',
|
|
metadata: { hello: 'world' },
|
|
};
|
|
|
|
const mockPrisma: Partial<PrismaService> = {
|
|
serviceAccount: {
|
|
findUnique: jest.fn().mockResolvedValue(fakeModel),
|
|
} as any,
|
|
};
|
|
|
|
const repo = new PrismaServiceAccountRepository(mockPrisma as any);
|
|
|
|
const sa = await repo.findByClientId('cid');
|
|
|
|
expect(sa).not.toBeNull();
|
|
expect(sa!.clientId).toBe('cid');
|
|
expect(sa!.name).toBe('Bot');
|
|
expect(sa!.role).toBe('BOT');
|
|
expect(sa!.permissions).toEqual(fakeModel.permissions);
|
|
expect(sa!.metadata).toEqual(fakeModel.metadata);
|
|
});
|
|
});
|