Skip to content

Commit beb2570

Browse files
committed
test: add test for connect request in udp::handler
1 parent 2a85fab commit beb2570

File tree

1 file changed

+64
-0
lines changed

1 file changed

+64
-0
lines changed

src/udp/handlers.rs

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -236,3 +236,67 @@ fn handle_error(e: ServerError, transaction_id: TransactionId) -> Response {
236236
message: message.into(),
237237
})
238238
}
239+
240+
#[cfg(test)]
241+
mod tests {
242+
use std::{
243+
net::{IpAddr, Ipv4Addr, SocketAddr},
244+
sync::Arc,
245+
};
246+
247+
use crate::{protocol::utils::get_connection_id, tracker::tracker::TorrentTracker, udp::handle_connect, Configuration};
248+
use aquatic_udp_protocol::{ConnectRequest, ConnectResponse, Response, TransactionId};
249+
250+
fn initialized_tracker() -> Arc<TorrentTracker> {
251+
let config = Arc::new(Configuration::default());
252+
Arc::new(TorrentTracker::new(config).unwrap())
253+
}
254+
255+
fn sample_remote_addr() -> SocketAddr {
256+
SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 8080)
257+
}
258+
259+
fn connect_request() -> ConnectRequest {
260+
ConnectRequest {
261+
transaction_id: TransactionId(0i32),
262+
}
263+
}
264+
265+
#[tokio::test]
266+
async fn a_connect_response_should_contain_the_same_transaction_id_as_the_connect_request() {
267+
let request = ConnectRequest {
268+
transaction_id: TransactionId(0i32),
269+
};
270+
271+
let response = handle_connect(sample_remote_addr(), &request, initialized_tracker())
272+
.await
273+
.unwrap();
274+
275+
assert_eq!(
276+
response,
277+
Response::Connect(ConnectResponse {
278+
connection_id: get_connection_id(&sample_remote_addr()),
279+
transaction_id: request.transaction_id
280+
})
281+
);
282+
}
283+
284+
#[tokio::test]
285+
async fn a_connect_response_should_generate_a_new_connection_id() {
286+
let request = ConnectRequest {
287+
transaction_id: TransactionId(0i32),
288+
};
289+
290+
let response = handle_connect(sample_remote_addr(), &request, initialized_tracker())
291+
.await
292+
.unwrap();
293+
294+
assert_eq!(
295+
response,
296+
Response::Connect(ConnectResponse {
297+
connection_id: get_connection_id(&sample_remote_addr()),
298+
transaction_id: request.transaction_id
299+
})
300+
);
301+
}
302+
}

0 commit comments

Comments
 (0)