use common::dialer::Dialer;
use singlenet::dialer::{SingleNetDialer, Configuration};
use std::io::BufReader;
use std::str::FromStr;
use std::net::Ipv4Addr;
use singlenet::heartbeater::{PacketFactoryMac, PacketFactoryWin, PacketAuthenticator, Packet};
#[test]
fn test_singlenet_username_encrypt() {
let dialer = SingleNetDialer::load_from_config(Configuration::Hainan);
let encrypted = dialer.encrypt_account("05802278989@HYXY.XY", Some(1472483020));
assert_eq!(encrypted, "~LL_k6ecvpj2mrjA_05802278989@HYXY.XY");
}
#[test]
fn test_keepalive_request_generate_and_parse() {
let ka1 = PacketFactoryWin::keepalive_request("05802278989@HYXY.XY",
Ipv4Addr::from_str("10.0.0.1").unwrap(),
Some(1472483020),
None,
None);
let ka2 = PacketFactoryWin::keepalive_request("05802278989@HYXY.XY",
Ipv4Addr::from_str("10.0.0.1").unwrap(),
Some(1472483020),
Some("ffb0b2af94693fd1ba4c93e6b9aebd3f"),
None);
let authenticator = PacketAuthenticator::new("LLWLXA_TPSHARESECRET");
let ka1_bytes = ka1.as_bytes(Some(&authenticator));
let ka2_bytes = ka2.as_bytes(Some(&authenticator));
let real1_bytes: Vec<u8> = vec![83, 78, 0, 105, 3, 43, 220, 250, 219, 227, 84, 6, 40, 77, 138,
217, 220, 230, 189, 142, 123, 179, 2, 0, 7, 10, 0, 0, 1, 3, 0,
12, 49, 46, 50, 46, 50, 50, 46, 51, 54, 20, 0, 35, 102, 102,
98, 48, 98, 50, 97, 102, 57, 52, 54, 57, 51, 102, 100, 49, 98,
97, 52, 99, 57, 51, 101, 54, 98, 57, 97, 101, 98, 100, 51,
102, 18, 0, 7, 87, 196, 78, 204, 1, 0, 22, 48, 53, 56, 48, 50,
50, 55, 56, 57, 56, 57, 64, 72, 89, 88, 89, 46, 88, 89];
let real2_bytes: Vec<u8> =
vec![83, 78, 0, 105, 3, 43, 240, 67, 87, 201, 164, 134, 179, 142, 110, 163, 208, 119, 121,
90, 173, 75, 2, 0, 7, 10, 0, 0, 1, 3, 0, 12, 49, 46, 50, 46, 50, 50, 46, 51, 54, 20,
0, 35, 100, 48, 100, 99, 101, 50, 98, 48, 49, 51, 99, 56, 97, 100, 102, 97, 99, 54,
52, 54, 97, 50, 57, 49, 55, 102, 100, 97, 98, 56, 48, 50, 18, 0, 7, 87, 196, 78, 204,
1, 0, 22, 48, 53, 56, 48, 50, 50, 55, 56, 57, 56, 57, 64, 72, 89, 88, 89, 46, 88, 89];
assert_eq!(ka1_bytes, real1_bytes);
assert_eq!(ka2_bytes, real2_bytes);
let mut buffer = BufReader::new(&real1_bytes as &[u8]);
let ka1_p1 = Packet::from_bytes(&mut buffer).unwrap();
let ka1_p1_bytes = ka1_p1.as_bytes(None);
assert_eq!(ka1_p1_bytes, real1_bytes);
}
#[test]
fn test_register_request() {
let authenticator = PacketAuthenticator::new("LLWLXA");
let reg = PacketFactoryMac::register_request("05802278989@HYXY.XY",
Ipv4Addr::from_str("10.8.0.4").unwrap(),
None,
None,
None);
let reg_bytes = reg.as_bytes(Some(&authenticator));
let real_bytes: Vec<u8> =
vec![83, 78, 0, 197, 1, 1, 111, 131, 14, 200, 48, 216, 23, 80, 223, 56, 164, 152, 147,
120, 164, 191, 1, 0, 22, 48, 53, 56, 48, 50, 50, 55, 56, 57, 56, 57, 64, 72, 89, 88,
89, 46, 88, 89, 3, 0, 8, 49, 46, 49, 46, 48, 4, 0, 17, 77, 97, 99, 45, 83, 105, 110,
103, 108, 101, 116, 78, 101, 116, 2, 0, 7, 10, 8, 0, 4, 9, 0, 20, 49, 48, 58, 100,
100, 58, 98, 49, 58, 100, 53, 58, 57, 53, 58, 99, 97, 11, 0, 3, 8, 0, 43, 73, 110,
116, 101, 108, 40, 82, 41, 32, 67, 111, 114, 101, 40, 84, 77, 41, 32, 105, 53, 45,
53, 50, 56, 55, 85, 32, 67, 80, 85, 32, 64, 32, 50, 46, 57, 48, 71, 72, 122, 10, 0,
7, 0, 0, 32, 0, 5, 0, 40, 77, 97, 99, 32, 79, 83, 32, 88, 32, 86, 101, 114, 115, 105,
111, 110, 32, 49, 48, 46, 49, 50, 32, 40, 66, 117, 105, 108, 100, 32, 49, 54, 65, 51,
50, 51, 41, 6, 0, 8, 122, 104, 95, 67, 78];
assert_eq!(reg_bytes, real_bytes);
}
#[test]
fn test_real_time_bubble_request() {
let authenticator = PacketAuthenticator::new("LLWLXA");
let reg = PacketFactoryMac::real_time_bubble_request("05802278989@HYXY.XY",
Ipv4Addr::from_str("10.8.0.4").unwrap(),
None,
None);
let reg_bytes = reg.as_bytes(Some(&authenticator));
let real_bytes: Vec<u8> =
vec![83, 78, 0, 96, 11, 1, 166, 14, 39, 63, 156, 69, 236, 221, 210, 50, 156, 211, 85, 237,
232, 220, 1, 0, 22, 48, 53, 56, 48, 50, 50, 55, 56, 57, 56, 57, 64, 72, 89, 88, 89,
46, 88, 89, 3, 0, 8, 49, 46, 49, 46, 48, 4, 0, 17, 77, 97, 99, 45, 83, 105, 110, 103,
108, 101, 116, 78, 101, 116, 2, 0, 7, 10, 8, 0, 4, 9, 0, 20, 49, 48, 58, 100, 100,
58, 98, 49, 58, 100, 53, 58, 57, 53, 58, 99, 97];
assert_eq!(reg_bytes, real_bytes);
}
#[test]
fn test_bubble_request() {
let authenticator = PacketAuthenticator::new("LLWLXA");
let reg = PacketFactoryMac::bubble_request("05802278989@HYXY.XY",
Ipv4Addr::from_str("10.8.0.4").unwrap(),
None,
None);
let reg_bytes = reg.as_bytes(Some(&authenticator));
let real_bytes: Vec<u8> =
vec![83, 78, 0, 96, 5, 1, 55, 73, 135, 12, 152, 235, 170, 225, 149, 154, 105, 61, 230,
140, 53, 242, 1, 0, 22, 48, 53, 56, 48, 50, 50, 55, 56, 57, 56, 57, 64, 72, 89, 88,
89, 46, 88, 89, 3, 0, 8, 49, 46, 49, 46, 48, 4, 0, 17, 77, 97, 99, 45, 83, 105, 110,
103, 108, 101, 116, 78, 101, 116, 2, 0, 7, 10, 8, 0, 4, 9, 0, 20, 49, 48, 58, 100,
100, 58, 98, 49, 58, 100, 53, 58, 57, 53, 58, 99, 97];
assert_eq!(reg_bytes, real_bytes);
}