@dashevo/wasm-dpp 0.24.0-dev.12 → 0.24.0-dev.14

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 (245) hide show
  1. package/.mocharc.yml +1 -1
  2. package/Cargo.toml +5 -2
  3. package/README.md +5 -1
  4. package/dist/index.js +1 -1
  5. package/dist/index.js.LICENSE.txt +9 -0
  6. package/dist/wasm/wasm_dpp.d.ts +3397 -1237
  7. package/karma.conf.js +5 -0
  8. package/lib/identifier/patchIdentifier.ts +5 -4
  9. package/lib/index.ts +1 -1
  10. package/lib/test/bootstrap.js +5 -0
  11. package/lib/test/fixtures/getDataContractFixture.js +267 -0
  12. package/lib/test/fixtures/getDocumentsFixture.js +43 -0
  13. package/lib/test/mocks/createStateRepositoryMock.js +64 -0
  14. package/lib/test/mocks/getBlsAdapterMock.js +51 -0
  15. package/package.json +11 -8
  16. package/src/bls_adapter.rs +17 -1
  17. package/src/buffer.rs +3 -0
  18. package/src/dash_platform_protocol.rs +107 -10
  19. package/src/data_contract/data_contract.rs +59 -10
  20. package/src/data_contract/data_contract_facade.rs +128 -0
  21. package/src/data_contract/errors/invalid_data_contract.rs +16 -16
  22. package/src/data_contract/errors/invalid_document_type.rs +8 -8
  23. package/src/data_contract/errors/mod.rs +10 -16
  24. package/src/data_contract/index.rs +56 -1
  25. package/src/data_contract/mod.rs +4 -0
  26. package/src/data_contract/state_transition/data_contract_create_transition/apply.rs +1 -1
  27. package/src/data_contract/state_transition/data_contract_create_transition/mod.rs +41 -10
  28. package/src/data_contract/state_transition/data_contract_create_transition/validation.rs +35 -4
  29. package/src/data_contract/state_transition/data_contract_update_transition/apply.rs +1 -1
  30. package/src/data_contract/state_transition/data_contract_update_transition/mod.rs +20 -7
  31. package/src/data_contract/state_transition/data_contract_update_transition/validation.rs +47 -11
  32. package/src/data_contract_factory/data_contract_factory.rs +19 -17
  33. package/src/data_trigger/data_trigger_execution_context.rs +95 -0
  34. package/src/data_trigger/data_trigger_execution_result.rs +48 -0
  35. package/src/data_trigger/execute_data_triggers_factory.rs +60 -0
  36. package/src/data_trigger/get_data_triggers_factory.rs +65 -0
  37. package/src/data_trigger/mod.rs +121 -0
  38. package/src/document/document_facade.rs +125 -0
  39. package/src/document/errors/invalid_document_error.rs +10 -9
  40. package/src/document/errors/invalid_initial_revision_error.rs +1 -1
  41. package/src/document/errors/mismatch_owners_ids_error.rs +14 -4
  42. package/src/document/errors/mod.rs +17 -13
  43. package/src/document/errors/no_documents_supplied_error.rs +4 -4
  44. package/src/document/factory.rs +257 -0
  45. package/src/document/fetch_and_validate_data_contract.rs +77 -0
  46. package/src/document/generate_document_id.rs +17 -0
  47. package/src/document/mod.rs +311 -37
  48. package/src/document/state_transition/document_batch_transition/apply_document_batch_transition.rs +22 -0
  49. package/src/document/state_transition/document_batch_transition/document_transition/document_create_transition.rs +253 -1
  50. package/src/document/state_transition/document_batch_transition/document_transition/document_delete_transition.rs +60 -1
  51. package/src/document/state_transition/document_batch_transition/document_transition/document_replace_transition.rs +263 -0
  52. package/src/document/state_transition/document_batch_transition/document_transition/mod.rs +302 -3
  53. package/src/document/state_transition/document_batch_transition/mod.rs +378 -0
  54. package/src/document/state_transition/document_batch_transition/validation/basic/find_duplicates_by_id.rs +40 -0
  55. package/src/document/state_transition/document_batch_transition/validation/basic/find_duplicates_by_indices.rs +50 -0
  56. package/src/document/state_transition/document_batch_transition/validation/basic/mod.rs +8 -0
  57. package/src/document/state_transition/document_batch_transition/validation/basic/validate_documents_batch_transition_basic.rs +34 -0
  58. package/src/document/state_transition/document_batch_transition/validation/basic/validate_partial_compound_indices.rs +39 -0
  59. package/src/document/state_transition/document_batch_transition/validation/mod.rs +2 -0
  60. package/src/document/state_transition/document_batch_transition/validation/state/fetch_documents.rs +43 -0
  61. package/src/document/state_transition/document_batch_transition/validation/state/mod.rs +3 -0
  62. package/src/document/state_transition/document_batch_transition/validation/state/validate_documents_batch_transitions_state.rs +27 -0
  63. package/src/document/state_transition/document_batch_transition/validation/state/validate_documents_uniqueness_by_indices.rs +47 -0
  64. package/src/document/validator.rs +52 -0
  65. package/src/errors/compatible_protocol_version_is_not_defined_error.rs +24 -0
  66. package/src/errors/consensus/basic/document/duplicate_document_transitions_with_ids_error.rs +1 -1
  67. package/src/errors/consensus/basic/document/duplicate_document_transitions_with_indices_error.rs +1 -1
  68. package/src/errors/consensus/basic/document/inconsistent_compound_index_data_error.rs +2 -2
  69. package/src/errors/consensus/basic/document/invalid_document_type_error.rs +15 -1
  70. package/src/errors/consensus/basic/document/missing_data_contract_id_error.rs +16 -2
  71. package/src/errors/consensus/basic/identity/duplicated_identity_public_key_error.rs +1 -1
  72. package/src/errors/consensus/basic/identity/duplicated_identity_public_key_id_error.rs +1 -1
  73. package/src/errors/consensus/basic/identity/identity_asset_lock_proof_locked_transaction_mismatch_error.rs +6 -2
  74. package/src/errors/consensus/basic/identity/identity_asset_lock_transaction_out_point_already_exists_error.rs +5 -2
  75. package/src/errors/consensus/basic/identity/invalid_asset_lock_proof_transaction_height_error.rs +3 -3
  76. package/src/errors/consensus/basic/identity/invalid_identity_credit_withdrawal_transition_core_fee_error.rs +2 -2
  77. package/src/errors/consensus/basic/identity/invalid_identity_credit_withdrawal_transition_pooling_error.rs +29 -0
  78. package/src/errors/consensus/basic/identity/invalid_identity_key_signature_error.rs +4 -3
  79. package/src/errors/consensus/basic/identity/invalid_identity_public_key_data_error.rs +1 -1
  80. package/src/errors/consensus/basic/identity/invalid_identity_public_key_security_level_error.rs +1 -1
  81. package/src/errors/consensus/basic/identity/missing_public_key_error.rs +4 -3
  82. package/src/errors/consensus/basic/identity/mod.rs +2 -0
  83. package/src/errors/consensus/basic/invalid_identifier_error.rs +1 -1
  84. package/src/errors/consensus/basic/json_schema_error.rs +8 -2
  85. package/src/errors/consensus/basic/public_key_is_disabled_error.rs +1 -1
  86. package/src/errors/consensus/state/document/document_timestamp_window_violation_error.rs +9 -9
  87. package/src/errors/consensus/state/document/invalid_document_revision_error.rs +4 -4
  88. package/src/errors/consensus/state/identity/duplicated_identity_public_key_id_state_error.rs +35 -0
  89. package/src/errors/consensus/state/identity/duplicated_identity_public_key_state_error.rs +34 -0
  90. package/src/errors/consensus/state/identity/identity_public_key_disabled_at_window_violation_error.rs +10 -7
  91. package/src/errors/consensus/state/identity/identity_public_key_is_disabled_error.rs +2 -3
  92. package/src/errors/consensus/state/identity/identity_public_key_is_read_only_error.rs +7 -3
  93. package/src/errors/consensus/state/identity/invalid_identity_public_key_id_error.rs +2 -3
  94. package/src/errors/consensus/state/identity/invalid_identity_revision_error.rs +7 -4
  95. package/src/errors/consensus/state/identity/max_identity_public_key_limit_reached_error.rs +2 -1
  96. package/src/errors/consensus/state/identity/mod.rs +4 -0
  97. package/src/errors/consensus_error.rs +218 -268
  98. package/src/errors/data_contract_not_present_error.rs +23 -0
  99. package/src/errors/dpp_error.rs +17 -0
  100. package/src/errors/from.rs +22 -0
  101. package/src/errors/js_conversion.rs +52 -5
  102. package/src/errors/mod.rs +6 -0
  103. package/src/errors/protocol_error.rs +14 -3
  104. package/src/identifier/errors.rs +30 -0
  105. package/src/identifier/mod.rs +95 -11
  106. package/src/identity/errors/asset_lock_output_not_found_error.rs +11 -0
  107. package/src/identity/errors/asset_lock_transaction_is_not_found_error.rs +20 -0
  108. package/src/identity/errors/invalid_identity_error.rs +32 -0
  109. package/src/identity/errors/mod.rs +9 -0
  110. package/src/identity/errors/unknown_asset_lock_proof_type_error.rs +26 -0
  111. package/src/identity/factory_utils.rs +87 -0
  112. package/src/identity/identity_facade.rs +194 -20
  113. package/src/identity/identity_factory.rs +209 -0
  114. package/src/identity/identity_public_key/mod.rs +51 -40
  115. package/src/identity/mod.rs +31 -17
  116. package/src/identity/state_transition/asset_lock_proof/chain/chain_asset_lock_proof.rs +132 -0
  117. package/src/identity/state_transition/asset_lock_proof/chain/chain_asset_lock_proof_structure_validator.rs +72 -0
  118. package/src/identity/state_transition/asset_lock_proof/chain/mod.rs +4 -0
  119. package/src/identity/state_transition/asset_lock_proof/instant/instant_asset_lock_proof.rs +177 -0
  120. package/src/identity/state_transition/asset_lock_proof/instant/instant_asset_lock_proof_structure_validator.rs +72 -0
  121. package/src/identity/state_transition/asset_lock_proof/instant/mod.rs +4 -0
  122. package/src/identity/state_transition/asset_lock_proof/mod.rs +269 -0
  123. package/src/identity/state_transition/identity_create_transition/apply_identity_create_transition.rs +26 -0
  124. package/src/identity/state_transition/identity_create_transition/identity_create_transition.rs +337 -0
  125. package/src/identity/state_transition/identity_create_transition/identity_create_transition_basic_validator.rs +153 -0
  126. package/src/identity/state_transition/identity_create_transition/identity_create_transition_state_validator.rs +37 -0
  127. package/src/identity/state_transition/identity_create_transition/mod.rs +8 -0
  128. package/src/identity/state_transition/identity_create_transition/to_object.rs +45 -0
  129. package/src/identity/state_transition/identity_public_key_transitions.rs +207 -0
  130. package/src/identity/state_transition/identity_topup_transition/apply_identity_topup_transition.rs +31 -0
  131. package/src/identity/state_transition/identity_topup_transition/identity_topup_transition.rs +278 -0
  132. package/src/identity/state_transition/identity_topup_transition/identity_topup_transition_basic_validator.rs +113 -0
  133. package/src/identity/state_transition/identity_topup_transition/identity_topup_transition_state_validator.rs +37 -0
  134. package/src/identity/state_transition/identity_topup_transition/mod.rs +8 -0
  135. package/src/identity/state_transition/identity_topup_transition/to_object.rs +42 -0
  136. package/src/identity/state_transition/identity_update_transition/apply_identity_update_transition.rs +24 -0
  137. package/src/identity/state_transition/identity_update_transition/identity_update_public_keys_validator.rs +55 -0
  138. package/src/identity/state_transition/identity_update_transition/identity_update_transition.rs +448 -0
  139. package/src/identity/state_transition/identity_update_transition/identity_update_transition_basic_validator.rs +94 -0
  140. package/src/identity/state_transition/identity_update_transition/identity_update_transition_state_validator.rs +53 -0
  141. package/src/identity/state_transition/identity_update_transition/mod.rs +9 -0
  142. package/src/identity/state_transition/identity_update_transition/to_object.rs +66 -0
  143. package/src/identity/state_transition/mod.rs +12 -0
  144. package/src/identity/state_transition/validate_public_key_signatures.rs +61 -0
  145. package/src/identity/validation/identity_validator.rs +50 -0
  146. package/src/identity/validation/mod.rs +2 -0
  147. package/src/identity/validation/public_keys_validator.rs +14 -13
  148. package/src/identity_public_key/public_keys_validator.rs +44 -0
  149. package/src/lib.rs +6 -0
  150. package/src/lodash.rs +7 -0
  151. package/src/metadata.rs +54 -10
  152. package/src/state_repository.rs +598 -101
  153. package/src/state_transition/conversion.rs +104 -0
  154. package/src/state_transition/errors/invalid_state_transition_error.rs +32 -0
  155. package/src/state_transition/errors/mod.rs +1 -0
  156. package/src/state_transition/mod.rs +46 -0
  157. package/src/state_transition/state_transition_facade.rs +263 -0
  158. package/src/state_transition/state_transition_factory.rs +216 -0
  159. package/src/state_transition/validation/mod.rs +1 -0
  160. package/src/state_transition/validation/validate_state_transition_key_signature.rs +62 -0
  161. package/src/utils.rs +210 -8
  162. package/src/validation/json_schema_validator.rs +41 -0
  163. package/src/validation/mod.rs +2 -0
  164. package/src/validation/validation_result.rs +29 -5
  165. package/src/version/mod.rs +2 -0
  166. package/src/version/protocol_version.rs +103 -0
  167. package/test/integration/dataContract/DataContractFacade.spec.js +46 -30
  168. package/test/integration/dataContract/stateTransition/DataContractCreateTransition/validation/basic/validateDataContractCreateTransitionBasicFactory.spec.js +45 -127
  169. package/test/integration/dataContract/stateTransition/DataContractUpdateTransition/validation/basic/validateDataContractUpdateTransitionBasicFactory.spec.js +91 -139
  170. package/test/integration/dataContract/validation/validateDataContractFactory.spec.js +577 -503
  171. package/test/integration/document/Document.spec.js +55 -29
  172. package/test/integration/document/DocumentFacade.spec.js +51 -64
  173. package/test/integration/document/stateTransition/DocumentsBatchTransition/DocumentBatchTransition.spec.js +38 -16
  174. package/test/integration/document/stateTransition/DocumentsBatchTransition/validation/basic/validateDocumentsBatchTransitionBasicFactory.spec.js +341 -396
  175. package/test/integration/document/stateTransition/DocumentsBatchTransition/validation/state/executeDataTriggersFactory.spec.js +116 -218
  176. package/test/integration/document/validation/validateDocumentFactory.spec.js +123 -171
  177. package/test/integration/identity/IdentityFacade.spec.js +52 -27
  178. package/test/integration/identity/stateTransition/IdentityCreateTransition/validation/basic/validateIdentityCreateTransitionBasicFactory.spec.js +185 -164
  179. package/test/integration/identity/stateTransition/IdentityTopUpTransition/validation/basic/validateIdentityTopUpTransitionBasicFactory.spec.js +84 -114
  180. package/test/integration/identity/stateTransition/IdentityUpdateTransition/validation/basic/validateIdentityUpdateTransitionBasicFactory.spec.js +120 -137
  181. package/test/integration/identity/stateTransition/IdentityUpdateTransition/validation/state/validateIdentityUpdateTransitionStateFactory.spec.js +106 -91
  182. package/test/integration/identity/stateTransition/IdentityUpdateTransition/validation/state/validatePublicKeysState.spec.js +50 -16
  183. package/test/integration/identity/stateTransition/assetLockProof/chain/validateChainAssetLockProofStructureFactory.spec.js +78 -86
  184. package/test/integration/identity/stateTransition/assetLockProof/fetchAssetLockTransactionOutputFactory.spec.js +74 -30
  185. package/test/integration/identity/stateTransition/assetLockProof/instant/validateInstantAssetLockProofStructureFactory.spec.js +93 -147
  186. package/test/integration/identity/stateTransition/assetLockProof/validateAssetLockTransactionFactory.spec.js +65 -77
  187. package/test/integration/identity/stateTransition/validatePublicKeySignaturesFactory.spec.js +60 -23
  188. package/test/integration/identity/validation/validateIdentityFactory.spec.js +46 -114
  189. package/test/integration/identity/validation/validatePublicKeysFactory.spec.js +9 -3
  190. package/test/integration/stateTransition/AbstractStateTransitionIdentitySigned.spec.js +12 -8
  191. package/test/integration/stateTransition/StateTransitionFacade.spec.js +95 -233
  192. package/test/integration/stateTransition/calculateStateTransitionFeeFromOperationsFactory.spec.js +53 -0
  193. package/test/unit/Identifier.spec.js +36 -36
  194. package/test/unit/Metadata.spec.js +17 -3
  195. package/test/unit/dataContract/DataContract.spec.js +9 -4
  196. package/test/unit/dataContract/createDataContract.spec.js +0 -1
  197. package/test/unit/dataContract/stateTransition/DataContractCreateTransition/DataContractCreateTransition.spec.js +3 -3
  198. package/test/unit/dataContract/stateTransition/DataContractCreateTransition/applyDataContractCreateTransitionFactory.spec.js +1 -1
  199. package/test/unit/dataContract/stateTransition/DataContractCreateTransition/validation/state/validateDataContractCreateTransitionStateFactory.spec.js +2 -2
  200. package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/DataContractUpdateTransition.spec.js +3 -3
  201. package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/applyDataContractUpdateTransitionFactory.spec.js +1 -1
  202. package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/validation/basic/validateIndicesAreBackwardCompatible.spec.js +25 -31
  203. package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/validation/state/validateDataContractUpdateTransitionStateFactory.spec.js +3 -3
  204. package/test/unit/dataTrigger/rewardShareDataTriggers/createMasternodeRewardSharesDataTrigger.spec.js +2 -0
  205. package/test/unit/decodeProtocolEntityFactory.spec.js +2 -2
  206. package/test/unit/document/Document.spec.js +147 -155
  207. package/test/unit/document/DocumentFactory.spec.js +153 -153
  208. package/test/unit/document/fetchAndValidateDataContractFactory.spec.js +59 -14
  209. package/test/unit/document/stateTransition/DocumetsBatchTransition/DocumentsBatchTransition.spec.js +131 -62
  210. package/test/unit/document/stateTransition/DocumetsBatchTransition/applyDocumentsBatchTransitionFactory.spec.js +144 -56
  211. package/test/unit/document/stateTransition/DocumetsBatchTransition/documentTransition/DocumentCreateTransition.spec.js +38 -8
  212. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/basic/findDuplicatesById.spec.js +11 -7
  213. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/basic/findDuplicatesByIndices.spec.js +29 -18
  214. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/basic/validatePartialCompoundIndices.spec.js +38 -29
  215. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/fetchDocumentsFactory.spec.js +53 -91
  216. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/validateDocumentsBatchTransitionStateFactory.spec.js +357 -493
  217. package/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/validateDocumentsUniquenessByIndicesFactory.spec.js +133 -72
  218. package/test/unit/identity/Identity.spec.js +26 -9
  219. package/test/unit/identity/IdentityFactory.spec.js +81 -89
  220. package/test/unit/identity/stateTransition/IdentityCreateTransition/IdentityCreateTransition.spec.js +73 -30
  221. package/test/unit/identity/stateTransition/IdentityCreateTransition/applyIdentityCreateTransitionFactory.spec.js +38 -38
  222. package/test/unit/identity/stateTransition/IdentityCreateTransition/validation/state/validateIdentityCreateTransitionStateFactory.spec.js +34 -25
  223. package/test/unit/identity/stateTransition/IdentityTopUpTransition/IdentityTopUpTransition.spec.js +36 -16
  224. package/test/unit/identity/stateTransition/IdentityTopUpTransition/applyIdentityTopUpTransitionFactory.spec.js +85 -50
  225. package/test/unit/identity/stateTransition/IdentityTopUpTransition/validation/state/validateIdentityTopUpTransitionStateFactory.spec.js +24 -6
  226. package/test/unit/identity/stateTransition/IdentityUpdateTransition/IdentityUpdateTransition.spec.js +44 -22
  227. package/test/unit/identity/stateTransition/IdentityUpdateTransition/applyIdentityUpdateTransitionFactory.spec.js +58 -103
  228. package/test/unit/identity/stateTransition/assetLockProof/ChainAssetLockProof.spec.js +63 -0
  229. package/test/unit/identity/stateTransition/assetLockProof/InstantAssetLockProof.spec.js +90 -0
  230. package/test/unit/identity/stateTransition/assetLockProof/createAssetLockProofInstance.spec.js +18 -3
  231. package/test/unit/identity/stateTransition/assetLockProof/fetchAssetLockPublicKeyHashFactory.spec.js +38 -11
  232. package/test/unit/stateTransition/StateTransitionFactory.spec.js +49 -101
  233. package/test/unit/stateTransition/validation/validateStateTransitionFeeFactory.spec.js +23 -25
  234. package/test/unit/stateTransition/validation/validateStateTransitionKeySignatureFactory.spec.js +73 -46
  235. package/test/unit/version/validateProtocolVersionFactory.spec.js +45 -27
  236. package/wasm/package.json +5 -0
  237. package/wasm/wasm_dpp.d.ts +3397 -1237
  238. package/wasm/wasm_dpp.js +7158 -1384
  239. package/wasm/wasm_dpp_bg.js +1 -1
  240. package/wasm/wasm_dpp_bg.wasm +0 -0
  241. package/wasm/wasm_dpp_bg.wasm.d.ts +777 -389
  242. package/webpack.config.js +9 -0
  243. package/src/document/state_transition/document_batch_transition/document_transition/document_update_transition.rs +0 -22
  244. package/test/integration/stateTransition/calculateStateTransitionFeeFactory.spec.js +0 -135
  245. package/test/unit/dataContract/errors/InvalidDataContractError.spec.js +0 -54
