diff --git a/src/response/waypoint.rs b/src/response/waypoint.rs index b42c57c7..08d4f96e 100644 --- a/src/response/waypoint.rs +++ b/src/response/waypoint.rs @@ -75,7 +75,7 @@ impl Waypoint { } /// Devuelve la URL de destino, si se proporcionó una y es una ruta local válida. - pub fn as_str(&self) -> Option<&str> { + pub fn as_deref(&self) -> Option<&str> { self.waypoint.as_deref() } @@ -108,7 +108,7 @@ impl Waypoint { /// ``` pub fn append_to(&self, route: impl Into) -> RoutePath { let mut route = route.into(); - if let Some(d) = self.as_str() { + if let Some(d) = self.as_deref() { route.alter_param("waypoint", d); } route @@ -144,7 +144,7 @@ impl Waypoint { /// } /// ``` pub fn or(&self, fallback: impl Into) -> RoutePath { - match self.as_str() { + match self.as_deref() { Some(d) => RoutePath::new(d.to_owned()), None => fallback.into(), } diff --git a/tests/waypoint.rs b/tests/waypoint.rs index 76422e4e..40112b2e 100644 --- a/tests/waypoint.rs +++ b/tests/waypoint.rs @@ -6,7 +6,7 @@ use pagetop::prelude::*; async fn waypoint_accepts_local_paths() { for path in ["/", "/admin/users", "/admin/users?page=2"] { let w = Waypoint::from(path.to_owned()); - assert_eq!(w.as_str(), Some(path)); + assert_eq!(w.as_deref(), Some(path)); } } @@ -22,7 +22,7 @@ async fn waypoint_rejects_open_redirect_targets() { "javascript:alert(1)", ] { let w = Waypoint::from(target.to_owned()); - assert_eq!(w.as_str(), None, "expected {target:?} to be rejected"); + assert_eq!(w.as_deref(), None, "expected {target:?} to be rejected"); } } @@ -31,7 +31,7 @@ async fn waypoint_deserialize_rejects_open_redirect_targets() { // Reproduces the real entry point (`web::Query`): the value arrives via // deserialization, not through `Waypoint::from(String)` as in the previous test. let w: Waypoint = serde_json::from_str(r#"{"waypoint":"https://evil.example"}"#).unwrap(); - assert_eq!(w.as_str(), None); + assert_eq!(w.as_deref(), None); } // **< Waypoint::or() >*****************************************************************************