ipinfo should be single value (#3137)

This commit is contained in:
Firstyear 2024-10-23 12:39:40 +10:00 committed by GitHub
parent 48cd6638fe
commit 31420c3ff9
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 19 additions and 19 deletions

View file

@ -3038,7 +3038,7 @@ pub async fn auth_valid(
get, get,
path = "/v1/debug/ipinfo", path = "/v1/debug/ipinfo",
responses( responses(
(status = 200, description = "Ok", body=Vec<String>, content_type="application/json"), (status = 200, description = "Ok", body=String, content_type="application/json"),
), ),
security(("token_jwt" = [])), security(("token_jwt" = [])),
tag = "v1/debug", tag = "v1/debug",
@ -3047,8 +3047,8 @@ pub async fn auth_valid(
pub async fn debug_ipinfo( pub async fn debug_ipinfo(
State(_state): State<ServerState>, State(_state): State<ServerState>,
TrustedClientIp(ip_addr): TrustedClientIp, TrustedClientIp(ip_addr): TrustedClientIp,
) -> Result<Json<Vec<IpAddr>>, ()> { ) -> Result<Json<IpAddr>, ()> {
Ok(Json::from(vec![ip_addr])) Ok(Json::from(ip_addr))
} }
#[utoipa::path( #[utoipa::path(

View file

@ -25,12 +25,12 @@ async fn dont_trust_xff_send_header(rsclient: KanidmClient) {
.send() .send()
.await .await
.unwrap(); .unwrap();
let ip_res: Vec<IpAddr> = res let ip_res: IpAddr = res
.json() .json()
.await .await
.expect("Failed to parse response as Vec<IpAddr>"); .expect("Failed to parse response as IpAddr");
assert_eq!(ip_res[0], DEFAULT_IP_ADDRESS); assert_eq!(ip_res, DEFAULT_IP_ADDRESS);
} }
#[kanidmd_testkit::test(trust_x_forward_for = false)] #[kanidmd_testkit::test(trust_x_forward_for = false)]
@ -49,14 +49,14 @@ async fn dont_trust_xff_dont_send_header(rsclient: KanidmClient) {
.await .await
.unwrap(); .unwrap();
let body = res.bytes().await.unwrap(); let body = res.bytes().await.unwrap();
let ip_res: Vec<IpAddr> = serde_json::from_slice(&body).unwrap_or_else(|op| { let ip_res: IpAddr = serde_json::from_slice(&body).unwrap_or_else(|op| {
panic!( panic!(
"Failed to parse response as Vec<IpAddr>: {:?} body: {:?}", "Failed to parse response as IpAddr: {:?} body: {:?}",
op, body, op, body,
) )
}); });
eprintln!("Body: {:?}", body); eprintln!("Body: {:?}", body);
assert_eq!(ip_res[0], DEFAULT_IP_ADDRESS); assert_eq!(ip_res, DEFAULT_IP_ADDRESS);
} }
// *test where we trust the x-forwarded-for header // *test where we trust the x-forwarded-for header
@ -116,12 +116,12 @@ async fn trust_xff_send_valid_header_single_ipv4_address(rsclient: KanidmClient)
.send() .send()
.await .await
.unwrap(); .unwrap();
let ip_res: Vec<IpAddr> = res let ip_res: IpAddr = res
.json() .json()
.await .await
.expect("Failed to parse response as Vec<IpAddr>"); .expect("Failed to parse response as Vec<IpAddr>");
assert_eq!(ip_res[0], IpAddr::from_str(ip_addr).unwrap()); assert_eq!(ip_res, IpAddr::from_str(ip_addr).unwrap());
} }
#[kanidmd_testkit::test(trust_x_forward_for = true)] #[kanidmd_testkit::test(trust_x_forward_for = true)]
@ -138,12 +138,12 @@ async fn trust_xff_send_valid_header_single_ipv6_address(rsclient: KanidmClient)
.send() .send()
.await .await
.unwrap(); .unwrap();
let ip_res: Vec<IpAddr> = res let ip_res: IpAddr = res
.json() .json()
.await .await
.expect("Failed to parse response as Vec<IpAddr>"); .expect("Failed to parse response as Vec<IpAddr>");
assert_eq!(ip_res[0], IpAddr::from_str(ip_addr).unwrap()); assert_eq!(ip_res, IpAddr::from_str(ip_addr).unwrap());
} }
#[kanidmd_testkit::test(trust_x_forward_for = true)] #[kanidmd_testkit::test(trust_x_forward_for = true)]
@ -160,13 +160,13 @@ async fn trust_xff_send_valid_header_multiple_address(rsclient: KanidmClient) {
.send() .send()
.await .await
.unwrap(); .unwrap();
let ip_res: Vec<IpAddr> = res let ip_res: IpAddr = res
.json() .json()
.await .await
.expect("Failed to parse response as Vec<IpAddr>"); .expect("Failed to parse response as Vec<IpAddr>");
assert_eq!( assert_eq!(
ip_res[0], ip_res,
IpAddr::from_str(first_ip_addr.split(",").collect::<Vec<&str>>()[0]).unwrap() IpAddr::from_str(first_ip_addr.split(",").collect::<Vec<&str>>()[0]).unwrap()
); );
@ -182,13 +182,13 @@ async fn trust_xff_send_valid_header_multiple_address(rsclient: KanidmClient) {
.send() .send()
.await .await
.unwrap(); .unwrap();
let ip_res: Vec<IpAddr> = res let ip_res: IpAddr = res
.json() .json()
.await .await
.expect("Failed to parse response as Vec<IpAddr>"); .expect("Failed to parse response as Vec<IpAddr>");
assert_eq!( assert_eq!(
ip_res[0], ip_res,
IpAddr::from_str(second_ip_addr.split(",").collect::<Vec<&str>>()[0]).unwrap() IpAddr::from_str(second_ip_addr.split(",").collect::<Vec<&str>>()[0]).unwrap()
); );
} }
@ -204,10 +204,10 @@ async fn trust_xff_dont_send_header(rsclient: KanidmClient) {
.send() .send()
.await .await
.unwrap(); .unwrap();
let ip_res: Vec<IpAddr> = res let ip_res: IpAddr = res
.json() .json()
.await .await
.expect("Failed to parse response as Vec<IpAddr>"); .expect("Failed to parse response as Vec<IpAddr>");
assert_eq!(ip_res[0], DEFAULT_IP_ADDRESS); assert_eq!(ip_res, DEFAULT_IP_ADDRESS);
} }