@ledgerhq/device-signer-kit-ethereum 1.5.0 → 1.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/api/SignerEthBuilder.test.js +1 -1
- package/lib/cjs/api/SignerEthBuilder.test.js.map +1 -1
- package/lib/cjs/api/app-binder/SignTransactionDeviceActionTypes.js +1 -1
- package/lib/cjs/api/app-binder/SignTransactionDeviceActionTypes.js.map +2 -2
- package/lib/cjs/api/index.js +1 -1
- package/lib/cjs/api/index.js.map +3 -3
- package/lib/cjs/api/model/ClearSigningType.js +2 -0
- package/lib/cjs/api/model/ClearSigningType.js.map +7 -0
- package/lib/cjs/internal/app-binder/EthAppBinder.js +1 -1
- package/lib/cjs/internal/app-binder/EthAppBinder.js.map +3 -3
- package/lib/cjs/internal/app-binder/EthAppBinder.test.js +1 -1
- package/lib/cjs/internal/app-binder/EthAppBinder.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/command/ProvideNetworkConfigurationCommand.js +2 -0
- package/lib/cjs/internal/app-binder/command/ProvideNetworkConfigurationCommand.js.map +7 -0
- package/lib/cjs/internal/app-binder/command/ProvideNetworkConfigurationCommand.test.js +2 -0
- package/lib/cjs/internal/app-binder/command/ProvideNetworkConfigurationCommand.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/command/ProvideProxyInfoCommand.js +2 -0
- package/lib/cjs/internal/app-binder/command/ProvideProxyInfoCommand.js.map +7 -0
- package/lib/cjs/internal/app-binder/command/ProvideProxyInfoCommand.test.js +2 -0
- package/lib/cjs/internal/app-binder/command/ProvideProxyInfoCommand.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.js +1 -1
- package/lib/cjs/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.js.map +3 -3
- package/lib/cjs/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.test.js +1 -1
- package/lib/cjs/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.js +1 -1
- package/lib/cjs/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.js.map +3 -3
- package/lib/cjs/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.test.js +1 -1
- package/lib/cjs/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.test.js.map +2 -2
- package/lib/cjs/internal/app-binder/task/BuildEIP712ContextTask.test.js +1 -1
- package/lib/cjs/internal/app-binder/task/BuildEIP712ContextTask.test.js.map +2 -2
- package/lib/cjs/internal/app-binder/task/BuildSubContextTask.js +2 -0
- package/lib/cjs/internal/app-binder/task/BuildSubContextTask.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/BuildSubContextTask.test.js +2 -0
- package/lib/cjs/internal/app-binder/task/BuildSubContextTask.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/BuildTransactionContextTask.js +1 -1
- package/lib/cjs/internal/app-binder/task/BuildTransactionContextTask.js.map +3 -3
- package/lib/cjs/internal/app-binder/task/BuildTransactionContextTask.test.js +1 -1
- package/lib/cjs/internal/app-binder/task/BuildTransactionContextTask.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/task/GetWeb3CheckTask.js +1 -1
- package/lib/cjs/internal/app-binder/task/GetWeb3CheckTask.js.map +3 -3
- package/lib/cjs/internal/app-binder/task/GetWeb3CheckTask.test.js +1 -1
- package/lib/cjs/internal/app-binder/task/GetWeb3CheckTask.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/task/PreBuildContextTask.js +2 -0
- package/lib/cjs/internal/app-binder/task/PreBuildContextTask.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/ProvideEIP712ContextTask.test.js +1 -1
- package/lib/cjs/internal/app-binder/task/ProvideEIP712ContextTask.test.js.map +2 -2
- package/lib/cjs/internal/app-binder/task/ProvideTransactionContextTask.js +1 -1
- package/lib/cjs/internal/app-binder/task/ProvideTransactionContextTask.js.map +3 -3
- package/lib/cjs/internal/app-binder/task/ProvideTransactionContextTask.test.js +1 -1
- package/lib/cjs/internal/app-binder/task/ProvideTransactionContextTask.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/task/SendPayloadInChunksTask.js +1 -1
- package/lib/cjs/internal/app-binder/task/SendPayloadInChunksTask.js.map +3 -3
- package/lib/cjs/internal/app-binder/task/SendPayloadInChunksTask.test.js +1 -1
- package/lib/cjs/internal/app-binder/task/SendPayloadInChunksTask.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/task/SendSignTransactionTask.js +1 -1
- package/lib/cjs/internal/app-binder/task/SendSignTransactionTask.js.map +3 -3
- package/lib/cjs/internal/app-binder/task/SendSignTransactionTask.test.js +1 -1
- package/lib/cjs/internal/app-binder/task/SendSignTransactionTask.test.js.map +3 -3
- package/lib/cjs/internal/shared/utils/ApplicationChecker.js +1 -1
- package/lib/cjs/internal/shared/utils/ApplicationChecker.js.map +3 -3
- package/lib/cjs/internal/shared/utils/ApplicationChecker.test.js +1 -1
- package/lib/cjs/internal/shared/utils/ApplicationChecker.test.js.map +2 -2
- package/lib/cjs/internal/transaction/di/transactionModule.js +1 -1
- package/lib/cjs/internal/transaction/di/transactionModule.js.map +3 -3
- package/lib/cjs/internal/transaction/di/transactionModule.test.js +1 -1
- package/lib/cjs/internal/transaction/di/transactionModule.test.js.map +2 -2
- package/lib/cjs/internal/transaction/service/mapper/EthersTransactionMapperService.js +2 -0
- package/lib/cjs/internal/transaction/service/mapper/EthersTransactionMapperService.js.map +7 -0
- package/lib/cjs/internal/transaction/service/mapper/EthersTransactionMapperService.test.js +2 -0
- package/lib/cjs/internal/transaction/service/mapper/EthersTransactionMapperService.test.js.map +7 -0
- package/lib/cjs/internal/transaction/service/mapper/TransactionMapperService.js +1 -1
- package/lib/cjs/internal/transaction/service/mapper/TransactionMapperService.js.map +3 -3
- package/lib/cjs/internal/transaction/service/parser/TransactionParserService.js +1 -1
- package/lib/cjs/internal/transaction/service/parser/TransactionParserService.js.map +3 -3
- package/lib/cjs/internal/transaction/service/parser/TransactionParserService.test.js +1 -1
- package/lib/cjs/internal/transaction/service/parser/TransactionParserService.test.js.map +3 -3
- package/lib/cjs/package.json +3 -3
- package/lib/esm/api/SignerEthBuilder.test.js +1 -1
- package/lib/esm/api/SignerEthBuilder.test.js.map +1 -1
- package/lib/esm/api/app-binder/SignTransactionDeviceActionTypes.js +1 -1
- package/lib/esm/api/app-binder/SignTransactionDeviceActionTypes.js.map +2 -2
- package/lib/esm/api/index.js +1 -1
- package/lib/esm/api/index.js.map +2 -2
- package/lib/esm/api/model/ClearSigningType.js +2 -0
- package/lib/esm/api/model/ClearSigningType.js.map +7 -0
- package/lib/esm/internal/app-binder/EthAppBinder.js +1 -1
- package/lib/esm/internal/app-binder/EthAppBinder.js.map +3 -3
- package/lib/esm/internal/app-binder/EthAppBinder.test.js +1 -1
- package/lib/esm/internal/app-binder/EthAppBinder.test.js.map +3 -3
- package/lib/esm/internal/app-binder/command/ProvideNetworkConfigurationCommand.js +2 -0
- package/lib/esm/internal/app-binder/command/ProvideNetworkConfigurationCommand.js.map +7 -0
- package/lib/esm/internal/app-binder/command/ProvideNetworkConfigurationCommand.test.js +2 -0
- package/lib/esm/internal/app-binder/command/ProvideNetworkConfigurationCommand.test.js.map +7 -0
- package/lib/esm/internal/app-binder/command/ProvideProxyInfoCommand.js +2 -0
- package/lib/esm/internal/app-binder/command/ProvideProxyInfoCommand.js.map +7 -0
- package/lib/esm/internal/app-binder/command/ProvideProxyInfoCommand.test.js +2 -0
- package/lib/esm/internal/app-binder/command/ProvideProxyInfoCommand.test.js.map +7 -0
- package/lib/esm/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.js +1 -1
- package/lib/esm/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.js.map +3 -3
- package/lib/esm/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.test.js +1 -1
- package/lib/esm/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.test.js.map +3 -3
- package/lib/esm/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.js +1 -1
- package/lib/esm/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.js.map +3 -3
- package/lib/esm/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.test.js +1 -1
- package/lib/esm/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.test.js.map +2 -2
- package/lib/esm/internal/app-binder/task/BuildEIP712ContextTask.test.js +1 -1
- package/lib/esm/internal/app-binder/task/BuildEIP712ContextTask.test.js.map +2 -2
- package/lib/esm/internal/app-binder/task/BuildSubContextTask.js +2 -0
- package/lib/esm/internal/app-binder/task/BuildSubContextTask.js.map +7 -0
- package/lib/esm/internal/app-binder/task/BuildSubContextTask.test.js +2 -0
- package/lib/esm/internal/app-binder/task/BuildSubContextTask.test.js.map +7 -0
- package/lib/esm/internal/app-binder/task/BuildTransactionContextTask.js +1 -1
- package/lib/esm/internal/app-binder/task/BuildTransactionContextTask.js.map +3 -3
- package/lib/esm/internal/app-binder/task/BuildTransactionContextTask.test.js +1 -1
- package/lib/esm/internal/app-binder/task/BuildTransactionContextTask.test.js.map +3 -3
- package/lib/esm/internal/app-binder/task/GetWeb3CheckTask.js +1 -1
- package/lib/esm/internal/app-binder/task/GetWeb3CheckTask.js.map +3 -3
- package/lib/esm/internal/app-binder/task/GetWeb3CheckTask.test.js +1 -1
- package/lib/esm/internal/app-binder/task/GetWeb3CheckTask.test.js.map +3 -3
- package/lib/esm/internal/app-binder/task/PreBuildContextTask.js +2 -0
- package/lib/esm/internal/app-binder/task/PreBuildContextTask.js.map +7 -0
- package/lib/esm/internal/app-binder/task/ProvideEIP712ContextTask.test.js +1 -1
- package/lib/esm/internal/app-binder/task/ProvideEIP712ContextTask.test.js.map +2 -2
- package/lib/esm/internal/app-binder/task/ProvideTransactionContextTask.js +1 -1
- package/lib/esm/internal/app-binder/task/ProvideTransactionContextTask.js.map +3 -3
- package/lib/esm/internal/app-binder/task/ProvideTransactionContextTask.test.js +1 -1
- package/lib/esm/internal/app-binder/task/ProvideTransactionContextTask.test.js.map +3 -3
- package/lib/esm/internal/app-binder/task/SendPayloadInChunksTask.js +1 -1
- package/lib/esm/internal/app-binder/task/SendPayloadInChunksTask.js.map +3 -3
- package/lib/esm/internal/app-binder/task/SendPayloadInChunksTask.test.js +1 -1
- package/lib/esm/internal/app-binder/task/SendPayloadInChunksTask.test.js.map +3 -3
- package/lib/esm/internal/app-binder/task/SendSignTransactionTask.js +1 -1
- package/lib/esm/internal/app-binder/task/SendSignTransactionTask.js.map +3 -3
- package/lib/esm/internal/app-binder/task/SendSignTransactionTask.test.js +1 -1
- package/lib/esm/internal/app-binder/task/SendSignTransactionTask.test.js.map +3 -3
- package/lib/esm/internal/shared/utils/ApplicationChecker.js +1 -1
- package/lib/esm/internal/shared/utils/ApplicationChecker.js.map +3 -3
- package/lib/esm/internal/shared/utils/ApplicationChecker.test.js +1 -1
- package/lib/esm/internal/shared/utils/ApplicationChecker.test.js.map +2 -2
- package/lib/esm/internal/transaction/di/transactionModule.js +1 -1
- package/lib/esm/internal/transaction/di/transactionModule.js.map +3 -3
- package/lib/esm/internal/transaction/di/transactionModule.test.js +1 -1
- package/lib/esm/internal/transaction/di/transactionModule.test.js.map +2 -2
- package/lib/esm/internal/transaction/service/mapper/EthersTransactionMapperService.js +2 -0
- package/lib/esm/internal/transaction/service/mapper/EthersTransactionMapperService.js.map +7 -0
- package/lib/esm/internal/transaction/service/mapper/EthersTransactionMapperService.test.js +2 -0
- package/lib/esm/internal/transaction/service/mapper/EthersTransactionMapperService.test.js.map +7 -0
- package/lib/esm/internal/transaction/service/mapper/TransactionMapperService.js +0 -1
- package/lib/esm/internal/transaction/service/mapper/TransactionMapperService.js.map +4 -4
- package/lib/esm/internal/transaction/service/parser/TransactionParserService.js +1 -1
- package/lib/esm/internal/transaction/service/parser/TransactionParserService.js.map +3 -3
- package/lib/esm/internal/transaction/service/parser/TransactionParserService.test.js +1 -1
- package/lib/esm/internal/transaction/service/parser/TransactionParserService.test.js.map +3 -3
- package/lib/esm/package.json +3 -3
- package/lib/types/api/app-binder/SignTransactionDeviceActionTypes.d.ts +8 -9
- package/lib/types/api/app-binder/SignTransactionDeviceActionTypes.d.ts.map +1 -1
- package/lib/types/api/index.d.ts +5 -9
- package/lib/types/api/index.d.ts.map +1 -1
- package/lib/types/api/model/ClearSigningType.d.ts +5 -0
- package/lib/types/api/model/ClearSigningType.d.ts.map +1 -0
- package/lib/types/internal/app-binder/EthAppBinder.d.ts +1 -1
- package/lib/types/internal/app-binder/EthAppBinder.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/ProvideNetworkConfigurationCommand.d.ts +28 -0
- package/lib/types/internal/app-binder/command/ProvideNetworkConfigurationCommand.d.ts.map +1 -0
- package/lib/types/internal/app-binder/command/ProvideNetworkConfigurationCommand.test.d.ts +2 -0
- package/lib/types/internal/app-binder/command/ProvideNetworkConfigurationCommand.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/command/ProvideProxyInfoCommand.d.ts +20 -0
- package/lib/types/internal/app-binder/command/ProvideProxyInfoCommand.d.ts.map +1 -0
- package/lib/types/internal/app-binder/command/ProvideProxyInfoCommand.test.d.ts +2 -0
- package/lib/types/internal/app-binder/command/ProvideProxyInfoCommand.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.d.ts +14 -31
- package/lib/types/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.d.ts.map +1 -1
- package/lib/types/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.d.ts.map +1 -1
- package/lib/types/internal/app-binder/task/BuildSubContextTask.d.ts +20 -0
- package/lib/types/internal/app-binder/task/BuildSubContextTask.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/BuildSubContextTask.test.d.ts +2 -0
- package/lib/types/internal/app-binder/task/BuildSubContextTask.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/BuildTransactionContextTask.d.ts +10 -14
- package/lib/types/internal/app-binder/task/BuildTransactionContextTask.d.ts.map +1 -1
- package/lib/types/internal/app-binder/task/GetWeb3CheckTask.d.ts +2 -3
- package/lib/types/internal/app-binder/task/GetWeb3CheckTask.d.ts.map +1 -1
- package/lib/types/internal/app-binder/task/PreBuildContextTask.d.ts +17 -0
- package/lib/types/internal/app-binder/task/PreBuildContextTask.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/ProvideTransactionContextTask.d.ts +28 -22
- package/lib/types/internal/app-binder/task/ProvideTransactionContextTask.d.ts.map +1 -1
- package/lib/types/internal/app-binder/task/SendPayloadInChunksTask.d.ts +2 -2
- package/lib/types/internal/app-binder/task/SendPayloadInChunksTask.d.ts.map +1 -1
- package/lib/types/internal/app-binder/task/SendSignTransactionTask.d.ts +2 -1
- package/lib/types/internal/app-binder/task/SendSignTransactionTask.d.ts.map +1 -1
- package/lib/types/internal/shared/utils/ApplicationChecker.d.ts.map +1 -1
- package/lib/types/internal/transaction/di/transactionModule.d.ts.map +1 -1
- package/lib/types/internal/transaction/service/mapper/EthersTransactionMapperService.d.ts +8 -0
- package/lib/types/internal/transaction/service/mapper/EthersTransactionMapperService.d.ts.map +1 -0
- package/lib/types/internal/transaction/service/mapper/EthersTransactionMapperService.test.d.ts +2 -0
- package/lib/types/internal/transaction/service/mapper/EthersTransactionMapperService.test.d.ts.map +1 -0
- package/lib/types/internal/transaction/service/mapper/TransactionMapperService.d.ts +4 -7
- package/lib/types/internal/transaction/service/mapper/TransactionMapperService.d.ts.map +1 -1
- package/lib/types/internal/transaction/service/parser/TransactionParserService.d.ts +2 -2
- package/lib/types/internal/transaction/service/parser/TransactionParserService.d.ts.map +1 -1
- package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
- package/package.json +10 -10
- package/lib/cjs/internal/app-binder/constant/plugins.js +0 -2
- package/lib/cjs/internal/app-binder/constant/plugins.js.map +0 -7
- package/lib/cjs/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.js +0 -2
- package/lib/cjs/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.js.map +0 -7
- package/lib/cjs/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.test.js +0 -2
- package/lib/cjs/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.test.js.map +0 -7
- package/lib/cjs/internal/app-binder/task/ProvideTransactionGenericContextTask.js +0 -2
- package/lib/cjs/internal/app-binder/task/ProvideTransactionGenericContextTask.js.map +0 -7
- package/lib/cjs/internal/app-binder/task/ProvideTransactionGenericContextTask.test.js +0 -2
- package/lib/cjs/internal/app-binder/task/ProvideTransactionGenericContextTask.test.js.map +0 -7
- package/lib/cjs/internal/transaction/service/mapper/EthersRawTransactionMapper.js +0 -2
- package/lib/cjs/internal/transaction/service/mapper/EthersRawTransactionMapper.js.map +0 -7
- package/lib/cjs/internal/transaction/service/mapper/EthersRawTransactionMapper.test.js +0 -2
- package/lib/cjs/internal/transaction/service/mapper/EthersRawTransactionMapper.test.js.map +0 -7
- package/lib/cjs/internal/transaction/service/mapper/TransactionMapper.js +0 -2
- package/lib/cjs/internal/transaction/service/mapper/TransactionMapper.js.map +0 -7
- package/lib/cjs/internal/transaction/service/mapper/TransactionMapperService.test.js +0 -2
- package/lib/cjs/internal/transaction/service/mapper/TransactionMapperService.test.js.map +0 -7
- package/lib/esm/internal/app-binder/constant/plugins.js +0 -2
- package/lib/esm/internal/app-binder/constant/plugins.js.map +0 -7
- package/lib/esm/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.js +0 -2
- package/lib/esm/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.js.map +0 -7
- package/lib/esm/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.test.js +0 -2
- package/lib/esm/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.test.js.map +0 -7
- package/lib/esm/internal/app-binder/task/ProvideTransactionGenericContextTask.js +0 -2
- package/lib/esm/internal/app-binder/task/ProvideTransactionGenericContextTask.js.map +0 -7
- package/lib/esm/internal/app-binder/task/ProvideTransactionGenericContextTask.test.js +0 -2
- package/lib/esm/internal/app-binder/task/ProvideTransactionGenericContextTask.test.js.map +0 -7
- package/lib/esm/internal/transaction/service/mapper/EthersRawTransactionMapper.js +0 -2
- package/lib/esm/internal/transaction/service/mapper/EthersRawTransactionMapper.js.map +0 -7
- package/lib/esm/internal/transaction/service/mapper/EthersRawTransactionMapper.test.js +0 -2
- package/lib/esm/internal/transaction/service/mapper/EthersRawTransactionMapper.test.js.map +0 -7
- package/lib/esm/internal/transaction/service/mapper/TransactionMapper.js +0 -1
- package/lib/esm/internal/transaction/service/mapper/TransactionMapper.js.map +0 -7
- package/lib/esm/internal/transaction/service/mapper/TransactionMapperService.test.js +0 -2
- package/lib/esm/internal/transaction/service/mapper/TransactionMapperService.test.js.map +0 -7
- package/lib/types/internal/app-binder/constant/plugins.d.ts +0 -2
- package/lib/types/internal/app-binder/constant/plugins.d.ts.map +0 -1
- package/lib/types/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.d.ts +0 -80
- package/lib/types/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.d.ts.map +0 -1
- package/lib/types/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.test.d.ts +0 -2
- package/lib/types/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.test.d.ts.map +0 -1
- package/lib/types/internal/app-binder/task/ProvideTransactionGenericContextTask.d.ts +0 -28
- package/lib/types/internal/app-binder/task/ProvideTransactionGenericContextTask.d.ts.map +0 -1
- package/lib/types/internal/app-binder/task/ProvideTransactionGenericContextTask.test.d.ts +0 -2
- package/lib/types/internal/app-binder/task/ProvideTransactionGenericContextTask.test.d.ts.map +0 -1
- package/lib/types/internal/transaction/service/mapper/EthersRawTransactionMapper.d.ts +0 -7
- package/lib/types/internal/transaction/service/mapper/EthersRawTransactionMapper.d.ts.map +0 -1
- package/lib/types/internal/transaction/service/mapper/EthersRawTransactionMapper.test.d.ts +0 -2
- package/lib/types/internal/transaction/service/mapper/EthersRawTransactionMapper.test.d.ts.map +0 -1
- package/lib/types/internal/transaction/service/mapper/TransactionMapper.d.ts +0 -6
- package/lib/types/internal/transaction/service/mapper/TransactionMapper.d.ts.map +0 -1
- package/lib/types/internal/transaction/service/mapper/TransactionMapperService.test.d.ts +0 -2
- package/lib/types/internal/transaction/service/mapper/TransactionMapperService.test.d.ts.map +0 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/internal/app-binder/task/ProvideEIP712ContextTask.test.ts"],
|
|
4
|
-
"sourcesContent": ["import {\n type ClearSignContextSuccess,\n ClearSignContextType,\n type TypedDataClearSignContextSuccess,\n} from \"@ledgerhq/context-module\";\nimport {\n CommandResultFactory,\n hexaStringToBuffer,\n LoadCertificateCommand,\n UnknownDeviceExchangeError,\n} from \"@ledgerhq/device-management-kit\";\nimport { Just, Nothing } from \"purify-ts\";\n\nimport { GetChallengeCommand } from \"@internal/app-binder/command/GetChallengeCommand\";\nimport { ProvideTokenInformationCommand } from \"@internal/app-binder/command/ProvideTokenInformationCommand\";\nimport { ProvideWeb3CheckCommand } from \"@internal/app-binder/command/ProvideWeb3CheckCommand\";\nimport {\n Eip712FilterType,\n SendEIP712FilteringCommand,\n} from \"@internal/app-binder/command/SendEIP712FilteringCommand\";\nimport {\n SendEIP712StructDefinitionCommand,\n StructDefinitionCommand,\n} from \"@internal/app-binder/command/SendEIP712StructDefinitionCommand\";\nimport {\n SendEIP712StructImplemCommand,\n StructImplemType,\n} from \"@internal/app-binder/command/SendEIP712StructImplemCommand\";\nimport { makeDeviceActionInternalApiMock } from \"@internal/app-binder/device-action/__test-utils__/makeInternalApi\";\nimport {\n type FieldType,\n PrimitiveType,\n StructType,\n TypedDataValueArray,\n TypedDataValueField,\n TypedDataValueRoot,\n} from \"@internal/typed-data/model/Types\";\n\nimport {\n ProvideEIP712ContextTask,\n type ProvideEIP712ContextTaskArgs,\n} from \"./ProvideEIP712ContextTask\";\n\ndescribe(\"ProvideEIP712ContextTask\", () => {\n const apiMock = makeDeviceActionInternalApiMock();\n const contextModuleMock = {\n getContext: vi.fn(),\n getContexts: vi.fn(),\n getTypedDataFilters: vi.fn(),\n getWeb3Checks: vi.fn(),\n };\n\n const TEST_TYPES = {\n EIP712Domain: {\n name: new PrimitiveType(\"string\", \"string\", Nothing),\n chainId: new PrimitiveType(\"uint256\", \"uint\", Just(32)),\n verifyingContract: new PrimitiveType(\"address\", \"address\", Nothing),\n },\n PermitSingle: {\n details: new StructType(\"PermitDetails\"),\n spender: new PrimitiveType(\"address\", \"address\", Nothing),\n sigDeadline: new PrimitiveType(\"uint256\", \"uint\", Just(32)),\n },\n PermitDetails: {\n token: new PrimitiveType(\"address\", \"address\", Nothing),\n amount: new PrimitiveType(\"uint160\", \"uint\", Just(20)),\n expiration: new PrimitiveType(\"uint48\", \"uint\", Just(6)),\n nonce: new PrimitiveType(\"uint48\", \"uint\", Just(6)),\n },\n };\n const TEST_DOMAIN_VALUES = [\n {\n path: \"\",\n type: \"\",\n value: new TypedDataValueRoot(\"EIP712Domain\"),\n },\n {\n path: \"name\",\n type: \"string\",\n value: new TypedDataValueField(new TextEncoder().encode(\"Permit2\")),\n },\n {\n path: \"chainId\",\n type: \"uint256\",\n value: new TypedDataValueField(Uint8Array.from([137])),\n },\n {\n path: \"verifyingContract\",\n type: \"address\",\n value: new TypedDataValueField(\n hexaStringToBuffer(\"0x000000000022d473030f116ddee9f6b43ac78ba3\")!,\n ),\n },\n ];\n const TEST_MESSAGE_VALUES = [\n {\n path: \"\",\n type: \"\",\n value: new TypedDataValueRoot(\"PermitSingle\"),\n },\n {\n path: \"details.token\",\n type: \"address\",\n value: new TypedDataValueField(\n hexaStringToBuffer(\"0x7ceb23fd6bc0add59e62ac25578270cff1b9f619\")!,\n ),\n },\n {\n path: \"details.amount\",\n type: \"uint160\",\n value: new TypedDataValueField(Uint8Array.from([0x12])),\n },\n {\n path: \"details.expiration\",\n type: \"uint48\",\n value: new TypedDataValueField(Uint8Array.from([0x12])),\n },\n {\n path: \"details.nonce\",\n type: \"uint48\",\n value: new TypedDataValueField(Uint8Array.from([0x00])),\n },\n {\n path: \"spender\",\n type: \"address\",\n value: new TypedDataValueField(\n hexaStringToBuffer(\"0xec7be89e9d109e7e3fec59c222cf297125fefda2\")!,\n ),\n },\n {\n path: \"sigDeadline\",\n type: \"uint256\",\n value: new TypedDataValueField(Uint8Array.from([0x12])),\n },\n ];\n const TEST_CLEAR_SIGN_CONTEXT: TypedDataClearSignContextSuccess = {\n type: \"success\",\n messageInfo: {\n displayName: \"Permit2\",\n filtersCount: 4,\n signature:\n \"3045022100e3c597d13d28a87a88b0239404c668373cf5063362f2a81d09eed4582941dfe802207669aabb504fd5b95b2734057f6b8bbf51f14a69a5f9bdf658a5952cefbf44d3\",\n },\n trustedNamesAddresses: {},\n tokens: {\n 0: \"payload-0x7ceb23fd6bc0add59e62ac25578270cff1b9f619\",\n 255: \"payload-0x000000000022d473030f116ddee9f6b43ac78ba3\",\n },\n filters: {\n \"details.amount\": {\n displayName: \"Amount allowance\",\n path: \"details.amount\",\n signature:\n \"304402201a46e6b4ef89eaf9fcf4945d053bfc5616a826400fd758312fbbe976bafc07ec022025a9b408722baf983ee053f90179c75b0c55bb0668f437d55493e36069bbd5a3\",\n tokenIndex: 255,\n type: \"amount\",\n },\n \"details.expiration\": {\n displayName: \"Approval expire\",\n path: \"details.expiration\",\n signature:\n \"3044022056b3381e4540629ad73bc434ec49d80523234b82f62340fbb77157fb0eb21a680220459fe9cf6ca309f9c7dfc6d4711fea1848dba661563c57f77b3c2dc480b3a63b\",\n type: \"datetime\",\n },\n \"details.token\": {\n displayName: \"Amount allowance\",\n path: \"details.token\",\n signature:\n \"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733\",\n tokenIndex: 0,\n type: \"token\",\n },\n spender: {\n displayName: \"Approve to spender\",\n path: \"spender\",\n signature:\n \"3044022033e5713d9cb9bc375b56a9fb53b736c81ea3c4ac5cfb2d3ca7f8b8f0558fe2430220543ca4fef6d6f725f29e343f167fe9dd582aa856ecb5797259050eb990a1befb\",\n type: \"raw\",\n },\n },\n };\n\n const ADDRESS = new PrimitiveType(\"address\", \"address\", Nothing);\n const STRING = new PrimitiveType(\"string\", \"string\", Nothing);\n const UINT256 = new PrimitiveType(\"uint256\", \"uint\", Just(32));\n const UINT160 = new PrimitiveType(\"uint160\", \"uint\", Just(20));\n const UINT48 = new PrimitiveType(\"uint48\", \"uint\", Just(6));\n const CUSTOM = (name: string) => new StructType(name);\n\n const sendStructDefName = (name: string) =>\n new SendEIP712StructDefinitionCommand({\n command: StructDefinitionCommand.Name,\n name,\n });\n const sendStructDefField = (name: string, type: FieldType) =>\n new SendEIP712StructDefinitionCommand({\n command: StructDefinitionCommand.Field,\n name,\n type,\n });\n const sendStructImplRoot = (value: string) =>\n new SendEIP712StructImplemCommand({\n type: StructImplemType.ROOT,\n value,\n });\n const sendStructImplArray = (value: number) =>\n new SendEIP712StructImplemCommand({\n type: StructImplemType.ARRAY,\n value,\n });\n const sendStructImplField = (data: Uint8Array) =>\n new SendEIP712StructImplemCommand({\n type: StructImplemType.FIELD,\n value: {\n data,\n isLastChunk: true,\n },\n });\n\n beforeEach(() => {\n vi.resetAllMocks();\n });\n\n it(\"Send context with no clear signing context\", async () => {\n // GIVEN\n const args: ProvideEIP712ContextTaskArgs = {\n web3Check: null,\n types: TEST_TYPES,\n domain: TEST_DOMAIN_VALUES,\n message: TEST_MESSAGE_VALUES,\n clearSignContext: Nothing,\n };\n // WHEN\n apiMock.sendCommand.mockResolvedValue(\n CommandResultFactory({ data: undefined }),\n );\n await new ProvideEIP712ContextTask(apiMock, contextModuleMock, args).run();\n\n // THEN\n expect(apiMock.sendCommand.mock.calls).toHaveLength(24);\n // Send Struct definitions\n expect(apiMock.sendCommand.mock.calls[0]![0]).toStrictEqual(\n sendStructDefName(\"EIP712Domain\"),\n );\n expect(apiMock.sendCommand.mock.calls[1]![0]).toStrictEqual(\n sendStructDefField(\"name\", STRING),\n );\n expect(apiMock.sendCommand.mock.calls[2]![0]).toStrictEqual(\n sendStructDefField(\"chainId\", UINT256),\n );\n expect(apiMock.sendCommand.mock.calls[3]![0]).toStrictEqual(\n sendStructDefField(\"verifyingContract\", ADDRESS),\n );\n expect(apiMock.sendCommand.mock.calls[4]![0]).toStrictEqual(\n sendStructDefName(\"PermitDetails\"),\n );\n expect(apiMock.sendCommand.mock.calls[5]![0]).toStrictEqual(\n sendStructDefField(\"token\", ADDRESS),\n );\n expect(apiMock.sendCommand.mock.calls[6]![0]).toStrictEqual(\n sendStructDefField(\"amount\", UINT160),\n );\n expect(apiMock.sendCommand.mock.calls[7]![0]).toStrictEqual(\n sendStructDefField(\"expiration\", UINT48),\n );\n expect(apiMock.sendCommand.mock.calls[8]![0]).toStrictEqual(\n sendStructDefField(\"nonce\", UINT48),\n );\n expect(apiMock.sendCommand.mock.calls[9]![0]).toStrictEqual(\n sendStructDefName(\"PermitSingle\"),\n );\n expect(apiMock.sendCommand.mock.calls[10]![0]).toStrictEqual(\n sendStructDefField(\"details\", CUSTOM(\"PermitDetails\")),\n );\n expect(apiMock.sendCommand.mock.calls[11]![0]).toStrictEqual(\n sendStructDefField(\"spender\", ADDRESS),\n );\n expect(apiMock.sendCommand.mock.calls[12]![0]).toStrictEqual(\n sendStructDefField(\"sigDeadline\", UINT256),\n );\n // Send the domain values\n expect(apiMock.sendCommand.mock.calls[13]![0]).toStrictEqual(\n sendStructImplRoot(\"EIP712Domain\"),\n );\n expect(apiMock.sendCommand.mock.calls[14]![0]).toStrictEqual(\n sendStructImplField(\n Uint8Array.from([0x00, 0x07, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x32]),\n ),\n );\n expect(apiMock.sendCommand.mock.calls[15]![0]).toStrictEqual(\n sendStructImplField(Uint8Array.from([0x00, 0x01, 0x89])),\n );\n expect(apiMock.sendCommand.mock.calls[16]![0]).toStrictEqual(\n sendStructImplField(\n Uint8Array.from([\n 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0xd4, 0x73, 0x03,\n 0x0f, 0x11, 0x6d, 0xde, 0xe9, 0xf6, 0xb4, 0x3a, 0xc7, 0x8b, 0xa3,\n ]),\n ),\n );\n // Send the message values\n expect(apiMock.sendCommand.mock.calls[17]![0]).toStrictEqual(\n sendStructImplRoot(\"PermitSingle\"),\n );\n expect(apiMock.sendCommand.mock.calls[18]![0]).toStrictEqual(\n sendStructImplField(\n Uint8Array.from([\n 0x00, 0x14, 0x7c, 0xeb, 0x23, 0xfd, 0x6b, 0xc0, 0xad, 0xd5, 0x9e,\n 0x62, 0xac, 0x25, 0x57, 0x82, 0x70, 0xcf, 0xf1, 0xb9, 0xf6, 0x19,\n ]),\n ),\n );\n expect(apiMock.sendCommand.mock.calls[19]![0]).toStrictEqual(\n sendStructImplField(Uint8Array.from([0x00, 0x01, 0x12])),\n );\n expect(apiMock.sendCommand.mock.calls[20]![0]).toStrictEqual(\n sendStructImplField(Uint8Array.from([0x00, 0x01, 0x12])),\n );\n expect(apiMock.sendCommand.mock.calls[21]![0]).toStrictEqual(\n sendStructImplField(Uint8Array.from([0x00, 0x01, 0x00])),\n );\n expect(apiMock.sendCommand.mock.calls[22]![0]).toStrictEqual(\n sendStructImplField(\n Uint8Array.from([\n 0x00, 0x14, 0xec, 0x7b, 0xe8, 0x9e, 0x9d, 0x10, 0x9e, 0x7e, 0x3f,\n 0xec, 0x59, 0xc2, 0x22, 0xcf, 0x29, 0x71, 0x25, 0xfe, 0xfd, 0xa2,\n ]),\n ),\n );\n expect(apiMock.sendCommand.mock.calls[23]![0]).toStrictEqual(\n sendStructImplField(Uint8Array.from([0x00, 0x01, 0x12])),\n );\n });\n\n it(\"Send context with clear signing\", async () => {\n // GIVEN\n const args: ProvideEIP712ContextTaskArgs = {\n web3Check: null,\n types: TEST_TYPES,\n domain: TEST_DOMAIN_VALUES,\n message: TEST_MESSAGE_VALUES,\n clearSignContext: Just(TEST_CLEAR_SIGN_CONTEXT),\n };\n apiMock.sendCommand\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: { tokenIndex: 4 } })) // First token provided\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: { tokenIndex: 5 } })); // Second token provided\n // WHEN\n apiMock.sendCommand.mockResolvedValue(\n CommandResultFactory({ data: undefined }),\n );\n await new ProvideEIP712ContextTask(apiMock, contextModuleMock, args).run();\n\n // THEN\n expect(apiMock.sendCommand.mock.calls).toHaveLength(32);\n // Send Struct definitions\n expect(apiMock.sendCommand.mock.calls[0]![0]).toStrictEqual(\n sendStructDefName(\"EIP712Domain\"),\n );\n expect(apiMock.sendCommand.mock.calls[1]![0]).toStrictEqual(\n sendStructDefField(\"name\", STRING),\n );\n expect(apiMock.sendCommand.mock.calls[2]![0]).toStrictEqual(\n sendStructDefField(\"chainId\", UINT256),\n );\n expect(apiMock.sendCommand.mock.calls[3]![0]).toStrictEqual(\n sendStructDefField(\"verifyingContract\", ADDRESS),\n );\n expect(apiMock.sendCommand.mock.calls[4]![0]).toStrictEqual(\n sendStructDefName(\"PermitDetails\"),\n );\n expect(apiMock.sendCommand.mock.calls[5]![0]).toStrictEqual(\n sendStructDefField(\"token\", ADDRESS),\n );\n expect(apiMock.sendCommand.mock.calls[6]![0]).toStrictEqual(\n sendStructDefField(\"amount\", UINT160),\n );\n expect(apiMock.sendCommand.mock.calls[7]![0]).toStrictEqual(\n sendStructDefField(\"expiration\", UINT48),\n );\n expect(apiMock.sendCommand.mock.calls[8]![0]).toStrictEqual(\n sendStructDefField(\"nonce\", UINT48),\n );\n expect(apiMock.sendCommand.mock.calls[9]![0]).toStrictEqual(\n sendStructDefName(\"PermitSingle\"),\n );\n expect(apiMock.sendCommand.mock.calls[10]![0]).toStrictEqual(\n sendStructDefField(\"details\", CUSTOM(\"PermitDetails\")),\n );\n expect(apiMock.sendCommand.mock.calls[11]![0]).toStrictEqual(\n sendStructDefField(\"spender\", ADDRESS),\n );\n expect(apiMock.sendCommand.mock.calls[12]![0]).toStrictEqual(\n sendStructDefField(\"sigDeadline\", UINT256),\n );\n // Activate the filtering\n expect(apiMock.sendCommand.mock.calls[13]![0]).toStrictEqual(\n new SendEIP712FilteringCommand({ type: Eip712FilterType.Activation }),\n );\n // Send the domain values\n expect(apiMock.sendCommand.mock.calls[14]![0]).toStrictEqual(\n sendStructImplRoot(\"EIP712Domain\"),\n );\n expect(apiMock.sendCommand.mock.calls[15]![0]).toStrictEqual(\n sendStructImplField(\n Uint8Array.from([0x00, 0x07, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x32]),\n ),\n );\n expect(apiMock.sendCommand.mock.calls[16]![0]).toStrictEqual(\n sendStructImplField(Uint8Array.from([0x00, 0x01, 0x89])),\n );\n expect(apiMock.sendCommand.mock.calls[17]![0]).toStrictEqual(\n sendStructImplField(\n Uint8Array.from([\n 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0xd4, 0x73, 0x03,\n 0x0f, 0x11, 0x6d, 0xde, 0xe9, 0xf6, 0xb4, 0x3a, 0xc7, 0x8b, 0xa3,\n ]),\n ),\n );\n // Send the message information filter\n expect(apiMock.sendCommand.mock.calls[18]![0]).toStrictEqual(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.MessageInfo,\n displayName: \"Permit2\",\n filtersCount: 4,\n signature:\n \"3045022100e3c597d13d28a87a88b0239404c668373cf5063362f2a81d09eed4582941dfe802207669aabb504fd5b95b2734057f6b8bbf51f14a69a5f9bdf658a5952cefbf44d3\",\n }),\n );\n // Send the message values with corresponding filters\n expect(apiMock.sendCommand.mock.calls[19]![0]).toStrictEqual(\n sendStructImplRoot(\"PermitSingle\"),\n );\n expect(apiMock.sendCommand.mock.calls[20]![0]).toStrictEqual(\n new ProvideTokenInformationCommand({\n payload: \"payload-0x7ceb23fd6bc0add59e62ac25578270cff1b9f619\",\n }),\n );\n expect(apiMock.sendCommand.mock.calls[21]![0]).toStrictEqual(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.Token,\n discarded: false,\n tokenIndex: 4,\n signature:\n \"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733\",\n }),\n );\n expect(apiMock.sendCommand.mock.calls[22]![0]).toStrictEqual(\n sendStructImplField(\n Uint8Array.from([\n 0x00, 0x14, 0x7c, 0xeb, 0x23, 0xfd, 0x6b, 0xc0, 0xad, 0xd5, 0x9e,\n 0x62, 0xac, 0x25, 0x57, 0x82, 0x70, 0xcf, 0xf1, 0xb9, 0xf6, 0x19,\n ]),\n ),\n );\n expect(apiMock.sendCommand.mock.calls[23]![0]).toStrictEqual(\n new ProvideTokenInformationCommand({\n payload: \"payload-0x000000000022d473030f116ddee9f6b43ac78ba3\",\n }),\n );\n expect(apiMock.sendCommand.mock.calls[24]![0]).toStrictEqual(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.Amount,\n discarded: false,\n displayName: \"Amount allowance\",\n tokenIndex: 255,\n signature:\n \"304402201a46e6b4ef89eaf9fcf4945d053bfc5616a826400fd758312fbbe976bafc07ec022025a9b408722baf983ee053f90179c75b0c55bb0668f437d55493e36069bbd5a3\",\n }),\n );\n expect(apiMock.sendCommand.mock.calls[25]![0]).toStrictEqual(\n sendStructImplField(Uint8Array.from([0x00, 0x01, 0x12])),\n );\n expect(apiMock.sendCommand.mock.calls[26]![0]).toStrictEqual(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.Datetime,\n discarded: false,\n displayName: \"Approval expire\",\n signature:\n \"3044022056b3381e4540629ad73bc434ec49d80523234b82f62340fbb77157fb0eb21a680220459fe9cf6ca309f9c7dfc6d4711fea1848dba661563c57f77b3c2dc480b3a63b\",\n }),\n );\n expect(apiMock.sendCommand.mock.calls[27]![0]).toStrictEqual(\n sendStructImplField(Uint8Array.from([0x00, 0x01, 0x12])),\n );\n expect(apiMock.sendCommand.mock.calls[28]![0]).toStrictEqual(\n sendStructImplField(Uint8Array.from([0x00, 0x01, 0x00])),\n );\n expect(apiMock.sendCommand.mock.calls[29]![0]).toStrictEqual(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.Raw,\n discarded: false,\n displayName: \"Approve to spender\",\n signature:\n \"3044022033e5713d9cb9bc375b56a9fb53b736c81ea3c4ac5cfb2d3ca7f8b8f0558fe2430220543ca4fef6d6f725f29e343f167fe9dd582aa856ecb5797259050eb990a1befb\",\n }),\n );\n expect(apiMock.sendCommand.mock.calls[30]![0]).toStrictEqual(\n sendStructImplField(\n Uint8Array.from([\n 0x00, 0x14, 0xec, 0x7b, 0xe8, 0x9e, 0x9d, 0x10, 0x9e, 0x7e, 0x3f,\n 0xec, 0x59, 0xc2, 0x22, 0xcf, 0x29, 0x71, 0x25, 0xfe, 0xfd, 0xa2,\n ]),\n ),\n );\n expect(apiMock.sendCommand.mock.calls[31]![0]).toStrictEqual(\n sendStructImplField(Uint8Array.from([0x00, 0x01, 0x12])),\n );\n });\n\n it(\"Both tokens unavailable\", async () => {\n // GIVEN\n const args: ProvideEIP712ContextTaskArgs = {\n web3Check: null,\n types: TEST_TYPES,\n domain: TEST_DOMAIN_VALUES,\n message: TEST_MESSAGE_VALUES,\n clearSignContext: Just({\n type: \"success\",\n messageInfo: TEST_CLEAR_SIGN_CONTEXT.messageInfo,\n filters: TEST_CLEAR_SIGN_CONTEXT.filters,\n trustedNamesAddresses: {},\n tokens: {},\n }),\n };\n\n // WHEN\n apiMock.sendCommand.mockResolvedValue(\n CommandResultFactory({ data: undefined }),\n );\n await new ProvideEIP712ContextTask(apiMock, contextModuleMock, args).run();\n\n // THEN\n expect(apiMock.sendCommand).not.toHaveBeenCalledWith(\n new ProvideTokenInformationCommand({\n payload: \"payload-0x7ceb23fd6bc0add59e62ac25578270cff1b9f619\",\n }),\n );\n expect(apiMock.sendCommand).not.toHaveBeenCalledWith(\n new ProvideTokenInformationCommand({\n payload: \"payload-0x000000000022d473030f116ddee9f6b43ac78ba3\",\n }),\n );\n expect(apiMock.sendCommand).toHaveBeenCalledWith(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.Token,\n discarded: false,\n tokenIndex: 0,\n signature:\n \"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733\",\n }),\n );\n expect(apiMock.sendCommand).toHaveBeenCalledWith(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.Amount,\n discarded: false,\n displayName: \"Amount allowance\",\n tokenIndex: 1,\n signature:\n \"304402201a46e6b4ef89eaf9fcf4945d053bfc5616a826400fd758312fbbe976bafc07ec022025a9b408722baf983ee053f90179c75b0c55bb0668f437d55493e36069bbd5a3\",\n }),\n );\n });\n\n it(\"First token unavailable\", async () => {\n // GIVEN\n const args: ProvideEIP712ContextTaskArgs = {\n web3Check: null,\n types: TEST_TYPES,\n domain: TEST_DOMAIN_VALUES,\n message: TEST_MESSAGE_VALUES,\n clearSignContext: Just({\n type: \"success\",\n messageInfo: TEST_CLEAR_SIGN_CONTEXT.messageInfo,\n filters: TEST_CLEAR_SIGN_CONTEXT.filters,\n trustedNamesAddresses: {},\n tokens: { 255: \"payload-0x000000000022d473030f116ddee9f6b43ac78ba3\" },\n }),\n };\n\n // WHEN\n apiMock.sendCommand.mockResolvedValue(\n CommandResultFactory({ data: { tokenIndex: 4 } }),\n );\n await new ProvideEIP712ContextTask(apiMock, contextModuleMock, args).run();\n\n // THEN\n expect(apiMock.sendCommand).toHaveBeenCalledWith(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.Token,\n discarded: false,\n tokenIndex: 0,\n signature:\n \"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733\",\n }),\n );\n expect(apiMock.sendCommand).toHaveBeenCalledWith(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.Amount,\n discarded: false,\n displayName: \"Amount allowance\",\n tokenIndex: 255,\n signature:\n \"304402201a46e6b4ef89eaf9fcf4945d053bfc5616a826400fd758312fbbe976bafc07ec022025a9b408722baf983ee053f90179c75b0c55bb0668f437d55493e36069bbd5a3\",\n }),\n );\n });\n\n it(\"Second token unavailable\", async () => {\n // GIVEN\n const args: ProvideEIP712ContextTaskArgs = {\n web3Check: null,\n types: TEST_TYPES,\n domain: TEST_DOMAIN_VALUES,\n message: TEST_MESSAGE_VALUES,\n clearSignContext: Just({\n type: \"success\",\n messageInfo: TEST_CLEAR_SIGN_CONTEXT.messageInfo,\n filters: TEST_CLEAR_SIGN_CONTEXT.filters,\n trustedNamesAddresses: {},\n tokens: { 0: \"payload-0x7ceb23fd6bc0add59e62ac25578270cff1b9f619\" },\n }),\n };\n\n // WHEN\n apiMock.sendCommand.mockResolvedValue(\n CommandResultFactory({ data: { tokenIndex: 4 } }),\n );\n await new ProvideEIP712ContextTask(apiMock, contextModuleMock, args).run();\n\n // THEN\n expect(apiMock.sendCommand).toHaveBeenCalledWith(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.Token,\n discarded: false,\n tokenIndex: 4,\n signature:\n \"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733\",\n }),\n );\n expect(apiMock.sendCommand).toHaveBeenCalledWith(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.Amount,\n discarded: false,\n displayName: \"Amount allowance\",\n tokenIndex: 0,\n signature:\n \"304402201a46e6b4ef89eaf9fcf4945d053bfc5616a826400fd758312fbbe976bafc07ec022025a9b408722baf983ee053f90179c75b0c55bb0668f437d55493e36069bbd5a3\",\n }),\n );\n });\n\n it(\"Filter with trusted name\", async () => {\n // GIVEN\n const args: ProvideEIP712ContextTaskArgs = {\n web3Check: null,\n types: TEST_TYPES,\n domain: TEST_DOMAIN_VALUES,\n message: TEST_MESSAGE_VALUES,\n clearSignContext: Just({\n type: \"success\",\n messageInfo: TEST_CLEAR_SIGN_CONTEXT.messageInfo,\n filters: {\n \"details.token\": {\n displayName: \"Amount allowance\",\n path: \"details.token\",\n signature:\n \"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733\",\n types: [\"contract\"],\n sources: [\"local\", \"ens\"],\n typesAndSourcesPayload: \"010203010002\",\n type: \"trusted-name\",\n },\n },\n trustedNamesAddresses: {\n \"details.token\": \"0x7ceb23fd6bc0add59e62ac25578270cff1b9f619\",\n },\n tokens: {},\n }),\n };\n\n // WHEN\n apiMock.sendCommand.mockResolvedValue(\n CommandResultFactory({ data: { challenge: \"0x42\" } }),\n );\n contextModuleMock.getContext.mockResolvedValue({\n type: ClearSignContextType.TRUSTED_NAME,\n payload: \"0x01020304\",\n });\n await new ProvideEIP712ContextTask(apiMock, contextModuleMock, args).run();\n\n // THEN\n expect(apiMock.sendCommand).toHaveBeenCalledWith(new GetChallengeCommand());\n expect(contextModuleMock.getContext).toHaveBeenCalledWith({\n type: ClearSignContextType.TRUSTED_NAME,\n chainId: 137,\n address: \"0x7ceb23fd6bc0add59e62ac25578270cff1b9f619\",\n types: [\"contract\"],\n sources: [\"local\", \"ens\"],\n challenge: \"0x42\",\n });\n expect(apiMock.sendCommand).toHaveBeenCalledWith(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.TrustedName,\n discarded: false,\n displayName: \"Amount allowance\",\n typesAndSourcesPayload: \"010203010002\",\n signature:\n \"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733\",\n }),\n );\n });\n\n it(\"Filter with trusted name and certificate\", async () => {\n // GIVEN\n const args: ProvideEIP712ContextTaskArgs = {\n web3Check: null,\n types: TEST_TYPES,\n domain: TEST_DOMAIN_VALUES,\n message: TEST_MESSAGE_VALUES,\n clearSignContext: Just({\n type: \"success\",\n messageInfo: TEST_CLEAR_SIGN_CONTEXT.messageInfo,\n filters: {\n \"details.token\": {\n displayName: \"Amount allowance\",\n path: \"details.token\",\n signature:\n \"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733\",\n types: [\"contract\"],\n sources: [\"local\", \"ens\"],\n typesAndSourcesPayload: \"010203010002\",\n type: \"trusted-name\",\n },\n },\n trustedNamesAddresses: {\n \"details.token\": \"0x7ceb23fd6bc0add59e62ac25578270cff1b9f619\",\n },\n tokens: {},\n }),\n };\n\n // WHEN\n apiMock.sendCommand.mockResolvedValue(\n CommandResultFactory({ data: { challenge: \"0x42\" } }),\n );\n contextModuleMock.getContext.mockResolvedValue({\n type: ClearSignContextType.TRUSTED_NAME,\n certificate: {\n keyUsageNumber: 7,\n payload: new Uint8Array(3).fill(42),\n },\n payload: \"0x01020304\",\n });\n await new ProvideEIP712ContextTask(apiMock, contextModuleMock, args).run();\n\n // THEN\n expect(apiMock.sendCommand).toHaveBeenCalledWith(new GetChallengeCommand());\n expect(contextModuleMock.getContext).toHaveBeenCalledWith({\n type: ClearSignContextType.TRUSTED_NAME,\n chainId: 137,\n address: \"0x7ceb23fd6bc0add59e62ac25578270cff1b9f619\",\n types: [\"contract\"],\n sources: [\"local\", \"ens\"],\n challenge: \"0x42\",\n });\n expect(apiMock.sendCommand).toHaveBeenCalledWith(\n new LoadCertificateCommand({\n keyUsage: 7,\n certificate: new Uint8Array(3).fill(42),\n }),\n );\n expect(apiMock.sendCommand).toHaveBeenCalledWith(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.TrustedName,\n discarded: false,\n displayName: \"Amount allowance\",\n typesAndSourcesPayload: \"010203010002\",\n signature:\n \"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733\",\n }),\n );\n });\n\n it(\"Provide Web3Check\", async () => {\n // GIVEN\n const web3Check: ClearSignContextSuccess<ClearSignContextType.WEB3_CHECK> =\n {\n type: ClearSignContextType.WEB3_CHECK,\n payload: \"0x010203\",\n };\n const args: ProvideEIP712ContextTaskArgs = {\n web3Check,\n types: TEST_TYPES,\n domain: TEST_DOMAIN_VALUES,\n message: TEST_MESSAGE_VALUES,\n clearSignContext: Nothing,\n };\n\n // WHEN\n apiMock.sendCommand.mockResolvedValue(\n CommandResultFactory({ data: undefined }),\n );\n await new ProvideEIP712ContextTask(apiMock, contextModuleMock, args).run();\n\n // THEN\n expect(apiMock.sendCommand).toHaveBeenCalledWith(\n new ProvideWeb3CheckCommand({\n payload: hexaStringToBuffer(\"0x0003010203\")!,\n isFirstChunk: true,\n }),\n );\n });\n\n it(\"Provide Web3Check and certificate\", async () => {\n // GIVEN\n const web3Check: ClearSignContextSuccess<ClearSignContextType.WEB3_CHECK> =\n {\n type: ClearSignContextType.WEB3_CHECK,\n certificate: {\n keyUsageNumber: 3,\n payload: new Uint8Array(3).fill(42),\n },\n payload: \"0x010203\",\n };\n const args: ProvideEIP712ContextTaskArgs = {\n web3Check,\n types: TEST_TYPES,\n domain: TEST_DOMAIN_VALUES,\n message: TEST_MESSAGE_VALUES,\n clearSignContext: Nothing,\n };\n\n // WHEN\n apiMock.sendCommand.mockResolvedValue(\n CommandResultFactory({ data: undefined }),\n );\n await new ProvideEIP712ContextTask(apiMock, contextModuleMock, args).run();\n\n // THEN\n expect(apiMock.sendCommand).toHaveBeenCalledWith(\n new LoadCertificateCommand({\n keyUsage: 3,\n certificate: web3Check.certificate!.payload,\n }),\n );\n expect(apiMock.sendCommand).toHaveBeenCalledWith(\n new ProvideWeb3CheckCommand({\n payload: hexaStringToBuffer(\"0x0003010203\")!,\n isFirstChunk: true,\n }),\n );\n });\n\n it(\"Error when providing tokens\", async () => {\n // GIVEN\n const args: ProvideEIP712ContextTaskArgs = {\n web3Check: null,\n types: TEST_TYPES,\n domain: TEST_DOMAIN_VALUES,\n message: TEST_MESSAGE_VALUES,\n clearSignContext: Just(TEST_CLEAR_SIGN_CONTEXT),\n };\n apiMock.sendCommand.mockResolvedValueOnce(\n CommandResultFactory({\n error: new UnknownDeviceExchangeError(\"error\"),\n }),\n );\n // WHEN\n const promise = new ProvideEIP712ContextTask(\n apiMock,\n contextModuleMock,\n args,\n ).run();\n\n // THEN\n await expect(promise).resolves.toStrictEqual(\n CommandResultFactory({\n error: new UnknownDeviceExchangeError(\"error\"),\n }),\n );\n });\n\n it(\"Error when sending struct definitions\", async () => {\n // GIVEN\n const args: ProvideEIP712ContextTaskArgs = {\n web3Check: null,\n types: TEST_TYPES,\n domain: TEST_DOMAIN_VALUES,\n message: TEST_MESSAGE_VALUES,\n clearSignContext: Just(TEST_CLEAR_SIGN_CONTEXT),\n };\n apiMock.sendCommand\n .mockResolvedValueOnce(CommandResultFactory({ data: { tokenIndex: 4 } }))\n .mockResolvedValueOnce(CommandResultFactory({ data: { tokenIndex: 5 } }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(\n CommandResultFactory({\n error: new UnknownDeviceExchangeError(\"error\"),\n }),\n );\n // WHEN\n const promise = new ProvideEIP712ContextTask(\n apiMock,\n contextModuleMock,\n args,\n ).run();\n\n // THEN\n await expect(promise).resolves.toStrictEqual(\n CommandResultFactory({ error: new UnknownDeviceExchangeError(\"error\") }),\n );\n });\n\n it(\"Error when sending struct implementations\", async () => {\n // GIVEN\n const args: ProvideEIP712ContextTaskArgs = {\n web3Check: null,\n types: TEST_TYPES,\n domain: TEST_DOMAIN_VALUES,\n message: TEST_MESSAGE_VALUES,\n clearSignContext: Nothing,\n };\n // WHEN\n apiMock.sendCommand\n // Struct definitions\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n // Struct implementations\n .mockResolvedValueOnce(\n CommandResultFactory({\n error: new UnknownDeviceExchangeError(\"error\"),\n }),\n )\n .mockResolvedValue(CommandResultFactory({ data: undefined }));\n const promise = new ProvideEIP712ContextTask(\n apiMock,\n contextModuleMock,\n args,\n ).run();\n\n // THEN\n await expect(promise).resolves.toStrictEqual(\n CommandResultFactory({ error: new UnknownDeviceExchangeError(\"error\") }),\n );\n });\n\n it(\"Send struct array\", async () => {\n // GIVEN\n const args: ProvideEIP712ContextTaskArgs = {\n web3Check: null,\n types: {},\n domain: [],\n message: [\n // Array containing an element\n {\n path: \"spenders\",\n type: \"address[]\",\n value: new TypedDataValueArray(1),\n },\n {\n path: \"spenders.[]\",\n type: \"address\",\n value: new TypedDataValueField(\n hexaStringToBuffer(\"0x7ceb23fd6bc0add59e62ac25578270cff1b9f619\")!,\n ),\n },\n // Empty array\n {\n path: \"beneficiaries\",\n type: \"address[]\",\n value: new TypedDataValueArray(0),\n },\n ],\n clearSignContext: Just({\n type: \"success\",\n messageInfo: {\n displayName: \"Permit2\",\n filtersCount: 2,\n signature: \"sig\",\n },\n trustedNamesAddresses: {},\n tokens: {},\n filters: {\n \"spenders.[]\": {\n displayName: \"Spender\",\n path: \"spenders.[]\",\n signature: \"sig\",\n type: \"raw\",\n },\n \"beneficiaries.[]\": {\n displayName: \"Beneficiary\",\n path: \"beneficiaries.[]\",\n signature: \"sig\",\n type: \"raw\",\n },\n },\n }),\n };\n // WHEN\n apiMock.sendCommand.mockResolvedValue(\n CommandResultFactory({ data: undefined }),\n );\n await new ProvideEIP712ContextTask(apiMock, contextModuleMock, args).run();\n\n // THEN\n // Activate the filtering\n expect(apiMock.sendCommand.mock.calls[0]![0]).toStrictEqual(\n new SendEIP712FilteringCommand({ type: Eip712FilterType.Activation }),\n );\n // Send the message information filter\n expect(apiMock.sendCommand.mock.calls[1]![0]).toStrictEqual(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.MessageInfo,\n displayName: \"Permit2\",\n filtersCount: 2,\n signature: \"sig\",\n }),\n );\n // Send first array containing 1 element\n expect(apiMock.sendCommand.mock.calls[2]![0]).toStrictEqual(\n sendStructImplArray(1),\n );\n expect(apiMock.sendCommand.mock.calls[3]![0]).toStrictEqual(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.Raw,\n discarded: false,\n displayName: \"Spender\",\n signature: \"sig\",\n }),\n );\n expect(apiMock.sendCommand.mock.calls[4]![0]).toStrictEqual(\n sendStructImplField(\n Uint8Array.from([\n 0x00, 0x14, 0x7c, 0xeb, 0x23, 0xfd, 0x6b, 0xc0, 0xad, 0xd5, 0x9e,\n 0x62, 0xac, 0x25, 0x57, 0x82, 0x70, 0xcf, 0xf1, 0xb9, 0xf6, 0x19,\n ]),\n ),\n );\n // Send second empty array, with discarded filter\n expect(apiMock.sendCommand.mock.calls[5]![0]).toStrictEqual(\n sendStructImplArray(0),\n );\n expect(apiMock.sendCommand.mock.calls[6]![0]).toStrictEqual(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.DiscardedPath,\n path: \"beneficiaries.[]\",\n }),\n );\n expect(apiMock.sendCommand.mock.calls[7]![0]).toStrictEqual(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.Raw,\n discarded: true,\n displayName: \"Beneficiary\",\n signature: \"sig\",\n }),\n );\n });\n});\n"],
|
|
5
|
-
"mappings": "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",
|
|
4
|
+
"sourcesContent": ["import {\n type ClearSignContextSuccess,\n ClearSignContextType,\n type TypedDataClearSignContextSuccess,\n} from \"@ledgerhq/context-module\";\nimport {\n CommandResultFactory,\n hexaStringToBuffer,\n LoadCertificateCommand,\n UnknownDeviceExchangeError,\n} from \"@ledgerhq/device-management-kit\";\nimport { Just, Nothing } from \"purify-ts\";\n\nimport { GetChallengeCommand } from \"@internal/app-binder/command/GetChallengeCommand\";\nimport { ProvideTokenInformationCommand } from \"@internal/app-binder/command/ProvideTokenInformationCommand\";\nimport { ProvideWeb3CheckCommand } from \"@internal/app-binder/command/ProvideWeb3CheckCommand\";\nimport {\n Eip712FilterType,\n SendEIP712FilteringCommand,\n} from \"@internal/app-binder/command/SendEIP712FilteringCommand\";\nimport {\n SendEIP712StructDefinitionCommand,\n StructDefinitionCommand,\n} from \"@internal/app-binder/command/SendEIP712StructDefinitionCommand\";\nimport {\n SendEIP712StructImplemCommand,\n StructImplemType,\n} from \"@internal/app-binder/command/SendEIP712StructImplemCommand\";\nimport { makeDeviceActionInternalApiMock } from \"@internal/app-binder/device-action/__test-utils__/makeInternalApi\";\nimport {\n type FieldType,\n PrimitiveType,\n StructType,\n TypedDataValueArray,\n TypedDataValueField,\n TypedDataValueRoot,\n} from \"@internal/typed-data/model/Types\";\n\nimport {\n ProvideEIP712ContextTask,\n type ProvideEIP712ContextTaskArgs,\n} from \"./ProvideEIP712ContextTask\";\n\ndescribe(\"ProvideEIP712ContextTask\", () => {\n const apiMock = makeDeviceActionInternalApiMock();\n const contextModuleMock = {\n getContext: vi.fn(),\n getContexts: vi.fn(),\n getTypedDataFilters: vi.fn(),\n getWeb3Checks: vi.fn(),\n getSolanaContext: vi.fn(),\n };\n\n const TEST_TYPES = {\n EIP712Domain: {\n name: new PrimitiveType(\"string\", \"string\", Nothing),\n chainId: new PrimitiveType(\"uint256\", \"uint\", Just(32)),\n verifyingContract: new PrimitiveType(\"address\", \"address\", Nothing),\n },\n PermitSingle: {\n details: new StructType(\"PermitDetails\"),\n spender: new PrimitiveType(\"address\", \"address\", Nothing),\n sigDeadline: new PrimitiveType(\"uint256\", \"uint\", Just(32)),\n },\n PermitDetails: {\n token: new PrimitiveType(\"address\", \"address\", Nothing),\n amount: new PrimitiveType(\"uint160\", \"uint\", Just(20)),\n expiration: new PrimitiveType(\"uint48\", \"uint\", Just(6)),\n nonce: new PrimitiveType(\"uint48\", \"uint\", Just(6)),\n },\n };\n const TEST_DOMAIN_VALUES = [\n {\n path: \"\",\n type: \"\",\n value: new TypedDataValueRoot(\"EIP712Domain\"),\n },\n {\n path: \"name\",\n type: \"string\",\n value: new TypedDataValueField(new TextEncoder().encode(\"Permit2\")),\n },\n {\n path: \"chainId\",\n type: \"uint256\",\n value: new TypedDataValueField(Uint8Array.from([137])),\n },\n {\n path: \"verifyingContract\",\n type: \"address\",\n value: new TypedDataValueField(\n hexaStringToBuffer(\"0x000000000022d473030f116ddee9f6b43ac78ba3\")!,\n ),\n },\n ];\n const TEST_MESSAGE_VALUES = [\n {\n path: \"\",\n type: \"\",\n value: new TypedDataValueRoot(\"PermitSingle\"),\n },\n {\n path: \"details.token\",\n type: \"address\",\n value: new TypedDataValueField(\n hexaStringToBuffer(\"0x7ceb23fd6bc0add59e62ac25578270cff1b9f619\")!,\n ),\n },\n {\n path: \"details.amount\",\n type: \"uint160\",\n value: new TypedDataValueField(Uint8Array.from([0x12])),\n },\n {\n path: \"details.expiration\",\n type: \"uint48\",\n value: new TypedDataValueField(Uint8Array.from([0x12])),\n },\n {\n path: \"details.nonce\",\n type: \"uint48\",\n value: new TypedDataValueField(Uint8Array.from([0x00])),\n },\n {\n path: \"spender\",\n type: \"address\",\n value: new TypedDataValueField(\n hexaStringToBuffer(\"0xec7be89e9d109e7e3fec59c222cf297125fefda2\")!,\n ),\n },\n {\n path: \"sigDeadline\",\n type: \"uint256\",\n value: new TypedDataValueField(Uint8Array.from([0x12])),\n },\n ];\n const TEST_CLEAR_SIGN_CONTEXT: TypedDataClearSignContextSuccess = {\n type: \"success\",\n messageInfo: {\n displayName: \"Permit2\",\n filtersCount: 4,\n signature:\n \"3045022100e3c597d13d28a87a88b0239404c668373cf5063362f2a81d09eed4582941dfe802207669aabb504fd5b95b2734057f6b8bbf51f14a69a5f9bdf658a5952cefbf44d3\",\n },\n trustedNamesAddresses: {},\n tokens: {\n 0: \"payload-0x7ceb23fd6bc0add59e62ac25578270cff1b9f619\",\n 255: \"payload-0x000000000022d473030f116ddee9f6b43ac78ba3\",\n },\n filters: {\n \"details.amount\": {\n displayName: \"Amount allowance\",\n path: \"details.amount\",\n signature:\n \"304402201a46e6b4ef89eaf9fcf4945d053bfc5616a826400fd758312fbbe976bafc07ec022025a9b408722baf983ee053f90179c75b0c55bb0668f437d55493e36069bbd5a3\",\n tokenIndex: 255,\n type: \"amount\",\n },\n \"details.expiration\": {\n displayName: \"Approval expire\",\n path: \"details.expiration\",\n signature:\n \"3044022056b3381e4540629ad73bc434ec49d80523234b82f62340fbb77157fb0eb21a680220459fe9cf6ca309f9c7dfc6d4711fea1848dba661563c57f77b3c2dc480b3a63b\",\n type: \"datetime\",\n },\n \"details.token\": {\n displayName: \"Amount allowance\",\n path: \"details.token\",\n signature:\n \"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733\",\n tokenIndex: 0,\n type: \"token\",\n },\n spender: {\n displayName: \"Approve to spender\",\n path: \"spender\",\n signature:\n \"3044022033e5713d9cb9bc375b56a9fb53b736c81ea3c4ac5cfb2d3ca7f8b8f0558fe2430220543ca4fef6d6f725f29e343f167fe9dd582aa856ecb5797259050eb990a1befb\",\n type: \"raw\",\n },\n },\n };\n\n const ADDRESS = new PrimitiveType(\"address\", \"address\", Nothing);\n const STRING = new PrimitiveType(\"string\", \"string\", Nothing);\n const UINT256 = new PrimitiveType(\"uint256\", \"uint\", Just(32));\n const UINT160 = new PrimitiveType(\"uint160\", \"uint\", Just(20));\n const UINT48 = new PrimitiveType(\"uint48\", \"uint\", Just(6));\n const CUSTOM = (name: string) => new StructType(name);\n\n const sendStructDefName = (name: string) =>\n new SendEIP712StructDefinitionCommand({\n command: StructDefinitionCommand.Name,\n name,\n });\n const sendStructDefField = (name: string, type: FieldType) =>\n new SendEIP712StructDefinitionCommand({\n command: StructDefinitionCommand.Field,\n name,\n type,\n });\n const sendStructImplRoot = (value: string) =>\n new SendEIP712StructImplemCommand({\n type: StructImplemType.ROOT,\n value,\n });\n const sendStructImplArray = (value: number) =>\n new SendEIP712StructImplemCommand({\n type: StructImplemType.ARRAY,\n value,\n });\n const sendStructImplField = (data: Uint8Array) =>\n new SendEIP712StructImplemCommand({\n type: StructImplemType.FIELD,\n value: {\n data,\n isLastChunk: true,\n },\n });\n\n beforeEach(() => {\n vi.resetAllMocks();\n });\n\n it(\"Send context with no clear signing context\", async () => {\n // GIVEN\n const args: ProvideEIP712ContextTaskArgs = {\n web3Check: null,\n types: TEST_TYPES,\n domain: TEST_DOMAIN_VALUES,\n message: TEST_MESSAGE_VALUES,\n clearSignContext: Nothing,\n };\n // WHEN\n apiMock.sendCommand.mockResolvedValue(\n CommandResultFactory({ data: undefined }),\n );\n await new ProvideEIP712ContextTask(apiMock, contextModuleMock, args).run();\n\n // THEN\n expect(apiMock.sendCommand.mock.calls).toHaveLength(24);\n // Send Struct definitions\n expect(apiMock.sendCommand.mock.calls[0]![0]).toStrictEqual(\n sendStructDefName(\"EIP712Domain\"),\n );\n expect(apiMock.sendCommand.mock.calls[1]![0]).toStrictEqual(\n sendStructDefField(\"name\", STRING),\n );\n expect(apiMock.sendCommand.mock.calls[2]![0]).toStrictEqual(\n sendStructDefField(\"chainId\", UINT256),\n );\n expect(apiMock.sendCommand.mock.calls[3]![0]).toStrictEqual(\n sendStructDefField(\"verifyingContract\", ADDRESS),\n );\n expect(apiMock.sendCommand.mock.calls[4]![0]).toStrictEqual(\n sendStructDefName(\"PermitDetails\"),\n );\n expect(apiMock.sendCommand.mock.calls[5]![0]).toStrictEqual(\n sendStructDefField(\"token\", ADDRESS),\n );\n expect(apiMock.sendCommand.mock.calls[6]![0]).toStrictEqual(\n sendStructDefField(\"amount\", UINT160),\n );\n expect(apiMock.sendCommand.mock.calls[7]![0]).toStrictEqual(\n sendStructDefField(\"expiration\", UINT48),\n );\n expect(apiMock.sendCommand.mock.calls[8]![0]).toStrictEqual(\n sendStructDefField(\"nonce\", UINT48),\n );\n expect(apiMock.sendCommand.mock.calls[9]![0]).toStrictEqual(\n sendStructDefName(\"PermitSingle\"),\n );\n expect(apiMock.sendCommand.mock.calls[10]![0]).toStrictEqual(\n sendStructDefField(\"details\", CUSTOM(\"PermitDetails\")),\n );\n expect(apiMock.sendCommand.mock.calls[11]![0]).toStrictEqual(\n sendStructDefField(\"spender\", ADDRESS),\n );\n expect(apiMock.sendCommand.mock.calls[12]![0]).toStrictEqual(\n sendStructDefField(\"sigDeadline\", UINT256),\n );\n // Send the domain values\n expect(apiMock.sendCommand.mock.calls[13]![0]).toStrictEqual(\n sendStructImplRoot(\"EIP712Domain\"),\n );\n expect(apiMock.sendCommand.mock.calls[14]![0]).toStrictEqual(\n sendStructImplField(\n Uint8Array.from([0x00, 0x07, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x32]),\n ),\n );\n expect(apiMock.sendCommand.mock.calls[15]![0]).toStrictEqual(\n sendStructImplField(Uint8Array.from([0x00, 0x01, 0x89])),\n );\n expect(apiMock.sendCommand.mock.calls[16]![0]).toStrictEqual(\n sendStructImplField(\n Uint8Array.from([\n 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0xd4, 0x73, 0x03,\n 0x0f, 0x11, 0x6d, 0xde, 0xe9, 0xf6, 0xb4, 0x3a, 0xc7, 0x8b, 0xa3,\n ]),\n ),\n );\n // Send the message values\n expect(apiMock.sendCommand.mock.calls[17]![0]).toStrictEqual(\n sendStructImplRoot(\"PermitSingle\"),\n );\n expect(apiMock.sendCommand.mock.calls[18]![0]).toStrictEqual(\n sendStructImplField(\n Uint8Array.from([\n 0x00, 0x14, 0x7c, 0xeb, 0x23, 0xfd, 0x6b, 0xc0, 0xad, 0xd5, 0x9e,\n 0x62, 0xac, 0x25, 0x57, 0x82, 0x70, 0xcf, 0xf1, 0xb9, 0xf6, 0x19,\n ]),\n ),\n );\n expect(apiMock.sendCommand.mock.calls[19]![0]).toStrictEqual(\n sendStructImplField(Uint8Array.from([0x00, 0x01, 0x12])),\n );\n expect(apiMock.sendCommand.mock.calls[20]![0]).toStrictEqual(\n sendStructImplField(Uint8Array.from([0x00, 0x01, 0x12])),\n );\n expect(apiMock.sendCommand.mock.calls[21]![0]).toStrictEqual(\n sendStructImplField(Uint8Array.from([0x00, 0x01, 0x00])),\n );\n expect(apiMock.sendCommand.mock.calls[22]![0]).toStrictEqual(\n sendStructImplField(\n Uint8Array.from([\n 0x00, 0x14, 0xec, 0x7b, 0xe8, 0x9e, 0x9d, 0x10, 0x9e, 0x7e, 0x3f,\n 0xec, 0x59, 0xc2, 0x22, 0xcf, 0x29, 0x71, 0x25, 0xfe, 0xfd, 0xa2,\n ]),\n ),\n );\n expect(apiMock.sendCommand.mock.calls[23]![0]).toStrictEqual(\n sendStructImplField(Uint8Array.from([0x00, 0x01, 0x12])),\n );\n });\n\n it(\"Send context with clear signing\", async () => {\n // GIVEN\n const args: ProvideEIP712ContextTaskArgs = {\n web3Check: null,\n types: TEST_TYPES,\n domain: TEST_DOMAIN_VALUES,\n message: TEST_MESSAGE_VALUES,\n clearSignContext: Just(TEST_CLEAR_SIGN_CONTEXT),\n };\n apiMock.sendCommand\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: { tokenIndex: 4 } })) // First token provided\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: { tokenIndex: 5 } })); // Second token provided\n // WHEN\n apiMock.sendCommand.mockResolvedValue(\n CommandResultFactory({ data: undefined }),\n );\n await new ProvideEIP712ContextTask(apiMock, contextModuleMock, args).run();\n\n // THEN\n expect(apiMock.sendCommand.mock.calls).toHaveLength(32);\n // Send Struct definitions\n expect(apiMock.sendCommand.mock.calls[0]![0]).toStrictEqual(\n sendStructDefName(\"EIP712Domain\"),\n );\n expect(apiMock.sendCommand.mock.calls[1]![0]).toStrictEqual(\n sendStructDefField(\"name\", STRING),\n );\n expect(apiMock.sendCommand.mock.calls[2]![0]).toStrictEqual(\n sendStructDefField(\"chainId\", UINT256),\n );\n expect(apiMock.sendCommand.mock.calls[3]![0]).toStrictEqual(\n sendStructDefField(\"verifyingContract\", ADDRESS),\n );\n expect(apiMock.sendCommand.mock.calls[4]![0]).toStrictEqual(\n sendStructDefName(\"PermitDetails\"),\n );\n expect(apiMock.sendCommand.mock.calls[5]![0]).toStrictEqual(\n sendStructDefField(\"token\", ADDRESS),\n );\n expect(apiMock.sendCommand.mock.calls[6]![0]).toStrictEqual(\n sendStructDefField(\"amount\", UINT160),\n );\n expect(apiMock.sendCommand.mock.calls[7]![0]).toStrictEqual(\n sendStructDefField(\"expiration\", UINT48),\n );\n expect(apiMock.sendCommand.mock.calls[8]![0]).toStrictEqual(\n sendStructDefField(\"nonce\", UINT48),\n );\n expect(apiMock.sendCommand.mock.calls[9]![0]).toStrictEqual(\n sendStructDefName(\"PermitSingle\"),\n );\n expect(apiMock.sendCommand.mock.calls[10]![0]).toStrictEqual(\n sendStructDefField(\"details\", CUSTOM(\"PermitDetails\")),\n );\n expect(apiMock.sendCommand.mock.calls[11]![0]).toStrictEqual(\n sendStructDefField(\"spender\", ADDRESS),\n );\n expect(apiMock.sendCommand.mock.calls[12]![0]).toStrictEqual(\n sendStructDefField(\"sigDeadline\", UINT256),\n );\n // Activate the filtering\n expect(apiMock.sendCommand.mock.calls[13]![0]).toStrictEqual(\n new SendEIP712FilteringCommand({ type: Eip712FilterType.Activation }),\n );\n // Send the domain values\n expect(apiMock.sendCommand.mock.calls[14]![0]).toStrictEqual(\n sendStructImplRoot(\"EIP712Domain\"),\n );\n expect(apiMock.sendCommand.mock.calls[15]![0]).toStrictEqual(\n sendStructImplField(\n Uint8Array.from([0x00, 0x07, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x32]),\n ),\n );\n expect(apiMock.sendCommand.mock.calls[16]![0]).toStrictEqual(\n sendStructImplField(Uint8Array.from([0x00, 0x01, 0x89])),\n );\n expect(apiMock.sendCommand.mock.calls[17]![0]).toStrictEqual(\n sendStructImplField(\n Uint8Array.from([\n 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0xd4, 0x73, 0x03,\n 0x0f, 0x11, 0x6d, 0xde, 0xe9, 0xf6, 0xb4, 0x3a, 0xc7, 0x8b, 0xa3,\n ]),\n ),\n );\n // Send the message information filter\n expect(apiMock.sendCommand.mock.calls[18]![0]).toStrictEqual(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.MessageInfo,\n displayName: \"Permit2\",\n filtersCount: 4,\n signature:\n \"3045022100e3c597d13d28a87a88b0239404c668373cf5063362f2a81d09eed4582941dfe802207669aabb504fd5b95b2734057f6b8bbf51f14a69a5f9bdf658a5952cefbf44d3\",\n }),\n );\n // Send the message values with corresponding filters\n expect(apiMock.sendCommand.mock.calls[19]![0]).toStrictEqual(\n sendStructImplRoot(\"PermitSingle\"),\n );\n expect(apiMock.sendCommand.mock.calls[20]![0]).toStrictEqual(\n new ProvideTokenInformationCommand({\n payload: \"payload-0x7ceb23fd6bc0add59e62ac25578270cff1b9f619\",\n }),\n );\n expect(apiMock.sendCommand.mock.calls[21]![0]).toStrictEqual(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.Token,\n discarded: false,\n tokenIndex: 4,\n signature:\n \"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733\",\n }),\n );\n expect(apiMock.sendCommand.mock.calls[22]![0]).toStrictEqual(\n sendStructImplField(\n Uint8Array.from([\n 0x00, 0x14, 0x7c, 0xeb, 0x23, 0xfd, 0x6b, 0xc0, 0xad, 0xd5, 0x9e,\n 0x62, 0xac, 0x25, 0x57, 0x82, 0x70, 0xcf, 0xf1, 0xb9, 0xf6, 0x19,\n ]),\n ),\n );\n expect(apiMock.sendCommand.mock.calls[23]![0]).toStrictEqual(\n new ProvideTokenInformationCommand({\n payload: \"payload-0x000000000022d473030f116ddee9f6b43ac78ba3\",\n }),\n );\n expect(apiMock.sendCommand.mock.calls[24]![0]).toStrictEqual(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.Amount,\n discarded: false,\n displayName: \"Amount allowance\",\n tokenIndex: 255,\n signature:\n \"304402201a46e6b4ef89eaf9fcf4945d053bfc5616a826400fd758312fbbe976bafc07ec022025a9b408722baf983ee053f90179c75b0c55bb0668f437d55493e36069bbd5a3\",\n }),\n );\n expect(apiMock.sendCommand.mock.calls[25]![0]).toStrictEqual(\n sendStructImplField(Uint8Array.from([0x00, 0x01, 0x12])),\n );\n expect(apiMock.sendCommand.mock.calls[26]![0]).toStrictEqual(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.Datetime,\n discarded: false,\n displayName: \"Approval expire\",\n signature:\n \"3044022056b3381e4540629ad73bc434ec49d80523234b82f62340fbb77157fb0eb21a680220459fe9cf6ca309f9c7dfc6d4711fea1848dba661563c57f77b3c2dc480b3a63b\",\n }),\n );\n expect(apiMock.sendCommand.mock.calls[27]![0]).toStrictEqual(\n sendStructImplField(Uint8Array.from([0x00, 0x01, 0x12])),\n );\n expect(apiMock.sendCommand.mock.calls[28]![0]).toStrictEqual(\n sendStructImplField(Uint8Array.from([0x00, 0x01, 0x00])),\n );\n expect(apiMock.sendCommand.mock.calls[29]![0]).toStrictEqual(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.Raw,\n discarded: false,\n displayName: \"Approve to spender\",\n signature:\n \"3044022033e5713d9cb9bc375b56a9fb53b736c81ea3c4ac5cfb2d3ca7f8b8f0558fe2430220543ca4fef6d6f725f29e343f167fe9dd582aa856ecb5797259050eb990a1befb\",\n }),\n );\n expect(apiMock.sendCommand.mock.calls[30]![0]).toStrictEqual(\n sendStructImplField(\n Uint8Array.from([\n 0x00, 0x14, 0xec, 0x7b, 0xe8, 0x9e, 0x9d, 0x10, 0x9e, 0x7e, 0x3f,\n 0xec, 0x59, 0xc2, 0x22, 0xcf, 0x29, 0x71, 0x25, 0xfe, 0xfd, 0xa2,\n ]),\n ),\n );\n expect(apiMock.sendCommand.mock.calls[31]![0]).toStrictEqual(\n sendStructImplField(Uint8Array.from([0x00, 0x01, 0x12])),\n );\n });\n\n it(\"Both tokens unavailable\", async () => {\n // GIVEN\n const args: ProvideEIP712ContextTaskArgs = {\n web3Check: null,\n types: TEST_TYPES,\n domain: TEST_DOMAIN_VALUES,\n message: TEST_MESSAGE_VALUES,\n clearSignContext: Just({\n type: \"success\",\n messageInfo: TEST_CLEAR_SIGN_CONTEXT.messageInfo,\n filters: TEST_CLEAR_SIGN_CONTEXT.filters,\n trustedNamesAddresses: {},\n tokens: {},\n }),\n };\n\n // WHEN\n apiMock.sendCommand.mockResolvedValue(\n CommandResultFactory({ data: undefined }),\n );\n await new ProvideEIP712ContextTask(apiMock, contextModuleMock, args).run();\n\n // THEN\n expect(apiMock.sendCommand).not.toHaveBeenCalledWith(\n new ProvideTokenInformationCommand({\n payload: \"payload-0x7ceb23fd6bc0add59e62ac25578270cff1b9f619\",\n }),\n );\n expect(apiMock.sendCommand).not.toHaveBeenCalledWith(\n new ProvideTokenInformationCommand({\n payload: \"payload-0x000000000022d473030f116ddee9f6b43ac78ba3\",\n }),\n );\n expect(apiMock.sendCommand).toHaveBeenCalledWith(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.Token,\n discarded: false,\n tokenIndex: 0,\n signature:\n \"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733\",\n }),\n );\n expect(apiMock.sendCommand).toHaveBeenCalledWith(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.Amount,\n discarded: false,\n displayName: \"Amount allowance\",\n tokenIndex: 1,\n signature:\n \"304402201a46e6b4ef89eaf9fcf4945d053bfc5616a826400fd758312fbbe976bafc07ec022025a9b408722baf983ee053f90179c75b0c55bb0668f437d55493e36069bbd5a3\",\n }),\n );\n });\n\n it(\"First token unavailable\", async () => {\n // GIVEN\n const args: ProvideEIP712ContextTaskArgs = {\n web3Check: null,\n types: TEST_TYPES,\n domain: TEST_DOMAIN_VALUES,\n message: TEST_MESSAGE_VALUES,\n clearSignContext: Just({\n type: \"success\",\n messageInfo: TEST_CLEAR_SIGN_CONTEXT.messageInfo,\n filters: TEST_CLEAR_SIGN_CONTEXT.filters,\n trustedNamesAddresses: {},\n tokens: { 255: \"payload-0x000000000022d473030f116ddee9f6b43ac78ba3\" },\n }),\n };\n\n // WHEN\n apiMock.sendCommand.mockResolvedValue(\n CommandResultFactory({ data: { tokenIndex: 4 } }),\n );\n await new ProvideEIP712ContextTask(apiMock, contextModuleMock, args).run();\n\n // THEN\n expect(apiMock.sendCommand).toHaveBeenCalledWith(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.Token,\n discarded: false,\n tokenIndex: 0,\n signature:\n \"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733\",\n }),\n );\n expect(apiMock.sendCommand).toHaveBeenCalledWith(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.Amount,\n discarded: false,\n displayName: \"Amount allowance\",\n tokenIndex: 255,\n signature:\n \"304402201a46e6b4ef89eaf9fcf4945d053bfc5616a826400fd758312fbbe976bafc07ec022025a9b408722baf983ee053f90179c75b0c55bb0668f437d55493e36069bbd5a3\",\n }),\n );\n });\n\n it(\"Second token unavailable\", async () => {\n // GIVEN\n const args: ProvideEIP712ContextTaskArgs = {\n web3Check: null,\n types: TEST_TYPES,\n domain: TEST_DOMAIN_VALUES,\n message: TEST_MESSAGE_VALUES,\n clearSignContext: Just({\n type: \"success\",\n messageInfo: TEST_CLEAR_SIGN_CONTEXT.messageInfo,\n filters: TEST_CLEAR_SIGN_CONTEXT.filters,\n trustedNamesAddresses: {},\n tokens: { 0: \"payload-0x7ceb23fd6bc0add59e62ac25578270cff1b9f619\" },\n }),\n };\n\n // WHEN\n apiMock.sendCommand.mockResolvedValue(\n CommandResultFactory({ data: { tokenIndex: 4 } }),\n );\n await new ProvideEIP712ContextTask(apiMock, contextModuleMock, args).run();\n\n // THEN\n expect(apiMock.sendCommand).toHaveBeenCalledWith(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.Token,\n discarded: false,\n tokenIndex: 4,\n signature:\n \"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733\",\n }),\n );\n expect(apiMock.sendCommand).toHaveBeenCalledWith(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.Amount,\n discarded: false,\n displayName: \"Amount allowance\",\n tokenIndex: 0,\n signature:\n \"304402201a46e6b4ef89eaf9fcf4945d053bfc5616a826400fd758312fbbe976bafc07ec022025a9b408722baf983ee053f90179c75b0c55bb0668f437d55493e36069bbd5a3\",\n }),\n );\n });\n\n it(\"Filter with trusted name\", async () => {\n // GIVEN\n const args: ProvideEIP712ContextTaskArgs = {\n web3Check: null,\n types: TEST_TYPES,\n domain: TEST_DOMAIN_VALUES,\n message: TEST_MESSAGE_VALUES,\n clearSignContext: Just({\n type: \"success\",\n messageInfo: TEST_CLEAR_SIGN_CONTEXT.messageInfo,\n filters: {\n \"details.token\": {\n displayName: \"Amount allowance\",\n path: \"details.token\",\n signature:\n \"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733\",\n types: [\"contract\"],\n sources: [\"local\", \"ens\"],\n typesAndSourcesPayload: \"010203010002\",\n type: \"trusted-name\",\n },\n },\n trustedNamesAddresses: {\n \"details.token\": \"0x7ceb23fd6bc0add59e62ac25578270cff1b9f619\",\n },\n tokens: {},\n }),\n };\n\n // WHEN\n apiMock.sendCommand.mockResolvedValue(\n CommandResultFactory({ data: { challenge: \"0x42\" } }),\n );\n contextModuleMock.getContext.mockResolvedValue({\n type: ClearSignContextType.TRUSTED_NAME,\n payload: \"0x01020304\",\n });\n await new ProvideEIP712ContextTask(apiMock, contextModuleMock, args).run();\n\n // THEN\n expect(apiMock.sendCommand).toHaveBeenCalledWith(new GetChallengeCommand());\n expect(contextModuleMock.getContext).toHaveBeenCalledWith({\n type: ClearSignContextType.TRUSTED_NAME,\n chainId: 137,\n address: \"0x7ceb23fd6bc0add59e62ac25578270cff1b9f619\",\n types: [\"contract\"],\n sources: [\"local\", \"ens\"],\n challenge: \"0x42\",\n });\n expect(apiMock.sendCommand).toHaveBeenCalledWith(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.TrustedName,\n discarded: false,\n displayName: \"Amount allowance\",\n typesAndSourcesPayload: \"010203010002\",\n signature:\n \"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733\",\n }),\n );\n });\n\n it(\"Filter with trusted name and certificate\", async () => {\n // GIVEN\n const args: ProvideEIP712ContextTaskArgs = {\n web3Check: null,\n types: TEST_TYPES,\n domain: TEST_DOMAIN_VALUES,\n message: TEST_MESSAGE_VALUES,\n clearSignContext: Just({\n type: \"success\",\n messageInfo: TEST_CLEAR_SIGN_CONTEXT.messageInfo,\n filters: {\n \"details.token\": {\n displayName: \"Amount allowance\",\n path: \"details.token\",\n signature:\n \"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733\",\n types: [\"contract\"],\n sources: [\"local\", \"ens\"],\n typesAndSourcesPayload: \"010203010002\",\n type: \"trusted-name\",\n },\n },\n trustedNamesAddresses: {\n \"details.token\": \"0x7ceb23fd6bc0add59e62ac25578270cff1b9f619\",\n },\n tokens: {},\n }),\n };\n\n // WHEN\n apiMock.sendCommand.mockResolvedValue(\n CommandResultFactory({ data: { challenge: \"0x42\" } }),\n );\n contextModuleMock.getContext.mockResolvedValue({\n type: ClearSignContextType.TRUSTED_NAME,\n certificate: {\n keyUsageNumber: 7,\n payload: new Uint8Array(3).fill(42),\n },\n payload: \"0x01020304\",\n });\n await new ProvideEIP712ContextTask(apiMock, contextModuleMock, args).run();\n\n // THEN\n expect(apiMock.sendCommand).toHaveBeenCalledWith(new GetChallengeCommand());\n expect(contextModuleMock.getContext).toHaveBeenCalledWith({\n type: ClearSignContextType.TRUSTED_NAME,\n chainId: 137,\n address: \"0x7ceb23fd6bc0add59e62ac25578270cff1b9f619\",\n types: [\"contract\"],\n sources: [\"local\", \"ens\"],\n challenge: \"0x42\",\n });\n expect(apiMock.sendCommand).toHaveBeenCalledWith(\n new LoadCertificateCommand({\n keyUsage: 7,\n certificate: new Uint8Array(3).fill(42),\n }),\n );\n expect(apiMock.sendCommand).toHaveBeenCalledWith(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.TrustedName,\n discarded: false,\n displayName: \"Amount allowance\",\n typesAndSourcesPayload: \"010203010002\",\n signature:\n \"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733\",\n }),\n );\n });\n\n it(\"Provide Web3Check\", async () => {\n // GIVEN\n const web3Check: ClearSignContextSuccess<ClearSignContextType.WEB3_CHECK> =\n {\n type: ClearSignContextType.WEB3_CHECK,\n payload: \"0x010203\",\n };\n const args: ProvideEIP712ContextTaskArgs = {\n web3Check,\n types: TEST_TYPES,\n domain: TEST_DOMAIN_VALUES,\n message: TEST_MESSAGE_VALUES,\n clearSignContext: Nothing,\n };\n\n // WHEN\n apiMock.sendCommand.mockResolvedValue(\n CommandResultFactory({ data: undefined }),\n );\n await new ProvideEIP712ContextTask(apiMock, contextModuleMock, args).run();\n\n // THEN\n expect(apiMock.sendCommand).toHaveBeenCalledWith(\n new ProvideWeb3CheckCommand({\n payload: hexaStringToBuffer(\"0x0003010203\")!,\n isFirstChunk: true,\n }),\n );\n });\n\n it(\"Provide Web3Check and certificate\", async () => {\n // GIVEN\n const web3Check: ClearSignContextSuccess<ClearSignContextType.WEB3_CHECK> =\n {\n type: ClearSignContextType.WEB3_CHECK,\n certificate: {\n keyUsageNumber: 3,\n payload: new Uint8Array(3).fill(42),\n },\n payload: \"0x010203\",\n };\n const args: ProvideEIP712ContextTaskArgs = {\n web3Check,\n types: TEST_TYPES,\n domain: TEST_DOMAIN_VALUES,\n message: TEST_MESSAGE_VALUES,\n clearSignContext: Nothing,\n };\n\n // WHEN\n apiMock.sendCommand.mockResolvedValue(\n CommandResultFactory({ data: undefined }),\n );\n await new ProvideEIP712ContextTask(apiMock, contextModuleMock, args).run();\n\n // THEN\n expect(apiMock.sendCommand).toHaveBeenCalledWith(\n new LoadCertificateCommand({\n keyUsage: 3,\n certificate: web3Check.certificate!.payload,\n }),\n );\n expect(apiMock.sendCommand).toHaveBeenCalledWith(\n new ProvideWeb3CheckCommand({\n payload: hexaStringToBuffer(\"0x0003010203\")!,\n isFirstChunk: true,\n }),\n );\n });\n\n it(\"Error when providing tokens\", async () => {\n // GIVEN\n const args: ProvideEIP712ContextTaskArgs = {\n web3Check: null,\n types: TEST_TYPES,\n domain: TEST_DOMAIN_VALUES,\n message: TEST_MESSAGE_VALUES,\n clearSignContext: Just(TEST_CLEAR_SIGN_CONTEXT),\n };\n apiMock.sendCommand.mockResolvedValueOnce(\n CommandResultFactory({\n error: new UnknownDeviceExchangeError(\"error\"),\n }),\n );\n // WHEN\n const promise = new ProvideEIP712ContextTask(\n apiMock,\n contextModuleMock,\n args,\n ).run();\n\n // THEN\n await expect(promise).resolves.toStrictEqual(\n CommandResultFactory({\n error: new UnknownDeviceExchangeError(\"error\"),\n }),\n );\n });\n\n it(\"Error when sending struct definitions\", async () => {\n // GIVEN\n const args: ProvideEIP712ContextTaskArgs = {\n web3Check: null,\n types: TEST_TYPES,\n domain: TEST_DOMAIN_VALUES,\n message: TEST_MESSAGE_VALUES,\n clearSignContext: Just(TEST_CLEAR_SIGN_CONTEXT),\n };\n apiMock.sendCommand\n .mockResolvedValueOnce(CommandResultFactory({ data: { tokenIndex: 4 } }))\n .mockResolvedValueOnce(CommandResultFactory({ data: { tokenIndex: 5 } }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(\n CommandResultFactory({\n error: new UnknownDeviceExchangeError(\"error\"),\n }),\n );\n // WHEN\n const promise = new ProvideEIP712ContextTask(\n apiMock,\n contextModuleMock,\n args,\n ).run();\n\n // THEN\n await expect(promise).resolves.toStrictEqual(\n CommandResultFactory({ error: new UnknownDeviceExchangeError(\"error\") }),\n );\n });\n\n it(\"Error when sending struct implementations\", async () => {\n // GIVEN\n const args: ProvideEIP712ContextTaskArgs = {\n web3Check: null,\n types: TEST_TYPES,\n domain: TEST_DOMAIN_VALUES,\n message: TEST_MESSAGE_VALUES,\n clearSignContext: Nothing,\n };\n // WHEN\n apiMock.sendCommand\n // Struct definitions\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n // Struct implementations\n .mockResolvedValueOnce(\n CommandResultFactory({\n error: new UnknownDeviceExchangeError(\"error\"),\n }),\n )\n .mockResolvedValue(CommandResultFactory({ data: undefined }));\n const promise = new ProvideEIP712ContextTask(\n apiMock,\n contextModuleMock,\n args,\n ).run();\n\n // THEN\n await expect(promise).resolves.toStrictEqual(\n CommandResultFactory({ error: new UnknownDeviceExchangeError(\"error\") }),\n );\n });\n\n it(\"Send struct array\", async () => {\n // GIVEN\n const args: ProvideEIP712ContextTaskArgs = {\n web3Check: null,\n types: {},\n domain: [],\n message: [\n // Array containing an element\n {\n path: \"spenders\",\n type: \"address[]\",\n value: new TypedDataValueArray(1),\n },\n {\n path: \"spenders.[]\",\n type: \"address\",\n value: new TypedDataValueField(\n hexaStringToBuffer(\"0x7ceb23fd6bc0add59e62ac25578270cff1b9f619\")!,\n ),\n },\n // Empty array\n {\n path: \"beneficiaries\",\n type: \"address[]\",\n value: new TypedDataValueArray(0),\n },\n ],\n clearSignContext: Just({\n type: \"success\",\n messageInfo: {\n displayName: \"Permit2\",\n filtersCount: 2,\n signature: \"sig\",\n },\n trustedNamesAddresses: {},\n tokens: {},\n filters: {\n \"spenders.[]\": {\n displayName: \"Spender\",\n path: \"spenders.[]\",\n signature: \"sig\",\n type: \"raw\",\n },\n \"beneficiaries.[]\": {\n displayName: \"Beneficiary\",\n path: \"beneficiaries.[]\",\n signature: \"sig\",\n type: \"raw\",\n },\n },\n }),\n };\n // WHEN\n apiMock.sendCommand.mockResolvedValue(\n CommandResultFactory({ data: undefined }),\n );\n await new ProvideEIP712ContextTask(apiMock, contextModuleMock, args).run();\n\n // THEN\n // Activate the filtering\n expect(apiMock.sendCommand.mock.calls[0]![0]).toStrictEqual(\n new SendEIP712FilteringCommand({ type: Eip712FilterType.Activation }),\n );\n // Send the message information filter\n expect(apiMock.sendCommand.mock.calls[1]![0]).toStrictEqual(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.MessageInfo,\n displayName: \"Permit2\",\n filtersCount: 2,\n signature: \"sig\",\n }),\n );\n // Send first array containing 1 element\n expect(apiMock.sendCommand.mock.calls[2]![0]).toStrictEqual(\n sendStructImplArray(1),\n );\n expect(apiMock.sendCommand.mock.calls[3]![0]).toStrictEqual(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.Raw,\n discarded: false,\n displayName: \"Spender\",\n signature: \"sig\",\n }),\n );\n expect(apiMock.sendCommand.mock.calls[4]![0]).toStrictEqual(\n sendStructImplField(\n Uint8Array.from([\n 0x00, 0x14, 0x7c, 0xeb, 0x23, 0xfd, 0x6b, 0xc0, 0xad, 0xd5, 0x9e,\n 0x62, 0xac, 0x25, 0x57, 0x82, 0x70, 0xcf, 0xf1, 0xb9, 0xf6, 0x19,\n ]),\n ),\n );\n // Send second empty array, with discarded filter\n expect(apiMock.sendCommand.mock.calls[5]![0]).toStrictEqual(\n sendStructImplArray(0),\n );\n expect(apiMock.sendCommand.mock.calls[6]![0]).toStrictEqual(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.DiscardedPath,\n path: \"beneficiaries.[]\",\n }),\n );\n expect(apiMock.sendCommand.mock.calls[7]![0]).toStrictEqual(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.Raw,\n discarded: true,\n displayName: \"Beneficiary\",\n signature: \"sig\",\n }),\n );\n });\n});\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["ClearSignContextType", "CommandResultFactory", "hexaStringToBuffer", "LoadCertificateCommand", "UnknownDeviceExchangeError", "Just", "Nothing", "GetChallengeCommand", "ProvideTokenInformationCommand", "ProvideWeb3CheckCommand", "Eip712FilterType", "SendEIP712FilteringCommand", "SendEIP712StructDefinitionCommand", "StructDefinitionCommand", "SendEIP712StructImplemCommand", "StructImplemType", "makeDeviceActionInternalApiMock", "PrimitiveType", "StructType", "TypedDataValueArray", "TypedDataValueField", "TypedDataValueRoot", "ProvideEIP712ContextTask", "apiMock", "contextModuleMock", "TEST_TYPES", "TEST_DOMAIN_VALUES", "TEST_MESSAGE_VALUES", "TEST_CLEAR_SIGN_CONTEXT", "ADDRESS", "STRING", "UINT256", "UINT160", "UINT48", "CUSTOM", "name", "sendStructDefName", "sendStructDefField", "type", "sendStructImplRoot", "value", "sendStructImplArray", "sendStructImplField", "data", "args", "web3Check", "promise"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{ClearSignContextType as
|
|
1
|
+
import{ClearSignContextType as a}from"@ledgerhq/context-module";import{ByteArrayBuilder as C,CommandResultFactory as h,InvalidStatusWordError as k,isSuccessCommandResult as d,LoadCertificateCommand as p}from"@ledgerhq/device-management-kit";import{DerivationPathUtils as T}from"@ledgerhq/signer-utils";import{Left as m,Right as y}from"purify-ts";import{ProvideEnumCommand as l}from"../../app-binder/command/ProvideEnumCommand";import{NetworkConfigurationType as u,ProvideNetworkConfigurationCommand as c}from"../../app-binder/command/ProvideNetworkConfigurationCommand";import{ProvideNFTInformationCommand as F}from"../../app-binder/command/ProvideNFTInformationCommand";import{ProvideProxyInfoCommand as I}from"../../app-binder/command/ProvideProxyInfoCommand";import{ProvideTokenInformationCommand as _}from"../../app-binder/command/ProvideTokenInformationCommand";import{ProvideTransactionFieldDescriptionCommand as f}from"../../app-binder/command/ProvideTransactionFieldDescriptionCommand";import{ProvideTransactionInformationCommand as P}from"../../app-binder/command/ProvideTransactionInformationCommand";import{ProvideTrustedNameCommand as w}from"../../app-binder/command/ProvideTrustedNameCommand";import{ProvideWeb3CheckCommand as E}from"../../app-binder/command/ProvideWeb3CheckCommand";import{SetExternalPluginCommand as v}from"../../app-binder/command/SetExternalPluginCommand";import{SetPluginCommand as N}from"../../app-binder/command/SetPluginCommand";import{StoreTransactionCommand as S}from"../../app-binder/command/StoreTransactionCommand";import{SendCommandInChunksTask as x}from"./SendCommandInChunksTask";import{SendPayloadInChunksTask as A}from"./SendPayloadInChunksTask";class J{constructor(i,t,o=(r,s)=>new A(r,s),n=(r,s)=>new x(r,s)){this._api=i;this._args=t;this._sendPayloadInChunksTaskFactory=o;this._sendCommandInChunksTaskFactory=n}async run(){for(const t of this._args.subcontextsCallbacks){const o=await t();if(o.type===a.ERROR)continue;const n=await this.provideContext(o);if(!d(n))return m(n)}const i=await this.provideContext(this._args.context);return d(i)?y(void 0):m(i)}async provideContext({type:i,payload:t,certificate:o}){switch(o&&await this._api.sendCommand(new p({keyUsage:o.keyUsageNumber,certificate:o.payload})),i){case a.PLUGIN:return await this._api.sendCommand(new N({payload:t}));case a.EXTERNAL_PLUGIN:return await this._api.sendCommand(new v({payload:t}));case a.NFT:return await this._api.sendCommand(new F({payload:t}));case a.TOKEN:return await this._api.sendCommand(new _({payload:t}));case a.TRANSACTION_INFO:{const n=T.splitPath(this._args.derivationPath),r=new C;return r.add8BitUIntToData(n.length),n.forEach(e=>{r.add32BitUIntToData(e)}),r.addBufferToData(this._args.serializedTransaction),await this._sendCommandInChunksTaskFactory(this._api,{data:r.build(),commandFactory:e=>new S({serializedTransaction:e.chunkedData,isFirstChunk:e.isFirstChunk})}).run(),await this._sendPayloadInChunksTaskFactory(this._api,{payload:this._args.context.payload,commandFactory:e=>new P({data:e.chunkedData,isFirstChunk:e.isFirstChunk})}).run()}case a.TRUSTED_NAME:return this._sendPayloadInChunksTaskFactory(this._api,{payload:t,commandFactory:n=>new w({data:n.chunkedData,isFirstChunk:n.isFirstChunk})}).run();case a.ENUM:return this._sendPayloadInChunksTaskFactory(this._api,{payload:t,commandFactory:n=>new l({data:n.chunkedData,isFirstChunk:n.isFirstChunk})}).run();case a.TRANSACTION_FIELD_DESCRIPTION:return this._sendPayloadInChunksTaskFactory(this._api,{payload:t,commandFactory:n=>new f({data:n.chunkedData,isFirstChunk:n.isFirstChunk})}).run();case a.WEB3_CHECK:return this._sendPayloadInChunksTaskFactory(this._api,{payload:t,commandFactory:n=>new E({payload:n.chunkedData,isFirstChunk:n.isFirstChunk})}).run();case a.PROXY_DELEGATE_CALL:return this._sendPayloadInChunksTaskFactory(this._api,{payload:t,commandFactory:n=>new I({data:n.chunkedData,isFirstChunk:n.isFirstChunk})}).run();case a.DYNAMIC_NETWORK:return this._sendPayloadInChunksTaskFactory(this._api,{payload:t,commandFactory:n=>new c({data:n.chunkedData,isFirstChunk:n.isFirstChunk,configurationType:u.CONFIGURATION})}).run();case a.DYNAMIC_NETWORK_ICON:return this._sendPayloadInChunksTaskFactory(this._api,{payload:t,commandFactory:n=>new c({data:n.chunkedData,isFirstChunk:n.isFirstChunk,configurationType:u.ICON}),withPayloadLength:!1}).run();default:{const n=i;return h({error:new k(`The context type [${n}] is not covered`)})}}}}export{J as ProvideTransactionContextTask};
|
|
2
2
|
//# sourceMappingURL=ProvideTransactionContextTask.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/internal/app-binder/task/ProvideTransactionContextTask.ts"],
|
|
4
|
-
"sourcesContent": ["import {\n type ClearSignContextSuccess,\n ClearSignContextType,\n} from \"@ledgerhq/context-module\";\nimport {\n type CommandErrorResult,\n type CommandResult,\n CommandResultFactory,\n type InternalApi,\n InvalidStatusWordError,\n isSuccessCommandResult,\n LoadCertificateCommand,\n} from \"@ledgerhq/device-management-kit\";\nimport {
|
|
5
|
-
"mappings": "AAAA,
|
|
6
|
-
"names": ["ClearSignContextType", "CommandResultFactory", "InvalidStatusWordError", "isSuccessCommandResult", "LoadCertificateCommand", "
|
|
4
|
+
"sourcesContent": ["import {\n type ClearSignContext,\n type ClearSignContextSuccess,\n ClearSignContextType,\n} from \"@ledgerhq/context-module\";\nimport {\n ByteArrayBuilder,\n type CommandErrorResult,\n type CommandResult,\n CommandResultFactory,\n type InternalApi,\n InvalidStatusWordError,\n isSuccessCommandResult,\n LoadCertificateCommand,\n} from \"@ledgerhq/device-management-kit\";\nimport { DerivationPathUtils } from \"@ledgerhq/signer-utils\";\nimport { type Either, Left, Right } from \"purify-ts\";\n\nimport { ProvideEnumCommand } from \"@internal/app-binder/command/ProvideEnumCommand\";\nimport {\n NetworkConfigurationType,\n ProvideNetworkConfigurationCommand,\n} from \"@internal/app-binder/command/ProvideNetworkConfigurationCommand\";\nimport { ProvideNFTInformationCommand } from \"@internal/app-binder/command/ProvideNFTInformationCommand\";\nimport { ProvideProxyInfoCommand } from \"@internal/app-binder/command/ProvideProxyInfoCommand\";\nimport { ProvideTokenInformationCommand } from \"@internal/app-binder/command/ProvideTokenInformationCommand\";\nimport { ProvideTransactionFieldDescriptionCommand } from \"@internal/app-binder/command/ProvideTransactionFieldDescriptionCommand\";\nimport { ProvideTransactionInformationCommand } from \"@internal/app-binder/command/ProvideTransactionInformationCommand\";\nimport { ProvideTrustedNameCommand } from \"@internal/app-binder/command/ProvideTrustedNameCommand\";\nimport { ProvideWeb3CheckCommand } from \"@internal/app-binder/command/ProvideWeb3CheckCommand\";\nimport { SetExternalPluginCommand } from \"@internal/app-binder/command/SetExternalPluginCommand\";\nimport { SetPluginCommand } from \"@internal/app-binder/command/SetPluginCommand\";\nimport { StoreTransactionCommand } from \"@internal/app-binder/command/StoreTransactionCommand\";\nimport { type EthErrorCodes } from \"@internal/app-binder/command/utils/ethAppErrors\";\n\nimport {\n SendCommandInChunksTask,\n type SendCommandInChunksTaskArgs,\n} from \"./SendCommandInChunksTask\";\nimport {\n SendPayloadInChunksTask,\n type SendPayloadInChunksTaskArgs,\n} from \"./SendPayloadInChunksTask\";\n\nexport type ProvideTransactionContextTaskArgs = {\n /**\n * The clear sign context to provide.\n */\n context: ClearSignContextSuccess;\n /**\n * The subcontexts callbacks to provide.\n */\n subcontextsCallbacks: (() => Promise<ClearSignContext>)[];\n /**\n * The serialized transaction to provide.\n */\n serializedTransaction: Uint8Array;\n /**\n * The derivation path to provide.\n */\n derivationPath: string;\n};\n\n/**\n * This task is responsible for providing the transaction context to the device.\n * It will send the subcontexts callbacks in order and finish with the context.\n */\nexport class ProvideTransactionContextTask {\n constructor(\n private _api: InternalApi,\n private _args: ProvideTransactionContextTaskArgs,\n private _sendPayloadInChunksTaskFactory = (\n api: InternalApi,\n args: SendPayloadInChunksTaskArgs<unknown>,\n ) => new SendPayloadInChunksTask(api, args),\n private _sendCommandInChunksTaskFactory = (\n api: InternalApi,\n args: SendCommandInChunksTaskArgs<unknown>,\n ) => new SendCommandInChunksTask(api, args),\n ) {}\n\n async run(): Promise<Either<CommandErrorResult<EthErrorCodes>, void>> {\n for (const callback of this._args.subcontextsCallbacks) {\n const subcontext = await callback();\n\n if (subcontext.type === ClearSignContextType.ERROR) {\n // silently ignore error subcontexts\n continue;\n }\n\n const res = await this.provideContext(subcontext);\n if (!isSuccessCommandResult(res)) {\n return Left(res);\n }\n }\n\n const res = await this.provideContext(this._args.context);\n if (!isSuccessCommandResult(res)) {\n return Left(res);\n }\n\n return Right(void 0);\n }\n\n /**\n * This method will send the context to the device.\n *\n * @param context The clear sign context to provide.\n * @returns A promise that resolves when the command is sent.\n */\n async provideContext({\n type,\n payload,\n certificate,\n }: ClearSignContextSuccess): Promise<CommandResult<unknown, EthErrorCodes>> {\n // if a certificate is provided, we load it before sending the command\n if (certificate) {\n await this._api.sendCommand(\n new LoadCertificateCommand({\n keyUsage: certificate.keyUsageNumber,\n certificate: certificate.payload,\n }),\n );\n }\n\n switch (type) {\n case ClearSignContextType.PLUGIN: {\n return await this._api.sendCommand(new SetPluginCommand({ payload }));\n }\n case ClearSignContextType.EXTERNAL_PLUGIN: {\n return await this._api.sendCommand(\n new SetExternalPluginCommand({ payload }),\n );\n }\n case ClearSignContextType.NFT: {\n return await this._api.sendCommand(\n new ProvideNFTInformationCommand({ payload }),\n );\n }\n case ClearSignContextType.TOKEN: {\n return await this._api.sendCommand(\n new ProvideTokenInformationCommand({ payload }),\n );\n }\n case ClearSignContextType.TRANSACTION_INFO: {\n const paths = DerivationPathUtils.splitPath(this._args.derivationPath);\n const builder = new ByteArrayBuilder();\n builder.add8BitUIntToData(paths.length);\n paths.forEach((path) => {\n builder.add32BitUIntToData(path);\n });\n builder.addBufferToData(this._args.serializedTransaction);\n await this._sendCommandInChunksTaskFactory(this._api, {\n data: builder.build(),\n commandFactory: (args) =>\n new StoreTransactionCommand({\n serializedTransaction: args.chunkedData,\n isFirstChunk: args.isFirstChunk,\n }),\n }).run();\n\n const transactionInfoResult =\n await this._sendPayloadInChunksTaskFactory(this._api, {\n payload: this._args.context.payload,\n commandFactory: (args) =>\n new ProvideTransactionInformationCommand({\n data: args.chunkedData,\n isFirstChunk: args.isFirstChunk,\n }),\n }).run();\n\n return transactionInfoResult;\n }\n case ClearSignContextType.TRUSTED_NAME: {\n return this._sendPayloadInChunksTaskFactory(this._api, {\n payload,\n commandFactory: (args) =>\n new ProvideTrustedNameCommand({\n data: args.chunkedData,\n isFirstChunk: args.isFirstChunk,\n }),\n }).run();\n }\n case ClearSignContextType.ENUM:\n return this._sendPayloadInChunksTaskFactory(this._api, {\n payload,\n commandFactory: (args) =>\n new ProvideEnumCommand({\n data: args.chunkedData,\n isFirstChunk: args.isFirstChunk,\n }),\n }).run();\n case ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION:\n return this._sendPayloadInChunksTaskFactory(this._api, {\n payload,\n commandFactory: (args) =>\n new ProvideTransactionFieldDescriptionCommand({\n data: args.chunkedData,\n isFirstChunk: args.isFirstChunk,\n }),\n }).run();\n case ClearSignContextType.WEB3_CHECK:\n return this._sendPayloadInChunksTaskFactory(this._api, {\n payload,\n commandFactory: (args) =>\n new ProvideWeb3CheckCommand({\n payload: args.chunkedData,\n isFirstChunk: args.isFirstChunk,\n }),\n }).run();\n case ClearSignContextType.PROXY_DELEGATE_CALL:\n return this._sendPayloadInChunksTaskFactory(this._api, {\n payload,\n commandFactory: (args) =>\n new ProvideProxyInfoCommand({\n data: args.chunkedData,\n isFirstChunk: args.isFirstChunk,\n }),\n }).run();\n case ClearSignContextType.DYNAMIC_NETWORK:\n // Dynamic network configuration uses the existing ProvideNetworkConfiguration command\n // but is provided as part of the context flow\n return this._sendPayloadInChunksTaskFactory(this._api, {\n payload,\n commandFactory: (args) =>\n new ProvideNetworkConfigurationCommand({\n data: args.chunkedData,\n isFirstChunk: args.isFirstChunk,\n configurationType: NetworkConfigurationType.CONFIGURATION,\n }),\n }).run();\n case ClearSignContextType.DYNAMIC_NETWORK_ICON: {\n return this._sendPayloadInChunksTaskFactory(this._api, {\n payload,\n commandFactory: (args) =>\n new ProvideNetworkConfigurationCommand({\n data: args.chunkedData,\n isFirstChunk: args.isFirstChunk,\n configurationType: NetworkConfigurationType.ICON,\n }),\n withPayloadLength: false,\n }).run();\n }\n default: {\n const uncoveredType: never = type;\n return CommandResultFactory({\n error: new InvalidStatusWordError(\n `The context type [${uncoveredType}] is not covered`,\n ),\n });\n }\n }\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["ClearSignContextType", "ByteArrayBuilder", "CommandResultFactory", "InvalidStatusWordError", "isSuccessCommandResult", "LoadCertificateCommand", "DerivationPathUtils", "Left", "Right", "ProvideEnumCommand", "NetworkConfigurationType", "ProvideNetworkConfigurationCommand", "ProvideNFTInformationCommand", "ProvideProxyInfoCommand", "ProvideTokenInformationCommand", "ProvideTransactionFieldDescriptionCommand", "ProvideTransactionInformationCommand", "ProvideTrustedNameCommand", "ProvideWeb3CheckCommand", "SetExternalPluginCommand", "SetPluginCommand", "StoreTransactionCommand", "SendCommandInChunksTask", "SendPayloadInChunksTask", "ProvideTransactionContextTask", "_api", "_args", "_sendPayloadInChunksTaskFactory", "api", "args", "_sendCommandInChunksTaskFactory", "callback", "subcontext", "res", "type", "payload", "certificate", "paths", "builder", "path", "uncoveredType"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{ClearSignContextType as n}from"@ledgerhq/context-module";import{CommandResultFactory as s,hexaStringToBuffer as c,LoadCertificateCommand as m}from"@ledgerhq/device-management-kit";import{ProvideNFTInformationCommand as l}from"../../app-binder/command/ProvideNFTInformationCommand";import{ProvideTokenInformationCommand as C}from"../../app-binder/command/ProvideTokenInformationCommand";import{ProvideWeb3CheckCommand as p}from"../../app-binder/command/ProvideWeb3CheckCommand";import{SetExternalPluginCommand as x}from"../../app-binder/command/SetExternalPluginCommand";import{SetPluginCommand as h}from"../../app-binder/command/SetPluginCommand";import{makeDeviceActionInternalApiMock as y}from"../../app-binder/device-action/__test-utils__/makeInternalApi";import{ProvideTransactionContextTask as a}from"./ProvideTransactionContextTask";describe("ProvideTransactionContextTask",()=>{const e=y(),r=s({data:void 0}),i=s({data:void 0,error:{}});beforeEach(()=>{vi.resetAllMocks()}),describe("run",()=>{const o={clearSignContexts:[{type:n.PLUGIN,payload:"706c7567696e"},{type:n.EXTERNAL_PLUGIN,payload:"65787465726e616c506c7567696e"},{type:n.NFT,payload:"6e6674"},{type:n.TOKEN,payload:"746f6b656e"}],web3Check:null};beforeEach(()=>{vi.resetAllMocks()}),it("should send relative commands when receiving ClearSignContexts of type not trustedName",async()=>{e.sendCommand.mockResolvedValue(r),await new a(e,o).run(),expect(e.sendCommand).toHaveBeenCalledTimes(4),expect(e.sendCommand).toHaveBeenNthCalledWith(o.clearSignContexts.findIndex(t=>t.type===n.PLUGIN)+1,expect.objectContaining(new h({payload:"706c7567696e"}))),expect(e.sendCommand).toHaveBeenNthCalledWith(o.clearSignContexts.findIndex(t=>t.type===n.EXTERNAL_PLUGIN)+1,expect.objectContaining(new x({payload:"65787465726e616c506c7567696e"}))),expect(e.sendCommand).toHaveBeenNthCalledWith(o.clearSignContexts.findIndex(t=>t.type===n.NFT)+1,expect.objectContaining(new l({payload:"6e6674"}))),expect(e.sendCommand).toHaveBeenNthCalledWith(o.clearSignContexts.findIndex(t=>t.type===n.TOKEN)+1,expect.objectContaining(new C({payload:"746f6b656e"})))}),it("should return the command error result and stop when the command fails",async()=>{e.sendCommand.mockResolvedValueOnce(i);const t=await new a(e,o).run();expect(e.sendCommand).toHaveBeenCalledTimes(1),expect(t.isJust()).toBe(!0),expect(t.extract()).toStrictEqual(i)}),it("should send the web3Check command when it is provided",async()=>{e.sendCommand.mockResolvedValue(r);const t=await new a(e,{...o,web3Check:{type:n.WEB3_CHECK,payload:"0x01020304",certificate:{payload:new Uint8Array,keyUsageNumber:1}}}).run();expect(e.sendCommand).toHaveBeenCalledTimes(6),expect(e.sendCommand).toHaveBeenNthCalledWith(1,expect.objectContaining(new m({certificate:new Uint8Array,keyUsage:1}))),expect(e.sendCommand).toHaveBeenNthCalledWith(2,expect.objectContaining(new p({payload:c("0x000401020304"),isFirstChunk:!0}))),expect(t.isJust()).toBe(!1)})})});
|
|
1
|
+
import{ClearSignContextType as t}from"@ledgerhq/context-module";import{CommandResultFactory as A,InvalidStatusWordError as g,LoadCertificateCommand as v}from"@ledgerhq/device-management-kit";import{Left as w,Right as p}from"purify-ts";import{ProvideEnumCommand as B}from"../../app-binder/command/ProvideEnumCommand";import{ProvideNetworkConfigurationCommand as P}from"../../app-binder/command/ProvideNetworkConfigurationCommand";import{ProvideNFTInformationCommand as I}from"../../app-binder/command/ProvideNFTInformationCommand";import{ProvideProxyInfoCommand as R}from"../../app-binder/command/ProvideProxyInfoCommand";import{ProvideTokenInformationCommand as h}from"../../app-binder/command/ProvideTokenInformationCommand";import{ProvideTransactionFieldDescriptionCommand as E}from"../../app-binder/command/ProvideTransactionFieldDescriptionCommand";import{ProvideTransactionInformationCommand as F}from"../../app-binder/command/ProvideTransactionInformationCommand";import{ProvideTrustedNameCommand as b}from"../../app-binder/command/ProvideTrustedNameCommand";import{ProvideWeb3CheckCommand as U}from"../../app-binder/command/ProvideWeb3CheckCommand";import{SetExternalPluginCommand as O}from"../../app-binder/command/SetExternalPluginCommand";import{SetPluginCommand as H}from"../../app-binder/command/SetPluginCommand";import{StoreTransactionCommand as N}from"../../app-binder/command/StoreTransactionCommand";import{makeDeviceActionInternalApiMock as S}from"../../app-binder/device-action/__test-utils__/makeInternalApi";import{ProvideTransactionContextTask as i}from"./ProvideTransactionContextTask";import{SendCommandInChunksTask as _}from"./SendCommandInChunksTask";import{SendPayloadInChunksTask as D}from"./SendPayloadInChunksTask";describe("ProvideTransactionContextTask",()=>{const e=S(),c=A({data:void 0}),T=A({data:void 0,error:{}});beforeEach(()=>{vi.resetAllMocks()}),describe("run",()=>{const n=vi.fn(),x=vi.fn(),r=vi.fn(),d=vi.fn();beforeEach(()=>{vi.clearAllMocks(),r.mockImplementation((a,o)=>({run:()=>x(a,o)})),d.mockImplementation((a,o)=>({run:()=>n(a,o)}))}),describe("with no subcontexts",()=>{it("should provide the transaction context for a TRANSACTION_INFO context",async()=>{const a={context:{type:t.TRANSACTION_INFO,payload:"0x00",certificate:{keyUsageNumber:1,payload:new Uint8Array([1,2,3])}},subcontextsCallbacks:[],serializedTransaction:new Uint8Array,derivationPath:"44'/60'/0'/0/0"};x.mockResolvedValue(c),n.mockResolvedValue(c),e.sendCommand.mockResolvedValue(c);const s=await new i(e,a,d,r).run();expect(s).toEqual(p(void 0)),expect(x).toHaveBeenCalledTimes(1),expect(r).toHaveBeenCalledWith(e,{data:new Uint8Array([5,128,0,0,44,128,0,0,60,128,0,0,0,0,0,0,0,0,0,0,0]),commandFactory:expect.any(Function)});const m=r.mock.calls[0][1].commandFactory,l={chunkedData:new Uint8Array([1,2,3,4]),isFirstChunk:!0},y=m(l);expect(y).toBeInstanceOf(N),expect(e.sendCommand).toHaveBeenCalledTimes(1),expect(e.sendCommand).toHaveBeenCalledWith(expect.any(v)),expect(n).toHaveBeenCalledTimes(1),expect(n).toHaveBeenCalledWith(e,{payload:"0x00",commandFactory:expect.any(Function)});const u=n.mock.calls[0][1].commandFactory,k=u(l);expect(k).toBeInstanceOf(F)}),it("should provide the transaction context for a TRANSACTION_INFO context without certificate",async()=>{const a={context:{type:t.TRANSACTION_INFO,payload:"0x00"},subcontextsCallbacks:[],serializedTransaction:new Uint8Array,derivationPath:"44'/60'/0'/0/0"};x.mockResolvedValue(c),n.mockResolvedValue(c),e.sendCommand.mockResolvedValue(c);const s=await new i(e,a,d,r).run();expect(s).toEqual(p(void 0)),expect(x).toHaveBeenCalledTimes(1),expect(r).toHaveBeenCalledWith(e,{data:new Uint8Array([5,128,0,0,44,128,0,0,60,128,0,0,0,0,0,0,0,0,0,0,0]),commandFactory:expect.any(Function)});const m=r.mock.calls[0][1].commandFactory,l={chunkedData:new Uint8Array([1,2,3,4]),isFirstChunk:!0},y=m(l);expect(y).toBeInstanceOf(N),expect(e.sendCommand).toHaveBeenCalledTimes(0),expect(n).toHaveBeenCalledTimes(1),expect(n).toHaveBeenCalledWith(e,{payload:"0x00",commandFactory:expect.any(Function)});const u=n.mock.calls[0][1].commandFactory,k=u(l);expect(k).toBeInstanceOf(F)}),it.each([[t.PLUGIN,H],[t.EXTERNAL_PLUGIN,O],[t.NFT,I],[t.TOKEN,h]])("should provide the transaction context by calling sendCommand for a %s context",async(a,o)=>{const s={context:{type:a,payload:"payload"},subcontextsCallbacks:[],serializedTransaction:new Uint8Array,derivationPath:"44'/60'/0'/0/0"};e.sendCommand.mockResolvedValue(c);const m=await new i(e,s,d,r).run();expect(m).toEqual(p(void 0)),expect(e.sendCommand).toHaveBeenCalledTimes(1),expect(e.sendCommand).toHaveBeenCalledWith(expect.any(o))}),it.each([[t.ENUM,B],[t.TRUSTED_NAME,b],[t.WEB3_CHECK,U],[t.TRANSACTION_FIELD_DESCRIPTION,E],[t.PROXY_DELEGATE_CALL,R],[t.DYNAMIC_NETWORK_ICON,P,!1],[t.DYNAMIC_NETWORK,P]])("should provide the transaction context by calling sendPayloadInChunksTask for a %s context",async(a,o,s=void 0)=>{const C={context:{type:a,payload:"payload"},subcontextsCallbacks:[],serializedTransaction:new Uint8Array,derivationPath:"44'/60'/0'/0/0"};n.mockResolvedValue(c);const l=await new i(e,C,d,r).run();expect(l).toEqual(p(void 0)),expect(n).toHaveBeenCalledTimes(1),s===void 0?expect(n).toHaveBeenCalledWith(e,{payload:"payload",commandFactory:expect.any(Function)}):expect(n).toHaveBeenCalledWith(e,{payload:"payload",commandFactory:expect.any(Function),withPayloadLength:s});const f=d.mock.calls[0][1].commandFactory,u={chunkedData:new Uint8Array([1,2,3]),isFirstChunk:!0},k=f(u);expect(k).toBeInstanceOf(o)}),it("should skip the subcontexts if the context is an error",async()=>{const a={context:{type:t.TOKEN,payload:"payload",certificate:{keyUsageNumber:1,payload:new Uint8Array([1,2,3])}},subcontextsCallbacks:[()=>Promise.resolve({type:t.ERROR,error:new Error("error")})],serializedTransaction:new Uint8Array,derivationPath:"44'/60'/0'/0/0"};n.mockResolvedValue(c),e.sendCommand.mockResolvedValue(c);const s=await new i(e,a,d,r).run();expect(s).toEqual(p(void 0)),expect(n).toHaveBeenCalledTimes(0),expect(x).toHaveBeenCalledTimes(0),expect(e.sendCommand).toHaveBeenCalledTimes(2),expect(e.sendCommand).toHaveBeenNthCalledWith(1,expect.any(v)),expect(e.sendCommand).toHaveBeenNthCalledWith(2,expect.any(h))})}),describe("with subcontexts",()=>{it("should provide the transaction context and subcontext for a TRANSACTION_FIELD_DESCRIPTION context",async()=>{const a={context:{type:t.TRANSACTION_FIELD_DESCRIPTION,payload:"payload"},subcontextsCallbacks:[()=>Promise.resolve({type:t.TOKEN,payload:"payload"})],serializedTransaction:new Uint8Array,derivationPath:"44'/60'/0'/0/0"};n.mockResolvedValue(c),e.sendCommand.mockResolvedValue(c);const s=await new i(e,a,d,r).run();expect(s).toEqual(p(void 0)),expect(n).toHaveBeenCalledTimes(1),expect(n).toHaveBeenCalledWith(e,{payload:"payload",commandFactory:expect.any(Function)});const m=d.mock.calls[0][1].commandFactory,l={chunkedData:new Uint8Array([1,2,3]),isFirstChunk:!0},y=m(l);expect(y).toBeInstanceOf(E),expect(e.sendCommand).toHaveBeenCalledTimes(1),expect(e.sendCommand).toHaveBeenCalledWith(expect.any(h))}),it("should provide the transaction context and subcontexts for a TRUSTED_NAME context",async()=>{const a={context:{type:t.TRUSTED_NAME,payload:"payload"},subcontextsCallbacks:[()=>Promise.resolve({type:t.NFT,payload:"payload1"}),()=>Promise.resolve({type:t.TOKEN,payload:"payload2"})],serializedTransaction:new Uint8Array,derivationPath:"44'/60'/0'/0/0"};n.mockResolvedValue(c),e.sendCommand.mockResolvedValue(c);const s=await new i(e,a,d,r).run();expect(s).toEqual(p(void 0)),expect(n).toHaveBeenCalledTimes(1),expect(n).toHaveBeenCalledWith(e,{payload:"payload",commandFactory:expect.any(Function)});const m=d.mock.calls[0][1].commandFactory,l={chunkedData:new Uint8Array([1,2,3]),isFirstChunk:!0},y=m(l);expect(y).toBeInstanceOf(b),expect(e.sendCommand).toHaveBeenCalledTimes(2),expect(e.sendCommand).toHaveBeenNthCalledWith(1,expect.any(I)),expect(e.sendCommand).toHaveBeenNthCalledWith(2,expect.any(h))})}),describe("with subcontexts and certificate",()=>{it("should provide the transaction context and subcontexts for a TRUSTED_NAME context",async()=>{const a={context:{type:t.TRUSTED_NAME,payload:"payload",certificate:{keyUsageNumber:1,payload:new Uint8Array([1,2,3])}},subcontextsCallbacks:[()=>Promise.resolve({type:t.NFT,payload:"payload1",certificate:{keyUsageNumber:2,payload:new Uint8Array([4,5,6])}})],serializedTransaction:new Uint8Array,derivationPath:"44'/60'/0'/0/0"};n.mockResolvedValue(c),e.sendCommand.mockResolvedValue(c),await new i(e,a,d,r).run(),expect(e.sendCommand).toHaveBeenCalledTimes(3),expect(e.sendCommand).toHaveBeenNthCalledWith(1,expect.any(v)),expect(e.sendCommand).toHaveBeenNthCalledWith(2,expect.any(I)),expect(e.sendCommand).toHaveBeenNthCalledWith(3,expect.any(v))})}),describe("with error",()=>{it("should return an error if the provideContext fails",async()=>{const a={context:{type:t.TOKEN,payload:"payload"},subcontextsCallbacks:[],serializedTransaction:new Uint8Array,derivationPath:"44'/60'/0'/0/0"};e.sendCommand.mockResolvedValue(T);const s=await new i(e,a,d,r).run();expect(s).toEqual(w(T))}),it("should return an error if the provide subcontext fails",async()=>{const a={context:{type:t.TOKEN,payload:"payload"},subcontextsCallbacks:[()=>Promise.resolve({type:t.TOKEN,payload:"payload"})],serializedTransaction:new Uint8Array,derivationPath:"44'/60'/0'/0/0"};e.sendCommand.mockResolvedValue(T);const s=await new i(e,a,d,r).run();expect(s).toEqual(w(T))}),it("should return an error if the type is not supported",async()=>{const a={context:{type:"unsupported",payload:"payload"},subcontextsCallbacks:[],serializedTransaction:new Uint8Array,derivationPath:"44'/60'/0'/0/0"},s=await new i(e,a,d,r).run();expect(s).toEqual(w(A({error:new g("The context type [unsupported] is not covered")})))})}),describe("factory types",()=>{it("should have a sendPayloadInChunksTaskFactory by default",()=>{const a=new i(e,{context:{type:t.TOKEN,payload:"payload"},subcontextsCallbacks:[],serializedTransaction:new Uint8Array,derivationPath:"44'/60'/0'/0/0"});expect(a._sendPayloadInChunksTaskFactory).toBeDefined();const o=a._sendPayloadInChunksTaskFactory(e,{payload:"payload",commandFactory:()=>new E({data:new Uint8Array,isFirstChunk:!0})});expect(o).toBeInstanceOf(D)}),it("should have a sendCommandInChunksTaskFactory by default",()=>{const a=new i(e,{context:{type:t.TOKEN,payload:"payload"},subcontextsCallbacks:[],serializedTransaction:new Uint8Array,derivationPath:"44'/60'/0'/0/0"});expect(a._sendCommandInChunksTaskFactory).toBeDefined();const o=a._sendCommandInChunksTaskFactory(e,{data:new Uint8Array,commandFactory:()=>new N({serializedTransaction:new Uint8Array,isFirstChunk:!0})});expect(o).toBeInstanceOf(_)})})})});
|
|
2
2
|
//# sourceMappingURL=ProvideTransactionContextTask.test.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/internal/app-binder/task/ProvideTransactionContextTask.test.ts"],
|
|
4
|
-
"sourcesContent": ["import { ClearSignContextType } from \"@ledgerhq/context-module\";\nimport {\n CommandResultFactory,\n hexaStringToBuffer,\n LoadCertificateCommand,\n type UnknownDeviceExchangeError,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { ProvideNFTInformationCommand } from \"@internal/app-binder/command/ProvideNFTInformationCommand\";\nimport { ProvideTokenInformationCommand } from \"@internal/app-binder/command/ProvideTokenInformationCommand\";\nimport { ProvideWeb3CheckCommand } from \"@internal/app-binder/command/ProvideWeb3CheckCommand\";\nimport { SetExternalPluginCommand } from \"@internal/app-binder/command/SetExternalPluginCommand\";\nimport { SetPluginCommand } from \"@internal/app-binder/command/SetPluginCommand\";\nimport { type EthErrorCodes } from \"@internal/app-binder/command/utils/ethAppErrors\";\nimport { makeDeviceActionInternalApiMock } from \"@internal/app-binder/device-action/__test-utils__/makeInternalApi\";\n\nimport {\n ProvideTransactionContextTask,\n type ProvideTransactionContextTaskArgs,\n} from \"./ProvideTransactionContextTask\";\n\ndescribe(\"ProvideTransactionContextTask\", () => {\n const api = makeDeviceActionInternalApiMock();\n const successResult = CommandResultFactory<void, EthErrorCodes>({\n data: undefined,\n });\n const errorResult = CommandResultFactory<void, EthErrorCodes>({\n data: undefined,\n error: {} as UnknownDeviceExchangeError,\n });\n\n beforeEach(() => {\n vi.resetAllMocks();\n });\n\n describe(\"run\", () => {\n const args: ProvideTransactionContextTaskArgs = {\n clearSignContexts: [\n {\n type: ClearSignContextType.PLUGIN,\n payload: \"706c7567696e\", // \"plugin\"\n },\n {\n type: ClearSignContextType.EXTERNAL_PLUGIN,\n payload: \"65787465726e616c506c7567696e\", // \"externalPlugin\"\n },\n {\n type: ClearSignContextType.NFT,\n payload: \"6e6674\", // \"nft\"\n },\n {\n type: ClearSignContextType.TOKEN,\n payload: \"746f6b656e\", // \"token\"\n },\n ],\n web3Check: null,\n };\n\n beforeEach(() => {\n vi.resetAllMocks();\n });\n\n it(\"should send relative commands when receiving ClearSignContexts of type not trustedName\", async () => {\n api.sendCommand.mockResolvedValue(successResult);\n // GIVEN\n const task = new ProvideTransactionContextTask(api, args);\n // WHEN\n await task.run();\n // THEN\n expect(api.sendCommand).toHaveBeenCalledTimes(4);\n expect(api.sendCommand).toHaveBeenNthCalledWith(\n args.clearSignContexts.findIndex(\n (c) => c.type === ClearSignContextType.PLUGIN,\n ) + 1,\n expect.objectContaining(\n new SetPluginCommand({ payload: \"706c7567696e\" }),\n ),\n );\n expect(api.sendCommand).toHaveBeenNthCalledWith(\n args.clearSignContexts.findIndex(\n (c) => c.type === ClearSignContextType.EXTERNAL_PLUGIN,\n ) + 1,\n expect.objectContaining(\n new SetExternalPluginCommand({\n payload: \"65787465726e616c506c7567696e\",\n }),\n ),\n );\n expect(api.sendCommand).toHaveBeenNthCalledWith(\n args.clearSignContexts.findIndex(\n (c) => c.type === ClearSignContextType.NFT,\n ) + 1,\n expect.objectContaining(\n new ProvideNFTInformationCommand({ payload: \"6e6674\" }),\n ),\n );\n expect(api.sendCommand).toHaveBeenNthCalledWith(\n args.clearSignContexts.findIndex(\n (c) => c.type === ClearSignContextType.TOKEN,\n ) + 1,\n expect.objectContaining(\n new ProvideTokenInformationCommand({ payload: \"746f6b656e\" }),\n ),\n );\n });\n\n it(\"should return the command error result and stop when the command fails\", async () => {\n api.sendCommand.mockResolvedValueOnce(errorResult);\n // GIVEN\n const task = new ProvideTransactionContextTask(api, args);\n // WHEN\n const result = await task.run();\n // THEN\n expect(api.sendCommand).toHaveBeenCalledTimes(1);\n expect(result.isJust()).toBe(true);\n expect(result.extract()).toStrictEqual(errorResult);\n });\n\n it(\"should send the web3Check command when it is provided\", async () => {\n api.sendCommand.mockResolvedValue(successResult);\n // GIVEN\n const task = new ProvideTransactionContextTask(api, {\n ...args,\n web3Check: {\n type: ClearSignContextType.WEB3_CHECK,\n payload: \"0x01020304\",\n certificate: {\n payload: new Uint8Array(),\n keyUsageNumber: 1,\n },\n },\n });\n // WHEN\n const result = await task.run();\n // THEN\n expect(api.sendCommand).toHaveBeenCalledTimes(6);\n expect(api.sendCommand).toHaveBeenNthCalledWith(\n 1,\n expect.objectContaining(\n new LoadCertificateCommand({\n certificate: new Uint8Array(),\n keyUsage: 1,\n }),\n ),\n );\n expect(api.sendCommand).toHaveBeenNthCalledWith(\n 2,\n expect.objectContaining(\n new ProvideWeb3CheckCommand({\n payload: hexaStringToBuffer(\"0x000401020304\")!,\n isFirstChunk: true,\n }),\n ),\n );\n expect(result.isJust()).toBe(false);\n });\n });\n});\n"],
|
|
5
|
-
"mappings": "AAAA,
|
|
6
|
-
"names": ["ClearSignContextType", "CommandResultFactory", "
|
|
4
|
+
"sourcesContent": ["import {\n type ClearSignContextSuccess,\n ClearSignContextType,\n} from \"@ledgerhq/context-module\";\nimport {\n CommandResultFactory,\n type InternalApi,\n InvalidStatusWordError,\n LoadCertificateCommand,\n type UnknownDeviceExchangeError,\n} from \"@ledgerhq/device-management-kit\";\nimport { Left, Right } from \"purify-ts\";\n\nimport { ProvideEnumCommand } from \"@internal/app-binder/command/ProvideEnumCommand\";\nimport { ProvideNetworkConfigurationCommand } from \"@internal/app-binder/command/ProvideNetworkConfigurationCommand\";\nimport { ProvideNFTInformationCommand } from \"@internal/app-binder/command/ProvideNFTInformationCommand\";\nimport { ProvideProxyInfoCommand } from \"@internal/app-binder/command/ProvideProxyInfoCommand\";\nimport { ProvideTokenInformationCommand } from \"@internal/app-binder/command/ProvideTokenInformationCommand\";\nimport { ProvideTransactionFieldDescriptionCommand } from \"@internal/app-binder/command/ProvideTransactionFieldDescriptionCommand\";\nimport { ProvideTransactionInformationCommand } from \"@internal/app-binder/command/ProvideTransactionInformationCommand\";\nimport { ProvideTrustedNameCommand } from \"@internal/app-binder/command/ProvideTrustedNameCommand\";\nimport { ProvideWeb3CheckCommand } from \"@internal/app-binder/command/ProvideWeb3CheckCommand\";\nimport { SetExternalPluginCommand } from \"@internal/app-binder/command/SetExternalPluginCommand\";\nimport { SetPluginCommand } from \"@internal/app-binder/command/SetPluginCommand\";\nimport { StoreTransactionCommand } from \"@internal/app-binder/command/StoreTransactionCommand\";\nimport { type EthErrorCodes } from \"@internal/app-binder/command/utils/ethAppErrors\";\nimport { makeDeviceActionInternalApiMock } from \"@internal/app-binder/device-action/__test-utils__/makeInternalApi\";\n\nimport {\n ProvideTransactionContextTask,\n type ProvideTransactionContextTaskArgs,\n} from \"./ProvideTransactionContextTask\";\nimport {\n SendCommandInChunksTask,\n type SendCommandInChunksTaskArgs,\n} from \"./SendCommandInChunksTask\";\nimport {\n SendPayloadInChunksTask,\n type SendPayloadInChunksTaskArgs,\n} from \"./SendPayloadInChunksTask\";\n\ndescribe(\"ProvideTransactionContextTask\", () => {\n const api = makeDeviceActionInternalApiMock();\n const successResult = CommandResultFactory<void, EthErrorCodes>({\n data: undefined,\n });\n const errorResult = CommandResultFactory<void, EthErrorCodes>({\n data: undefined,\n error: {} as UnknownDeviceExchangeError,\n });\n\n beforeEach(() => {\n vi.resetAllMocks();\n });\n\n describe(\"run\", () => {\n const sendPayloadInChunksRunMock = vi.fn();\n const sendCommandInChunksTaskRunMock = vi.fn();\n const sendCommandInChunksTaskMockFactory = vi.fn();\n const sendPayloadInChunksTaskMockFactory = vi.fn();\n\n beforeEach(() => {\n vi.clearAllMocks();\n sendCommandInChunksTaskMockFactory.mockImplementation(\n (a: InternalApi, args: SendCommandInChunksTaskArgs<unknown>) =>\n ({\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n run: () => sendCommandInChunksTaskRunMock(a, args),\n }) as unknown as SendCommandInChunksTask<unknown>,\n );\n sendPayloadInChunksTaskMockFactory.mockImplementation(\n (a: InternalApi, args: SendPayloadInChunksTaskArgs<unknown>) =>\n ({\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n run: () => sendPayloadInChunksRunMock(a, args),\n }) as unknown as SendPayloadInChunksTask<unknown>,\n );\n });\n\n describe(\"with no subcontexts\", () => {\n it(\"should provide the transaction context for a TRANSACTION_INFO context\", async () => {\n // GIVEN\n const args: ProvideTransactionContextTaskArgs = {\n context: {\n type: ClearSignContextType.TRANSACTION_INFO,\n payload: \"0x00\",\n certificate: {\n keyUsageNumber: 1,\n payload: new Uint8Array([1, 2, 3]),\n },\n },\n subcontextsCallbacks: [],\n serializedTransaction: new Uint8Array(),\n derivationPath: \"44'/60'/0'/0/0\",\n };\n sendCommandInChunksTaskRunMock.mockResolvedValue(successResult);\n sendPayloadInChunksRunMock.mockResolvedValue(successResult);\n api.sendCommand.mockResolvedValue(successResult);\n\n // WHEN\n const task = new ProvideTransactionContextTask(\n api,\n args,\n sendPayloadInChunksTaskMockFactory,\n sendCommandInChunksTaskMockFactory,\n );\n const result = await task.run();\n\n // THEN\n expect(result).toEqual(Right(void 0));\n\n // StoreTransactionCommand\n expect(sendCommandInChunksTaskRunMock).toHaveBeenCalledTimes(1);\n expect(sendCommandInChunksTaskMockFactory).toHaveBeenCalledWith(api, {\n data: new Uint8Array([\n 0x05, 0x80, 0x00, 0x00, 0x2c, 0x80, 0x00, 0x00, 0x3c, 0x80, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n ]),\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n commandFactory: expect.any(Function),\n });\n // Test that the commandFactory returns a StoreTransactionCommand\n const factoryCall = sendCommandInChunksTaskMockFactory.mock.calls[0]!;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n const commandFactory = factoryCall[1].commandFactory;\n // arbitrary data to test the commandFactory\n const mockArgs = {\n chunkedData: new Uint8Array([1, 2, 3, 4]),\n isFirstChunk: true,\n };\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call\n const command = commandFactory(mockArgs);\n expect(command).toBeInstanceOf(StoreTransactionCommand);\n\n // LoadCertificateCommand\n expect(api.sendCommand).toHaveBeenCalledTimes(1);\n expect(api.sendCommand).toHaveBeenCalledWith(\n expect.any(LoadCertificateCommand),\n );\n\n // ProvideTransactionInformationCommand\n expect(sendPayloadInChunksRunMock).toHaveBeenCalledTimes(1);\n expect(sendPayloadInChunksRunMock).toHaveBeenCalledWith(api, {\n payload: \"0x00\",\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n commandFactory: expect.any(Function),\n });\n // Test that the commandFactory returns a ProvideTransactionInformationCommand\n const factoryCall2 = sendPayloadInChunksRunMock.mock.calls[0]!;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n const commandFactory2 = factoryCall2[1].commandFactory;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call\n const command2 = commandFactory2(mockArgs);\n expect(command2).toBeInstanceOf(ProvideTransactionInformationCommand);\n });\n\n it(\"should provide the transaction context for a TRANSACTION_INFO context without certificate\", async () => {\n // GIVEN\n const args: ProvideTransactionContextTaskArgs = {\n context: {\n type: ClearSignContextType.TRANSACTION_INFO,\n payload: \"0x00\",\n },\n subcontextsCallbacks: [],\n serializedTransaction: new Uint8Array(),\n derivationPath: \"44'/60'/0'/0/0\",\n };\n sendCommandInChunksTaskRunMock.mockResolvedValue(successResult);\n sendPayloadInChunksRunMock.mockResolvedValue(successResult);\n api.sendCommand.mockResolvedValue(successResult);\n\n // WHEN\n const task = new ProvideTransactionContextTask(\n api,\n args,\n sendPayloadInChunksTaskMockFactory,\n sendCommandInChunksTaskMockFactory,\n );\n const result = await task.run();\n\n // THEN\n expect(result).toEqual(Right(void 0));\n\n // StoreTransactionCommand\n expect(sendCommandInChunksTaskRunMock).toHaveBeenCalledTimes(1);\n expect(sendCommandInChunksTaskMockFactory).toHaveBeenCalledWith(api, {\n data: new Uint8Array([\n 0x05, 0x80, 0x00, 0x00, 0x2c, 0x80, 0x00, 0x00, 0x3c, 0x80, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n ]),\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n commandFactory: expect.any(Function),\n });\n // Test that the commandFactory returns a StoreTransactionCommand\n const factoryCall = sendCommandInChunksTaskMockFactory.mock.calls[0]!;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n const commandFactory = factoryCall[1].commandFactory;\n // arbitrary data to test the commandFactory\n const mockArgs = {\n chunkedData: new Uint8Array([1, 2, 3, 4]),\n isFirstChunk: true,\n };\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call\n const command = commandFactory(mockArgs);\n expect(command).toBeInstanceOf(StoreTransactionCommand);\n\n // LoadCertificateCommand\n expect(api.sendCommand).toHaveBeenCalledTimes(0);\n\n // ProvideTransactionInformationCommand\n expect(sendPayloadInChunksRunMock).toHaveBeenCalledTimes(1);\n expect(sendPayloadInChunksRunMock).toHaveBeenCalledWith(api, {\n payload: \"0x00\",\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n commandFactory: expect.any(Function),\n });\n // Test that the commandFactory returns a ProvideTransactionInformationCommand\n const factoryCall2 = sendPayloadInChunksRunMock.mock.calls[0]!;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n const commandFactory2 = factoryCall2[1].commandFactory;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call\n const command2 = commandFactory2(mockArgs);\n expect(command2).toBeInstanceOf(ProvideTransactionInformationCommand);\n });\n\n it.each([\n [ClearSignContextType.PLUGIN, SetPluginCommand],\n [ClearSignContextType.EXTERNAL_PLUGIN, SetExternalPluginCommand],\n [ClearSignContextType.NFT, ProvideNFTInformationCommand],\n [ClearSignContextType.TOKEN, ProvideTokenInformationCommand],\n ] as const)(\n \"should provide the transaction context by calling sendCommand for a %s context\",\n async (contextType, commandClass) => {\n // GIVEN\n const args: ProvideTransactionContextTaskArgs = {\n context: {\n type: contextType,\n payload: \"payload\",\n },\n subcontextsCallbacks: [],\n serializedTransaction: new Uint8Array(),\n derivationPath: \"44'/60'/0'/0/0\",\n };\n api.sendCommand.mockResolvedValue(successResult);\n\n // WHEN\n const task = new ProvideTransactionContextTask(\n api,\n args,\n sendPayloadInChunksTaskMockFactory,\n sendCommandInChunksTaskMockFactory,\n );\n const result = await task.run();\n\n // THEN\n expect(result).toEqual(Right(void 0));\n expect(api.sendCommand).toHaveBeenCalledTimes(1);\n expect(api.sendCommand).toHaveBeenCalledWith(\n expect.any(commandClass),\n );\n },\n );\n\n it.each([\n [ClearSignContextType.ENUM, ProvideEnumCommand],\n [ClearSignContextType.TRUSTED_NAME, ProvideTrustedNameCommand],\n [ClearSignContextType.WEB3_CHECK, ProvideWeb3CheckCommand],\n [\n ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,\n ProvideTransactionFieldDescriptionCommand,\n ],\n [ClearSignContextType.PROXY_DELEGATE_CALL, ProvideProxyInfoCommand],\n [\n ClearSignContextType.DYNAMIC_NETWORK_ICON,\n ProvideNetworkConfigurationCommand,\n false,\n ],\n [\n ClearSignContextType.DYNAMIC_NETWORK,\n ProvideNetworkConfigurationCommand,\n ],\n ] as const)(\n \"should provide the transaction context by calling sendPayloadInChunksTask for a %s context\",\n async (contextType, commandClass, withPayloadLength = undefined) => {\n // GIVEN\n const args: ProvideTransactionContextTaskArgs = {\n context: {\n type: contextType,\n payload: \"payload\",\n } as ClearSignContextSuccess,\n subcontextsCallbacks: [],\n serializedTransaction: new Uint8Array(),\n derivationPath: \"44'/60'/0'/0/0\",\n };\n sendPayloadInChunksRunMock.mockResolvedValue(successResult);\n\n // WHEN\n const task = new ProvideTransactionContextTask(\n api,\n args,\n sendPayloadInChunksTaskMockFactory,\n sendCommandInChunksTaskMockFactory,\n );\n const result = await task.run();\n\n // THEN\n expect(result).toEqual(Right(void 0));\n expect(sendPayloadInChunksRunMock).toHaveBeenCalledTimes(1);\n if (withPayloadLength === undefined) {\n expect(sendPayloadInChunksRunMock).toHaveBeenCalledWith(api, {\n payload: \"payload\",\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n commandFactory: expect.any(Function),\n });\n } else {\n expect(sendPayloadInChunksRunMock).toHaveBeenCalledWith(api, {\n payload: \"payload\",\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n commandFactory: expect.any(Function),\n withPayloadLength,\n });\n }\n\n // Test that the commandFactory returns a commandClass\n const factoryCall = sendPayloadInChunksTaskMockFactory.mock.calls[0]!;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n const commandFactory = factoryCall[1].commandFactory;\n const mockArgs = {\n chunkedData: new Uint8Array([1, 2, 3]),\n isFirstChunk: true,\n };\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call\n const command = commandFactory(mockArgs);\n expect(command).toBeInstanceOf(commandClass);\n },\n );\n\n it(\"should skip the subcontexts if the context is an error\", async () => {\n // GIVEN\n const args: ProvideTransactionContextTaskArgs = {\n context: {\n type: ClearSignContextType.TOKEN,\n payload: \"payload\",\n certificate: {\n keyUsageNumber: 1,\n payload: new Uint8Array([1, 2, 3]),\n },\n },\n subcontextsCallbacks: [\n () =>\n Promise.resolve({\n type: ClearSignContextType.ERROR,\n error: new Error(\"error\"),\n }),\n ],\n serializedTransaction: new Uint8Array(),\n derivationPath: \"44'/60'/0'/0/0\",\n };\n sendPayloadInChunksRunMock.mockResolvedValue(successResult);\n api.sendCommand.mockResolvedValue(successResult);\n\n // WHEN\n const task = new ProvideTransactionContextTask(\n api,\n args,\n sendPayloadInChunksTaskMockFactory,\n sendCommandInChunksTaskMockFactory,\n );\n const result = await task.run();\n\n // THEN\n expect(result).toEqual(Right(void 0));\n expect(sendPayloadInChunksRunMock).toHaveBeenCalledTimes(0);\n expect(sendCommandInChunksTaskRunMock).toHaveBeenCalledTimes(0);\n expect(api.sendCommand).toHaveBeenCalledTimes(2);\n expect(api.sendCommand).toHaveBeenNthCalledWith(\n 1,\n expect.any(LoadCertificateCommand),\n );\n expect(api.sendCommand).toHaveBeenNthCalledWith(\n 2,\n expect.any(ProvideTokenInformationCommand),\n );\n });\n });\n\n describe(\"with subcontexts\", () => {\n it(\"should provide the transaction context and subcontext for a TRANSACTION_FIELD_DESCRIPTION context\", async () => {\n // GIVEN\n const args: ProvideTransactionContextTaskArgs = {\n context: {\n type: ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,\n payload: \"payload\",\n },\n subcontextsCallbacks: [\n () =>\n Promise.resolve({\n type: ClearSignContextType.TOKEN,\n payload: \"payload\",\n }),\n ],\n serializedTransaction: new Uint8Array(),\n derivationPath: \"44'/60'/0'/0/0\",\n };\n sendPayloadInChunksRunMock.mockResolvedValue(successResult);\n api.sendCommand.mockResolvedValue(successResult);\n\n // WHEN\n const task = new ProvideTransactionContextTask(\n api,\n args,\n sendPayloadInChunksTaskMockFactory,\n sendCommandInChunksTaskMockFactory,\n );\n const result = await task.run();\n\n // THEN\n expect(result).toEqual(Right(void 0));\n expect(sendPayloadInChunksRunMock).toHaveBeenCalledTimes(1);\n expect(sendPayloadInChunksRunMock).toHaveBeenCalledWith(api, {\n payload: \"payload\",\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n commandFactory: expect.any(Function),\n });\n\n // Test that the commandFactory returns a commandClass\n const factoryCall = sendPayloadInChunksTaskMockFactory.mock.calls[0]!;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n const commandFactory = factoryCall[1].commandFactory;\n const mockArgs = {\n chunkedData: new Uint8Array([1, 2, 3]),\n isFirstChunk: true,\n };\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call\n const command = commandFactory(mockArgs);\n expect(command).toBeInstanceOf(\n ProvideTransactionFieldDescriptionCommand,\n );\n\n expect(api.sendCommand).toHaveBeenCalledTimes(1);\n expect(api.sendCommand).toHaveBeenCalledWith(\n expect.any(ProvideTokenInformationCommand),\n );\n });\n\n it(\"should provide the transaction context and subcontexts for a TRUSTED_NAME context\", async () => {\n // GIVEN\n const args: ProvideTransactionContextTaskArgs = {\n context: {\n type: ClearSignContextType.TRUSTED_NAME,\n payload: \"payload\",\n },\n subcontextsCallbacks: [\n () =>\n Promise.resolve({\n type: ClearSignContextType.NFT,\n payload: \"payload1\",\n }),\n\n () =>\n Promise.resolve({\n type: ClearSignContextType.TOKEN,\n payload: \"payload2\",\n }),\n ],\n serializedTransaction: new Uint8Array(),\n derivationPath: \"44'/60'/0'/0/0\",\n };\n sendPayloadInChunksRunMock.mockResolvedValue(successResult);\n api.sendCommand.mockResolvedValue(successResult);\n\n // WHEN\n const task = new ProvideTransactionContextTask(\n api,\n args,\n sendPayloadInChunksTaskMockFactory,\n sendCommandInChunksTaskMockFactory,\n );\n const result = await task.run();\n\n // THEN\n expect(result).toEqual(Right(void 0));\n expect(sendPayloadInChunksRunMock).toHaveBeenCalledTimes(1);\n expect(sendPayloadInChunksRunMock).toHaveBeenCalledWith(api, {\n payload: \"payload\",\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n commandFactory: expect.any(Function),\n });\n\n // Test that the commandFactory returns a commandClass\n const factoryCall = sendPayloadInChunksTaskMockFactory.mock.calls[0]!;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n const commandFactory = factoryCall[1].commandFactory;\n const mockArgs = {\n chunkedData: new Uint8Array([1, 2, 3]),\n isFirstChunk: true,\n };\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call\n const command = commandFactory(mockArgs);\n expect(command).toBeInstanceOf(ProvideTrustedNameCommand);\n\n expect(api.sendCommand).toHaveBeenCalledTimes(2);\n expect(api.sendCommand).toHaveBeenNthCalledWith(\n 1,\n expect.any(ProvideNFTInformationCommand),\n );\n expect(api.sendCommand).toHaveBeenNthCalledWith(\n 2,\n expect.any(ProvideTokenInformationCommand),\n );\n });\n });\n\n describe(\"with subcontexts and certificate\", () => {\n it(\"should provide the transaction context and subcontexts for a TRUSTED_NAME context\", async () => {\n // GIVEN\n const args: ProvideTransactionContextTaskArgs = {\n context: {\n type: ClearSignContextType.TRUSTED_NAME,\n payload: \"payload\",\n certificate: {\n keyUsageNumber: 1,\n payload: new Uint8Array([1, 2, 3]),\n },\n },\n subcontextsCallbacks: [\n () =>\n Promise.resolve({\n type: ClearSignContextType.NFT,\n payload: \"payload1\",\n certificate: {\n keyUsageNumber: 2,\n payload: new Uint8Array([4, 5, 6]),\n },\n }),\n ],\n serializedTransaction: new Uint8Array(),\n derivationPath: \"44'/60'/0'/0/0\",\n };\n sendPayloadInChunksRunMock.mockResolvedValue(successResult);\n api.sendCommand.mockResolvedValue(successResult);\n\n // WHEN\n const task = new ProvideTransactionContextTask(\n api,\n args,\n sendPayloadInChunksTaskMockFactory,\n sendCommandInChunksTaskMockFactory,\n );\n await task.run();\n\n // THEN\n expect(api.sendCommand).toHaveBeenCalledTimes(3);\n expect(api.sendCommand).toHaveBeenNthCalledWith(\n 1,\n expect.any(LoadCertificateCommand),\n );\n expect(api.sendCommand).toHaveBeenNthCalledWith(\n 2,\n expect.any(ProvideNFTInformationCommand),\n );\n expect(api.sendCommand).toHaveBeenNthCalledWith(\n 3,\n expect.any(LoadCertificateCommand),\n );\n });\n });\n\n describe(\"with error\", () => {\n it(\"should return an error if the provideContext fails\", async () => {\n // GIVEN\n const args: ProvideTransactionContextTaskArgs = {\n context: {\n type: ClearSignContextType.TOKEN,\n payload: \"payload\",\n },\n subcontextsCallbacks: [],\n serializedTransaction: new Uint8Array(),\n derivationPath: \"44'/60'/0'/0/0\",\n };\n api.sendCommand.mockResolvedValue(errorResult);\n\n // WHEN\n const task = new ProvideTransactionContextTask(\n api,\n args,\n sendPayloadInChunksTaskMockFactory,\n sendCommandInChunksTaskMockFactory,\n );\n const result = await task.run();\n\n // THEN\n expect(result).toEqual(Left(errorResult));\n });\n\n it(\"should return an error if the provide subcontext fails\", async () => {\n // GIVEN\n const args: ProvideTransactionContextTaskArgs = {\n context: {\n type: ClearSignContextType.TOKEN,\n payload: \"payload\",\n },\n subcontextsCallbacks: [\n () =>\n Promise.resolve({\n type: ClearSignContextType.TOKEN,\n payload: \"payload\",\n }),\n ],\n serializedTransaction: new Uint8Array(),\n derivationPath: \"44'/60'/0'/0/0\",\n };\n api.sendCommand.mockResolvedValue(errorResult);\n\n // WHEN\n const task = new ProvideTransactionContextTask(\n api,\n args,\n sendPayloadInChunksTaskMockFactory,\n sendCommandInChunksTaskMockFactory,\n );\n const result = await task.run();\n\n // THEN\n expect(result).toEqual(Left(errorResult));\n });\n\n it(\"should return an error if the type is not supported\", async () => {\n // GIVEN\n const args: ProvideTransactionContextTaskArgs = {\n context: {\n type: \"unsupported\" as unknown as ClearSignContextType.TOKEN,\n payload: \"payload\",\n },\n subcontextsCallbacks: [],\n serializedTransaction: new Uint8Array(),\n derivationPath: \"44'/60'/0'/0/0\",\n };\n\n // WHEN\n const task = new ProvideTransactionContextTask(\n api,\n args,\n sendPayloadInChunksTaskMockFactory,\n sendCommandInChunksTaskMockFactory,\n );\n const result = await task.run();\n\n // THEN\n expect(result).toEqual(\n Left(\n CommandResultFactory({\n error: new InvalidStatusWordError(\n `The context type [unsupported] is not covered`,\n ),\n }),\n ),\n );\n });\n });\n\n describe(\"factory types\", () => {\n it(\"should have a sendPayloadInChunksTaskFactory by default\", () => {\n // GIVEN\n const task = new ProvideTransactionContextTask(api, {\n context: {\n type: ClearSignContextType.TOKEN,\n payload: \"payload\",\n },\n subcontextsCallbacks: [],\n serializedTransaction: new Uint8Array(),\n derivationPath: \"44'/60'/0'/0/0\",\n });\n\n // THEN\n expect(task[\"_sendPayloadInChunksTaskFactory\"]).toBeDefined();\n const sendPayloadInChunksTask = task[\"_sendPayloadInChunksTaskFactory\"](\n api,\n {\n payload: \"payload\",\n commandFactory: () =>\n new ProvideTransactionFieldDescriptionCommand({\n data: new Uint8Array(),\n isFirstChunk: true,\n }),\n },\n );\n expect(sendPayloadInChunksTask).toBeInstanceOf(SendPayloadInChunksTask);\n });\n\n it(\"should have a sendCommandInChunksTaskFactory by default\", () => {\n // GIVEN\n const task = new ProvideTransactionContextTask(api, {\n context: {\n type: ClearSignContextType.TOKEN,\n payload: \"payload\",\n },\n subcontextsCallbacks: [],\n serializedTransaction: new Uint8Array(),\n derivationPath: \"44'/60'/0'/0/0\",\n });\n\n // THEN\n expect(task[\"_sendCommandInChunksTaskFactory\"]).toBeDefined();\n const sendCommandInChunksTask = task[\"_sendCommandInChunksTaskFactory\"](\n api,\n {\n data: new Uint8Array(),\n commandFactory: () =>\n new StoreTransactionCommand({\n serializedTransaction: new Uint8Array(),\n isFirstChunk: true,\n }),\n },\n );\n expect(sendCommandInChunksTask).toBeInstanceOf(SendCommandInChunksTask);\n });\n });\n });\n});\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["ClearSignContextType", "CommandResultFactory", "InvalidStatusWordError", "LoadCertificateCommand", "Left", "Right", "ProvideEnumCommand", "ProvideNetworkConfigurationCommand", "ProvideNFTInformationCommand", "ProvideProxyInfoCommand", "ProvideTokenInformationCommand", "ProvideTransactionFieldDescriptionCommand", "ProvideTransactionInformationCommand", "ProvideTrustedNameCommand", "ProvideWeb3CheckCommand", "SetExternalPluginCommand", "SetPluginCommand", "StoreTransactionCommand", "makeDeviceActionInternalApiMock", "ProvideTransactionContextTask", "SendCommandInChunksTask", "SendPayloadInChunksTask", "api", "successResult", "errorResult", "sendPayloadInChunksRunMock", "sendCommandInChunksTaskRunMock", "sendCommandInChunksTaskMockFactory", "sendPayloadInChunksTaskMockFactory", "args", "result", "commandFactory", "mockArgs", "command", "commandFactory2", "command2", "contextType", "commandClass", "withPayloadLength", "task", "sendPayloadInChunksTask", "sendCommandInChunksTask"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{CommandResultFactory as
|
|
1
|
+
import{CommandResultFactory as o,hexaStringToBuffer as t,InvalidStatusWordError as e}from"@ledgerhq/device-management-kit";import{PayloadUtils as s}from"../../shared/utils/PayloadUtils";import{SendCommandInChunksTask as d}from"./SendCommandInChunksTask";class p{constructor(r,n){this.api=r;this.args=n}async run(){const{payload:r,withPayloadLength:n=!0}=this.args;let a=null;return n?a=s.getBufferFromPayload(r):a=t(r),a?new d(this.api,{data:a,commandFactory:this.args.commandFactory}).run():o({error:new e("Invalid payload")})}}export{p as SendPayloadInChunksTask};
|
|
2
2
|
//# sourceMappingURL=SendPayloadInChunksTask.js.map
|