@@ -7,6 +7,7 @@ use tokio::time::sleep;
77use crate :: certificate_handler:: CertificateHandlerError ;
88use crate :: single_signer:: SingleSignerError ;
99use mithril_common:: crypto_helper:: { key_encode_hex, Bytes } ;
10+ use mithril_common:: digesters:: Digester ;
1011use mithril_common:: entities:: { self , Beacon , CertificatePending , SignerWithStake } ;
1112use mithril_common:: fake_data;
1213
@@ -16,6 +17,7 @@ use super::single_signer::SingleSigner;
1617pub struct Runtime {
1718 certificate_handler : Box < dyn CertificateHandler > ,
1819 single_signer : Box < dyn SingleSigner > ,
20+ digester : Box < dyn Digester > ,
1921 current_beacon : Option < Beacon > ,
2022}
2123
@@ -37,10 +39,12 @@ impl Runtime {
3739 pub fn new (
3840 certificate_handler : Box < dyn CertificateHandler > ,
3941 single_signer : Box < dyn SingleSigner > ,
42+ digester : Box < dyn Digester > ,
4043 ) -> Self {
4144 Self {
4245 certificate_handler,
4346 single_signer,
47+ digester,
4448 current_beacon : None ,
4549 }
4650 }
@@ -150,8 +154,18 @@ mod tests {
150154 use super :: super :: certificate_handler:: { CertificateHandlerError , MockCertificateHandler } ;
151155 use super :: super :: single_signer:: { MockSingleSigner , SingleSignerError } ;
152156 use super :: * ;
157+
153158 use mithril_common:: crypto_helper:: tests_setup:: * ;
159+ use mithril_common:: digesters:: { Digester , DigesterError , DigesterResult } ;
154160 use mithril_common:: fake_data;
161+ use mockall:: mock;
162+
163+ mock ! {
164+ pub DigesterImpl { }
165+ impl Digester for DigesterImpl {
166+ fn compute_digest( & self ) -> Result <DigesterResult , DigesterError >;
167+ }
168+ }
155169
156170 #[ tokio:: test]
157171 async fn signer_doesnt_sign_when_there_is_no_pending_certificate ( ) {
@@ -160,6 +174,7 @@ mod tests {
160174 let protocol_initializer = current_signer. 4 . clone ( ) ;
161175 let mut mock_certificate_handler = MockCertificateHandler :: new ( ) ;
162176 let mut mock_single_signer = MockSingleSigner :: new ( ) ;
177+ let mock_digester = MockDigesterImpl :: new ( ) ;
163178 mock_certificate_handler
164179 . expect_retrieve_pending_certificate ( )
165180 . return_once ( || Ok ( None ) ) ;
@@ -182,6 +197,7 @@ mod tests {
182197 let mut signer = Runtime :: new (
183198 Box :: new ( mock_certificate_handler) ,
184199 Box :: new ( mock_single_signer) ,
200+ Box :: new ( mock_digester) ,
185201 ) ;
186202 assert ! ( signer. run( ) . await . is_ok( ) ) ;
187203 }
@@ -190,6 +206,7 @@ mod tests {
190206 async fn signer_fails_when_pending_certificate_fails ( ) {
191207 let mut mock_certificate_handler = MockCertificateHandler :: new ( ) ;
192208 let mut mock_single_signer = MockSingleSigner :: new ( ) ;
209+ let mock_digester = MockDigesterImpl :: new ( ) ;
193210 mock_certificate_handler
194211 . expect_retrieve_pending_certificate ( )
195212 . return_once ( || {
@@ -204,6 +221,7 @@ mod tests {
204221 let mut signer = Runtime :: new (
205222 Box :: new ( mock_certificate_handler) ,
206223 Box :: new ( mock_single_signer) ,
224+ Box :: new ( mock_digester) ,
207225 ) ;
208226 assert_eq ! (
209227 RuntimeError :: RetrievePendingCertificateFailed (
@@ -221,6 +239,7 @@ mod tests {
221239 let protocol_initializer = current_signer. 4 . clone ( ) ;
222240 let mut mock_certificate_handler = MockCertificateHandler :: new ( ) ;
223241 let mut mock_single_signer = MockSingleSigner :: new ( ) ;
242+ let mut mock_digester = MockDigesterImpl :: new ( ) ;
224243 let pending_certificate = fake_data:: certificate_pending ( ) ;
225244 mock_certificate_handler
226245 . expect_retrieve_pending_certificate ( )
@@ -255,6 +274,7 @@ mod tests {
255274 let mut signer = Runtime :: new (
256275 Box :: new ( mock_certificate_handler) ,
257276 Box :: new ( mock_single_signer) ,
277+ Box :: new ( mock_digester) ,
258278 ) ;
259279 assert ! ( signer. run( ) . await . is_ok( ) ) ;
260280 assert ! ( signer. run( ) . await . is_ok( ) ) ;
@@ -267,6 +287,7 @@ mod tests {
267287 let protocol_initializer = current_signer. 4 . clone ( ) ;
268288 let mut mock_certificate_handler = MockCertificateHandler :: new ( ) ;
269289 let mut mock_single_signer = MockSingleSigner :: new ( ) ;
290+ let mut mock_digester = MockDigesterImpl :: new ( ) ;
270291 let pending_certificate = fake_data:: certificate_pending ( ) ;
271292 mock_certificate_handler
272293 . expect_retrieve_pending_certificate ( )
@@ -304,6 +325,7 @@ mod tests {
304325 let mut signer = Runtime :: new (
305326 Box :: new ( mock_certificate_handler) ,
306327 Box :: new ( mock_single_signer) ,
328+ Box :: new ( mock_digester) ,
307329 ) ;
308330 assert ! ( signer. run( ) . await . is_ok( ) ) ;
309331 assert ! ( signer. run( ) . await . is_ok( ) ) ;
@@ -316,6 +338,7 @@ mod tests {
316338 let protocol_initializer = current_signer. 4 . clone ( ) ;
317339 let mut mock_certificate_handler = MockCertificateHandler :: new ( ) ;
318340 let mut mock_single_signer = MockSingleSigner :: new ( ) ;
341+ let mut mock_digester = MockDigesterImpl :: new ( ) ;
319342 let pending_certificate = fake_data:: certificate_pending ( ) ;
320343 mock_certificate_handler
321344 . expect_retrieve_pending_certificate ( )
@@ -345,6 +368,7 @@ mod tests {
345368 let mut signer = Runtime :: new (
346369 Box :: new ( mock_certificate_handler) ,
347370 Box :: new ( mock_single_signer) ,
371+ Box :: new ( mock_digester) ,
348372 ) ;
349373 assert ! ( signer. run( ) . await . is_ok( ) ) ;
350374 }
@@ -353,6 +377,7 @@ mod tests {
353377 async fn signer_fails_if_signature_computation_fails ( ) {
354378 let mut mock_certificate_handler = MockCertificateHandler :: new ( ) ;
355379 let mut mock_single_signer = MockSingleSigner :: new ( ) ;
380+ let mut mock_digester = MockDigesterImpl :: new ( ) ;
356381 let pending_certificate = fake_data:: certificate_pending ( ) ;
357382 mock_certificate_handler
358383 . expect_retrieve_pending_certificate ( )
@@ -370,6 +395,7 @@ mod tests {
370395 let mut signer = Runtime :: new (
371396 Box :: new ( mock_certificate_handler) ,
372397 Box :: new ( mock_single_signer) ,
398+ Box :: new ( mock_digester) ,
373399 ) ;
374400 assert_eq ! (
375401 RuntimeError :: SingleSignaturesComputeFailed (
@@ -388,6 +414,7 @@ mod tests {
388414 let pending_certificate = fake_data:: certificate_pending ( ) ;
389415 let mut mock_certificate_handler = MockCertificateHandler :: new ( ) ;
390416 let mut mock_single_signer = MockSingleSigner :: new ( ) ;
417+ let mut mock_digester = MockDigesterImpl :: new ( ) ;
391418 mock_certificate_handler
392419 . expect_retrieve_pending_certificate ( )
393420 . return_once ( || Ok ( Some ( pending_certificate) ) ) ;
@@ -414,6 +441,7 @@ mod tests {
414441 let mut signer = Runtime :: new (
415442 Box :: new ( mock_certificate_handler) ,
416443 Box :: new ( mock_single_signer) ,
444+ Box :: new ( mock_digester) ,
417445 ) ;
418446 assert_eq ! (
419447 RuntimeError :: RegisterSignerFailed (
0 commit comments