From 1a1a063658bf5d2354d60033fb06fd027b562ecc Mon Sep 17 00:00:00 2001 From: Quentin Gliech Date: Fri, 25 Feb 2022 16:25:38 +0100 Subject: [PATCH] Fix email verification link --- crates/warp-utils/src/filters/url_builder.rs | 26 +++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/crates/warp-utils/src/filters/url_builder.rs b/crates/warp-utils/src/filters/url_builder.rs index 799018d0..f0c879e9 100644 --- a/crates/warp-utils/src/filters/url_builder.rs +++ b/crates/warp-utils/src/filters/url_builder.rs @@ -24,8 +24,7 @@ use warp::Filter; impl From<&HttpConfig> for UrlBuilder { fn from(config: &HttpConfig) -> Self { - let base = config.public_base.clone(); - Self { base } + Self::new(config.public_base.clone()) } } @@ -36,6 +35,12 @@ pub struct UrlBuilder { } impl UrlBuilder { + /// Create a new [`UrlBuilder`] from a base URL + #[must_use] + pub fn new(base: Url) -> Self { + Self { base } + } + /// OIDC issuer #[must_use] pub fn oidc_issuer(&self) -> Url { @@ -84,7 +89,7 @@ impl UrlBuilder { #[must_use] pub fn email_verification(&self, code: &str) -> Url { self.base - .join("verify") + .join("verify/") .expect("build URL") .join(code) .expect("build URL") @@ -99,3 +104,18 @@ pub fn url_builder( let builder: UrlBuilder = config.into(); warp::any().map(move || builder.clone()) } + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn build_email_verification_url() { + let base = Url::parse("https://example.com/").unwrap(); + let builder = UrlBuilder::new(base); + assert_eq!( + builder.email_verification("123456abcdef").as_str(), + "https://example.com/verify/123456abcdef" + ); + } +}