@@ -2,6 +2,7 @@ use bech32::{decode, encode, FromBase32, ToBase32, Variant};
2
2
use cosmwasm_std:: {
3
3
Addr , BlockInfo , Coin , ContractInfo , Env , MessageInfo , Timestamp , TransactionInfo ,
4
4
} ;
5
+ use sha2:: { Digest , Sha256 } ;
5
6
6
7
use super :: querier:: MockQuerier ;
7
8
use super :: storage:: MockStorage ;
@@ -218,31 +219,39 @@ mod tests {
218
219
219
220
#[ test]
220
221
fn canonical_address_works ( ) {
221
- let api = MockApi :: default ( ) ;
222
+ let api = MockApi :: default ( ) . with_prefix ( "osmo" ) ;
222
223
223
- api. canonical_address ( "foobar123" ) . 0 . unwrap ( ) ;
224
+ api. canonical_address ( "osmo186kh7c0k0gh4ww0wh4jqc4yhzu7n7dhswe845d" )
225
+ . 0
226
+ . unwrap ( ) ;
224
227
225
228
// is case insensitive
226
- let data1 = api. canonical_address ( "foo123" ) . 0 . unwrap ( ) ;
227
- let data2 = api. canonical_address ( "FOO123" ) . 0 . unwrap ( ) ;
229
+ let data1 = api
230
+ . canonical_address ( "osmo186kh7c0k0gh4ww0wh4jqc4yhzu7n7dhswe845d" )
231
+ . 0
232
+ . unwrap ( ) ;
233
+ let data2 = api
234
+ . canonical_address ( "OSMO186KH7C0K0GH4WW0WH4JQC4YHZU7N7DHSWE845D" )
235
+ . 0
236
+ . unwrap ( ) ;
228
237
assert_eq ! ( data1, data2) ;
229
238
}
230
239
231
240
#[ test]
232
241
fn canonicalize_and_humanize_restores_original ( ) {
233
- let api = MockApi :: default ( ) ;
242
+ let api = MockApi :: default ( ) . with_prefix ( "juno" ) ;
234
243
235
244
// simple
236
- let original = "shorty" ;
237
- let canonical = api. canonical_address ( original) . 0 . unwrap ( ) ;
245
+ let original = api . addr_make ( "shorty" ) ;
246
+ let canonical = api. canonical_address ( & original) . 0 . unwrap ( ) ;
238
247
let ( recovered, _gas_cost) = api. human_address ( & canonical) ;
239
248
assert_eq ! ( recovered. unwrap( ) , original) ;
240
249
241
250
// normalizes input
242
- let original = String :: from ( "CosmWasmChef" ) ;
251
+ let original = "JUNO1MEPRU9FUQ4E65856ARD6068MFSFRWPGEMD0C3R" ;
243
252
let canonical = api. canonical_address ( & original) . 0 . unwrap ( ) ;
244
253
let recovered = api. human_address ( & canonical) . 0 . unwrap ( ) ;
245
- assert_eq ! ( recovered, "cosmwasmchef" ) ;
254
+ assert_eq ! ( recovered, original . to_lowercase ( ) ) ;
246
255
247
256
// Long input (Juno contract address)
248
257
let original =
@@ -255,7 +264,7 @@ mod tests {
255
264
#[ test]
256
265
fn human_address_input_length ( ) {
257
266
let api = MockApi :: default ( ) ;
258
- let input = vec ! [ 61 ; 11 ] ;
267
+ let input = vec ! [ 61 ; 256 ] ; // too long
259
268
let ( result, _gas_info) = api. human_address ( & input) ;
260
269
match result. unwrap_err ( ) {
261
270
BackendError :: UserErr { .. } => { }
@@ -266,9 +275,11 @@ mod tests {
266
275
#[ test]
267
276
fn canonical_address_min_input_length ( ) {
268
277
let api = MockApi :: default ( ) ;
269
- let human = "1 " ;
278
+ let human = "cosmwasm1pj90vm " ;
270
279
match api. canonical_address ( human) . 0 . unwrap_err ( ) {
271
- BackendError :: UserErr { msg } => assert ! ( msg. contains( "too short" ) ) ,
280
+ BackendError :: UserErr { msg } => {
281
+ assert ! ( msg. contains( "address length" ) )
282
+ }
272
283
err => panic ! ( "Unexpected error: {err:?}" ) ,
273
284
}
274
285
}
@@ -278,7 +289,9 @@ mod tests {
278
289
let api = MockApi :: default ( ) ;
279
290
let human = "longer-than-the-address-length-supported-by-this-api-longer-than-54" ;
280
291
match api. canonical_address ( human) . 0 . unwrap_err ( ) {
281
- BackendError :: UserErr { msg } => assert ! ( msg. contains( "too long" ) ) ,
292
+ BackendError :: UserErr { msg } => {
293
+ assert ! ( msg. contains( "address length" ) )
294
+ }
282
295
err => panic ! ( "Unexpected error: {err:?}" ) ,
283
296
}
284
297
}
0 commit comments