diff --git a/apps/shared/src/events/events.ts b/apps/shared/src/events/events.ts index ee5eddae7c27e7832fa2559a4ee58d38833e4603..3702b4b5ae86521d04b031346eefbb8bfa2e165b 100644 --- a/apps/shared/src/events/events.ts +++ b/apps/shared/src/events/events.ts @@ -25,3 +25,7 @@ export class EventInfoPublicDid extends BaseEvent<{ export class EventDidcommConnectionsGetAll extends BaseEvent<{ connections: Array<ConnectionRecord>; }> {} + +export class EventDidcommConnectionsGetById extends BaseEvent<{ + connection: ConnectionRecord | null; +}> {} diff --git a/apps/ssi-abstraction/src/agent/__tests__/agent.controller.spec.ts b/apps/ssi-abstraction/src/agent/__tests__/agent.controller.spec.ts index 6487fe71335d5f22310d79eea81eca3270d13c95..be3157d5f61eb7948a84f0dc32e38b7296052008 100644 --- a/apps/ssi-abstraction/src/agent/__tests__/agent.controller.spec.ts +++ b/apps/ssi-abstraction/src/agent/__tests__/agent.controller.spec.ts @@ -11,7 +11,7 @@ describe('AgentController', () => { beforeEach(async () => { const moduleRef = await Test.createTestingModule({ - imports: [mockConfigModule(3002)], + imports: [mockConfigModule()], controllers: [AgentController], providers: [AgentService], }).compile(); diff --git a/apps/ssi-abstraction/src/agent/connections/__tests__/connections.controller.spec.ts b/apps/ssi-abstraction/src/agent/connections/__tests__/connections.controller.spec.ts index 690d3f7b7faa38c78f44e23b7b005a11231e33ce..da7bf4384212a590059f4c62e33b345ecb4a2b61 100644 --- a/apps/ssi-abstraction/src/agent/connections/__tests__/connections.controller.spec.ts +++ b/apps/ssi-abstraction/src/agent/connections/__tests__/connections.controller.spec.ts @@ -13,7 +13,7 @@ describe('ConnectionsController', () => { beforeEach(async () => { const moduleRef = await Test.createTestingModule({ - imports: [mockConfigModule(3003), AgentModule], + imports: [mockConfigModule(), AgentModule], controllers: [ConnectionsController], providers: [ConnectionsService], }).compile(); @@ -34,4 +34,19 @@ describe('ConnectionsController', () => { expect(connectionsEvent.data).toStrictEqual({ connections: result }); }); }); + + describe('get by id', () => { + it('should get a connection record by id', async () => { + const result: ConnectionRecord | null = null; + jest + .spyOn(connectionsService, 'getById') + .mockImplementation(() => Promise.resolve(result)); + + const connectionsEvent = await connectionsController.getById({ + id: 'id', + }); + + expect(connectionsEvent.data).toStrictEqual({ connection: result }); + }); + }); }); diff --git a/apps/ssi-abstraction/src/agent/connections/connections.controller.ts b/apps/ssi-abstraction/src/agent/connections/connections.controller.ts index f9637e38d1b750477dd8ff5f984904bb490323c8..fa034d562aaca7e42f7ffe456d1676a7c14ef526 100644 --- a/apps/ssi-abstraction/src/agent/connections/connections.controller.ts +++ b/apps/ssi-abstraction/src/agent/connections/connections.controller.ts @@ -1,6 +1,9 @@ import { Controller } from '@nestjs/common'; import { MessagePattern } from '@nestjs/microservices'; -import { EventDidcommConnectionsGetAll } from '@ocm/shared'; +import { + EventDidcommConnectionsGetById, + EventDidcommConnectionsGetAll, +} from '@ocm/shared'; import { ConnectionsService } from './connections.service.js'; @@ -14,4 +17,15 @@ export class ConnectionsController { connections: await this.connectionsService.getAll(), }); } + + @MessagePattern('didcomm.connections.getById') + public async getById({ + id, + }: { + id: string; + }): Promise<EventDidcommConnectionsGetById> { + return new EventDidcommConnectionsGetById({ + connection: await this.connectionsService.getById(id), + }); + } } diff --git a/apps/ssi-abstraction/src/agent/connections/connections.service.ts b/apps/ssi-abstraction/src/agent/connections/connections.service.ts index 5b8c7e8cae7f321b456055b21fd3ac0ced877bc8..fe3123f4d11dad728a9ac06137282134d5f461c4 100644 --- a/apps/ssi-abstraction/src/agent/connections/connections.service.ts +++ b/apps/ssi-abstraction/src/agent/connections/connections.service.ts @@ -16,4 +16,8 @@ export class ConnectionsService { public async getAll(): Promise<Array<ConnectionRecord>> { return await this.agent.connections.getAll(); } + + public async getById(id: string): Promise<ConnectionRecord | null> { + return await this.agent.connections.findById(id); + } } diff --git a/apps/ssi-abstraction/test/connections.e2e-spec.ts b/apps/ssi-abstraction/test/connections.e2e-spec.ts index a2b5a523c34e467efd953404e57ac64eaa940228..7c53e1a3ca7b8d3691bfe3a32f1857192c16372f 100644 --- a/apps/ssi-abstraction/test/connections.e2e-spec.ts +++ b/apps/ssi-abstraction/test/connections.e2e-spec.ts @@ -1,6 +1,9 @@ import type { INestApplication } from '@nestjs/common'; import type { ClientProxy } from '@nestjs/microservices'; -import type { EventDidcommConnectionsGetAll } from '@ocm/shared'; +import type { + EventDidcommConnectionsGetById, + EventDidcommConnectionsGetAll, +} from '@ocm/shared'; import { ClientsModule, Transport } from '@nestjs/microservices'; import { Test } from '@nestjs/testing'; @@ -45,6 +48,15 @@ describe('Connections', () => { expect(response.data).toMatchObject({ connections: [] }); }); + it('didcomm.connections.getById', async () => { + const response$: Observable<EventDidcommConnectionsGetById> = client.send( + 'didcomm.connections.getById', + { id: 'some-id' }, + ); + const response = await firstValueFrom(response$); + expect(response.data).toMatchObject({ connection: null }); + }); + afterAll(async () => { await app.close(); client.close();