@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,42 +1,34 @@
1
1
  const crypto = require('crypto');
2
-
3
- const { getRE2Class } = require('@dashevo/wasm-re2');
4
-
5
- const createAjv = require('@dashevo/dpp/lib/ajv/createAjv');
6
-
7
- const JsonSchemaValidator = require('@dashevo/dpp/lib/validation/JsonSchemaValidator');
8
-
9
2
  const protocolVersion = require('@dashevo/dpp/lib/version/protocolVersion');
10
3
 
11
- const validateDataContractCreateTransitionBasicFactory = require('@dashevo/dpp/lib/dataContract/stateTransition/DataContractCreateTransition/validation/basic/validateDataContractCreateTransitionBasicFactory');
12
-
13
- const DataContractCreateTransition = require('@dashevo/dpp/lib/dataContract/stateTransition/DataContractCreateTransition/DataContractCreateTransition');
14
-
15
4
  const getDataContractFixture = require('@dashevo/dpp/lib/test/fixtures/getDataContractFixture');
5
+ const { expectJsonSchemaError, expectValidationError } = require('../../../../../../../lib/test/expect/expectError');
16
6
 
17
- const {
18
- expectValidationError,
19
- expectJsonSchemaError,
20
- } = require('@dashevo/dpp/lib/test/expect/expectError');
21
-
22
- const ValidationResult = require('@dashevo/dpp/lib/validation/ValidationResult');
23
-
24
- const InvalidDataContractIdError = require('@dashevo/dpp/lib/errors/consensus/basic/dataContract/InvalidDataContractIdError');
25
- const SomeConsensusError = require('@dashevo/dpp/lib/test/mocks/SomeConsensusError');
7
+ const { default: loadWasmDpp } = require('../../../../../../../dist');
26
8
 
