Skip to content

Commit 04e71b4

Browse files
a lot more tests
1 parent 5f0776e commit 04e71b4

File tree

12 files changed

+1230
-95
lines changed

12 files changed

+1230
-95
lines changed

packages/rs-dpp/src/data_contract/associated_token/token_configuration/accessors/v0/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ use crate::data_contract::associated_token::token_keeps_history_rules::TokenKeep
55
use crate::data_contract::change_control_rules::authorized_action_takers::AuthorizedActionTakers;
66
use crate::data_contract::change_control_rules::ChangeControlRules;
77
use crate::data_contract::GroupContractPosition;
8-
use std::collections::{BTreeMap, BTreeSet};
8+
use std::collections::BTreeSet;
99

1010
/// Accessor trait for getters of `TokenConfigurationV0`
1111
pub trait TokenConfigurationV0Getters {

packages/rs-dpp/src/errors/consensus/codes.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -236,7 +236,7 @@ impl ErrorWithCode for StateError {
236236
Self::DataContractUpdatePermissionError(_) => 40003,
237237
Self::DataContractUpdateActionNotAllowedError(_) => 40004,
238238
Self::PreProgrammedDistributionTimestampInPastError(_) => 40005,
239-
Self::IdentityForChangeControlRuleNotFoundError(_) => 40006,
239+
Self::IdentityInTokenConfigurationNotFoundError(_) => 40006,
240240

241241
// Document Errors: 40100-40199
242242
Self::DocumentAlreadyPresentError { .. } => 40100,

packages/rs-dpp/src/errors/consensus/state/identity/identity_for_change_control_rule_not_found.rs

Lines changed: 0 additions & 57 deletions
This file was deleted.
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
use crate::consensus::state::state_error::StateError;
2+
use crate::consensus::ConsensusError;
3+
use crate::ProtocolError;
4+
use bincode::{Decode, Encode};
5+
use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize};
6+
use platform_value::Identifier;
7+
use thiserror::Error;
8+
9+
#[derive(Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize)]
10+
#[platform_serialize(unversioned)]
11+
pub enum TokenConfigurationIdentityContext {
12+
ChangeControlRule(String),
13+
DefaultMintingRecipient,
14+
PerpetualDistributionRecipient,
15+
PreProgrammedDistributionRecipient,
16+
}
17+
18+
#[derive(
19+
Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize,
20+
)]
21+
#[error("Identity {identity_id} required in token position {token_position} of contract {contract_id} for {context:?} does not exist")]
22+
#[platform_serialize(unversioned)]
23+
pub struct IdentityInTokenConfigurationNotFoundError {
24+
contract_id: Identifier,
25+
token_position: u16,
26+
context: TokenConfigurationIdentityContext,
27+
identity_id: Identifier,
28+
}
29+
30+
impl IdentityInTokenConfigurationNotFoundError {
31+
pub fn new(
32+
contract_id: Identifier,
33+
token_position: u16,
34+
context: TokenConfigurationIdentityContext,
35+
identity_id: Identifier,
36+
) -> Self {
37+
Self {
38+
contract_id,
39+
token_position,
40+
context,
41+
identity_id,
42+
}
43+
}
44+
45+
pub fn contract_id(&self) -> &Identifier {
46+
&self.contract_id
47+
}
48+
49+
pub fn token_position(&self) -> u16 {
50+
self.token_position
51+
}
52+
53+
pub fn context(&self) -> &TokenConfigurationIdentityContext {
54+
&self.context
55+
}
56+
57+
pub fn identity_id(&self) -> &Identifier {
58+
&self.identity_id
59+
}
60+
}
61+
62+
impl From<IdentityInTokenConfigurationNotFoundError> for ConsensusError {
63+
fn from(err: IdentityInTokenConfigurationNotFoundError) -> Self {
64+
Self::StateError(StateError::IdentityInTokenConfigurationNotFoundError(err))
65+
}
66+
}

packages/rs-dpp/src/errors/consensus/state/identity/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ pub mod missing_identity_public_key_ids_error;
1717
pub mod missing_transfer_key_error;
1818
pub mod no_transfer_key_for_core_withdrawal_available_error;
1919

20-
pub mod identity_for_change_control_rule_not_found;
20+
pub mod identity_for_token_configuration_not_found_error;
2121
mod recipient_identity_does_not_exist_error;
2222

2323
pub use recipient_identity_does_not_exist_error::*;

packages/rs-dpp/src/errors/consensus/state/state_error.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ use crate::consensus::state::document::document_contest_not_paid_for_error::Docu
3535
use crate::consensus::state::document::document_incorrect_purchase_price_error::DocumentIncorrectPurchasePriceError;
3636
use crate::consensus::state::document::document_not_for_sale_error::DocumentNotForSaleError;
3737
use crate::consensus::state::group::{GroupActionAlreadyCompletedError, GroupActionAlreadySignedByIdentityError, GroupActionDoesNotExistError, IdentityNotMemberOfGroupError};
38-
use crate::consensus::state::identity::identity_for_change_control_rule_not_found::IdentityForChangeControlRuleNotFoundError;
38+
use crate::consensus::state::identity::identity_for_token_configuration_not_found_error::IdentityInTokenConfigurationNotFoundError;
3939
use crate::consensus::state::identity::identity_public_key_already_exists_for_unique_contract_bounds_error::IdentityPublicKeyAlreadyExistsForUniqueContractBoundsError;
4040
use crate::consensus::state::identity::invalid_identity_contract_nonce_error::InvalidIdentityNonceError;
4141
use crate::consensus::state::identity::missing_transfer_key_error::MissingTransferKeyError;
@@ -301,7 +301,7 @@ pub enum StateError {
301301
TokenNotForDirectSale(TokenNotForDirectSale),
302302

303303
#[error(transparent)]
304-
IdentityForChangeControlRuleNotFoundError(IdentityForChangeControlRuleNotFoundError),
304+
IdentityInTokenConfigurationNotFoundError(IdentityInTokenConfigurationNotFoundError),
305305
}
306306

307307
impl From<StateError> for ConsensusError {

0 commit comments

Comments
 (0)