Skip to content

Commit aa362cf

Browse files
committed
Use MithrilFixtureBuilder in signer tests
1 parent df9d556 commit aa362cf

File tree

3 files changed

+55
-63
lines changed

3 files changed

+55
-63
lines changed

mithril-signer/src/runtime/runner.rs

Lines changed: 23 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -436,20 +436,21 @@ impl Runner for SignerRunner {
436436

437437
#[cfg(test)]
438438
mod tests {
439-
use mithril_common::chain_observer::ChainObserver;
440-
use mockall::mock;
441-
use std::{path::PathBuf, sync::Arc};
442-
443-
use mithril_common::crypto_helper::tests_setup::{setup_protocol_parameters, setup_signers};
444-
use mithril_common::crypto_helper::ProtocolInitializer;
445-
use mithril_common::digesters::{DumbImmutableDigester, DumbImmutableFileObserver};
446-
use mithril_common::entities::{Epoch, StakeDistribution};
447-
use mithril_common::store::adapter::{DumbStoreAdapter, MemoryAdapter};
448-
use mithril_common::store::{StakeStore, StakeStorer};
449439
use mithril_common::{
450-
chain_observer::FakeObserver, BeaconProvider, BeaconProviderError, BeaconProviderImpl,
440+
chain_observer::{ChainObserver, FakeObserver},
441+
crypto_helper::ProtocolInitializer,
442+
digesters::{DumbImmutableDigester, DumbImmutableFileObserver},
443+
entities::{Epoch, StakeDistribution},
444+
fake_data,
445+
store::{
446+
adapter::{DumbStoreAdapter, MemoryAdapter},
447+
StakeStore, StakeStorer,
448+
},
449+
test_utils::MithrilFixtureBuilder,
450+
BeaconProvider, BeaconProviderError, BeaconProviderImpl, CardanoNetwork,
451451
};
452-
use mithril_common::{fake_data, CardanoNetwork};
452+
use mockall::mock;
453+
use std::{path::PathBuf, sync::Arc};
453454

454455
use crate::{
455456
CertificateHandler, DumbCertificateHandler, MithrilSingleSigner, MockCertificateHandler,
@@ -693,8 +694,9 @@ mod tests {
693694
.get_current_beacon()
694695
.await
695696
.expect("get_current_beacon should not fail");
696-
let signers = setup_signers(5, &setup_protocol_parameters());
697-
let (signer_with_stake, _, protocol_initializer) = signers.first().unwrap();
697+
let fixture = MithrilFixtureBuilder::default().with_signers(5).build();
698+
let signer_with_stake = fixture.signers_fixture()[0].signer_with_stake.clone();
699+
let protocol_initializer = fixture.signers_fixture()[0].protocol_initializer.clone();
698700
let single_signer = Arc::new(MithrilSingleSigner::new(
699701
signer_with_stake.party_id.to_owned(),
700702
));
@@ -708,18 +710,15 @@ mod tests {
708710
.await
709711
.expect("save_protocol_initializer should not fail");
710712

711-
let next_signers = signers
712-
.iter()
713-
.map(|(signer_with_stake, _, _)| signer_with_stake.to_owned())
714-
.collect::<Vec<_>>();
713+
let next_signers = fixture.signers_with_stake();
715714
let mut expected = ProtocolMessage::new();
716715
expected.set_message_part(
717716
ProtocolMessagePartKey::SnapshotDigest,
718717
DIGESTER_RESULT.to_string(),
719718
);
720719
let avk = services
721720
.single_signer
722-
.compute_aggregate_verification_key(&next_signers, protocol_initializer)
721+
.compute_aggregate_verification_key(&next_signers, &protocol_initializer)
723722
.expect("compute_aggregate_verification_key should not fail")
724723
.expect("an avk should have been computed");
725724
expected.set_message_part(ProtocolMessagePartKey::NextAggregateVerificationKey, avk);
@@ -741,8 +740,9 @@ mod tests {
741740
.get_current_beacon()
742741
.await
743742
.expect("get_current_beacon should not fail");
744-
let signers = setup_signers(5, &setup_protocol_parameters());
745-
let (signer_with_stake, _, protocol_initializer) = signers.first().unwrap();
743+
let fixture = MithrilFixtureBuilder::default().with_signers(5).build();
744+
let signer_with_stake = fixture.signers_fixture()[0].signer_with_stake.clone();
745+
let protocol_initializer = fixture.signers_fixture()[0].protocol_initializer.clone();
746746
let single_signer = Arc::new(MithrilSingleSigner::new(
747747
signer_with_stake.party_id.to_string(),
748748
));
@@ -758,10 +758,7 @@ mod tests {
758758
)
759759
.await
760760
.expect("save_protocol_initializer should not fail");
761-
let signers = signers
762-
.iter()
763-
.map(|(signer_with_stake, _, _)| signer_with_stake.to_owned())
764-
.collect::<Vec<_>>();
761+
let signers = fixture.signers_with_stake();
765762

766763
let mut message = ProtocolMessage::new();
767764
message.set_message_part(
@@ -774,7 +771,7 @@ mod tests {
774771
);
775772

776773
let expected = single_signer
777-
.compute_single_signatures(&message, &signers, protocol_initializer)
774+
.compute_single_signatures(&message, &signers, &protocol_initializer)
778775
.expect("compute_single_signatures should not fail");
779776

780777
let runner = init_runner(Some(services), None);

mithril-signer/src/single_signer.rs

Lines changed: 29 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -237,34 +237,33 @@ impl SingleSigner for MithrilSingleSigner {
237237
mod tests {
238238
use super::*;
239239

240-
use mithril_common::crypto_helper::tests_setup::*;
241-
use mithril_common::crypto_helper::{key_decode_hex, ProtocolClerk, ProtocolSingleSignature};
242-
use mithril_common::entities::ProtocolMessagePartKey;
240+
use mithril_common::{
241+
crypto_helper::{key_decode_hex, tests_setup::*, ProtocolClerk, ProtocolSingleSignature},
242+
entities::ProtocolMessagePartKey,
243+
test_utils::MithrilFixtureBuilder,
244+
};
243245

244246
#[test]
245247
fn compute_single_signature_success() {
246248
let snapshot_digest = "digest".to_string();
247249
let protocol_parameters = setup_protocol_parameters();
248-
let signers = setup_signers(5, &protocol_parameters);
249-
let signers_with_stake = signers
250-
.iter()
251-
.map(
252-
|(signer_with_stake, _protocol_signer, _protocol_initializer)| {
253-
signer_with_stake.to_owned()
254-
},
255-
)
256-
.collect::<Vec<SignerWithStake>>();
257-
let current_signer = &signers[0];
258-
let single_signer = MithrilSingleSigner::new(current_signer.0.party_id.to_owned());
259-
let protocol_signer = &current_signer.1;
260-
let clerk = ProtocolClerk::from_signer(protocol_signer);
250+
let fixture = MithrilFixtureBuilder::default().with_signers(5).build();
251+
let signers_with_stake = fixture.signers_with_stake();
252+
let current_signer = &fixture.signers_fixture()[0];
253+
let single_signer =
254+
MithrilSingleSigner::new(current_signer.signer_with_stake.party_id.to_owned());
255+
let clerk = ProtocolClerk::from_signer(&current_signer.protocol_signer);
261256
let avk = clerk.compute_avk();
262257
let mut protocol_message = ProtocolMessage::new();
263258
protocol_message.set_message_part(ProtocolMessagePartKey::SnapshotDigest, snapshot_digest);
264259
let expected_message = protocol_message.compute_hash().as_bytes().to_vec();
265260

266261
let sign_result = single_signer
267-
.compute_single_signatures(&protocol_message, &signers_with_stake, &current_signer.2)
262+
.compute_single_signatures(
263+
&protocol_message,
264+
&signers_with_stake,
265+
&current_signer.protocol_initializer,
266+
)
268267
.expect("single signer should not fail")
269268
.expect("single signer should produce a signature here");
270269

@@ -273,34 +272,31 @@ mod tests {
273272
decoded_sig
274273
.verify(
275274
&protocol_parameters,
276-
&protocol_signer.verification_key(),
277-
&protocol_signer.get_stake(),
275+
&current_signer.protocol_signer.verification_key(),
276+
&current_signer.protocol_signer.get_stake(),
278277
&avk,
279278
&expected_message
280279
)
281280
.is_ok(),
282281
"produced single signature should be valid"
283282
);
284283
//TODO: decoded_sig.pk should probably be a StmVerificationKeyPoP, uncomment once fixed
285-
//assert_eq!(current_signer.2, decoded_sig.pk);
284+
//assert_eq!(current_signer.protocol_initializer, decoded_sig.pk);
286285
}
287286

288287
#[test]
289288
fn compute_aggregate_verification_key_success() {
290-
let signers = setup_signers(5, &setup_protocol_parameters());
291-
let signers_with_stake = signers
292-
.iter()
293-
.map(
294-
|(signer_with_stake, _protocol_signer, _protocol_initializer)| {
295-
signer_with_stake.to_owned()
296-
},
297-
)
298-
.collect::<Vec<SignerWithStake>>();
299-
let current_signer = &signers[0];
300-
let single_signer = MithrilSingleSigner::new(current_signer.0.party_id.to_owned());
301-
let protocol_initializer = &current_signer.2;
289+
let fixture = MithrilFixtureBuilder::default().with_signers(5).build();
290+
let signers_with_stake = fixture.signers_with_stake();
291+
let current_signer = &fixture.signers_fixture()[0];
292+
let single_signer =
293+
MithrilSingleSigner::new(current_signer.signer_with_stake.party_id.to_owned());
294+
302295
single_signer
303-
.compute_aggregate_verification_key(&signers_with_stake, protocol_initializer)
296+
.compute_aggregate_verification_key(
297+
&signers_with_stake,
298+
&current_signer.protocol_initializer,
299+
)
304300
.expect("compute aggregate verification signature should not fail")
305301
.expect("aggregate verification signature should not be empty");
306302
}

mithril-signer/tests/state_machine.rs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
mod test_extensions;
22

33
use mithril_common::{
4-
crypto_helper::tests_setup,
5-
entities::{Epoch, SignerWithStake},
4+
crypto_helper::tests_setup, entities::Epoch, test_utils::MithrilFixtureBuilder,
65
};
76

87
use test_extensions::StateMachineTester;
@@ -12,8 +11,8 @@ use test_extensions::StateMachineTester;
1211
async fn test_create_single_signature() {
1312

1413
let protocol_parameters = tests_setup::setup_protocol_parameters();
15-
let signers = tests_setup::setup_signers(10, &protocol_parameters);
16-
let signers_with_stake = signers.iter().map(|(signer_with_stake, _, _)| signer_with_stake.to_owned()).collect::<Vec<SignerWithStake>>();
14+
let fixture = MithrilFixtureBuilder::default().with_signers(10).with_protocol_parameters(protocol_parameters.into()).build();
15+
let signers_with_stake = fixture.signers_with_stake();
1716
let mut tester = StateMachineTester::init(&signers_with_stake).await.expect("state machine tester init should not fail");
1817

1918
tester

0 commit comments

Comments
 (0)