@ledgerhq/device-management-kit 0.6.0 → 0.6.1

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.
Files changed (426) hide show
  1. package/lib/cjs/package.json +8 -8
  2. package/lib/cjs/src/api/DeviceManagementKit.test.js +1 -1
  3. package/lib/cjs/src/api/DeviceManagementKit.test.js.map +2 -2
  4. package/lib/cjs/src/api/DeviceManagementKitBuilder.js +1 -1
  5. package/lib/cjs/src/api/DeviceManagementKitBuilder.js.map +2 -2
  6. package/lib/cjs/src/api/DeviceManagementKitBuilder.test.js +1 -1
  7. package/lib/cjs/src/api/DeviceManagementKitBuilder.test.js.map +2 -2
  8. package/lib/cjs/src/api/apdu/utils/ByteArrayParser.test.js +1 -1
  9. package/lib/cjs/src/api/apdu/utils/ByteArrayParser.test.js.map +2 -2
  10. package/lib/cjs/src/api/command/os/LoadCertificateCommand.js +2 -0
  11. package/lib/cjs/src/api/command/os/LoadCertificateCommand.js.map +7 -0
  12. package/lib/cjs/src/api/command/os/LoadCertificateCommand.test.js +2 -0
  13. package/lib/cjs/src/api/command/os/LoadCertificateCommand.test.js.map +7 -0
  14. package/lib/cjs/src/api/command/use-case/SendCommandUseCase.test.js +1 -1
  15. package/lib/cjs/src/api/command/use-case/SendCommandUseCase.test.js.map +3 -3
  16. package/lib/cjs/src/api/device-action/DeviceAction.js +1 -1
  17. package/lib/cjs/src/api/device-action/DeviceAction.js.map +1 -1
  18. package/lib/cjs/src/api/device-action/__test-utils__/makeInternalApi.js +1 -1
  19. package/lib/cjs/src/api/device-action/__test-utils__/makeInternalApi.js.map +3 -3
  20. package/lib/cjs/src/api/device-action/__test-utils__/setupTestMachine.js +1 -1
  21. package/lib/cjs/src/api/device-action/__test-utils__/setupTestMachine.js.map +2 -2
  22. package/lib/cjs/src/api/device-action/__test-utils__/testDeviceActionStates.js +1 -1
  23. package/lib/cjs/src/api/device-action/__test-utils__/testDeviceActionStates.js.map +3 -3
  24. package/lib/cjs/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceAction.js +2 -0
  25. package/lib/cjs/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceAction.js.map +7 -0
  26. package/lib/cjs/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceAction.test.js +2 -0
  27. package/lib/cjs/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceAction.test.js.map +7 -0
  28. package/lib/cjs/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceActionTypes.js +2 -0
  29. package/lib/cjs/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceActionTypes.js.map +7 -0
  30. package/lib/cjs/src/api/device-action/os/GetDeviceStatus/GetDeviceStatusDeviceAction.test.js +1 -1
  31. package/lib/cjs/src/api/device-action/os/GetDeviceStatus/GetDeviceStatusDeviceAction.test.js.map +3 -3
  32. package/lib/cjs/src/api/device-action/os/GoToDashboard/GoToDashboardDeviceAction.test.js +1 -1
  33. package/lib/cjs/src/api/device-action/os/GoToDashboard/GoToDashboardDeviceAction.test.js.map +3 -3
  34. package/lib/cjs/src/api/device-action/os/ListApps/ListAppsDeviceAction.test.js +1 -1
  35. package/lib/cjs/src/api/device-action/os/ListApps/ListAppsDeviceAction.test.js.map +3 -3
  36. package/lib/cjs/src/api/device-action/os/ListAppsWithMetadata/ListAppsWithMetadataDeviceAction.test.js +1 -1
  37. package/lib/cjs/src/api/device-action/os/ListAppsWithMetadata/ListAppsWithMetadataDeviceAction.test.js.map +3 -3
  38. package/lib/cjs/src/api/device-action/os/OpenAppDeviceAction/OpenAppDeviceAction.test.js +1 -1
  39. package/lib/cjs/src/api/device-action/os/OpenAppDeviceAction/OpenAppDeviceAction.test.js.map +3 -3
  40. package/lib/cjs/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceAction.test.js +1 -1
  41. package/lib/cjs/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceAction.test.js.map +3 -3
  42. package/lib/cjs/src/api/device-action/xstate-utils/XStateDeviceAction.js +1 -1
  43. package/lib/cjs/src/api/device-action/xstate-utils/XStateDeviceAction.js.map +3 -3
  44. package/lib/cjs/src/api/device-session/use-case/ToggleDeviceSessionRefresher.test.js +1 -1
  45. package/lib/cjs/src/api/device-session/use-case/ToggleDeviceSessionRefresher.test.js.map +3 -3
  46. package/lib/cjs/src/api/index.js +1 -1
  47. package/lib/cjs/src/api/index.js.map +3 -3
  48. package/lib/cjs/src/api/logger-subscriber/service/ConsoleLogger.test.js +1 -1
  49. package/lib/cjs/src/api/logger-subscriber/service/ConsoleLogger.test.js.map +2 -2
  50. package/lib/cjs/src/api/logger-subscriber/service/WebLogsExporterLogger.test.js +1 -1
  51. package/lib/cjs/src/api/logger-subscriber/service/WebLogsExporterLogger.test.js.map +2 -2
  52. package/lib/cjs/src/api/logger-subscriber/service/__mocks__/ConsoleLogger.js +1 -1
  53. package/lib/cjs/src/api/logger-subscriber/service/__mocks__/ConsoleLogger.js.map +2 -2
  54. package/lib/cjs/src/api/transport/model/DeviceConnectionFactory.stub.js +1 -1
  55. package/lib/cjs/src/api/transport/model/DeviceConnectionFactory.stub.js.map +2 -2
  56. package/lib/cjs/src/api/transport/model/TransportConnectedDevice.stub.js +1 -1
  57. package/lib/cjs/src/api/transport/model/TransportConnectedDevice.stub.js.map +2 -2
  58. package/lib/cjs/src/api/transport/model/__mocks__/TransportMock.js +1 -1
  59. package/lib/cjs/src/api/transport/model/__mocks__/TransportMock.js.map +2 -2
  60. package/lib/cjs/src/api/utils/Base64String.test.js +1 -1
  61. package/lib/cjs/src/api/utils/Base64String.test.js.map +2 -2
  62. package/lib/cjs/src/api/utils/HexaString.js +1 -1
  63. package/lib/cjs/src/api/utils/HexaString.js.map +2 -2
  64. package/lib/cjs/src/api/utils/HexaString.test.js +1 -1
  65. package/lib/cjs/src/api/utils/HexaString.test.js.map +2 -2
  66. package/lib/cjs/src/di.js +1 -1
  67. package/lib/cjs/src/di.js.map +3 -3
  68. package/lib/cjs/src/di.stub.js +1 -1
  69. package/lib/cjs/src/di.stub.js.map +2 -2
  70. package/lib/cjs/src/internal/config/data/LocalConfigDataSource.test.js +1 -1
  71. package/lib/cjs/src/internal/config/data/LocalConfigDataSource.test.js.map +3 -3
  72. package/lib/cjs/src/internal/config/data/RemoteConfigDataSource.test.js +1 -1
  73. package/lib/cjs/src/internal/config/data/RemoteConfigDataSource.test.js.map +2 -2
  74. package/lib/cjs/src/internal/config/data/__mocks__/LocalConfigDataSource.js +1 -1
  75. package/lib/cjs/src/internal/config/data/__mocks__/LocalConfigDataSource.js.map +2 -2
  76. package/lib/cjs/src/internal/config/data/__mocks__/RemoteConfigDataSource.js +1 -1
  77. package/lib/cjs/src/internal/config/data/__mocks__/RemoteConfigDataSource.js.map +2 -2
  78. package/lib/cjs/src/internal/config/service/DefaultConfigService.test.js +1 -1
  79. package/lib/cjs/src/internal/config/service/DefaultConfigService.test.js.map +2 -2
  80. package/lib/cjs/src/internal/config/use-case/GetDmkVersionUseCase.test.js +1 -1
  81. package/lib/cjs/src/internal/config/use-case/GetDmkVersionUseCase.test.js.map +2 -2
  82. package/lib/cjs/src/internal/device-session/model/DeviceSession.js +1 -1
  83. package/lib/cjs/src/internal/device-session/model/DeviceSession.js.map +3 -3
  84. package/lib/cjs/src/internal/device-session/model/DeviceSession.stub.js +1 -1
  85. package/lib/cjs/src/internal/device-session/model/DeviceSession.stub.js.map +3 -3
  86. package/lib/cjs/src/internal/device-session/model/DeviceSessionRefresher.test.js +1 -1
  87. package/lib/cjs/src/internal/device-session/model/DeviceSessionRefresher.test.js.map +2 -2
  88. package/lib/cjs/src/internal/device-session/service/DefaultApduReceiverService.test.js +1 -1
  89. package/lib/cjs/src/internal/device-session/service/DefaultApduReceiverService.test.js.map +2 -2
  90. package/lib/cjs/src/internal/device-session/service/DefaultApduSenderService.test.js +1 -1
  91. package/lib/cjs/src/internal/device-session/service/DefaultApduSenderService.test.js.map +2 -2
  92. package/lib/cjs/src/internal/device-session/service/DefaultDeviceSessionService.test.js +1 -1
  93. package/lib/cjs/src/internal/device-session/service/DefaultDeviceSessionService.test.js.map +3 -3
  94. package/lib/cjs/src/internal/device-session/use-case/CloseSessionsUseCase.test.js +1 -1
  95. package/lib/cjs/src/internal/device-session/use-case/CloseSessionsUseCase.test.js.map +3 -3
  96. package/lib/cjs/src/internal/device-session/use-case/GetDeviceSessionStateUseCase.test.js +1 -1
  97. package/lib/cjs/src/internal/device-session/use-case/GetDeviceSessionStateUseCase.test.js.map +3 -3
  98. package/lib/cjs/src/internal/discovery/di/discoveryModule.test.js +1 -1
  99. package/lib/cjs/src/internal/discovery/di/discoveryModule.test.js.map +3 -3
  100. package/lib/cjs/src/internal/discovery/use-case/ConnectUseCase.js +1 -1
  101. package/lib/cjs/src/internal/discovery/use-case/ConnectUseCase.js.map +3 -3
  102. package/lib/cjs/src/internal/discovery/use-case/ConnectUseCase.test.js +1 -1
  103. package/lib/cjs/src/internal/discovery/use-case/ConnectUseCase.test.js.map +3 -3
  104. package/lib/cjs/src/internal/discovery/use-case/DisconnectUseCase.test.js +1 -1
  105. package/lib/cjs/src/internal/discovery/use-case/DisconnectUseCase.test.js.map +3 -3
  106. package/lib/cjs/src/internal/discovery/use-case/GetConnectedDeviceUseCase.test.js +1 -1
  107. package/lib/cjs/src/internal/discovery/use-case/GetConnectedDeviceUseCase.test.js.map +3 -3
  108. package/lib/cjs/src/internal/discovery/use-case/ListConnectedDevicesUseCase.test.js +1 -1
  109. package/lib/cjs/src/internal/discovery/use-case/ListConnectedDevicesUseCase.test.js.map +3 -3
  110. package/lib/cjs/src/internal/discovery/use-case/ListenToConnectedDeviceUseCase.test.js +1 -1
  111. package/lib/cjs/src/internal/discovery/use-case/ListenToConnectedDeviceUseCase.test.js.map +3 -3
  112. package/lib/cjs/src/internal/discovery/use-case/ListenToKnownDevicesUseCase.test.js +1 -1
  113. package/lib/cjs/src/internal/discovery/use-case/ListenToKnownDevicesUseCase.test.js.map +3 -3
  114. package/lib/cjs/src/internal/discovery/use-case/StartDiscoveringUseCase.test.js +1 -1
  115. package/lib/cjs/src/internal/discovery/use-case/StartDiscoveringUseCase.test.js.map +3 -3
  116. package/lib/cjs/src/internal/discovery/use-case/StopDiscoveringUseCase.test.js +1 -1
  117. package/lib/cjs/src/internal/discovery/use-case/StopDiscoveringUseCase.test.js.map +2 -2
  118. package/lib/cjs/src/internal/logger-publisher/service/DefaultLoggerPublisherService.stub.js +1 -1
  119. package/lib/cjs/src/internal/logger-publisher/service/DefaultLoggerPublisherService.stub.js.map +2 -2
  120. package/lib/cjs/src/internal/logger-publisher/service/DefaultLoggerPublisherService.test.js +1 -1
  121. package/lib/cjs/src/internal/logger-publisher/service/DefaultLoggerPublisherService.test.js.map +2 -2
  122. package/lib/cjs/src/internal/manager-api/data/AxiosManagerApiDataSource.js +1 -1
  123. package/lib/cjs/src/internal/manager-api/data/AxiosManagerApiDataSource.js.map +3 -3
  124. package/lib/cjs/src/internal/manager-api/data/AxiosManagerApiDataSource.test.js +1 -1
  125. package/lib/cjs/src/internal/manager-api/data/AxiosManagerApiDataSource.test.js.map +3 -3
  126. package/lib/cjs/src/internal/manager-api/data/ManagerApiDataSource.js +1 -1
  127. package/lib/cjs/src/internal/manager-api/data/ManagerApiDataSource.js.map +1 -1
  128. package/lib/cjs/src/internal/manager-api/data/__mocks__/AxiosManagerApiDataSource.js +1 -1
  129. package/lib/cjs/src/internal/manager-api/data/__mocks__/AxiosManagerApiDataSource.js.map +2 -2
  130. package/lib/cjs/src/internal/manager-api/model/Const.js +1 -1
  131. package/lib/cjs/src/internal/manager-api/model/Const.js.map +3 -3
  132. package/lib/cjs/src/internal/manager-api/model/Errors.js +1 -1
  133. package/lib/cjs/src/internal/manager-api/model/Errors.js.map +3 -3
  134. package/lib/cjs/src/internal/manager-api/model/Firmware.js +1 -1
  135. package/lib/cjs/src/internal/manager-api/model/Firmware.js.map +1 -1
  136. package/lib/cjs/src/internal/manager-api/service/DefaultManagerApiService.js +1 -1
  137. package/lib/cjs/src/internal/manager-api/service/DefaultManagerApiService.js.map +2 -2
  138. package/lib/cjs/src/internal/manager-api/service/DefaultManagerApiService.test.js +1 -1
  139. package/lib/cjs/src/internal/manager-api/service/DefaultManagerApiService.test.js.map +2 -2
  140. package/lib/cjs/src/internal/secure-channel/data/DefaultSecureChannelDataSource.js +2 -0
  141. package/lib/cjs/src/internal/secure-channel/data/DefaultSecureChannelDataSource.js.map +7 -0
  142. package/lib/cjs/src/internal/secure-channel/data/DefaultSecureChannelDataSource.test.js +2 -0
  143. package/lib/cjs/src/internal/secure-channel/data/DefaultSecureChannelDataSource.test.js.map +7 -0
  144. package/lib/cjs/src/internal/secure-channel/data/SecureChannelDataSource.js +2 -0
  145. package/lib/cjs/src/internal/secure-channel/data/SecureChannelDataSource.js.map +7 -0
  146. package/lib/cjs/src/internal/secure-channel/data/__mocks__/DefaultSecureChannelDataSource.js +2 -0
  147. package/lib/cjs/src/internal/secure-channel/data/__mocks__/DefaultSecureChannelDataSource.js.map +7 -0
  148. package/lib/cjs/src/internal/secure-channel/di/secureChannelModule.js +2 -0
  149. package/lib/cjs/src/internal/secure-channel/di/secureChannelModule.js.map +7 -0
  150. package/lib/cjs/src/internal/secure-channel/di/secureChannelModule.test.js +2 -0
  151. package/lib/cjs/src/internal/secure-channel/di/secureChannelModule.test.js.map +7 -0
  152. package/lib/cjs/src/internal/secure-channel/di/secureChannelTypes.js +2 -0
  153. package/lib/cjs/src/internal/secure-channel/di/secureChannelTypes.js.map +7 -0
  154. package/lib/cjs/src/internal/secure-channel/model/Const.js +2 -0
  155. package/lib/cjs/src/internal/secure-channel/model/Const.js.map +7 -0
  156. package/lib/cjs/src/internal/secure-channel/model/Errors.js +2 -0
  157. package/lib/cjs/src/internal/secure-channel/model/Errors.js.map +7 -0
  158. package/lib/cjs/src/internal/{manager-api → secure-channel}/model/Params.js.map +1 -1
  159. package/lib/cjs/src/internal/secure-channel/service/DefaultSecureChannelService.js +2 -0
  160. package/lib/cjs/src/internal/secure-channel/service/DefaultSecureChannelService.js.map +7 -0
  161. package/lib/cjs/src/internal/secure-channel/service/DefaultSecureChannelService.test.js +2 -0
  162. package/lib/cjs/src/internal/secure-channel/service/DefaultSecureChannelService.test.js.map +7 -0
  163. package/lib/cjs/src/internal/secure-channel/service/SecureChannelService.js +2 -0
  164. package/lib/cjs/src/internal/secure-channel/service/SecureChannelService.js.map +7 -0
  165. package/lib/cjs/src/internal/send/use-case/SendApduUseCase.test.js +1 -1
  166. package/lib/cjs/src/internal/send/use-case/SendApduUseCase.test.js.map +3 -3
  167. package/lib/cjs/src/internal/transport/di/transportModule.test.js +1 -1
  168. package/lib/cjs/src/internal/transport/di/transportModule.test.js.map +2 -2
  169. package/lib/cjs/src/internal/transport/service/DefaultTransportService.test.js +1 -1
  170. package/lib/cjs/src/internal/transport/service/DefaultTransportService.test.js.map +2 -2
  171. package/lib/cjs/src/internal/transport/service/__mocks__/DefaultTransportService.js +1 -1
  172. package/lib/cjs/src/internal/transport/service/__mocks__/DefaultTransportService.js.map +2 -2
  173. package/lib/esm/package.json +8 -8
  174. package/lib/esm/src/api/DeviceManagementKit.test.js +1 -1
  175. package/lib/esm/src/api/DeviceManagementKit.test.js.map +2 -2
  176. package/lib/esm/src/api/DeviceManagementKitBuilder.js +1 -1
  177. package/lib/esm/src/api/DeviceManagementKitBuilder.js.map +2 -2
  178. package/lib/esm/src/api/DeviceManagementKitBuilder.test.js +1 -1
  179. package/lib/esm/src/api/DeviceManagementKitBuilder.test.js.map +2 -2
  180. package/lib/esm/src/api/apdu/utils/ByteArrayParser.test.js +1 -1
  181. package/lib/esm/src/api/apdu/utils/ByteArrayParser.test.js.map +2 -2
  182. package/lib/esm/src/api/command/os/LoadCertificateCommand.js +2 -0
  183. package/lib/esm/src/api/command/os/LoadCertificateCommand.js.map +7 -0
  184. package/lib/esm/src/api/command/os/LoadCertificateCommand.test.js +2 -0
  185. package/lib/esm/src/api/command/os/LoadCertificateCommand.test.js.map +7 -0
  186. package/lib/esm/src/api/command/use-case/SendCommandUseCase.test.js +1 -1
  187. package/lib/esm/src/api/command/use-case/SendCommandUseCase.test.js.map +3 -3
  188. package/lib/esm/src/api/device-action/__test-utils__/makeInternalApi.js +1 -1
  189. package/lib/esm/src/api/device-action/__test-utils__/makeInternalApi.js.map +3 -3
  190. package/lib/esm/src/api/device-action/__test-utils__/setupTestMachine.js +1 -1
  191. package/lib/esm/src/api/device-action/__test-utils__/setupTestMachine.js.map +2 -2
  192. package/lib/esm/src/api/device-action/__test-utils__/testDeviceActionStates.js +1 -1
  193. package/lib/esm/src/api/device-action/__test-utils__/testDeviceActionStates.js.map +3 -3
  194. package/lib/esm/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceAction.js +2 -0
  195. package/lib/esm/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceAction.js.map +7 -0
  196. package/lib/esm/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceAction.test.js +2 -0
  197. package/lib/esm/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceAction.test.js.map +7 -0
  198. package/lib/esm/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceActionTypes.js +1 -0
  199. package/lib/esm/src/api/device-action/os/GetDeviceStatus/GetDeviceStatusDeviceAction.test.js +1 -1
  200. package/lib/esm/src/api/device-action/os/GetDeviceStatus/GetDeviceStatusDeviceAction.test.js.map +3 -3
  201. package/lib/esm/src/api/device-action/os/GoToDashboard/GoToDashboardDeviceAction.test.js +1 -1
  202. package/lib/esm/src/api/device-action/os/GoToDashboard/GoToDashboardDeviceAction.test.js.map +3 -3
  203. package/lib/esm/src/api/device-action/os/ListApps/ListAppsDeviceAction.test.js +1 -1
  204. package/lib/esm/src/api/device-action/os/ListApps/ListAppsDeviceAction.test.js.map +3 -3
  205. package/lib/esm/src/api/device-action/os/ListAppsWithMetadata/ListAppsWithMetadataDeviceAction.test.js +1 -1
  206. package/lib/esm/src/api/device-action/os/ListAppsWithMetadata/ListAppsWithMetadataDeviceAction.test.js.map +3 -3
  207. package/lib/esm/src/api/device-action/os/OpenAppDeviceAction/OpenAppDeviceAction.test.js +1 -1
  208. package/lib/esm/src/api/device-action/os/OpenAppDeviceAction/OpenAppDeviceAction.test.js.map +3 -3
  209. package/lib/esm/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceAction.test.js +1 -1
  210. package/lib/esm/src/api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceAction.test.js.map +3 -3
  211. package/lib/esm/src/api/device-action/xstate-utils/XStateDeviceAction.js +1 -1
  212. package/lib/esm/src/api/device-action/xstate-utils/XStateDeviceAction.js.map +3 -3
  213. package/lib/esm/src/api/device-session/use-case/ToggleDeviceSessionRefresher.test.js +1 -1
  214. package/lib/esm/src/api/device-session/use-case/ToggleDeviceSessionRefresher.test.js.map +3 -3
  215. package/lib/esm/src/api/index.js +1 -1
  216. package/lib/esm/src/api/index.js.map +3 -3
  217. package/lib/esm/src/api/logger-subscriber/service/ConsoleLogger.test.js +1 -1
  218. package/lib/esm/src/api/logger-subscriber/service/ConsoleLogger.test.js.map +2 -2
  219. package/lib/esm/src/api/logger-subscriber/service/WebLogsExporterLogger.test.js +1 -1
  220. package/lib/esm/src/api/logger-subscriber/service/WebLogsExporterLogger.test.js.map +2 -2
  221. package/lib/esm/src/api/logger-subscriber/service/__mocks__/ConsoleLogger.js +1 -1
  222. package/lib/esm/src/api/logger-subscriber/service/__mocks__/ConsoleLogger.js.map +2 -2
  223. package/lib/esm/src/api/transport/model/DeviceConnectionFactory.stub.js +1 -1
  224. package/lib/esm/src/api/transport/model/DeviceConnectionFactory.stub.js.map +2 -2
  225. package/lib/esm/src/api/transport/model/TransportConnectedDevice.stub.js +1 -1
  226. package/lib/esm/src/api/transport/model/TransportConnectedDevice.stub.js.map +2 -2
  227. package/lib/esm/src/api/transport/model/__mocks__/TransportMock.js +1 -1
  228. package/lib/esm/src/api/transport/model/__mocks__/TransportMock.js.map +2 -2
  229. package/lib/esm/src/api/utils/Base64String.test.js +1 -1
  230. package/lib/esm/src/api/utils/Base64String.test.js.map +2 -2
  231. package/lib/esm/src/api/utils/HexaString.js +1 -1
  232. package/lib/esm/src/api/utils/HexaString.js.map +2 -2
  233. package/lib/esm/src/api/utils/HexaString.test.js +1 -1
  234. package/lib/esm/src/api/utils/HexaString.test.js.map +2 -2
  235. package/lib/esm/src/di.js +1 -1
  236. package/lib/esm/src/di.js.map +3 -3
  237. package/lib/esm/src/di.stub.js +1 -1
  238. package/lib/esm/src/di.stub.js.map +2 -2
  239. package/lib/esm/src/internal/config/data/LocalConfigDataSource.test.js +1 -1
  240. package/lib/esm/src/internal/config/data/LocalConfigDataSource.test.js.map +3 -3
  241. package/lib/esm/src/internal/config/data/RemoteConfigDataSource.test.js +1 -1
  242. package/lib/esm/src/internal/config/data/RemoteConfigDataSource.test.js.map +2 -2
  243. package/lib/esm/src/internal/config/data/__mocks__/LocalConfigDataSource.js +1 -1
  244. package/lib/esm/src/internal/config/data/__mocks__/LocalConfigDataSource.js.map +2 -2
  245. package/lib/esm/src/internal/config/data/__mocks__/RemoteConfigDataSource.js +1 -1
  246. package/lib/esm/src/internal/config/data/__mocks__/RemoteConfigDataSource.js.map +2 -2
  247. package/lib/esm/src/internal/config/service/DefaultConfigService.test.js +1 -1
  248. package/lib/esm/src/internal/config/service/DefaultConfigService.test.js.map +2 -2
  249. package/lib/esm/src/internal/config/use-case/GetDmkVersionUseCase.test.js +1 -1
  250. package/lib/esm/src/internal/config/use-case/GetDmkVersionUseCase.test.js.map +2 -2
  251. package/lib/esm/src/internal/device-session/model/DeviceSession.js +1 -1
  252. package/lib/esm/src/internal/device-session/model/DeviceSession.js.map +3 -3
  253. package/lib/esm/src/internal/device-session/model/DeviceSession.stub.js +1 -1
  254. package/lib/esm/src/internal/device-session/model/DeviceSession.stub.js.map +3 -3
  255. package/lib/esm/src/internal/device-session/model/DeviceSessionRefresher.test.js +1 -1
  256. package/lib/esm/src/internal/device-session/model/DeviceSessionRefresher.test.js.map +2 -2
  257. package/lib/esm/src/internal/device-session/service/DefaultApduReceiverService.test.js +1 -1
  258. package/lib/esm/src/internal/device-session/service/DefaultApduReceiverService.test.js.map +2 -2
  259. package/lib/esm/src/internal/device-session/service/DefaultApduSenderService.test.js +1 -1
  260. package/lib/esm/src/internal/device-session/service/DefaultApduSenderService.test.js.map +2 -2
  261. package/lib/esm/src/internal/device-session/service/DefaultDeviceSessionService.test.js +1 -1
  262. package/lib/esm/src/internal/device-session/service/DefaultDeviceSessionService.test.js.map +3 -3
  263. package/lib/esm/src/internal/device-session/use-case/CloseSessionsUseCase.test.js +1 -1
  264. package/lib/esm/src/internal/device-session/use-case/CloseSessionsUseCase.test.js.map +3 -3
  265. package/lib/esm/src/internal/device-session/use-case/GetDeviceSessionStateUseCase.test.js +1 -1
  266. package/lib/esm/src/internal/device-session/use-case/GetDeviceSessionStateUseCase.test.js.map +3 -3
  267. package/lib/esm/src/internal/discovery/di/discoveryModule.test.js +1 -1
  268. package/lib/esm/src/internal/discovery/di/discoveryModule.test.js.map +3 -3
  269. package/lib/esm/src/internal/discovery/use-case/ConnectUseCase.js +1 -1
  270. package/lib/esm/src/internal/discovery/use-case/ConnectUseCase.js.map +3 -3
  271. package/lib/esm/src/internal/discovery/use-case/ConnectUseCase.test.js +1 -1
  272. package/lib/esm/src/internal/discovery/use-case/ConnectUseCase.test.js.map +3 -3
  273. package/lib/esm/src/internal/discovery/use-case/DisconnectUseCase.test.js +1 -1
  274. package/lib/esm/src/internal/discovery/use-case/DisconnectUseCase.test.js.map +3 -3
  275. package/lib/esm/src/internal/discovery/use-case/GetConnectedDeviceUseCase.test.js +1 -1
  276. package/lib/esm/src/internal/discovery/use-case/GetConnectedDeviceUseCase.test.js.map +3 -3
  277. package/lib/esm/src/internal/discovery/use-case/ListConnectedDevicesUseCase.test.js +1 -1
  278. package/lib/esm/src/internal/discovery/use-case/ListConnectedDevicesUseCase.test.js.map +3 -3
  279. package/lib/esm/src/internal/discovery/use-case/ListenToConnectedDeviceUseCase.test.js +1 -1
  280. package/lib/esm/src/internal/discovery/use-case/ListenToConnectedDeviceUseCase.test.js.map +3 -3
  281. package/lib/esm/src/internal/discovery/use-case/ListenToKnownDevicesUseCase.test.js +1 -1
  282. package/lib/esm/src/internal/discovery/use-case/ListenToKnownDevicesUseCase.test.js.map +3 -3
  283. package/lib/esm/src/internal/discovery/use-case/StartDiscoveringUseCase.test.js +1 -1
  284. package/lib/esm/src/internal/discovery/use-case/StartDiscoveringUseCase.test.js.map +3 -3
  285. package/lib/esm/src/internal/discovery/use-case/StopDiscoveringUseCase.test.js +1 -1
  286. package/lib/esm/src/internal/discovery/use-case/StopDiscoveringUseCase.test.js.map +2 -2
  287. package/lib/esm/src/internal/logger-publisher/service/DefaultLoggerPublisherService.stub.js +1 -1
  288. package/lib/esm/src/internal/logger-publisher/service/DefaultLoggerPublisherService.stub.js.map +2 -2
  289. package/lib/esm/src/internal/logger-publisher/service/DefaultLoggerPublisherService.test.js +1 -1
  290. package/lib/esm/src/internal/logger-publisher/service/DefaultLoggerPublisherService.test.js.map +2 -2
  291. package/lib/esm/src/internal/manager-api/data/AxiosManagerApiDataSource.js +1 -1
  292. package/lib/esm/src/internal/manager-api/data/AxiosManagerApiDataSource.js.map +3 -3
  293. package/lib/esm/src/internal/manager-api/data/AxiosManagerApiDataSource.test.js +1 -1
  294. package/lib/esm/src/internal/manager-api/data/AxiosManagerApiDataSource.test.js.map +3 -3
  295. package/lib/esm/src/internal/manager-api/data/__mocks__/AxiosManagerApiDataSource.js +1 -1
  296. package/lib/esm/src/internal/manager-api/data/__mocks__/AxiosManagerApiDataSource.js.map +2 -2
  297. package/lib/esm/src/internal/manager-api/model/Const.js +1 -1
  298. package/lib/esm/src/internal/manager-api/model/Const.js.map +3 -3
  299. package/lib/esm/src/internal/manager-api/model/Errors.js +1 -1
  300. package/lib/esm/src/internal/manager-api/model/Errors.js.map +3 -3
  301. package/lib/esm/src/internal/manager-api/service/DefaultManagerApiService.js +1 -1
  302. package/lib/esm/src/internal/manager-api/service/DefaultManagerApiService.js.map +2 -2
  303. package/lib/esm/src/internal/manager-api/service/DefaultManagerApiService.test.js +1 -1
  304. package/lib/esm/src/internal/manager-api/service/DefaultManagerApiService.test.js.map +2 -2
  305. package/lib/esm/src/internal/secure-channel/data/DefaultSecureChannelDataSource.js +2 -0
  306. package/lib/esm/src/internal/secure-channel/data/DefaultSecureChannelDataSource.js.map +7 -0
  307. package/lib/esm/src/internal/secure-channel/data/DefaultSecureChannelDataSource.test.js +2 -0
  308. package/lib/esm/src/internal/secure-channel/data/DefaultSecureChannelDataSource.test.js.map +7 -0
  309. package/lib/esm/src/internal/secure-channel/data/SecureChannelDataSource.js +1 -0
  310. package/lib/esm/src/internal/secure-channel/data/SecureChannelDataSource.js.map +7 -0
  311. package/lib/esm/src/internal/secure-channel/data/__mocks__/DefaultSecureChannelDataSource.js +2 -0
  312. package/lib/esm/src/internal/secure-channel/data/__mocks__/DefaultSecureChannelDataSource.js.map +7 -0
  313. package/lib/esm/src/internal/secure-channel/di/secureChannelModule.js +2 -0
  314. package/lib/esm/src/internal/secure-channel/di/secureChannelModule.js.map +7 -0
  315. package/lib/esm/src/internal/secure-channel/di/secureChannelModule.test.js +2 -0
  316. package/lib/esm/src/internal/secure-channel/di/secureChannelModule.test.js.map +7 -0
  317. package/lib/esm/src/internal/secure-channel/di/secureChannelTypes.js +2 -0
  318. package/lib/esm/src/internal/secure-channel/di/secureChannelTypes.js.map +7 -0
  319. package/lib/esm/src/internal/secure-channel/model/Const.js +2 -0
  320. package/lib/esm/src/internal/secure-channel/model/Const.js.map +7 -0
  321. package/lib/esm/src/internal/secure-channel/model/Errors.js +2 -0
  322. package/lib/esm/src/internal/secure-channel/model/Errors.js.map +7 -0
  323. package/lib/esm/src/internal/secure-channel/model/Params.js.map +7 -0
  324. package/lib/esm/src/internal/secure-channel/service/DefaultSecureChannelService.js +2 -0
  325. package/lib/esm/src/internal/secure-channel/service/DefaultSecureChannelService.js.map +7 -0
  326. package/lib/esm/src/internal/secure-channel/service/DefaultSecureChannelService.test.js +2 -0
  327. package/lib/esm/src/internal/secure-channel/service/DefaultSecureChannelService.test.js.map +7 -0
  328. package/lib/esm/src/internal/secure-channel/service/SecureChannelService.js +1 -0
  329. package/lib/esm/src/internal/secure-channel/service/SecureChannelService.js.map +7 -0
  330. package/lib/esm/src/internal/send/use-case/SendApduUseCase.test.js +1 -1
  331. package/lib/esm/src/internal/send/use-case/SendApduUseCase.test.js.map +3 -3
  332. package/lib/esm/src/internal/transport/di/transportModule.test.js +1 -1
  333. package/lib/esm/src/internal/transport/di/transportModule.test.js.map +2 -2
  334. package/lib/esm/src/internal/transport/service/DefaultTransportService.test.js +1 -1
  335. package/lib/esm/src/internal/transport/service/DefaultTransportService.test.js.map +2 -2
  336. package/lib/esm/src/internal/transport/service/__mocks__/DefaultTransportService.js +1 -1
  337. package/lib/esm/src/internal/transport/service/__mocks__/DefaultTransportService.js.map +2 -2
  338. package/lib/types/src/api/command/os/LoadCertificateCommand.d.ts +25 -0
  339. package/lib/types/src/api/command/os/LoadCertificateCommand.d.ts.map +1 -0
  340. package/lib/types/src/api/command/os/LoadCertificateCommand.test.d.ts +2 -0
  341. package/lib/types/src/api/command/os/LoadCertificateCommand.test.d.ts.map +1 -0
  342. package/lib/types/src/api/device-action/DeviceAction.d.ts +5 -0
  343. package/lib/types/src/api/device-action/DeviceAction.d.ts.map +1 -1
  344. package/lib/types/src/api/device-action/__test-utils__/makeInternalApi.d.ts +2 -1
  345. package/lib/types/src/api/device-action/__test-utils__/makeInternalApi.d.ts.map +1 -1
  346. package/lib/types/src/api/device-action/__test-utils__/setupTestMachine.d.ts.map +1 -1
  347. package/lib/types/src/api/device-action/__test-utils__/testDeviceActionStates.d.ts +5 -2
  348. package/lib/types/src/api/device-action/__test-utils__/testDeviceActionStates.d.ts.map +1 -1
  349. package/lib/types/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceAction.d.ts +40 -0
  350. package/lib/types/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceAction.d.ts.map +1 -0
  351. package/lib/types/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceAction.test.d.ts +2 -0
  352. package/lib/types/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceAction.test.d.ts.map +1 -0
  353. package/lib/types/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceActionTypes.d.ts +19 -0
  354. package/lib/types/src/api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceActionTypes.d.ts.map +1 -0
  355. package/lib/types/src/api/index.d.ts +2 -0
  356. package/lib/types/src/api/index.d.ts.map +1 -1
  357. package/lib/types/src/api/logger-subscriber/service/__mocks__/ConsoleLogger.d.ts +1 -1
  358. package/lib/types/src/api/logger-subscriber/service/__mocks__/ConsoleLogger.d.ts.map +1 -1
  359. package/lib/types/src/api/transport/model/DeviceConnectionFactory.stub.d.ts +1 -1
  360. package/lib/types/src/api/transport/model/DeviceConnectionFactory.stub.d.ts.map +1 -1
  361. package/lib/types/src/api/transport/model/__mocks__/TransportMock.d.ts +7 -7
  362. package/lib/types/src/api/transport/model/__mocks__/TransportMock.d.ts.map +1 -1
  363. package/lib/types/src/api/utils/HexaString.d.ts +1 -1
  364. package/lib/types/src/api/utils/HexaString.d.ts.map +1 -1
  365. package/lib/types/src/di.d.ts.map +1 -1
  366. package/lib/types/src/di.stub.d.ts +1 -1
  367. package/lib/types/src/di.stub.d.ts.map +1 -1
  368. package/lib/types/src/internal/config/data/__mocks__/LocalConfigDataSource.d.ts +1 -1
  369. package/lib/types/src/internal/config/data/__mocks__/LocalConfigDataSource.d.ts.map +1 -1
  370. package/lib/types/src/internal/config/data/__mocks__/RemoteConfigDataSource.d.ts +3 -3
  371. package/lib/types/src/internal/config/data/__mocks__/RemoteConfigDataSource.d.ts.map +1 -1
  372. package/lib/types/src/internal/device-session/model/DeviceSession.d.ts +9 -5
  373. package/lib/types/src/internal/device-session/model/DeviceSession.d.ts.map +1 -1
  374. package/lib/types/src/internal/device-session/model/DeviceSession.stub.d.ts +2 -1
  375. package/lib/types/src/internal/device-session/model/DeviceSession.stub.d.ts.map +1 -1
  376. package/lib/types/src/internal/discovery/use-case/ConnectUseCase.d.ts +3 -1
  377. package/lib/types/src/internal/discovery/use-case/ConnectUseCase.d.ts.map +1 -1
  378. package/lib/types/src/internal/logger-publisher/service/DefaultLoggerPublisherService.stub.d.ts +5 -5
  379. package/lib/types/src/internal/logger-publisher/service/DefaultLoggerPublisherService.stub.d.ts.map +1 -1
  380. package/lib/types/src/internal/manager-api/data/AxiosManagerApiDataSource.d.ts +2 -11
  381. package/lib/types/src/internal/manager-api/data/AxiosManagerApiDataSource.d.ts.map +1 -1
  382. package/lib/types/src/internal/manager-api/data/ManagerApiDataSource.d.ts +2 -46
  383. package/lib/types/src/internal/manager-api/data/ManagerApiDataSource.d.ts.map +1 -1
  384. package/lib/types/src/internal/manager-api/data/__mocks__/AxiosManagerApiDataSource.d.ts +3 -9
  385. package/lib/types/src/internal/manager-api/data/__mocks__/AxiosManagerApiDataSource.d.ts.map +1 -1
  386. package/lib/types/src/internal/manager-api/model/Const.d.ts +0 -1
  387. package/lib/types/src/internal/manager-api/model/Const.d.ts.map +1 -1
  388. package/lib/types/src/internal/manager-api/model/Errors.d.ts +0 -6
  389. package/lib/types/src/internal/manager-api/model/Errors.d.ts.map +1 -1
  390. package/lib/types/src/internal/manager-api/model/Firmware.d.ts +4 -0
  391. package/lib/types/src/internal/manager-api/model/Firmware.d.ts.map +1 -1
  392. package/lib/types/src/internal/manager-api/service/DefaultManagerApiService.d.ts.map +1 -1
  393. package/lib/types/src/internal/secure-channel/data/DefaultSecureChannelDataSource.d.ts +18 -0
  394. package/lib/types/src/internal/secure-channel/data/DefaultSecureChannelDataSource.d.ts.map +1 -0
  395. package/lib/types/src/internal/secure-channel/data/DefaultSecureChannelDataSource.test.d.ts +2 -0
  396. package/lib/types/src/internal/secure-channel/data/DefaultSecureChannelDataSource.test.d.ts.map +1 -0
  397. package/lib/types/src/internal/secure-channel/data/SecureChannelDataSource.d.ts +52 -0
  398. package/lib/types/src/internal/secure-channel/data/SecureChannelDataSource.d.ts.map +1 -0
  399. package/lib/types/src/internal/secure-channel/data/__mocks__/DefaultSecureChannelDataSource.d.ts +10 -0
  400. package/lib/types/src/internal/secure-channel/data/__mocks__/DefaultSecureChannelDataSource.d.ts.map +1 -0
  401. package/lib/types/src/internal/secure-channel/di/secureChannelModule.d.ts +9 -0
  402. package/lib/types/src/internal/secure-channel/di/secureChannelModule.d.ts.map +1 -0
  403. package/lib/types/src/internal/secure-channel/di/secureChannelModule.test.d.ts +2 -0
  404. package/lib/types/src/internal/secure-channel/di/secureChannelModule.test.d.ts.map +1 -0
  405. package/lib/types/src/internal/secure-channel/di/secureChannelTypes.d.ts +6 -0
  406. package/lib/types/src/internal/secure-channel/di/secureChannelTypes.d.ts.map +1 -0
  407. package/lib/types/src/internal/secure-channel/model/Const.d.ts +2 -0
  408. package/lib/types/src/internal/secure-channel/model/Const.d.ts.map +1 -0
  409. package/lib/types/src/internal/secure-channel/model/Errors.d.ts +8 -0
  410. package/lib/types/src/internal/secure-channel/model/Errors.d.ts.map +1 -0
  411. package/lib/types/src/internal/secure-channel/model/Params.d.ts.map +1 -0
  412. package/lib/types/src/internal/secure-channel/service/DefaultSecureChannelService.d.ts +20 -0
  413. package/lib/types/src/internal/secure-channel/service/DefaultSecureChannelService.d.ts.map +1 -0
  414. package/lib/types/src/internal/secure-channel/service/DefaultSecureChannelService.test.d.ts +2 -0
  415. package/lib/types/src/internal/secure-channel/service/DefaultSecureChannelService.test.d.ts.map +1 -0
  416. package/lib/types/src/internal/secure-channel/service/SecureChannelService.d.ts +20 -0
  417. package/lib/types/src/internal/secure-channel/service/SecureChannelService.d.ts.map +1 -0
  418. package/lib/types/src/internal/transport/service/__mocks__/DefaultTransportService.d.ts +6 -6
  419. package/lib/types/src/internal/transport/service/__mocks__/DefaultTransportService.d.ts.map +1 -1
  420. package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
  421. package/package.json +9 -9
  422. package/lib/types/src/internal/manager-api/model/Params.d.ts.map +0 -1
  423. /package/lib/cjs/src/internal/{manager-api → secure-channel}/model/Params.js +0 -0
  424. /package/lib/esm/src/{internal/manager-api/model/Params.js.map → api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceActionTypes.js.map} +0 -0
  425. /package/lib/esm/src/internal/{manager-api → secure-channel}/model/Params.js +0 -0
  426. /package/lib/types/src/internal/{manager-api → secure-channel}/model/Params.d.ts +0 -0
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../../src/api/device-action/os/GoToDashboard/GoToDashboardDeviceAction.test.ts"],
4
- "sourcesContent": ["import { CommandResultFactory } from \"@api/command/model/CommandResult\";\nimport {\n GLOBAL_ERRORS,\n GlobalCommandError,\n} from \"@api/command/utils/GlobalCommandError\";\nimport { DeviceModelId } from \"@api/device/DeviceModel\";\nimport { DeviceStatus } from \"@api/device/DeviceStatus\";\nimport { makeDeviceActionInternalApiMock } from \"@api/device-action/__test-utils__/makeInternalApi\";\nimport { setupGetDeviceStatusMock } from \"@api/device-action/__test-utils__/setupTestMachine\";\nimport { testDeviceActionStates } from \"@api/device-action/__test-utils__/testDeviceActionStates\";\nimport { DeviceActionStatus } from \"@api/device-action/model/DeviceActionState\";\nimport { UserInteractionRequired } from \"@api/device-action/model/UserInteractionRequired\";\nimport { UnknownDAError } from \"@api/device-action/os/Errors\";\nimport { DeviceSessionStateType } from \"@api/device-session/DeviceSessionState\";\nimport { UnknownDeviceExchangeError } from \"@root/src\";\n\nimport { GoToDashboardDeviceAction } from \"./GoToDashboardDeviceAction\";\nimport { type GoToDashboardDAState } from \"./types\";\n\njest.mock(\"@api/device-action/os/GetDeviceStatus/GetDeviceStatusDeviceAction\");\n\ndescribe(\"GoToDashboardDeviceAction\", () => {\n const closeAppMock = jest.fn();\n const getAppAndVersionMock = jest.fn();\n const getDeviceSessionStateMock = jest.fn();\n const setDeviceSessionStateMock = jest.fn();\n\n function extractDependenciesMock() {\n return {\n closeApp: closeAppMock,\n getAppAndVersion: getAppAndVersionMock,\n getDeviceSessionState: getDeviceSessionStateMock,\n setDeviceSessionState: setDeviceSessionStateMock,\n };\n }\n\n const {\n sendCommand: sendCommandMock,\n getDeviceSessionState: apiGetDeviceSessionStateMock,\n } = makeDeviceActionInternalApiMock();\n\n beforeEach(() => {\n jest.resetAllMocks();\n });\n\n describe(\"without overriding `extractDependencies`\", () => {\n it(\"should run the device action with device already on dashboard\", (done) => {\n setupGetDeviceStatusMock();\n\n const goToDashboardDeviceAction = new GoToDashboardDeviceAction({\n input: { unlockTimeout: 500 },\n });\n\n apiGetDeviceSessionStateMock.mockReturnValue({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n currentApp: { name: \"BOLOS\", version: \"1.5.0\" },\n installedApps: [],\n deviceModelId: DeviceModelId.NANO_X,\n });\n\n const expectedStates: Array<GoToDashboardDAState> = [\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending, // GetDeviceStatus events (mocked for tests)\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n output: undefined,\n status: DeviceActionStatus.Completed,\n },\n ];\n\n testDeviceActionStates(\n goToDashboardDeviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n done,\n );\n });\n\n it(\"should run the device action with device not on dashboard\", (done) => {\n setupGetDeviceStatusMock([\n {\n currentApp: \"Bitcoin\",\n currentAppVersion: \"1.0.0\",\n },\n ]);\n\n const goToDashboardDeviceAction = new GoToDashboardDeviceAction({\n input: { unlockTimeout: 500 },\n });\n\n apiGetDeviceSessionStateMock.mockReturnValue({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n currentApp: { name: \"Bitcoin\", version: \"1.0.0\" },\n installedApps: [],\n deviceModelId: DeviceModelId.NANO_X,\n });\n\n sendCommandMock\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(\n CommandResultFactory({\n data: {\n name: \"BOLOS\",\n version: \"1.5.0\",\n },\n }),\n );\n\n const expectedStates: Array<GoToDashboardDAState> = [\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n output: undefined,\n status: DeviceActionStatus.Completed,\n },\n ];\n\n testDeviceActionStates(\n goToDashboardDeviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n done,\n );\n });\n });\n\n describe(\"success cases\", () => {\n it(\"should success if the device is already on dashboard\", (done) => {\n setupGetDeviceStatusMock();\n\n const goToDashboardDeviceAction = new GoToDashboardDeviceAction({\n input: { unlockTimeout: 500 },\n });\n\n getDeviceSessionStateMock.mockReturnValue({\n sessionStateType: DeviceSessionStateType.Connected,\n deviceStatus: DeviceStatus.CONNECTED,\n currentApp: { name: \"BOLOS\", version: \"1.5.0\" },\n });\n\n getAppAndVersionMock.mockReturnValue({\n app: \"BOLOS\",\n version: \"1.5.0\",\n });\n\n jest\n .spyOn(goToDashboardDeviceAction, \"extractDependencies\")\n .mockReturnValue(extractDependenciesMock());\n\n const expectedStates: Array<GoToDashboardDAState> = [\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n output: undefined,\n status: DeviceActionStatus.Completed,\n },\n ];\n\n testDeviceActionStates(\n goToDashboardDeviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n done,\n );\n });\n\n it(\"should success if the device is not on dashboard\", (done) => {\n setupGetDeviceStatusMock();\n\n const goToDashboardDeviceAction = new GoToDashboardDeviceAction({\n input: { unlockTimeout: 500 },\n });\n\n jest\n .spyOn(goToDashboardDeviceAction, \"extractDependencies\")\n .mockReturnValue(extractDependenciesMock());\n\n getDeviceSessionStateMock.mockReturnValue({\n sessionStateType: DeviceSessionStateType.Connected,\n deviceStatus: DeviceStatus.CONNECTED,\n });\n\n closeAppMock.mockResolvedValue(CommandResultFactory({ data: undefined }));\n getAppAndVersionMock.mockReturnValue(\n CommandResultFactory({\n data: {\n name: \"BOLOS\",\n version: \"1.5.0\",\n },\n }),\n );\n\n const expectedStates: Array<GoToDashboardDAState> = [\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n output: undefined,\n status: DeviceActionStatus.Completed,\n },\n ];\n\n testDeviceActionStates(\n goToDashboardDeviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n done,\n );\n });\n });\n\n describe(\"error cases\", () => {\n it(\"should return an error if GetDeviceStatus return an error\", (done) => {\n setupGetDeviceStatusMock([new UnknownDAError(\"Unknown error\")]);\n\n const goToDashboardDeviceAction = new GoToDashboardDeviceAction({\n input: { unlockTimeout: 500 },\n });\n\n apiGetDeviceSessionStateMock.mockReturnValue({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n currentApp: { name: \"BOLOS\", version: \"1.5.0\" },\n installedApps: [],\n deviceModelId: DeviceModelId.NANO_X,\n });\n\n const expectedStates: Array<GoToDashboardDAState> = [\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n status: DeviceActionStatus.Error,\n error: new UnknownDAError(\"Unknown error\"),\n },\n ];\n\n testDeviceActionStates(\n goToDashboardDeviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n done,\n );\n });\n\n describe(\"not on dashboard\", () => {\n it(\"should return an error if closeApp fails\", (done) => {\n setupGetDeviceStatusMock([\n {\n currentApp: \"Bitcoin\",\n currentAppVersion: \"1.0.0\",\n },\n ]);\n\n const goToDashboardDeviceAction = new GoToDashboardDeviceAction({\n input: {},\n });\n\n jest\n .spyOn(goToDashboardDeviceAction, \"extractDependencies\")\n .mockReturnValue(extractDependenciesMock());\n\n getDeviceSessionStateMock.mockReturnValue({\n sessionStateType: DeviceSessionStateType.Connected,\n deviceStatus: DeviceStatus.CONNECTED,\n currentApp: \"Bitcoin\",\n });\n\n closeAppMock.mockReturnValue(\n CommandResultFactory({\n error: new UnknownDeviceExchangeError(\"Close app failed\"),\n }),\n );\n\n const expectedStates: Array<GoToDashboardDAState> = [\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n status: DeviceActionStatus.Error,\n error: new UnknownDeviceExchangeError(\"Close app failed\"),\n },\n ];\n\n testDeviceActionStates(\n goToDashboardDeviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n done,\n );\n });\n\n it(\"should return an error if getAppAndVersion fails\", (done) => {\n setupGetDeviceStatusMock([\n {\n currentApp: \"Bitcoin\",\n currentAppVersion: \"1.0.0\",\n },\n ]);\n\n const goToDashboardDeviceAction = new GoToDashboardDeviceAction({\n input: { unlockTimeout: 500 },\n });\n const error = new GlobalCommandError({\n ...GLOBAL_ERRORS[\"5501\"],\n errorCode: \"5501\",\n });\n\n jest\n .spyOn(goToDashboardDeviceAction, \"extractDependencies\")\n .mockReturnValue(extractDependenciesMock());\n\n getDeviceSessionStateMock.mockReturnValue({\n sessionStateType: DeviceSessionStateType.Connected,\n deviceStatus: DeviceStatus.CONNECTED,\n currentApp: \"Bitcoin\",\n });\n\n closeAppMock.mockResolvedValue(\n CommandResultFactory({ data: undefined }),\n );\n getAppAndVersionMock.mockResolvedValue(\n CommandResultFactory({\n error,\n }),\n );\n\n const expectedStates: Array<GoToDashboardDAState> = [\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n status: DeviceActionStatus.Error,\n error,\n },\n ];\n\n testDeviceActionStates(\n goToDashboardDeviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n done,\n );\n });\n\n it(\"should return an error if getAppAndVersion does not return an app name\", (done) => {\n setupGetDeviceStatusMock([\n {\n currentApp: \"Bitcoin\",\n currentAppVersion: \"1.0.0\",\n },\n ]);\n\n const goToDashboardDeviceAction = new GoToDashboardDeviceAction({\n input: { unlockTimeout: 500 },\n });\n\n jest\n .spyOn(goToDashboardDeviceAction, \"extractDependencies\")\n .mockReturnValue(extractDependenciesMock());\n\n getDeviceSessionStateMock.mockReturnValue({\n sessionStateType: DeviceSessionStateType.Connected,\n deviceStatus: DeviceStatus.CONNECTED,\n currentApp: \"Bitcoin\",\n });\n\n closeAppMock.mockResolvedValue(\n CommandResultFactory({ data: undefined }),\n );\n getAppAndVersionMock.mockResolvedValue(\n CommandResultFactory({\n data: {\n name: null,\n version: \"1.0.0\",\n },\n }),\n );\n\n const expectedStates: Array<GoToDashboardDAState> = [\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n status: DeviceActionStatus.Error,\n error: new UnknownDAError(\"currentApp === null\"),\n },\n ];\n\n testDeviceActionStates(\n goToDashboardDeviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n done,\n );\n });\n });\n });\n});\n"],
5
- "mappings": "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",
6
- "names": ["CommandResultFactory", "GLOBAL_ERRORS", "GlobalCommandError", "DeviceModelId", "DeviceStatus", "makeDeviceActionInternalApiMock", "setupGetDeviceStatusMock", "testDeviceActionStates", "DeviceActionStatus", "UserInteractionRequired", "UnknownDAError", "DeviceSessionStateType", "UnknownDeviceExchangeError", "GoToDashboardDeviceAction", "closeAppMock", "getAppAndVersionMock", "getDeviceSessionStateMock", "setDeviceSessionStateMock", "extractDependenciesMock", "sendCommandMock", "apiGetDeviceSessionStateMock", "done", "goToDashboardDeviceAction", "expectedStates", "error"]
4
+ "sourcesContent": ["import { CommandResultFactory } from \"@api/command/model/CommandResult\";\nimport {\n GLOBAL_ERRORS,\n GlobalCommandError,\n} from \"@api/command/utils/GlobalCommandError\";\nimport { DeviceModelId } from \"@api/device/DeviceModel\";\nimport { DeviceStatus } from \"@api/device/DeviceStatus\";\nimport { makeDeviceActionInternalApiMock } from \"@api/device-action/__test-utils__/makeInternalApi\";\nimport { setupGetDeviceStatusMock } from \"@api/device-action/__test-utils__/setupTestMachine\";\nimport { testDeviceActionStates } from \"@api/device-action/__test-utils__/testDeviceActionStates\";\nimport { DeviceActionStatus } from \"@api/device-action/model/DeviceActionState\";\nimport { UserInteractionRequired } from \"@api/device-action/model/UserInteractionRequired\";\nimport { UnknownDAError } from \"@api/device-action/os/Errors\";\nimport { DeviceSessionStateType } from \"@api/device-session/DeviceSessionState\";\nimport { UnknownDeviceExchangeError } from \"@root/src\";\n\nimport { GoToDashboardDeviceAction } from \"./GoToDashboardDeviceAction\";\nimport { type GoToDashboardDAState } from \"./types\";\n\nvi.mock(\"@api/device-action/os/GetDeviceStatus/GetDeviceStatusDeviceAction\");\n\ndescribe(\"GoToDashboardDeviceAction\", () => {\n const closeAppMock = vi.fn();\n const getAppAndVersionMock = vi.fn();\n const getDeviceSessionStateMock = vi.fn();\n const setDeviceSessionStateMock = vi.fn();\n\n function extractDependenciesMock() {\n return {\n closeApp: closeAppMock,\n getAppAndVersion: getAppAndVersionMock,\n getDeviceSessionState: getDeviceSessionStateMock,\n setDeviceSessionState: setDeviceSessionStateMock,\n };\n }\n\n const {\n sendCommand: sendCommandMock,\n getDeviceSessionState: apiGetDeviceSessionStateMock,\n } = makeDeviceActionInternalApiMock();\n\n beforeEach(() => {\n vi.resetAllMocks();\n });\n\n describe(\"without overriding `extractDependencies`\", () => {\n it(\"should run the device action with device already on dashboard\", () =>\n new Promise<void>((resolve, reject) => {\n setupGetDeviceStatusMock();\n\n const goToDashboardDeviceAction = new GoToDashboardDeviceAction({\n input: { unlockTimeout: 500 },\n });\n\n apiGetDeviceSessionStateMock.mockReturnValue({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n currentApp: { name: \"BOLOS\", version: \"1.5.0\" },\n installedApps: [],\n deviceModelId: DeviceModelId.NANO_X,\n });\n\n const expectedStates: Array<GoToDashboardDAState> = [\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending, // GetDeviceStatus events (mocked for tests)\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n output: undefined,\n status: DeviceActionStatus.Completed,\n },\n ];\n\n testDeviceActionStates(\n goToDashboardDeviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n {\n onDone: resolve,\n onError: reject,\n },\n );\n }));\n\n it(\"should run the device action with device not on dashboard\", () =>\n new Promise<void>((resolve, reject) => {\n setupGetDeviceStatusMock([\n {\n currentApp: \"Bitcoin\",\n currentAppVersion: \"1.0.0\",\n },\n ]);\n\n const goToDashboardDeviceAction = new GoToDashboardDeviceAction({\n input: { unlockTimeout: 500 },\n });\n\n apiGetDeviceSessionStateMock.mockReturnValue({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n currentApp: { name: \"Bitcoin\", version: \"1.0.0\" },\n installedApps: [],\n deviceModelId: DeviceModelId.NANO_X,\n });\n\n sendCommandMock\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(\n CommandResultFactory({\n data: {\n name: \"BOLOS\",\n version: \"1.5.0\",\n },\n }),\n );\n\n const expectedStates: Array<GoToDashboardDAState> = [\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n output: undefined,\n status: DeviceActionStatus.Completed,\n },\n ];\n\n testDeviceActionStates(\n goToDashboardDeviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n {\n onDone: resolve,\n onError: reject,\n },\n );\n }));\n });\n\n describe(\"success cases\", () => {\n it(\"should success if the device is already on dashboard\", () =>\n new Promise<void>((resolve, reject) => {\n setupGetDeviceStatusMock();\n\n const goToDashboardDeviceAction = new GoToDashboardDeviceAction({\n input: { unlockTimeout: 500 },\n });\n\n getDeviceSessionStateMock.mockReturnValue({\n sessionStateType: DeviceSessionStateType.Connected,\n deviceStatus: DeviceStatus.CONNECTED,\n currentApp: { name: \"BOLOS\", version: \"1.5.0\" },\n });\n\n getAppAndVersionMock.mockReturnValue({\n app: \"BOLOS\",\n version: \"1.5.0\",\n });\n\n vi.spyOn(\n goToDashboardDeviceAction,\n \"extractDependencies\",\n ).mockReturnValue(extractDependenciesMock());\n\n const expectedStates: Array<GoToDashboardDAState> = [\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n output: undefined,\n status: DeviceActionStatus.Completed,\n },\n ];\n\n testDeviceActionStates(\n goToDashboardDeviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n {\n onDone: resolve,\n onError: reject,\n },\n );\n }));\n\n it(\"should success if the device is not on dashboard\", () =>\n new Promise<void>((resolve, reject) => {\n setupGetDeviceStatusMock();\n\n const goToDashboardDeviceAction = new GoToDashboardDeviceAction({\n input: { unlockTimeout: 500 },\n });\n\n vi.spyOn(\n goToDashboardDeviceAction,\n \"extractDependencies\",\n ).mockReturnValue(extractDependenciesMock());\n\n getDeviceSessionStateMock.mockReturnValue({\n sessionStateType: DeviceSessionStateType.Connected,\n deviceStatus: DeviceStatus.CONNECTED,\n });\n\n closeAppMock.mockResolvedValue(\n CommandResultFactory({ data: undefined }),\n );\n getAppAndVersionMock.mockReturnValue(\n CommandResultFactory({\n data: {\n name: \"BOLOS\",\n version: \"1.5.0\",\n },\n }),\n );\n\n const expectedStates: Array<GoToDashboardDAState> = [\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n output: undefined,\n status: DeviceActionStatus.Completed,\n },\n ];\n\n testDeviceActionStates(\n goToDashboardDeviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n {\n onDone: resolve,\n onError: reject,\n },\n );\n }));\n });\n\n describe(\"error cases\", () => {\n it(\"should return an error if GetDeviceStatus return an error\", () =>\n new Promise<void>((resolve, reject) => {\n setupGetDeviceStatusMock([new UnknownDAError(\"Unknown error\")]);\n\n const goToDashboardDeviceAction = new GoToDashboardDeviceAction({\n input: { unlockTimeout: 500 },\n });\n\n apiGetDeviceSessionStateMock.mockReturnValue({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n currentApp: { name: \"BOLOS\", version: \"1.5.0\" },\n installedApps: [],\n deviceModelId: DeviceModelId.NANO_X,\n });\n\n const expectedStates: Array<GoToDashboardDAState> = [\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n status: DeviceActionStatus.Error,\n error: new UnknownDAError(\"Unknown error\"),\n },\n ];\n\n testDeviceActionStates(\n goToDashboardDeviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n {\n onDone: resolve,\n onError: reject,\n },\n );\n }));\n\n describe(\"not on dashboard\", () => {\n it(\"should return an error if closeApp fails\", () =>\n new Promise<void>((resolve, reject) => {\n setupGetDeviceStatusMock([\n {\n currentApp: \"Bitcoin\",\n currentAppVersion: \"1.0.0\",\n },\n ]);\n\n const goToDashboardDeviceAction = new GoToDashboardDeviceAction({\n input: {},\n });\n\n vi.spyOn(\n goToDashboardDeviceAction,\n \"extractDependencies\",\n ).mockReturnValue(extractDependenciesMock());\n\n getDeviceSessionStateMock.mockReturnValue({\n sessionStateType: DeviceSessionStateType.Connected,\n deviceStatus: DeviceStatus.CONNECTED,\n currentApp: \"Bitcoin\",\n });\n\n closeAppMock.mockReturnValue(\n CommandResultFactory({\n error: new UnknownDeviceExchangeError(\"Close app failed\"),\n }),\n );\n\n const expectedStates: Array<GoToDashboardDAState> = [\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n status: DeviceActionStatus.Error,\n error: new UnknownDeviceExchangeError(\"Close app failed\"),\n },\n ];\n\n testDeviceActionStates(\n goToDashboardDeviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n {\n onDone: resolve,\n onError: reject,\n },\n );\n }));\n\n it(\"should return an error if getAppAndVersion fails\", () =>\n new Promise<void>((resolve, reject) => {\n setupGetDeviceStatusMock([\n {\n currentApp: \"Bitcoin\",\n currentAppVersion: \"1.0.0\",\n },\n ]);\n\n const goToDashboardDeviceAction = new GoToDashboardDeviceAction({\n input: { unlockTimeout: 500 },\n });\n const error = new GlobalCommandError({\n ...GLOBAL_ERRORS[\"5501\"],\n errorCode: \"5501\",\n });\n\n vi.spyOn(\n goToDashboardDeviceAction,\n \"extractDependencies\",\n ).mockReturnValue(extractDependenciesMock());\n\n getDeviceSessionStateMock.mockReturnValue({\n sessionStateType: DeviceSessionStateType.Connected,\n deviceStatus: DeviceStatus.CONNECTED,\n currentApp: \"Bitcoin\",\n });\n\n closeAppMock.mockResolvedValue(\n CommandResultFactory({ data: undefined }),\n );\n getAppAndVersionMock.mockResolvedValue(\n CommandResultFactory({\n error,\n }),\n );\n\n const expectedStates: Array<GoToDashboardDAState> = [\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n status: DeviceActionStatus.Error,\n error,\n },\n ];\n\n testDeviceActionStates(\n goToDashboardDeviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n {\n onDone: resolve,\n onError: reject,\n },\n );\n }));\n\n it(\"should return an error if getAppAndVersion does not return an app name\", () =>\n new Promise<void>((resolve, reject) => {\n setupGetDeviceStatusMock([\n {\n currentApp: \"Bitcoin\",\n currentAppVersion: \"1.0.0\",\n },\n ]);\n\n const goToDashboardDeviceAction = new GoToDashboardDeviceAction({\n input: { unlockTimeout: 500 },\n });\n\n vi.spyOn(\n goToDashboardDeviceAction,\n \"extractDependencies\",\n ).mockReturnValue(extractDependenciesMock());\n\n getDeviceSessionStateMock.mockReturnValue({\n sessionStateType: DeviceSessionStateType.Connected,\n deviceStatus: DeviceStatus.CONNECTED,\n currentApp: \"Bitcoin\",\n });\n\n closeAppMock.mockResolvedValue(\n CommandResultFactory({ data: undefined }),\n );\n getAppAndVersionMock.mockResolvedValue(\n CommandResultFactory({\n data: {\n name: null,\n version: \"1.0.0\",\n },\n }),\n );\n\n const expectedStates: Array<GoToDashboardDAState> = [\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n status: DeviceActionStatus.Error,\n error: new UnknownDAError(\"currentApp === null\"),\n },\n ];\n\n testDeviceActionStates(\n goToDashboardDeviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n {\n onDone: resolve,\n onError: reject,\n },\n );\n }));\n });\n });\n});\n"],
5
+ "mappings": "AAAA,OAAS,wBAAAA,MAA4B,mCACrC,OACE,iBAAAC,EACA,sBAAAC,MACK,wCACP,OAAS,iBAAAC,MAAqB,0BAC9B,OAAS,gBAAAC,MAAoB,2BAC7B,OAAS,mCAAAC,MAAuC,oDAChD,OAAS,4BAAAC,MAAgC,qDACzC,OAAS,0BAAAC,MAA8B,2DACvC,OAAS,sBAAAC,MAA0B,6CACnC,OAAS,2BAAAC,MAA+B,mDACxC,OAAS,kBAAAC,MAAsB,+BAC/B,OAAS,0BAAAC,MAA8B,yCACvC,OAAS,8BAAAC,MAAkC,YAE3C,OAAS,6BAAAC,MAAiC,8BAG1C,GAAG,KAAK,mEAAmE,EAE3E,SAAS,4BAA6B,IAAM,CAC1C,MAAMC,EAAe,GAAG,GAAG,EACrBC,EAAuB,GAAG,GAAG,EAC7BC,EAA4B,GAAG,GAAG,EAClCC,EAA4B,GAAG,GAAG,EAExC,SAASC,GAA0B,CACjC,MAAO,CACL,SAAUJ,EACV,iBAAkBC,EAClB,sBAAuBC,EACvB,sBAAuBC,CACzB,CACF,CAEA,KAAM,CACJ,YAAaE,EACb,sBAAuBC,CACzB,EAAIf,EAAgC,EAEpC,WAAW,IAAM,CACf,GAAG,cAAc,CACnB,CAAC,EAED,SAAS,2CAA4C,IAAM,CACzD,GAAG,gEAAiE,IAClE,IAAI,QAAc,CAACgB,EAASC,IAAW,CACrChB,EAAyB,EAEzB,MAAMiB,EAA4B,IAAIV,EAA0B,CAC9D,MAAO,CAAE,cAAe,GAAI,CAC9B,CAAC,EAEDO,EAA6B,gBAAgB,CAC3C,iBAAkBT,EAAuB,0BACzC,aAAcP,EAAa,UAC3B,WAAY,CAAE,KAAM,QAAS,QAAS,OAAQ,EAC9C,cAAe,CAAC,EAChB,cAAeD,EAAc,MAC/B,CAAC,EAED,MAAMqB,EAA8C,CAClD,CACE,kBAAmB,CACjB,wBAAyBf,EAAwB,IACnD,EACA,OAAQD,EAAmB,OAC7B,EACA,CACE,kBAAmB,CACjB,wBAAyBC,EAAwB,IACnD,EACA,OAAQD,EAAmB,OAC7B,EACA,CACE,OAAQ,OACR,OAAQA,EAAmB,SAC7B,CACF,EAEAD,EACEgB,EACAC,EACAnB,EAAgC,EAChC,CACE,OAAQgB,EACR,QAASC,CACX,CACF,CACF,CAAC,CAAC,EAEJ,GAAG,4DAA6D,IAC9D,IAAI,QAAc,CAACD,EAASC,IAAW,CACrChB,EAAyB,CACvB,CACE,WAAY,UACZ,kBAAmB,OACrB,CACF,CAAC,EAED,MAAMiB,EAA4B,IAAIV,EAA0B,CAC9D,MAAO,CAAE,cAAe,GAAI,CAC9B,CAAC,EAEDO,EAA6B,gBAAgB,CAC3C,iBAAkBT,EAAuB,0BACzC,aAAcP,EAAa,UAC3B,WAAY,CAAE,KAAM,UAAW,QAAS,OAAQ,EAChD,cAAe,CAAC,EAChB,cAAeD,EAAc,MAC/B,CAAC,EAEDgB,EACG,sBAAsBnB,EAAqB,CAAE,KAAM,MAAU,CAAC,CAAC,EAC/D,sBACCA,EAAqB,CACnB,KAAM,CACJ,KAAM,QACN,QAAS,OACX,CACF,CAAC,CACH,EAEF,MAAMwB,EAA8C,CAClD,CACE,kBAAmB,CACjB,wBAAyBf,EAAwB,IACnD,EACA,OAAQD,EAAmB,OAC7B,EACA,CACE,kBAAmB,CACjB,wBAAyBC,EAAwB,IACnD,EACA,OAAQD,EAAmB,OAC7B,EACA,CACE,kBAAmB,CACjB,wBAAyBC,EAAwB,IACnD,EACA,OAAQD,EAAmB,OAC7B,EACA,CACE,kBAAmB,CACjB,wBAAyBC,EAAwB,IACnD,EACA,OAAQD,EAAmB,OAC7B,EACA,CACE,OAAQ,OACR,OAAQA,EAAmB,SAC7B,CACF,EAEAD,EACEgB,EACAC,EACAnB,EAAgC,EAChC,CACE,OAAQgB,EACR,QAASC,CACX,CACF,CACF,CAAC,CAAC,CACN,CAAC,EAED,SAAS,gBAAiB,IAAM,CAC9B,GAAG,uDAAwD,IACzD,IAAI,QAAc,CAACD,EAASC,IAAW,CACrChB,EAAyB,EAEzB,MAAMiB,EAA4B,IAAIV,EAA0B,CAC9D,MAAO,CAAE,cAAe,GAAI,CAC9B,CAAC,EAEDG,EAA0B,gBAAgB,CACxC,iBAAkBL,EAAuB,UACzC,aAAcP,EAAa,UAC3B,WAAY,CAAE,KAAM,QAAS,QAAS,OAAQ,CAChD,CAAC,EAEDW,EAAqB,gBAAgB,CACnC,IAAK,QACL,QAAS,OACX,CAAC,EAED,GAAG,MACDQ,EACA,qBACF,EAAE,gBAAgBL,EAAwB,CAAC,EAE3C,MAAMM,EAA8C,CAClD,CACE,kBAAmB,CACjB,wBAAyBf,EAAwB,IACnD,EACA,OAAQD,EAAmB,OAC7B,EACA,CACE,kBAAmB,CACjB,wBAAyBC,EAAwB,IACnD,EACA,OAAQD,EAAmB,OAC7B,EACA,CACE,OAAQ,OACR,OAAQA,EAAmB,SAC7B,CACF,EAEAD,EACEgB,EACAC,EACAnB,EAAgC,EAChC,CACE,OAAQgB,EACR,QAASC,CACX,CACF,CACF,CAAC,CAAC,EAEJ,GAAG,mDAAoD,IACrD,IAAI,QAAc,CAACD,EAASC,IAAW,CACrChB,EAAyB,EAEzB,MAAMiB,EAA4B,IAAIV,EAA0B,CAC9D,MAAO,CAAE,cAAe,GAAI,CAC9B,CAAC,EAED,GAAG,MACDU,EACA,qBACF,EAAE,gBAAgBL,EAAwB,CAAC,EAE3CF,EAA0B,gBAAgB,CACxC,iBAAkBL,EAAuB,UACzC,aAAcP,EAAa,SAC7B,CAAC,EAEDU,EAAa,kBACXd,EAAqB,CAAE,KAAM,MAAU,CAAC,CAC1C,EACAe,EAAqB,gBACnBf,EAAqB,CACnB,KAAM,CACJ,KAAM,QACN,QAAS,OACX,CACF,CAAC,CACH,EAEA,MAAMwB,EAA8C,CAClD,CACE,kBAAmB,CACjB,wBAAyBf,EAAwB,IACnD,EACA,OAAQD,EAAmB,OAC7B,EACA,CACE,kBAAmB,CACjB,wBAAyBC,EAAwB,IACnD,EACA,OAAQD,EAAmB,OAC7B,EACA,CACE,OAAQ,OACR,OAAQA,EAAmB,SAC7B,CACF,EAEAD,EACEgB,EACAC,EACAnB,EAAgC,EAChC,CACE,OAAQgB,EACR,QAASC,CACX,CACF,CACF,CAAC,CAAC,CACN,CAAC,EAED,SAAS,cAAe,IAAM,CAC5B,GAAG,4DAA6D,IAC9D,IAAI,QAAc,CAACD,EAASC,IAAW,CACrChB,EAAyB,CAAC,IAAII,EAAe,eAAe,CAAC,CAAC,EAE9D,MAAMa,EAA4B,IAAIV,EAA0B,CAC9D,MAAO,CAAE,cAAe,GAAI,CAC9B,CAAC,EAEDO,EAA6B,gBAAgB,CAC3C,iBAAkBT,EAAuB,0BACzC,aAAcP,EAAa,UAC3B,WAAY,CAAE,KAAM,QAAS,QAAS,OAAQ,EAC9C,cAAe,CAAC,EAChB,cAAeD,EAAc,MAC/B,CAAC,EAED,MAAMqB,EAA8C,CAClD,CACE,kBAAmB,CACjB,wBAAyBf,EAAwB,IACnD,EACA,OAAQD,EAAmB,OAC7B,EACA,CACE,kBAAmB,CACjB,wBAAyBC,EAAwB,IACnD,EACA,OAAQD,EAAmB,OAC7B,EACA,CACE,OAAQA,EAAmB,MAC3B,MAAO,IAAIE,EAAe,eAAe,CAC3C,CACF,EAEAH,EACEgB,EACAC,EACAnB,EAAgC,EAChC,CACE,OAAQgB,EACR,QAASC,CACX,CACF,CACF,CAAC,CAAC,EAEJ,SAAS,mBAAoB,IAAM,CACjC,GAAG,2CAA4C,IAC7C,IAAI,QAAc,CAACD,EAASC,IAAW,CACrChB,EAAyB,CACvB,CACE,WAAY,UACZ,kBAAmB,OACrB,CACF,CAAC,EAED,MAAMiB,EAA4B,IAAIV,EAA0B,CAC9D,MAAO,CAAC,CACV,CAAC,EAED,GAAG,MACDU,EACA,qBACF,EAAE,gBAAgBL,EAAwB,CAAC,EAE3CF,EAA0B,gBAAgB,CACxC,iBAAkBL,EAAuB,UACzC,aAAcP,EAAa,UAC3B,WAAY,SACd,CAAC,EAEDU,EAAa,gBACXd,EAAqB,CACnB,MAAO,IAAIY,EAA2B,kBAAkB,CAC1D,CAAC,CACH,EAEA,MAAMY,EAA8C,CAClD,CACE,kBAAmB,CACjB,wBAAyBf,EAAwB,IACnD,EACA,OAAQD,EAAmB,OAC7B,EACA,CACE,kBAAmB,CACjB,wBAAyBC,EAAwB,IACnD,EACA,OAAQD,EAAmB,OAC7B,EACA,CACE,kBAAmB,CACjB,wBAAyBC,EAAwB,IACnD,EACA,OAAQD,EAAmB,OAC7B,EACA,CACE,OAAQA,EAAmB,MAC3B,MAAO,IAAII,EAA2B,kBAAkB,CAC1D,CACF,EAEAL,EACEgB,EACAC,EACAnB,EAAgC,EAChC,CACE,OAAQgB,EACR,QAASC,CACX,CACF,CACF,CAAC,CAAC,EAEJ,GAAG,mDAAoD,IACrD,IAAI,QAAc,CAACD,EAASC,IAAW,CACrChB,EAAyB,CACvB,CACE,WAAY,UACZ,kBAAmB,OACrB,CACF,CAAC,EAED,MAAMiB,EAA4B,IAAIV,EAA0B,CAC9D,MAAO,CAAE,cAAe,GAAI,CAC9B,CAAC,EACKY,EAAQ,IAAIvB,EAAmB,CACnC,GAAGD,EAAc,IAAM,EACvB,UAAW,MACb,CAAC,EAED,GAAG,MACDsB,EACA,qBACF,EAAE,gBAAgBL,EAAwB,CAAC,EAE3CF,EAA0B,gBAAgB,CACxC,iBAAkBL,EAAuB,UACzC,aAAcP,EAAa,UAC3B,WAAY,SACd,CAAC,EAEDU,EAAa,kBACXd,EAAqB,CAAE,KAAM,MAAU,CAAC,CAC1C,EACAe,EAAqB,kBACnBf,EAAqB,CACnB,MAAAyB,CACF,CAAC,CACH,EAEA,MAAMD,EAA8C,CAClD,CACE,kBAAmB,CACjB,wBAAyBf,EAAwB,IACnD,EACA,OAAQD,EAAmB,OAC7B,EACA,CACE,kBAAmB,CACjB,wBAAyBC,EAAwB,IACnD,EACA,OAAQD,EAAmB,OAC7B,EACA,CACE,kBAAmB,CACjB,wBAAyBC,EAAwB,IACnD,EACA,OAAQD,EAAmB,OAC7B,EACA,CACE,kBAAmB,CACjB,wBAAyBC,EAAwB,IACnD,EACA,OAAQD,EAAmB,OAC7B,EACA,CACE,OAAQA,EAAmB,MAC3B,MAAAiB,CACF,CACF,EAEAlB,EACEgB,EACAC,EACAnB,EAAgC,EAChC,CACE,OAAQgB,EACR,QAASC,CACX,CACF,CACF,CAAC,CAAC,EAEJ,GAAG,yEAA0E,IAC3E,IAAI,QAAc,CAACD,EAASC,IAAW,CACrChB,EAAyB,CACvB,CACE,WAAY,UACZ,kBAAmB,OACrB,CACF,CAAC,EAED,MAAMiB,EAA4B,IAAIV,EAA0B,CAC9D,MAAO,CAAE,cAAe,GAAI,CAC9B,CAAC,EAED,GAAG,MACDU,EACA,qBACF,EAAE,gBAAgBL,EAAwB,CAAC,EAE3CF,EAA0B,gBAAgB,CACxC,iBAAkBL,EAAuB,UACzC,aAAcP,EAAa,UAC3B,WAAY,SACd,CAAC,EAEDU,EAAa,kBACXd,EAAqB,CAAE,KAAM,MAAU,CAAC,CAC1C,EACAe,EAAqB,kBACnBf,EAAqB,CACnB,KAAM,CACJ,KAAM,KACN,QAAS,OACX,CACF,CAAC,CACH,EAEA,MAAMwB,EAA8C,CAClD,CACE,kBAAmB,CACjB,wBAAyBf,EAAwB,IACnD,EACA,OAAQD,EAAmB,OAC7B,EACA,CACE,kBAAmB,CACjB,wBAAyBC,EAAwB,IACnD,EACA,OAAQD,EAAmB,OAC7B,EACA,CACE,kBAAmB,CACjB,wBAAyBC,EAAwB,IACnD,EACA,OAAQD,EAAmB,OAC7B,EACA,CACE,kBAAmB,CACjB,wBAAyBC,EAAwB,IACnD,EACA,OAAQD,EAAmB,OAC7B,EACA,CACE,OAAQA,EAAmB,MAC3B,MAAO,IAAIE,EAAe,qBAAqB,CACjD,CACF,EAEAH,EACEgB,EACAC,EACAnB,EAAgC,EAChC,CACE,OAAQgB,EACR,QAASC,CACX,CACF,CACF,CAAC,CAAC,CACN,CAAC,CACH,CAAC,CACH,CAAC",
6
+ "names": ["CommandResultFactory", "GLOBAL_ERRORS", "GlobalCommandError", "DeviceModelId", "DeviceStatus", "makeDeviceActionInternalApiMock", "setupGetDeviceStatusMock", "testDeviceActionStates", "DeviceActionStatus", "UserInteractionRequired", "UnknownDAError", "DeviceSessionStateType", "UnknownDeviceExchangeError", "GoToDashboardDeviceAction", "closeAppMock", "getAppAndVersionMock", "getDeviceSessionStateMock", "setDeviceSessionStateMock", "extractDependenciesMock", "sendCommandMock", "apiGetDeviceSessionStateMock", "resolve", "reject", "goToDashboardDeviceAction", "expectedStates", "error"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{CommandResultFactory as s}from"../../../command/model/CommandResult";import{GLOBAL_ERRORS as I,GlobalCommandError as U}from"../../../command/utils/GlobalCommandError";import{BTC_APP as a,CUSTOM_LOCK_SCREEN_APP as p,DOGECOIN_APP as P,ETH_APP as m,SOLANA_APP as A}from"../../../device-action/__test-utils__/data";import{makeDeviceActionInternalApiMock as o}from"../../../device-action/__test-utils__/makeInternalApi";import{setupGoToDashboardMock as u}from"../../../device-action/__test-utils__/setupTestMachine";import{testDeviceActionStates as c}from"../../../device-action/__test-utils__/testDeviceActionStates";import{DeviceActionStatus as e}from"../../../device-action/model/DeviceActionState";import{UserInteractionRequired as t}from"../../../device-action/model/UserInteractionRequired";import{UnknownDAError as V}from"../../../device-action/os/Errors";import{ListAppsDeviceAction as l}from"./ListAppsDeviceAction";jest.mock("@api/device-action/os/GoToDashboard/GoToDashboardDeviceAction");describe("ListAppsDeviceAction",()=>{const{sendCommand:d}=o();beforeEach(()=>{jest.resetAllMocks()}),describe("success cases",()=>{it("should run the device action with no apps installed",i=>{u();const r=new l({input:{}});d.mockResolvedValue(s({data:[]}));const n=[{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.AllowListApps},status:e.Pending},{output:[],status:e.Completed}];c(r,n,o(),i)}),it("should run the device action with one app installed",i=>{u();const r=new l({input:{unlockTimeout:500}});d.mockResolvedValueOnce(s({data:[a]}));const n=[{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.AllowListApps},status:e.Pending},{output:[a],status:e.Completed}];c(r,n,o(),i)}),it("should run the device action with two app installed",i=>{u();const r=new l({input:{unlockTimeout:500}});d.mockResolvedValueOnce(s({data:[a,p]})).mockResolvedValueOnce(s({data:[]}));const n=[{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.AllowListApps},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{output:[a,p],status:e.Completed}];c(r,n,o(),i)}),it("should run the device action with three app installed",i=>{u();const r=new l({input:{unlockTimeout:500}});d.mockResolvedValueOnce(s({data:[a,p]})).mockResolvedValueOnce(s({data:[m]}));const n=[{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.AllowListApps},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{output:[a,p,m],status:e.Completed}];c(r,n,o(),i)}),it("should run the device action with four app installed",i=>{u();const r=new l({input:{unlockTimeout:500}});d.mockResolvedValueOnce(s({data:[a,p]})).mockResolvedValueOnce(s({data:[m,A]})).mockResolvedValueOnce(s({data:[]}));const n=[{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.AllowListApps},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{output:[a,p,m,A],status:e.Completed}];c(r,n,o(),i)}),it("should run the device action with five app installed",i=>{u();const r=new l({input:{unlockTimeout:500}});d.mockResolvedValueOnce(s({data:[a,p]})).mockResolvedValueOnce(s({data:[m,A]})).mockResolvedValueOnce(s({data:[P]}));const n=[{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.AllowListApps},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{output:[a,p,m,A,P],status:e.Completed}];c(r,n,o(),i)})}),describe("error cases",()=>{it("should return an error if GoTodashboard fails",i=>{u(!0);const r=new l({input:{unlockTimeout:500}});d.mockResolvedValue(s({data:[]}));const n=[{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{error:new V("GoToDashboard failed"),status:e.Error}];c(r,n,o(),i)}),it("should run the device action if GoTodashboard fails",i=>{u(!0);const r=new l({input:{unlockTimeout:500}});d.mockResolvedValue(s({data:[]}));const n=[{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{error:new V("GoToDashboard failed"),status:e.Error}];c(r,n,o(),i)}),it("should return an error if ListApps fails",i=>{u();const r=new l({input:{unlockTimeout:500}}),n=new U({errorCode:"5501",...I[5501]});d.mockResolvedValue(s({error:n}));const v=[{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.AllowListApps},status:e.Pending},{error:n,status:e.Error}];c(r,v,o(),i)}),it("should return an error if ListAppsContinue fails",i=>{u();const r=new l({input:{unlockTimeout:500}});d.mockResolvedValueOnce(s({data:[a,p]})).mockRejectedValueOnce(new V("mocked error"));const n=[{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.AllowListApps},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{error:new V("mocked error"),status:e.Error}];c(r,n,o(),i)})})});
1
+ import{CommandResultFactory as s}from"../../../command/model/CommandResult";import{GLOBAL_ERRORS as w,GlobalCommandError as I}from"../../../command/utils/GlobalCommandError";import{BTC_APP as a,CUSTOM_LOCK_SCREEN_APP as m,DOGECOIN_APP as V,ETH_APP as A,SOLANA_APP as P}from"../../../device-action/__test-utils__/data";import{makeDeviceActionInternalApiMock as d}from"../../../device-action/__test-utils__/makeInternalApi";import{setupGoToDashboardMock as c}from"../../../device-action/__test-utils__/setupTestMachine";import{testDeviceActionStates as l}from"../../../device-action/__test-utils__/testDeviceActionStates";import{DeviceActionStatus as e}from"../../../device-action/model/DeviceActionState";import{UserInteractionRequired as t}from"../../../device-action/model/UserInteractionRequired";import{UnknownDAError as v}from"../../../device-action/os/Errors";import{ListAppsDeviceAction as p}from"./ListAppsDeviceAction";vi.mock("@api/device-action/os/GoToDashboard/GoToDashboardDeviceAction");describe("ListAppsDeviceAction",()=>{const{sendCommand:u}=d();beforeEach(()=>{vi.resetAllMocks()}),describe("success cases",()=>{it("should run the device action with no apps installed",()=>new Promise((i,r)=>{c();const o=new p({input:{}});u.mockResolvedValue(s({data:[]}));const n=[{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.AllowListApps},status:e.Pending},{output:[],status:e.Completed}];l(o,n,d(),{onDone:i,onError:r})})),it("should run the device action with one app installed",()=>new Promise((i,r)=>{c();const o=new p({input:{unlockTimeout:500}});u.mockResolvedValueOnce(s({data:[a]}));const n=[{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.AllowListApps},status:e.Pending},{output:[a],status:e.Completed}];l(o,n,d(),{onDone:i,onError:r})})),it("should run the device action with two app installed",()=>new Promise((i,r)=>{c();const o=new p({input:{unlockTimeout:500}});u.mockResolvedValueOnce(s({data:[a,m]})).mockResolvedValueOnce(s({data:[]}));const n=[{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.AllowListApps},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{output:[a,m],status:e.Completed}];l(o,n,d(),{onDone:i,onError:r})})),it("should run the device action with three app installed",()=>new Promise((i,r)=>{c();const o=new p({input:{unlockTimeout:500}});u.mockResolvedValueOnce(s({data:[a,m]})).mockResolvedValueOnce(s({data:[A]}));const n=[{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.AllowListApps},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{output:[a,m,A],status:e.Completed}];l(o,n,d(),{onDone:i,onError:r})})),it("should run the device action with four app installed",()=>new Promise((i,r)=>{c();const o=new p({input:{unlockTimeout:500}});u.mockResolvedValueOnce(s({data:[a,m]})).mockResolvedValueOnce(s({data:[A,P]})).mockResolvedValueOnce(s({data:[]}));const n=[{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.AllowListApps},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{output:[a,m,A,P],status:e.Completed}];l(o,n,d(),{onDone:i,onError:r})})),it("should run the device action with five app installed",()=>new Promise((i,r)=>{c();const o=new p({input:{unlockTimeout:500}});u.mockResolvedValueOnce(s({data:[a,m]})).mockResolvedValueOnce(s({data:[A,P]})).mockResolvedValueOnce(s({data:[V]}));const n=[{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.AllowListApps},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{output:[a,m,A,P,V],status:e.Completed}];l(o,n,d(),{onDone:i,onError:r})}))}),describe("error cases",()=>{it("should return an error if GoTodashboard fails",()=>new Promise((i,r)=>{c(!0);const o=new p({input:{unlockTimeout:500}});u.mockResolvedValue(s({data:[]}));const n=[{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{error:new v("GoToDashboard failed"),status:e.Error}];l(o,n,d(),{onDone:i,onError:r})})),it("should run the device action if GoTodashboard fails",()=>new Promise((i,r)=>{c(!0);const o=new p({input:{unlockTimeout:500}});u.mockResolvedValue(s({data:[]}));const n=[{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{error:new v("GoToDashboard failed"),status:e.Error}];l(o,n,d(),{onDone:i,onError:r})})),it("should return an error if ListApps fails",()=>new Promise((i,r)=>{c();const o=new p({input:{unlockTimeout:500}}),n=new I({errorCode:"5501",...w[5501]});u.mockResolvedValue(s({error:n}));const D=[{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.AllowListApps},status:e.Pending},{error:n,status:e.Error}];l(o,D,d(),{onDone:i,onError:r})})),it("should return an error if ListAppsContinue fails",()=>new Promise((i,r)=>{c();const o=new p({input:{unlockTimeout:500}});u.mockResolvedValueOnce(s({data:[a,m]})).mockRejectedValueOnce(new v("mocked error"));const n=[{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.AllowListApps},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{error:new v("mocked error"),status:e.Error}];l(o,n,d(),{onDone:i,onError:r})}))})});
2
2
  //# sourceMappingURL=ListAppsDeviceAction.test.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../../src/api/device-action/os/ListApps/ListAppsDeviceAction.test.ts"],
