Skip to content

Commit 5369c61

Browse files
committed
feat: add support for overriding protocol parameters in signer fixture
1 parent 2d31805 commit 5369c61

File tree

2 files changed

+26
-3
lines changed

2 files changed

+26
-3
lines changed

mithril-common/src/crypto_helper/tests_setup.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,15 +143,17 @@ pub fn setup_signers_from_stake_distribution(
143143
.into_iter()
144144
.map(
145145
|(signer_with_stake, protocol_initializer, kes_secret_key_path)| {
146+
let protocol_closed_key_registration = closed_key_registration.clone();
146147
let protocol_signer = protocol_initializer
147148
.clone()
148-
.new_signer(closed_key_registration.clone())
149+
.new_signer(protocol_closed_key_registration.clone())
149150
.expect("creating a new protocol signer should not fail");
150151

151152
SignerFixture {
152153
signer_with_stake,
153154
protocol_signer,
154155
protocol_initializer,
156+
protocol_closed_key_registration,
155157
kes_secret_key_path,
156158
}
157159
},

mithril-common/src/test_utils/mithril_fixture.rs

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ use std::{
99
use crate::{
1010
certificate_chain::CertificateGenesisProducer,
1111
crypto_helper::{
12-
ProtocolAggregateVerificationKey, ProtocolGenesisSigner, ProtocolInitializer,
13-
ProtocolOpCert, ProtocolSigner, ProtocolSignerVerificationKey,
12+
ProtocolAggregateVerificationKey, ProtocolClosedKeyRegistration, ProtocolGenesisSigner,
13+
ProtocolInitializer, ProtocolOpCert, ProtocolSigner, ProtocolSignerVerificationKey,
1414
ProtocolSignerVerificationKeySignature, ProtocolStakeDistribution,
1515
},
1616
entities::{
@@ -19,6 +19,7 @@ use crate::{
1919
StakeDistributionParty,
2020
},
2121
protocol::{SignerBuilder, ToMessage},
22+
StdResult,
2223
};
2324

2425
/// A fixture of Mithril data types.
@@ -40,10 +41,30 @@ pub struct SignerFixture {
4041
pub protocol_signer: ProtocolSigner,
4142
/// A [ProtocolSigner].
4243
pub protocol_initializer: ProtocolInitializer,
44+
/// A [ProtocolClosedKeyRegistration].
45+
pub protocol_closed_key_registration: ProtocolClosedKeyRegistration,
4346
/// The path to this signer kes secret key file
4447
pub kes_secret_key_path: Option<PathBuf>,
4548
}
4649

50+
impl SignerFixture {
51+
/// Create a new SignerFixture with specific protocol parameters.
52+
/// This is useful to simulate some adversarial behaviors.
53+
pub fn try_new_with_protocol_parameters(
54+
self,
55+
protocol_parameters: ProtocolParameters,
56+
) -> StdResult<Self> {
57+
let mut protocol_initializer = self.protocol_initializer.clone();
58+
protocol_initializer.override_protocol_parameters(&protocol_parameters.into());
59+
let protocol_signer =
60+
protocol_initializer.new_signer(self.protocol_closed_key_registration.clone())?;
61+
Ok(Self {
62+
protocol_signer,
63+
..self
64+
})
65+
}
66+
}
67+
4768
impl From<SignerFixture> for SignerWithStake {
4869
fn from(fixture: SignerFixture) -> Self {
4970
fixture.signer_with_stake

0 commit comments

Comments
 (0)