torrust_tracker/servers/http/v1/handlers/common/
peer_ip.rs1use crate::servers::http::v1::responses;
8use crate::servers::http::v1::services::peer_ip_resolver::PeerIpResolutionError;
9
10impl From<PeerIpResolutionError> for responses::error::Error {
11 fn from(err: PeerIpResolutionError) -> Self {
12 responses::error::Error {
13 failure_reason: format!("Error resolving peer IP: {err}"),
14 }
15 }
16}
17
18#[cfg(test)]
19mod tests {
20 use std::panic::Location;
21
22 use crate::servers::http::v1::responses;
23 use crate::servers::http::v1::services::peer_ip_resolver::PeerIpResolutionError;
24
25 fn assert_error_response(error: &responses::error::Error, error_message: &str) {
26 assert!(
27 error.failure_reason.contains(error_message),
28 "Error response does not contain message: '{error_message}'. Error: {error:?}"
29 );
30 }
31
32 #[test]
33 fn it_should_map_a_peer_ip_resolution_error_into_an_error_response() {
34 let response = responses::error::Error::from(PeerIpResolutionError::MissingRightMostXForwardedForIp {
35 location: Location::caller(),
36 });
37
38 assert_error_response(&response, "Error resolving peer IP");
39 }
40}