Skip to content
Snippets Groups Projects
anoncredsProofs.controller.spec.ts 2.3 KiB
Newer Older
import { ProofExchangeRecord, ProofState } from '@aries-framework/core';
import { Test } from '@nestjs/testing';

import { mockConfigModule } from '../../../config/__tests__/mockConfig.js';
import { AgentModule } from '../../agent.module.js';
import { AnonCredsProofsController } from '../anoncredsProofs.controller.js';
import { AnonCredsProofsService } from '../anoncredsProofs.service.js';

describe('AnonCredsProofsController', () => {
  let proofsController: AnonCredsProofsController;
  let proofsService: AnonCredsProofsService;

  beforeEach(async () => {
    const moduleRef = await Test.createTestingModule({
      imports: [mockConfigModule(), AgentModule],
      controllers: [AnonCredsProofsController],
      providers: [AnonCredsProofsService],
    }).compile();

    proofsService = moduleRef.get(AnonCredsProofsService);
    proofsController = moduleRef.get(AnonCredsProofsController);
  });

  it('get all', async () => {
    const result: Array<ProofExchangeRecord> = [];
    jest.spyOn(proofsService, 'getAll').mockResolvedValue(result);

    const event = await proofsController.getAll({
      tenantId: 'some-id',
    });

    expect(event.data).toStrictEqual(result);
  });

  it('get by id', async () => {
    const result: ProofExchangeRecord | null = null;
    jest.spyOn(proofsService, 'getById').mockResolvedValue(result);

    const event = await proofsController.getById({
      tenantId: 'some-id',
      proofRecordId: 'some-id',
    });

    expect(event.data).toStrictEqual(result);
  });

  it('request', async () => {
    const result = new ProofExchangeRecord({
      state: ProofState.Done,
      threadId: 'some-id',
      protocolVersion: 'v2',
    });
    jest.spyOn(proofsService, 'request').mockResolvedValue(result);

    const event = await proofsController.request({
      tenantId: 'some-id',
      connectionId: 'some-id',
      name: 'My New Proof Request',
      requestedAttributes: {
        identity: {
          names: ['name'],
          restrictions: [{ issuer_id: 'did:web:government.org' }],
        },
      },
      requestedPredicates: {
        'age > 18': {
          name: 'age',
          restrictions: [{ issuer_id: 'did:web:government.org' }],
          predicateType: '>',
          predicateValue: 18,
        },
      },
    });

    expect(event.data).toStrictEqual(result);
  });
});