Skip to content

Commit

Permalink
feat: add testing for data process
Browse files Browse the repository at this point in the history
  • Loading branch information
lotharking committed Oct 15, 2024
1 parent 0460034 commit 2c10301
Showing 1 changed file with 92 additions and 1 deletion.
93 changes: 92 additions & 1 deletion packages/mrtd/tests/DidCommMrtdService.test.ts
Original file line number Diff line number Diff line change
@@ -1,20 +1,34 @@
import type { Agent } from '@credo-ts/core'

import { JsonTransformer } from '@credo-ts/core'
import {
AgentContext,
ConnectionRecord,
DidExchangeRole,
DidExchangeState,
EventEmitter,
InboundMessageContext,
JsonTransformer,
} from '@credo-ts/core'

import { MrtdEventTypes } from '../build'

Check failure on line 13 in packages/mrtd/tests/DidCommMrtdService.test.ts

View workflow job for this annotation

GitHub Actions / Validate

Unable to resolve path to module '../build'
import { DidCommMrtdService } from '../src/DidCommMrtdService'
import { EMrtdDataMessage } from '../src/messages'

import { setupAgent } from './utils/agent'

const passport = {}

describe('Didcomm MRTD', () => {
let agent: Agent
let didcommMrtdService: DidCommMrtdService
let agentContext: AgentContext

beforeAll(async () => {
agent = await setupAgent({
name: 'mrtd service test',
})
didcommMrtdService = agent.dependencyManager.resolve(DidCommMrtdService)
agentContext = agent.dependencyManager.resolve(AgentContext)
})

afterAll(async () => {
Expand Down Expand Up @@ -73,4 +87,81 @@ describe('Didcomm MRTD', () => {
)
})
})

describe('EMRTD Data process message', () => {
test('Should create a valid https://didcomm.org/mrtd/1.0/emrtd-data message ', async () => {
interface Payload {
connection: typeof mockConnectionRecord
dataGroups: {
raw: {
COM: string
DG1: string
DG2: string
DG11: string
SOD: string
}
parsed: {
valid: boolean
fields: {
COM?: string
DG1?: string
DG2?: string
DG11?: string
SOD?: string
}
}
}
threadId: string
}

const emrtdDataMessage = new EMrtdDataMessage({
threadId: '5678-5678-5678-5678',
dataGroups: passport,
})

const mockConnectionRecord = new ConnectionRecord({
id: 'mockConnectionId',
state: DidExchangeState.Completed,
role: DidExchangeRole.Responder,
})

const inboundMessageContext = new InboundMessageContext<EMrtdDataMessage>(emrtdDataMessage, {
agentContext: agentContext,
connection: mockConnectionRecord,
})

const eventEmitter = agentContext.dependencyManager.resolve(EventEmitter)
const eventPayload = new Promise((resolve) => {
eventEmitter.on(MrtdEventTypes.EMrtdDataReceived, (event) => {
resolve(event.payload)
})
})

await didcommMrtdService.processEMrtdData(inboundMessageContext)

const payload = (await eventPayload) as Payload
const fieldsValidation = payload.dataGroups.parsed.fields

const expectedFields = {
COM: expect.any(String),
DG2: expect.any(String),
DG11: expect.any(String),
SOD: expect.any(String),
}

const isFieldsEmpty = fieldsValidation && Object.keys(fieldsValidation).length === 0

expect(payload).toEqual({
connection: mockConnectionRecord,
dataGroups: {
raw: isFieldsEmpty ? {} : expectedFields,
parsed: {
valid: true,
fields: isFieldsEmpty ? {} : expectedFields,
},
},
threadId: '5678-5678-5678-5678',
})
})
})
})

0 comments on commit 2c10301

Please sign in to comment.