@@ -35,6 +35,10 @@ pub mod message {
35
35
pub struct Message < T : Type > ( T ) ;
36
36
37
37
impl < T : Type > Message < T > {
38
+ pub fn new ( message : T ) -> Self {
39
+ Self ( message)
40
+ }
41
+
38
42
pub fn into_inner ( self ) -> T {
39
43
self . 0
40
44
}
@@ -61,6 +65,46 @@ pub mod message {
61
65
self . 0 . into ( )
62
66
}
63
67
}
68
+
69
+ #[ cfg( test) ]
70
+ mod test {
71
+ use super :: * ;
72
+ use crate :: sentry:: MessageResponse ;
73
+ use chrono:: { TimeZone , Utc } ;
74
+ use serde_json:: { from_value, json, to_value} ;
75
+
76
+ #[ test]
77
+ fn de_serialization_of_a_message ( ) {
78
+ let approve_state_message = json ! ( {
79
+ "from" : "0x2892f6C41E0718eeeDd49D98D648C789668cA67d" ,
80
+ "msg" : {
81
+ "type" : "ApproveState" ,
82
+ "stateRoot" : "4739522efc1e81499541621759dadb331eaf08829d6a3851b4b654dfaddc9935" ,
83
+ "signature" : "0x00128a39b715e87475666c3220fc0400bf34a84d24f77571d2b4e1e88b141d52305438156e526ff4fe96b7a13e707ab2f6f3ca00bd928dabc7f516b56cfe6fd61c" ,
84
+ "isHealthy" : true ,
85
+ "exhausted" : false
86
+ } ,
87
+ "received" : "2021-01-05T14:00:48.549Z"
88
+ } ) ;
89
+
90
+ let actual_message: MessageResponse < ApproveState > =
91
+ from_value ( approve_state_message. clone ( ) ) . expect ( "Should deserialize" ) ;
92
+ let expected_message = MessageResponse {
93
+ from : "0x2892f6C41E0718eeeDd49D98D648C789668cA67d" . parse ( ) . expect ( "Valid ValidatorId" ) ,
94
+ received : Utc . ymd ( 2021 , 1 , 5 ) . and_hms_milli ( 14 , 0 , 48 , 549 ) ,
95
+ msg : Message :: new ( ApproveState {
96
+ state_root : "4739522efc1e81499541621759dadb331eaf08829d6a3851b4b654dfaddc9935" . to_string ( ) ,
97
+ signature : "0x00128a39b715e87475666c3220fc0400bf34a84d24f77571d2b4e1e88b141d52305438156e526ff4fe96b7a13e707ab2f6f3ca00bd928dabc7f516b56cfe6fd61c" . to_string ( ) ,
98
+ is_healthy : true ,
99
+ exhausted : false ,
100
+ } ) ,
101
+ } ;
102
+
103
+ pretty_assertions:: assert_eq!( expected_message, actual_message) ;
104
+ pretty_assertions:: assert_eq!( to_value( expected_message) . expect( "should serialize" ) , approve_state_message) ;
105
+
106
+ }
107
+ }
64
108
}
65
109
66
110
#[ serde( tag = "type" , rename_all = "SCREAMING_SNAKE_CASE" ) ]
0 commit comments