88 lines
2.7 KiB
Rust
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();
|
|
}
|
|
}
|