UNPKG

@complycube/react-native

Version:

ComplyCube's React Native Mobile SDK library for Identity Verification, KYC, and AML

167 lines (151 loc) 5.07 kB
import ComplyCubeRN from './ComplyCubeSDK'; import countryCodes from './countryCodes'; import React from 'react'; // jest.useFakeTimers(); const testCase = { clientID: '6363c8cc808c610008278c30', clientToken: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJwYXlsb2FkIjoiWm1Rd01tTXhNekl3WldWbU9XSTFOamszWVdOaU1XTXdZV0ZsTVdVek1UVm1ORFF3TldJeE5EVXhPV0U1TkRBM1pEWXdZVGcxT1dRd016RmlZakUwTVRkak56WTBabVUxTVRaa05tRXpaVFF3TUdFM09EWTBZalEyWmpJMk4yWm1aR0k0TW1aa04yWXlOVEk0WW1SbE1XTmhOMkppWmpZeE1tSXdZemhtWTJGaVlqQTNPR1JpTXpGaFpEQmlOREF6TVRNNU16WmxNREF3T0RVM1pXUTVaamxtWkRNM056ZGxaRFkyTUdKalpqSTVaR1kzTlRNd09UY3pOVGRrWm1OaVlqaGxaRFUyWWpSaFl6YzVaalk1TW1VM1ltSTRZelZsTlRBMk5qRXpaalZsTjJWaU1qTTNaVEl3WldRelpXUTVNalpsTldGaFpXWmhZamt5T1RJek5RPT0iLCJ1cmxzIjp7ImFwaSI6Imh0dHBzOi8vYXBpLmNvbXBseWN1YmUuY29tIiwic3luYyI6IndzczovL3hkcy5jb21wbHljdWJlLmNvbSIsImNyb3NzRGV2aWNlIjoiaHR0cHM6Ly94ZC5jb21wbHljdWJlLmNvbSJ9LCJvcHRpb25zIjp7ImhpZGVDb21wbHlDdWJlTG9nbyI6ZmFsc2UsImVuYWJsZUN1c3RvbUxvZ28iOnRydWUsImVuYWJsZVRleHRCcmFuZCI6dHJ1ZSwiZW5hYmxlQ3VzdG9tQ2FsbGJhY2tzIjp0cnVlfSwiaWF0IjoxNjY3NDgzODUzLCJleHAiOjE2Njc0ODc0NTN9.8qnAcJ_t3-_6-JKIzj3q56TE8lJuQOReNBTAYfAvkss', handlers: { onCancel: (e) => { console.log('onCancel', e); }, }, stages: [ { name: 'intro', heading: 'Hello world', message: 'Oups I did it again', }, { name: 'documentCapture', documentTypes: { passport: true, driving_license: ['GB', 'FR'], }, }, 'faceCapture', ], scheme: { primaryButtonBgColor: '#238656', }, }; jest.mock( '../node_modules/react-native/Libraries/BatchedBridge/NativeModules', () => { return { ComplyCubeRNSDK: { setSettings: jest.fn(), mount: jest.fn(), }, }; } ); jest.mock('../node_modules/react-native/Libraries/Utilities/Platform', () => { return { OS: 'ios', }; }); describe('ComplyCubeSDK', () => { // beforeEach(() => { // NativeModules.ComplyCubeRNSDK = { test: jest.fn() } // }); test('SDK Works', () => { const sdk = new ComplyCubeRN(); expect(sdk.complycube).toBeDefined(); }); it('should be able to start the SDK', () => { const sdk = new ComplyCubeRN(); sdk.setSettings(testCase); // sdk.mount(); expect(sdk.errors.length).toBe(0); // expect(sdk.complycube.mount).toHaveBeenCalled(); }); it('Detects misisng clientID', () => { const sdk = new ComplyCubeRN(); sdk.setSettings({ ...testCase, clientID: undefined, }); expect(sdk.errors.length).toBe(1); }); it('Detects misisng Client token', () => { const sdk = new ComplyCubeRN(); sdk.setSettings({ ...testCase, clientToken: undefined, }); expect(sdk.errors.length).toBe(1); }); // it('Detects error in stage name', () => { // const sdk = new ComplyCubeRN(); // sdk.setSettings({ // ...testCase, // stages: [...testCase.stages, 'invalidStage'], // }); // expect(sdk.errors.length).toBe(1); // }); // it('Detects error in stage name inside an object', () => { // const sdk = new ComplyCubeRN(); // sdk.setSettings({ // ...testCase, // stages: [...testCase.stages, { name: 'invalidStage' }], // }); // expect(sdk.errors.length).toBe(1); // }); it('Detects error schemas', () => { const sdk = new ComplyCubeRN(); sdk.setSettings({ ...testCase, lookAndFeel: { primaryButtonBgColor: 'invalidColor', }, }); expect(sdk.errors.length).toBe(1); }); it('Detects error schemes names', () => { const sdk = new ComplyCubeRN(); sdk.setSettings({ ...testCase, lookAndFeel: { primaryButtonBgColorYo: '#FFFFFF', }, }); expect(sdk.errors.length).toBe(1); }); it('Start SDK', () => { const sdk = new ComplyCubeRN(); sdk.setSettings(testCase).mount(); expect(sdk.complycube.mount).toBeCalled(); }); it('Check the country list', () => { expect(countryCodes.length).toEqual(249); }); it('Test _validateSettingsBySchema', () => { const sdk = new ComplyCubeRN(); let result = sdk.setSettings(testCase); expect(typeof result).toBe(typeof new ComplyCubeRN()); }); // Wrap handlers it('Test the callbacks loading', () => { const sdk = new ComplyCubeRN(); const myCallback = sdk._wrapHandler((param) => 'Hello World ' + param); expect(myCallback('Complycube')).resolves.toBe('Hello World Complycube'); }); // Add handlers it('Adding callback functions', () => { const sdk = new ComplyCubeRN(); sdk.addHandlers( (data) => data, (error) => error, (cancel) => cancel, (event) => event ); const success = sdk.emiter.listenerCount('ComplyCubeSuccess'); const error = sdk.emiter.listenerCount('ComplyCubeError'); const cancel = sdk.emiter.listenerCount('ComplyCubeCancel'); const event = sdk.emiter.listenerCount('ComplyCubeCustomEvent'); expect(success + 2 * error + 3 * cancel + 4 * event).toBe(10); }); }, 10000); // , 10000));