2024-12-10 01:47:40 +01:00

88 lines
2.7 KiB
Rust

#[cfg(all(test, feature = "task1-9"))]
mod task_two {
use axum_test::TestServer;
use itsscb_shuttlings_cch24::router;
fn test_server() -> TestServer {
TestServer::new(router()).unwrap()
}
#[tokio::test]
async fn test_ipv4_dest() {
let server = test_server();
let response = server.get("/2/dest?from=10.0.0.0&key=1.2.3.255").await;
response.assert_status_ok();
response.assert_text("11.2.3.255");
let response = server.get("/2/dest?from=invalid-from&key=1.2.3.255").await;
response.assert_status_bad_request();
let response = server.get("/2/dest?from=10.0.0.0&key=invalid-key").await;
response.assert_status_bad_request();
let response = server
.get("/2/dest?from=128.128.33.0&key=255.0.255.33")
.await;
response.assert_status_ok();
response.assert_text("127.128.32.33");
}
#[tokio::test]
async fn test_ipv4_key() {
let server = test_server();
let response = server.get("/2/key?from=10.0.0.0&to=11.2.3.255").await;
response.assert_status_ok();
response.assert_text("1.2.3.255");
let response = server.get("/2/key?from=invalid-from&to=1.2.3.255").await;
response.assert_status_bad_request();
let response = server.get("/2/key?from=10.0.0.0&to=invalid-to").await;
response.assert_status_bad_request();
let response = server
.get("/2/key?from=128.128.33.0&to=127.128.32.33")
.await;
response.assert_status_ok();
response.assert_text("255.0.255.33");
}
#[tokio::test]
async fn test_ipv6_dest() {
let server = test_server();
let response = server.get("/2/v6/dest?from=fe80::1&key=5:6:7::3333").await;
response.assert_status_ok();
response.assert_text("fe85:6:7::3332");
let response = server
.get("/2/v6/dest?from=invalid-from&key=5:6:7::3333")
.await;
response.assert_status_bad_request();
let response = server.get("/2/v6/dest?from=fe80::1&key=invalid-key").await;
response.assert_status_bad_request();
}
#[tokio::test]
async fn test_ipv6_key() {
let server = test_server();
let response = server
.get("/2/v6/key?from=aaaa::aaaa&to=5555:ffff:c:0:0:c:1234:5555")
.await;
response.assert_status_ok();
response.assert_text("ffff:ffff:c::c:1234:ffff");
let response = server
.get("/2/v6/dest?from=invalid-from&to=5:6:7::3333")
.await;
response.assert_status_bad_request();
let response = server.get("/2/v6/dest?from=fe80::1&to=invalid-to").await;
response.assert_status_bad_request();
}
}