postchain-client 1.22.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (359) hide show
  1. package/README.md +5 -0
  2. package/built/cjs/index.js +2346 -2600
  3. package/built/cjs/index.js.map +1 -1
  4. package/built/esm/index.js +32402 -32650
  5. package/built/esm/index.js.map +1 -1
  6. package/built/index.d.ts +3 -7
  7. package/built/index.js +2 -9
  8. package/built/index.js.map +1 -1
  9. package/built/mocks/handlers.d.ts +1 -1
  10. package/built/mocks/handlers.js +62 -21
  11. package/built/mocks/handlers.js.map +1 -1
  12. package/built/src/ICCF/IccfProofTxMaterialBuilder.js.map +1 -1
  13. package/built/src/ICCF/types.d.ts +4 -1
  14. package/built/src/ICCF/utils.js +2 -2
  15. package/built/src/ICCF/utils.js.map +1 -1
  16. package/built/src/blockchainClient/blockchainClient.js +51 -52
  17. package/built/src/blockchainClient/blockchainClient.js.map +1 -1
  18. package/built/src/blockchainClient/clientStub.js +18 -16
  19. package/built/src/blockchainClient/clientStub.js.map +1 -1
  20. package/built/src/blockchainClient/enums.d.ts +5 -0
  21. package/built/src/blockchainClient/enums.js +6 -0
  22. package/built/src/blockchainClient/enums.js.map +1 -1
  23. package/built/src/blockchainClient/errors.d.ts +20 -0
  24. package/built/src/blockchainClient/errors.js +41 -0
  25. package/built/src/blockchainClient/errors.js.map +1 -1
  26. package/built/src/{restclient → blockchainClient}/failoverStrategies.d.ts +14 -0
  27. package/built/src/{restclient → blockchainClient}/failoverStrategies.js +102 -23
  28. package/built/src/blockchainClient/failoverStrategies.js.map +1 -0
  29. package/built/src/blockchainClient/httpUtil.d.ts +4 -0
  30. package/built/src/{restclient → blockchainClient}/httpUtil.js +27 -23
  31. package/built/src/blockchainClient/httpUtil.js.map +1 -0
  32. package/built/src/blockchainClient/interface.d.ts +48 -59
  33. package/built/src/blockchainClient/nodeManager.js.map +1 -0
  34. package/built/src/blockchainClient/requestWithFailoverStrategy.d.ts +4 -0
  35. package/built/src/blockchainClient/requestWithFailoverStrategy.js +31 -0
  36. package/built/src/blockchainClient/requestWithFailoverStrategy.js.map +1 -0
  37. package/built/src/blockchainClient/types.d.ts +63 -20
  38. package/built/src/blockchainClient/utils.d.ts +37 -12
  39. package/built/src/blockchainClient/utils.js +136 -30
  40. package/built/src/blockchainClient/utils.js.map +1 -1
  41. package/built/src/blockchainClient/validation/merkleHash.js +2 -1
  42. package/built/src/blockchainClient/validation/merkleHash.js.map +1 -1
  43. package/built/src/blockchainClient/validation/rawGtx.d.ts +2 -0
  44. package/built/src/blockchainClient/validation/rawGtx.js +22 -0
  45. package/built/src/blockchainClient/validation/rawGtx.js.map +1 -0
  46. package/built/src/blockchainClient/validation/requests.d.ts +5 -2
  47. package/built/src/blockchainClient/validation/requests.js +26 -0
  48. package/built/src/blockchainClient/validation/requests.js.map +1 -1
  49. package/built/src/blockchainClient/validation/transactionStatusReponse.d.ts +2 -0
  50. package/built/src/blockchainClient/validation/transactionStatusReponse.js +24 -0
  51. package/built/src/blockchainClient/validation/transactionStatusReponse.js.map +1 -0
  52. package/built/src/blockchainClient/validation/txRid.js +1 -1
  53. package/built/src/blockchainClient/validation/txRid.js.map +1 -1
  54. package/built/src/encryption/encryption.d.ts +0 -1
  55. package/built/src/encryption/encryption.js +0 -2
  56. package/built/src/encryption/encryption.js.map +1 -1
  57. package/built/src/formatter.d.ts +5 -7
  58. package/built/src/formatter.js +10 -29
  59. package/built/src/formatter.js.map +1 -1
  60. package/built/src/gtv/index.d.ts +2 -1
  61. package/built/src/gtv/index.js.map +1 -1
  62. package/built/src/gtx/errors.d.ts +2 -1
  63. package/built/src/gtx/errors.js.map +1 -1
  64. package/built/src/gtx/gtx.d.ts +5 -2
  65. package/built/src/gtx/gtx.js +0 -7
  66. package/built/src/gtx/gtx.js.map +1 -1
  67. package/built/src/gtx/serialization.d.ts +0 -1
  68. package/built/src/gtx/serialization.js +0 -1
  69. package/built/src/gtx/serialization.js.map +1 -1
  70. package/built/src/gtx/types.d.ts +0 -8
  71. package/built/src/logger.d.ts +6 -9
  72. package/built/src/logger.js +8 -14
  73. package/built/src/logger.js.map +1 -1
  74. package/built/src/merkle/merkleHelper.d.ts +0 -1
  75. package/built/src/merkle/merkleHelper.js +0 -1
  76. package/built/src/merkle/merkleHelper.js.map +1 -1
  77. package/built/src/promiEvent/promiEventEmitter.d.ts +1 -8
  78. package/built/src/promiEvent/promiEventEmitter.js.map +1 -1
  79. package/built/src/utils/calculateTransactionRid.d.ts +1 -1
  80. package/built/src/utils/calculateTransactionRid.js +6 -6
  81. package/built/src/utils/calculateTransactionRid.js.map +1 -1
  82. package/built/src/utils/constants.d.ts +4 -0
  83. package/built/src/utils/constants.js +5 -0
  84. package/built/src/utils/constants.js.map +1 -0
  85. package/built/src/utils/decodeTransactionToGtx.d.ts +1 -1
  86. package/built/src/utils/decodeTransactionToGtx.js +4 -3
  87. package/built/src/utils/decodeTransactionToGtx.js.map +1 -1
  88. package/built/src/utils/encodeTransaction.d.ts +1 -1
  89. package/built/src/utils/encodeTransaction.js +4 -4
  90. package/built/src/utils/encodeTransaction.js.map +1 -1
  91. package/built/test/common/mocks.d.ts +118 -0
  92. package/built/test/common/mocks.js +239 -0
  93. package/built/test/common/mocks.js.map +1 -0
  94. package/built/test/{unit/gtx → common}/serializationtestobjects.d.ts +1 -1
  95. package/built/test/common/serializationtestobjects.js.map +1 -0
  96. package/built/test/common/setups.d.ts +27 -0
  97. package/built/test/common/setups.js +137 -0
  98. package/built/test/common/setups.js.map +1 -0
  99. package/built/test/{unit → common}/signatures.d.ts +0 -1
  100. package/built/test/{unit → common}/signatures.js +0 -1
  101. package/built/test/common/signatures.js.map +1 -0
  102. package/built/test/common/testData.js.map +1 -0
  103. package/built/test/{unit/validation → common}/validationMocks.d.ts +22 -2
  104. package/built/test/{unit/validation → common}/validationMocks.js +13 -1
  105. package/built/test/common/validationMocks.js.map +1 -0
  106. package/built/test/integration/clientGetBlockInfo.test.js +51 -0
  107. package/built/test/integration/clientGetBlockInfo.test.js.map +1 -0
  108. package/built/test/integration/clientGetRejectedTransactions.test.js +28 -0
  109. package/built/test/integration/clientGetRejectedTransactions.test.js.map +1 -0
  110. package/built/test/integration/clientGetTransaction.test.js +29 -0
  111. package/built/test/integration/clientGetTransaction.test.js.map +1 -0
  112. package/built/test/integration/clientGetTransactionStatus.test.js +71 -0
  113. package/built/test/integration/clientGetTransactionStatus.test.js.map +1 -0
  114. package/built/test/integration/clientGetWaitingTransaction.test.js +34 -0
  115. package/built/test/integration/clientGetWaitingTransaction.test.js.map +1 -0
  116. package/built/test/integration/clientGetWaitingTransactions.test.js +28 -0
  117. package/built/test/integration/clientGetWaitingTransactions.test.js.map +1 -0
  118. package/built/test/integration/clientIntegration.test.js +95 -0
  119. package/built/test/integration/clientIntegration.test.js.map +1 -0
  120. package/built/test/integration/clientQuery.test.js +380 -0
  121. package/built/test/integration/clientQuery.test.js.map +1 -0
  122. package/built/test/integration/clientSendTransaction.test.js +86 -0
  123. package/built/test/integration/clientSendTransaction.test.js.map +1 -0
  124. package/built/test/integration/clientSignAndSendUniqueTransaction.test.js +75 -0
  125. package/built/test/integration/clientSignAndSendUniqueTransaction.test.js.map +1 -0
  126. package/built/test/integration/clientSignTransaction.test.js +77 -0
  127. package/built/test/integration/clientSignTransaction.test.js.map +1 -0
  128. package/built/test/integration/{blockchainClientUtils.test.js → clientUtils.test.js} +13 -8
  129. package/built/test/integration/clientUtils.test.js.map +1 -0
  130. package/built/test/integration/createClientIntegration.test.js +158 -0
  131. package/built/test/integration/createClientIntegration.test.js.map +1 -0
  132. package/built/test/integration/encodeTransaction.test.js +3 -6
  133. package/built/test/integration/encodeTransaction.test.js.map +1 -1
  134. package/built/test/integration/getTransactionsInfo.test.js +17 -26
  135. package/built/test/integration/getTransactionsInfo.test.js.map +1 -1
  136. package/built/test/integration/signAndSendUniqueTransaction.test.js +26 -19
  137. package/built/test/integration/signAndSendUniqueTransaction.test.js.map +1 -1
  138. package/built/test/integrationChromiaNetwork/createIccfProofTx.test.js +59 -0
  139. package/built/test/integrationChromiaNetwork/createIccfProofTx.test.js.map +1 -0
  140. package/built/test/{integrationDevnet → integrationChromiaNetwork}/getAnchoringStatusForBlockRid.test.js +9 -15
  141. package/built/test/integrationChromiaNetwork/getAnchoringStatusForBlockRid.test.js.map +1 -0
  142. package/built/test/{integrationDevnet → integrationChromiaNetwork}/getTransactionConfirmationLevel.test.js +7 -13
  143. package/built/test/integrationChromiaNetwork/getTransactionConfirmationLevel.test.js.map +1 -0
  144. package/built/test/integrationChromiaNetwork/getTransactionStatus.test.js +45 -0
  145. package/built/test/integrationChromiaNetwork/getTransactionStatus.test.js.map +1 -0
  146. package/built/test/integrationChromiaNetwork/isBlockAnchored.test.d.ts +1 -0
  147. package/built/test/integrationChromiaNetwork/isBlockAnchored.test.js +35 -0
  148. package/built/test/integrationChromiaNetwork/isBlockAnchored.test.js.map +1 -0
  149. package/built/test/integrationChromiaNetwork/merkleHashIntegration.test.d.ts +1 -0
  150. package/built/test/integrationChromiaNetwork/merkleHashIntegration.test.js +134 -0
  151. package/built/test/integrationChromiaNetwork/merkleHashIntegration.test.js.map +1 -0
  152. package/built/test/integrationChromiaNetwork/nodeDiscovery.test.d.ts +1 -0
  153. package/built/test/integrationChromiaNetwork/nodeDiscovery.test.js +26 -0
  154. package/built/test/integrationChromiaNetwork/nodeDiscovery.test.js.map +1 -0
  155. package/built/test/integrationChromiaNetwork/requestWithFailoverStrategy.test.d.ts +1 -0
  156. package/built/test/integrationChromiaNetwork/requestWithFailoverStrategy.test.js +84 -0
  157. package/built/test/integrationChromiaNetwork/requestWithFailoverStrategy.test.js.map +1 -0
  158. package/built/test/integrationChromiaNetwork/signAndSendUniqueTransaction.test.d.ts +1 -0
  159. package/built/test/{integrationDevnet → integrationChromiaNetwork}/signAndSendUniqueTransaction.test.js +27 -44
  160. package/built/test/integrationChromiaNetwork/signAndSendUniqueTransaction.test.js.map +1 -0
  161. package/built/test/manual/iccfManually.test.js +18 -27
  162. package/built/test/manual/iccfManually.test.js.map +1 -1
  163. package/built/test/unit/ICCF/iccf.test.js +63 -158
  164. package/built/test/unit/ICCF/iccf.test.js.map +1 -1
  165. package/built/test/unit/ICCF/iccfProofMaterialBuilder.test.d.ts +1 -2
  166. package/built/test/unit/ICCF/iccfProofMaterialBuilder.test.js +101 -296
  167. package/built/test/unit/ICCF/iccfProofMaterialBuilder.test.js.map +1 -1
  168. package/built/test/unit/blockchainClient/client.getRejectedTransactions.test.d.ts +1 -0
  169. package/built/test/unit/blockchainClient/client.getRejectedTransactions.test.js +48 -0
  170. package/built/test/unit/blockchainClient/client.getRejectedTransactions.test.js.map +1 -0
  171. package/built/test/unit/blockchainClient/client.getWaitingTransaction.test.d.ts +1 -0
  172. package/built/test/unit/blockchainClient/client.getWaitingTransaction.test.js +38 -0
  173. package/built/test/unit/blockchainClient/client.getWaitingTransaction.test.js.map +1 -0
  174. package/built/test/unit/blockchainClient/client.getWaitingTransactions.test.d.ts +1 -0
  175. package/built/test/unit/blockchainClient/client.getWaitingTransactions.test.js +30 -0
  176. package/built/test/unit/blockchainClient/client.getWaitingTransactions.test.js.map +1 -0
  177. package/built/test/unit/blockchainClient/client.test.d.ts +1 -0
  178. package/built/test/unit/blockchainClient/client.test.js +175 -0
  179. package/built/test/unit/blockchainClient/client.test.js.map +1 -0
  180. package/built/test/unit/blockchainClient/clientCustomStatusCodes.test.js +26 -32
  181. package/built/test/unit/blockchainClient/clientCustomStatusCodes.test.js.map +1 -1
  182. package/built/test/unit/blockchainClient/getAnchoringStatusForBlockRid.test.js +26 -59
  183. package/built/test/unit/blockchainClient/getAnchoringStatusForBlockRid.test.js.map +1 -1
  184. package/built/test/unit/blockchainClient/getSystemAnchoringTransactionConfirmation.test.js +21 -38
  185. package/built/test/unit/blockchainClient/getSystemAnchoringTransactionConfirmation.test.js.map +1 -1
  186. package/built/test/unit/blockchainClient/getTransactionConfirmationLevel.test.js +77 -127
  187. package/built/test/unit/blockchainClient/getTransactionConfirmationLevel.test.js.map +1 -1
  188. package/built/test/unit/blockchainClient/sendTransaction.test.js +352 -675
  189. package/built/test/unit/blockchainClient/sendTransaction.test.js.map +1 -1
  190. package/built/test/unit/blockchainClient/setMerkleVersion.test.js +14 -28
  191. package/built/test/unit/blockchainClient/setMerkleVersion.test.js.map +1 -1
  192. package/built/test/unit/blockchainClient/signAndSendUniqueTransactionPromiEvents.test.js +31 -98
  193. package/built/test/unit/blockchainClient/signAndSendUniqueTransactionPromiEvents.test.js.map +1 -1
  194. package/built/test/unit/blockchainClient/statusPollIntervals.test.js +34 -54
  195. package/built/test/unit/blockchainClient/statusPollIntervals.test.js.map +1 -1
  196. package/built/test/unit/blockchainClient/util.test.js +74 -133
  197. package/built/test/unit/blockchainClient/util.test.js.map +1 -1
  198. package/built/test/unit/decodeTransactionToGtx.test.js +3 -4
  199. package/built/test/unit/decodeTransactionToGtx.test.js.map +1 -1
  200. package/built/test/unit/dump.test.js +2 -3
  201. package/built/test/unit/dump.test.js.map +1 -1
  202. package/built/test/unit/encryption/encryption.test.js +23 -32
  203. package/built/test/unit/encryption/encryption.test.js.map +1 -1
  204. package/built/test/unit/failoverStrategies.test.js +122 -114
  205. package/built/test/unit/failoverStrategies.test.js.map +1 -1
  206. package/built/test/unit/formatter.test.js +38 -42
  207. package/built/test/unit/formatter.test.js.map +1 -1
  208. package/built/test/unit/gtv/gtvHash.test.js +5 -6
  209. package/built/test/unit/gtv/gtvHash.test.js.map +1 -1
  210. package/built/test/unit/gtx/checkGTXSignature.test.js +5 -7
  211. package/built/test/unit/gtx/checkGTXSignature.test.js.map +1 -1
  212. package/built/test/unit/gtx/newSignatureProvider.test.js +9 -10
  213. package/built/test/unit/gtx/newSignatureProvider.test.js.map +1 -1
  214. package/built/test/unit/gtx/serialization.test.js +37 -138
  215. package/built/test/unit/gtx/serialization.test.js.map +1 -1
  216. package/built/test/unit/httpUtil.test.js +27 -18
  217. package/built/test/unit/httpUtil.test.js.map +1 -1
  218. package/built/test/unit/logger.test.js +23 -25
  219. package/built/test/unit/logger.test.js.map +1 -1
  220. package/built/test/unit/merkle/merkleHelper/merkleHelperTest.js +10 -12
  221. package/built/test/unit/merkle/merkleHelper/merkleHelperTest.js.map +1 -1
  222. package/built/test/unit/nodeMananger.test.js +62 -74
  223. package/built/test/unit/nodeMananger.test.js.map +1 -1
  224. package/built/test/unit/setOrdering.test.js +9 -9
  225. package/built/test/unit/setOrdering.test.js.map +1 -1
  226. package/built/test/unit/stickyNode.test.js +44 -54
  227. package/built/test/unit/stickyNode.test.js.map +1 -1
  228. package/built/test/unit/validation/anchoringTransaction.test.js +7 -8
  229. package/built/test/unit/validation/anchoringTransaction.test.js.map +1 -1
  230. package/built/test/unit/validation/blockIdentifier.test.js +7 -9
  231. package/built/test/unit/validation/blockIdentifier.test.js.map +1 -1
  232. package/built/test/unit/validation/bufferSchema.test.js +4 -5
  233. package/built/test/unit/validation/bufferSchema.test.js.map +1 -1
  234. package/built/test/unit/validation/networkSettings.test.js +11 -13
  235. package/built/test/unit/validation/networkSettings.test.js.map +1 -1
  236. package/built/test/unit/validation/rawGtx.test.d.ts +1 -0
  237. package/built/test/unit/validation/rawGtx.test.js +84 -0
  238. package/built/test/unit/validation/rawGtx.test.js.map +1 -0
  239. package/built/test/unit/validation/requests.test.js +80 -74
  240. package/built/test/unit/validation/requests.test.js.map +1 -1
  241. package/built/test/unit/validation/signMethod.test.js +8 -10
  242. package/built/test/unit/validation/signMethod.test.js.map +1 -1
  243. package/built/test/unit/validation/statusObject.test.d.ts +1 -0
  244. package/built/test/unit/validation/statusObject.test.js +91 -0
  245. package/built/test/unit/validation/statusObject.test.js.map +1 -0
  246. package/built/test/unit/validation/txRid.test.js +7 -9
  247. package/built/test/unit/validation/txRid.test.js.map +1 -1
  248. package/built/umd/index.js +32517 -32771
  249. package/built/umd/index.js.map +1 -1
  250. package/changelog.md +52 -1
  251. package/package.json +22 -22
  252. package/built/src/chromia/chromiaClientProvider.d.ts +0 -9
  253. package/built/src/chromia/chromiaClientProvider.js +0 -36
  254. package/built/src/chromia/chromiaClientProvider.js.map +0 -1
  255. package/built/src/chromia/interfaces.d.ts +0 -4
  256. package/built/src/chromia/interfaces.js +0 -2
  257. package/built/src/chromia/interfaces.js.map +0 -1
  258. package/built/src/constants.d.ts +0 -3
  259. package/built/src/constants.js +0 -4
  260. package/built/src/constants.js.map +0 -1
  261. package/built/src/gtx/gtxclient.d.ts +0 -3
  262. package/built/src/gtx/gtxclient.js +0 -96
  263. package/built/src/gtx/gtxclient.js.map +0 -1
  264. package/built/src/gtx/interfaces.d.ts +0 -91
  265. package/built/src/gtx/interfaces.js +0 -2
  266. package/built/src/gtx/interfaces.js.map +0 -1
  267. package/built/src/restclient/enums.d.ts +0 -4
  268. package/built/src/restclient/enums.js +0 -6
  269. package/built/src/restclient/enums.js.map +0 -1
  270. package/built/src/restclient/errors.d.ts +0 -33
  271. package/built/src/restclient/errors.js +0 -63
  272. package/built/src/restclient/errors.js.map +0 -1
  273. package/built/src/restclient/failoverStrategies.js.map +0 -1
  274. package/built/src/restclient/httpUtil.d.ts +0 -6
  275. package/built/src/restclient/httpUtil.js.map +0 -1
  276. package/built/src/restclient/interfaces.d.ts +0 -68
  277. package/built/src/restclient/interfaces.js +0 -2
  278. package/built/src/restclient/interfaces.js.map +0 -1
  279. package/built/src/restclient/nodeManager.js.map +0 -1
  280. package/built/src/restclient/restclient.d.ts +0 -18
  281. package/built/src/restclient/restclient.js +0 -200
  282. package/built/src/restclient/restclient.js.map +0 -1
  283. package/built/src/restclient/restclientutil.d.ts +0 -32
  284. package/built/src/restclient/restclientutil.js +0 -141
  285. package/built/src/restclient/restclientutil.js.map +0 -1
  286. package/built/src/restclient/types.d.ts +0 -78
  287. package/built/src/restclient/types.js +0 -2
  288. package/built/src/restclient/types.js.map +0 -1
  289. package/built/test/integration/blockchainClientIntegration.test.js +0 -1075
  290. package/built/test/integration/blockchainClientIntegration.test.js.map +0 -1
  291. package/built/test/integration/blockchainClientUtils.test.js.map +0 -1
  292. package/built/test/integration/gtxClientIntegration.test.js +0 -334
  293. package/built/test/integration/gtxClientIntegration.test.js.map +0 -1
  294. package/built/test/integration/merkleIntegration.test.js +0 -138
  295. package/built/test/integration/merkleIntegration.test.js.map +0 -1
  296. package/built/test/integration/objectGenerator.d.ts +0 -3
  297. package/built/test/integration/objectGenerator.js +0 -17
  298. package/built/test/integration/objectGenerator.js.map +0 -1
  299. package/built/test/integration/restClientIntegration.test.js +0 -170
  300. package/built/test/integration/restClientIntegration.test.js.map +0 -1
  301. package/built/test/integration/testData.js.map +0 -1
  302. package/built/test/integrationDevnet/constants.d.ts +0 -1
  303. package/built/test/integrationDevnet/constants.js +0 -2
  304. package/built/test/integrationDevnet/constants.js.map +0 -1
  305. package/built/test/integrationDevnet/getAnchoringStatusForBlockRid.test.js.map +0 -1
  306. package/built/test/integrationDevnet/getTransactionConfirmationLevel.test.js.map +0 -1
  307. package/built/test/integrationDevnet/getTransactionStatus.test.js +0 -53
  308. package/built/test/integrationDevnet/getTransactionStatus.test.js.map +0 -1
  309. package/built/test/integrationDevnet/signAndSendUniqueTransaction.test.js.map +0 -1
  310. package/built/test/manual/chromiaClientProviderManually.test.js +0 -28
  311. package/built/test/manual/chromiaClientProviderManually.test.js.map +0 -1
  312. package/built/test/manual/restClientManually.test.js +0 -52
  313. package/built/test/manual/restClientManually.test.js.map +0 -1
  314. package/built/test/unit/ICCF/util.d.ts +0 -6
  315. package/built/test/unit/ICCF/util.js +0 -21
  316. package/built/test/unit/ICCF/util.js.map +0 -1
  317. package/built/test/unit/blockchainClient/blockchainClient.test.js +0 -287
  318. package/built/test/unit/blockchainClient/blockchainClient.test.js.map +0 -1
  319. package/built/test/unit/blockchainClient/helpers/sendTransaction.d.ts +0 -25
  320. package/built/test/unit/blockchainClient/helpers/sendTransaction.js +0 -56
  321. package/built/test/unit/blockchainClient/helpers/sendTransaction.js.map +0 -1
  322. package/built/test/unit/chromiaClientProvider.test.js +0 -70
  323. package/built/test/unit/chromiaClientProvider.test.js.map +0 -1
  324. package/built/test/unit/common/mocks.d.ts +0 -34
  325. package/built/test/unit/common/mocks.js +0 -69
  326. package/built/test/unit/common/mocks.js.map +0 -1
  327. package/built/test/unit/gtx/gtxClient.test.js +0 -97
  328. package/built/test/unit/gtx/gtxClient.test.js.map +0 -1
  329. package/built/test/unit/gtx/serializationtestobjects.js.map +0 -1
  330. package/built/test/unit/requestWithFailoverStrategy.test.js +0 -146
  331. package/built/test/unit/requestWithFailoverStrategy.test.js.map +0 -1
  332. package/built/test/unit/restClient.test.js +0 -389
  333. package/built/test/unit/restClient.test.js.map +0 -1
  334. package/built/test/unit/restClientUtil.test.js +0 -226
  335. package/built/test/unit/restClientUtil.test.js.map +0 -1
  336. package/built/test/unit/signatures.js.map +0 -1
  337. package/built/test/unit/validation/validationMocks.js.map +0 -1
  338. /package/built/src/{restclient → blockchainClient}/nodeManager.d.ts +0 -0
  339. /package/built/src/{restclient → blockchainClient}/nodeManager.js +0 -0
  340. /package/built/test/{unit/gtx → common}/serializationtestobjects.js +0 -0
  341. /package/built/test/{integration → common}/testData.d.ts +0 -0
  342. /package/built/test/{integration → common}/testData.js +0 -0
  343. /package/built/test/integration/{blockchainClientIntegration.test.d.ts → clientGetBlockInfo.test.d.ts} +0 -0
  344. /package/built/test/integration/{blockchainClientUtils.test.d.ts → clientGetRejectedTransactions.test.d.ts} +0 -0
  345. /package/built/test/integration/{gtxClientIntegration.test.d.ts → clientGetTransaction.test.d.ts} +0 -0
  346. /package/built/test/integration/{merkleIntegration.test.d.ts → clientGetTransactionStatus.test.d.ts} +0 -0
  347. /package/built/test/integration/{restClientIntegration.test.d.ts → clientGetWaitingTransaction.test.d.ts} +0 -0
  348. /package/built/test/{integrationDevnet/getAnchoringStatusForBlockRid.test.d.ts → integration/clientGetWaitingTransactions.test.d.ts} +0 -0
  349. /package/built/test/{integrationDevnet/getTransactionConfirmationLevel.test.d.ts → integration/clientIntegration.test.d.ts} +0 -0
  350. /package/built/test/{integrationDevnet/getTransactionStatus.test.d.ts → integration/clientQuery.test.d.ts} +0 -0
  351. /package/built/test/{integrationDevnet/signAndSendUniqueTransaction.test.d.ts → integration/clientSendTransaction.test.d.ts} +0 -0
  352. /package/built/test/{manual/chromiaClientProviderManually.test.d.ts → integration/clientSignAndSendUniqueTransaction.test.d.ts} +0 -0
  353. /package/built/test/{manual/restClientManually.test.d.ts → integration/clientSignTransaction.test.d.ts} +0 -0
  354. /package/built/test/{unit/blockchainClient/blockchainClient.test.d.ts → integration/clientUtils.test.d.ts} +0 -0
  355. /package/built/test/{unit/chromiaClientProvider.test.d.ts → integration/createClientIntegration.test.d.ts} +0 -0
  356. /package/built/test/{unit/gtx/gtxClient.test.d.ts → integrationChromiaNetwork/createIccfProofTx.test.d.ts} +0 -0
  357. /package/built/test/{unit/requestWithFailoverStrategy.test.d.ts → integrationChromiaNetwork/getAnchoringStatusForBlockRid.test.d.ts} +0 -0
  358. /package/built/test/{unit/restClient.test.d.ts → integrationChromiaNetwork/getTransactionConfirmationLevel.test.d.ts} +0 -0
  359. /package/built/test/{unit/restClientUtil.test.d.ts → integrationChromiaNetwork/getTransactionStatus.test.d.ts} +0 -0
