16
16
17
17
use crate :: { mock:: * , Error } ;
18
18
19
+ use codec:: Encode ;
19
20
use frame_support:: assert_noop;
20
- use sp_core:: { Pair , H256 } ;
21
+ use sp_core:: { blake2_256 , Pair , H256 } ;
21
22
22
23
#[ test]
23
24
fn unpriveledged_origin_call_fails ( ) {
@@ -50,7 +51,7 @@ fn set_user_shielding_key_works() {
50
51
fn link_twitter_identity_works ( ) {
51
52
new_test_ext ( ) . execute_with ( || {
52
53
System :: set_block_number ( 5 ) ;
53
- setup_link_identity ( 2 , create_mock_twitter_identity ( ) , 5 ) ;
54
+ setup_link_identity ( 2 , create_mock_twitter_identity ( b"alice" ) , 5 ) ;
54
55
} ) ;
55
56
}
56
57
@@ -78,7 +79,7 @@ fn link_eth_identity_works() {
78
79
fn verify_twitter_identity_works ( ) {
79
80
new_test_ext ( ) . execute_with ( || {
80
81
System :: set_block_number ( 3 ) ;
81
- setup_verify_twitter_identity ( 2 , create_mock_twitter_identity ( ) , 3 ) ;
82
+ setup_verify_twitter_identity ( 2 , create_mock_twitter_identity ( b"alice" ) , 3 ) ;
82
83
} ) ;
83
84
}
84
85
@@ -99,3 +100,53 @@ fn verify_eth_identity_works() {
99
100
setup_verify_eth_identity ( 2 , p, 4 ) ;
100
101
} ) ;
101
102
}
103
+
104
+ #[ test]
105
+ fn double_link_twitter_identity_works ( ) {
106
+ new_test_ext ( ) . execute_with ( || {
107
+ // link and verify the first twitter handle
108
+ System :: set_block_number ( 3 ) ;
109
+ setup_verify_twitter_identity ( 2 , create_mock_twitter_identity ( b"alice" ) , 3 ) ;
110
+ // link second twitter handle works
111
+ System :: set_block_number ( 4 ) ;
112
+ setup_link_identity ( 2 , create_mock_twitter_identity ( b"bob" ) , 4 ) ;
113
+ } ) ;
114
+ }
115
+
116
+ #[ test]
117
+ fn wrong_polkadot_verification_message_fails ( ) {
118
+ new_test_ext ( ) . execute_with ( || {
119
+ System :: set_block_number ( 3 ) ;
120
+ let p = sp_core:: sr25519:: Pair :: from_string ( "//Alice" , None ) . unwrap ( ) ;
121
+ let identity = create_mock_polkadot_identity ( p. public ( ) . 0 ) ;
122
+ let who = 2 ;
123
+ setup_link_identity ( who, identity. clone ( ) , 3 ) ;
124
+
125
+ System :: set_block_number ( 4 ) ;
126
+ let encrypted_identity = tee_encrypt ( identity. encode ( ) . as_slice ( ) ) ;
127
+
128
+ // intentionally construct a wrong verification message
129
+ let wrong_msg = blake2_256 ( & [ 0u8 ; 16 ] ) . to_vec ( ) ;
130
+ let sig = p. sign ( & wrong_msg) ;
131
+ let common_validation_data = Web3CommonValidationData {
132
+ message : wrong_msg. try_into ( ) . unwrap ( ) ,
133
+ signature : IdentityMultiSignature :: Sr25519 ( sig) ,
134
+ } ;
135
+
136
+ let validation_data = match & identity. web_type {
137
+ IdentityWebType :: Web3 ( Web3Network :: Substrate ( SubstrateNetwork :: Polkadot ) ) =>
138
+ ValidationData :: Web3 ( Web3ValidationData :: Substrate ( common_validation_data) ) ,
139
+ _ => panic ! ( "unxpected web_type" ) ,
140
+ } ;
141
+
142
+ assert_noop ! (
143
+ IdentityManagementMock :: verify_identity(
144
+ Origin :: signed( who) ,
145
+ H256 :: random( ) ,
146
+ encrypted_identity,
147
+ tee_encrypt( validation_data. encode( ) . as_slice( ) ) ,
148
+ ) ,
149
+ Error :: <Test >:: UnexpectedMessage
150
+ ) ;
151
+ } ) ;
152
+ }
0 commit comments