4
- "sourcesContent": ["import { CommandResultFactory } from \"@api/command/model/CommandResult\";\nimport { type ListAppsResponse } from \"@api/command/os/ListAppsCommand\";\nimport {\n GLOBAL_ERRORS,\n GlobalCommandError,\n} from \"@api/command/utils/GlobalCommandError\";\nimport {\n BTC_APP,\n CUSTOM_LOCK_SCREEN_APP,\n DOGECOIN_APP,\n ETH_APP,\n SOLANA_APP,\n} from \"@api/device-action/__test-utils__/data\";\nimport { makeDeviceActionInternalApiMock } from \"@api/device-action/__test-utils__/makeInternalApi\";\nimport { setupGoToDashboardMock } from \"@api/device-action/__test-utils__/setupTestMachine\";\nimport { testDeviceActionStates } from \"@api/device-action/__test-utils__/testDeviceActionStates\";\nimport { DeviceActionStatus } from \"@api/device-action/model/DeviceActionState\";\nimport { UserInteractionRequired } from \"@api/device-action/model/UserInteractionRequired\";\nimport { UnknownDAError } from \"@api/device-action/os/Errors\";\n\nimport { ListAppsDeviceAction } from \"./ListAppsDeviceAction\";\nimport { type ListAppsDAState } from \"./types\";\n\njest.mock(\"@api/device-action/os/GoToDashboard/GoToDashboardDeviceAction\");\n\ndescribe(\"ListAppsDeviceAction\", () => {\n const { sendCommand: sendCommandMock } = makeDeviceActionInternalApiMock();\n\n beforeEach(() => {\n jest.resetAllMocks();\n });\n\n describe(\"success cases\", () => {\n it(\"should run the device action with no apps installed\", (done) => {\n setupGoToDashboardMock();\n const listAppsDeviceAction = new ListAppsDeviceAction({\n input: {},\n });\n\n sendCommandMock.mockResolvedValue(CommandResultFactory({ data: [] }));\n\n const expectedStates: Array<ListAppsDAState> = [\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending, // GoToDashboardDeviceAction\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending, // GoToDashboardCheck\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.AllowListApps,\n },\n status: DeviceActionStatus.Pending, // ListApps\n },\n {\n output: [],\n status: DeviceActionStatus.Completed, // Success\n },\n ];\n\n testDeviceActionStates(\n listAppsDeviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n done,\n );\n });\n\n it(\"should run the device action with one app installed\", (done) => {\n setupGoToDashboardMock();\n const listAppsDeviceAction = new ListAppsDeviceAction({\n input: { unlockTimeout: 500 },\n });\n\n sendCommandMock.mockResolvedValueOnce(\n CommandResultFactory({ data: [BTC_APP] }),\n );\n\n const expectedStates: Array<ListAppsDAState> = [\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending, // GoToDashboardDeviceAction\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending, // GoToDashboardCheck\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.AllowListApps,\n },\n status: DeviceActionStatus.Pending, // ListApps\n },\n {\n output: [BTC_APP],\n status: DeviceActionStatus.Completed, // Success\n },\n ];\n\n testDeviceActionStates(\n listAppsDeviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n done,\n );\n });\n\n it(\"should run the device action with two app installed\", (done) => {\n setupGoToDashboardMock();\n const listAppsDeviceAction = new ListAppsDeviceAction({\n input: { unlockTimeout: 500 },\n });\n\n sendCommandMock\n .mockResolvedValueOnce(\n CommandResultFactory({ data: [BTC_APP, CUSTOM_LOCK_SCREEN_APP] }),\n )\n .mockResolvedValueOnce(CommandResultFactory({ data: [] }));\n\n const expectedStates: Array<ListAppsDAState> = [\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending, // GoToDashboardDeviceAction\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending, // GoToDashboardCheck\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.AllowListApps,\n },\n status: DeviceActionStatus.Pending, // ListApps\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending, // ContinueListApps\n },\n {\n output: [BTC_APP, CUSTOM_LOCK_SCREEN_APP],\n status: DeviceActionStatus.Completed, // Success\n },\n ];\n\n testDeviceActionStates(\n listAppsDeviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n done,\n );\n });\n\n it(\"should run the device action with three app installed\", (done) => {\n setupGoToDashboardMock();\n const listAppsDeviceAction = new ListAppsDeviceAction({\n input: { unlockTimeout: 500 },\n });\n\n sendCommandMock\n .mockResolvedValueOnce(\n CommandResultFactory({ data: [BTC_APP, CUSTOM_LOCK_SCREEN_APP] }),\n )\n .mockResolvedValueOnce(CommandResultFactory({ data: [ETH_APP] }));\n\n const expectedStates: Array<ListAppsDAState> = [\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending, // GoToDashboardDeviceAction\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending, // GoToDashboardCheck\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.AllowListApps,\n },\n status: DeviceActionStatus.Pending, // ListApps\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending, // ContinueListApps\n },\n {\n output: [BTC_APP, CUSTOM_LOCK_SCREEN_APP, ETH_APP],\n status: DeviceActionStatus.Completed, // Success\n },\n ];\n\n testDeviceActionStates(\n listAppsDeviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n done,\n );\n });\n\n it(\"should run the device action with four app installed\", (done) => {\n setupGoToDashboardMock();\n const listAppsDeviceAction = new ListAppsDeviceAction({\n input: { unlockTimeout: 500 },\n });\n\n sendCommandMock\n .mockResolvedValueOnce(\n CommandResultFactory({ data: [BTC_APP, CUSTOM_LOCK_SCREEN_APP] }),\n )\n .mockResolvedValueOnce(\n CommandResultFactory({ data: [ETH_APP, SOLANA_APP] }),\n )\n .mockResolvedValueOnce(CommandResultFactory({ data: [] }));\n\n const expectedStates: Array<ListAppsDAState> = [\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending, // GoToDashboardDeviceAction\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending, // GoToDashboardCheck\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.AllowListApps,\n },\n status: DeviceActionStatus.Pending, // ListApps\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending, // ContinueListApps\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending, // ContinueListApps\n },\n {\n output: [BTC_APP, CUSTOM_LOCK_SCREEN_APP, ETH_APP, SOLANA_APP],\n status: DeviceActionStatus.Completed, // Success\n },\n ];\n\n testDeviceActionStates(\n listAppsDeviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n done,\n );\n });\n\n it(\"should run the device action with five app installed\", (done) => {\n setupGoToDashboardMock();\n const listAppsDeviceAction = new ListAppsDeviceAction({\n input: { unlockTimeout: 500 },\n });\n\n sendCommandMock\n .mockResolvedValueOnce(\n CommandResultFactory({ data: [BTC_APP, CUSTOM_LOCK_SCREEN_APP] }),\n )\n .mockResolvedValueOnce(\n CommandResultFactory({ data: [ETH_APP, SOLANA_APP] }),\n )\n .mockResolvedValueOnce(CommandResultFactory({ data: [DOGECOIN_APP] }));\n const expectedStates: Array<ListAppsDAState> = [\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending, // GoToDashboardDeviceAction\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending, // GoToDashboardCheck\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.AllowListApps,\n },\n status: DeviceActionStatus.Pending, // ListApps\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending, // ContinueListApps\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending, // ContinueListApps\n },\n {\n output: [\n BTC_APP,\n CUSTOM_LOCK_SCREEN_APP,\n ETH_APP,\n SOLANA_APP,\n DOGECOIN_APP,\n ] as ListAppsResponse,\n status: DeviceActionStatus.Completed, // Success\n },\n ];\n\n testDeviceActionStates(\n listAppsDeviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n done,\n );\n });\n });\n\n describe(\"error cases\", () => {\n it(\"should return an error if GoTodashboard fails\", (done) => {\n setupGoToDashboardMock(true);\n const listAppsDeviceAction = new ListAppsDeviceAction({\n input: { unlockTimeout: 500 },\n });\n\n sendCommandMock.mockResolvedValue(CommandResultFactory({ data: [] }));\n\n const expectedStates: Array<ListAppsDAState> = [\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending, // GoToDashboardDeviceAction\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending, // GoToDashboardCheck\n },\n {\n error: new UnknownDAError(\"GoToDashboard failed\"),\n status: DeviceActionStatus.Error, // Error\n },\n ];\n\n testDeviceActionStates(\n listAppsDeviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n done,\n );\n });\n\n it(\"should run the device action if GoTodashboard fails\", (done) => {\n setupGoToDashboardMock(true);\n const listAppsDeviceAction = new ListAppsDeviceAction({\n input: { unlockTimeout: 500 },\n });\n\n sendCommandMock.mockResolvedValue(CommandResultFactory({ data: [] }));\n\n const expectedStates: Array<ListAppsDAState> = [\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending, // GoToDashboardDeviceAction\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending, // GoToDashboardCheck\n },\n {\n error: new UnknownDAError(\"GoToDashboard failed\"),\n status: DeviceActionStatus.Error, // Error\n },\n ];\n\n testDeviceActionStates(\n listAppsDeviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n done,\n );\n });\n\n it(\"should return an error if ListApps fails\", (done) => {\n setupGoToDashboardMock();\n const listAppsDeviceAction = new ListAppsDeviceAction({\n input: { unlockTimeout: 500 },\n });\n\n const globalError = new GlobalCommandError({\n errorCode: \"5501\",\n ...GLOBAL_ERRORS[\"5501\"],\n });\n\n sendCommandMock.mockResolvedValue(\n CommandResultFactory({\n error: globalError,\n }),\n );\n\n const expectedStates: Array<ListAppsDAState> = [\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending, // GoToDashboardDeviceAction\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending, // GoToDashboardCheck\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.AllowListApps,\n },\n status: DeviceActionStatus.Pending, // ListApps\n },\n {\n error: globalError,\n status: DeviceActionStatus.Error, // Error\n },\n ];\n\n testDeviceActionStates(\n listAppsDeviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n done,\n );\n });\n\n it(\"should return an error if ListAppsContinue fails\", (done) => {\n setupGoToDashboardMock();\n const listAppsDeviceAction = new ListAppsDeviceAction({\n input: { unlockTimeout: 500 },\n });\n\n sendCommandMock\n .mockResolvedValueOnce(\n CommandResultFactory({ data: [BTC_APP, CUSTOM_LOCK_SCREEN_APP] }),\n )\n .mockRejectedValueOnce(new UnknownDAError(\"mocked error\"));\n\n const expectedStates: Array<ListAppsDAState> = [\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending, // GoToDashboardDeviceAction\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending, // GoToDashboardCheck\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.AllowListApps,\n },\n status: DeviceActionStatus.Pending, // ListApps\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending, // ContinueListApps\n },\n {\n error: new UnknownDAError(\"mocked error\"),\n status: DeviceActionStatus.Error, // Success\n },\n ];\n\n testDeviceActionStates(\n listAppsDeviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n done,\n );\n });\n });\n});\n"],
5
- "mappings": "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",
6
- "names": ["CommandResultFactory", "GLOBAL_ERRORS", "GlobalCommandError", "BTC_APP", "CUSTOM_LOCK_SCREEN_APP", "DOGECOIN_APP", "ETH_APP", "SOLANA_APP", "makeDeviceActionInternalApiMock", "setupGoToDashboardMock", "testDeviceActionStates", "DeviceActionStatus", "UserInteractionRequired", "UnknownDAError", "ListAppsDeviceAction", "sendCommandMock", "done", "listAppsDeviceAction", "expectedStates", "globalError"]
4
+ "sourcesContent": ["import { CommandResultFactory } from \"@api/command/model/CommandResult\";\nimport { type ListAppsResponse } from \"@api/command/os/ListAppsCommand\";\nimport {\n GLOBAL_ERRORS,\n GlobalCommandError,\n} from \"@api/command/utils/GlobalCommandError\";\nimport {\n BTC_APP,\n CUSTOM_LOCK_SCREEN_APP,\n DOGECOIN_APP,\n ETH_APP,\n SOLANA_APP,\n} from \"@api/device-action/__test-utils__/data\";\nimport { makeDeviceActionInternalApiMock } from \"@api/device-action/__test-utils__/makeInternalApi\";\nimport { setupGoToDashboardMock } from \"@api/device-action/__test-utils__/setupTestMachine\";\nimport { testDeviceActionStates } from \"@api/device-action/__test-utils__/testDeviceActionStates\";\nimport { DeviceActionStatus } from \"@api/device-action/model/DeviceActionState\";\nimport { UserInteractionRequired } from \"@api/device-action/model/UserInteractionRequired\";\nimport { UnknownDAError } from \"@api/device-action/os/Errors\";\n\nimport { ListAppsDeviceAction } from \"./ListAppsDeviceAction\";\nimport { type ListAppsDAState } from \"./types\";\n\nvi.mock(\"@api/device-action/os/GoToDashboard/GoToDashboardDeviceAction\");\n\ndescribe(\"ListAppsDeviceAction\", () => {\n const { sendCommand: sendCommandMock } = makeDeviceActionInternalApiMock();\n\n beforeEach(() => {\n vi.resetAllMocks();\n });\n\n describe(\"success cases\", () => {\n it(\"should run the device action with no apps installed\", () =>\n new Promise<void>((resolve, reject) => {\n setupGoToDashboardMock();\n const listAppsDeviceAction = new ListAppsDeviceAction({\n input: {},\n });\n\n sendCommandMock.mockResolvedValue(CommandResultFactory({ data: [] }));\n\n const expectedStates: Array<ListAppsDAState> = [\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending, // GoToDashboardDeviceAction\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending, // GoToDashboardCheck\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.AllowListApps,\n },\n status: DeviceActionStatus.Pending, // ListApps\n },\n {\n output: [],\n status: DeviceActionStatus.Completed, // Success\n },\n ];\n\n testDeviceActionStates(\n listAppsDeviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n {\n onDone: resolve,\n onError: reject,\n },\n );\n }));\n\n it(\"should run the device action with one app installed\", () =>\n new Promise<void>((resolve, reject) => {\n setupGoToDashboardMock();\n const listAppsDeviceAction = new ListAppsDeviceAction({\n input: { unlockTimeout: 500 },\n });\n\n sendCommandMock.mockResolvedValueOnce(\n CommandResultFactory({ data: [BTC_APP] }),\n );\n\n const expectedStates: Array<ListAppsDAState> = [\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending, // GoToDashboardDeviceAction\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending, // GoToDashboardCheck\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.AllowListApps,\n },\n status: DeviceActionStatus.Pending, // ListApps\n },\n {\n output: [BTC_APP],\n status: DeviceActionStatus.Completed, // Success\n },\n ];\n\n testDeviceActionStates(\n listAppsDeviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n {\n onDone: resolve,\n onError: reject,\n },\n );\n }));\n\n it(\"should run the device action with two app installed\", () =>\n new Promise<void>((resolve, reject) => {\n setupGoToDashboardMock();\n const listAppsDeviceAction = new ListAppsDeviceAction({\n input: { unlockTimeout: 500 },\n });\n\n sendCommandMock\n .mockResolvedValueOnce(\n CommandResultFactory({ data: [BTC_APP, CUSTOM_LOCK_SCREEN_APP] }),\n )\n .mockResolvedValueOnce(CommandResultFactory({ data: [] }));\n\n const expectedStates: Array<ListAppsDAState> = [\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending, // GoToDashboardDeviceAction\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending, // GoToDashboardCheck\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.AllowListApps,\n },\n status: DeviceActionStatus.Pending, // ListApps\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending, // ContinueListApps\n },\n {\n output: [BTC_APP, CUSTOM_LOCK_SCREEN_APP],\n status: DeviceActionStatus.Completed, // Success\n },\n ];\n\n testDeviceActionStates(\n listAppsDeviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n {\n onDone: resolve,\n onError: reject,\n },\n );\n }));\n\n it(\"should run the device action with three app installed\", () =>\n new Promise<void>((resolve, reject) => {\n setupGoToDashboardMock();\n const listAppsDeviceAction = new ListAppsDeviceAction({\n input: { unlockTimeout: 500 },\n });\n\n sendCommandMock\n .mockResolvedValueOnce(\n CommandResultFactory({ data: [BTC_APP, CUSTOM_LOCK_SCREEN_APP] }),\n )\n .mockResolvedValueOnce(CommandResultFactory({ data: [ETH_APP] }));\n\n const expectedStates: Array<ListAppsDAState> = [\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending, // GoToDashboardDeviceAction\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending, // GoToDashboardCheck\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.AllowListApps,\n },\n status: DeviceActionStatus.Pending, // ListApps\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending, // ContinueListApps\n },\n {\n output: [BTC_APP, CUSTOM_LOCK_SCREEN_APP, ETH_APP],\n status: DeviceActionStatus.Completed, // Success\n },\n ];\n\n testDeviceActionStates(\n listAppsDeviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n {\n onDone: resolve,\n onError: reject,\n },\n );\n }));\n\n it(\"should run the device action with four app installed\", () =>\n new Promise<void>((resolve, reject) => {\n setupGoToDashboardMock();\n const listAppsDeviceAction = new ListAppsDeviceAction({\n input: { unlockTimeout: 500 },\n });\n\n sendCommandMock\n .mockResolvedValueOnce(\n CommandResultFactory({ data: [BTC_APP, CUSTOM_LOCK_SCREEN_APP] }),\n )\n .mockResolvedValueOnce(\n CommandResultFactory({ data: [ETH_APP, SOLANA_APP] }),\n )\n .mockResolvedValueOnce(CommandResultFactory({ data: [] }));\n\n const expectedStates: Array<ListAppsDAState> = [\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending, // GoToDashboardDeviceAction\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending, // GoToDashboardCheck\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.AllowListApps,\n },\n status: DeviceActionStatus.Pending, // ListApps\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending, // ContinueListApps\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending, // ContinueListApps\n },\n {\n output: [BTC_APP, CUSTOM_LOCK_SCREEN_APP, ETH_APP, SOLANA_APP],\n status: DeviceActionStatus.Completed, // Success\n },\n ];\n\n testDeviceActionStates(\n listAppsDeviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n {\n onDone: resolve,\n onError: reject,\n },\n );\n }));\n\n it(\"should run the device action with five app installed\", () =>\n new Promise<void>((resolve, reject) => {\n setupGoToDashboardMock();\n const listAppsDeviceAction = new ListAppsDeviceAction({\n input: { unlockTimeout: 500 },\n });\n\n sendCommandMock\n .mockResolvedValueOnce(\n CommandResultFactory({ data: [BTC_APP, CUSTOM_LOCK_SCREEN_APP] }),\n )\n .mockResolvedValueOnce(\n CommandResultFactory({ data: [ETH_APP, SOLANA_APP] }),\n )\n .mockResolvedValueOnce(\n CommandResultFactory({ data: [DOGECOIN_APP] }),\n );\n const expectedStates: Array<ListAppsDAState> = [\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending, // GoToDashboardDeviceAction\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending, // GoToDashboardCheck\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.AllowListApps,\n },\n status: DeviceActionStatus.Pending, // ListApps\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending, // ContinueListApps\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending, // ContinueListApps\n },\n {\n output: [\n BTC_APP,\n CUSTOM_LOCK_SCREEN_APP,\n ETH_APP,\n SOLANA_APP,\n DOGECOIN_APP,\n ] as ListAppsResponse,\n status: DeviceActionStatus.Completed, // Success\n },\n ];\n\n testDeviceActionStates(\n listAppsDeviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n {\n onDone: resolve,\n onError: reject,\n },\n );\n }));\n });\n\n describe(\"error cases\", () => {\n it(\"should return an error if GoTodashboard fails\", () =>\n new Promise<void>((resolve, reject) => {\n setupGoToDashboardMock(true);\n const listAppsDeviceAction = new ListAppsDeviceAction({\n input: { unlockTimeout: 500 },\n });\n\n sendCommandMock.mockResolvedValue(CommandResultFactory({ data: [] }));\n\n const expectedStates: Array<ListAppsDAState> = [\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending, // GoToDashboardDeviceAction\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending, // GoToDashboardCheck\n },\n {\n error: new UnknownDAError(\"GoToDashboard failed\"),\n status: DeviceActionStatus.Error, // Error\n },\n ];\n\n testDeviceActionStates(\n listAppsDeviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n {\n onDone: resolve,\n onError: reject,\n },\n );\n }));\n\n it(\"should run the device action if GoTodashboard fails\", () =>\n new Promise<void>((resolve, reject) => {\n setupGoToDashboardMock(true);\n const listAppsDeviceAction = new ListAppsDeviceAction({\n input: { unlockTimeout: 500 },\n });\n\n sendCommandMock.mockResolvedValue(CommandResultFactory({ data: [] }));\n\n const expectedStates: Array<ListAppsDAState> = [\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending, // GoToDashboardDeviceAction\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending, // GoToDashboardCheck\n },\n {\n error: new UnknownDAError(\"GoToDashboard failed\"),\n status: DeviceActionStatus.Error, // Error\n },\n ];\n\n testDeviceActionStates(\n listAppsDeviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n {\n onDone: resolve,\n onError: reject,\n },\n );\n }));\n\n it(\"should return an error if ListApps fails\", () =>\n new Promise<void>((resolve, reject) => {\n setupGoToDashboardMock();\n const listAppsDeviceAction = new ListAppsDeviceAction({\n input: { unlockTimeout: 500 },\n });\n\n const globalError = new GlobalCommandError({\n errorCode: \"5501\",\n ...GLOBAL_ERRORS[\"5501\"],\n });\n\n sendCommandMock.mockResolvedValue(\n CommandResultFactory({\n error: globalError,\n }),\n );\n\n const expectedStates: Array<ListAppsDAState> = [\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending, // GoToDashboardDeviceAction\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending, // GoToDashboardCheck\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.AllowListApps,\n },\n status: DeviceActionStatus.Pending, // ListApps\n },\n {\n error: globalError,\n status: DeviceActionStatus.Error, // Error\n },\n ];\n\n testDeviceActionStates(\n listAppsDeviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n {\n onDone: resolve,\n onError: reject,\n },\n );\n }));\n\n it(\"should return an error if ListAppsContinue fails\", () =>\n new Promise<void>((resolve, reject) => {\n setupGoToDashboardMock();\n const listAppsDeviceAction = new ListAppsDeviceAction({\n input: { unlockTimeout: 500 },\n });\n\n sendCommandMock\n .mockResolvedValueOnce(\n CommandResultFactory({ data: [BTC_APP, CUSTOM_LOCK_SCREEN_APP] }),\n )\n .mockRejectedValueOnce(new UnknownDAError(\"mocked error\"));\n\n const expectedStates: Array<ListAppsDAState> = [\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending, // GoToDashboardDeviceAction\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending, // GoToDashboardCheck\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.AllowListApps,\n },\n status: DeviceActionStatus.Pending, // ListApps\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending, // ContinueListApps\n },\n {\n error: new UnknownDAError(\"mocked error\"),\n status: DeviceActionStatus.Error, // Success\n },\n ];\n\n testDeviceActionStates(\n listAppsDeviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n {\n onDone: resolve,\n onError: reject,\n },\n );\n }));\n });\n});\n"],
5
+ "mappings": "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",
6
+ "names": ["CommandResultFactory", "GLOBAL_ERRORS", "GlobalCommandError", "BTC_APP", "CUSTOM_LOCK_SCREEN_APP", "DOGECOIN_APP", "ETH_APP", "SOLANA_APP", "makeDeviceActionInternalApiMock", "setupGoToDashboardMock", "testDeviceActionStates", "DeviceActionStatus", "UserInteractionRequired", "UnknownDAError", "ListAppsDeviceAction", "sendCommandMock", "resolve", "reject", "listAppsDeviceAction", "expectedStates", "globalError"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{Left as V,Right as A}from"purify-ts";import{DeviceStatus as P}from"../../../device/DeviceStatus";import{BTC_APP as d,BTC_APP_METADATA as c,CUSTOM_LOCK_SCREEN_APP as f,CUSTOM_LOCK_SCREEN_APP_METADATA as g,ETH_APP as k,ETH_APP_METADATA as v}from"../../../device-action/__test-utils__/data";import{makeDeviceActionInternalApiMock as n}from"../../../device-action/__test-utils__/makeInternalApi";import{setupListAppsMock as r}from"../../../device-action/__test-utils__/setupTestMachine";import{testDeviceActionStates as o}from"../../../device-action/__test-utils__/testDeviceActionStates";import{DeviceActionStatus as e}from"../../../device-action/model/DeviceActionState";import{UserInteractionRequired as t}from"../../../device-action/model/UserInteractionRequired";import{UnknownDAError as l}from"../../../device-action/os/Errors";import{DeviceSessionStateType as D}from"../../../device-session/DeviceSessionState";import{HttpFetchApiError as I}from"../../../../internal/manager-api/model/Errors";import{ListAppsWithMetadataDeviceAction as p}from"./ListAppsWithMetadataDeviceAction";jest.mock("@api/device-action/os/ListApps/ListAppsDeviceAction");describe("ListAppsWithMetadataDeviceAction",()=>{const{getManagerApiService:u}=n(),m=jest.fn(),h=jest.fn(),S=jest.fn();function M(){return{getAppsByHash:S,getDeviceSessionState:h,saveSessionState:m}}beforeEach(()=>{jest.resetAllMocks()}),describe("success case",()=>{it("should run the device actions with no apps installed",a=>{r([]);const i=new p({input:{}});u.mockReturnValue({getAppsByHash:jest.fn().mockResolvedValue(A([]))});const s=[{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.AllowListApps},status:e.Pending},{status:e.Completed,output:[]}];o(i,s,n(),a)}),it("should run the device actions with 1 app installed",a=>{r([d]);const i=new p({input:{}});u.mockReturnValue({getAppsByHash:jest.fn().mockResolvedValue(A([c]))});const s=[{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.AllowListApps},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{status:e.Completed,output:[c]}];o(i,s,n(),a)}),it("should run the device actions with 2 apps installed",a=>{r([d,k]);const i=new p({input:{}});u.mockReturnValue({getAppsByHash:jest.fn().mockResolvedValue(A([c,v]))});const s=[{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.AllowListApps},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{status:e.Completed,output:[c,v]}];o(i,s,n(),a)}),it("should run the device actions with 1 app installed and a custom lock screen",a=>{r([d,f]);const i=new p({input:{}});u.mockReturnValue({getAppsByHash:jest.fn().mockResolvedValue(A([c,g]))});const s=[{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.AllowListApps},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{status:e.Completed,output:[c,g]}];o(i,s,n(),a)})}),describe("error case",()=>{it("should error when ListApps fails",a=>{r([],!0);const i=new p({input:{}}),s=[{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.AllowListApps},status:e.Pending},{status:e.Error,error:new l("ListApps failed")}];o(i,s,n(),a)}),it("should error when getAppsByHash rejects",a=>{r([d]);const i=new p({input:{}});u.mockReturnValue({getAppsByHash:jest.fn().mockRejectedValue(new l("getAppsByHash failed"))});const s=[{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.AllowListApps},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{status:e.Error,error:new l("getAppsByHash failed")}];o(i,s,n(),a)}),it("should error when getAppsByHash fails but error is known",a=>{r([d]);const i=new p({input:{}}),s=new I(new Error("Failed to fetch data"));u.mockReturnValue({getAppsByHash:jest.fn().mockResolvedValue(V(s))});const w=[{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.AllowListApps},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{status:e.Error,error:s}];o(i,w,n(),a)}),it("should error when SaveSession fails",a=>{r([d]);const i=new p({input:{}});S.mockImplementation(async()=>Promise.resolve(A([c]))),jest.spyOn(i,"extractDependencies").mockReturnValue(M()),h.mockReturnValue({sessionStateType:D.ReadyWithoutSecureChannel,deviceStatus:P.CONNECTED,currentApp:"BOLOS",installedApps:[]}),m.mockImplementation(()=>{throw new l("SaveSession failed")});const s=[{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.AllowListApps},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{status:e.Error,error:new l("SaveSession failed")}];o(i,s,n(),a)})})});
1
+ import{Left as M,Right as l}from"purify-ts";import{DeviceStatus as V}from"../../../device/DeviceStatus";import{BTC_APP as A,BTC_APP_METADATA as c,CUSTOM_LOCK_SCREEN_APP as f,CUSTOM_LOCK_SCREEN_APP_METADATA as g,ETH_APP as k,ETH_APP_METADATA as w}from"../../../device-action/__test-utils__/data";import{makeDeviceActionInternalApiMock as a}from"../../../device-action/__test-utils__/makeInternalApi";import{setupListAppsMock as o}from"../../../device-action/__test-utils__/setupTestMachine";import{testDeviceActionStates as p}from"../../../device-action/__test-utils__/testDeviceActionStates";import{DeviceActionStatus as e}from"../../../device-action/model/DeviceActionState";import{UserInteractionRequired as t}from"../../../device-action/model/UserInteractionRequired";import{UnknownDAError as m}from"../../../device-action/os/Errors";import{DeviceSessionStateType as I}from"../../../device-session/DeviceSessionState";import{HttpFetchApiError as U}from"../../../../internal/manager-api/model/Errors";import{ListAppsWithMetadataDeviceAction as d}from"./ListAppsWithMetadataDeviceAction";vi.mock("@api/device-action/os/ListApps/ListAppsDeviceAction");describe("ListAppsWithMetadataDeviceAction",()=>{const{getManagerApiService:u}=a(),v=vi.fn(),h=vi.fn(),S=vi.fn();function P(){return{getAppsByHash:S,getDeviceSessionState:h,saveSessionState:v}}beforeEach(()=>{vi.resetAllMocks()}),describe("success case",()=>{it("should run the device actions with no apps installed",()=>new Promise((r,s)=>{o([]);const i=new d({input:{}});u.mockReturnValue({getAppsByHash:vi.fn().mockResolvedValue(l([]))});const n=[{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.AllowListApps},status:e.Pending},{status:e.Completed,output:[]}];p(i,n,a(),{onDone:r,onError:s})})),it("should run the device actions with 1 app installed",()=>new Promise((r,s)=>{o([A]);const i=new d({input:{}});u.mockReturnValue({getAppsByHash:vi.fn().mockResolvedValue(l([c]))});const n=[{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.AllowListApps},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{status:e.Completed,output:[c]}];p(i,n,a(),{onDone:r,onError:s})})),it("should run the device actions with 2 apps installed",()=>new Promise((r,s)=>{o([A,k]);const i=new d({input:{}});u.mockReturnValue({getAppsByHash:vi.fn().mockResolvedValue(l([c,w]))});const n=[{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.AllowListApps},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{status:e.Completed,output:[c,w]}];p(i,n,a(),{onDone:r,onError:s})})),it("should run the device actions with 1 app installed and a custom lock screen",()=>new Promise((r,s)=>{o([A,f]);const i=new d({input:{}});u.mockReturnValue({getAppsByHash:vi.fn().mockResolvedValue(l([c,g]))});const n=[{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.AllowListApps},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{status:e.Completed,output:[c,g]}];p(i,n,a(),{onDone:r,onError:s})}))}),describe("error case",()=>{it("should error when ListApps fails",()=>new Promise((r,s)=>{o([],!0);const i=new d({input:{}}),n=[{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.AllowListApps},status:e.Pending},{status:e.Error,error:new m("ListApps failed")}];p(i,n,a(),{onDone:r,onError:s})})),it("should error when getAppsByHash rejects",()=>new Promise((r,s)=>{o([A]);const i=new d({input:{}});u.mockReturnValue({getAppsByHash:vi.fn().mockRejectedValue(new m("getAppsByHash failed"))});const n=[{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.AllowListApps},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{status:e.Error,error:new m("getAppsByHash failed")}];p(i,n,a(),{onDone:r,onError:s})})),it("should error when getAppsByHash fails but error is known",()=>new Promise((r,s)=>{o([A]);const i=new d({input:{}}),n=new U(new Error("Failed to fetch data"));u.mockReturnValue({getAppsByHash:vi.fn().mockResolvedValue(M(n))});const D=[{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.AllowListApps},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{status:e.Error,error:n}];p(i,D,a(),{onDone:r,onError:s})})),it("should error when SaveSession fails",()=>new Promise((r,s)=>{o([A]);const i=new d({input:{}});S.mockImplementation(async()=>Promise.resolve(l([c]))),vi.spyOn(i,"extractDependencies").mockReturnValue(P()),h.mockReturnValue({sessionStateType:I.ReadyWithoutSecureChannel,deviceStatus:V.CONNECTED,currentApp:"BOLOS",installedApps:[]}),v.mockImplementation(()=>{throw new m("SaveSession failed")});const n=[{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.AllowListApps},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{status:e.Error,error:new m("SaveSession failed")}];p(i,n,a(),{onDone:r,onError:s})}))})});
2
2
  //# sourceMappingURL=ListAppsWithMetadataDeviceAction.test.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../../src/api/device-action/os/ListAppsWithMetadata/ListAppsWithMetadataDeviceAction.test.ts"],
