From dfe2bcce131178b1b12150ae86ae7a953a1d566e Mon Sep 17 00:00:00 2001 From: Jens Reimann Date: Wed, 21 Apr 2021 11:09:24 +0200 Subject: [PATCH] Fix tests after refactoring URIRef (#116) Signed-off-by: Jens Reimann --- cloudevents-sdk-actix-web/src/server_request.rs | 4 +--- cloudevents-sdk-actix-web/src/server_response.rs | 8 +++----- cloudevents-sdk-reqwest/src/client_request.rs | 7 +++---- cloudevents-sdk-reqwest/src/client_response.rs | 8 +++----- cloudevents-sdk-warp/src/filter.rs | 4 +--- cloudevents-sdk-warp/src/lib.rs | 2 +- cloudevents-sdk-warp/src/reply.rs | 8 +++----- src/event/builder.rs | 7 ++++++- src/event/v03/attributes.rs | 2 +- src/event/v03/builder.rs | 9 ++++++++- src/event/v10/attributes.rs | 4 ++-- src/event/v10/builder.rs | 9 ++++++++- tests/builder_v03.rs | 15 ++++++++++++--- tests/builder_v10.rs | 15 ++++++++++++--- tests/test_data/v03.rs | 10 +++++----- tests/test_data/v10.rs | 10 +++++----- 16 files changed, 74 insertions(+), 48 deletions(-) diff --git a/cloudevents-sdk-actix-web/src/server_request.rs b/cloudevents-sdk-actix-web/src/server_request.rs index 0d53418..5937f4b 100644 --- a/cloudevents-sdk-actix-web/src/server_request.rs +++ b/cloudevents-sdk-actix-web/src/server_request.rs @@ -144,12 +144,10 @@ mod private { mod tests { use super::*; use actix_web::test; - use url::Url; use chrono::Utc; use cloudevents::{EventBuilder, EventBuilderV10}; use serde_json::json; - use std::str::FromStr; #[actix_rt::test] async fn test_request() { @@ -186,7 +184,7 @@ mod tests { let expected = EventBuilderV10::new() .id("0001") .ty("example.test") - .source(Url::from_str("http://localhost").unwrap()) + .source("http://localhost") //TODO this is required now because the message deserializer implictly set default values // As soon as this defaulting doesn't happen anymore, we can remove it (Issues #40/#41) .time(time) diff --git a/cloudevents-sdk-actix-web/src/server_response.rs b/cloudevents-sdk-actix-web/src/server_response.rs index 650029e..f22a724 100644 --- a/cloudevents-sdk-actix-web/src/server_response.rs +++ b/cloudevents-sdk-actix-web/src/server_response.rs @@ -107,21 +107,19 @@ mod private { #[cfg(test)] mod tests { use super::*; - use url::Url; use actix_web::http::StatusCode; use actix_web::test; use cloudevents::{EventBuilder, EventBuilderV10}; use futures::TryStreamExt; use serde_json::json; - use std::str::FromStr; #[actix_rt::test] async fn test_response() { let input = EventBuilderV10::new() .id("0001") .ty("example.test") - .source(Url::from_str("http://localhost/").unwrap()) + .source("http://localhost/") .extension("someint", "10") .build() .unwrap(); @@ -164,7 +162,7 @@ mod tests { let input = EventBuilderV10::new() .id("0001") .ty("example.test") - .source(Url::from_str("http://localhost").unwrap()) + .source("http://localhost") .data("application/json", j.clone()) .extension("someint", "10") .build() @@ -193,7 +191,7 @@ mod tests { ); assert_eq!( resp.headers().get("ce-source").unwrap().to_str().unwrap(), - "http://localhost/" + "http://localhost" ); assert_eq!( resp.headers() diff --git a/cloudevents-sdk-reqwest/src/client_request.rs b/cloudevents-sdk-reqwest/src/client_request.rs index edd837a..0de580e 100644 --- a/cloudevents-sdk-reqwest/src/client_request.rs +++ b/cloudevents-sdk-reqwest/src/client_request.rs @@ -95,7 +95,6 @@ mod tests { use cloudevents::message::StructuredDeserializer; use cloudevents::{EventBuilder, EventBuilderV10}; use serde_json::json; - use url::Url; #[tokio::test] async fn test_request() { @@ -112,7 +111,7 @@ mod tests { let input = EventBuilderV10::new() .id("0001") .ty("example.test") - .source(Url::from_str("http://localhost/").unwrap()) + .source("http://localhost/") .extension("someint", "10") .build() .unwrap(); @@ -147,7 +146,7 @@ mod tests { let input = EventBuilderV10::new() .id("0001") .ty("example.test") - .source(Url::from_str("http://localhost").unwrap()) + .source("http://localhost/") .data("application/json", j.clone()) .extension("someint", "10") .build() @@ -173,7 +172,7 @@ mod tests { let input = EventBuilderV10::new() .id("0001") .ty("example.test") - .source(Url::from_str("http://localhost").unwrap()) + .source("http://localhost") .data("application/json", j.clone()) .extension("someint", "10") .build() diff --git a/cloudevents-sdk-reqwest/src/client_response.rs b/cloudevents-sdk-reqwest/src/client_response.rs index 6c3ddf7..5d11ee6 100644 --- a/cloudevents-sdk-reqwest/src/client_response.rs +++ b/cloudevents-sdk-reqwest/src/client_response.rs @@ -139,8 +139,6 @@ mod tests { use chrono::Utc; use cloudevents::{EventBuilder, EventBuilderV10}; use serde_json::json; - use std::str::FromStr; - use url::Url; #[tokio::test] async fn test_response() { @@ -162,7 +160,7 @@ mod tests { //TODO this is required now because the message deserializer implictly set default values // As soon as this defaulting doesn't happen anymore, we can remove it (Issues #40/#41) .time(time) - .source(Url::from_str("http://localhost").unwrap()) + .source("http://localhost") .extension("someint", "10") .build() .unwrap(); @@ -204,7 +202,7 @@ mod tests { //TODO this is required now because the message deserializer implictly set default values // As soon as this defaulting doesn't happen anymore, we can remove it (Issues #40/#41) .time(time) - .source(Url::from_str("http://localhost").unwrap()) + .source("http://localhost/") .data("application/json", j.to_string().into_bytes()) .extension("someint", "10") .build() @@ -234,7 +232,7 @@ mod tests { //TODO this is required now because the message deserializer implictly set default values // As soon as this defaulting doesn't happen anymore, we can remove it (Issues #40/#41) .time(time) - .source(Url::from_str("http://localhost").unwrap()) + .source("http://localhost") .data("application/json", j.clone()) .extension("someint", "10") .build() diff --git a/cloudevents-sdk-warp/src/filter.rs b/cloudevents-sdk-warp/src/filter.rs index 94c1a6c..ac163ec 100644 --- a/cloudevents-sdk-warp/src/filter.rs +++ b/cloudevents-sdk-warp/src/filter.rs @@ -42,13 +42,11 @@ async fn create_event(headers: HeaderMap, body: bytes::Bytes) -> Result) -> Self { - self.source = Some(source.into()); + let source = source.into(); + if source.is_empty() { + self.error = Some(EventBuilderError::InvalidUriRefError { + attribute_name: "source", + }); + } else { + self.source = Some(source); + } self } diff --git a/src/event/v10/attributes.rs b/src/event/v10/attributes.rs index b52ae15..428f6c6 100644 --- a/src/event/v10/attributes.rs +++ b/src/event/v10/attributes.rs @@ -228,7 +228,7 @@ mod tests { let a = Attributes { id: String::from("1"), ty: String::from("someType"), - source: Url::parse("https://example.net").unwrap(), + source: "https://example.net".into(), datacontenttype: None, dataschema: None, subject: None, @@ -252,7 +252,7 @@ mod tests { assert_eq!( ( "source", - AttributeValue::URIRef(&Url::parse("https://example.net").unwrap()) + AttributeValue::URIRef(&"https://example.net".to_string()) ), b.next().unwrap() ); diff --git a/src/event/v10/builder.rs b/src/event/v10/builder.rs index e765fe1..0ef25f9 100644 --- a/src/event/v10/builder.rs +++ b/src/event/v10/builder.rs @@ -31,7 +31,14 @@ impl EventBuilder { } pub fn source(mut self, source: impl Into) -> Self { - self.source = Some(source.into()); + let source = source.into(); + if source.is_empty() { + self.error = Some(EventBuilderError::InvalidUriRefError { + attribute_name: "source", + }); + } else { + self.source = Some(source); + } self } diff --git a/tests/builder_v03.rs b/tests/builder_v03.rs index 6524aa9..9a41ee3 100644 --- a/tests/builder_v03.rs +++ b/tests/builder_v03.rs @@ -12,7 +12,7 @@ use url::Url; #[test] fn build_event() { let id = "aaa"; - let source = Url::parse("http://localhost:8080").unwrap(); + let source = "http://localhost:8080"; let ty = "bbb"; let subject = "francesco"; let time: DateTime = Utc::now(); @@ -52,6 +52,16 @@ fn build_event() { assert_eq!(data, event_data); } +#[test] +fn source_valid_relative_url() { + let res = EventBuilderV03::new() + .id("id1") + .source("/source") // relative URL + .ty("type") + .build(); + assert_match_pattern!(res, Ok(_)); +} + #[test] fn build_missing_id() { let res = EventBuilderV03::new() @@ -70,9 +80,8 @@ fn source_invalid_url() { let res = EventBuilderV03::new().source("").build(); assert_match_pattern!( res, - Err(EventBuilderError::ParseUrlError { + Err(EventBuilderError::InvalidUriRefError { attribute_name: "source", - .. }) ); } diff --git a/tests/builder_v10.rs b/tests/builder_v10.rs index 60f8bad..1f77ad9 100644 --- a/tests/builder_v10.rs +++ b/tests/builder_v10.rs @@ -12,7 +12,7 @@ use url::Url; #[test] fn build_event() { let id = "aaa"; - let source = Url::parse("http://localhost:8080").unwrap(); + let source = "http://localhost:8080"; let ty = "bbb"; let subject = "francesco"; let time: DateTime = Utc::now(); @@ -52,6 +52,16 @@ fn build_event() { assert_eq!(data, event_data); } +#[test] +fn source_valid_relative_url() { + let res = EventBuilderV10::new() + .id("id1") + .source("/source") // relative URL + .ty("type") + .build(); + assert_match_pattern!(res, Ok(_)); +} + #[test] fn build_missing_id() { let res = EventBuilderV10::new() @@ -70,9 +80,8 @@ fn source_invalid_url() { let res = EventBuilderV10::new().source("").build(); assert_match_pattern!( res, - Err(EventBuilderError::ParseUrlError { + Err(EventBuilderError::InvalidUriRefError { attribute_name: "source", - .. }) ); } diff --git a/tests/test_data/v03.rs b/tests/test_data/v03.rs index 2ff1c66..9965101 100644 --- a/tests/test_data/v03.rs +++ b/tests/test_data/v03.rs @@ -7,7 +7,7 @@ use url::Url; pub fn minimal() -> Event { EventBuilderV03::new() .id(id()) - .source(Url::parse(source().as_ref()).unwrap()) + .source(source()) .ty(ty()) .build() .unwrap() @@ -29,7 +29,7 @@ pub fn full_no_data() -> Event { EventBuilderV03::new() .id(id()) - .source(Url::parse(source().as_ref()).unwrap()) + .source(source()) .ty(ty()) .subject(subject()) .time(time()) @@ -65,7 +65,7 @@ pub fn full_json_data() -> Event { EventBuilderV03::new() .id(id()) - .source(Url::parse(source().as_ref()).unwrap()) + .source(source()) .ty(ty()) .subject(subject()) .time(time()) @@ -131,7 +131,7 @@ pub fn full_xml_string_data() -> Event { EventBuilderV03::new() .id(id()) - .source(Url::parse(source().as_ref()).unwrap()) + .source(source()) .ty(ty()) .subject(subject()) .time(time()) @@ -150,7 +150,7 @@ pub fn full_xml_binary_data() -> Event { EventBuilderV03::new() .id(id()) - .source(Url::parse(source().as_ref()).unwrap()) + .source(source()) .ty(ty()) .subject(subject()) .time(time()) diff --git a/tests/test_data/v10.rs b/tests/test_data/v10.rs index a4faa9a..727e029 100644 --- a/tests/test_data/v10.rs +++ b/tests/test_data/v10.rs @@ -6,7 +6,7 @@ use url::Url; pub fn minimal() -> Event { EventBuilderV10::new() .id(id()) - .source(Url::parse(source().as_ref()).unwrap()) + .source(source()) .ty(ty()) .build() .unwrap() @@ -28,7 +28,7 @@ pub fn full_no_data() -> Event { EventBuilderV10::new() .id(id()) - .source(Url::parse(source().as_ref()).unwrap()) + .source(source()) .ty(ty()) .subject(subject()) .time(time()) @@ -64,7 +64,7 @@ pub fn full_json_data() -> Event { EventBuilderV10::new() .id(id()) - .source(Url::parse(source().as_ref()).unwrap()) + .source(source()) .ty(ty()) .subject(subject()) .time(time()) @@ -129,7 +129,7 @@ pub fn full_xml_string_data() -> Event { EventBuilderV10::new() .id(id()) - .source(Url::parse(source().as_ref()).unwrap()) + .source(source()) .ty(ty()) .subject(subject()) .time(time()) @@ -148,7 +148,7 @@ pub fn full_xml_binary_data() -> Event { EventBuilderV10::new() .id(id()) - .source(Url::parse(source().as_ref()).unwrap()) + .source(source()) .ty(ty()) .subject(subject()) .time(time())