@@ -1,25 +1,16 @@
1
1
  const { PrivateKey } = require('@dashevo/dashcore-lib');
2
2
 
3
- const DashPlatformProtocol = require('@dashevo/dpp/lib/DashPlatformProtocol');
4
-
5
- const DataContractCreateTransition = require('@dashevo/dpp/lib/dataContract/stateTransition/DataContractCreateTransition/DataContractCreateTransition');
6
-
7
- const ValidationResult = require('@dashevo/dpp/lib/validation/ValidationResult');
8
-
9
- const getDataContractFixture = require('@dashevo/dpp/lib/test/fixtures/getDataContractFixture');
10
- const getDocumentsFixture = require('@dashevo/dpp/lib/test/fixtures/getDocumentsFixture');
11
3
  const getIdentityCreateTransitionFixture = require('@dashevo/dpp/lib/test/fixtures/getIdentityCreateTransitionFixture');
12
4
 
13
5
  const createStateRepositoryMock = require('@dashevo/dpp/lib/test/mocks/createStateRepositoryMock');
14
6
 
15
- const DataContractFactory = require('@dashevo/dpp/lib/dataContract/DataContractFactory');
16
- const DocumentFactory = require('@dashevo/dpp/lib/document/DocumentFactory');
17
-
18
- const IdentityPublicKey = require('@dashevo/dpp/lib/identity/IdentityPublicKey');
7
+ const getIdentityFixture = require('@dashevo/dpp/lib/test/fixtures/getIdentityFixture');
8
+ const getDocumentsFixture = require('../../../lib/test/fixtures/getDocumentsFixture');
9
+ const getDataContractFixture = require('../../../lib/test/fixtures/getDataContractFixture');
19
10
 