4
- "sourcesContent": ["import { Left, Right } from \"purify-ts\";\n\nimport { DeviceStatus } from \"@api/device/DeviceStatus\";\nimport {\n BTC_APP,\n BTC_APP_METADATA,\n CUSTOM_LOCK_SCREEN_APP,\n CUSTOM_LOCK_SCREEN_APP_METADATA,\n ETH_APP,\n ETH_APP_METADATA,\n} from \"@api/device-action/__test-utils__/data\";\nimport { makeDeviceActionInternalApiMock } from \"@api/device-action/__test-utils__/makeInternalApi\";\nimport { setupListAppsMock } from \"@api/device-action/__test-utils__/setupTestMachine\";\nimport { testDeviceActionStates } from \"@api/device-action/__test-utils__/testDeviceActionStates\";\nimport { DeviceActionStatus } from \"@api/device-action/model/DeviceActionState\";\nimport { UserInteractionRequired } from \"@api/device-action/model/UserInteractionRequired\";\nimport { UnknownDAError } from \"@api/device-action/os/Errors\";\nimport { DeviceSessionStateType } from \"@api/device-session/DeviceSessionState\";\nimport { HttpFetchApiError } from \"@internal/manager-api/model/Errors\";\nimport { type ManagerApiService } from \"@internal/manager-api/service/ManagerApiService\";\n\nimport { ListAppsWithMetadataDeviceAction } from \"./ListAppsWithMetadataDeviceAction\";\nimport { type ListAppsWithMetadataDAState } from \"./types\";\n\njest.mock(\"@api/device-action/os/ListApps/ListAppsDeviceAction\");\n\ndescribe(\"ListAppsWithMetadataDeviceAction\", () => {\n const { getManagerApiService: getManagerApiServiceMock } =\n makeDeviceActionInternalApiMock();\n\n const saveSessionStateMock = jest.fn();\n const getDeviceSessionStateMock = jest.fn();\n const getAppsByHashMock = jest.fn();\n\n function extractDependenciesMock() {\n return {\n getAppsByHash: getAppsByHashMock,\n getDeviceSessionState: getDeviceSessionStateMock,\n saveSessionState: saveSessionStateMock,\n };\n }\n\n beforeEach(() => {\n jest.resetAllMocks();\n });\n\n describe(\"success case\", () => {\n it(\"should run the device actions with no apps installed\", (done) => {\n setupListAppsMock([]);\n const listAppsWithMetadataDeviceAction =\n new ListAppsWithMetadataDeviceAction({\n input: {},\n });\n\n getManagerApiServiceMock.mockReturnValue({\n getAppsByHash: jest.fn().mockResolvedValue(Right([])),\n } as unknown as ManagerApiService);\n\n const expectedStates: Array<ListAppsWithMetadataDAState> = [\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending, // Ready\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.AllowListApps,\n },\n status: DeviceActionStatus.Pending, // ListAppsDeviceAction\n },\n {\n status: DeviceActionStatus.Completed,\n output: [],\n },\n ];\n\n testDeviceActionStates(\n listAppsWithMetadataDeviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n done,\n );\n });\n\n it(\"should run the device actions with 1 app installed\", (done) => {\n setupListAppsMock([BTC_APP]);\n const listAppsWithMetadataDeviceAction =\n new ListAppsWithMetadataDeviceAction({\n input: {},\n });\n\n getManagerApiServiceMock.mockReturnValue({\n getAppsByHash: jest.fn().mockResolvedValue(Right([BTC_APP_METADATA])),\n } as unknown as ManagerApiService);\n\n const expectedStates: Array<ListAppsWithMetadataDAState> = [\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending, // Ready\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.AllowListApps,\n },\n status: DeviceActionStatus.Pending, // ListAppsDeviceAction\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending, // FetchMetadata\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending, // SaveSession\n },\n {\n status: DeviceActionStatus.Completed,\n output: [BTC_APP_METADATA],\n },\n ];\n\n testDeviceActionStates(\n listAppsWithMetadataDeviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n done,\n );\n });\n\n it(\"should run the device actions with 2 apps installed\", (done) => {\n setupListAppsMock([BTC_APP, ETH_APP]);\n const listAppsWithMetadataDeviceAction =\n new ListAppsWithMetadataDeviceAction({\n input: {},\n });\n\n getManagerApiServiceMock.mockReturnValue({\n getAppsByHash: jest\n .fn()\n .mockResolvedValue(Right([BTC_APP_METADATA, ETH_APP_METADATA])),\n } as unknown as ManagerApiService);\n\n const expectedStates: Array<ListAppsWithMetadataDAState> = [\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending, // Ready\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.AllowListApps,\n },\n status: DeviceActionStatus.Pending, // ListAppsDeviceAction\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending, // FetchMetadata\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending, // SaveSession\n },\n {\n status: DeviceActionStatus.Completed,\n output: [BTC_APP_METADATA, ETH_APP_METADATA],\n },\n ];\n\n testDeviceActionStates(\n listAppsWithMetadataDeviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n done,\n );\n });\n\n it(\"should run the device actions with 1 app installed and a custom lock screen\", (done) => {\n setupListAppsMock([BTC_APP, CUSTOM_LOCK_SCREEN_APP]);\n const listAppsWithMetadataDeviceAction =\n new ListAppsWithMetadataDeviceAction({\n input: {},\n });\n\n getManagerApiServiceMock.mockReturnValue({\n getAppsByHash: jest\n .fn()\n .mockResolvedValue(\n Right([BTC_APP_METADATA, CUSTOM_LOCK_SCREEN_APP_METADATA]),\n ),\n } as unknown as ManagerApiService);\n\n const expectedStates: Array<ListAppsWithMetadataDAState> = [\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending, // Ready\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.AllowListApps,\n },\n status: DeviceActionStatus.Pending, // ListAppsDeviceAction\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending, // FetchMetadata\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending, // SaveSession\n },\n {\n status: DeviceActionStatus.Completed,\n output: [BTC_APP_METADATA, CUSTOM_LOCK_SCREEN_APP_METADATA],\n },\n ];\n\n testDeviceActionStates(\n listAppsWithMetadataDeviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n done,\n );\n });\n });\n\n describe(\"error case\", () => {\n it(\"should error when ListApps fails\", (done) => {\n setupListAppsMock([], true);\n const listAppsWithMetadataDeviceAction =\n new ListAppsWithMetadataDeviceAction({\n input: {},\n });\n\n const expectedStates: Array<ListAppsWithMetadataDAState> = [\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending, // Ready\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.AllowListApps,\n },\n status: DeviceActionStatus.Pending, // ListAppsDeviceAction\n },\n {\n status: DeviceActionStatus.Error,\n error: new UnknownDAError(\"ListApps failed\"),\n },\n ];\n\n testDeviceActionStates(\n listAppsWithMetadataDeviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n done,\n );\n });\n\n it(\"should error when getAppsByHash rejects\", (done) => {\n setupListAppsMock([BTC_APP]);\n const listAppsWithMetadataDeviceAction =\n new ListAppsWithMetadataDeviceAction({\n input: {},\n });\n\n getManagerApiServiceMock.mockReturnValue({\n getAppsByHash: jest\n .fn()\n .mockRejectedValue(new UnknownDAError(\"getAppsByHash failed\")),\n } as unknown as ManagerApiService);\n\n const expectedStates: Array<ListAppsWithMetadataDAState> = [\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending, // Ready\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.AllowListApps,\n },\n status: DeviceActionStatus.Pending, // ListAppsDeviceAction\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending, // FetchMetadata\n },\n {\n status: DeviceActionStatus.Error,\n error: new UnknownDAError(\"getAppsByHash failed\"),\n },\n ];\n\n testDeviceActionStates(\n listAppsWithMetadataDeviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n done,\n );\n });\n\n it(\"should error when getAppsByHash fails but error is known\", (done) => {\n setupListAppsMock([BTC_APP]);\n const listAppsWithMetadataDeviceAction =\n new ListAppsWithMetadataDeviceAction({\n input: {},\n });\n\n const error = new HttpFetchApiError(new Error(\"Failed to fetch data\"));\n\n getManagerApiServiceMock.mockReturnValue({\n getAppsByHash: jest.fn().mockResolvedValue(Left(error)),\n } as unknown as ManagerApiService);\n\n const expectedStates: Array<ListAppsWithMetadataDAState> = [\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending, // Ready\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.AllowListApps,\n },\n status: DeviceActionStatus.Pending, // ListAppsDeviceAction\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending, // FetchMetadata\n },\n {\n status: DeviceActionStatus.Error,\n error,\n },\n ];\n\n testDeviceActionStates(\n listAppsWithMetadataDeviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n done,\n );\n });\n\n it(\"should error when SaveSession fails\", (done) => {\n setupListAppsMock([BTC_APP]);\n const listAppsWithMetadataDeviceAction =\n new ListAppsWithMetadataDeviceAction({\n input: {},\n });\n\n getAppsByHashMock.mockImplementation(async () =>\n Promise.resolve(Right([BTC_APP_METADATA])),\n );\n\n jest\n .spyOn(listAppsWithMetadataDeviceAction, \"extractDependencies\")\n .mockReturnValue(extractDependenciesMock());\n\n getDeviceSessionStateMock.mockReturnValue({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n currentApp: \"BOLOS\",\n installedApps: [],\n });\n\n saveSessionStateMock.mockImplementation(() => {\n throw new UnknownDAError(\"SaveSession failed\");\n });\n\n const expectedStates: Array<ListAppsWithMetadataDAState> = [\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending, // Ready\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.AllowListApps,\n },\n status: DeviceActionStatus.Pending, // ListAppsDeviceAction\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending, // FetchMetadata\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending, // SaveSession\n },\n {\n status: DeviceActionStatus.Error,\n error: new UnknownDAError(\"SaveSession failed\"),\n },\n ];\n\n testDeviceActionStates(\n listAppsWithMetadataDeviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n done,\n );\n });\n });\n});\n"],
5
- "mappings": "AAAA,OAAS,QAAAA,EAAM,SAAAC,MAAa,YAE5B,OAAS,gBAAAC,MAAoB,2BAC7B,OACE,WAAAC,EACA,oBAAAC,EACA,0BAAAC,EACA,mCAAAC,EACA,WAAAC,EACA,oBAAAC,MACK,yCACP,OAAS,mCAAAC,MAAuC,oDAChD,OAAS,qBAAAC,MAAyB,qDAClC,OAAS,0BAAAC,MAA8B,2DACvC,OAAS,sBAAAC,MAA0B,6CACnC,OAAS,2BAAAC,MAA+B,mDACxC,OAAS,kBAAAC,MAAsB,+BAC/B,OAAS,0BAAAC,MAA8B,yCACvC,OAAS,qBAAAC,MAAyB,qCAGlC,OAAS,oCAAAC,MAAwC,qCAGjD,KAAK,KAAK,qDAAqD,EAE/D,SAAS,mCAAoC,IAAM,CACjD,KAAM,CAAE,qBAAsBC,CAAyB,EACrDT,EAAgC,EAE5BU,EAAuB,KAAK,GAAG,EAC/BC,EAA4B,KAAK,GAAG,EACpCC,EAAoB,KAAK,GAAG,EAElC,SAASC,GAA0B,CACjC,MAAO,CACL,cAAeD,EACf,sBAAuBD,EACvB,iBAAkBD,CACpB,CACF,CAEA,WAAW,IAAM,CACf,KAAK,cAAc,CACrB,CAAC,EAED,SAAS,eAAgB,IAAM,CAC7B,GAAG,uDAAyDI,GAAS,CACnEb,EAAkB,CAAC,CAAC,EACpB,MAAMc,EACJ,IAAIP,EAAiC,CACnC,MAAO,CAAC,CACV,CAAC,EAEHC,EAAyB,gBAAgB,CACvC,cAAe,KAAK,GAAG,EAAE,kBAAkBjB,EAAM,CAAC,CAAC,CAAC,CACtD,CAAiC,EAEjC,MAAMwB,EAAqD,CACzD,CACE,kBAAmB,CACjB,wBAAyBZ,EAAwB,IACnD,EACA,OAAQD,EAAmB,OAC7B,EACA,CACE,kBAAmB,CACjB,wBAAyBC,EAAwB,aACnD,EACA,OAAQD,EAAmB,OAC7B,EACA,CACE,OAAQA,EAAmB,UAC3B,OAAQ,CAAC,CACX,CACF,EAEAD,EACEa,EACAC,EACAhB,EAAgC,EAChCc,CACF,CACF,CAAC,EAED,GAAG,qDAAuDA,GAAS,CACjEb,EAAkB,CAACP,CAAO,CAAC,EAC3B,MAAMqB,EACJ,IAAIP,EAAiC,CACnC,MAAO,CAAC,CACV,CAAC,EAEHC,EAAyB,gBAAgB,CACvC,cAAe,KAAK,GAAG,EAAE,kBAAkBjB,EAAM,CAACG,CAAgB,CAAC,CAAC,CACtE,CAAiC,EAEjC,MAAMqB,EAAqD,CACzD,CACE,kBAAmB,CACjB,wBAAyBZ,EAAwB,IACnD,EACA,OAAQD,EAAmB,OAC7B,EACA,CACE,kBAAmB,CACjB,wBAAyBC,EAAwB,aACnD,EACA,OAAQD,EAAmB,OAC7B,EACA,CACE,kBAAmB,CACjB,wBAAyBC,EAAwB,IACnD,EACA,OAAQD,EAAmB,OAC7B,EACA,CACE,kBAAmB,CACjB,wBAAyBC,EAAwB,IACnD,EACA,OAAQD,EAAmB,OAC7B,EACA,CACE,OAAQA,EAAmB,UAC3B,OAAQ,CAACR,CAAgB,CAC3B,CACF,EAEAO,EACEa,EACAC,EACAhB,EAAgC,EAChCc,CACF,CACF,CAAC,EAED,GAAG,sDAAwDA,GAAS,CAClEb,EAAkB,CAACP,EAASI,CAAO,CAAC,EACpC,MAAMiB,EACJ,IAAIP,EAAiC,CACnC,MAAO,CAAC,CACV,CAAC,EAEHC,EAAyB,gBAAgB,CACvC,cAAe,KACZ,GAAG,EACH,kBAAkBjB,EAAM,CAACG,EAAkBI,CAAgB,CAAC,CAAC,CAClE,CAAiC,EAEjC,MAAMiB,EAAqD,CACzD,CACE,kBAAmB,CACjB,wBAAyBZ,EAAwB,IACnD,EACA,OAAQD,EAAmB,OAC7B,EACA,CACE,kBAAmB,CACjB,wBAAyBC,EAAwB,aACnD,EACA,OAAQD,EAAmB,OAC7B,EACA,CACE,kBAAmB,CACjB,wBAAyBC,EAAwB,IACnD,EACA,OAAQD,EAAmB,OAC7B,EACA,CACE,kBAAmB,CACjB,wBAAyBC,EAAwB,IACnD,EACA,OAAQD,EAAmB,OAC7B,EACA,CACE,OAAQA,EAAmB,UAC3B,OAAQ,CAACR,EAAkBI,CAAgB,CAC7C,CACF,EAEAG,EACEa,EACAC,EACAhB,EAAgC,EAChCc,CACF,CACF,CAAC,EAED,GAAG,8EAAgFA,GAAS,CAC1Fb,EAAkB,CAACP,EAASE,CAAsB,CAAC,EACnD,MAAMmB,EACJ,IAAIP,EAAiC,CACnC,MAAO,CAAC,CACV,CAAC,EAEHC,EAAyB,gBAAgB,CACvC,cAAe,KACZ,GAAG,EACH,kBACCjB,EAAM,CAACG,EAAkBE,CAA+B,CAAC,CAC3D,CACJ,CAAiC,EAEjC,MAAMmB,EAAqD,CACzD,CACE,kBAAmB,CACjB,wBAAyBZ,EAAwB,IACnD,EACA,OAAQD,EAAmB,OAC7B,EACA,CACE,kBAAmB,CACjB,wBAAyBC,EAAwB,aACnD,EACA,OAAQD,EAAmB,OAC7B,EACA,CACE,kBAAmB,CACjB,wBAAyBC,EAAwB,IACnD,EACA,OAAQD,EAAmB,OAC7B,EACA,CACE,kBAAmB,CACjB,wBAAyBC,EAAwB,IACnD,EACA,OAAQD,EAAmB,OAC7B,EACA,CACE,OAAQA,EAAmB,UAC3B,OAAQ,CAACR,EAAkBE,CAA+B,CAC5D,CACF,EAEAK,EACEa,EACAC,EACAhB,EAAgC,EAChCc,CACF,CACF,CAAC,CACH,CAAC,EAED,SAAS,aAAc,IAAM,CAC3B,GAAG,mCAAqCA,GAAS,CAC/Cb,EAAkB,CAAC,EAAG,EAAI,EAC1B,MAAMc,EACJ,IAAIP,EAAiC,CACnC,MAAO,CAAC,CACV,CAAC,EAEGQ,EAAqD,CACzD,CACE,kBAAmB,CACjB,wBAAyBZ,EAAwB,IACnD,EACA,OAAQD,EAAmB,OAC7B,EACA,CACE,kBAAmB,CACjB,wBAAyBC,EAAwB,aACnD,EACA,OAAQD,EAAmB,OAC7B,EACA,CACE,OAAQA,EAAmB,MAC3B,MAAO,IAAIE,EAAe,iBAAiB,CAC7C,CACF,EAEAH,EACEa,EACAC,EACAhB,EAAgC,EAChCc,CACF,CACF,CAAC,EAED,GAAG,0CAA4CA,GAAS,CACtDb,EAAkB,CAACP,CAAO,CAAC,EAC3B,MAAMqB,EACJ,IAAIP,EAAiC,CACnC,MAAO,CAAC,CACV,CAAC,EAEHC,EAAyB,gBAAgB,CACvC,cAAe,KACZ,GAAG,EACH,kBAAkB,IAAIJ,EAAe,sBAAsB,CAAC,CACjE,CAAiC,EAEjC,MAAMW,EAAqD,CACzD,CACE,kBAAmB,CACjB,wBAAyBZ,EAAwB,IACnD,EACA,OAAQD,EAAmB,OAC7B,EACA,CACE,kBAAmB,CACjB,wBAAyBC,EAAwB,aACnD,EACA,OAAQD,EAAmB,OAC7B,EACA,CACE,kBAAmB,CACjB,wBAAyBC,EAAwB,IACnD,EACA,OAAQD,EAAmB,OAC7B,EACA,CACE,OAAQA,EAAmB,MAC3B,MAAO,IAAIE,EAAe,sBAAsB,CAClD,CACF,EAEAH,EACEa,EACAC,EACAhB,EAAgC,EAChCc,CACF,CACF,CAAC,EAED,GAAG,2DAA6DA,GAAS,CACvEb,EAAkB,CAACP,CAAO,CAAC,EAC3B,MAAMqB,EACJ,IAAIP,EAAiC,CACnC,MAAO,CAAC,CACV,CAAC,EAEGS,EAAQ,IAAIV,EAAkB,IAAI,MAAM,sBAAsB,CAAC,EAErEE,EAAyB,gBAAgB,CACvC,cAAe,KAAK,GAAG,EAAE,kBAAkBlB,EAAK0B,CAAK,CAAC,CACxD,CAAiC,EAEjC,MAAMD,EAAqD,CACzD,CACE,kBAAmB,CACjB,wBAAyBZ,EAAwB,IACnD,EACA,OAAQD,EAAmB,OAC7B,EACA,CACE,kBAAmB,CACjB,wBAAyBC,EAAwB,aACnD,EACA,OAAQD,EAAmB,OAC7B,EACA,CACE,kBAAmB,CACjB,wBAAyBC,EAAwB,IACnD,EACA,OAAQD,EAAmB,OAC7B,EACA,CACE,OAAQA,EAAmB,MAC3B,MAAAc,CACF,CACF,EAEAf,EACEa,EACAC,EACAhB,EAAgC,EAChCc,CACF,CACF,CAAC,EAED,GAAG,sCAAwCA,GAAS,CAClDb,EAAkB,CAACP,CAAO,CAAC,EAC3B,MAAMqB,EACJ,IAAIP,EAAiC,CACnC,MAAO,CAAC,CACV,CAAC,EAEHI,EAAkB,mBAAmB,SACnC,QAAQ,QAAQpB,EAAM,CAACG,CAAgB,CAAC,CAAC,CAC3C,EAEA,KACG,MAAMoB,EAAkC,qBAAqB,EAC7D,gBAAgBF,EAAwB,CAAC,EAE5CF,EAA0B,gBAAgB,CACxC,iBAAkBL,EAAuB,0BACzC,aAAcb,EAAa,UAC3B,WAAY,QACZ,cAAe,CAAC,CAClB,CAAC,EAEDiB,EAAqB,mBAAmB,IAAM,CAC5C,MAAM,IAAIL,EAAe,oBAAoB,CAC/C,CAAC,EAED,MAAMW,EAAqD,CACzD,CACE,kBAAmB,CACjB,wBAAyBZ,EAAwB,IACnD,EACA,OAAQD,EAAmB,OAC7B,EACA,CACE,kBAAmB,CACjB,wBAAyBC,EAAwB,aACnD,EACA,OAAQD,EAAmB,OAC7B,EACA,CACE,kBAAmB,CACjB,wBAAyBC,EAAwB,IACnD,EACA,OAAQD,EAAmB,OAC7B,EACA,CACE,kBAAmB,CACjB,wBAAyBC,EAAwB,IACnD,EACA,OAAQD,EAAmB,OAC7B,EACA,CACE,OAAQA,EAAmB,MAC3B,MAAO,IAAIE,EAAe,oBAAoB,CAChD,CACF,EAEAH,EACEa,EACAC,EACAhB,EAAgC,EAChCc,CACF,CACF,CAAC,CACH,CAAC,CACH,CAAC",
6
- "names": ["Left", "Right", "DeviceStatus", "BTC_APP", "BTC_APP_METADATA", "CUSTOM_LOCK_SCREEN_APP", "CUSTOM_LOCK_SCREEN_APP_METADATA", "ETH_APP", "ETH_APP_METADATA", "makeDeviceActionInternalApiMock", "setupListAppsMock", "testDeviceActionStates", "DeviceActionStatus", "UserInteractionRequired", "UnknownDAError", "DeviceSessionStateType", "HttpFetchApiError", "ListAppsWithMetadataDeviceAction", "getManagerApiServiceMock", "saveSessionStateMock", "getDeviceSessionStateMock", "getAppsByHashMock", "extractDependenciesMock", "done", "listAppsWithMetadataDeviceAction", "expectedStates", "error"]
4
+ "sourcesContent": ["import { Left, Right } from \"purify-ts\";\n\nimport { DeviceStatus } from \"@api/device/DeviceStatus\";\nimport {\n BTC_APP,\n BTC_APP_METADATA,\n CUSTOM_LOCK_SCREEN_APP,\n CUSTOM_LOCK_SCREEN_APP_METADATA,\n ETH_APP,\n ETH_APP_METADATA,\n} from \"@api/device-action/__test-utils__/data\";\nimport { makeDeviceActionInternalApiMock } from \"@api/device-action/__test-utils__/makeInternalApi\";\nimport { setupListAppsMock } from \"@api/device-action/__test-utils__/setupTestMachine\";\nimport { testDeviceActionStates } from \"@api/device-action/__test-utils__/testDeviceActionStates\";\nimport { DeviceActionStatus } from \"@api/device-action/model/DeviceActionState\";\nimport { UserInteractionRequired } from \"@api/device-action/model/UserInteractionRequired\";\nimport { UnknownDAError } from \"@api/device-action/os/Errors\";\nimport { DeviceSessionStateType } from \"@api/device-session/DeviceSessionState\";\nimport { HttpFetchApiError } from \"@internal/manager-api/model/Errors\";\nimport { type ManagerApiService } from \"@internal/manager-api/service/ManagerApiService\";\n\nimport { ListAppsWithMetadataDeviceAction } from \"./ListAppsWithMetadataDeviceAction\";\nimport { type ListAppsWithMetadataDAState } from \"./types\";\n\nvi.mock(\"@api/device-action/os/ListApps/ListAppsDeviceAction\");\n\ndescribe(\"ListAppsWithMetadataDeviceAction\", () => {\n const { getManagerApiService: getManagerApiServiceMock } =\n makeDeviceActionInternalApiMock();\n\n const saveSessionStateMock = vi.fn();\n const getDeviceSessionStateMock = vi.fn();\n const getAppsByHashMock = vi.fn();\n\n function extractDependenciesMock() {\n return {\n getAppsByHash: getAppsByHashMock,\n getDeviceSessionState: getDeviceSessionStateMock,\n saveSessionState: saveSessionStateMock,\n };\n }\n\n beforeEach(() => {\n vi.resetAllMocks();\n });\n\n describe(\"success case\", () => {\n it(\"should run the device actions with no apps installed\", () =>\n new Promise<void>((resolve, reject) => {\n setupListAppsMock([]);\n const listAppsWithMetadataDeviceAction =\n new ListAppsWithMetadataDeviceAction({\n input: {},\n });\n\n getManagerApiServiceMock.mockReturnValue({\n getAppsByHash: vi.fn().mockResolvedValue(Right([])),\n } as unknown as ManagerApiService);\n\n const expectedStates: Array<ListAppsWithMetadataDAState> = [\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending, // Ready\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.AllowListApps,\n },\n status: DeviceActionStatus.Pending, // ListAppsDeviceAction\n },\n {\n status: DeviceActionStatus.Completed,\n output: [],\n },\n ];\n\n testDeviceActionStates(\n listAppsWithMetadataDeviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n {\n onDone: resolve,\n onError: reject,\n },\n );\n }));\n\n it(\"should run the device actions with 1 app installed\", () =>\n new Promise<void>((resolve, reject) => {\n setupListAppsMock([BTC_APP]);\n const listAppsWithMetadataDeviceAction =\n new ListAppsWithMetadataDeviceAction({\n input: {},\n });\n\n getManagerApiServiceMock.mockReturnValue({\n getAppsByHash: vi.fn().mockResolvedValue(Right([BTC_APP_METADATA])),\n } as unknown as ManagerApiService);\n\n const expectedStates: Array<ListAppsWithMetadataDAState> = [\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending, // Ready\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.AllowListApps,\n },\n status: DeviceActionStatus.Pending, // ListAppsDeviceAction\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending, // FetchMetadata\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending, // SaveSession\n },\n {\n status: DeviceActionStatus.Completed,\n output: [BTC_APP_METADATA],\n },\n ];\n\n testDeviceActionStates(\n listAppsWithMetadataDeviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n {\n onDone: resolve,\n onError: reject,\n },\n );\n }));\n\n it(\"should run the device actions with 2 apps installed\", () =>\n new Promise<void>((resolve, reject) => {\n setupListAppsMock([BTC_APP, ETH_APP]);\n const listAppsWithMetadataDeviceAction =\n new ListAppsWithMetadataDeviceAction({\n input: {},\n });\n\n getManagerApiServiceMock.mockReturnValue({\n getAppsByHash: vi\n .fn()\n .mockResolvedValue(Right([BTC_APP_METADATA, ETH_APP_METADATA])),\n } as unknown as ManagerApiService);\n\n const expectedStates: Array<ListAppsWithMetadataDAState> = [\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending, // Ready\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.AllowListApps,\n },\n status: DeviceActionStatus.Pending, // ListAppsDeviceAction\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending, // FetchMetadata\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending, // SaveSession\n },\n {\n status: DeviceActionStatus.Completed,\n output: [BTC_APP_METADATA, ETH_APP_METADATA],\n },\n ];\n\n testDeviceActionStates(\n listAppsWithMetadataDeviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n {\n onDone: resolve,\n onError: reject,\n },\n );\n }));\n\n it(\"should run the device actions with 1 app installed and a custom lock screen\", () =>\n new Promise<void>((resolve, reject) => {\n setupListAppsMock([BTC_APP, CUSTOM_LOCK_SCREEN_APP]);\n const listAppsWithMetadataDeviceAction =\n new ListAppsWithMetadataDeviceAction({\n input: {},\n });\n\n getManagerApiServiceMock.mockReturnValue({\n getAppsByHash: vi\n .fn()\n .mockResolvedValue(\n Right([BTC_APP_METADATA, CUSTOM_LOCK_SCREEN_APP_METADATA]),\n ),\n } as unknown as ManagerApiService);\n\n const expectedStates: Array<ListAppsWithMetadataDAState> = [\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending, // Ready\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.AllowListApps,\n },\n status: DeviceActionStatus.Pending, // ListAppsDeviceAction\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending, // FetchMetadata\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending, // SaveSession\n },\n {\n status: DeviceActionStatus.Completed,\n output: [BTC_APP_METADATA, CUSTOM_LOCK_SCREEN_APP_METADATA],\n },\n ];\n\n testDeviceActionStates(\n listAppsWithMetadataDeviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n {\n onDone: resolve,\n onError: reject,\n },\n );\n }));\n });\n\n describe(\"error case\", () => {\n it(\"should error when ListApps fails\", () =>\n new Promise<void>((resolve, reject) => {\n setupListAppsMock([], true);\n const listAppsWithMetadataDeviceAction =\n new ListAppsWithMetadataDeviceAction({\n input: {},\n });\n\n const expectedStates: Array<ListAppsWithMetadataDAState> = [\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending, // Ready\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.AllowListApps,\n },\n status: DeviceActionStatus.Pending, // ListAppsDeviceAction\n },\n {\n status: DeviceActionStatus.Error,\n error: new UnknownDAError(\"ListApps failed\"),\n },\n ];\n\n testDeviceActionStates(\n listAppsWithMetadataDeviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n {\n onDone: resolve,\n onError: reject,\n },\n );\n }));\n\n it(\"should error when getAppsByHash rejects\", () =>\n new Promise<void>((resolve, reject) => {\n setupListAppsMock([BTC_APP]);\n const listAppsWithMetadataDeviceAction =\n new ListAppsWithMetadataDeviceAction({\n input: {},\n });\n\n getManagerApiServiceMock.mockReturnValue({\n getAppsByHash: vi\n .fn()\n .mockRejectedValue(new UnknownDAError(\"getAppsByHash failed\")),\n } as unknown as ManagerApiService);\n\n const expectedStates: Array<ListAppsWithMetadataDAState> = [\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending, // Ready\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.AllowListApps,\n },\n status: DeviceActionStatus.Pending, // ListAppsDeviceAction\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending, // FetchMetadata\n },\n {\n status: DeviceActionStatus.Error,\n error: new UnknownDAError(\"getAppsByHash failed\"),\n },\n ];\n\n testDeviceActionStates(\n listAppsWithMetadataDeviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n {\n onDone: resolve,\n onError: reject,\n },\n );\n }));\n\n it(\"should error when getAppsByHash fails but error is known\", () =>\n new Promise<void>((resolve, reject) => {\n setupListAppsMock([BTC_APP]);\n const listAppsWithMetadataDeviceAction =\n new ListAppsWithMetadataDeviceAction({\n input: {},\n });\n\n const error = new HttpFetchApiError(new Error(\"Failed to fetch data\"));\n\n getManagerApiServiceMock.mockReturnValue({\n getAppsByHash: vi.fn().mockResolvedValue(Left(error)),\n } as unknown as ManagerApiService);\n\n const expectedStates: Array<ListAppsWithMetadataDAState> = [\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending, // Ready\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.AllowListApps,\n },\n status: DeviceActionStatus.Pending, // ListAppsDeviceAction\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending, // FetchMetadata\n },\n {\n status: DeviceActionStatus.Error,\n error,\n },\n ];\n\n testDeviceActionStates(\n listAppsWithMetadataDeviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n {\n onDone: resolve,\n onError: reject,\n },\n );\n }));\n\n it(\"should error when SaveSession fails\", () =>\n new Promise<void>((resolve, reject) => {\n setupListAppsMock([BTC_APP]);\n const listAppsWithMetadataDeviceAction =\n new ListAppsWithMetadataDeviceAction({\n input: {},\n });\n\n getAppsByHashMock.mockImplementation(async () =>\n Promise.resolve(Right([BTC_APP_METADATA])),\n );\n\n vi.spyOn(\n listAppsWithMetadataDeviceAction,\n \"extractDependencies\",\n ).mockReturnValue(extractDependenciesMock());\n\n getDeviceSessionStateMock.mockReturnValue({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n currentApp: \"BOLOS\",\n installedApps: [],\n });\n\n saveSessionStateMock.mockImplementation(() => {\n throw new UnknownDAError(\"SaveSession failed\");\n });\n\n const expectedStates: Array<ListAppsWithMetadataDAState> = [\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending, // Ready\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.AllowListApps,\n },\n status: DeviceActionStatus.Pending, // ListAppsDeviceAction\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending, // FetchMetadata\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending, // SaveSession\n },\n {\n status: DeviceActionStatus.Error,\n error: new UnknownDAError(\"SaveSession failed\"),\n },\n ];\n\n testDeviceActionStates(\n listAppsWithMetadataDeviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n {\n onDone: resolve,\n onError: reject,\n },\n );\n }));\n });\n});\n"],
5
+ "mappings": "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",
6
+ "names": ["Left", "Right", "DeviceStatus", "BTC_APP", "BTC_APP_METADATA", "CUSTOM_LOCK_SCREEN_APP", "CUSTOM_LOCK_SCREEN_APP_METADATA", "ETH_APP", "ETH_APP_METADATA", "makeDeviceActionInternalApiMock", "setupListAppsMock", "testDeviceActionStates", "DeviceActionStatus", "UserInteractionRequired", "UnknownDAError", "DeviceSessionStateType", "HttpFetchApiError", "ListAppsWithMetadataDeviceAction", "getManagerApiServiceMock", "saveSessionStateMock", "getDeviceSessionStateMock", "getAppsByHashMock", "extractDependenciesMock", "resolve", "reject", "listAppsWithMetadataDeviceAction", "expectedStates", "error"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{lastValueFrom as O}from"rxjs";import{InvalidStatusWordError as l}from"../../../command/Errors";import{CommandResultFactory as A}from"../../../command/model/CommandResult";import{DeviceModelId as R}from"../../../device/DeviceModel";import{DeviceStatus as o}from"../../../device/DeviceStatus";import{makeDeviceActionInternalApiMock as s}from"../../../device-action/__test-utils__/makeInternalApi";import{setupGetDeviceStatusMock as m}from"../../../device-action/__test-utils__/setupTestMachine";import{testDeviceActionStates as c}from"../../../device-action/__test-utils__/testDeviceActionStates";import{DeviceActionStatus as e}from"../../../device-action/model/DeviceActionState";import{UserInteractionRequired as n}from"../../../device-action/model/UserInteractionRequired";import{DeviceLockedError as y,DeviceNotOnboardedError as f,UnknownDAError as V}from"../../../device-action/os/Errors";import{DeviceSessionStateType as a}from"../../../device-session/DeviceSessionState";import{OpenAppDeviceAction as u}from"./OpenAppDeviceAction";jest.mock("@api/device-action/os/GetDeviceStatus/GetDeviceStatusDeviceAction");describe("OpenAppDeviceAction",()=>{const k=jest.fn(),S=jest.fn(),v=jest.fn(),p=jest.fn(),N=jest.fn(),h=jest.fn();function d(){return{getDeviceSessionState:p,setDeviceSessionState:N,getAppAndVersion:k,openApp:S,closeApp:v,isDeviceOnboarded:h}}const{getDeviceSessionState:C}=s();beforeEach(()=>{jest.resetAllMocks(),h.mockReturnValue(!0)}),describe("without overriding `extractDependencies`",()=>{it("should end if the required application is opened",r=>{C.mockReturnValue({sessionStateType:a.ReadyWithoutSecureChannel,deviceStatus:o.CONNECTED,currentApp:{name:"Bitcoin",version:"1.0.0"},installedApps:[],deviceModelId:R.NANO_X}),m([{currentApp:"Bitcoin",currentAppVersion:"0.0.0"}]);const t=new u({input:{appName:"Bitcoin"}}),i=[{status:e.Pending,intermediateValue:{requiredUserInteraction:n.None}},{status:e.Pending,intermediateValue:{requiredUserInteraction:n.None}},{status:e.Completed,output:void 0}];c(t,i,s(),r)})}),describe("success cases",()=>{it("should end in a success if the app is already opened",r=>{p.mockReturnValue({sessionStateType:a.ReadyWithoutSecureChannel,deviceStatus:o.CONNECTED,currentApp:{name:"Bitcoin",version:"1.0.0"}}),m([{currentApp:"Bitcoin",currentAppVersion:"1.0.0"}]);const t=new u({input:{appName:"Bitcoin",unlockTimeout:void 0}});jest.spyOn(t,"extractDependencies").mockReturnValue(d());const i=[{status:e.Pending,intermediateValue:{requiredUserInteraction:n.None}},{status:e.Pending,intermediateValue:{requiredUserInteraction:n.None}},{status:e.Completed,output:void 0}];c(t,i,s(),r)}),it("should end in a success if a compatible app is already opened",r=>{p.mockReturnValue({sessionStateType:a.ReadyWithoutSecureChannel,deviceStatus:o.CONNECTED,currentApp:{name:"Bitcoin Testnet",version:"1.0.0"}}),m([{currentApp:"Bitcoin Testnet",currentAppVersion:"1.0.0"}]);const t=new u({input:{appName:"Bitcoin",unlockTimeout:void 0,compatibleAppNames:["Bitcoin Testnet"]}});jest.spyOn(t,"extractDependencies").mockReturnValue(d());const i=[{status:e.Pending,intermediateValue:{requiredUserInteraction:n.None}},{status:e.Pending,intermediateValue:{requiredUserInteraction:n.None}},{status:e.Completed,output:void 0}];c(t,i,s(),r)}),it("should end in a success if the dashboard is open and open app succeeds",r=>{p.mockReturnValue({sessionStateType:a.ReadyWithoutSecureChannel,deviceStatus:o.CONNECTED,currentApp:{name:"BOLOS",version:"0.0.0"}}),m([{currentApp:"Bitcoin",currentAppVersion:"1.0.0"}]),S.mockResolvedValue(A({data:void 0}));const t=new u({input:{appName:"Bitcoin"}});jest.spyOn(t,"extractDependencies").mockReturnValue(d());const i=[{status:e.Pending,intermediateValue:{requiredUserInteraction:n.None}},{status:e.Pending,intermediateValue:{requiredUserInteraction:n.None}},{status:e.Completed,output:void 0}],{observable:D}=c(t,i,s(),r);O(D).then(()=>{expect(N).toHaveBeenCalledWith({deviceStatus:o.CONNECTED,sessionStateType:a.ReadyWithoutSecureChannel,currentApp:{name:"Bitcoin",version:"1.0.0"}})})}),it("should end in a success if another app is open, close app succeeds and open app succeeds",r=>{p.mockReturnValue({sessionStateType:a.ReadyWithoutSecureChannel,deviceStatus:o.CONNECTED,currentApp:{name:"AnotherApp",version:"0.0.0"}}),m([{currentApp:"AnotherApp",currentAppVersion:"0.0.0"},{currentApp:"Bitcoin",currentAppVersion:"1.0.0"}]),v.mockResolvedValue(A({data:void 0})),S.mockResolvedValue(A({data:void 0}));const t=new u({input:{appName:"Bitcoin"}});jest.spyOn(t,"extractDependencies").mockReturnValue(d());const i=[{status:e.Pending,intermediateValue:{requiredUserInteraction:n.None}},{status:e.Pending,intermediateValue:{requiredUserInteraction:n.None}},{status:e.Pending,intermediateValue:{requiredUserInteraction:n.None}},{status:e.Pending,intermediateValue:{requiredUserInteraction:n.ConfirmOpenApp}},{status:e.Pending,intermediateValue:{requiredUserInteraction:n.None}},{status:e.Pending,intermediateValue:{requiredUserInteraction:n.None}},{status:e.Completed,output:void 0}],{observable:D}=c(t,i,s(),r);O(D).then(()=>{expect(N).toHaveBeenCalledWith({currentApp:{name:"Bitcoin",version:"1.0.0"},deviceStatus:o.CONNECTED,sessionStateType:a.ReadyWithoutSecureChannel})})})}),describe("errors cases",()=>{it("should end in an error if the device is not onboarded",r=>{p.mockReturnValue({sessionStateType:a.ReadyWithoutSecureChannel,deviceStatus:o.CONNECTED,currentApp:{name:"mockedCurrentApp",version:"1.0.0"}}),h.mockReturnValue(!1);const t=new u({input:{appName:"Bitcoin"}});jest.spyOn(t,"extractDependencies").mockReturnValue(d());const i=[{error:new f,status:e.Error}];c(t,i,s(),r)}),it("should end in an error if the device is locked",r=>{p.mockReturnValue({sessionStateType:a.ReadyWithoutSecureChannel,deviceStatus:o.LOCKED,currentApp:{name:"mockedCurrentApp",version:"1.0.0"}}),m([new y]);const t=new u({input:{appName:"Bitcoin"}});jest.spyOn(t,"extractDependencies").mockReturnValue(d());const i=[{status:e.Pending,intermediateValue:{requiredUserInteraction:n.None}},{status:e.Pending,intermediateValue:{requiredUserInteraction:n.None}},{status:e.Error,error:new y}];c(t,i,s(),r)}),it("should end in an error if getAppAndVersion returns an error",r=>{p.mockReturnValue({sessionStateType:a.ReadyWithoutSecureChannel,deviceStatus:o.CONNECTED,currentApp:{name:"mockedCurrentApp",version:"1.0.0"}}),m([new l("mocked error")]);const t=new u({input:{appName:"Bitcoin"}});jest.spyOn(t,"extractDependencies").mockReturnValue(d());const i=[{status:e.Pending,intermediateValue:{requiredUserInteraction:n.None}},{status:e.Pending,intermediateValue:{requiredUserInteraction:n.None}},{status:e.Error,error:new l("mocked error")}];c(t,i,s(),r)}),it("should end in an error if the dashboard is open and open app returns an error",r=>{p.mockReturnValue(A({data:{sessionStateType:a.ReadyWithoutSecureChannel,deviceStatus:o.CONNECTED,currentApp:{name:"BOLOS",version:"0.0.0"}}})),k.mockResolvedValue(A({data:{name:"BOLOS",version:"0.0.0"}})),m([{currentApp:"BOLOS",currentAppVersion:"0.0.0"}]),S.mockResolvedValue(A({error:new l("mocked error")}));const t=new u({input:{appName:"Bitcoin"}});jest.spyOn(t,"extractDependencies").mockReturnValue(d());const i=[{status:e.Pending,intermediateValue:{requiredUserInteraction:n.None}},{status:e.Pending,intermediateValue:{requiredUserInteraction:n.None}},{status:e.Pending,intermediateValue:{requiredUserInteraction:n.ConfirmOpenApp}},{status:e.Error,error:new l("mocked error")}];c(t,i,s(),r)}),it("should end in an error if another app is open, and close app returns an error",r=>{p.mockReturnValue({sessionStateType:a.ReadyWithoutSecureChannel,deviceStatus:o.CONNECTED,currentApp:{name:"AnotherApp",version:"0.0.0"}}),m([{currentApp:"AnotherApp",currentAppVersion:"0.0.0"}]),v.mockResolvedValue(A({error:new l("mocked error")}));const t=new u({input:{appName:"Bitcoin"}});jest.spyOn(t,"extractDependencies").mockReturnValue(d());const i=[{status:e.Pending,intermediateValue:{requiredUserInteraction:n.None}},{status:e.Pending,intermediateValue:{requiredUserInteraction:n.None}},{status:e.Pending,intermediateValue:{requiredUserInteraction:n.None}},{status:e.Error,error:new l("mocked error")}];c(t,i,s(),r)}),it("should end in an error if another app is open, close app succeeds but open app returns an error",r=>{p.mockReturnValue({sessionStateType:a.ReadyWithoutSecureChannel,deviceStatus:o.CONNECTED,currentApp:{name:"AnotherApp",version:"0.0.0"}}),m([{currentApp:"AnotherApp",currentAppVersion:"0.0.0"}]),v.mockResolvedValue(A({data:void 0})),S.mockResolvedValue(A({error:new l("mocked error")}));const t=new u({input:{appName:"Bitcoin"}});jest.spyOn(t,"extractDependencies").mockReturnValue(d());const i=[{status:e.Pending,intermediateValue:{requiredUserInteraction:n.None}},{status:e.Pending,intermediateValue:{requiredUserInteraction:n.None}},{status:e.Pending,intermediateValue:{requiredUserInteraction:n.None}},{status:e.Pending,intermediateValue:{requiredUserInteraction:n.ConfirmOpenApp}},{status:e.Error,error:new l("mocked error")}];c(t,i,s(),r)}),it("should end in an error if getAppAndVersion actor throws an error",r=>{p.mockReturnValue({sessionStateType:a.ReadyWithoutSecureChannel,deviceStatus:o.CONNECTED,currentApp:{name:"mockedCurrentApp",version:"1.0.0"}}),m([new V("Unknown error")]);const t=new u({input:{appName:"Bitcoin"}});jest.spyOn(t,"extractDependencies").mockReturnValue(d());const i=[{status:e.Pending,intermediateValue:{requiredUserInteraction:n.None}},{status:e.Pending,intermediateValue:{requiredUserInteraction:n.None}},{status:e.Error,error:new V("Unknown error")}];c(t,i,s(),r)}),it("should end in an error if openApp actor throws an error",r=>{p.mockReturnValue(A({data:{sessionStateType:a.ReadyWithoutSecureChannel,deviceStatus:o.CONNECTED,currentApp:{name:"BOLOS",version:"0.0.0"}}})),m([{currentApp:"BOLOS",currentAppVersion:"0.0.0"}]),S.mockImplementation(()=>{throw new V("Unknown error")});const t=new u({input:{appName:"Bitcoin"}});jest.spyOn(t,"extractDependencies").mockReturnValue(d());const i=[{status:e.Pending,intermediateValue:{requiredUserInteraction:n.None}},{status:e.Pending,intermediateValue:{requiredUserInteraction:n.None}},{status:e.Pending,intermediateValue:{requiredUserInteraction:n.ConfirmOpenApp}},{status:e.Error,error:new V("Unknown error")}];c(t,i,s(),r)}),it("should end in an error if closeApp actor throws an error",r=>{p.mockReturnValue(A({data:{sessionStateType:a.ReadyWithoutSecureChannel,deviceStatus:o.CONNECTED,currentApp:{name:"BOLOS",version:"0.0.0"}}})),m([{currentApp:"anApp",currentAppVersion:"0.0.0"}]),v.mockImplementation(()=>{throw new V("Unknown error")});const t=new u({input:{appName:"Bitcoin"}});jest.spyOn(t,"extractDependencies").mockReturnValue(d());const i=[{status:e.Pending,intermediateValue:{requiredUserInteraction:n.None}},{status:e.Pending,intermediateValue:{requiredUserInteraction:n.None}},{status:e.Pending,intermediateValue:{requiredUserInteraction:n.None}},{status:e.Error,error:new V("Unknown error")}];c(t,i,s(),r)})}),it("should emit a stopped state if the action is cancelled",r=>{p.mockReturnValue({sessionStateType:a.ReadyWithoutSecureChannel,deviceStatus:o.CONNECTED,currentApp:{name:"AnotherApp",version:"0.0.0"}}),m([{currentApp:"AnotherApp",currentAppVersion:"0.0.0"}]);const t=new u({input:{appName:"Bitcoin"}});jest.spyOn(t,"extractDependencies").mockReturnValue(d());const i=[{status:e.Pending,intermediateValue:{requiredUserInteraction:n.None}},{status:e.Pending,intermediateValue:{requiredUserInteraction:n.None}},{status:e.Stopped}],{cancel:D}=c(t,i,s(),r);D()})});
1
+ import{lastValueFrom as y}from"rxjs";import{InvalidStatusWordError as v}from"../../../command/Errors";import{CommandResultFactory as l}from"../../../command/model/CommandResult";import{DeviceModelId as w}from"../../../device/DeviceModel";import{DeviceStatus as a}from"../../../device/DeviceStatus";import{makeDeviceActionInternalApiMock as p}from"../../../device-action/__test-utils__/makeInternalApi";import{setupGetDeviceStatusMock as A}from"../../../device-action/__test-utils__/setupTestMachine";import{testDeviceActionStates as u}from"../../../device-action/__test-utils__/testDeviceActionStates";import{DeviceActionStatus as e}from"../../../device-action/model/DeviceActionState";import{UserInteractionRequired as t}from"../../../device-action/model/UserInteractionRequired";import{DeviceLockedError as C,DeviceNotOnboardedError as R,UnknownDAError as D}from"../../../device-action/os/Errors";import{DeviceSessionStateType as s}from"../../../device-session/DeviceSessionState";import{OpenAppDeviceAction as d}from"./OpenAppDeviceAction";vi.mock("@api/device-action/os/GetDeviceStatus/GetDeviceStatusDeviceAction");describe("OpenAppDeviceAction",()=>{const O=vi.fn(),S=vi.fn(),V=vi.fn(),c=vi.fn(),h=vi.fn(),k=vi.fn();function m(){return{getDeviceSessionState:c,setDeviceSessionState:h,getAppAndVersion:O,openApp:S,closeApp:V,isDeviceOnboarded:k}}const{getDeviceSessionState:E}=p();beforeEach(()=>{vi.resetAllMocks(),k.mockReturnValue(!0)}),describe("without overriding `extractDependencies`",()=>{it("should end if the required application is opened",()=>new Promise((r,o)=>{E.mockReturnValue({sessionStateType:s.ReadyWithoutSecureChannel,deviceStatus:a.CONNECTED,currentApp:{name:"Bitcoin",version:"1.0.0"},installedApps:[],deviceModelId:w.NANO_X}),A([{currentApp:"Bitcoin",currentAppVersion:"0.0.0"}]);const n=new d({input:{appName:"Bitcoin"}}),i=[{status:e.Pending,intermediateValue:{requiredUserInteraction:t.None}},{status:e.Pending,intermediateValue:{requiredUserInteraction:t.None}},{status:e.Completed,output:void 0}];u(n,i,p(),{onDone:r,onError:o})}))}),describe("success cases",()=>{it("should end in a success if the app is already opened",()=>new Promise((r,o)=>{c.mockReturnValue({sessionStateType:s.ReadyWithoutSecureChannel,deviceStatus:a.CONNECTED,currentApp:{name:"Bitcoin",version:"1.0.0"}}),A([{currentApp:"Bitcoin",currentAppVersion:"1.0.0"}]);const n=new d({input:{appName:"Bitcoin",unlockTimeout:void 0}});vi.spyOn(n,"extractDependencies").mockReturnValue(m());const i=[{status:e.Pending,intermediateValue:{requiredUserInteraction:t.None}},{status:e.Pending,intermediateValue:{requiredUserInteraction:t.None}},{status:e.Completed,output:void 0}];u(n,i,p(),{onDone:r,onError:o})})),it("should end in a success if a compatible app is already opened",()=>new Promise((r,o)=>{c.mockReturnValue({sessionStateType:s.ReadyWithoutSecureChannel,deviceStatus:a.CONNECTED,currentApp:{name:"Bitcoin Testnet",version:"1.0.0"}}),A([{currentApp:"Bitcoin Testnet",currentAppVersion:"1.0.0"}]);const n=new d({input:{appName:"Bitcoin",unlockTimeout:void 0,compatibleAppNames:["Bitcoin Testnet"]}});vi.spyOn(n,"extractDependencies").mockReturnValue(m());const i=[{status:e.Pending,intermediateValue:{requiredUserInteraction:t.None}},{status:e.Pending,intermediateValue:{requiredUserInteraction:t.None}},{status:e.Completed,output:void 0}];u(n,i,p(),{onDone:r,onError:o})})),it("should end in a success if the dashboard is open and open app succeeds",()=>new Promise((r,o)=>{c.mockReturnValue({sessionStateType:s.ReadyWithoutSecureChannel,deviceStatus:a.CONNECTED,currentApp:{name:"BOLOS",version:"0.0.0"}}),A([{currentApp:"Bitcoin",currentAppVersion:"1.0.0"}]),S.mockResolvedValue(l({data:void 0}));const n=new d({input:{appName:"Bitcoin"}});vi.spyOn(n,"extractDependencies").mockReturnValue(m());const i=[{status:e.Pending,intermediateValue:{requiredUserInteraction:t.None}},{status:e.Pending,intermediateValue:{requiredUserInteraction:t.None}},{status:e.Completed,output:void 0}],{observable:N}=u(n,i,p(),{onDone:r,onError:o});y(N).then(()=>{expect(h).toHaveBeenCalledWith({deviceStatus:a.CONNECTED,sessionStateType:s.ReadyWithoutSecureChannel,currentApp:{name:"Bitcoin",version:"1.0.0"}})})})),it("should end in a success if another app is open, close app succeeds and open app succeeds",()=>new Promise((r,o)=>{c.mockReturnValue({sessionStateType:s.ReadyWithoutSecureChannel,deviceStatus:a.CONNECTED,currentApp:{name:"AnotherApp",version:"0.0.0"}}),A([{currentApp:"AnotherApp",currentAppVersion:"0.0.0"},{currentApp:"Bitcoin",currentAppVersion:"1.0.0"}]),V.mockResolvedValue(l({data:void 0})),S.mockResolvedValue(l({data:void 0}));const n=new d({input:{appName:"Bitcoin"}});vi.spyOn(n,"extractDependencies").mockReturnValue(m());const i=[{status:e.Pending,intermediateValue:{requiredUserInteraction:t.None}},{status:e.Pending,intermediateValue:{requiredUserInteraction:t.None}},{status:e.Pending,intermediateValue:{requiredUserInteraction:t.None}},{status:e.Pending,intermediateValue:{requiredUserInteraction:t.ConfirmOpenApp}},{status:e.Pending,intermediateValue:{requiredUserInteraction:t.None}},{status:e.Pending,intermediateValue:{requiredUserInteraction:t.None}},{status:e.Completed,output:void 0}],{observable:N}=u(n,i,p(),{onDone:r,onError:o});y(N).then(()=>{expect(h).toHaveBeenCalledWith({currentApp:{name:"Bitcoin",version:"1.0.0"},deviceStatus:a.CONNECTED,sessionStateType:s.ReadyWithoutSecureChannel})})}))}),describe("errors cases",()=>{it("should end in an error if the device is not onboarded",()=>new Promise((r,o)=>{c.mockReturnValue({sessionStateType:s.ReadyWithoutSecureChannel,deviceStatus:a.CONNECTED,currentApp:{name:"mockedCurrentApp",version:"1.0.0"}}),k.mockReturnValue(!1);const n=new d({input:{appName:"Bitcoin"}});vi.spyOn(n,"extractDependencies").mockReturnValue(m());const i=[{error:new R,status:e.Error}];u(n,i,p(),{onDone:r,onError:o})})),it("should end in an error if the device is locked",()=>new Promise((r,o)=>{c.mockReturnValue({sessionStateType:s.ReadyWithoutSecureChannel,deviceStatus:a.LOCKED,currentApp:{name:"mockedCurrentApp",version:"1.0.0"}}),A([new C]);const n=new d({input:{appName:"Bitcoin"}});vi.spyOn(n,"extractDependencies").mockReturnValue(m());const i=[{status:e.Pending,intermediateValue:{requiredUserInteraction:t.None}},{status:e.Pending,intermediateValue:{requiredUserInteraction:t.None}},{status:e.Error,error:new C}];u(n,i,p(),{onDone:r,onError:o})})),it("should end in an error if getAppAndVersion returns an error",()=>new Promise((r,o)=>{c.mockReturnValue({sessionStateType:s.ReadyWithoutSecureChannel,deviceStatus:a.CONNECTED,currentApp:{name:"mockedCurrentApp",version:"1.0.0"}}),A([new v("mocked error")]);const n=new d({input:{appName:"Bitcoin"}});vi.spyOn(n,"extractDependencies").mockReturnValue(m());const i=[{status:e.Pending,intermediateValue:{requiredUserInteraction:t.None}},{status:e.Pending,intermediateValue:{requiredUserInteraction:t.None}},{status:e.Error,error:new v("mocked error")}];u(n,i,p(),{onDone:r,onError:o})})),it("should end in an error if the dashboard is open and open app returns an error",()=>new Promise((r,o)=>{c.mockReturnValue(l({data:{sessionStateType:s.ReadyWithoutSecureChannel,deviceStatus:a.CONNECTED,currentApp:{name:"BOLOS",version:"0.0.0"}}})),O.mockResolvedValue(l({data:{name:"BOLOS",version:"0.0.0"}})),A([{currentApp:"BOLOS",currentAppVersion:"0.0.0"}]),S.mockResolvedValue(l({error:new v("mocked error")}));const n=new d({input:{appName:"Bitcoin"}});vi.spyOn(n,"extractDependencies").mockReturnValue(m());const i=[{status:e.Pending,intermediateValue:{requiredUserInteraction:t.None}},{status:e.Pending,intermediateValue:{requiredUserInteraction:t.None}},{status:e.Pending,intermediateValue:{requiredUserInteraction:t.ConfirmOpenApp}},{status:e.Error,error:new v("mocked error")}];u(n,i,p(),{onDone:r,onError:o})})),it("should end in an error if another app is open, and close app returns an error",()=>new Promise((r,o)=>{c.mockReturnValue({sessionStateType:s.ReadyWithoutSecureChannel,deviceStatus:a.CONNECTED,currentApp:{name:"AnotherApp",version:"0.0.0"}}),A([{currentApp:"AnotherApp",currentAppVersion:"0.0.0"}]),V.mockResolvedValue(l({error:new v("mocked error")}));const n=new d({input:{appName:"Bitcoin"}});vi.spyOn(n,"extractDependencies").mockReturnValue(m());const i=[{status:e.Pending,intermediateValue:{requiredUserInteraction:t.None}},{status:e.Pending,intermediateValue:{requiredUserInteraction:t.None}},{status:e.Pending,intermediateValue:{requiredUserInteraction:t.None}},{status:e.Error,error:new v("mocked error")}];u(n,i,p(),{onDone:r,onError:o})})),it("should end in an error if another app is open, close app succeeds but open app returns an error",()=>new Promise((r,o)=>{c.mockReturnValue({sessionStateType:s.ReadyWithoutSecureChannel,deviceStatus:a.CONNECTED,currentApp:{name:"AnotherApp",version:"0.0.0"}}),A([{currentApp:"AnotherApp",currentAppVersion:"0.0.0"}]),V.mockResolvedValue(l({data:void 0})),S.mockResolvedValue(l({error:new v("mocked error")}));const n=new d({input:{appName:"Bitcoin"}});vi.spyOn(n,"extractDependencies").mockReturnValue(m());const i=[{status:e.Pending,intermediateValue:{requiredUserInteraction:t.None}},{status:e.Pending,intermediateValue:{requiredUserInteraction:t.None}},{status:e.Pending,intermediateValue:{requiredUserInteraction:t.None}},{status:e.Pending,intermediateValue:{requiredUserInteraction:t.ConfirmOpenApp}},{status:e.Error,error:new v("mocked error")}];u(n,i,p(),{onDone:r,onError:o})})),it("should end in an error if getAppAndVersion actor throws an error",()=>new Promise((r,o)=>{c.mockReturnValue({sessionStateType:s.ReadyWithoutSecureChannel,deviceStatus:a.CONNECTED,currentApp:{name:"mockedCurrentApp",version:"1.0.0"}}),A([new D("Unknown error")]);const n=new d({input:{appName:"Bitcoin"}});vi.spyOn(n,"extractDependencies").mockReturnValue(m());const i=[{status:e.Pending,intermediateValue:{requiredUserInteraction:t.None}},{status:e.Pending,intermediateValue:{requiredUserInteraction:t.None}},{status:e.Error,error:new D("Unknown error")}];u(n,i,p(),{onDone:r,onError:o})})),it("should end in an error if openApp actor throws an error",()=>new Promise((r,o)=>{c.mockReturnValue(l({data:{sessionStateType:s.ReadyWithoutSecureChannel,deviceStatus:a.CONNECTED,currentApp:{name:"BOLOS",version:"0.0.0"}}})),A([{currentApp:"BOLOS",currentAppVersion:"0.0.0"}]),S.mockImplementation(()=>{throw new D("Unknown error")});const n=new d({input:{appName:"Bitcoin"}});vi.spyOn(n,"extractDependencies").mockReturnValue(m());const i=[{status:e.Pending,intermediateValue:{requiredUserInteraction:t.None}},{status:e.Pending,intermediateValue:{requiredUserInteraction:t.None}},{status:e.Pending,intermediateValue:{requiredUserInteraction:t.ConfirmOpenApp}},{status:e.Error,error:new D("Unknown error")}];u(n,i,p(),{onDone:r,onError:o})})),it("should end in an error if closeApp actor throws an error",()=>new Promise((r,o)=>{c.mockReturnValue(l({data:{sessionStateType:s.ReadyWithoutSecureChannel,deviceStatus:a.CONNECTED,currentApp:{name:"BOLOS",version:"0.0.0"}}})),A([{currentApp:"anApp",currentAppVersion:"0.0.0"}]),V.mockImplementation(()=>{throw new D("Unknown error")});const n=new d({input:{appName:"Bitcoin"}});vi.spyOn(n,"extractDependencies").mockReturnValue(m());const i=[{status:e.Pending,intermediateValue:{requiredUserInteraction:t.None}},{status:e.Pending,intermediateValue:{requiredUserInteraction:t.None}},{status:e.Pending,intermediateValue:{requiredUserInteraction:t.None}},{status:e.Error,error:new D("Unknown error")}];u(n,i,p(),{onDone:r,onError:o})})),it("should emit a stopped state if the action is cancelled",()=>new Promise((r,o)=>{c.mockReturnValue({sessionStateType:s.ReadyWithoutSecureChannel,deviceStatus:a.CONNECTED,currentApp:{name:"AnotherApp",version:"0.0.0"}}),A([{currentApp:"AnotherApp",currentAppVersion:"0.0.0"}]);const n=new d({input:{appName:"Bitcoin"}});vi.spyOn(n,"extractDependencies").mockReturnValue(m());const i=[{status:e.Pending,intermediateValue:{requiredUserInteraction:t.None}},{status:e.Pending,intermediateValue:{requiredUserInteraction:t.None}},{status:e.Stopped}],{cancel:N}=u(n,i,p(),{onDone:r,onError:o});N()}))})});
2
2
  //# sourceMappingURL=OpenAppDeviceAction.test.js.map