1 use super::*; 2 3 #[test] 4 fn test_lt_cred() -> Result<()> { 5 let username = "1599491771"; 6 let shared_secret = "foobar"; 7 8 let expected_password = "Tpz/nKkyvX/vMSLKvL4sbtBt8Vs="; 9 let actual_password = long_term_credentials(username, shared_secret); 10 assert_eq!( 11 expected_password, actual_password, 12 "Expected {}, got {}", 13 expected_password, actual_password 14 ); 15 16 Ok(()) 17 } 18 19 #[test] 20 fn test_generate_auth_key() -> Result<()> { 21 let username = "60"; 22 let password = "HWbnm25GwSj6jiHTEDMTO5D7aBw="; 23 let realm = "webrtc.rs"; 24 25 let expected_key = vec![ 26 56, 22, 47, 139, 198, 127, 13, 188, 171, 80, 23, 29, 195, 148, 216, 224, 27 ]; 28 let actual_key = generate_auth_key(username, realm, password); 29 assert_eq!( 30 expected_key, actual_key, 31 "Expected {:?}, got {:?}", 32 expected_key, actual_key 33 ); 34 35 Ok(()) 36 } 37 38 #[cfg(target_family = "unix")] 39 #[tokio::test] 40 async fn test_new_long_term_auth_handler() -> Result<()> { 41 use crate::client::*; 42 use crate::relay::relay_static::*; 43 use crate::server::{config::*, *}; 44 45 use std::net::IpAddr; 46 use std::str::FromStr; 47 use std::sync::Arc; 48 use tokio::net::UdpSocket; 49 use util::vnet::net::*; 50 51 //env_logger::init(); 52 53 const SHARED_SECRET: &str = "HELLO_WORLD"; 54 55 // here, it should use static port, like "0.0.0.0:3478", 56 // but, due to different test environment, let's fake it by using "0.0.0.0:0" 57 // to auto assign a "static" port 58 let conn = Arc::new(UdpSocket::bind("0.0.0.0:0").await?); 59 let server_port = conn.local_addr()?.port(); 60 61 let server = Server::new(ServerConfig { 62 conn_configs: vec![ConnConfig { 63 conn, 64 relay_addr_generator: Box::new(RelayAddressGeneratorStatic { 65 relay_address: IpAddr::from_str("127.0.0.1")?, 66 address: "0.0.0.0".to_owned(), 67 net: Arc::new(Net::new(None)), 68 }), 69 }], 70 realm: "webrtc.rs".to_owned(), 71 auth_handler: Arc::new(LongTermAuthHandler::new(SHARED_SECRET.to_string())), 72 channel_bind_timeout: Duration::from_secs(0), 73 }) 74 .await?; 75 76 let (username, password) = 77 generate_long_term_credentials(SHARED_SECRET, Duration::from_secs(60))?; 78 79 let conn = Arc::new(UdpSocket::bind("0.0.0.0:0").await?); 80 81 let client = Client::new(ClientConfig { 82 stun_serv_addr: format!("0.0.0.0:{}", server_port), 83 turn_serv_addr: format!("0.0.0.0:{}", server_port), 84 username, 85 password, 86 realm: "webrtc.rs".to_owned(), 87 software: String::new(), 88 rto_in_ms: 0, 89 conn, 90 vnet: None, 91 }) 92 .await?; 93 94 client.listen().await?; 95 96 let _allocation = client.allocate().await?; 97 98 client.close().await?; 99 server.close().await?; 100 101 Ok(()) 102 } 103