1
- use mithril_common:: entities:: { CardanoDbBeacon , ImmutableFileNumber } ;
1
+ use mithril_common:: entities:: CardanoDbBeacon ;
2
2
use mithril_common:: {
3
- entities:: { CertificatePending , Signer } ,
3
+ entities:: { CertificatePending , SignedEntityType , Signer } ,
4
4
messages:: { CertificatePendingMessage , SignerMessagePart } ,
5
- CardanoNetwork ,
6
5
} ;
7
6
8
7
/// Adapter to turn [CertificatePending] instances into [CertificatePendingMessage].
9
8
pub struct ToCertificatePendingMessageAdapter ;
10
9
11
10
impl ToCertificatePendingMessageAdapter {
12
11
/// Method to trigger the conversion
13
- pub fn adapt (
14
- certificate_pending : CertificatePending ,
15
- network : CardanoNetwork ,
16
- immutable_file_number : ImmutableFileNumber ,
17
- ) -> CertificatePendingMessage {
18
- let beacon = CardanoDbBeacon :: new (
19
- network. to_string ( ) ,
20
- * certificate_pending. epoch ,
21
- immutable_file_number,
22
- ) ;
12
+ pub fn adapt ( certificate_pending : CertificatePending ) -> CertificatePendingMessage {
13
+ #[ allow( deprecated) ]
14
+ let beacon = match & certificate_pending. signed_entity_type {
15
+ SignedEntityType :: CardanoImmutableFilesFull ( beacon) => beacon. clone ( ) ,
16
+ _ => CardanoDbBeacon :: empty ( ) ,
17
+ } ;
23
18
24
19
#[ allow( deprecated) ]
25
20
CertificatePendingMessage {
26
- epoch : beacon . epoch ,
27
- beacon,
21
+ epoch : certificate_pending . epoch ,
22
+ beacon : Some ( beacon ) ,
28
23
signed_entity_type : certificate_pending. signed_entity_type ,
29
24
protocol_parameters : certificate_pending. protocol_parameters ,
30
25
next_protocol_parameters : certificate_pending. next_protocol_parameters ,
@@ -55,23 +50,50 @@ impl ToCertificatePendingMessageAdapter {
55
50
56
51
#[ cfg( test) ]
57
52
mod tests {
58
- use mithril_common:: test_utils:: fake_data;
53
+ use mithril_common:: {
54
+ entities:: { Epoch , SignedEntityType } ,
55
+ test_utils:: fake_data,
56
+ } ;
59
57
60
58
use super :: * ;
61
59
62
60
#[ test]
63
61
fn adapt_ok ( ) {
64
62
let certificate_pending = fake_data:: certificate_pending ( ) ;
65
63
let epoch = certificate_pending. epoch ;
66
- let message = ToCertificatePendingMessageAdapter :: adapt (
67
- certificate_pending,
68
- fake_data:: network ( ) ,
69
- 10 ,
70
- ) ;
64
+ let message = ToCertificatePendingMessageAdapter :: adapt ( certificate_pending) ;
71
65
72
66
assert_eq ! ( epoch, message. epoch) ;
73
67
}
74
68
69
+ #[ test]
70
+ fn adapt_on_cardano_immutable_files_full_signed_entity_type_ok ( ) {
71
+ let mut certificate_pending = fake_data:: certificate_pending ( ) ;
72
+ let beacon = fake_data:: beacon ( ) ;
73
+ certificate_pending. signed_entity_type =
74
+ SignedEntityType :: CardanoImmutableFilesFull ( beacon. clone ( ) ) ;
75
+
76
+ let message = ToCertificatePendingMessageAdapter :: adapt ( certificate_pending) ;
77
+
78
+ #[ allow( deprecated) ]
79
+ let beacon_from_message = message. beacon . unwrap ( ) ;
80
+ assert_eq ! ( beacon, beacon_from_message) ;
81
+ }
82
+
83
+ #[ test]
84
+ fn adapt_on_other_than_cardano_immutable_files_full_signed_entity_type_ok ( ) {
85
+ let mut certificate_pending = fake_data:: certificate_pending ( ) ;
86
+ let beacon = CardanoDbBeacon :: new ( "" , 0 , 0 ) ;
87
+ certificate_pending. signed_entity_type =
88
+ SignedEntityType :: MithrilStakeDistribution ( Epoch ( 15 ) ) ;
89
+
90
+ let message = ToCertificatePendingMessageAdapter :: adapt ( certificate_pending) ;
91
+
92
+ #[ allow( deprecated) ]
93
+ let beacon_from_message = message. beacon . unwrap ( ) ;
94
+ assert_eq ! ( beacon, beacon_from_message) ;
95
+ }
96
+
75
97
#[ test]
76
98
fn adapt_signers ( ) {
77
99
let fake_signers = fake_data:: signers ( 5 ) ;
@@ -82,11 +104,7 @@ mod tests {
82
104
next_signers,
83
105
..fake_data:: certificate_pending ( )
84
106
} ;
85
- let message = ToCertificatePendingMessageAdapter :: adapt (
86
- certificate_pending,
87
- fake_data:: network ( ) ,
88
- 10 ,
89
- ) ;
107
+ let message = ToCertificatePendingMessageAdapter :: adapt ( certificate_pending) ;
90
108
91
109
assert_eq ! ( 2 , message. signers. len( ) ) ;
92
110
assert_eq ! ( 3 , message. next_signers. len( ) ) ;
0 commit comments