diff --git a/Directory.Packages.props b/Directory.Packages.props
index f19f00e..e89ef8d 100644
--- a/Directory.Packages.props
+++ b/Directory.Packages.props
@@ -14,6 +14,7 @@
+
@@ -21,4 +22,4 @@
-
\ No newline at end of file
+
diff --git a/src/CloudNative.CloudEvents.SystemTextJson/JsonEventFormatter.cs b/src/CloudNative.CloudEvents.SystemTextJson/JsonEventFormatter.cs
index 011dd56..c261134 100644
--- a/src/CloudNative.CloudEvents.SystemTextJson/JsonEventFormatter.cs
+++ b/src/CloudNative.CloudEvents.SystemTextJson/JsonEventFormatter.cs
@@ -1,4 +1,4 @@
-// Copyright (c) Cloud Native Foundation.
+// Copyright (c) Cloud Native Foundation.
// Licensed under the Apache 2.0 license.
// See LICENSE file in the project root for full license information.
@@ -198,8 +198,7 @@ private async Task ReadDocumentAsync(Stream data, ContentType? con
using var reader = new StreamReader(data, encoding);
var json = async
? await reader.ReadToEndAsync().ConfigureAwait(false)
- : reader.ReadToEnd();
-
+ : reader.ReadToEnd();
return JsonDocument.Parse(json, DocumentOptions);
#endif
}
diff --git a/test/CloudNative.CloudEvents.UnitTests/AspNetCore/HttpResponseExtensionsTest.cs b/test/CloudNative.CloudEvents.UnitTests/AspNetCore/HttpResponseExtensionsTest.cs
index 4233727..8d71c4c 100644
--- a/test/CloudNative.CloudEvents.UnitTests/AspNetCore/HttpResponseExtensionsTest.cs
+++ b/test/CloudNative.CloudEvents.UnitTests/AspNetCore/HttpResponseExtensionsTest.cs
@@ -31,7 +31,7 @@ public async Task CopyToHttpResponseAsync_BinaryMode()
var content = GetContent(response);
Assert.Equal("text/plain", response.ContentType);
- Assert.Equal("plain text", Encoding.UTF8.GetString(content.Span));
+ Assert.Equal("plain text", Encoding.UTF8.GetString(content.Span.ToArray()));
Assert.Equal("1.0", response.Headers["ce-specversion"]);
Assert.Equal(cloudEvent.Type, response.Headers["ce-type"]);
Assert.Equal(cloudEvent.Id, response.Headers["ce-id"]);
@@ -66,7 +66,7 @@ public async Task CopyToHttpResponseAsync_NonBinaryDataButNoDataContentType_Cont
var content = GetContent(response);
// The formatter infers that it should encode the string as a JSON value (so it includes the double quotes)
Assert.Equal("application/json", response.ContentType);
- Assert.Equal("\"plain text\"", Encoding.UTF8.GetString(content.Span));
+ Assert.Equal("\"plain text\"", Encoding.UTF8.GetString(content.Span.ToArray()));
}
[Fact]
diff --git a/test/CloudNative.CloudEvents.UnitTests/CloudNative.CloudEvents.UnitTests.csproj b/test/CloudNative.CloudEvents.UnitTests/CloudNative.CloudEvents.UnitTests.csproj
index 82f4828..2cbbdce 100644
--- a/test/CloudNative.CloudEvents.UnitTests/CloudNative.CloudEvents.UnitTests.csproj
+++ b/test/CloudNative.CloudEvents.UnitTests/CloudNative.CloudEvents.UnitTests.csproj
@@ -2,12 +2,20 @@
net8.0;net10.0
+ $(TargetFrameworks);net48
+ latest
enable
-
-
-
+
+
+
+
+
+
+
+
+
diff --git a/test/CloudNative.CloudEvents.UnitTests/Core/MimeUtilitiesTest.cs b/test/CloudNative.CloudEvents.UnitTests/Core/MimeUtilitiesTest.cs
index 6064da7..df3545d 100644
--- a/test/CloudNative.CloudEvents.UnitTests/Core/MimeUtilitiesTest.cs
+++ b/test/CloudNative.CloudEvents.UnitTests/Core/MimeUtilitiesTest.cs
@@ -31,8 +31,8 @@ public void ContentTypeConversions(string text)
// This just makes them deterministic.
void AssertEqualParts(string expected, string actual)
{
- expected = string.Join(";", expected.Split(";").OrderBy(x => x));
- actual = string.Join(";", actual.Split(";").OrderBy(x => x));
+ expected = string.Join(";", expected.Split(';').OrderBy(x => x));
+ actual = string.Join(";", actual.Split(';').OrderBy(x => x));
Assert.Equal(expected, actual);
}
}
diff --git a/test/CloudNative.CloudEvents.UnitTests/Http/HttpClientExtensionsTest.cs b/test/CloudNative.CloudEvents.UnitTests/Http/HttpClientExtensionsTest.cs
index 1a2cf7e..064b8a0 100644
--- a/test/CloudNative.CloudEvents.UnitTests/Http/HttpClientExtensionsTest.cs
+++ b/test/CloudNative.CloudEvents.UnitTests/Http/HttpClientExtensionsTest.cs
@@ -492,6 +492,7 @@ internal static void CopyHeaders(IDictionary? source, HttpHeader
internal static HttpRequestMessage CreateRequestMessage(ReadOnlyMemory content, ContentType contentType) =>
new HttpRequestMessage
{
+ Method = HttpMethod.Post,
Content = new ByteArrayContent(content.ToArray())
{
Headers = { ContentType = MimeUtilities.ToMediaTypeHeaderValue(contentType) }
diff --git a/test/CloudNative.CloudEvents.UnitTests/Http/HttpListenerExtensionsTest.cs b/test/CloudNative.CloudEvents.UnitTests/Http/HttpListenerExtensionsTest.cs
index a66c744..26143e1 100644
--- a/test/CloudNative.CloudEvents.UnitTests/Http/HttpListenerExtensionsTest.cs
+++ b/test/CloudNative.CloudEvents.UnitTests/Http/HttpListenerExtensionsTest.cs
@@ -1,4 +1,4 @@
-// Copyright 2021 Cloud Native Foundation.
+// Copyright 2021 Cloud Native Foundation.
// Licensed under the Apache 2.0 license.
// See LICENSE file in the project root for full license information.
@@ -26,7 +26,7 @@ public async Task IsCloudEvent_True(string description, HttpContent content, IDi
// Really only present for display purposes.
Assert.NotNull(description);
- var request = new HttpRequestMessage(HttpMethod.Get, ListenerAddress) { Content = content };
+ var request = new HttpRequestMessage(HttpMethod.Post, ListenerAddress) { Content = content };
HttpClientExtensionsTest.CopyHeaders(headers, request.Headers);
var result = await SendRequestAsync(request, context => Task.FromResult(context.Request.IsCloudEvent()));
Assert.True(result);
@@ -40,7 +40,7 @@ public async Task IsCloudEvent_False(string description, HttpContent content, ID
// Really only present for display purposes.
Assert.NotNull(description);
- var request = new HttpRequestMessage(HttpMethod.Get, ListenerAddress) { Content = content };
+ var request = new HttpRequestMessage(HttpMethod.Post, ListenerAddress) { Content = content };
HttpClientExtensionsTest.CopyHeaders(headers, request.Headers);
var result = await SendRequestAsync(request, context => Task.FromResult(context.Request.IsCloudEvent()));
Assert.False(result);
@@ -53,7 +53,7 @@ public async Task IsCloudEventBatch_True(string description, HttpContent content
// Really only present for display purposes.
Assert.NotNull(description);
- var request = new HttpRequestMessage(HttpMethod.Get, ListenerAddress) { Content = content };
+ var request = new HttpRequestMessage(HttpMethod.Post, ListenerAddress) { Content = content };
HttpClientExtensionsTest.CopyHeaders(headers, request.Headers);
var result = await SendRequestAsync(request, context => Task.FromResult(context.Request.IsCloudEventBatch()));
Assert.True(result);
@@ -67,7 +67,7 @@ public async Task IsCloudEventBatch_False(string description, HttpContent conten
// Really only present for display purposes.
Assert.NotNull(description);
- var request = new HttpRequestMessage(HttpMethod.Get, ListenerAddress) { Content = content };
+ var request = new HttpRequestMessage(HttpMethod.Post, ListenerAddress) { Content = content };
HttpClientExtensionsTest.CopyHeaders(headers, request.Headers);
var result = await SendRequestAsync(request, context => Task.FromResult(context.Request.IsCloudEventBatch()));
Assert.False(result);
@@ -80,6 +80,7 @@ public async Task ToCloudEvent_BinaryMode(bool async)
{
var request = new HttpRequestMessage
{
+ Method = HttpMethod.Post,
RequestUri = new Uri(ListenerAddress),
Headers =
{
@@ -121,6 +122,7 @@ public async Task ToCloudEvent_StructuredMode(bool async)
var bytes = new JsonEventFormatter().EncodeStructuredModeMessage(originalCloudEvent, out var contentType);
var request = new HttpRequestMessage
{
+ Method = HttpMethod.Post,
RequestUri = new Uri(ListenerAddress),
Content = new ByteArrayContent(bytes.ToArray())
{
diff --git a/test/CloudNative.CloudEvents.UnitTests/Http/HttpTestBase.cs b/test/CloudNative.CloudEvents.UnitTests/Http/HttpTestBase.cs
index 4ec056c..eedb092 100644
--- a/test/CloudNative.CloudEvents.UnitTests/Http/HttpTestBase.cs
+++ b/test/CloudNative.CloudEvents.UnitTests/Http/HttpTestBase.cs
@@ -1,4 +1,4 @@
-// Copyright 2021 Cloud Native Foundation.
+// Copyright 2021 Cloud Native Foundation.
// Licensed under the Apache 2.0 license.
// See LICENSE file in the project root for full license information.
@@ -99,7 +99,7 @@ private async Task ProcessRequestsAsync()
var responseContent = Encoding.UTF8.GetBytes($"Error processing request: {e}");
response.ContentLength64 = responseContent.Length;
response.StatusCode = 500;
- response.OutputStream.Write(responseContent);
+ response.OutputStream.Write(responseContent, 0, responseContent.Length);
}
context.Response.Close();
}
diff --git a/test/CloudNative.CloudEvents.UnitTests/Kafka/KafkaTest.cs b/test/CloudNative.CloudEvents.UnitTests/Kafka/KafkaTest.cs
index bdea690..db560fd 100644
--- a/test/CloudNative.CloudEvents.UnitTests/Kafka/KafkaTest.cs
+++ b/test/CloudNative.CloudEvents.UnitTests/Kafka/KafkaTest.cs
@@ -131,8 +131,15 @@ public void KafkaBinaryMessageTest()
[Theory]
[InlineData(MediaTypeNames.Application.Octet, new byte[0])]
+#if NET8_0_OR_GREATER
[InlineData(MediaTypeNames.Application.Json, null)]
[InlineData(MediaTypeNames.Application.Xml, new byte[0])]
+#else
+ // Equivalent to the above, but those constants don't exist
+ // in .NET Framework
+ [InlineData("application/json", null)]
+ [InlineData("application/xml", new byte[0])]
+#endif
[InlineData(MediaTypeNames.Text.Plain, "")]
[InlineData(null, null)]
public void KafkaBinaryMessageTombstoneTest(string? contentType, object? expectedDecodedResult)