xref: /webrtc/turn/src/auth/auth_test.rs (revision 603f4064)
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