diff --git a/packages/wasm-dpp/src/data_contract/state_transition/data_contract_create_transition/validation.rs b/packages/wasm-dpp/src/data_contract/state_transition/data_contract_create_transition/validation.rs index 73da40dcda8..92b26bbf751 100644 --- a/packages/wasm-dpp/src/data_contract/state_transition/data_contract_create_transition/validation.rs +++ b/packages/wasm-dpp/src/data_contract/state_transition/data_contract_create_transition/validation.rs @@ -28,13 +28,13 @@ use super::DataContractCreateTransitionParameters; pub async fn validate_data_contract_create_transition_state( state_repository: ExternalStateRepositoryLike, state_transition: DataContractCreateTransitionWasm, - execution_context: StateTransitionExecutionContextWasm, + execution_context: &StateTransitionExecutionContextWasm, ) -> Result { let wrapped_state_repository = ExternalStateRepositoryLikeWrapper::new(state_repository); let validation_result = dpp_validate_data_contract_create_transition_state( &wrapped_state_repository, &state_transition.into(), - &execution_context.into(), + &execution_context.to_owned().into(), ) .await .with_js_error()?; diff --git a/packages/wasm-dpp/src/data_contract/state_transition/data_contract_update_transition/apply.rs b/packages/wasm-dpp/src/data_contract/state_transition/data_contract_update_transition/apply.rs index 2b752421e41..3981d0c6909 100644 --- a/packages/wasm-dpp/src/data_contract/state_transition/data_contract_update_transition/apply.rs +++ b/packages/wasm-dpp/src/data_contract/state_transition/data_contract_update_transition/apply.rs @@ -35,10 +35,13 @@ impl ApplyDataContractUpdateTransitionWasm { pub async fn apply_data_contract_update_transition( &self, transition: DataContractUpdateTransitionWasm, - execution_context: StateTransitionExecutionContextWasm, + execution_context: &StateTransitionExecutionContextWasm, ) -> Result<(), JsError> { self.0 - .apply_data_contract_update_transition(&transition.into(), &execution_context.into()) + .apply_data_contract_update_transition( + &transition.into(), + &execution_context.to_owned().into(), + ) .await .map_err(|e| e.deref().into()) } diff --git a/packages/wasm-dpp/src/data_contract/state_transition/data_contract_update_transition/validation.rs b/packages/wasm-dpp/src/data_contract/state_transition/data_contract_update_transition/validation.rs index 2d35adc5d16..ad502b6c9e6 100644 --- a/packages/wasm-dpp/src/data_contract/state_transition/data_contract_update_transition/validation.rs +++ b/packages/wasm-dpp/src/data_contract/state_transition/data_contract_update_transition/validation.rs @@ -28,14 +28,14 @@ use crate::{ #[wasm_bindgen(js_name=validateDataContractUpdateTransitionState)] pub async fn validate_data_contract_update_transition_state( state_repository: ExternalStateRepositoryLike, - state_transition: DataContractUpdateTransitionWasm, - execution_context: StateTransitionExecutionContextWasm, + state_transition: &DataContractUpdateTransitionWasm, + execution_context: &StateTransitionExecutionContextWasm, ) -> Result { let wrapped_state_repository = ExternalStateRepositoryLikeWrapper::new(state_repository); let result = dpp_validate_data_contract_update_transition_state( &wrapped_state_repository, - &state_transition.into(), - &execution_context.into(), + &state_transition.to_owned().into(), + &execution_context.to_owned().into(), ) .await .with_js_error()?; diff --git a/packages/wasm-dpp/src/document/state_transition/document_batch_transition/apply_document_batch_transition.rs b/packages/wasm-dpp/src/document/state_transition/document_batch_transition/apply_document_batch_transition.rs index 01b8f2ed932..d4614092292 100644 --- a/packages/wasm-dpp/src/document/state_transition/document_batch_transition/apply_document_batch_transition.rs +++ b/packages/wasm-dpp/src/document/state_transition/document_batch_transition/apply_document_batch_transition.rs @@ -11,14 +11,14 @@ use crate::{ pub async fn apply_documents_batch_transition_wasm( state_repository: ExternalStateRepositoryLike, transition: &DocumentsBatchTransitionWasm, - execution_context: StateTransitionExecutionContextWasm, + execution_context: &StateTransitionExecutionContextWasm, ) -> Result<(), JsValue> { let wrapped_state_repository = ExternalStateRepositoryLikeWrapper::new(state_repository); let result = apply_documents_batch_transition( &wrapped_state_repository, &transition.0, - &execution_context.into(), + &execution_context.to_owned().into(), ) .await .with_js_error(); diff --git a/packages/wasm-dpp/src/document/state_transition/document_batch_transition/mod.rs b/packages/wasm-dpp/src/document/state_transition/document_batch_transition/mod.rs index f2bac1521c7..5f586880736 100644 --- a/packages/wasm-dpp/src/document/state_transition/document_batch_transition/mod.rs +++ b/packages/wasm-dpp/src/document/state_transition/document_batch_transition/mod.rs @@ -310,12 +310,12 @@ impl DocumentsBatchTransitionWasm { } #[wasm_bindgen(js_name=getKeySecurityLevelRequirement)] - pub fn get_security_level_requirement(&self) -> Vec { - self.0 - .get_security_level_requirement() - .iter() - .map(|security_level| *security_level as u8) - .collect() + pub fn get_security_level_requirement(&self) -> js_sys::Array { + let mut array = js_sys::Array::new(); + for security_level in self.0.get_security_level_requirement() { + array.push(&JsValue::from(security_level as u32)); + } + array } // AbstractStateTransition methods diff --git a/packages/wasm-dpp/src/document/state_transition/document_batch_transition/validation/basic/validate_documents_batch_transition_basic.rs b/packages/wasm-dpp/src/document/state_transition/document_batch_transition/validation/basic/validate_documents_batch_transition_basic.rs index 8e75fbe7455..6f7f98000fa 100644 --- a/packages/wasm-dpp/src/document/state_transition/document_batch_transition/validation/basic/validate_documents_batch_transition_basic.rs +++ b/packages/wasm-dpp/src/document/state_transition/document_batch_transition/validation/basic/validate_documents_batch_transition_basic.rs @@ -17,7 +17,7 @@ pub async fn validate_documents_batch_transition_basic_wasm( protocol_version_validator: ProtocolVersionValidatorWasm, state_repository: ExternalStateRepositoryLike, js_raw_state_transition: JsValue, - execution_context: StateTransitionExecutionContextWasm, + execution_context: &StateTransitionExecutionContextWasm, ) -> Result { let wrapped_state_repository = ExternalStateRepositoryLikeWrapper::new(state_repository); let mut value = js_raw_state_transition.with_serde_to_platform_value()?; @@ -33,7 +33,7 @@ pub async fn validate_documents_batch_transition_basic_wasm( &protocol_version_validator.into(), &value, Arc::new(wrapped_state_repository), - &execution_context.into(), + &execution_context.to_owned().into(), ) .await .with_js_error()?, diff --git a/packages/wasm-dpp/src/document/state_transition/document_batch_transition/validation/state/validate_documents_batch_transitions_state.rs b/packages/wasm-dpp/src/document/state_transition/document_batch_transition/validation/state/validate_documents_batch_transitions_state.rs index 15340aed0d3..c041cf55221 100644 --- a/packages/wasm-dpp/src/document/state_transition/document_batch_transition/validation/state/validate_documents_batch_transitions_state.rs +++ b/packages/wasm-dpp/src/document/state_transition/document_batch_transition/validation/state/validate_documents_batch_transitions_state.rs @@ -12,7 +12,7 @@ use crate::{ pub async fn validate_documents_batch_transition_state_wasm( state_repository: ExternalStateRepositoryLike, state_transition: &DocumentsBatchTransitionWasm, - execution_context: StateTransitionExecutionContextWasm, + execution_context: &StateTransitionExecutionContextWasm, ) -> Result { let wrapped_state_repository = ExternalStateRepositoryLikeWrapper::new(state_repository); @@ -20,7 +20,7 @@ pub async fn validate_documents_batch_transition_state_wasm( validate_documents_batch_transition_state::validate_document_batch_transition_state( &wrapped_state_repository, &state_transition.0, - &execution_context.into(), + &execution_context.to_owned().into(), ) .await .with_js_error()?; diff --git a/packages/wasm-dpp/src/identity/identity_public_key/key_type.rs b/packages/wasm-dpp/src/identity/identity_public_key/key_type.rs index c59ebf6d04a..30a8b3e6687 100644 --- a/packages/wasm-dpp/src/identity/identity_public_key/key_type.rs +++ b/packages/wasm-dpp/src/identity/identity_public_key/key_type.rs @@ -8,6 +8,7 @@ pub enum KeyTypeWasm { BLS12_381 = 1, ECDSA_HASH160 = 2, BIP13_SCRIPT_HASH = 3, + EDDSA_25519_HASH160 = 4, } impl From for KeyTypeWasm { @@ -17,6 +18,7 @@ impl From for KeyTypeWasm { KeyType::BLS12_381 => Self::BLS12_381, KeyType::ECDSA_HASH160 => Self::ECDSA_HASH160, KeyType::BIP13_SCRIPT_HASH => Self::BIP13_SCRIPT_HASH, + KeyType::EDDSA_25519_HASH160 => Self::EDDSA_25519_HASH160, } } } diff --git a/packages/wasm-dpp/src/identity/identity_public_key/purpose.rs b/packages/wasm-dpp/src/identity/identity_public_key/purpose.rs index 86fe89ff01f..ac5a3eacdba 100644 --- a/packages/wasm-dpp/src/identity/identity_public_key/purpose.rs +++ b/packages/wasm-dpp/src/identity/identity_public_key/purpose.rs @@ -9,7 +9,10 @@ pub enum PurposeWasm { ENCRYPTION = 1, /// this key cannot be used for signing documents DECRYPTION = 2, + /// this key cannot be used for signing documents WITHDRAW = 3, + /// this key cannot be used for signing documents + SYSTEM = 4, } impl From for PurposeWasm { @@ -19,6 +22,7 @@ impl From for PurposeWasm { Purpose::ENCRYPTION => PurposeWasm::ENCRYPTION, Purpose::DECRYPTION => PurposeWasm::DECRYPTION, Purpose::WITHDRAW => PurposeWasm::WITHDRAW, + Purpose::SYSTEM => PurposeWasm::SYSTEM, } } } diff --git a/packages/wasm-dpp/src/identity/state_transition/identity_create_transition/apply_identity_create_transition.rs b/packages/wasm-dpp/src/identity/state_transition/identity_create_transition/apply_identity_create_transition.rs index 045c95856d5..a5f88bed590 100644 --- a/packages/wasm-dpp/src/identity/state_transition/identity_create_transition/apply_identity_create_transition.rs +++ b/packages/wasm-dpp/src/identity/state_transition/identity_create_transition/apply_identity_create_transition.rs @@ -11,7 +11,7 @@ use crate::{ pub async fn apply_identity_create_transition_wasm( state_repository: ExternalStateRepositoryLike, state_transition: &IdentityCreateTransitionWasm, - execution_context: StateTransitionExecutionContextWasm, + execution_context: &StateTransitionExecutionContextWasm, ) -> Result<(), JsValue> { let wrapped_state_repository = Arc::new(ExternalStateRepositoryLikeWrapper::new(state_repository)); @@ -21,7 +21,7 @@ pub async fn apply_identity_create_transition_wasm( instance .apply_identity_create_transition( &state_transition.to_owned().into(), - &execution_context.into(), + &execution_context.to_owned().into(), ) .await .map_err(|e| JsValue::from_str(&e.to_string()))?; diff --git a/packages/wasm-dpp/src/identity/state_transition/identity_create_transition/identity_create_transition_state_validator.rs b/packages/wasm-dpp/src/identity/state_transition/identity_create_transition/identity_create_transition_state_validator.rs index 5ccbde35288..959fc3a83d3 100644 --- a/packages/wasm-dpp/src/identity/state_transition/identity_create_transition/identity_create_transition_state_validator.rs +++ b/packages/wasm-dpp/src/identity/state_transition/identity_create_transition/identity_create_transition_state_validator.rs @@ -24,12 +24,12 @@ impl IdentityCreateTransitionStateValidator { pub async fn validate( &self, state_transition: &IdentityCreateTransitionWasm, - execution_context: StateTransitionExecutionContextWasm, + execution_context: &StateTransitionExecutionContextWasm, ) -> Result { let validation_result = validate_identity_create_transition_state( &self.state_repository, &state_transition.to_owned().into(), - &execution_context.into(), + &execution_context.to_owned().into(), ) .await .map_err(from_dpp_err)?; diff --git a/packages/wasm-dpp/src/identity/state_transition/identity_topup_transition/apply_identity_topup_transition.rs b/packages/wasm-dpp/src/identity/state_transition/identity_topup_transition/apply_identity_topup_transition.rs index 692a6dd7462..9961bbaf9f8 100644 --- a/packages/wasm-dpp/src/identity/state_transition/identity_topup_transition/apply_identity_topup_transition.rs +++ b/packages/wasm-dpp/src/identity/state_transition/identity_topup_transition/apply_identity_topup_transition.rs @@ -12,7 +12,7 @@ use crate::{ pub async fn apply_identity_topup_transition_wasm( state_repository: ExternalStateRepositoryLike, state_transition: &IdentityTopUpTransitionWasm, - execution_context: StateTransitionExecutionContextWasm, + execution_context: &StateTransitionExecutionContextWasm, ) -> Result<(), JsValue> { let wrapped_state_repository = Arc::new(ExternalStateRepositoryLikeWrapper::new(state_repository)); @@ -26,7 +26,7 @@ pub async fn apply_identity_topup_transition_wasm( instance .apply( &state_transition.to_owned().into(), - &execution_context.into(), + &execution_context.to_owned().into(), ) .await .map_err(|e| JsValue::from_str(&e.to_string()))?; diff --git a/packages/wasm-dpp/src/identity/state_transition/identity_topup_transition/identity_topup_transition_state_validator.rs b/packages/wasm-dpp/src/identity/state_transition/identity_topup_transition/identity_topup_transition_state_validator.rs index 9c838e33c63..9a790fc45d9 100644 --- a/packages/wasm-dpp/src/identity/state_transition/identity_topup_transition/identity_topup_transition_state_validator.rs +++ b/packages/wasm-dpp/src/identity/state_transition/identity_topup_transition/identity_topup_transition_state_validator.rs @@ -24,12 +24,12 @@ impl IdentityTopUpTransitionStateValidator { pub async fn validate( &self, state_transition: &IdentityTopUpTransitionWasm, - execution_context: StateTransitionExecutionContextWasm, + execution_context: &StateTransitionExecutionContextWasm, ) -> Result { let validation_result = validate_identity_topup_transition_state( &self.state_repository, &state_transition.to_owned().into(), - &execution_context.into(), + &execution_context.to_owned().into(), ) .await .map_err(|e| from_dpp_err(e.into()))?; diff --git a/packages/wasm-dpp/src/identity/state_transition/identity_update_transition/apply_identity_update_transition.rs b/packages/wasm-dpp/src/identity/state_transition/identity_update_transition/apply_identity_update_transition.rs index 6144eb6580a..4afbc53745d 100644 --- a/packages/wasm-dpp/src/identity/state_transition/identity_update_transition/apply_identity_update_transition.rs +++ b/packages/wasm-dpp/src/identity/state_transition/identity_update_transition/apply_identity_update_transition.rs @@ -10,14 +10,14 @@ use crate::{ pub async fn apply_identity_update_transition_wasm( state_repository: ExternalStateRepositoryLike, state_transition: &IdentityUpdateTransitionWasm, - execution_context: StateTransitionExecutionContextWasm, + execution_context: &StateTransitionExecutionContextWasm, ) -> Result<(), JsValue> { let wrapped_state_repository = ExternalStateRepositoryLikeWrapper::new(state_repository); apply_identity_update_transition( &wrapped_state_repository, state_transition.to_owned().into(), - &execution_context.into(), + &execution_context.to_owned().into(), ) .await .map_err(|e| JsValue::from_str(&e.to_string()))?; diff --git a/packages/wasm-dpp/src/identity/state_transition/identity_update_transition/identity_update_transition_state_validator.rs b/packages/wasm-dpp/src/identity/state_transition/identity_update_transition/identity_update_transition_state_validator.rs index 839e525c240..1832e74ff6b 100644 --- a/packages/wasm-dpp/src/identity/state_transition/identity_update_transition/identity_update_transition_state_validator.rs +++ b/packages/wasm-dpp/src/identity/state_transition/identity_update_transition/identity_update_transition_state_validator.rs @@ -40,13 +40,13 @@ impl IdentityUpdateTransitionStateValidatorWasm { pub async fn validate( &self, state_transition: &IdentityUpdateTransitionWasm, - execution_context: StateTransitionExecutionContextWasm, + execution_context: &StateTransitionExecutionContextWasm, ) -> Result { let state_transition: IdentityUpdateTransition = state_transition.to_owned().into(); let validation_result = self .0 - .validate(&state_transition, &execution_context.into()) + .validate(&state_transition, &execution_context.to_owned().into()) .await .map_err(|e| from_dpp_err(e.into()))?; diff --git a/packages/wasm-dpp/src/state_transition/fee/calculate_state_transition_fee.rs b/packages/wasm-dpp/src/state_transition/fee/calculate_state_transition_fee.rs index 81ad9f05855..823b5a22fce 100644 --- a/packages/wasm-dpp/src/state_transition/fee/calculate_state_transition_fee.rs +++ b/packages/wasm-dpp/src/state_transition/fee/calculate_state_transition_fee.rs @@ -9,9 +9,12 @@ use crate::{ #[wasm_bindgen(js_name=calculateStateTransitionFee)] pub fn calculate_state_transition_fee_wasm( state_transition_js: &JsValue, - execution_context: StateTransitionExecutionContextWasm, + execution_context: &StateTransitionExecutionContextWasm, ) -> Result { let state_transition = create_state_transition_from_wasm_instance(state_transition_js)?; - Ok(calculate_state_transition_fee(&state_transition, &execution_context.into()).into()) + Ok( + calculate_state_transition_fee(&state_transition, &execution_context.to_owned().into()) + .into(), + ) } diff --git a/packages/wasm-dpp/src/state_transition/state_transition_facade.rs b/packages/wasm-dpp/src/state_transition/state_transition_facade.rs index d732850c950..a65b543c3b5 100644 --- a/packages/wasm-dpp/src/state_transition/state_transition_facade.rs +++ b/packages/wasm-dpp/src/state_transition/state_transition_facade.rs @@ -95,7 +95,7 @@ impl StateTransitionFacadeWasm { pub async fn validate( &self, raw_state_transition: JsValue, - execution_context: StateTransitionExecutionContextWasm, + execution_context: &StateTransitionExecutionContextWasm, options: JsValue, ) -> Result { let options: ValidateOptionsWasm = if options.is_object() { @@ -108,7 +108,8 @@ impl StateTransitionFacadeWasm { super::super::conversion::create_state_transition_from_wasm_instance( &raw_state_transition, ) { - let execution_context: StateTransitionExecutionContext = execution_context.into(); + let execution_context: StateTransitionExecutionContext = + execution_context.to_owned().into(); (state_transition, execution_context) } else { let state_transition_json = raw_state_transition.with_serde_to_platform_value()?; @@ -134,7 +135,7 @@ impl StateTransitionFacadeWasm { pub async fn validate_basic( &self, raw_state_transition: JsValue, - execution_context: StateTransitionExecutionContextWasm, + execution_context: &StateTransitionExecutionContextWasm, ) -> Result { let state_transition_json; @@ -150,7 +151,7 @@ impl StateTransitionFacadeWasm { let validation_result = self .0 - .validate_basic(&state_transition_json, &execution_context.into()) + .validate_basic(&state_transition_json, &execution_context.to_owned().into()) .await .with_js_error()?; @@ -161,7 +162,7 @@ impl StateTransitionFacadeWasm { pub async fn validate_signature( &self, raw_state_transition: JsValue, - execution_context: StateTransitionExecutionContextWasm, + execution_context: &StateTransitionExecutionContextWasm, ) -> Result { let state_transition = super::super::conversion::create_state_transition_from_wasm_instance( @@ -170,7 +171,7 @@ impl StateTransitionFacadeWasm { let validation_result = self .0 - .validate_signature(state_transition, &execution_context.into()) + .validate_signature(state_transition, &execution_context.to_owned().into()) .await .with_js_error()?; @@ -181,7 +182,7 @@ impl StateTransitionFacadeWasm { pub async fn validate_fee( &self, raw_state_transition: JsValue, - execution_context: StateTransitionExecutionContextWasm, + execution_context: &StateTransitionExecutionContextWasm, ) -> Result { let state_transition = super::super::conversion::create_state_transition_from_wasm_instance( @@ -190,7 +191,7 @@ impl StateTransitionFacadeWasm { let validation_result = self .0 - .validate_fee(&state_transition, &execution_context.into()) + .validate_fee(&state_transition, &execution_context.to_owned().into()) .await .with_js_error()?; @@ -201,7 +202,7 @@ impl StateTransitionFacadeWasm { pub async fn validate_state( &self, raw_state_transition: JsValue, - execution_context: StateTransitionExecutionContextWasm, + execution_context: &StateTransitionExecutionContextWasm, ) -> Result { let state_transition = super::super::conversion::create_state_transition_from_wasm_instance( @@ -210,7 +211,7 @@ impl StateTransitionFacadeWasm { let validation_result = self .0 - .validate_state(&state_transition, &execution_context.into()) + .validate_state(&state_transition, &execution_context.to_owned().into()) .await .with_js_error()?; diff --git a/packages/wasm-dpp/src/state_transition/validation/validate_state_transition_key_signature.rs b/packages/wasm-dpp/src/state_transition/validation/validate_state_transition_key_signature.rs index 8febc7c2d89..e295ac7e7d0 100644 --- a/packages/wasm-dpp/src/state_transition/validation/validate_state_transition_key_signature.rs +++ b/packages/wasm-dpp/src/state_transition/validation/validate_state_transition_key_signature.rs @@ -47,7 +47,7 @@ impl StateTransitionKeySignatureValidatorWasm { pub async fn validate( &self, state_transition: JsValue, - execution_context: StateTransitionExecutionContextWasm, + execution_context: &StateTransitionExecutionContextWasm, ) -> Result { let state_transition = super::super::conversion::create_state_transition_from_wasm_instance( @@ -56,7 +56,7 @@ impl StateTransitionKeySignatureValidatorWasm { let validation_result = self .0 - .validate(&state_transition, &execution_context.into()) + .validate(&state_transition, &execution_context.to_owned().into()) .await .with_js_error()?; Ok(validation_result.map(|_| JsValue::undefined()).into()) diff --git a/packages/wasm-dpp/test/integration/dataContract/validation/validateDataContractFactory.spec.js b/packages/wasm-dpp/test/integration/dataContract/validation/validateDataContractFactory.spec.js index 61e191ec9ce..7aad1205385 100644 --- a/packages/wasm-dpp/test/integration/dataContract/validation/validateDataContractFactory.spec.js +++ b/packages/wasm-dpp/test/integration/dataContract/validation/validateDataContractFactory.spec.js @@ -17,7 +17,6 @@ describe('validateDataContractFactory', () => { let UniqueIndicesLimitReachedError; let SystemPropertyIndexAlreadyPresentError; let InvalidIndexPropertyTypeError; - let InvalidCompoundIndexError; let InvalidIndexedPropertyConstraintError; let InvalidJsonSchemaRefError; @@ -32,7 +31,6 @@ describe('validateDataContractFactory', () => { UniqueIndicesLimitReachedError, SystemPropertyIndexAlreadyPresentError, InvalidIndexPropertyTypeError, - InvalidCompoundIndexError, InvalidIndexedPropertyConstraintError, InvalidJsonSchemaRefError, } = await loadWasmDpp()); @@ -1931,23 +1929,6 @@ describe('validateDataContractFactory', () => { expect(error.getDocumentType()).to.deep.equal('indexedDocument'); expect(error.getIndexDefinition().toObject()).to.deep.equal(indexDefinition); }); - - it('should return invalid result if unique compound index contains both required and optional properties', async () => { - const rawDataContract = dataContract.toObject(); - rawDataContract.documents.optionalUniqueIndexedDocument.required.splice(-1); - - const result = await validateDataContract(rawDataContract); - - expectValidationError(result, InvalidCompoundIndexError); - - const [error] = result.getErrors(); - - expect(error.getCode()).to.equal(1010); - expect(error.getIndexDefinition().toObject()).to.deep.equal( - rawDataContract.documents.optionalUniqueIndexedDocument.indices[1], - ); - expect(error.getDocumentType()).to.equal('optionalUniqueIndexedDocument'); - }); }); }); diff --git a/packages/wasm-dpp/test/integration/document/stateTransition/DocumentsBatchTransition/DocumentBatchTransition.spec.js b/packages/wasm-dpp/test/integration/document/stateTransition/DocumentsBatchTransition/DocumentBatchTransition.spec.js index 4f4e96f96e5..3b7af4f5272 100644 --- a/packages/wasm-dpp/test/integration/document/stateTransition/DocumentsBatchTransition/DocumentBatchTransition.spec.js +++ b/packages/wasm-dpp/test/integration/document/stateTransition/DocumentsBatchTransition/DocumentBatchTransition.spec.js @@ -78,7 +78,11 @@ describe('DocumentBatchTransition', () => { // Nice document has medium security level expect(stateTransitionFixture.getKeySecurityLevelRequirement()) - .to.be.equal(IdentityPublicKey.SECURITY_LEVELS.MEDIUM); + .to.deep.equal([ + IdentityPublicKey.SECURITY_LEVELS.CRITICAL, + IdentityPublicKey.SECURITY_LEVELS.HIGH, + IdentityPublicKey.SECURITY_LEVELS.MEDIUM, + ]); stateTransitionFixture = documentFactory.createStateTransition({ create: [mediumSecurityDocumentFixture, masterSecurityDocumentFixture], @@ -88,7 +92,7 @@ describe('DocumentBatchTransition', () => { // Should be the highest security level out of MEDIUM and MASTER expect(stateTransitionFixture.getKeySecurityLevelRequirement()) - .to.be.equal(IdentityPublicKey.SECURITY_LEVELS.MASTER); + .to.deep.equal([IdentityPublicKey.SECURITY_LEVELS.MASTER]); }); it('should return default security level if no document has a security level defined - Rust', () => { @@ -100,7 +104,10 @@ describe('DocumentBatchTransition', () => { // Should be the default level, which is HIGH expect(stateTransitionFixture.getKeySecurityLevelRequirement()) - .to.be.equal(IdentityPublicKey.SECURITY_LEVELS.HIGH); + .to.deep.equal([ + IdentityPublicKey.SECURITY_LEVELS.CRITICAL, + IdentityPublicKey.SECURITY_LEVELS.HIGH, + ]); }); }); }); diff --git a/packages/wasm-dpp/test/integration/identity/stateTransition/IdentityUpdateTransition/validation/state/validateIdentityUpdateTransitionStateFactory.spec.js b/packages/wasm-dpp/test/integration/identity/stateTransition/IdentityUpdateTransition/validation/state/validateIdentityUpdateTransitionStateFactory.spec.js index c763c5841b7..96a32444696 100644 --- a/packages/wasm-dpp/test/integration/identity/stateTransition/IdentityUpdateTransition/validation/state/validateIdentityUpdateTransitionStateFactory.spec.js +++ b/packages/wasm-dpp/test/integration/identity/stateTransition/IdentityUpdateTransition/validation/state/validateIdentityUpdateTransitionStateFactory.spec.js @@ -63,8 +63,9 @@ describe('validateIdentityUpdateTransitionStateFactory', () => { stateRepositoryMock.fetchLatestPlatformBlockTime = this.sinonSandbox.stub(); stateRepositoryMock.fetchLatestPlatformBlockTime.resolves(blockTime); + executionContext = new StateTransitionExecutionContext(); const validator = new IdentityUpdateTransitionStateValidator(stateRepositoryMock, blsAdapter); - validateIdentityUpdateTransitionState = (st) => validator.validate(st); + validateIdentityUpdateTransitionState = (st) => validator.validate(st, executionContext); stateTransition = await getIdentityUpdateTransitionFixture(); @@ -72,10 +73,6 @@ describe('validateIdentityUpdateTransitionStateFactory', () => { stateTransition.setPublicKeyIdsToDisable(undefined); stateTransition.setPublicKeysDisabledAt(undefined); - executionContext = new StateTransitionExecutionContext(); - - stateTransition.setExecutionContext(executionContext); - const privateKey = '9b67f852093bc61cea0eeca38599dbfba0de28574d2ed9b99d10d33dc1bde7b2'; await stateTransition.signByPrivateKey( @@ -275,10 +272,10 @@ describe('validateIdentityUpdateTransitionStateFactory', () => { // Make code that executes after dry run check to fail stateRepositoryMock.fetchLatestPlatformBlockTime.resolves({}); - stateTransition.getExecutionContext().enableDryRun(); + executionContext.enableDryRun(); const result = await validateIdentityUpdateTransitionState(stateTransition); - stateTransition.getExecutionContext().disableDryRun(); + executionContext.disableDryRun(); expect(result.isValid()).to.be.true(); diff --git a/packages/wasm-dpp/test/integration/stateTransition/StateTransitionFacade.spec.js b/packages/wasm-dpp/test/integration/stateTransition/StateTransitionFacade.spec.js index 81936a835e6..5b8017c2031 100644 --- a/packages/wasm-dpp/test/integration/stateTransition/StateTransitionFacade.spec.js +++ b/packages/wasm-dpp/test/integration/stateTransition/StateTransitionFacade.spec.js @@ -20,6 +20,7 @@ describe('StateTransitionFacade', () => { let dataContract; let identityPublicKey; let identity; + let executionContext; let DashPlatformProtocol; let DataContractFactory; @@ -36,6 +37,7 @@ describe('StateTransitionFacade', () => { let InvalidStateTransitionSignatureError; let DataContractAlreadyPresentError; let BalanceIsNotEnoughError; + let StateTransitionExecutionContext; before(async () => { ({ @@ -54,6 +56,7 @@ describe('StateTransitionFacade', () => { InvalidStateTransitionSignatureError, DataContractAlreadyPresentError, BalanceIsNotEnoughError, + StateTransitionExecutionContext, } = await loadWasmDpp()); }); @@ -63,6 +66,8 @@ describe('StateTransitionFacade', () => { const publicKey = privateKeyModel.toPublicKey().toBuffer(); const publicKeyId = 1; + executionContext = new StateTransitionExecutionContext(); + identityPublicKey = new IdentityPublicKey({ id: publicKeyId, type: IdentityPublicKey.TYPES.ECDSA_SECP256K1, @@ -141,7 +146,7 @@ describe('StateTransitionFacade', () => { const rawStateTransition = dataContractCreateTransition.toObject(); rawStateTransition.protocolVersion = 100; - const result = await dpp.stateTransition.validate(rawStateTransition); + const result = await dpp.stateTransition.validate(rawStateTransition, executionContext); expect(result).to.be.an.instanceOf(ValidationResult); expect(result.isValid()).to.be.false(); @@ -154,7 +159,7 @@ describe('StateTransitionFacade', () => { const rawStateTransition = dataContractCreateTransition.toObject(); rawStateTransition.signature = Buffer.alloc(65).fill(1); - const result = await dpp.stateTransition.validate(rawStateTransition); + const result = await dpp.stateTransition.validate(rawStateTransition, executionContext); expect(result).to.be.an.instanceOf(ValidationResult); expect(result.isValid()).to.be.false(); @@ -165,7 +170,9 @@ describe('StateTransitionFacade', () => { it('should return invalid result if not enough balance to pay fee for State Transition', async () => { identity.setBalance(0); - const result = await dpp.stateTransition.validate(dataContractCreateTransition); + const result = await dpp.stateTransition.validate( + dataContractCreateTransition, executionContext, + ); expect(result).to.be.an.instanceOf(ValidationResult); expect(result.isValid()).to.be.false(); @@ -177,7 +184,9 @@ describe('StateTransitionFacade', () => { it('should return invalid result if State Transition is invalid against state', async () => { stateRepositoryMock.fetchDataContract.resolves(dataContract); - const result = await dpp.stateTransition.validate(dataContractCreateTransition); + const result = await dpp.stateTransition.validate( + dataContractCreateTransition, executionContext, + ); expect(result).to.be.an.instanceOf(ValidationResult); expect(result.isValid()).to.be.false(); @@ -189,6 +198,7 @@ describe('StateTransitionFacade', () => { it('should validate DataContractCreateTransition', async () => { const result = await dpp.stateTransition.validate( dataContractCreateTransition, + executionContext, ); expect(result).to.be.an.instanceOf(ValidationResult); @@ -202,6 +212,7 @@ describe('StateTransitionFacade', () => { stateRepositoryMock.fetchDataContract.resolves(dataContract); const result = await dpp.stateTransition.validate( documentsBatchTransition, + executionContext, ); expect(result).to.be.an.instanceOf(ValidationResult); @@ -212,7 +223,7 @@ describe('StateTransitionFacade', () => { describe('validateBasic', () => { it('should validate State Transition', async () => { const result = await dpp.stateTransition.validateBasic( - dataContractCreateTransition.toObject(), + dataContractCreateTransition.toObject(), executionContext, ); expect(result).to.be.an.instanceOf(ValidationResult); @@ -223,7 +234,7 @@ describe('StateTransitionFacade', () => { describe('validateSignature', () => { it('should validate identity signed State Transition', async () => { const result = await dpp.stateTransition.validateSignature( - dataContractCreateTransition, + dataContractCreateTransition, executionContext, ); expect(result).to.be.an.instanceOf(ValidationResult); @@ -246,7 +257,7 @@ describe('StateTransitionFacade', () => { ); const result = await dpp.stateTransition.validateSignature( - identityCreateTransition, + identityCreateTransition, executionContext, ); expect(result).to.be.an.instanceOf(ValidationResult); @@ -258,6 +269,7 @@ describe('StateTransitionFacade', () => { it('should validate State Transition', async () => { const result = await dpp.stateTransition.validateFee( dataContractCreateTransition, + executionContext, ); expect(result).to.be.an.instanceOf(ValidationResult); @@ -269,6 +281,7 @@ describe('StateTransitionFacade', () => { it('should validate State Transition', async () => { const result = await dpp.stateTransition.validateState( dataContractCreateTransition, + executionContext, ); expect(result).to.be.an.instanceOf(ValidationResult); diff --git a/packages/wasm-dpp/test/unit/dataContract/stateTransition/DataContractCreateTransition/applyDataContractCreateTransitionFactory.spec.js b/packages/wasm-dpp/test/unit/dataContract/stateTransition/DataContractCreateTransition/applyDataContractCreateTransitionFactory.spec.js index 56ae08428d3..615f6842089 100644 --- a/packages/wasm-dpp/test/unit/dataContract/stateTransition/DataContractCreateTransition/applyDataContractCreateTransitionFactory.spec.js +++ b/packages/wasm-dpp/test/unit/dataContract/stateTransition/DataContractCreateTransition/applyDataContractCreateTransitionFactory.spec.js @@ -8,10 +8,8 @@ describe('applyDataContractCreateTransitionFactory', () => { let stateTransition; let dataContract; let factory; - let executionContext; let DataContractCreateTransition; let ApplyDataContractCreateTransition; - let StateTransitionExecutionContext; let dataContractStored; @@ -19,7 +17,6 @@ describe('applyDataContractCreateTransitionFactory', () => { ({ DataContractCreateTransition, ApplyDataContractCreateTransition, - StateTransitionExecutionContext, } = await loadWasmDpp()); }); @@ -32,10 +29,6 @@ describe('applyDataContractCreateTransitionFactory', () => { entropy: Buffer.alloc(32), }); - executionContext = new StateTransitionExecutionContext(); - - stateTransition.setExecutionContext(executionContext); - const stateRepositoryLike = { storeDataContract: async () => { dataContractStored = true; diff --git a/packages/wasm-dpp/test/unit/dataContract/stateTransition/DataContractCreateTransition/validation/state/validateDataContractCreateTransitionStateFactory.spec.js b/packages/wasm-dpp/test/unit/dataContract/stateTransition/DataContractCreateTransition/validation/state/validateDataContractCreateTransitionStateFactory.spec.js index dc50d773e65..16a9fad3603 100644 --- a/packages/wasm-dpp/test/unit/dataContract/stateTransition/DataContractCreateTransition/validation/state/validateDataContractCreateTransitionStateFactory.spec.js +++ b/packages/wasm-dpp/test/unit/dataContract/stateTransition/DataContractCreateTransition/validation/state/validateDataContractCreateTransitionStateFactory.spec.js @@ -37,8 +37,6 @@ describe('validateDataContractCreateTransitionStateFactory', () => { executionContext = new StateTransitionExecutionContext(); - stateTransition.setExecutionContext(executionContext); - dataContractFetched = false; const stateRepositoryLike = { @@ -47,7 +45,9 @@ describe('validateDataContractCreateTransitionStateFactory', () => { }, }; - factory = (t) => validateDataContractCreateTransitionState(stateRepositoryLike, t); + factory = (t) => validateDataContractCreateTransitionState( + stateRepositoryLike, t, executionContext, + ); }); it('should return invalid result if Data Contract is already exist', async () => { @@ -63,6 +63,7 @@ describe('validateDataContractCreateTransitionStateFactory', () => { const result = await validateDataContractCreateTransitionState( stateRepositoryLikeWithContract, stateTransition, + executionContext, ); const [error] = result.getErrors(); diff --git a/packages/wasm-dpp/test/unit/dataContract/stateTransition/DataContractUpdateTransition/applyDataContractUpdateTransitionFactory.spec.js b/packages/wasm-dpp/test/unit/dataContract/stateTransition/DataContractUpdateTransition/applyDataContractUpdateTransitionFactory.spec.js index 82a0a1b8020..7aee611e0f5 100644 --- a/packages/wasm-dpp/test/unit/dataContract/stateTransition/DataContractUpdateTransition/applyDataContractUpdateTransitionFactory.spec.js +++ b/packages/wasm-dpp/test/unit/dataContract/stateTransition/DataContractUpdateTransition/applyDataContractUpdateTransitionFactory.spec.js @@ -31,8 +31,6 @@ describe('applyDataContractUpdateTransitionFactory', () => { executionContext = new StateTransitionExecutionContext(); - stateTransition.setExecutionContext(executionContext); - const stateRepositoryLike = { storeDataContract: async () => { dataContractStored = true; @@ -45,7 +43,7 @@ describe('applyDataContractUpdateTransitionFactory', () => { }); it('should store a data contract from state transition in the repository', async () => { - await factory.applyDataContractUpdateTransition(stateTransition); + await factory.applyDataContractUpdateTransition(stateTransition, executionContext); expect(dataContractStored).to.be.true(); }); }); diff --git a/packages/wasm-dpp/test/unit/dataContract/stateTransition/DataContractUpdateTransition/validation/state/validateDataContractUpdateTransitionStateFactory.spec.js b/packages/wasm-dpp/test/unit/dataContract/stateTransition/DataContractUpdateTransition/validation/state/validateDataContractUpdateTransitionStateFactory.spec.js index e4b2e5d4e39..1314ef5a856 100644 --- a/packages/wasm-dpp/test/unit/dataContract/stateTransition/DataContractUpdateTransition/validation/state/validateDataContractUpdateTransitionStateFactory.spec.js +++ b/packages/wasm-dpp/test/unit/dataContract/stateTransition/DataContractUpdateTransition/validation/state/validateDataContractUpdateTransitionStateFactory.spec.js @@ -44,8 +44,6 @@ describe('validateDataContractUpdateTransitionStateFactory', () => { executionContext = new StateTransitionExecutionContext(); - stateTransition.setExecutionContext(executionContext); - const validator = new DataContractValidator(); const dataContractFactory = new DataContractFactory(protocolVersion.latestVersion, validator); const wasmDataContract = await dataContractFactory.createFromBuffer(dataContract.toBuffer()); @@ -57,6 +55,7 @@ describe('validateDataContractUpdateTransitionStateFactory', () => { validateTransitionWithExistingContract = (t) => validateDataContractUpdateTransitionState( stateRepositoryLike, t, + executionContext, ); }); @@ -68,6 +67,7 @@ describe('validateDataContractUpdateTransitionStateFactory', () => { const validateTransitionWithNoContract = (t) => validateDataContractUpdateTransitionState( stateRepositoryLikeNoDataContract, t, + executionContext, ); const result = await validateTransitionWithNoContract(stateTransition); @@ -114,6 +114,7 @@ describe('validateDataContractUpdateTransitionStateFactory', () => { const validateTransitionWithNoContract = (t) => validateDataContractUpdateTransitionState( stateRepositoryLikeNoDataContract, t, + executionContext, ); executionContext.enableDryRun(); diff --git a/packages/wasm-dpp/test/unit/document/stateTransition/DocumetsBatchTransition/applyDocumentsBatchTransitionFactory.spec.js b/packages/wasm-dpp/test/unit/document/stateTransition/DocumetsBatchTransition/applyDocumentsBatchTransitionFactory.spec.js index 58f6b9d0c27..efb2e6f8e3a 100644 --- a/packages/wasm-dpp/test/unit/document/stateTransition/DocumetsBatchTransition/applyDocumentsBatchTransitionFactory.spec.js +++ b/packages/wasm-dpp/test/unit/document/stateTransition/DocumetsBatchTransition/applyDocumentsBatchTransitionFactory.spec.js @@ -104,7 +104,6 @@ describe('applyDocumentsBatchTransitionFactory', () => { executionContext = new StateTransitionExecutionContext(); stateTransitionJs.setExecutionContext(executionContextJs); - stateTransition.setExecutionContext(executionContext); stateRepositoryMockJs = createStateRepositoryMock(this.sinonSandbox); stateRepositoryMockJs.fetchDataContract.resolves(dataContractJs); @@ -163,7 +162,7 @@ describe('applyDocumentsBatchTransitionFactory', () => { }); it('should call `store`, `replace` and `remove` functions for specific type of transitions - Rust', async () => { - await applyDocumentsBatchTransition(stateRepositoryMock, stateTransition); + await applyDocumentsBatchTransition(stateRepositoryMock, stateTransition, executionContext); expect(stateRepositoryMock.createDocument).to.have.been.calledOnce(); const [fetchContractId, fetchDocumentType] = stateRepositoryMock @@ -203,7 +202,7 @@ describe('applyDocumentsBatchTransitionFactory', () => { const replaceDocumentTransition = documentTransitionsJs[1]; try { - await applyDocumentsBatchTransition(stateRepositoryMock, stateTransition); + await applyDocumentsBatchTransition(stateRepositoryMock, stateTransition, executionContext); expect.fail('Error was not thrown'); } catch (e) { expect(e).to.be.an.instanceOf(DocumentNotProvidedError); @@ -227,11 +226,11 @@ describe('applyDocumentsBatchTransitionFactory', () => { transitions: documentTransitionsJs.map((t) => t.toObject()), }, [dataContract]); - stateTransition.getExecutionContext().enableDryRun(); + executionContext.enableDryRun(); - await applyDocumentsBatchTransition(stateRepositoryMock, stateTransition); + await applyDocumentsBatchTransition(stateRepositoryMock, stateTransition, executionContext); - stateTransition.getExecutionContext().disableDryRun(); + executionContext.disableDryRun(); const [documentTransition] = stateTransition.getTransitions(); diff --git a/packages/wasm-dpp/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/validateDocumentsBatchTransitionStateFactory.spec.js b/packages/wasm-dpp/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/validateDocumentsBatchTransitionStateFactory.spec.js index 7f1182c6da0..e880ec179a6 100644 --- a/packages/wasm-dpp/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/validateDocumentsBatchTransitionStateFactory.spec.js +++ b/packages/wasm-dpp/test/unit/document/stateTransition/DocumetsBatchTransition/validation/state/validateDocumentsBatchTransitionStateFactory.spec.js @@ -92,7 +92,6 @@ describe('validateDocumentsBatchTransitionStateFactory', () => { executionContext = new StateTransitionExecutionContext(); stateTransitionJs.setExecutionContext(executionContextJs); - stateTransition.setExecutionContext(executionContext); stateRepositoryMock = createStateRepositoryMock(this.sinonSandbox); stateRepositoryMockJs = createStateRepositoryMock(this.sinonSandbox); @@ -124,7 +123,9 @@ describe('validateDocumentsBatchTransitionStateFactory', () => { stateRepositoryMock.fetchDataContract.resolves(null); try { - await validateDocumentsBatchTransitionState(stateRepositoryMock, stateTransition); + await validateDocumentsBatchTransitionState( + stateRepositoryMock, stateTransition, executionContext, + ); expect.fail('should throw DataContractNotPresentError'); } catch (e) { @@ -142,7 +143,7 @@ describe('validateDocumentsBatchTransitionStateFactory', () => { stateRepositoryMock.fetchDocuments.resolves([documents[0].getDocument()]); const result = await validateDocumentsBatchTransitionState( - stateRepositoryMock, stateTransition, + stateRepositoryMock, stateTransition, executionContext, ); expect(result.isValid()).is.not.true(); @@ -170,7 +171,7 @@ describe('validateDocumentsBatchTransitionStateFactory', () => { }, [dataContract]); const result = await validateDocumentsBatchTransitionState( - stateRepositoryMock, stateTransition, + stateRepositoryMock, stateTransition, executionContext, ); expect(result).is.instanceOf(ValidationResult); @@ -200,7 +201,7 @@ describe('validateDocumentsBatchTransitionStateFactory', () => { }, [dataContract]); const result = await validateDocumentsBatchTransitionState( - stateRepositoryMock, stateTransition, + stateRepositoryMock, stateTransition, executionContext, ); expect(result).is.instanceOf(ValidationResult); @@ -237,7 +238,7 @@ describe('validateDocumentsBatchTransitionStateFactory', () => { stateRepositoryMock.fetchDocuments.resolves([documents[0].getDocument()]); const result = await validateDocumentsBatchTransitionState( - stateRepositoryMock, stateTransition, + stateRepositoryMock, stateTransition, executionContext, ); expect(result).is.instanceOf(ValidationResult); @@ -280,6 +281,7 @@ describe('validateDocumentsBatchTransitionStateFactory', () => { const result = await validateDocumentsBatchTransitionState( stateRepositoryMock, stateTransition, + executionContext, ); expect(result).is.instanceOf(ValidationResult); @@ -357,7 +359,7 @@ describe('validateDocumentsBatchTransitionStateFactory', () => { stateTransition.setTransitions(transitions); const result = await validateDocumentsBatchTransitionState( - stateRepositoryMock, stateTransition, + stateRepositoryMock, stateTransition, executionContext, ); expect(result).is.instanceOf(ValidationResult); @@ -387,7 +389,7 @@ describe('validateDocumentsBatchTransitionStateFactory', () => { stateTransition.setTransitions(transitions); const result = await validateDocumentsBatchTransitionState( - stateRepositoryMock, stateTransition, + stateRepositoryMock, stateTransition, executionContext, ); expect(result).is.instanceOf(ValidationResult); @@ -425,7 +427,7 @@ describe('validateDocumentsBatchTransitionStateFactory', () => { stateTransition.setTransitions(transitions); const result = await validateDocumentsBatchTransitionState( - stateRepositoryMock, stateTransition, + stateRepositoryMock, stateTransition, executionContext, ); expect(result).is.instanceOf(ValidationResult); @@ -471,10 +473,10 @@ describe('validateDocumentsBatchTransitionStateFactory', () => { t.setCreatedAt(undefined); }); stateTransition.setTransitions(transitions); - stateTransition.getExecutionContext().enableDryRun(); + executionContext.enableDryRun(); const result = await validateDocumentsBatchTransitionState( - stateRepositoryMock, stateTransition, + stateRepositoryMock, stateTransition, executionContext, ); expect(result).to.be.an.instanceOf(ValidationResult); @@ -501,10 +503,10 @@ describe('validateDocumentsBatchTransitionStateFactory', () => { // eslint-disable-next-line no-param-reassign t.setUpdatedAt(new Date().getMilliseconds()); }); - stateTransition.getExecutionContext().enableDryRun(); + executionContext.enableDryRun(); const result = await validateDocumentsBatchTransitionState( - stateRepositoryMock, stateTransition, + stateRepositoryMock, stateTransition, executionContext, ); expect(result).to.be.an.instanceOf(ValidationResult); @@ -540,7 +542,7 @@ describe('validateDocumentsBatchTransitionStateFactory', () => { stateTransition.setTransitions(transitions); const result = await validateDocumentsBatchTransitionState( - stateRepositoryMock, stateTransition, + stateRepositoryMock, stateTransition, executionContext, ); expect(result).is.instanceOf(ValidationResult); @@ -585,10 +587,10 @@ describe('validateDocumentsBatchTransitionStateFactory', () => { t.setUpdatedAt(createdAtMinus6Mins); }); stateTransition.setTransitions(transitions); - stateTransition.getExecutionContext().enableDryRun(); + executionContext.enableDryRun(); const result = await validateDocumentsBatchTransitionState( - stateRepositoryMock, stateTransition, + stateRepositoryMock, stateTransition, executionContext, ); expect(result).to.be.an.instanceOf(ValidationResult); @@ -621,7 +623,7 @@ describe('validateDocumentsBatchTransitionStateFactory', () => { }, [dataContract]); const result = await validateDocumentsBatchTransitionState( - stateRepositoryMock, stateTransition, + stateRepositoryMock, stateTransition, executionContext, ); expect(result).to.be.an.instanceOf(ValidationResult); @@ -658,7 +660,7 @@ describe('validateDocumentsBatchTransitionStateFactory', () => { }, [dataContract]); const result = await validateDocumentsBatchTransitionState( - stateRepositoryMock, stateTransition, + stateRepositoryMock, stateTransition, executionContext, ); expect(result).to.be.an.instanceOf(ValidationResult); diff --git a/packages/wasm-dpp/test/unit/identity/stateTransition/IdentityCreateTransition/applyIdentityCreateTransitionFactory.spec.js b/packages/wasm-dpp/test/unit/identity/stateTransition/IdentityCreateTransition/applyIdentityCreateTransitionFactory.spec.js index da30dfa2165..905140c0d1e 100644 --- a/packages/wasm-dpp/test/unit/identity/stateTransition/IdentityCreateTransition/applyIdentityCreateTransitionFactory.spec.js +++ b/packages/wasm-dpp/test/unit/identity/stateTransition/IdentityCreateTransition/applyIdentityCreateTransitionFactory.spec.js @@ -42,13 +42,12 @@ describe('applyIdentityCreateTransitionFactory', () => { executionContext = new StateTransitionExecutionContext(); - stateTransition.setExecutionContext(executionContext); - output = stateTransition.getAssetLockProof().getOutput(); applyIdentityCreateTransition = (st) => applyIdentityCreateTransitionDPP( stateRepositoryMock, st, + executionContext, ); }); diff --git a/packages/wasm-dpp/test/unit/identity/stateTransition/IdentityCreateTransition/validation/state/validateIdentityCreateTransitionStateFactory.spec.js b/packages/wasm-dpp/test/unit/identity/stateTransition/IdentityCreateTransition/validation/state/validateIdentityCreateTransitionStateFactory.spec.js index 8b9dc5d79a1..e5c85b45dcf 100644 --- a/packages/wasm-dpp/test/unit/identity/stateTransition/IdentityCreateTransition/validation/state/validateIdentityCreateTransitionStateFactory.spec.js +++ b/packages/wasm-dpp/test/unit/identity/stateTransition/IdentityCreateTransition/validation/state/validateIdentityCreateTransitionStateFactory.spec.js @@ -9,11 +9,13 @@ describe('validateIdentityCreateTransitionStateFactory', () => { let validateIdentityCreateTransitionState; let stateTransition; let stateRepositoryMock; + let executionContext; let IdentityCreateTransition; let IdentityPublicKey; let IdentityAlreadyExistsError; let IdentityCreateTransitionStateValidator; + let StateTransitionExecutionContext; before(async () => { ({ @@ -21,15 +23,17 @@ describe('validateIdentityCreateTransitionStateFactory', () => { IdentityAlreadyExistsError, IdentityPublicKey, IdentityCreateTransitionStateValidator, + StateTransitionExecutionContext, } = await loadWasmDpp()); }); beforeEach(async function () { + executionContext = new StateTransitionExecutionContext(); const privateKey = Buffer.from('af432c476f65211f45f48f1d42c9c0b497e56696aa1736b40544ef1a496af837', 'hex'); stateRepositoryMock = createStateRepositoryMock(this.sinonSandbox); const validator = new IdentityCreateTransitionStateValidator(stateRepositoryMock); - validateIdentityCreateTransitionState = (st) => validator.validate(st); + validateIdentityCreateTransitionState = (st) => validator.validate(st, executionContext); stateTransition = new IdentityCreateTransition( getIdentityCreateTransitionFixture().toObject(), @@ -69,11 +73,11 @@ describe('validateIdentityCreateTransitionStateFactory', () => { it('should return valid result on dry run', async () => { stateRepositoryMock.fetchIdentityBalance.resolves(1); - stateTransition.getExecutionContext().enableDryRun(); + executionContext.enableDryRun(); const result = await validateIdentityCreateTransitionState(stateTransition); - stateTransition.getExecutionContext().disableDryRun(); + executionContext.disableDryRun(); expect(result.isValid()).to.be.true(); }); diff --git a/packages/wasm-dpp/test/unit/identity/stateTransition/IdentityTopUpTransition/applyIdentityTopUpTransitionFactory.spec.js b/packages/wasm-dpp/test/unit/identity/stateTransition/IdentityTopUpTransition/applyIdentityTopUpTransitionFactory.spec.js index bbc9791fc8e..6dc0b06bae1 100644 --- a/packages/wasm-dpp/test/unit/identity/stateTransition/IdentityTopUpTransition/applyIdentityTopUpTransitionFactory.spec.js +++ b/packages/wasm-dpp/test/unit/identity/stateTransition/IdentityTopUpTransition/applyIdentityTopUpTransitionFactory.spec.js @@ -45,11 +45,10 @@ describe('applyIdentityTopUpTransitionFactory', () => { executionContext = new StateTransitionExecutionContext(); - stateTransition.setExecutionContext(executionContext); - applyIdentityTopUpTransition = (st) => applyIdentityTopUpTransitionDPP( stateRepositoryMock, st, + executionContext, ); }); diff --git a/packages/wasm-dpp/test/unit/identity/stateTransition/IdentityTopUpTransition/validation/state/validateIdentityTopUpTransitionStateFactory.spec.js b/packages/wasm-dpp/test/unit/identity/stateTransition/IdentityTopUpTransition/validation/state/validateIdentityTopUpTransitionStateFactory.spec.js index 13c3db07eee..62687612115 100644 --- a/packages/wasm-dpp/test/unit/identity/stateTransition/IdentityTopUpTransition/validation/state/validateIdentityTopUpTransitionStateFactory.spec.js +++ b/packages/wasm-dpp/test/unit/identity/stateTransition/IdentityTopUpTransition/validation/state/validateIdentityTopUpTransitionStateFactory.spec.js @@ -7,14 +7,17 @@ describe('validateIdentityTopUpTransitionStateFactory', () => { let validateIdentityTopUpTransitionState; let stateTransition; let stateRepositoryMock; + let executionContext; let IdentityTopUpTransition; let IdentityTopUpTransitionStateValidator; + let StateTransitionExecutionContext; before(async () => { ({ IdentityTopUpTransition, IdentityTopUpTransitionStateValidator, + StateTransitionExecutionContext, } = await loadWasmDpp()); }); @@ -27,8 +30,9 @@ describe('validateIdentityTopUpTransitionStateFactory', () => { const validator = new IdentityTopUpTransitionStateValidator(stateRepositoryMock); + executionContext = new StateTransitionExecutionContext(); validateIdentityTopUpTransitionState = (st) => validator.validate( - st, + st, executionContext, ); }); diff --git a/packages/wasm-dpp/test/unit/identity/stateTransition/IdentityUpdateTransition/applyIdentityUpdateTransitionFactory.spec.js b/packages/wasm-dpp/test/unit/identity/stateTransition/IdentityUpdateTransition/applyIdentityUpdateTransitionFactory.spec.js index fc9cb6b61c9..2da6dd44d4d 100644 --- a/packages/wasm-dpp/test/unit/identity/stateTransition/IdentityUpdateTransition/applyIdentityUpdateTransitionFactory.spec.js +++ b/packages/wasm-dpp/test/unit/identity/stateTransition/IdentityUpdateTransition/applyIdentityUpdateTransitionFactory.spec.js @@ -25,7 +25,6 @@ describe('applyIdentityUpdateTransition', () => { stateTransition.setRevision(stateTransition.getRevision() + 1); executionContext = new StateTransitionExecutionContext(); - stateTransition.setExecutionContext(executionContext); stateRepositoryMock = createStateRepositoryMock(this.sinonSandbox); stateRepositoryMock.updateIdentityRevision.resolves(); @@ -35,6 +34,7 @@ describe('applyIdentityUpdateTransition', () => { applyIdentityUpdateTransition = (st) => applyIdentityUpdateTransitionDPP( stateRepositoryMock, st, + executionContext, ); }); @@ -69,11 +69,11 @@ describe('applyIdentityUpdateTransition', () => { it('should add and disable public keys on dry run', async function () { const { match } = this.sinonSandbox; - stateTransition.getExecutionContext().enableDryRun(); + executionContext.enableDryRun(); await applyIdentityUpdateTransition(stateTransition); - stateTransition.getExecutionContext().disableDryRun(); + executionContext.disableDryRun(); expect(stateRepositoryMock.updateIdentityRevision).to.be.calledOnceWithExactly( match((id) => id.toBuffer().equals(stateTransition.getOwnerId().toBuffer())), diff --git a/packages/wasm-dpp/test/unit/stateTransition/validation/validateStateTransitionBasicFactory.spec.js b/packages/wasm-dpp/test/unit/stateTransition/validation/validateStateTransitionBasicFactory.spec.js index ab013f35a20..e82de2102e4 100644 --- a/packages/wasm-dpp/test/unit/stateTransition/validation/validateStateTransitionBasicFactory.spec.js +++ b/packages/wasm-dpp/test/unit/stateTransition/validation/validateStateTransitionBasicFactory.spec.js @@ -13,6 +13,7 @@ let { StateTransitionMaxSizeExceededError, JsonSchemaError, ValidationResult, + StateTransitionExecutionContext, } = require('../../../..'); describe('validateStateTransitionBasicFactory', () => { @@ -20,6 +21,7 @@ describe('validateStateTransitionBasicFactory', () => { let dataContract; let stateTransition; let dpp; + let executionContext; beforeEach(async function beforeEach() { ({ @@ -27,6 +29,7 @@ describe('validateStateTransitionBasicFactory', () => { MissingStateTransitionTypeError, InvalidStateTransitionTypeError, StateTransitionMaxSizeExceededError, + StateTransitionExecutionContext, JsonSchemaError, ValidationResult, } = await loadWasmDpp()); @@ -45,12 +48,14 @@ describe('validateStateTransitionBasicFactory', () => { await stateTransition.sign(identityPublicKey, privateKey, getBlsMock()); rawStateTransition = stateTransition.toObject(); + + executionContext = new StateTransitionExecutionContext(); }); it('should return invalid result if ST type is missing', async () => { delete rawStateTransition.type; - const result = await dpp.stateTransition.validateBasic(rawStateTransition); + const result = await dpp.stateTransition.validateBasic(rawStateTransition, executionContext); await expectValidationError(result); @@ -62,7 +67,7 @@ describe('validateStateTransitionBasicFactory', () => { it('should return invalid result if ST type is not valid', async () => { rawStateTransition.type = 66; - const result = await dpp.stateTransition.validateBasic(rawStateTransition); + const result = await dpp.stateTransition.validateBasic(rawStateTransition, executionContext); await expectValidationError(result); @@ -73,7 +78,7 @@ describe('validateStateTransitionBasicFactory', () => { it('should return invalid result if ST is invalid against validation function', async () => { delete rawStateTransition.signaturePublicKeyId; - const result = await dpp.stateTransition.validateBasic(rawStateTransition); + const result = await dpp.stateTransition.validateBasic(rawStateTransition, executionContext); await expectValidationError(result); @@ -95,6 +100,7 @@ describe('validateStateTransitionBasicFactory', () => { const result = await dpp.stateTransition.validateBasic( rawStateTransition, + executionContext, ); await expectValidationError(result, StateTransitionMaxSizeExceededError); @@ -105,7 +111,7 @@ describe('validateStateTransitionBasicFactory', () => { }); it('should return valid result', async () => { - const result = await dpp.stateTransition.validateBasic(rawStateTransition); + const result = await dpp.stateTransition.validateBasic(rawStateTransition, executionContext); expect(result).to.be.an.instanceOf(ValidationResult); expect(result.isValid()).to.be.true(); diff --git a/packages/wasm-dpp/test/unit/stateTransition/validation/validateStateTransitionKeySignatureFactory.spec.js b/packages/wasm-dpp/test/unit/stateTransition/validation/validateStateTransitionKeySignatureFactory.spec.js index 1ce9b8cce9e..501a9a94840 100644 --- a/packages/wasm-dpp/test/unit/stateTransition/validation/validateStateTransitionKeySignatureFactory.spec.js +++ b/packages/wasm-dpp/test/unit/stateTransition/validation/validateStateTransitionKeySignatureFactory.spec.js @@ -11,6 +11,7 @@ describe('validateStateTransitionKeySignatureFactory', () => { let stateTransition; let stateRepositoryMock; let validateStateTransitionKeySignature; + let executionContext; let InvalidStateTransitionSignatureError; let StateTransitionKeySignatureValidator; @@ -33,6 +34,7 @@ describe('validateStateTransitionKeySignatureFactory', () => { }); beforeEach(function beforeEach() { + executionContext = new StateTransitionExecutionContext(); const stateTransitionJS = getIdentityCreateTransitionFixture(); const rawStateTransition = stateTransitionJS.toObject(); @@ -42,7 +44,7 @@ describe('validateStateTransitionKeySignatureFactory', () => { const validator = new StateTransitionKeySignatureValidator(stateRepositoryMock); - validateStateTransitionKeySignature = (st) => validator.validate(st); + validateStateTransitionKeySignature = (st) => validator.validate(st, executionContext); }); it('should return invalid result if signature is not valid', async () => { diff --git a/packages/wasm-dpp/test/unit/stateTransition/validation/validateStateTransitionStateFactory.spec.js b/packages/wasm-dpp/test/unit/stateTransition/validation/validateStateTransitionStateFactory.spec.js index 712fa1ff234..8c99fb2779c 100644 --- a/packages/wasm-dpp/test/unit/stateTransition/validation/validateStateTransitionStateFactory.spec.js +++ b/packages/wasm-dpp/test/unit/stateTransition/validation/validateStateTransitionStateFactory.spec.js @@ -9,12 +9,14 @@ let { InvalidStateTransitionTypeError, ValidationResult, DataContractAlreadyPresentError, + StateTransitionExecutionContext, } = require('../../../..'); describe('validateStateTransitionStateFactory', () => { let stateTransition; let dpp; let stateRepositoryMock; + let executionContext; beforeEach(async function beforeEach() { ({ @@ -22,8 +24,10 @@ describe('validateStateTransitionStateFactory', () => { InvalidStateTransitionTypeError, ValidationResult, DataContractAlreadyPresentError, + StateTransitionExecutionContext, } = await loadWasmDpp()); const dataContract = await getDataContractFixture(); + executionContext = new StateTransitionExecutionContext(); stateRepositoryMock = createStateRepositoryMock(this.sinonSandbox); stateRepositoryMock.fetchDataContract.resolves(); @@ -46,7 +50,7 @@ describe('validateStateTransitionStateFactory', () => { }; try { - await dpp.stateTransition.validateState(stateTransition); + await dpp.stateTransition.validateState(stateTransition, executionContext); expect.fail('should throw InvalidStateTransitionTypeError'); } catch (e) { @@ -58,7 +62,7 @@ describe('validateStateTransitionStateFactory', () => { it('should return invalid result if Data Contract State Transition is not valid', async () => { stateRepositoryMock.fetchDataContract.resolves(await getDataContractFixture()); - const result = await dpp.stateTransition.validateState(stateTransition); + const result = await dpp.stateTransition.validateState(stateTransition, executionContext); await expectValidationError(result); @@ -70,7 +74,7 @@ describe('validateStateTransitionStateFactory', () => { }); it('should return valid result', async () => { - const result = await dpp.stateTransition.validateState(stateTransition); + const result = await dpp.stateTransition.validateState(stateTransition, executionContext); expect(result).to.be.an.instanceOf(ValidationResult); expect(result.isValid()).to.be.true();