@@ -7,693 +7,370 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
7
7
  step((generator = generator.apply(thisArg, _arguments || [])).next());
8
8
  });
9
9
  };
10
- import { createClient } from "../../../src/blockchainClient/blockchainClient";
11
- import sinon from "sinon";
12
- import { expect } from "chai";
13
- import { TxRejectedError, UnexpectedStatusError } from "../../../src/restclient/errors";
10
+ import { TxRejectedError, UnexpectedStatusError } from "../../../src/blockchainClient/errors";
14
11
  import { server } from "../../../mocks/servers";
15
12
  import { errorHandler } from "../../../mocks/handlers";
16
- import { clientConfiguredToD1 } from "../ICCF/iccfProofMaterialBuilder.test";
17
- import * as iccf from "../../../src/ICCF/IccfProofTxMaterialBuilder";
18
13
  import { AnchoringStatus, ChainConfirmationLevel, ResponseStatus, TransactionEvent, } from "../../../src/blockchainClient/enums";
19
- import { AnchoringTransactionSchema } from "../../../src/blockchainClient/validation/anchoringTransaction";
14
+ import { exampleOperation, mockBuffer, mockSignatureProvider, mockUnsignedTx, mockUnsignedMultiOperationTx, mockSignerKeyPair, CONFIGURED_POLL_COUNT, mockTransactionReceipts, mockClusterAnchoringConfirmationResponse, mockSystemAnchoringConfirmationResponse, mockGtx, unsignedNonUniqueTxWithTwoSigners, LOCAL_POOL, } from "../../common/mocks";
15
+ import { ComplexArgumentObject } from "../../common/testData";
16
+ import { getTestsClient, handleTransactionConfirmationMockEvents } from "../../common/setups";
20
17
  import * as utils from "../../../src/blockchainClient/utils";
