From b422debab844722284a6203fd491ebc9de64cc09 Mon Sep 17 00:00:00 2001 From: "markin.io" Date: Wed, 19 Apr 2023 18:17:12 +0100 Subject: [PATCH] test: fix rs-dpp tests --- packages/rs-dpp/src/document/document.rs | 6 +++- .../documents_batch_transition/mod.rs | 34 +++++++------------ .../consensus/abstract_consensus_error.rs | 4 +-- .../apply_identity_topup_transition.rs | 12 +++---- ...stract_state_transition_identity_signed.rs | 14 ++++---- .../src/state_transition/serialization.rs | 13 +++++-- .../data_contract_validator_spec.rs | 34 ------------------- .../identity/identity_public_key_spec.rs | 4 +-- .../identity_update_transition_spec.rs | 12 +++---- .../validation/public_keys_validator_spec.rs | 2 +- 10 files changed, 53 insertions(+), 82 deletions(-) diff --git a/packages/rs-dpp/src/document/document.rs b/packages/rs-dpp/src/document/document.rs index bb967baa197..9e0dc970f4b 100644 --- a/packages/rs-dpp/src/document/document.rs +++ b/packages/rs-dpp/src/document/document.rs @@ -433,6 +433,7 @@ mod tests { use super::*; use crate::data_contract::document_type::random_document::CreateRandomDocument; use crate::data_contract::extra::common::json_document_to_cbor; + use regex::Regex; #[test] fn test_serialization() { @@ -504,6 +505,9 @@ mod tests { let document = document_type.random_document(Some(3333)); let document_string = format!("{}", document); - assert_eq!(document_string.as_str(), "id:2vq574DjKi7ZD8kJ6dMHxT5wu6ZKD2bW5xKAyKAGW7qZ owner_id:ChTEGXJcpyknkADUC5s6tAzvPqVG7x6Lo1Nr5mFtj2mk created_at:2027-09-24 14:16:54 updated_at:2030-06-20 21:52:44 avatarUrl:string RD1DbW18RuyblDX7hxB3[...(1936)] displayName:string jALmlamgYbnlKUkT1 publicMessage:string oyGtAOjibsOvx9OUjxVO[...(110)] ") + + let pattern = r#"id:45ZNwGcxeMpLpYmiVEKKBKXbZfinrhjZLkau1GWizPFX owner_id:2vq574DjKi7ZD8kJ6dMHxT5wu6ZKD2bW5xKAyKAGW7qZ created_at:(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}) updated_at:(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}) avatarUrl:string y8RD1DbW18RuyblDX7hx\[...\(670\)\] displayName:string SvAQrzsslj0ESc15GQB publicMessage:string ccpKt9ckWftHIEKdBlas\[...\(36\)\] .*"#; + let re = Regex::new(pattern).unwrap(); + assert!(re.is_match(document_string.as_str())); } } diff --git a/packages/rs-dpp/src/document/state_transition/documents_batch_transition/mod.rs b/packages/rs-dpp/src/document/state_transition/documents_batch_transition/mod.rs index 3a380b61dd5..0964f03c008 100644 --- a/packages/rs-dpp/src/document/state_transition/documents_batch_transition/mod.rs +++ b/packages/rs-dpp/src/document/state_transition/documents_batch_transition/mod.rs @@ -532,6 +532,7 @@ pub fn get_security_level_requirement(v: &JsonValue, default: SecurityLevel) -> #[cfg(test)] mod test { + use itertools::Itertools; use std::sync::Arc; use platform_value::Bytes32; @@ -595,13 +596,10 @@ mod test { )]) .expect("batch transition should be created"); - assert_eq!( - &SecurityLevel::MEDIUM, - batch_transition - .get_security_level_requirement() - .first() - .unwrap() - ); + assert!(batch_transition + .get_security_level_requirement() + .iter() + .contains(&SecurityLevel::MEDIUM)); let batch_transition = document_factory .create_state_transition(vec![( @@ -613,13 +611,10 @@ mod test { )]) .expect("batch transition should be created"); - assert_eq!( - &SecurityLevel::MASTER, - batch_transition - .get_security_level_requirement() - .first() - .unwrap() - ); + assert!(batch_transition + .get_security_level_requirement() + .iter() + .contains(&SecurityLevel::MASTER)); let batch_transition = document_factory .create_state_transition(vec![( @@ -628,13 +623,10 @@ mod test { )]) .expect("batch transition should be created"); - assert_eq!( - &SecurityLevel::HIGH, - batch_transition - .get_security_level_requirement() - .first() - .unwrap() - ); + assert!(batch_transition + .get_security_level_requirement() + .iter() + .contains(&SecurityLevel::HIGH)); } #[test] diff --git a/packages/rs-dpp/src/errors/consensus/abstract_consensus_error.rs b/packages/rs-dpp/src/errors/consensus/abstract_consensus_error.rs index 74eac9fa77b..96e8b6152bb 100644 --- a/packages/rs-dpp/src/errors/consensus/abstract_consensus_error.rs +++ b/packages/rs-dpp/src/errors/consensus/abstract_consensus_error.rs @@ -265,8 +265,8 @@ impl From for ConsensusError { } #[cfg(test)] -impl From for ConsensusError { - fn from(error: TestConsensusError) -> Self { +impl From for ConsensusError { + fn from(error: basic::TestConsensusError) -> Self { Self::TestConsensusError(error) } } diff --git a/packages/rs-dpp/src/identity/state_transition/identity_topup_transition/apply_identity_topup_transition.rs b/packages/rs-dpp/src/identity/state_transition/identity_topup_transition/apply_identity_topup_transition.rs index 15f91ffc53a..ce3693d0baf 100644 --- a/packages/rs-dpp/src/identity/state_transition/identity_topup_transition/apply_identity_topup_transition.rs +++ b/packages/rs-dpp/src/identity/state_transition/identity_topup_transition/apply_identity_topup_transition.rs @@ -113,7 +113,7 @@ mod test { state_repository_for_apply .expect_add_to_identity_balance() .times(1) - .with(eq(identity_id), eq(90000000), always()) + .with(eq(identity_id), eq(100000000000), always()) .returning(|_, _, _| Ok(())); state_repository_for_apply @@ -125,7 +125,7 @@ mod test { state_repository_for_apply .expect_add_to_system_credits() .times(1) - .with(eq(90000000), always()) + .with(eq(100000000000), always()) .returning(|_, _| Ok(())); state_repository_for_apply @@ -164,7 +164,7 @@ mod test { state_repository_for_apply .expect_add_to_identity_balance() .times(1) - .with(eq(identity_id), eq(90000000), always()) + .with(eq(identity_id), eq(100000000000), always()) .returning(|_, _, _| Ok(())); state_repository_for_apply @@ -176,7 +176,7 @@ mod test { state_repository_for_apply .expect_add_to_system_credits() .times(1) - .with(eq(90000000 - 5), always()) + .with(eq(100000000000 - 5), always()) .returning(|_, _| Ok(())); state_repository_for_apply @@ -215,7 +215,7 @@ mod test { state_repository_for_apply .expect_add_to_identity_balance() .times(1) - .with(eq(identity_id), eq(90000000), always()) + .with(eq(identity_id), eq(100000000000), always()) .returning(|_, _, _| Ok(())); state_repository_for_apply @@ -227,7 +227,7 @@ mod test { state_repository_for_apply .expect_add_to_system_credits() .times(1) - .with(eq(90000000), always()) + .with(eq(100000000000), always()) .returning(|_, _| Ok(())); state_repository_for_apply diff --git a/packages/rs-dpp/src/state_transition/abstract_state_transition_identity_signed.rs b/packages/rs-dpp/src/state_transition/abstract_state_transition_identity_signed.rs index 367d82f0389..a40e7d893bd 100644 --- a/packages/rs-dpp/src/state_transition/abstract_state_transition_identity_signed.rs +++ b/packages/rs-dpp/src/state_transition/abstract_state_transition_identity_signed.rs @@ -193,6 +193,8 @@ pub fn get_compressed_public_ec_key(private_key: &[u8]) -> Result<[u8; 33], Prot mod test { use chrono::Utc; use platform_value::{BinaryData, Value}; + use rand::rngs::StdRng; + use rand::SeedableRng; use serde::{Deserialize, Serialize}; use serde_json::json; use std::convert::TryInto; @@ -200,6 +202,7 @@ mod test { use crate::document::DocumentsBatchTransition; use crate::state_transition::state_transition_execution_context::StateTransitionExecutionContext; + use crate::ProtocolError::InvalidSignaturePublicKeySecurityLevelError; use crate::{ assert_error_contains, identity::{KeyID, SecurityLevel}, @@ -318,6 +321,7 @@ mod test { fn get_test_keys() -> Keys { let secp = dashcore::secp256k1::Secp256k1::new(); let mut rng = dashcore::secp256k1::rand::thread_rng(); + let mut std_rng = StdRng::seed_from_u64(99999); let (private_key, public_key) = secp.generate_keypair(&mut rng); let public_key_id = 1; @@ -325,10 +329,8 @@ mod test { let ec_public_compressed_bytes = public_key.serialize(); let ec_public_uncompressed_bytes = public_key.serialize_uncompressed(); - let mut buffer = [0u8; 32]; - let _ = getrandom::getrandom(&mut buffer); - let bls_private = bls_signatures::PrivateKey::from_bytes(buffer.as_slice(), false) - .expect("expected private key"); + let bls_private = + bls_signatures::PrivateKey::generate_dash(&mut std_rng).expect("expected private key"); let bls_public = bls_private .g1_element() .expect("expected to make public key"); @@ -488,9 +490,9 @@ mod test { .sign(&keys.identity_public_key, &keys.ec_private, &bls) .unwrap_err(); match sign_error { - ProtocolError::PublicKeySecurityLevelNotMetError(err) => { + InvalidSignaturePublicKeySecurityLevelError(err) => { assert_eq!(SecurityLevel::MEDIUM, err.public_key_security_level()); - assert_eq!(SecurityLevel::HIGH, err.required_security_level()); + assert_eq!(vec![SecurityLevel::HIGH], err.allowed_key_security_levels()); } error => { panic!("invalid error type: {}", error) diff --git a/packages/rs-dpp/src/state_transition/serialization.rs b/packages/rs-dpp/src/state_transition/serialization.rs index 824aa957c2b..f2ebb5a77b1 100644 --- a/packages/rs-dpp/src/state_transition/serialization.rs +++ b/packages/rs-dpp/src/state_transition/serialization.rs @@ -43,6 +43,7 @@ mod tests { use crate::document::document_transition::Action; use crate::document::DocumentsBatchTransition; use crate::identity::core_script::CoreScript; + use crate::identity::state_transition::asset_lock_proof::AssetLockProof; use crate::identity::state_transition::identity_create_transition::IdentityCreateTransition; use crate::identity::state_transition::identity_credit_withdrawal_transition::{ IdentityCreditWithdrawalTransition, Pooling, @@ -56,7 +57,7 @@ mod tests { }; use crate::tests::fixtures::{ get_data_contract_fixture, get_document_transitions_fixture, - get_documents_fixture_with_owner_id_from_contract, + get_documents_fixture_with_owner_id_from_contract, raw_instant_asset_lock_proof_fixture, }; use crate::version::LATEST_VERSION; use crate::{NativeBlsModule, ProtocolError}; @@ -67,7 +68,10 @@ mod tests { #[test] fn identity_create_transition_ser_de() { - let identity = Identity::random_identity(5, Some(5)); + let mut identity = Identity::random_identity(5, Some(5)); + let asset_lock_proof = raw_instant_asset_lock_proof_fixture(None); + identity.set_asset_lock_proof(AssetLockProof::Instant(asset_lock_proof)); + let identity_create_transition: IdentityCreateTransition = identity .try_into() .expect("expected to make an identity create transition"); @@ -80,7 +84,10 @@ mod tests { #[test] fn identity_topup_transition_ser_de() { - let identity = Identity::random_identity(5, Some(5)); + let mut identity = Identity::random_identity(5, Some(5)); + let asset_lock_proof = raw_instant_asset_lock_proof_fixture(None); + identity.set_asset_lock_proof(AssetLockProof::Instant(asset_lock_proof)); + let identity_topup_transition = IdentityTopUpTransition { asset_lock_proof: identity .asset_lock_proof diff --git a/packages/rs-dpp/src/tests/data_contract/validation/data_contract_validator_spec.rs b/packages/rs-dpp/src/tests/data_contract/validation/data_contract_validator_spec.rs index ef592a556df..f4c52d8478c 100644 --- a/packages/rs-dpp/src/tests/data_contract/validation/data_contract_validator_spec.rs +++ b/packages/rs-dpp/src/tests/data_contract/validation/data_contract_validator_spec.rs @@ -2446,40 +2446,6 @@ mod indices { } } - #[test] - fn should_return_invalid_result_if_unique_compound_index_contains_both_required_and_optional_properties( - ) { - let TestData { - mut raw_data_contract, - data_contract_validator, - .. - } = setup_test(); - - if let Some(Value::Array(arr)) = raw_data_contract - .get_optional_mut_value_at_path("documents.optionalUniqueIndexedDocument.required") - .expect("expected to get optional value at path") - { - arr.pop(); - } - - let result = data_contract_validator - .validate(&raw_data_contract) - .expect("validation result should be returned"); - let error = result.errors.get(0).expect("the error should be present"); - let index_error = get_index_error(error); - - assert_eq!(1010, index_error.get_code()); - match index_error { - IndexError::InvalidCompoundIndexError(err) => { - assert_eq!( - err.document_type(), - "optionalUniqueIndexedDocument".to_string() - ); - } - _ => panic!("Expected InvalidCompoundIndexError, got {}", index_error), - } - } - #[test] fn should_have_valid_property_names() { let TestData { diff --git a/packages/rs-dpp/src/tests/identity/identity_public_key_spec.rs b/packages/rs-dpp/src/tests/identity/identity_public_key_spec.rs index 67ed5beab90..7ca44fa322f 100644 --- a/packages/rs-dpp/src/tests/identity/identity_public_key_spec.rs +++ b/packages/rs-dpp/src/tests/identity/identity_public_key_spec.rs @@ -198,8 +198,8 @@ mod from_raw_object { assert_eq!(public_key.key_type, KeyType::BLS12_381); assert_eq!( vec![ - 111, 89, 76, 223, 228, 50, 201, 143, 165, 74, 149, 193, 215, 143, 217, 170, 49, - 108, 229, 150 + 41, 182, 195, 61, 168, 53, 154, 177, 166, 144, 85, 113, 1, 53, 136, 83, 16, 114, + 51, 82 ], public_key.hash().unwrap() ); diff --git a/packages/rs-dpp/src/tests/identity/state_transition/identity_update_transition/identity_update_transition_spec.rs b/packages/rs-dpp/src/tests/identity/state_transition/identity_update_transition/identity_update_transition_spec.rs index 1fb65a26022..b49b1e5f62d 100644 --- a/packages/rs-dpp/src/tests/identity/state_transition/identity_update_transition/identity_update_transition_spec.rs +++ b/packages/rs-dpp/src/tests/identity/state_transition/identity_update_transition/identity_update_transition_spec.rs @@ -145,11 +145,11 @@ fn to_object() { { "id" : 3u32, + "type": 0u8, "purpose" : 0u8, "securityLevel" : 0u8, - "type": 0u8, - "data" :BinaryData::new(base64::decode("AkVuTKyF3YgKLAQlLEtaUL2HTditwGILfWUVqjzYnIgH").unwrap()), "readOnly" : false, + "data" :BinaryData::new(base64::decode("AkVuTKyF3YgKLAQlLEtaUL2HTditwGILfWUVqjzYnIgH").unwrap()), "signature" : BinaryData::new(vec![0u8;65]) } ], @@ -176,11 +176,11 @@ fn to_object_with_signature_skipped() { { "id" : 3u32, + "type": 0u8, "purpose" : 0u8, "securityLevel" : 0u8, - "type": 0u8, - "data" :BinaryData::new(base64::decode("AkVuTKyF3YgKLAQlLEtaUL2HTditwGILfWUVqjzYnIgH").unwrap()), "readOnly" : false, + "data" :BinaryData::new(base64::decode("AkVuTKyF3YgKLAQlLEtaUL2HTditwGILfWUVqjzYnIgH").unwrap()), } ], "disablePublicKeys" : [0u32], @@ -208,11 +208,11 @@ fn to_json() { { "id" : 3u32, + "type": 0u8, "purpose" : 0u8, "securityLevel" : 0u8, - "type": 0u8, - "data" : BinaryData::new(base64::decode("AkVuTKyF3YgKLAQlLEtaUL2HTditwGILfWUVqjzYnIgH").unwrap()), "readOnly" : false, + "data" : BinaryData::new(base64::decode("AkVuTKyF3YgKLAQlLEtaUL2HTditwGILfWUVqjzYnIgH").unwrap()), "signature" : BinaryData::new(vec![0;65]), } ], diff --git a/packages/rs-dpp/src/tests/identity/validation/public_keys_validator_spec.rs b/packages/rs-dpp/src/tests/identity/validation/public_keys_validator_spec.rs index b0628ddd04e..f9167e5ea75 100644 --- a/packages/rs-dpp/src/tests/identity/validation/public_keys_validator_spec.rs +++ b/packages/rs-dpp/src/tests/identity/validation/public_keys_validator_spec.rs @@ -541,6 +541,6 @@ pub fn should_return_invalid_result_if_bls12_381_public_key_is_invalid() { //assert_eq!(error.validation_error(), TypeError); assert_eq!( error.validation_error().as_ref().unwrap().message(), - "Group decode error" + "Given G1 non-infinity element must start with 0b10" ); }