|
| 1 | +use data_encoding::HEXUPPER; |
| 2 | +use std::convert::TryFrom; |
| 3 | +use tentacle_multiaddr::*; |
| 4 | + |
| 5 | +fn ma_valid(source: &str, target: &str, protocols: Vec<Protocol<'_>>) { |
| 6 | + let parsed = source.parse::<Multiaddr>().unwrap(); |
| 7 | + assert_eq!(HEXUPPER.encode(&parsed.to_vec()[..]), target); |
| 8 | + assert_eq!(parsed.iter().collect::<Vec<_>>(), protocols); |
| 9 | + assert_eq!(source.parse::<Multiaddr>().unwrap().to_string(), source); |
| 10 | + assert_eq!( |
| 11 | + Multiaddr::try_from(HEXUPPER.decode(target.as_bytes()).unwrap()).unwrap(), |
| 12 | + parsed |
| 13 | + ); |
| 14 | +} |
| 15 | + |
| 16 | +#[test] |
| 17 | +fn construct_success() { |
| 18 | + use Protocol::*; |
| 19 | + |
| 20 | + ma_valid( |
| 21 | + "/onion3/vww6ybal4bd7szmgncyruucpgfkqahzddi37ktceo3ah7ngmcopnpyyd:1234", |
| 22 | + "BD03ADADEC040BE047F9658668B11A504F3155001F231A37F54C4476C07FB4CC139ED7E30304D2", |
| 23 | + vec![Onion3( |
| 24 | + ( |
| 25 | + [ |
| 26 | + 173, 173, 236, 4, 11, 224, 71, 249, 101, 134, 104, 177, 26, 80, 79, 49, 85, 0, |
| 27 | + 31, 35, 26, 55, 245, 76, 68, 118, 192, 127, 180, 204, 19, 158, 215, 227, 3, |
| 28 | + ], |
| 29 | + 1234, |
| 30 | + ) |
| 31 | + .into(), |
| 32 | + )], |
| 33 | + ); |
| 34 | +} |
| 35 | + |
| 36 | +#[test] |
| 37 | +fn construct_fail() { |
| 38 | + let addresses = [ |
| 39 | + "/onion3/9ww6ybal4bd7szmgncyruucpgfkqahzddi37ktceo3ah7ngmcopnpyyd:80", |
| 40 | + "/onion3/vww6ybal4bd7szmgncyruucpgfkqahzddi37ktceo3ah7ngmcopnpyyd7:80", |
| 41 | + "/onion3/vww6ybal4bd7szmgncyruucpgfkqahzddi37ktceo3ah7ngmcopnpyyd:0", |
| 42 | + "/onion3/vww6ybal4bd7szmgncyruucpgfkqahzddi37ktceo3ah7ngmcopnpyyd:-1", |
| 43 | + "/onion3/vww6ybal4bd7szmgncyruucpgfkqahzddi37ktceo3ah7ngmcopnpyyd", |
| 44 | + "/onion3/vww6ybal4bd7szmgncyruucpgfkqahzddi37ktceo3ah7ngmcopnpyy@:666", |
| 45 | + ]; |
| 46 | + |
| 47 | + for address in &addresses { |
| 48 | + assert!( |
| 49 | + address.parse::<Multiaddr>().is_err(), |
| 50 | + "{}", |
| 51 | + address.to_string() |
| 52 | + ); |
| 53 | + } |
| 54 | +} |
0 commit comments