21
- import { resolveClusterAnchoringTransactionConfirmationWithStubs } from "./helpers/sendTransaction";
22
- import { CONFIGURED_POLL_COUNT, exampleOperation, mockAnchoringTransaction, mockBuffer, mockConfirmationProof, mockStringBlockchainRid, mockStringDirectoryChainRid, mockThirtyTwoBytesBuffer, mockSignatureProvider, signerPubKey, mockUnsignedTx, signerKeyPair, CONFIGURED_POLL_INTERVAL, } from "../common/mocks";
23
- import * as gtxTool from "../../../src/gtx/gtx";
24
- import { randomBytes } from "../../../src/encryption/encryption";
25
- import { ComplexArgumentObject } from "../../integration/testData";
26
- import * as handleRequestModule from "../../../src/restclient/httpUtil";
18
+ import * as httpUtils from "../../../src/blockchainClient/httpUtil";
19
+ import { Web3PromiEvent } from "../../../src/promiEvent/promiEvents";
20
+ import { http, HttpResponse } from "msw";
21
+ import { NumberOfSignersAndSignaturesException } from "../../../src/gtx/errors";
27
22
  const rejectReason = "[bc-rid=8E:DFB4, chain-id=0] Operation 'news_feed_ch5.news_feed:make_post' failed: Expected at least two operations, make sure that you included auth";
28
- const invalidFormatRejectReason = "Operation 'news_feed_ch5.news_feed:make_post' failed: Expected at least two operations, make sure that you included auth";
29
23
  let client;