27
9
  describe('validateDataContractCreateTransitionBasicFactory', () => {
28
- let validateDataContractMock;
29
- let validateDataContractCreateTransitionBasic;
30
10
  let stateTransition;
31
11
  let rawStateTransition;
32
12
  let dataContract;
33
13
  let rawDataContract;
34
- let validateProtocolVersionMock;
35
14
 
36
- beforeEach(async function beforeEach() {
37
- validateDataContractMock = this.sinonSandbox.stub().returns(new ValidationResult());
38
- validateProtocolVersionMock = this.sinonSandbox.stub().returns(new ValidationResult());
15
+ let DataContractCreateTransition;
16
+ let validateDataContractCreateTransitionBasic;
17
+ let ValidationResult;
18
+ let ProtocolVersionParsingError;
19
+ let InvalidDataContractIdError;
20
+
21
+ before(async () => {
22
+ ({
23
+ DataContractCreateTransition,
24
+ validateDataContractCreateTransitionBasic,
25
+ ValidationResult,
26
+ ProtocolVersionParsingError,
27
+ InvalidDataContractIdError,
28
+ } = await loadWasmDpp());
29
+ });
39
30
 
31
+ beforeEach(async () => {
40
32
  dataContract = getDataContractFixture();
41
33
  rawDataContract = dataContract.toObject();
42
34
 
@@ -49,18 +41,6 @@ describe('validateDataContractCreateTransitionBasicFactory', () => {
49
41
  });
50
42
 
51
43
  rawStateTransition = stateTransition.toObject();
52
-
53
- const RE2 = await getRE2Class();
54
- const ajv = createAjv(RE2);
55
-
56
- const jsonSchemaValidator = new JsonSchemaValidator(ajv);
57
-
58
- // eslint-disable-next-line max-len
59
- validateDataContractCreateTransitionBasic = validateDataContractCreateTransitionBasicFactory(
60
- jsonSchemaValidator,
61
- validateDataContractMock,
62
- validateProtocolVersionMock,
63
- );
64
44
  });
65
45
 
66
46
  describe('protocolVersion', () => {
@@ -69,7 +49,7 @@ describe('validateDataContractCreateTransitionBasicFactory', () => {
69
49
 
70
50
  const result = await validateDataContractCreateTransitionBasic(rawStateTransition);
71
51
 
72
- expectJsonSchemaError(result);
52
+ await expectJsonSchemaError(result);
73
53
 
74
54
  const [error] = result.getErrors();
75
55
 
@@ -83,7 +63,7 @@ describe('validateDataContractCreateTransitionBasicFactory', () => {
83
63
 
84
64
  const result = await validateDataContractCreateTransitionBasic(rawStateTransition);
85
65
 
86
- expectJsonSchemaError(result);
66
+ await expectJsonSchemaError(result);
87
67
 
88
68
  const [error] = result.getErrors();
89
69
 
@@ -94,24 +74,10 @@ describe('validateDataContractCreateTransitionBasicFactory', () => {
94
74
  it('should be valid', async () => {
95
75
  rawStateTransition.protocolVersion = -1;
96
76
 
97
- const protocolVersionError = new SomeConsensusError('test');
98
- const protocolVersionResult = new ValidationResult([
99
- protocolVersionError,
100
- ]);
101
-
102
- validateProtocolVersionMock.returns(protocolVersionResult);
103
-
104
77
  const result = await validateDataContractCreateTransitionBasic(rawStateTransition);
105
78
 
106
- expectValidationError(result, SomeConsensusError);
107
-
108
79
  const [error] = result.getErrors();
109
-
110
- expect(error).to.equal(protocolVersionError);
111
-
112
- expect(validateProtocolVersionMock).to.be.calledOnceWith(
113
- rawStateTransition.protocolVersion,
114
- );
80
+ expect(error).to.be.an.instanceOf(ProtocolVersionParsingError);
115
81
  });
116
82
  });
117
83
 
@@ -121,7 +87,7 @@ describe('validateDataContractCreateTransitionBasicFactory', () => {
121
87
 
122
88
  const result = await validateDataContractCreateTransitionBasic(rawStateTransition);
123
89
 
124
- expectJsonSchemaError(result);
90
+ await expectJsonSchemaError(result);
125
91
 
126
92
  const [error] = result.getErrors();
127
93
 
@@ -135,7 +101,7 @@ describe('validateDataContractCreateTransitionBasicFactory', () => {
135
101
 
136
102
  const result = await validateDataContractCreateTransitionBasic(rawStateTransition);
137
103
 
138
- expectJsonSchemaError(result);
104
+ await expectJsonSchemaError(result);
139
105
 
140
106
  const [error] = result.getErrors();
141
107
 
@@ -151,7 +117,7 @@ describe('validateDataContractCreateTransitionBasicFactory', () => {
151
117
 
152
118
  const result = await validateDataContractCreateTransitionBasic(rawStateTransition);
153
119
 
154
- expectJsonSchemaError(result);
120
+ await expectJsonSchemaError(result);
155
121
 
156
122
  const [error] = result.getErrors();
157
123
 
@@ -161,42 +127,26 @@ describe('validateDataContractCreateTransitionBasicFactory', () => {
161
127
  });
162
128
 
163
129
  it('should be valid', async () => {
164
- const dataContractError = new SomeConsensusError('test');
165
- const dataContractResult = new ValidationResult([
166
- dataContractError,
167
- ]);
168
-
169
- validateDataContractMock.returns(dataContractResult);
170
-
171
130
  const result = await validateDataContractCreateTransitionBasic(rawStateTransition);
172
131
 
173
- expectValidationError(result);
174
-
175
- const [error] = result.getErrors();
176
-
177
- expect(error).to.equal(dataContractError);
178
-
179
- expect(validateDataContractMock.getCall(0).args).to.have.deep.members([rawDataContract]);
132
+ expect(result).to.be.an.instanceOf(ValidationResult);
133
+ expect(result.isValid()).to.be.true();
180
134
  });
181
135
 
182
136
  it('should return invalid result on invalid Data Contract id', async () => {
183
- const dataContractResult = new ValidationResult();
184
-
185
- validateDataContractMock.returns(dataContractResult);
186
-
187
- const expectedId = rawStateTransition.dataContract.$id;
188
- rawStateTransition.dataContract.$id = crypto.randomBytes(34);
137
+ const expectedId = Buffer.from(rawStateTransition.dataContract.$id);
138
+ rawStateTransition.dataContract.$id = Buffer.from(crypto.randomBytes(32));
189
139
 
190
140
  const result = await validateDataContractCreateTransitionBasic(rawStateTransition);
191
141
 
192
- expectValidationError(result);
142
+ await expectValidationError(result);
193
143
 
194
144
  const [error] = result.getErrors();
195
145
 
196
- expect(error).to.be.an.instanceOf(InvalidDataContractIdError);
146
+ expect(error.getCode()).to.equal(1011);
197
147
  expect(error.getExpectedId()).to.deep.equal(expectedId);
198
148
  expect(error.getInvalidId()).to.deep.equal(rawStateTransition.dataContract.$id);
199
- expect(error.getCode()).to.equal(1011);
149
+ expect(error).to.be.an.instanceOf(InvalidDataContractIdError);
200
150
  });
201
151
  });
202
152
 
@@ -206,7 +156,7 @@ describe('validateDataContractCreateTransitionBasicFactory', () => {
206
156
 
207
157
  const result = await validateDataContractCreateTransitionBasic(rawStateTransition);
208
158
 
209
- expectJsonSchemaError(result);
159
+ await expectJsonSchemaError(result);
210
160
 
211
161
  const [error] = result.getErrors();
212
162
 
@@ -215,33 +165,18 @@ describe('validateDataContractCreateTransitionBasicFactory', () => {
215
165
  expect(error.getParams().missingProperty).to.equal('entropy');
216
166
  });
217
167
 
218
- it('should be a byte array', async () => {
219
- rawStateTransition.entropy = new Array(32).fill('string');
220
-
221
- const result = await validateDataContractCreateTransitionBasic(rawStateTransition);
222
-
223
- expectJsonSchemaError(result, 2);
224
-
225
- const [error, byteArrayError] = result.getErrors();
226
-
227
- expect(error.getInstancePath()).to.equal('/entropy/0');
228
- expect(error.getKeyword()).to.equal('type');
229
-
230
- expect(byteArrayError.getKeyword()).to.equal('byteArray');
231
- });
232
-
233
168
  it('should be no less than 32 bytes', async () => {
234
169
  rawStateTransition.entropy = Buffer.alloc(31);
235
170
 
236
171
  const result = await validateDataContractCreateTransitionBasic(rawStateTransition);
237
172
 
238
- expectJsonSchemaError(result);
173
+ await expectJsonSchemaError(result);
239
174
 
240
175
  const [error] = result.getErrors();
241
176
 
242
177
  expect(error.getInstancePath()).to.equal('/entropy');
243
178
  expect(error.getKeyword()).to.equal('minItems');
244
- expect(error.getParams().limit).to.equal(32);
179
+ expect(error.getParams().minItems).to.equal(32);
245
180
  });
246
181
 
247
182
  it('should be no longer than 32 bytes', async () => {
@@ -249,13 +184,13 @@ describe('validateDataContractCreateTransitionBasicFactory', () => {
249
184
 
250
185
  const result = await validateDataContractCreateTransitionBasic(rawStateTransition);
251
186
 
252
- expectJsonSchemaError(result);
187
+ await expectJsonSchemaError(result);
253
188
 
254
189
  const [error] = result.getErrors();
255
190
 
256
191
  expect(error.getInstancePath()).to.equal('/entropy');
257
192
  expect(error.getKeyword()).to.equal('maxItems');
258
- expect(error.getParams().limit).to.equal(32);
193
+ expect(error.getParams().maxItems).to.equal(32);
259
194
  });
260
195
  });
261
196
 
@@ -265,7 +200,7 @@ describe('validateDataContractCreateTransitionBasicFactory', () => {
265
200
 
266
201
  const result = await validateDataContractCreateTransitionBasic(rawStateTransition);
267
202
 
268
- expectJsonSchemaError(result);
203
+ await expectJsonSchemaError(result);
269
204
 
270
205
  const [error] = result.getErrors();
271
206
 
@@ -274,33 +209,18 @@ describe('validateDataContractCreateTransitionBasicFactory', () => {
274
209
  expect(error.getParams().missingProperty).to.equal('signature');
275
210
  });
276
211
 
277
- it('should be a byte array', async () => {
278
- rawStateTransition.signature = new Array(65).fill('string');
279
-
280
- const result = await validateDataContractCreateTransitionBasic(rawStateTransition);
281
-
282
- expectJsonSchemaError(result, 2);
283
-
284
- const [error, byteArrayError] = result.getErrors();
285
-
286
- expect(error.getInstancePath()).to.equal('/signature/0');
287
- expect(error.getKeyword()).to.equal('type');
288
-
289
- expect(byteArrayError.getKeyword()).to.equal('byteArray');
290
- });
291
-
292
212
  it('should be not less than 65 bytes', async () => {
293
213
  rawStateTransition.signature = Buffer.alloc(64);
294
214
 
295
215
  const result = await validateDataContractCreateTransitionBasic(rawStateTransition);
296
216
 
297
- expectJsonSchemaError(result);
217
+ await expectJsonSchemaError(result);
298
218
 
299
219
  const [error] = result.getErrors();
300
220
 
301
221
  expect(error.getInstancePath()).to.equal('/signature');
302
222
  expect(error.getKeyword()).to.equal('minItems');
303
- expect(error.getParams().limit).to.equal(65);
223
+ expect(error.getParams().minItems).to.equal(65);
304
224
  });
305
225
 
306
226
  it('should be not longer than 96 bytes', async () => {
@@ -308,13 +228,13 @@ describe('validateDataContractCreateTransitionBasicFactory', () => {
308
228
 
309
229
  const result = await validateDataContractCreateTransitionBasic(rawStateTransition);
310
230
 
311
- expectJsonSchemaError(result);
231
+ await expectJsonSchemaError(result);
312
232
 
313
233
  const [error] = result.getErrors();
314
234
 
315
235
  expect(error.getInstancePath()).to.equal('/signature');
316
236
  expect(error.getKeyword()).to.equal('maxItems');
317
- expect(error.getParams().limit).to.equal(96);
237
+ expect(error.getParams().maxItems).to.equal(96);
318
238
  });
319
239
  });
320
240
 
@@ -324,11 +244,11 @@ describe('validateDataContractCreateTransitionBasicFactory', () => {
324
244
 
325
245
  const result = await validateDataContractCreateTransitionBasic(rawStateTransition);
326
246
 
327
- expectJsonSchemaError(result, 1);
247
+ await expectJsonSchemaError(result, 1);
328
248
 
329
249
  const [error] = result.getErrors();
330
250
 
331
- expect(error.instancePath).to.equal('/signaturePublicKeyId');
251
+ expect(error.getInstancePath()).to.equal('/signaturePublicKeyId');
332
252
  expect(error.getKeyword()).to.equal('type');
333
253
  });
334
254
 
@@ -337,11 +257,11 @@ describe('validateDataContractCreateTransitionBasicFactory', () => {
337
257
 
338
258
  const result = await validateDataContractCreateTransitionBasic(rawStateTransition);
339
259
 
340
- expectJsonSchemaError(result, 1);
260
+ await expectJsonSchemaError(result, 1);
341
261
 
342
262
  const [error] = result.getErrors();
343
263
 
344
- expect(error.instancePath).to.equal('/signaturePublicKeyId');
264
+ expect(error.getInstancePath()).to.equal('/signaturePublicKeyId');
345
265
  expect(error.getKeyword()).to.equal('minimum');
346
266
  });
347
267
  });
@@ -351,7 +271,5 @@ describe('validateDataContractCreateTransitionBasicFactory', () => {
351
271
 
352
272
  expect(result).to.be.an.instanceOf(ValidationResult);
353
273
  expect(result.isValid()).to.be.true();
354
-
355
- expect(validateDataContractMock).to.be.calledOnceWith(rawDataContract);
356
274
  });
357
275
  });