From df4f79d40af08929a94327a6f2a44f1002fb32fe Mon Sep 17 00:00:00 2001 From: clemensv Date: Mon, 26 Nov 2018 18:42:24 +0100 Subject: [PATCH] Coverage for IsCloudEvent Signed-off-by: clemensv --- src/CloudNative.CloudEvents/HttpClientExtension.cs | 8 ++++++++ test/CloudNative.CloudEvents.UnitTests/AmqpTest.cs | 4 ++++ test/CloudNative.CloudEvents.UnitTests/HttpTest.cs | 3 +++ 3 files changed, 15 insertions(+) diff --git a/src/CloudNative.CloudEvents/HttpClientExtension.cs b/src/CloudNative.CloudEvents/HttpClientExtension.cs index a6e330e..18bb168 100644 --- a/src/CloudNative.CloudEvents/HttpClientExtension.cs +++ b/src/CloudNative.CloudEvents/HttpClientExtension.cs @@ -9,6 +9,7 @@ namespace CloudNative.CloudEvents using System.Linq; using System.Net; using System.Net.Http; + using System.Net.Http.Headers; using System.Net.Mime; using System.Text; using System.Threading.Tasks; @@ -64,6 +65,13 @@ namespace CloudNative.CloudEvents httpResponseMessage.Headers.Contains(SpecVersionHttpHeader)); } + public static bool IsCloudEvent(this HttpListenerRequest httpListenerRequest) + { + return ((httpListenerRequest.Headers["content-type"] != null && + httpListenerRequest.Headers["content-type"].StartsWith(CloudEvent.MediaType)) || + httpListenerRequest.Headers.AllKeys.Contains(SpecVersionHttpHeader)); + } + public static CloudEvent ToCloudEvent(this HttpResponseMessage httpResponseMessage, params ICloudEventExtension[] extensions) { diff --git a/test/CloudNative.CloudEvents.UnitTests/AmqpTest.cs b/test/CloudNative.CloudEvents.UnitTests/AmqpTest.cs index f2a057f..97bd202 100644 --- a/test/CloudNative.CloudEvents.UnitTests/AmqpTest.cs +++ b/test/CloudNative.CloudEvents.UnitTests/AmqpTest.cs @@ -34,9 +34,11 @@ namespace CloudNative.CloudEvents.UnitTests attrs["comexampleextension2"] = new { othervalue = 5 }; var message = new AmqpCloudEventMessage(cloudEvent, ContentMode.Structured, new JsonEventFormatter()); + Assert.True(message.IsCloudEvent()); var encodedAmqpMessage = message.Encode(); var message1 = Message.Decode(encodedAmqpMessage); + Assert.True(message1.IsCloudEvent()); var receivedCloudEvent = message1.ToCloudEvent(); Assert.Equal("0.2", receivedCloudEvent.SpecVersion); @@ -75,9 +77,11 @@ namespace CloudNative.CloudEvents.UnitTests attrs["comexampleextension2"] = new { othervalue = 5 }; var message = new AmqpCloudEventMessage(cloudEvent, ContentMode.Binary, new JsonEventFormatter()); + Assert.True(message.IsCloudEvent()); var encodedAmqpMessage = message.Encode(); var message1 = Message.Decode(encodedAmqpMessage); + Assert.True(message1.IsCloudEvent()); var receivedCloudEvent = message1.ToCloudEvent(); Assert.Equal("0.2", receivedCloudEvent.SpecVersion); diff --git a/test/CloudNative.CloudEvents.UnitTests/HttpTest.cs b/test/CloudNative.CloudEvents.UnitTests/HttpTest.cs index 69369bf..ce1a911 100644 --- a/test/CloudNative.CloudEvents.UnitTests/HttpTest.cs +++ b/test/CloudNative.CloudEvents.UnitTests/HttpTest.cs @@ -148,6 +148,8 @@ namespace CloudNative.CloudEvents.UnitTests { try { + Assert.True(context.Request.IsCloudEvent()); + var receivedCloudEvent = context.Request.ToCloudEvent(new JsonEventFormatter()); Assert.Equal("0.2", receivedCloudEvent.SpecVersion); @@ -229,6 +231,7 @@ namespace CloudNative.CloudEvents.UnitTests var result = await httpClient.GetAsync(new Uri(listenerAddress + "ep")); Assert.Equal(HttpStatusCode.OK, result.StatusCode); + Assert.True(result.IsCloudEvent()); var receivedCloudEvent = result.ToCloudEvent(); Assert.Equal("0.2", receivedCloudEvent.SpecVersion);