30
- const mockAnchoringClient = clientConfiguredToD1;
31
- const mockSystemAnchoringClient = clientConfiguredToD1;
32
- let getTransactionStatusStub;
33
- let getConfirmationProofStub;
34
- let getBlockAnchoringTransactionStub;
35
- let getSystemAnchoringTransactionConfirmationStub;
36
- let anchoringTransactionSchemaStub;
37
- let sendTransactionSentPromiEventDappReceived;
38
- let sendTransactionSentPromiEventDappConfirmed;
39
- let sendTransactionSentPromiEventClusterConfirmed;
40
- let sendTransactionSentPromiEventSystemConfirmed;
41
- let getDigestToSignStub;
42
- let handleRequestSpy;
43
- let handleDappConfirmationsStub;
44
- let handleSystemConfirmationsStub;
45
- const mockUnsignedMultiOperationTx = {
46
- operations: [exampleOperation, { name: "nop", args: [randomBytes(32)] }],
47
- signers: [signerPubKey],
48
- };
49
- describe("sendTransaction", () => __awaiter(void 0, void 0, void 0, function* () {
50
- before(() => __awaiter(void 0, void 0, void 0, function* () {
24
+ describe("send transactions", () => {
25
+ beforeAll(() => __awaiter(void 0, void 0, void 0, function* () {
51
26
  server.listen();
52
- client = yield createClient({
53
- nodeUrlPool: [`http://localhost`, `http://localhost`],
54
- blockchainRid: mockStringBlockchainRid,
55
- dappStatusPolling: utils.setStatusPolling({
56
- interval: CONFIGURED_POLL_INTERVAL,
57
- count: CONFIGURED_POLL_COUNT,
58
- }),
59
- clusterAnchoringStatusPolling: utils.setStatusPolling(),
60
- systemAnchoringStatusPolling: utils.setStatusPolling(),
61
- directoryChainRid: mockStringDirectoryChainRid,
62
- });
27
+ client = yield getTestsClient();
63
28
  }));
64
29
  beforeEach(() => {
65
- getConfirmationProofStub = sinon.stub(client, "getConfirmationProof");
66
- getSystemAnchoringTransactionConfirmationStub = sinon.stub(client, "getSystemAnchoringTransactionConfirmation");
67
- getBlockAnchoringTransactionStub = sinon.stub(iccf, "getBlockAnchoringTransaction");
68
- anchoringTransactionSchemaStub = sinon.stub(AnchoringTransactionSchema, "safeParse");
69
- sinon.stub(utils, "getAnchoringClientAndSystemChainRid").resolves({
70
- anchoringClient: mockAnchoringClient,
71
- systemAnchoringChainBridString: mockSystemAnchoringClient.config.blockchainRid,
30
+ jest.clearAllMocks();
31
+ jest.spyOn(utils, "getAnchoringClientAndSystemChainRid").mockResolvedValue({
32
+ anchoringClient: client,
33
+ systemAnchoringChainBridString: client.config.blockchainRid,
72
34
  });
73
- getTransactionStatusStub = sinon.stub(client, "getTransactionStatus");
74
- getDigestToSignStub = sinon.stub(gtxTool, "getDigestToSign");
75
- handleRequestSpy = sinon.spy(handleRequestModule, "default");
76
- handleDappConfirmationsStub = sinon.stub(utils, "handleDappConfirmations");
77
- handleSystemConfirmationsStub = sinon.stub(utils, "handleSystemConfirmations");
78
35
  });
79
36
  afterEach(() => {
37
+ jest.restoreAllMocks();
80
38
  server.resetHandlers();
81
- sinon.restore();
82
- sinon.reset();
83
39
  });
84
- it("should throw error if endpoint returns 400 status", () => __awaiter(void 0, void 0, void 0, function* () {
85
- server.use(errorHandler.txError);
86
- try {
87
- yield client.sendTransaction(exampleOperation);
88
- }
89
- catch (error) {
90
- expect(error).to.be.instanceOf(UnexpectedStatusError);
91
- }
92
- })).timeout(4000);
93
- it("should throw TxRejectedError with detailed error information if transaction is rejected", () => __awaiter(void 0, void 0, void 0, function* () {
94
- getTransactionStatusStub.throws(new TxRejectedError(rejectReason));
95
- server.use(errorHandler.statusRejected);
96
- try {
97
- yield client.sendTransaction(exampleOperation);
98
- }
99
- catch (error) {
100
- expect(error).to.be.instanceOf(TxRejectedError);
101
- expect(error.message).to.equal(`Transaction was rejected, ${rejectReason}`);
102
- expect(error.fullReason).to.equal(`${rejectReason}`);
103
- expect(error.shortReason).to.equal("Expected at least two operations, make sure that you included auth");
104
- expect(error.operation).to.equal("news_feed_ch5.news_feed:make_post");
105
- expect(error.rellLine).to.equal("bc-rid=8E:DFB4, chain-id=0");
106
- expect(getTransactionStatusStub.callCount).to.equal(1);
107
- }
108
- }));
109
- it("throws error if transaction gets rejected, rejectReason is not standard format and error will not containing full reason, short reason, operation and rell line", () => __awaiter(void 0, void 0, void 0, function* () {
110
- getTransactionStatusStub.throws(new TxRejectedError(invalidFormatRejectReason));
111
- server.use(errorHandler.txStatusInvalidRejectFormat);
112
- try {
113
- yield client.sendTransaction(exampleOperation);
114
- }
115
- catch (error) {
116
- console.log(error);
117
- expect(error).to.be.instanceOf(TxRejectedError);
118
- expect(error.message).to.equal(`Transaction was rejected, ${invalidFormatRejectReason}`);
119
- expect(error.fullReason).to.equal(`${invalidFormatRejectReason}`);
120
- expect(error.shortReason).to.be.undefined;
121
- expect(error.operation).to.be.undefined;
122
- expect(error.rellLine).to.be.undefined;
123
- expect(getTransactionStatusStub.callCount).to.equal(1);
124
- }
125
- }));
126
- it('should return status "Confirmed" when transaction is confirmed', () => __awaiter(void 0, void 0, void 0, function* () {
127
- const transactionReceipt = {
128
- status: ResponseStatus.Confirmed,
129
- statusCode: 200,
130
- transactionRid: mockBuffer,
131
- };
132
- getDigestToSignStub.returns(mockBuffer);
133
- getTransactionStatusStub.resolves(transactionReceipt);
134
- handleDappConfirmationsStub.resolves(transactionReceipt);
135
- const status = yield client.sendTransaction(exampleOperation);
136
- expect(status).to.deep.equal(transactionReceipt);
137
- }));
138
- it('should return status "Waiting"', () => __awaiter(void 0, void 0, void 0, function* () {
139
- const transactionReceipt = {
140
- status: ResponseStatus.Waiting,
141
- statusCode: 200,
142
- transactionRid: mockBuffer,
143
- };
144
- getDigestToSignStub.returns(mockBuffer);
145
- getTransactionStatusStub.resolves(transactionReceipt);
146
- handleDappConfirmationsStub.resolves(transactionReceipt);
147
- const status = yield client.sendTransaction(exampleOperation);
148
- expect(status).to.deep.equal(transactionReceipt);
149
- })).timeout(4000);
150
- it('should return status "Unknown"', () => __awaiter(void 0, void 0, void 0, function* () {
151
- const transactionReceipt = {
152
- status: ResponseStatus.Unknown,
153
- statusCode: 200,
154
- transactionRid: mockBuffer,
155
- };
156
- getDigestToSignStub.returns(mockBuffer);
157
- getTransactionStatusStub.resolves(transactionReceipt);
158
- handleDappConfirmationsStub.resolves(transactionReceipt);
159
- const status = yield client.sendTransaction(exampleOperation);
160
- expect(status).to.deep.equal(transactionReceipt);
161
- }));
162
- it("returns status confirmed after getting status waiting and retries until status is confirmed", () => __awaiter(void 0, void 0, void 0, function* () {
163
- const transactionReceipt = {
164
- status: ResponseStatus.Confirmed,
165
- statusCode: 200,
166
- transactionRid: mockBuffer,
167
- };
168
- getTransactionStatusStub.onCall(0).resolves({
169
- status: ResponseStatus.Unknown,
170
- statusCode: 200,
171
- transactionRid: mockBuffer,
172
- });
173
- getDigestToSignStub.returns(mockBuffer);
174
- handleDappConfirmationsStub.resolves(transactionReceipt);
175
- const status = yield client.sendTransaction(exampleOperation);
176
- expect(status).to.deep.equal(transactionReceipt);
177
- }));
178
- it("should get tx-status when `confirmationLevel` is set to Dapp", () => __awaiter(void 0, void 0, void 0, function* () {
179
- const transactionReceipt = {
180
- status: ResponseStatus.Waiting,
181
- statusCode: 200,
182
- transactionRid: mockBuffer,
183
- };
184
- getTransactionStatusStub.resolves(transactionReceipt);
185
- handleDappConfirmationsStub.resolves(transactionReceipt);
186
- yield client.sendTransaction(exampleOperation, true, undefined, ChainConfirmationLevel.Dapp);
187
- }));
188
- it("should NOT poll for a tx-status when given the flag: `doStatusPolling` set to false", () => __awaiter(void 0, void 0, void 0, function* () {
189
- const transactionReceipt = {
190
- status: ResponseStatus.Waiting,
191
- statusCode: 200,
192
- transactionRid: mockBuffer,
193
- };
194
- getDigestToSignStub.returns(mockBuffer);
195
- getTransactionStatusStub.resolves(transactionReceipt);
196
- handleDappConfirmationsStub.resolves(transactionReceipt);
197
- const result = yield client.sendTransaction(exampleOperation, false);
198
- expect(result).to.deep.equal(transactionReceipt);
199
- expect(getTransactionStatusStub.callCount).to.equal(0);
200
- }));
201
- it("should throw TxRejectedError with failedAnchoring anchoring status", () => __awaiter(void 0, void 0, void 0, function* () {
202
- handleDappConfirmationsStub.resolves({
203
- status: ResponseStatus.Confirmed,
204
- statusCode: 200,
205
- transactionRid: mockBuffer,
206
- });
207
- handleSystemConfirmationsStub.rejects(new TxRejectedError(AnchoringStatus.FailedAnchoring));
208
- try {
209
- yield client.sendTransaction(exampleOperation, true, undefined, ChainConfirmationLevel.ClusterAnchoring);
210
- }
211
- catch (error) {
212
- expect(error).to.be.instanceOf(TxRejectedError);
213
- expect(error.message).to.equal(`Transaction was rejected, ${AnchoringStatus.FailedAnchoring}`);
214
- }
215
- }));
216
- it("sends an unsigned transaction", () => __awaiter(void 0, void 0, void 0, function* () {
217
- resolveClusterAnchoringTransactionConfirmationWithStubs({
218
- transactionStatusStub: getTransactionStatusStub,
219
- confirmationProofStub: getConfirmationProofStub,
220
- blockAnchoringTransactionStub: getBlockAnchoringTransactionStub,
221
- anchoringTransactionSchemaStub: anchoringTransactionSchemaStub,
222
- systemAnchoringTransactionConfirmationStub: getSystemAnchoringTransactionConfirmationStub,
223
- digestToSignStub: getDigestToSignStub,
224
- handleDappConfirmationsStub,
225
- handleSystemConfirmationsStub,
226
- }, {
227
- sourceClient: client,
228
- anchoringClient: mockAnchoringClient,
229
- }, {
230
- transactionRid: mockBuffer,
231
- confirmationProof: mockConfirmationProof,
232
- anchoringTransaction: mockAnchoringTransaction,
233
- directoryNodeUrlPool: utils.getUrlsFromEndpoints(client.config.endpointPool),
234
- });
235
- const transactionReceipt = yield client.sendTransaction(exampleOperation);
236
- expect(transactionReceipt).to.deep.equal({
237
- status: ResponseStatus.Confirmed,
238
- statusCode: 200,
239
- transactionRid: mockBuffer,
240
- });
241
- }));
242
- it("signs and sends a transaction", () => __awaiter(void 0, void 0, void 0, function* () {
243
- resolveClusterAnchoringTransactionConfirmationWithStubs({
244
- transactionStatusStub: getTransactionStatusStub,
245
- confirmationProofStub: getConfirmationProofStub,
246
- blockAnchoringTransactionStub: getBlockAnchoringTransactionStub,
247
- anchoringTransactionSchemaStub: anchoringTransactionSchemaStub,
248
- systemAnchoringTransactionConfirmationStub: getSystemAnchoringTransactionConfirmationStub,
249
- digestToSignStub: getDigestToSignStub,
250
- handleDappConfirmationsStub,
251
- handleSystemConfirmationsStub,
252
- }, {
253
- sourceClient: client,
254
- anchoringClient: mockAnchoringClient,
255
- }, {
256
- transactionRid: mockBuffer,
257
- confirmationProof: mockConfirmationProof,
258
- anchoringTransaction: mockAnchoringTransaction,
259
- directoryNodeUrlPool: utils.getUrlsFromEndpoints(client.config.endpointPool),
260
- });
261
- const signedTx = yield client.signTransaction(mockUnsignedTx, mockSignatureProvider);
262
- const transactionReceipt = yield client.sendTransaction(signedTx, true, undefined, ChainConfirmationLevel.Dapp);
263
- expect(transactionReceipt).to.deep.equal({
264
- status: ResponseStatus.Confirmed,
265
- statusCode: 200,
266
- transactionRid: mockBuffer,
267
- });
268
- }));
269
- it("sends a transaction with multiple operations", () => __awaiter(void 0, void 0, void 0, function* () {
270
- resolveClusterAnchoringTransactionConfirmationWithStubs({
271
- transactionStatusStub: getTransactionStatusStub,
272
- confirmationProofStub: getConfirmationProofStub,
273
- blockAnchoringTransactionStub: getBlockAnchoringTransactionStub,
274
- anchoringTransactionSchemaStub: anchoringTransactionSchemaStub,
275
- systemAnchoringTransactionConfirmationStub: getSystemAnchoringTransactionConfirmationStub,
276
- digestToSignStub: getDigestToSignStub,
277
- handleDappConfirmationsStub,
278
- handleSystemConfirmationsStub,
279
- }, {
280
- sourceClient: client,
281
- anchoringClient: mockAnchoringClient,
282
- }, {
283
- transactionRid: mockBuffer,
284
- confirmationProof: mockConfirmationProof,
285
- anchoringTransaction: mockAnchoringTransaction,
286
- directoryNodeUrlPool: utils.getUrlsFromEndpoints(client.config.endpointPool),
287
- });
288
- const signedMultiOperationTx = yield client.signTransaction(mockUnsignedMultiOperationTx, mockSignatureProvider);
289
- const transactionReceipt = yield client.sendTransaction(signedMultiOperationTx);
290
- expect(transactionReceipt).to.deep.equal({
291
- status: ResponseStatus.Confirmed,
292
- statusCode: 200,
293
- transactionRid: mockBuffer,
294
- });
295
- }));
296
- it("signAndSendUniqueTransaction sends a transaction", () => __awaiter(void 0, void 0, void 0, function* () {
297
- resolveClusterAnchoringTransactionConfirmationWithStubs({
298
- transactionStatusStub: getTransactionStatusStub,
299
- confirmationProofStub: getConfirmationProofStub,
300
- blockAnchoringTransactionStub: getBlockAnchoringTransactionStub,
301
- anchoringTransactionSchemaStub: anchoringTransactionSchemaStub,
302
- systemAnchoringTransactionConfirmationStub: getSystemAnchoringTransactionConfirmationStub,
303
- digestToSignStub: getDigestToSignStub,
304
- handleDappConfirmationsStub,
305
- handleSystemConfirmationsStub,
306
- }, {
307
- sourceClient: client,
308
- anchoringClient: mockAnchoringClient,
309
- }, {
310
- transactionRid: mockBuffer,
311
- confirmationProof: mockConfirmationProof,
312
- anchoringTransaction: mockAnchoringTransaction,
313
- directoryNodeUrlPool: utils.getUrlsFromEndpoints(client.config.endpointPool),
314
- });
315
- const transactionReceipt = yield client.signAndSendUniqueTransaction(mockUnsignedTx, mockSignatureProvider);
316
- expect(transactionReceipt).to.deep.equal({
317
- status: ResponseStatus.Confirmed,
318
- statusCode: 200,
319
- transactionRid: mockBuffer,
320
- });
321
- }));
322
- it("signAndSendUniqueTransaction sends an operation", () => __awaiter(void 0, void 0, void 0, function* () {
323
- resolveClusterAnchoringTransactionConfirmationWithStubs({
324
- transactionStatusStub: getTransactionStatusStub,
325
- confirmationProofStub: getConfirmationProofStub,
326
- blockAnchoringTransactionStub: getBlockAnchoringTransactionStub,
327
- anchoringTransactionSchemaStub: anchoringTransactionSchemaStub,
328
- systemAnchoringTransactionConfirmationStub: getSystemAnchoringTransactionConfirmationStub,
329
- digestToSignStub: getDigestToSignStub,
330
- handleDappConfirmationsStub,
331
- handleSystemConfirmationsStub,
332
- }, {
333
- sourceClient: client,
334
- anchoringClient: mockAnchoringClient,
335
- }, {
336
- transactionRid: mockBuffer,
337
- confirmationProof: mockConfirmationProof,
338
- anchoringTransaction: mockAnchoringTransaction,
339
- directoryNodeUrlPool: utils.getUrlsFromEndpoints(client.config.endpointPool),
340
- });
341
- const transactionReceipt = yield client.signAndSendUniqueTransaction(exampleOperation, mockSignatureProvider);
342
- expect(transactionReceipt).to.deep.equal({
343
- status: ResponseStatus.Confirmed,
344
- statusCode: 200,
345
- transactionRid: mockBuffer,
346
- });
347
- }));
348
- it("signAndSendUniqueTransaction signs if no pubKey was provided", () => __awaiter(void 0, void 0, void 0, function* () {
349
- resolveClusterAnchoringTransactionConfirmationWithStubs({
350
- transactionStatusStub: getTransactionStatusStub,
351
- confirmationProofStub: getConfirmationProofStub,
352
- blockAnchoringTransactionStub: getBlockAnchoringTransactionStub,
353
- anchoringTransactionSchemaStub: anchoringTransactionSchemaStub,
354
- systemAnchoringTransactionConfirmationStub: getSystemAnchoringTransactionConfirmationStub,
355
- digestToSignStub: getDigestToSignStub,
356
- handleDappConfirmationsStub,
357
- handleSystemConfirmationsStub,
358
- }, {
359
- sourceClient: client,
360
- anchoringClient: mockAnchoringClient,
361
- }, {
362
- transactionRid: mockBuffer,
363
- confirmationProof: mockConfirmationProof,
364
- anchoringTransaction: mockAnchoringTransaction,
365
- directoryNodeUrlPool: utils.getUrlsFromEndpoints(client.config.endpointPool),
366
- });
367
- const transactionReceipt = yield client.signAndSendUniqueTransaction(exampleOperation, signerKeyPair);
368
- expect(transactionReceipt).to.deep.equal({
369
- status: ResponseStatus.Confirmed,
370
- statusCode: 200,
371
- transactionRid: mockBuffer,
372
- });
373
- }));
374
- it("signAndSendUniqueTransaction adds a nop", () => __awaiter(void 0, void 0, void 0, function* () {
375
- resolveClusterAnchoringTransactionConfirmationWithStubs({
376
- transactionStatusStub: getTransactionStatusStub,
377
- confirmationProofStub: getConfirmationProofStub,
378
- blockAnchoringTransactionStub: getBlockAnchoringTransactionStub,
379
- anchoringTransactionSchemaStub: anchoringTransactionSchemaStub,
380
- systemAnchoringTransactionConfirmationStub: getSystemAnchoringTransactionConfirmationStub,
381
- digestToSignStub: getDigestToSignStub,
382
- handleDappConfirmationsStub,
383
- handleSystemConfirmationsStub,
384
- }, {
385
- sourceClient: client,
386
- anchoringClient: mockAnchoringClient,
387
- }, {
388
- transactionRid: mockBuffer,
389
- confirmationProof: mockConfirmationProof,
390
- anchoringTransaction: mockAnchoringTransaction,
391
- directoryNodeUrlPool: utils.getUrlsFromEndpoints(client.config.endpointPool),
392
- });
393
- const transactionReceipt = yield client.signAndSendUniqueTransaction(exampleOperation, signerKeyPair);
394
- const transactionReceiptCopy = yield client.signAndSendUniqueTransaction(exampleOperation, signerKeyPair);
395
- const expectedResponse = {
396
- status: ResponseStatus.Confirmed,
397
- statusCode: 200,
398
- transactionRid: mockBuffer,
399
- };
400
- expect(transactionReceipt).to.deep.equal(expectedResponse);
401
- expect(transactionReceiptCopy).to.deep.equal(expectedResponse);
402
- }));
403
- it("signAndSendUniqueTransaction signs and sends a transaction with multiple operations", () => __awaiter(void 0, void 0, void 0, function* () {
404
- resolveClusterAnchoringTransactionConfirmationWithStubs({
405
- transactionStatusStub: getTransactionStatusStub,
406
- confirmationProofStub: getConfirmationProofStub,
407
- blockAnchoringTransactionStub: getBlockAnchoringTransactionStub,
408
- anchoringTransactionSchemaStub: anchoringTransactionSchemaStub,
409
- systemAnchoringTransactionConfirmationStub: getSystemAnchoringTransactionConfirmationStub,
410
- digestToSignStub: getDigestToSignStub,
411
- handleDappConfirmationsStub,
412
- handleSystemConfirmationsStub,
413
- }, {
414
- sourceClient: client,
415
- anchoringClient: mockAnchoringClient,
416
- }, {
417
- transactionRid: mockBuffer,
418
- confirmationProof: mockConfirmationProof,
419
- anchoringTransaction: mockAnchoringTransaction,
420
- directoryNodeUrlPool: utils.getUrlsFromEndpoints(client.config.endpointPool),
421
- });
422
- const transactionReceipt = yield client.signAndSendUniqueTransaction(mockUnsignedMultiOperationTx, mockSignatureProvider);
423
- expect(transactionReceipt).to.deep.equal({
424
- status: ResponseStatus.Confirmed,
425
- statusCode: 200,
426
- transactionRid: mockBuffer,
427
- });
428
- }));
429
- it("signAndSendUniqueTransaction signs and sends an operation with large complex arguments", () => __awaiter(void 0, void 0, void 0, function* () {
430
- resolveClusterAnchoringTransactionConfirmationWithStubs({
431
- transactionStatusStub: getTransactionStatusStub,
432
- confirmationProofStub: getConfirmationProofStub,
433
- blockAnchoringTransactionStub: getBlockAnchoringTransactionStub,
434
- anchoringTransactionSchemaStub: anchoringTransactionSchemaStub,
435
- systemAnchoringTransactionConfirmationStub: getSystemAnchoringTransactionConfirmationStub,
436
- digestToSignStub: getDigestToSignStub,
437
- handleDappConfirmationsStub,
438
- handleSystemConfirmationsStub,
439
- }, {
440
- sourceClient: client,
441
- anchoringClient: mockAnchoringClient,
442
- }, {
443
- transactionRid: mockBuffer,
444
- confirmationProof: mockConfirmationProof,
445
- anchoringTransaction: mockAnchoringTransaction,
446
- directoryNodeUrlPool: utils.getUrlsFromEndpoints(client.config.endpointPool),
447
- });
448
- const transactionReceipt = yield client.signAndSendUniqueTransaction({
449
- name: "set_globals",
450
- args: [
451
- ComplexArgumentObject.client_data,
452
- ComplexArgumentObject.server_data,
453
- ComplexArgumentObject.args,
454
- ],
455
- }, mockSignatureProvider);
456
- expect(transactionReceipt).to.deep.equal({
457
- status: ResponseStatus.Confirmed,
458
- statusCode: 200,
459
- transactionRid: mockBuffer,
460
- });
461
- }));
462
- it("should confirm the transaction is added in a block in the cluster anchoring chain with sendTransation", () => __awaiter(void 0, void 0, void 0, function* () {
463
- const expectedResponse = {
464
- status: AnchoringStatus.ClusterAnchored,
465
- statusCode: 200,
466
- transactionRid: mockBuffer,
467
- clusterAnchoredTx: mockAnchoringTransaction,
468
- clusterAnchoringClientBrid: mockAnchoringClient.config.blockchainRid,
469
- };
470
- resolveClusterAnchoringTransactionConfirmationWithStubs({
471
- transactionStatusStub: getTransactionStatusStub,
472
- confirmationProofStub: getConfirmationProofStub,
473
- blockAnchoringTransactionStub: getBlockAnchoringTransactionStub,
474
- anchoringTransactionSchemaStub: anchoringTransactionSchemaStub,
475
- systemAnchoringTransactionConfirmationStub: getSystemAnchoringTransactionConfirmationStub,
476
- digestToSignStub: getDigestToSignStub,
477
- handleDappConfirmationsStub,
478
- handleSystemConfirmationsStub,
479
- }, {
480
- sourceClient: client,
481
- anchoringClient: mockAnchoringClient,
482
- }, {
483
- transactionRid: mockBuffer,
484
- confirmationProof: mockConfirmationProof,
485
- anchoringTransaction: mockAnchoringTransaction,
486
- directoryNodeUrlPool: utils.getUrlsFromEndpoints(client.config.endpointPool),
487
- systemConfirmationMockResult: expectedResponse,
488
- });
489
- const result = yield client.sendTransaction(exampleOperation, true, undefined, ChainConfirmationLevel.ClusterAnchoring);
490
- expect(result).to.deep.equal(expectedResponse);
491
- }));
492
- it("should sendTransaction with one sent promiEvent when confirmation level is set to None", () => __awaiter(void 0, void 0, void 0, function* () {
493
- const transactionReceipt = {
494
- status: ResponseStatus.Waiting,
495
- statusCode: 200,
496
- transactionRid: mockBuffer,
497
- };
498
- sendTransactionSentPromiEventDappReceived = sinon.spy();
499
- resolveClusterAnchoringTransactionConfirmationWithStubs({
500
- transactionStatusStub: getTransactionStatusStub,
501
- confirmationProofStub: getConfirmationProofStub,
502
- blockAnchoringTransactionStub: getBlockAnchoringTransactionStub,
503
- anchoringTransactionSchemaStub: anchoringTransactionSchemaStub,
504
- systemAnchoringTransactionConfirmationStub: getSystemAnchoringTransactionConfirmationStub,
505
- digestToSignStub: getDigestToSignStub,
506
- handleDappConfirmationsStub,
507
- handleSystemConfirmationsStub,
508
- }, {
509
- sourceClient: client,
510
- anchoringClient: mockAnchoringClient,
511
- }, {
512
- transactionRid: mockBuffer,
513
- confirmationProof: mockConfirmationProof,
514
- anchoringTransaction: mockAnchoringTransaction,
515
- directoryNodeUrlPool: utils.getUrlsFromEndpoints(client.config.endpointPool),
516
- dappConfirmationMockResult: transactionReceipt,
517
- });
518
- const promiEvent = client.sendTransaction(exampleOperation, true, undefined, ChainConfirmationLevel.None);
519
- promiEvent.on(TransactionEvent.DappReceived, sendTransactionSentPromiEventDappReceived);
520
- const transactionResult = yield promiEvent;
521
- expect(transactionResult).to.deep.equal(transactionReceipt);
522
- }));
523
- it("should sendTransaction with two sent promiEvents when confirmation level is set to Dapp", () => __awaiter(void 0, void 0, void 0, function* () {
524
- sendTransactionSentPromiEventDappReceived = sinon.spy();
525
- sendTransactionSentPromiEventDappConfirmed = sinon.spy();
526
- resolveClusterAnchoringTransactionConfirmationWithStubs({
527
- transactionStatusStub: getTransactionStatusStub,
528
- confirmationProofStub: getConfirmationProofStub,
529
- blockAnchoringTransactionStub: getBlockAnchoringTransactionStub,
530
- anchoringTransactionSchemaStub: anchoringTransactionSchemaStub,
531
- systemAnchoringTransactionConfirmationStub: getSystemAnchoringTransactionConfirmationStub,
532
- digestToSignStub: getDigestToSignStub,
533
- handleDappConfirmationsStub,
534
- handleSystemConfirmationsStub,
535
- }, {
536
- sourceClient: client,
537
- anchoringClient: mockAnchoringClient,
538
- }, {
539
- transactionRid: mockBuffer,
540
- confirmationProof: mockConfirmationProof,
541
- anchoringTransaction: mockAnchoringTransaction,
542
- directoryNodeUrlPool: utils.getUrlsFromEndpoints(client.config.endpointPool),
543
- });
544
- const promiEvent = client.sendTransaction(exampleOperation, true, undefined, ChainConfirmationLevel.Dapp);
545
- promiEvent.on(TransactionEvent.DappReceived, sendTransactionSentPromiEventDappReceived);
546
- promiEvent.on(TransactionEvent.DappConfirmed, sendTransactionSentPromiEventDappConfirmed);
547
- const transactionResult = yield promiEvent;
548
- const transactionReceipt = {
549
- status: ResponseStatus.Confirmed,
550
- statusCode: 200,
551
- transactionRid: mockBuffer,
552
- };
553
- expect(transactionResult).to.deep.equal(transactionReceipt);
554
- }));
555
- it("should sendTransaction with three sent promiEvents when confirmation level is set to ClusterAnchoringChain", () => __awaiter(void 0, void 0, void 0, function* () {
556
- sendTransactionSentPromiEventDappReceived = sinon.spy();
557
- sendTransactionSentPromiEventDappConfirmed = sinon.spy();
558
- sendTransactionSentPromiEventClusterConfirmed = sinon.spy();
559
- const transactionReceipt = {
560
- status: AnchoringStatus.ClusterAnchored,
561
- statusCode: 200,
562
- transactionRid: mockBuffer,
563
- clusterAnchoredTx: mockAnchoringTransaction,
564
- clusterAnchoringClientBrid: mockAnchoringClient.config.blockchainRid,
565
- };
566
- resolveClusterAnchoringTransactionConfirmationWithStubs({
567
- transactionStatusStub: getTransactionStatusStub,
568
- confirmationProofStub: getConfirmationProofStub,
569
- blockAnchoringTransactionStub: getBlockAnchoringTransactionStub,
570
- anchoringTransactionSchemaStub: anchoringTransactionSchemaStub,
571
- systemAnchoringTransactionConfirmationStub: getSystemAnchoringTransactionConfirmationStub,
572
- digestToSignStub: getDigestToSignStub,
573
- handleDappConfirmationsStub,
574
- handleSystemConfirmationsStub,
575
- }, {
576
- sourceClient: client,
577
- anchoringClient: mockAnchoringClient,
578
- }, {
579
- transactionRid: mockBuffer,
580
- confirmationProof: mockConfirmationProof,
581
- anchoringTransaction: mockAnchoringTransaction,
582
- directoryNodeUrlPool: utils.getUrlsFromEndpoints(client.config.endpointPool),
583
- systemConfirmationMockResult: transactionReceipt,
584
- });
585
- const promiEvent = client.sendTransaction(exampleOperation, true, undefined, ChainConfirmationLevel.ClusterAnchoring);
586
- promiEvent.on(TransactionEvent.DappReceived, sendTransactionSentPromiEventDappReceived);
587
- promiEvent.on(TransactionEvent.DappConfirmed, sendTransactionSentPromiEventDappConfirmed);
588
- promiEvent.on(TransactionEvent.ClusterAnchoringConfirmation, sendTransactionSentPromiEventClusterConfirmed);
589
- const transactionResult = yield promiEvent;
590
- expect(transactionResult).to.deep.equal(transactionReceipt);
591
- }));
592
- it("should sendTransaction with four sent promiEvents when confirmation level is set to SystemAnchoring", () => __awaiter(void 0, void 0, void 0, function* () {
593
- sendTransactionSentPromiEventDappReceived = sinon.spy();
594
- sendTransactionSentPromiEventDappConfirmed = sinon.spy();
595
- sendTransactionSentPromiEventClusterConfirmed = sinon.spy();
596
- sendTransactionSentPromiEventSystemConfirmed = sinon.spy();
597
- const transactionReceipt = {
598
- status: AnchoringStatus.SystemAnchored,
599
- statusCode: 200,
600
- transactionRid: mockBuffer,
601
- clusterAnchoredTx: mockAnchoringTransaction,
602
- clusterAnchoringClientBrid: mockAnchoringClient.config.blockchainRid,
603
- systemAnchoredTx: mockAnchoringTransaction,
604
- systemAnchoringClientBrid: mockSystemAnchoringClient.config.blockchainRid,
605
- };
606
- resolveClusterAnchoringTransactionConfirmationWithStubs({
607
- transactionStatusStub: getTransactionStatusStub,
608
- confirmationProofStub: getConfirmationProofStub,
609
- blockAnchoringTransactionStub: getBlockAnchoringTransactionStub,
610
- anchoringTransactionSchemaStub: anchoringTransactionSchemaStub,
611
- systemAnchoringTransactionConfirmationStub: getSystemAnchoringTransactionConfirmationStub,
612
- digestToSignStub: getDigestToSignStub,
613
- handleDappConfirmationsStub,
614
- handleSystemConfirmationsStub,
615
- }, {
616
- sourceClient: client,
617
- anchoringClient: mockAnchoringClient,
618
- }, {
619
- transactionRid: mockBuffer,
620
- confirmationProof: mockConfirmationProof,
621
- anchoringTransaction: mockAnchoringTransaction,
622
- directoryNodeUrlPool: utils.getUrlsFromEndpoints(client.config.endpointPool),
623
- systemConfirmationMockResult: transactionReceipt,
624
- });
625
- const promiEvent = client.sendTransaction(exampleOperation, true, undefined, ChainConfirmationLevel.SystemAnchoring);
626
- const transactionResult = yield promiEvent;
627
- expect(transactionResult).to.deep.equal(transactionReceipt);
628
- }));
629
- it("should fail to confirm the transaction in the anchoring chain", () => __awaiter(void 0, void 0, void 0, function* () {
630
- getTransactionStatusStub.resolves({
631
- status: ResponseStatus.Confirmed,
632
- statusCode: 200,
633
- transactionRid: mockBuffer,
634
- });
635
- getConfirmationProofStub
636
- .withArgs(mockThirtyTwoBytesBuffer)
637
- .rejects(new Error("Cluster anchoring chain confirmation failed: fetch failed"));
638
- try {
639
- yield client.sendTransaction(exampleOperation);
640
- throw new Error("Cluster anchoring chain confirmation failed: fetch failed");
641
- }
642
- catch (error) {
643
- expect(error.message).to.equal("Cluster anchoring chain confirmation failed: fetch failed");
644
- }
645
- }));
646
- it("retries default number of times", () => __awaiter(void 0, void 0, void 0, function* () {
647
- resolveClusterAnchoringTransactionConfirmationWithStubs({
648
- transactionStatusStub: getTransactionStatusStub,
649
- confirmationProofStub: getConfirmationProofStub,
650
- blockAnchoringTransactionStub: getBlockAnchoringTransactionStub,
651
- anchoringTransactionSchemaStub: anchoringTransactionSchemaStub,
652
- systemAnchoringTransactionConfirmationStub: getSystemAnchoringTransactionConfirmationStub,
653
- digestToSignStub: getDigestToSignStub,
654
- handleDappConfirmationsStub,
655
- handleSystemConfirmationsStub,
656
- }, {
657
- sourceClient: client,
658
- anchoringClient: mockAnchoringClient,
659
- }, {
660
- transactionRid: mockBuffer,
661
- confirmationProof: mockConfirmationProof,
662
- anchoringTransaction: mockAnchoringTransaction,
663
- directoryNodeUrlPool: utils.getUrlsFromEndpoints(client.config.endpointPool),
664
- });
665
- try {
666
- yield client.sendTransaction(exampleOperation);
667
- }
668
- catch (error) {
669
- expect(handleRequestSpy.callCount).to.equal(9);
670
- }
671
- }));
672
- it("retries default number of times", () => __awaiter(void 0, void 0, void 0, function* () {
673
- resolveClusterAnchoringTransactionConfirmationWithStubs({
674
- transactionStatusStub: getTransactionStatusStub,
675
- confirmationProofStub: getConfirmationProofStub,
676
- blockAnchoringTransactionStub: getBlockAnchoringTransactionStub,
677
- anchoringTransactionSchemaStub: anchoringTransactionSchemaStub,
678
- systemAnchoringTransactionConfirmationStub: getSystemAnchoringTransactionConfirmationStub,
679
- digestToSignStub: getDigestToSignStub,
680
- handleDappConfirmationsStub,
681
- handleSystemConfirmationsStub,
682
- }, {
683
- sourceClient: client,
684
- anchoringClient: mockAnchoringClient,
685
- }, {
686
- transactionRid: mockBuffer,
687
- confirmationProof: mockConfirmationProof,
688
- anchoringTransaction: mockAnchoringTransaction,
689
- directoryNodeUrlPool: utils.getUrlsFromEndpoints(client.config.endpointPool),
690
- });
691
- try {
692
- yield client.signAndSendUniqueTransaction(exampleOperation, signerKeyPair);
693
- }
694
- catch (error) {
695
- expect(handleRequestSpy.callCount).to.equal(9);
696
- }
697
- }));
698
- }));
40
+ describe("sendTransaction", () => {
41
+ it("takes a callback", () => __awaiter(void 0, void 0, void 0, function* () {
42
+ const mockCallback = jest.fn();
43
+ yield client.sendTransaction(exampleOperation, true, mockCallback);
44
+ expect(mockCallback).toHaveBeenCalled();
45
+ expect(mockCallback).toHaveBeenCalledWith(null, mockTransactionReceipts.waiting);
46
+ }));
47
+ it("throws an error if endpoint returns 400 status", () => __awaiter(void 0, void 0, void 0, function* () {
48
+ server.use(errorHandler.txError);
49
+ yield expect(client.sendTransaction(exampleOperation)).rejects.toThrow(new UnexpectedStatusError(400, '{"error": "Could not parse JSON"}'));
50
+ }));
51
+ it("throws TxRejectedError with detailed error information if transaction is rejected", () => __awaiter(void 0, void 0, void 0, function* () {
52
+ server.use(errorHandler.statusRejected);
53
+ yield expect(client.sendTransaction(exampleOperation)).rejects.toMatchObject({
54
+ fullReason: rejectReason,
55
+ shortReason: "Expected at least two operations, make sure that you included auth",
56
+ rellLine: "bc-rid=8E:DFB4, chain-id=0",
57
+ operation: "news_feed_ch5.news_feed:make_post",
58
+ });
59
+ }));
60
+ it("throws error if transaction gets rejected, rejectReason is not standard format and error will not contain full reason, short reason, operation and rell line", () => __awaiter(void 0, void 0, void 0, function* () {
61
+ server.use(errorHandler.txStatusInvalidRejectFormat);
62
+ const invalidFormatRejectReason = "Operation 'news_feed_ch5.news_feed:make_post' failed: Expected at least two operations, make sure that you included auth";
63
+ yield expect(client.sendTransaction(exampleOperation)).rejects.toMatchObject({
64
+ fullReason: invalidFormatRejectReason,
65
+ shortReason: undefined,
66
+ rellLine: undefined,
67
+ operation: undefined,
68
+ });
69
+ }));
70
+ it("returns status Confirmed when transaction is confirmed in Dapp", () => __awaiter(void 0, void 0, void 0, function* () {
71
+ const response = yield client.sendTransaction(exampleOperation);
72
+ expect(response).toEqual(mockTransactionReceipts.confirmed);
73
+ }));
74
+ it("returns status Waiting when transaction is waiting and reaches configured poll count", () => __awaiter(void 0, void 0, void 0, function* () {
75
+ const clientWithConfiguredDappPollCount = yield getTestsClient({
76
+ dappStatusPolling: utils.setStatusPolling({
77
+ count: CONFIGURED_POLL_COUNT,
78
+ }),
79
+ });
80
+ const getTransactionStatusSpy = jest.spyOn(clientWithConfiguredDappPollCount, "getTransactionStatus");
81
+ server.use(errorHandler.statusWaiting);
82
+ const response = yield clientWithConfiguredDappPollCount.sendTransaction(exampleOperation);
83
+ expect(response).toEqual(mockTransactionReceipts.waiting);
84
+ expect(getTransactionStatusSpy).toHaveBeenCalledTimes(CONFIGURED_POLL_COUNT);
85
+ }));
86
+ it("returns status Unknown when transaction status is unknown and reaches configured poll count", () => __awaiter(void 0, void 0, void 0, function* () {
87
+ const clientWithConfiguredDappPollCount = yield getTestsClient({
88
+ dappStatusPolling: utils.setStatusPolling({
89
+ count: CONFIGURED_POLL_COUNT,
90
+ }),
91
+ });
92
+ const getTransactionStatusSpy = jest.spyOn(clientWithConfiguredDappPollCount, "getTransactionStatus");
93
+ server.use(errorHandler.statusUnknown);
94
+ const response = yield clientWithConfiguredDappPollCount.sendTransaction(exampleOperation);
95
+ expect(response).toEqual(mockTransactionReceipts.unknown);
96
+ expect(getTransactionStatusSpy).toHaveBeenCalledTimes(CONFIGURED_POLL_COUNT);
97
+ }));
98
+ it("get tx-status when ConfirmationLevel is set to Dapp", () => __awaiter(void 0, void 0, void 0, function* () {
99
+ const response = yield client.sendTransaction(exampleOperation, true, undefined, ChainConfirmationLevel.Dapp);
100
+ expect(response).toEqual(mockTransactionReceipts.confirmed);
101
+ }));
102
+ it("does NOT poll for tx-status when doStatusPolling flag is false", () => __awaiter(void 0, void 0, void 0, function* () {
103
+ const getTransactionStatusSpy = jest.spyOn(client, "getTransactionStatus");
104
+ const result = yield client.sendTransaction(exampleOperation, false);
105
+ expect(result).toEqual(mockTransactionReceipts.pending);
106
+ expect(getTransactionStatusSpy).not.toHaveBeenCalled();
107
+ }));
108
+ it("throws TxRejectedError with FailedAnchoring Anchoring Status", () => __awaiter(void 0, void 0, void 0, function* () {
109
+ yield expect(client.sendTransaction(exampleOperation, true, undefined, ChainConfirmationLevel.ClusterAnchoring)).rejects.toThrow(new TxRejectedError(AnchoringStatus.FailedAnchoring));
110
+ }));
111
+ it("sends an unsigned transaction and receives dapp confirmed status", () => __awaiter(void 0, void 0, void 0, function* () {
112
+ const transactionReceipt = yield client.sendTransaction(exampleOperation);
113
+ expect(transactionReceipt).toEqual(mockTransactionReceipts.confirmed);
114
+ }));
115
+ it("throws a NumberOfSignersAndSignaturesException if signers and signatures array have different size", () => __awaiter(void 0, void 0, void 0, function* () {
116
+ const signedTransaction = yield client.signTransaction(unsignedNonUniqueTxWithTwoSigners, mockSignatureProvider);
117
+ yield expect(client.sendTransaction(signedTransaction)).rejects.toThrow(NumberOfSignersAndSignaturesException);
118
+ }));
119
+ it("signs and sends a transaction", () => __awaiter(void 0, void 0, void 0, function* () {
120
+ const mockSignedTransaction = mockBuffer;
121
+ jest.spyOn(client, "signTransaction").mockResolvedValue(mockSignedTransaction);
122
+ jest.spyOn(utils, "getGTXFromBufferOrTransactionOrOperation").mockReturnValue(mockGtx);
123
+ jest.spyOn(client, "signTransaction").mockResolvedValue(mockSignedTransaction);
124
+ jest
125
+ .spyOn(utils, "handleDappConfirmations")
126
+ .mockResolvedValue(mockTransactionReceipts.confirmed);
127
+ const transactionReceipt = yield client.sendTransaction(mockSignedTransaction);
128
+ expect(transactionReceipt).toEqual(mockTransactionReceipts.confirmed);
129
+ }));
130
+ it("sends a transaction with multiple operations", () => __awaiter(void 0, void 0, void 0, function* () {
131
+ const signedMultiOperationTx = mockBuffer;
132
+ jest.spyOn(utils, "getGTXFromBufferOrTransactionOrOperation").mockReturnValue(mockGtx);
133
+ jest.spyOn(client, "signTransaction").mockResolvedValue(signedMultiOperationTx);
134
+ jest
135
+ .spyOn(utils, "handleDappConfirmations")
136
+ .mockResolvedValue(mockTransactionReceipts.confirmed);
137
+ const transactionReceipt = yield client.sendTransaction(signedMultiOperationTx);
138
+ expect(transactionReceipt).toEqual(mockTransactionReceipts.confirmed);
139
+ }));
140
+ it("receives a Cluster Anchoring Confirmation", () => __awaiter(void 0, void 0, void 0, function* () {
141
+ jest
142
+ .spyOn(utils, "handleDappConfirmations")
143
+ .mockResolvedValue(mockTransactionReceipts.confirmed);
144
+ jest
145
+ .spyOn(utils, "handleSystemConfirmations")
146
+ .mockResolvedValue(mockClusterAnchoringConfirmationResponse);
147
+ const result = yield client.sendTransaction(exampleOperation, true, undefined, ChainConfirmationLevel.ClusterAnchoring);
148
+ expect(result).toEqual(mockClusterAnchoringConfirmationResponse);
149
+ }));
150
+ it("receives a System Anchoring Confirmation", () => __awaiter(void 0, void 0, void 0, function* () {
151
+ jest
152
+ .spyOn(utils, "handleDappConfirmations")
153
+ .mockResolvedValue(mockTransactionReceipts.confirmed);
154
+ jest
155
+ .spyOn(utils, "handleSystemConfirmations")
156
+ .mockResolvedValue(mockSystemAnchoringConfirmationResponse);
157
+ const result = yield client.sendTransaction(exampleOperation, true, undefined, ChainConfirmationLevel.SystemAnchoring);
158
+ expect(result).toEqual(mockSystemAnchoringConfirmationResponse);
159
+ }));
160
+ it("triggers DappReceived event when ConfirmationLevel is None", () => __awaiter(void 0, void 0, void 0, function* () {
161
+ handleTransactionConfirmationMockEvents([
162
+ {
163
+ eventToEmit: TransactionEvent.DappReceived,
164
+ eventResolution: mockTransactionReceipts.waiting,
165
+ },
166
+ ]);
167
+ const promiEvent = client.sendTransaction(exampleOperation, true, undefined, ChainConfirmationLevel.None);
168
+ const promiEventSpy = jest.spyOn(promiEvent, "emit");
169
+ yield expect(promiEvent).resolves.toEqual(mockTransactionReceipts.waiting);
170
+ expect(promiEventSpy).toHaveBeenCalledTimes(1);
171
+ expect(promiEventSpy).toHaveBeenCalledWith(TransactionEvent.DappReceived, mockTransactionReceipts.waiting);
172
+ }));
173
+ it("triggers DappReceived and DappConfirmed events when Confirmation level is set to Dapp", () => __awaiter(void 0, void 0, void 0, function* () {
174
+ handleTransactionConfirmationMockEvents([
175
+ {
176
+ eventToEmit: TransactionEvent.DappReceived,
177
+ eventResolution: mockTransactionReceipts.waiting,
178
+ },
179
+ {
180
+ eventToEmit: TransactionEvent.DappConfirmed,
181
+ eventResolution: mockTransactionReceipts.confirmed,
182
+ },
183
+ ]);
184
+ const promiEvent = client.sendTransaction(exampleOperation, true, undefined, ChainConfirmationLevel.Dapp);
185
+ const promiEventSpy = jest.spyOn(promiEvent, "emit");
186
+ yield expect(promiEvent).resolves.toEqual(mockTransactionReceipts.confirmed);
187
+ expect(promiEventSpy).toHaveBeenCalledTimes(2);
188
+ expect(promiEventSpy).toHaveBeenCalledWith(TransactionEvent.DappReceived, mockTransactionReceipts.waiting);
189
+ expect(promiEventSpy).toHaveBeenCalledWith(TransactionEvent.DappConfirmed, mockTransactionReceipts.confirmed);
190
+ }));
191
+ it("triggers DappReceived, DappConfirmed and ClusterAnchoringConfirmation events when Confirmation level is set to ClusterAnchoringChain", () => __awaiter(void 0, void 0, void 0, function* () {
192
+ handleTransactionConfirmationMockEvents([
193
+ {
194
+ eventToEmit: TransactionEvent.DappReceived,
195
+ eventResolution: mockTransactionReceipts.waiting,
196
+ },
197
+ {
198
+ eventToEmit: TransactionEvent.DappConfirmed,
199
+ eventResolution: mockTransactionReceipts.confirmed,
200
+ },
201
+ {
202
+ eventToEmit: TransactionEvent.ClusterAnchoringConfirmation,
203
+ eventResolution: mockClusterAnchoringConfirmationResponse,
204
+ },
205
+ ]);
206
+ const promiEvent = client.sendTransaction(exampleOperation, true, undefined, ChainConfirmationLevel.ClusterAnchoring);
207
+ const promiEventSpy = jest.spyOn(promiEvent, "emit");
208
+ yield expect(promiEvent).resolves.toEqual(mockClusterAnchoringConfirmationResponse);
209
+ expect(promiEventSpy).toHaveBeenCalledTimes(3);
210
+ expect(promiEventSpy).toHaveBeenCalledWith(TransactionEvent.DappReceived, mockTransactionReceipts.waiting);
211
+ expect(promiEventSpy).toHaveBeenCalledWith(TransactionEvent.DappConfirmed, mockTransactionReceipts.confirmed);
212
+ expect(promiEventSpy).toHaveBeenCalledWith(TransactionEvent.ClusterAnchoringConfirmation, mockClusterAnchoringConfirmationResponse);
213
+ }));
214
+ it("triggers DappReceived, DappConfirmed, ClusterAnchoringConfirmation and SystemAnchoringConfirmation events when Confirmation level is set to SystemAnchoring", () => __awaiter(void 0, void 0, void 0, function* () {
215
+ handleTransactionConfirmationMockEvents([
216
+ {
217
+ eventToEmit: TransactionEvent.DappReceived,
218
+ eventResolution: mockTransactionReceipts.waiting,
219
+ },
220
+ {
221
+ eventToEmit: TransactionEvent.DappConfirmed,
222
+ eventResolution: mockTransactionReceipts.confirmed,
223
+ },
224
+ {
225
+ eventToEmit: TransactionEvent.ClusterAnchoringConfirmation,
226
+ eventResolution: mockClusterAnchoringConfirmationResponse,
227
+ },
228
+ {
229
+ eventToEmit: TransactionEvent.SystemAnchoringConfirmation,
230
+ eventResolution: mockSystemAnchoringConfirmationResponse,
231
+ },
232
+ ]);
233
+ const promiEvent = client.sendTransaction(exampleOperation, true, undefined, ChainConfirmationLevel.SystemAnchoring);
234
+ const promiEventSpy = jest.spyOn(promiEvent, "emit");
235
+ yield expect(promiEvent).resolves.toEqual(mockSystemAnchoringConfirmationResponse);
236
+ expect(promiEventSpy).toHaveBeenCalledTimes(4);
237
+ expect(promiEventSpy).toHaveBeenCalledWith(TransactionEvent.DappReceived, mockTransactionReceipts.waiting);
238
+ expect(promiEventSpy).toHaveBeenCalledWith(TransactionEvent.DappConfirmed, mockTransactionReceipts.confirmed);
239
+ expect(promiEventSpy).toHaveBeenCalledWith(TransactionEvent.ClusterAnchoringConfirmation, mockClusterAnchoringConfirmationResponse);
240
+ expect(promiEventSpy).toHaveBeenCalledWith(TransactionEvent.SystemAnchoringConfirmation, mockSystemAnchoringConfirmationResponse);
241
+ }));
242
+ it("throws TxRejectedError with message FailedAnchoring", () => __awaiter(void 0, void 0, void 0, function* () {
243
+ jest
244
+ .spyOn(client, "getClusterAnchoringTransactionConfirmation")
245
+ .mockResolvedValue(AnchoringStatus.FailedAnchoring);
246
+ yield expect(client.sendTransaction(exampleOperation, true, undefined, ChainConfirmationLevel.ClusterAnchoring)).rejects.toThrow(new TxRejectedError(AnchoringStatus.FailedAnchoring));
247
+ }));
248
+ it("retries default number of times", () => __awaiter(void 0, void 0, void 0, function* () {
249
+ const handleRequestSpy = jest.spyOn(httpUtils, "handleRequest");
250
+ try {
251
+ yield client.sendTransaction(exampleOperation);
252
+ }
253
+ catch (error) {
254
+ expect(error).not.toBeNull();
255
+ expect(handleRequestSpy).toHaveBeenCalledTimes(9);
256
+ }
257
+ }), 20000);
258
+ it("returns a PromiEvent", () => __awaiter(void 0, void 0, void 0, function* () {
259
+ jest.spyOn(client, "sendTransaction").mockImplementation(() => {
260
+ return new Web3PromiEvent(() => undefined);
261
+ });
262
+ const promiEvent = client.sendTransaction(exampleOperation);
263
+ expect(promiEvent).toBeInstanceOf(Web3PromiEvent);
264
+ expect(typeof promiEvent.then).toBe("function");
265
+ expect(typeof promiEvent.catch).toBe("function");
266
+ expect(typeof promiEvent.finally).toBe("function");
267
+ expect(typeof promiEvent.on).toBe("function");
268
+ expect(typeof promiEvent.once).toBe("function");
269
+ }));
270
+ });
271
+ describe("signAndSendUniqueTransaction", () => {
272
+ it("takes a callback", () => __awaiter(void 0, void 0, void 0, function* () {
273
+ const mockCallback = jest.fn();
274
+ jest.spyOn(client, "signTransaction").mockResolvedValue(mockBuffer);
275
+ const mockPromiEvent = new Web3PromiEvent(resolve => {
276
+ mockCallback(null, mockTransactionReceipts.waiting);
277
+ resolve(mockTransactionReceipts.confirmed);
278
+ });
279
+ jest.spyOn(client, "sendTransaction").mockImplementation(() => mockPromiEvent);
280
+ yield client.signAndSendUniqueTransaction(exampleOperation, mockSignatureProvider, true, mockCallback);
281
+ expect(mockCallback).toHaveBeenCalled();
282
+ expect(mockCallback).toHaveBeenCalledWith(null, mockTransactionReceipts.waiting);
283
+ }));
284
+ it("signs and sends a transaction", () => __awaiter(void 0, void 0, void 0, function* () {
285
+ jest.spyOn(client, "signTransaction").mockResolvedValue(mockBuffer);
286
+ const mockPromiEvent = new Web3PromiEvent(resolve => {
287
+ resolve(mockTransactionReceipts.confirmed);
288
+ });
289
+ jest.spyOn(client, "sendTransaction").mockImplementation(() => mockPromiEvent);
290
+ const transactionReceipt = yield client.signAndSendUniqueTransaction(mockUnsignedTx, mockSignatureProvider);
291
+ expect(transactionReceipt).toEqual(mockTransactionReceipts.confirmed);
292
+ }));
293
+ it("sends an operation", () => __awaiter(void 0, void 0, void 0, function* () {
294
+ jest.spyOn(client, "signTransaction").mockResolvedValue(mockBuffer);
295
+ const mockPromiEvent = new Web3PromiEvent(resolve => {
296
+ resolve(mockTransactionReceipts.confirmed);
297
+ });
298
+ jest.spyOn(client, "sendTransaction").mockImplementation(() => mockPromiEvent);
299
+ const transactionReceipt = yield client.signAndSendUniqueTransaction(exampleOperation, mockSignatureProvider);
300
+ expect(transactionReceipt).toEqual(mockTransactionReceipts.confirmed);
301
+ }));
302
+ it("signs if no pubKey was provided", () => __awaiter(void 0, void 0, void 0, function* () {
303
+ jest.spyOn(client, "signTransaction").mockResolvedValue(mockBuffer);
304
+ const mockPromiEvent = new Web3PromiEvent(resolve => {
305
+ resolve(mockTransactionReceipts.confirmed);
306
+ });
307
+ jest.spyOn(client, "sendTransaction").mockImplementation(() => mockPromiEvent);
308
+ const transactionReceipt = yield client.signAndSendUniqueTransaction(exampleOperation, mockSignerKeyPair);
309
+ expect(transactionReceipt).toEqual(mockTransactionReceipts.confirmed);
310
+ }));
311
+ it("adds a nop", () => __awaiter(void 0, void 0, void 0, function* () {
312
+ jest.spyOn(client, "signTransaction").mockResolvedValue(mockBuffer);
313
+ const mockPromiEvent = new Web3PromiEvent(resolve => {
314
+ resolve(mockTransactionReceipts.confirmed);
315
+ });
316
+ jest.spyOn(client, "sendTransaction").mockImplementation(() => mockPromiEvent);
317
+ const transactionReceipt = yield client.signAndSendUniqueTransaction(exampleOperation, mockSignerKeyPair);
318
+ const transactionReceiptCopy = yield client.signAndSendUniqueTransaction(exampleOperation, mockSignerKeyPair);
319
+ expect(transactionReceipt).toEqual(mockTransactionReceipts.confirmed);
320
+ expect(transactionReceiptCopy).toEqual(mockTransactionReceipts.confirmed);
321
+ }));
322
+ it("signs and sends a transaction with multiple operations", () => __awaiter(void 0, void 0, void 0, function* () {
323
+ jest.spyOn(client, "signTransaction").mockResolvedValue(mockBuffer);
324
+ const mockPromiEvent = new Web3PromiEvent(resolve => {
325
+ resolve(mockTransactionReceipts.confirmed);
326
+ });
327
+ jest.spyOn(client, "sendTransaction").mockImplementation(() => mockPromiEvent);
328
+ const transactionReceipt = yield client.signAndSendUniqueTransaction(mockUnsignedMultiOperationTx, mockSignatureProvider);
329
+ expect(transactionReceipt).toEqual(mockTransactionReceipts.confirmed);
330
+ }));
331
+ it("signs and sends an operation with large complex arguments", () => __awaiter(void 0, void 0, void 0, function* () {
332
+ jest.spyOn(client, "signTransaction").mockResolvedValue(mockBuffer);
333
+ const mockPromiEvent = new Web3PromiEvent(resolve => {
334
+ resolve(mockTransactionReceipts.confirmed);
335
+ });
336
+ jest.spyOn(client, "sendTransaction").mockImplementation(() => mockPromiEvent);
337
+ const transactionReceipt = yield client.signAndSendUniqueTransaction({
338
+ name: "set_globals",
339
+ args: [
340
+ ComplexArgumentObject.client_data,
341
+ ComplexArgumentObject.server_data,
342
+ ComplexArgumentObject.args,
343
+ ],
344
+ }, mockSignatureProvider);
345
+ expect(transactionReceipt).toEqual(mockTransactionReceipts.confirmed);
346
+ }));
347
+ it("retries default number of times", () => __awaiter(void 0, void 0, void 0, function* () {
348
+ const handleRequestSpy = jest.spyOn(httpUtils, "handleRequest");
349
+ server.use(http.get(`${LOCAL_POOL}/tx/:blockchainRid/:txHash/status`, () => __awaiter(void 0, void 0, void 0, function* () {
350
+ return HttpResponse.json({
351
+ status: ResponseStatus.Confirmed,
352
+ });
353
+ })));
354
+ try {
355
+ yield client.signAndSendUniqueTransaction(exampleOperation, mockSignerKeyPair);
356
+ }
357
+ catch (error) {
358
+ expect(error).not.toBeNull();
359
+ expect(handleRequestSpy).toHaveBeenCalledTimes(9);
360
+ }
361
+ }));
362
+ it("returns a PromiEvent", () => __awaiter(void 0, void 0, void 0, function* () {
363
+ jest.spyOn(client, "signAndSendUniqueTransaction").mockImplementation(() => {
364
+ return new Web3PromiEvent(() => undefined);
365
+ });
366
+ const promiEvent = client.signAndSendUniqueTransaction(exampleOperation, mockSignatureProvider);
367
+ expect(promiEvent).toBeInstanceOf(Web3PromiEvent);
368
+ expect(typeof promiEvent.then).toBe("function");
369
+ expect(typeof promiEvent.catch).toBe("function");
370
+ expect(typeof promiEvent.finally).toBe("function");
371
+ expect(typeof promiEvent.on).toBe("function");
372
+ expect(typeof promiEvent.once).toBe("function");
373
+ }));
374
+ });
375
+ });
699
376
  //# sourceMappingURL=sendTransaction.test.js.map