20
- const MissingOptionError = require('@dashevo/dpp/lib/errors/MissingOptionError');
21
- const createDPPMock = require('@dashevo/dpp/lib/test/mocks/createDPPMock');
22
- const SomeConsensusError = require('@dashevo/dpp/lib/test/mocks/SomeConsensusError');
11
+ const { default: loadWasmDpp } = require('../../../dist');
12
+ const getBlsAdapterMock = require('../../../lib/test/mocks/getBlsAdapterMock');
13
+ const generateRandomIdentifierAsync = require('../../../lib/test/utils/generateRandomIdentifierAsync');
23
14
 
24
15
  describe('StateTransitionFacade', () => {
25
16
  let dpp;
@@ -28,85 +19,99 @@ describe('StateTransitionFacade', () => {
28
19
  let stateRepositoryMock;
29
20
  let dataContract;
30
21
  let identityPublicKey;
22
+ let identity;
23
+
24
+ let DashPlatformProtocol;
25
+ let DataContractFactory;
26
+ let DataContractValidator;
27
+ let DataContractCreateTransition;
28
+ let Identity;
29
+ let ValidationResult;
30
+ let IdentityPublicKey;
31
+ let DocumentFactory;
32
+ let DocumentValidator;
33
+ let ProtocolVersionValidator;
34
+ let IdentityCreateTransition;
35
+ let UnsupportedProtocolVersionError;
36
+ let InvalidStateTransitionSignatureError;
37
+ let DataContractAlreadyPresentError;
38
+ let BalanceIsNotEnoughError;
39
+
40
+ before(async () => {
41
+ ({
42
+ DashPlatformProtocol,
43
+ ValidationResult,
44
+ DataContractCreateTransition,
45
+ Identity,
46
+ DataContractValidator,
47
+ DataContractFactory,
48
+ IdentityPublicKey,
49
+ DocumentFactory,
50
+ DocumentValidator,
51
+ ProtocolVersionValidator,
52
+ IdentityCreateTransition,
53
+ UnsupportedProtocolVersionError,
54
+ InvalidStateTransitionSignatureError,
55
+ DataContractAlreadyPresentError,
56
+ BalanceIsNotEnoughError,
57
+ } = await loadWasmDpp());
58
+ });
31
59
 
32
60
  beforeEach(async function beforeEach() {
33
61
  const privateKeyModel = new PrivateKey();
34
- const privateKey = privateKeyModel.toWIF();
62
+ const privateKey = privateKeyModel.toBuffer();
35
63
  const publicKey = privateKeyModel.toPublicKey().toBuffer();
36
64
  const publicKeyId = 1;
37
65
 
38
- identityPublicKey = new IdentityPublicKey()
39
- .setId(publicKeyId)
40
- .setType(IdentityPublicKey.TYPES.ECDSA_SECP256K1)
41
- .setData(publicKey)
42
- .setPurpose(IdentityPublicKey.PURPOSES.AUTHENTICATION)
43
- .setSecurityLevel(IdentityPublicKey.PURPOSES.MASTER);
66
+ identityPublicKey = new IdentityPublicKey({
67
+ id: publicKeyId,
68
+ type: IdentityPublicKey.TYPES.ECDSA_SECP256K1,
69
+ data: publicKey,
70
+ purpose: IdentityPublicKey.PURPOSES.AUTHENTICATION,
71
+ securityLevel: IdentityPublicKey.SECURITY_LEVELS.HIGH,
72
+ readOnly: false,
73
+ });
44
74
 
45
- dataContract = getDataContractFixture();
75
+ dataContract = await getDataContractFixture();
46
76
 
47
- const dataContractFactory = new DataContractFactory(createDPPMock(), undefined);
77
+ const dataContractValidator = new DataContractValidator();
78
+ const dataContractFactory = new DataContractFactory(1, dataContractValidator);
48
79
 
49
- dataContractCreateTransition = dataContractFactory.createDataContractCreateTransition(
80
+ dataContractCreateTransition = await dataContractFactory.createDataContractCreateTransition(
50
81
  dataContract,
51
82
  );
52
- await dataContractCreateTransition.sign(identityPublicKey, privateKey);
83
+ await dataContractCreateTransition.sign(
84
+ identityPublicKey,
85
+ privateKey,
86
+ );
53
87
 
54
- const documentFactory = new DocumentFactory(createDPPMock(), undefined, undefined);
88
+ const documentValidator = new DocumentValidator(new ProtocolVersionValidator());
89
+ const documentFactory = new DocumentFactory(1, documentValidator, stateRepositoryMock);
55
90
 
56
91
  documentsBatchTransition = documentFactory.createStateTransition({
57
- create: getDocumentsFixture(dataContract),
92
+ create: await getDocumentsFixture(dataContract),
58
93
  });
59
94
  await documentsBatchTransition.sign(identityPublicKey, privateKey);
60
95
 
61
- const getPublicKeyById = this.sinonSandbox.stub().returns(identityPublicKey);
62
- const getBalance = this.sinonSandbox.stub().returns(10000);
63
-
64
- const identity = {
65
- getPublicKeyById,
66
- type: 2,
67
- getBalance,
68
- };
96
+ const identityObjectJS = getIdentityFixture().toObject();
97
+ identityObjectJS.id = await generateRandomIdentifierAsync();
98
+ identityObjectJS.balance = 10000000;
99
+ identity = new Identity(identityObjectJS);
100
+ identity.setPublicKeys([identityPublicKey]);
69
101
 
70
102
  const blockTime = Date.now();
71
103
 
72
104
  stateRepositoryMock = createStateRepositoryMock(this.sinonSandbox);
73
105
  stateRepositoryMock.fetchIdentity.resolves(identity);
74
106
  stateRepositoryMock.fetchLatestPlatformBlockTime.resolves(blockTime);
107
+ stateRepositoryMock.fetchDataContract.resolves(null);
75
108
 
76
- dpp = new DashPlatformProtocol({
77
- stateRepository: stateRepositoryMock,
78
- });
109
+ const blsAdapter = await getBlsAdapterMock();
79
110
 
80
- await dpp.initialize();
111
+ dpp = new DashPlatformProtocol({}, blsAdapter, stateRepositoryMock);
81
112
  });
82
113
 
83
114
  describe('createFromObject', () => {
84
- it('should throw MissingOption if stateRepository is not set', async () => {
85
- dpp = new DashPlatformProtocol();
86
- await dpp.initialize();
87
-
88
- try {
89
- await dpp.stateTransition.createFromObject(
90
- dataContractCreateTransition.toObject(),
91
- );
92
-
93
- expect.fail('MissingOption should be thrown');
94
- } catch (e) {
95
- expect(e).to.be.an.instanceOf(MissingOptionError);
96
- expect(e.getOptionName()).to.equal('stateRepository');
97
- }
98
- });
99
-
100
- it('should skip checking for state repository if skipValidation is set', async () => {
101
- dpp = new DashPlatformProtocol();
102
- await dpp.initialize();
103
-
104
- await dpp.stateTransition.createFromObject(
105
- dataContractCreateTransition.toObject(),
106
- { skipValidation: true },
107
- );
108
- });
109
-
110
115
  it('should create State Transition from plain object', async () => {
111
116
  const result = await dpp.stateTransition.createFromObject(
112
117
  dataContractCreateTransition.toObject(),
@@ -119,32 +124,6 @@ describe('StateTransitionFacade', () => {
119
124
  });
120
125
 
121
126
  describe('createFromBuffer', () => {
122
- it('should throw MissingOption if stateRepository is not set', async () => {
123
- dpp = new DashPlatformProtocol();
124
- await dpp.initialize();
125
-
126
- try {
127
- await dpp.stateTransition.createFromBuffer(
128
- dataContractCreateTransition.toBuffer(),
129
- );
130
-
131
- expect.fail('MissingOption should be thrown');
132
- } catch (e) {
133
- expect(e).to.be.an.instanceOf(MissingOptionError);
134
- expect(e.getOptionName()).to.equal('stateRepository');
135
- }
136
- });
137
-
138
- it('should skip checking for state repository if skipValidation is set', async () => {
139
- dpp = new DashPlatformProtocol();
140
- await dpp.initialize();
141
-
142
- await dpp.stateTransition.createFromBuffer(
143
- dataContractCreateTransition.toBuffer(),
144
- { skipValidation: true },
145
- );
146
- });
147
-
148
127
  it('should create State Transition from string', async () => {
149
128
  const result = await dpp.stateTransition.createFromBuffer(
150
129
  dataContractCreateTransition.toBuffer(),
@@ -157,94 +136,53 @@ describe('StateTransitionFacade', () => {
157
136
  });
158
137
 
159
138
  describe('validate', () => {
160
- let validateBasicSpy;
161
- let validateSignatureSpy;
162
- let validateFeeSpy;
163
- let validateStateSpy;
164
-
165
- beforeEach(function beforeEach() {
166
- validateBasicSpy = this.sinonSandbox.spy(
167
- dpp.stateTransition,
168
- 'validateBasic',
169
- );
170
-
171
- validateSignatureSpy = this.sinonSandbox.spy(
172
- dpp.stateTransition,
173
- 'validateSignature',
174
- );
175
-
176
- validateFeeSpy = this.sinonSandbox.spy(
177
- dpp.stateTransition,
178
- 'validateFee',
179
- );
180
-
181
- validateStateSpy = this.sinonSandbox.spy(
182
- dpp.stateTransition,
183
- 'validateState',
184
- );
185
- });
186
-
187
139
  it('should return invalid result if State Transition structure is invalid', async () => {
188
140
  const rawStateTransition = dataContractCreateTransition.toObject();
189
- delete rawStateTransition.protocolVersion;
141
+ rawStateTransition.protocolVersion = 100;
190
142
 
191
143
  const result = await dpp.stateTransition.validate(rawStateTransition);
192
144
 
193
145
  expect(result).to.be.an.instanceOf(ValidationResult);
194
146
  expect(result.isValid()).to.be.false();
195
-
196
- expect(validateBasicSpy).to.be.calledOnceWithExactly(rawStateTransition);
197
- expect(validateSignatureSpy).to.not.be.called();
198
- expect(validateFeeSpy).to.not.be.called();
199
- expect(validateStateSpy).to.not.be.called();
147
+ const errors = result.getErrors();
148
+ expect(errors).to.have.lengthOf(1);
149
+ expect(errors[0]).to.be.instanceOf(UnsupportedProtocolVersionError);
200
150
  });
201
151
 
202
152
  it('should return invalid result if State Transition signature is invalid', async () => {
203
- dataContractCreateTransition.signature = Buffer.alloc(65).fill(1);
153
+ const rawStateTransition = dataContractCreateTransition.toObject();
154
+ rawStateTransition.signature = Buffer.alloc(65).fill(1);
204
155
 
205
- const result = await dpp.stateTransition.validate(dataContractCreateTransition);
156
+ const result = await dpp.stateTransition.validate(rawStateTransition);
206
157
 
207
158
  expect(result).to.be.an.instanceOf(ValidationResult);
208
159
  expect(result.isValid()).to.be.false();
209
-
210
- expect(validateBasicSpy).to.be.calledOnceWithExactly(dataContractCreateTransition);
211
- expect(validateSignatureSpy).to.be.calledOnceWithExactly(dataContractCreateTransition);
212
- expect(validateFeeSpy).to.not.be.called();
213
- expect(validateStateSpy).to.not.be.called();
160
+ const errors = result.getErrors();
161
+ expect(errors).to.have.lengthOf(1);
162
+ expect(errors[0]).to.be.instanceOf(InvalidStateTransitionSignatureError);
214
163
  });
215
164
 
216
165
  it('should return invalid result if not enough balance to pay fee for State Transition', async () => {
217
- const consensusError = new SomeConsensusError('error');
218
-
219
- dpp.stateTransition.validateStateTransitionFee = () => new ValidationResult([consensusError]);
220
-
166
+ identity.setBalance(0);
221
167
  const result = await dpp.stateTransition.validate(dataContractCreateTransition);
222
168
 
223
169
  expect(result).to.be.an.instanceOf(ValidationResult);
224
170
  expect(result.isValid()).to.be.false();
225
-
226
- expect(validateBasicSpy).to.be.calledOnceWithExactly(dataContractCreateTransition);
227
- expect(validateSignatureSpy).to.be.calledOnceWithExactly(dataContractCreateTransition);
228
- expect(validateFeeSpy).to.be.calledOnceWithExactly(dataContractCreateTransition);
229
- expect(validateStateSpy).to.not.be.called();
171
+ const errors = result.getErrors();
172
+ expect(errors).to.have.lengthOf(1);
173
+ expect(errors[0]).to.be.instanceOf(BalanceIsNotEnoughError);
230
174
  });
231
175
 
232
176
  it('should return invalid result if State Transition is invalid against state', async () => {
233
- const consensusError = new SomeConsensusError('error');
234
-
235
- dpp.stateTransition.validateStateTransitionState = () => (
236
- new ValidationResult([consensusError])
237
- );
177
+ stateRepositoryMock.fetchDataContract.resolves(dataContract);
238
178
 
239
179
  const result = await dpp.stateTransition.validate(dataContractCreateTransition);
240
180
 
241
181
  expect(result).to.be.an.instanceOf(ValidationResult);
242
182
  expect(result.isValid()).to.be.false();
243
-
244
- expect(validateBasicSpy).to.be.calledOnceWithExactly(dataContractCreateTransition);
245
- expect(validateSignatureSpy).to.be.calledOnceWithExactly(dataContractCreateTransition);
246
- expect(validateFeeSpy).to.be.calledOnceWithExactly(dataContractCreateTransition);
247
- expect(validateStateSpy).to.be.calledOnceWithExactly(dataContractCreateTransition);
183
+ const errors = result.getErrors();
184
+ expect(errors).to.have.lengthOf(1);
185
+ expect(errors[0]).to.be.instanceOf(DataContractAlreadyPresentError);
248
186
  });
249
187
 
250
188
  it('should validate DataContractCreateTransition', async () => {
@@ -254,53 +192,22 @@ describe('StateTransitionFacade', () => {
254
192
 
255
193
  expect(result).to.be.an.instanceOf(ValidationResult);
256
194
  expect(result.isValid()).to.be.true();
257
-
258
- expect(validateBasicSpy).to.be.calledOnceWithExactly(dataContractCreateTransition);
259
- expect(validateSignatureSpy).to.be.calledOnceWithExactly(dataContractCreateTransition);
260
- expect(validateFeeSpy).to.be.calledOnceWithExactly(dataContractCreateTransition);
261
- expect(validateStateSpy).to.be.calledOnceWithExactly(dataContractCreateTransition);
262
195
  });
263
196
 
264
- it('should validate DocumentsBatchTransition', async function it() {
197
+ it('should validate DocumentsBatchTransition', async () => {
265
198
  stateRepositoryMock.fetchDocuments.resolves([]);
266
199
 
267
200
  stateRepositoryMock.fetchDataContract.resolves(dataContract);
268
- stateRepositoryMock.fetchIdentity.resolves({
269
- getPublicKeyById: this.sinonSandbox.stub().returns(identityPublicKey),
270
- getBalance: this.sinonSandbox.stub().returns(10000),
271
- });
272
-
273
201
  const result = await dpp.stateTransition.validate(
274
202
  documentsBatchTransition,
275
203
  );
276
204
 
277
205
  expect(result).to.be.an.instanceOf(ValidationResult);
278
206
  expect(result.isValid()).to.be.true();
279
-
280
- expect(validateBasicSpy).to.be.calledOnceWithExactly(documentsBatchTransition);
281
- expect(validateSignatureSpy).to.be.calledOnceWithExactly(documentsBatchTransition);
282
- expect(validateFeeSpy).to.be.calledOnceWithExactly(documentsBatchTransition);
283
- expect(validateStateSpy).to.be.calledOnceWithExactly(documentsBatchTransition);
284
207
  });
285
208
  });
286
209
 
287
210
  describe('validateBasic', () => {
288
- it('should throw MissingOption if stateRepository is not set', async () => {
289
- dpp = new DashPlatformProtocol();
290
- await dpp.initialize();
291
-
292
- try {
293
- await dpp.stateTransition.validateBasic(
294
- dataContractCreateTransition.toObject(),
295
- );
296
-
297
- expect.fail('MissingOption should be thrown');
298
- } catch (e) {
299
- expect(e).to.be.an.instanceOf(MissingOptionError);
300
- expect(e.getOptionName()).to.equal('stateRepository');
301
- }
302
- });
303
-
304
211
  it('should validate State Transition', async () => {
305
212
  const result = await dpp.stateTransition.validateBasic(
306
213
  dataContractCreateTransition.toObject(),
@@ -312,22 +219,6 @@ describe('StateTransitionFacade', () => {
312
219
  });
313
220
 
314
221
  describe('validateSignature', () => {
315
- it('should throw MissingOption if stateRepository is not set', async () => {
316
- dpp = new DashPlatformProtocol();
317
- await dpp.initialize();
318
-
319
- try {
320
- await dpp.stateTransition.validateSignature(
321
- dataContractCreateTransition,
322
- );
323
-
324
- expect.fail('MissingOption should be thrown');
325
- } catch (e) {
326
- expect(e).to.be.an.instanceOf(MissingOptionError);
327
- expect(e.getOptionName()).to.equal('stateRepository');
328
- }
329
- });
330
-
331
222
  it('should validate identity signed State Transition', async () => {
332
223
  const result = await dpp.stateTransition.validateSignature(
333
224
  dataContractCreateTransition,
@@ -342,10 +233,13 @@ describe('StateTransitionFacade', () => {
342
233
  'af432c476f65211f45f48f1d42c9c0b497e56696aa1736b40544ef1a496af837',
343
234
  );
344
235
 
345
- const identityCreateTransition = getIdentityCreateTransitionFixture(oneTimePrivateKey);
236
+ const identityCreateTransitionJS = getIdentityCreateTransitionFixture(oneTimePrivateKey);
237
+ const identityCreateTransition = new IdentityCreateTransition(
238
+ identityCreateTransitionJS.toObject(),
239
+ );
346
240
 
347
241
  await identityCreateTransition.signByPrivateKey(
348
- oneTimePrivateKey,
242
+ oneTimePrivateKey.toBuffer(),
349
243
  IdentityPublicKey.TYPES.ECDSA_SECP256K1,
350
244
  );
351
245
 
@@ -359,22 +253,6 @@ describe('StateTransitionFacade', () => {
359
253
  });
360
254
 
361
255
  describe('validateFee', () => {
362
- it('should throw MissingOption if stateRepository is not set', async () => {
363
- dpp = new DashPlatformProtocol();
364
- await dpp.initialize();
365
-
366
- try {
367
- await dpp.stateTransition.validateFee(
368
- dataContractCreateTransition,
369
- );
370
-
371
- expect.fail('MissingOption should be thrown');
372
- } catch (e) {
373
- expect(e).to.be.an.instanceOf(MissingOptionError);
374
- expect(e.getOptionName()).to.equal('stateRepository');
375
- }
376
- });
377
-
378
256
  it('should validate State Transition', async () => {
379
257
  const result = await dpp.stateTransition.validateFee(
380
258
  dataContractCreateTransition,
@@ -386,22 +264,6 @@ describe('StateTransitionFacade', () => {
386
264
  });
387
265
 
388
266
  describe('validateState', () => {
389
- it('should throw MissingOption if stateRepository is not set', async () => {
390
- dpp = new DashPlatformProtocol();
391
- await dpp.initialize();
392
-
393
- try {
394
- await dpp.stateTransition.validateState(
395
- dataContractCreateTransition,
396
- );
397
-
398
- expect.fail('MissingOption should be thrown');
399
- } catch (e) {
400
- expect(e).to.be.an.instanceOf(MissingOptionError);
401
- expect(e.getOptionName()).to.equal('stateRepository');
402
- }
403
- });
404
-
405
267
  it('should validate State Transition', async () => {
406
268
  const result = await dpp.stateTransition.validateState(
407
269
  dataContractCreateTransition,
@@ -0,0 +1,53 @@
1
+ const calculateStateTransitionFeeFromOperationsFactory = require('@dashevo/dpp/lib/stateTransition/fee/calculateStateTransitionFeeFromOperationsFactory');
2
+ const generateRandomIdentifier = require('@dashevo/dpp/lib/test/utils/generateRandomIdentifier');
3
+
4
+ describe('calculateStateTransitionFeeFromOperationsFactory', () => {
5
+ let stateTransition;
6
+ let calculateStateTransitionFeeFromOperations;
7
+ let calculateOperationFeesMock;
8
+
9
+ beforeEach(async function beforeEach() {
10
+ calculateOperationFeesMock = this.sinonSandbox.stub();
11
+
12
+ calculateStateTransitionFeeFromOperations = calculateStateTransitionFeeFromOperationsFactory(
13
+ calculateOperationFeesMock,
14
+ );
15
+ });
16
+
17
+ it('should calculate fee based on executed operations', async () => {
18
+ const identityId = generateRandomIdentifier();
19
+ const storageFee = 10000;
20
+ const processingFee = 1000;
21
+ const totalRefunds = 1000 + 500;
22
+ const requiredAmount = storageFee - totalRefunds;
23
+ const desiredAmount = storageFee + processingFee - totalRefunds;
24
+ const feeRefunds = [
25
+ {
26
+ identifier: identityId.toBuffer(),
27
+ creditsPerEpoch: {
28
+ 0: 1000,
29
+ 1: 500,
30
+ },
31
+ },
32
+ ];
33
+
34
+ const calculatedOperationsFeesResult = {
35
+ storageFee,
36
+ processingFee,
37
+ feeRefunds,
38
+ };
39
+
40
+ calculateOperationFeesMock.returns(calculatedOperationsFeesResult);
41
+
42
+ const result = calculateStateTransitionFeeFromOperations(stateTransition, identityId);
43
+
44
+ expect(result).to.deep.equal({
45
+ storageFee,
46
+ processingFee,
47
+ requiredAmount,
48
+ desiredAmount,
49
+ feeRefunds,
50
+ totalRefunds: 1500,
51
+ });
52
+ });
53
+ });
@@ -1,33 +1,47 @@
1
1
  const crypto = require('crypto');
2
2
  const bs58 = require('bs58');
3
- const Identifier = require('@dashevo/dpp/lib/identifier/Identifier');
4
- const IdentifierError = require('@dashevo/dpp/lib/identifier/errors/IdentifierError');
3
+ let { Identifier, IdentifierError } = require('../..');
4
+ const { default: loadWasmDpp } = require('../..');
5
5
 
6
6
  describe('Identifier', () => {
7
7
  let buffer;
8
8
 
9
- beforeEach(() => {
9
+ beforeEach(async () => {
10
10
  buffer = crypto.randomBytes(32);
11
+
12
+ ({ Identifier, IdentifierError } = await loadWasmDpp());
11
13
  });
12
14
 
13
15
  describe('#constructor', () => {
14
16
  it('should accept Buffer', () => {
15
17
  const identifier = new Identifier(buffer);
16
18
 
17
- expect(identifier).to.be.deep.equal(buffer);
19
+ expect(identifier.toBuffer()).to.be.deep.equal(buffer);
18
20
  expect(identifier).to.be.an.instanceOf(Identifier);
19
21
  });
20
22
 
21
23
  it('should throw error if first argument is not Buffer', () => {
22
- expect(
23
- () => new Identifier(1),
24
- ).to.throw(IdentifierError, 'Identifier expects Buffer');
24
+ try {
25
+ // eslint-disable-next-line no-unused-vars
26
+ const id = new Identifier(1);
27
+
28
+ expect.fail('Expected to throw an error');
29
+ } catch (e) {
30
+ expect(e).to.be.instanceOf(IdentifierError);
31
+ expect(e.toString()).to.be.equal('IdentifierError: Identifier expects Buffer');
32
+ }
25
33
  });
26
34
 
27
35
  it('should throw error if buffer is not 32 bytes long', () => {
28
- expect(
29
- () => new Identifier(Buffer.alloc(30)),
30
- ).to.throw(IdentifierError, 'Identifier must be 32 long');
36
+ try {
37
+ // eslint-disable-next-line no-unused-vars
38
+ const identifier = new Identifier(Buffer.alloc(30));
39
+
40
+ expect.fail('Expected to throw error');
41
+ } catch (e) {
42
+ expect(e).to.be.instanceOf(IdentifierError);
43
+ expect(e.toString()).to.be.equal('IdentifierError: Identifier must be 32 bytes long');
44
+ }
31
45
  });
32
46
  });
33
47
 
@@ -39,25 +53,6 @@ describe('Identifier', () => {
39
53
  });
40
54
  });
41
55
 
42
- describe('#encodeCBOR', () => {
43
- let encoderMock;
44
-
45
- beforeEach(function before() {
46
- encoderMock = {
47
- pushAny: this.sinonSandbox.stub(),
48
- };
49
- });
50
-
51
- it('should encode using cbor encoder', () => {
52
- const identifier = new Identifier(buffer);
53
-
54
- const result = identifier.encodeCBOR(encoderMock);
55
-
56
- expect(result).to.be.true();
57
- expect(encoderMock.pushAny).to.be.calledOnceWithExactly(buffer);
58
- });
59
- });
60
-
61
56
  describe('#toJSON', () => {
62
57
  it('should return a base58 encoded string', () => {
63
58
  const identifier = new Identifier(buffer);
@@ -93,13 +88,18 @@ describe('Identifier', () => {
93
88
  const identifier = Identifier.from(buffer);
94
89
 
95
90
  expect(identifier).to.be.an.instanceOf(Identifier);
96
- expect(identifier).to.deep.equal(buffer);
91
+ expect(identifier.toBuffer()).to.deep.equal(buffer);
97
92
  });
98
93
 
99
- it('should throw error if buffer is passed among with encoding', async () => {
100
- expect(
101
- () => Identifier.from(buffer, 'base64'),
102
- ).to.throw(IdentifierError, 'encoding accepted only with type string');
94
+ it('should throw error if buffer is passed among with encoding', () => {
95
+ try {
96
+ Identifier.from(buffer, 'base64');
97
+
98
+ expect.fail('Expected to throw error');
99
+ } catch (e) {
100
+ expect(e).to.be.instanceOf(IdentifierError);
101
+ expect(e.toString()).to.be.equal('IdentifierError: encoding accepted only with type string');
102
+ }
103
103
  });
104
104
 
105
105
  it('should create an instance with a base58 string', () => {
@@ -108,7 +108,7 @@ describe('Identifier', () => {
108
108
  const identifier = Identifier.from(string);
109
109
 
110
110
  expect(identifier).to.be.an.instanceOf(Identifier);
111
- expect(identifier).to.deep.equal(buffer);
111
+ expect(identifier.toBuffer()).to.deep.equal(buffer);
112
112
  });
113
113
 
114
114
  it('should create an instance with a base64 string', () => {
@@ -117,7 +117,7 @@ describe('Identifier', () => {
117
117
  const identifier = Identifier.from(string, 'base64');
118
118
 
119
119
  expect(identifier).to.be.an.instanceOf(Identifier);
120
- expect(identifier).to.deep.equal(buffer);
120
+ expect(identifier.toBuffer()).to.deep.equal(buffer);
121
121
  });
122
122
  });
123
123
  });