mirror of
https://github.com/selfxyz/self.git
synced 2026-01-15 01:28:18 -05:00
104 lines
3.0 KiB
TypeScript
104 lines
3.0 KiB
TypeScript
// SPDX-License-Identifier: BUSL-1.1; Copyright (c) 2025 Social Connect Labs, Inc.; Licensed under BUSL-1.1 (see LICENSE); Apache-2.0 from 2029-06-11
|
|
|
|
import type { SelfClient } from '@selfxyz/mobile-sdk-alpha';
|
|
import { useProtocolStore } from '@selfxyz/mobile-sdk-alpha/stores';
|
|
|
|
import { useProvingStore } from '@/utils/proving/provingMachine';
|
|
|
|
import { actorMock } from './actorMock';
|
|
|
|
jest.mock('xstate', () => {
|
|
const { actorMock: mockActor } = require('./actorMock');
|
|
return {
|
|
createActor: jest.fn(() => mockActor),
|
|
createMachine: jest.fn(),
|
|
assign: jest.fn(),
|
|
send: jest.fn(),
|
|
spawn: jest.fn(),
|
|
interpret: jest.fn(),
|
|
fromPromise: jest.fn(),
|
|
fromObservable: jest.fn(),
|
|
fromEventObservable: jest.fn(),
|
|
fromCallback: jest.fn(),
|
|
fromTransition: jest.fn(),
|
|
fromReducer: jest.fn(),
|
|
fromRef: jest.fn(),
|
|
};
|
|
});
|
|
|
|
jest.mock('@/utils/analytics', () => () => ({
|
|
trackEvent: jest.fn(),
|
|
}));
|
|
jest.mock('@/providers/passportDataProvider', () => ({
|
|
loadSelectedDocument: jest.fn(),
|
|
unsafe_getPrivateKey: jest.fn(),
|
|
}));
|
|
jest.mock('@/providers/authProvider', () => ({
|
|
unsafe_getPrivateKey: jest.fn(),
|
|
}));
|
|
|
|
// app/tests/utils/proving/provingMachine.startFetchingData.test.ts
|
|
|
|
jest.mock('@selfxyz/mobile-sdk-alpha', () => {
|
|
const actual = jest.requireActual('@selfxyz/mobile-sdk-alpha');
|
|
return {
|
|
__esModule: true,
|
|
...actual,
|
|
loadSelectedDocument: jest.fn().mockResolvedValue({
|
|
data: {
|
|
documentCategory: 'passport',
|
|
mock: false,
|
|
dsc_parsed: { authorityKeyIdentifier: 'key' },
|
|
},
|
|
}),
|
|
};
|
|
});
|
|
|
|
describe('startFetchingData', () => {
|
|
let mockSelfClient: SelfClient;
|
|
beforeEach(async () => {
|
|
jest.clearAllMocks();
|
|
const {
|
|
loadSelectedDocument,
|
|
} = require('@/providers/passportDataProvider');
|
|
loadSelectedDocument.mockResolvedValue({
|
|
data: {
|
|
documentCategory: 'passport',
|
|
mock: false,
|
|
dsc_parsed: { authorityKeyIdentifier: 'key' },
|
|
},
|
|
});
|
|
const { unsafe_getPrivateKey } = require('@/providers/authProvider');
|
|
unsafe_getPrivateKey.mockResolvedValue('secret');
|
|
|
|
// Create mock selfClient
|
|
mockSelfClient = {
|
|
getPrivateKey: jest.fn().mockResolvedValue('mock-secret'),
|
|
trackEvent: jest.fn(),
|
|
} as unknown as SelfClient;
|
|
|
|
useProtocolStore.setState({
|
|
passport: { fetch_all: jest.fn().mockResolvedValue(undefined) },
|
|
} as any);
|
|
await useProvingStore.getState().init(mockSelfClient, 'register');
|
|
actorMock.send.mockClear();
|
|
useProtocolStore.setState({
|
|
passport: { fetch_all: jest.fn() },
|
|
} as any);
|
|
useProvingStore.setState({
|
|
// @ts-expect-error
|
|
passportData: { documentCategory: 'passport', mock: false },
|
|
env: 'prod',
|
|
});
|
|
});
|
|
|
|
it('emits FETCH_ERROR when dsc_parsed is missing', async () => {
|
|
await useProvingStore.getState().startFetchingData(mockSelfClient);
|
|
|
|
expect(
|
|
useProtocolStore.getState().passport.fetch_all,
|
|
).not.toHaveBeenCalled();
|
|
expect(actorMock.send).toHaveBeenCalledWith({ type: 'FETCH_ERROR' });
|
|
});
|
|
});
|