22/* eslint-disable prefer-spread */
33
44import browserEnv from '@ikscodes/browser-env' ;
5- import { MagicIncomingWindowMessage , MagicOutgoingWindowMessage , JsonRpcRequestPayload } from '@magic-sdk/types' ;
5+ import {
6+ MagicIncomingWindowMessage ,
7+ MagicOutgoingWindowMessage ,
8+ JsonRpcRequestPayload ,
9+ RPCErrorCode ,
10+ } from '@magic-sdk/types' ;
611import _ from 'lodash' ;
712import { createViewController } from '../../../factories' ;
813import { JsonRpcResponse } from '../../../../src/core/json-rpc' ;
@@ -201,6 +206,30 @@ test('Sends payload and stores rt if response event contains rt', async () => {
201206 expect ( FAKE_STORE . rt ) . toEqual ( FAKE_RT ) ;
202207} ) ;
203208
209+ test ( 'does not wait for ready and throws error when platform is react-native' , async ( ) => {
210+ SDKEnvironment . platform = 'react-native' ;
211+ const eventWithRt = { data : { ...responseEvent ( ) . data } } ;
212+ const viewController = createViewController ( 'asdf' ) ;
213+ const { handlerSpy, onSpy } = stubViewController ( viewController , [
214+ [ MagicIncomingWindowMessage . MAGIC_HANDLE_RESPONSE , eventWithRt ] ,
215+ ] ) ;
216+ viewController . ready = new Promise ( ( ) => null ) ;
217+
218+ const payload = requestPayload ( ) ;
219+
220+ try {
221+ await viewController . post ( MagicOutgoingWindowMessage . MAGIC_HANDLE_REQUEST , payload ) ;
222+ } catch ( e ) {
223+ expect ( e ) . toEqual ( {
224+ code : RPCErrorCode . InternalError ,
225+ message : 'Connection to Magic SDK not ready. Please check your internet connection.' ,
226+ } ) ;
227+ }
228+ expect ( createJwtStub ) . not . toHaveBeenCalledWith ( ) ;
229+ expect ( onSpy . mock . calls [ 0 ] [ 0 ] ) . toEqual ( MagicIncomingWindowMessage . MAGIC_HANDLE_RESPONSE ) ;
230+ expect ( handlerSpy ) . not . toHaveBeenCalled ( ) ;
231+ } ) ;
232+
204233test ( 'does not call web crypto api if platform is not web' , async ( ) => {
205234 SDKEnvironment . platform = 'react-native' ;
206235 const eventWithRt = { data : { ...responseEvent ( ) . data } } ;
@@ -210,6 +239,9 @@ test('does not call web crypto api if platform is not web', async () => {
210239 ] ) ;
211240 const payload = requestPayload ( ) ;
212241
242+ // @ts -ignore isReady is private
243+ viewController . isReady = true ;
244+
213245 const response = await viewController . post ( MagicOutgoingWindowMessage . MAGIC_HANDLE_REQUEST , payload ) ;
214246
215247 expect ( createJwtStub ) . not . toHaveBeenCalledWith ( ) ;
0 commit comments