public void EncodeBatchModeMessage_Invalid() { var formatter = new JsonEventFormatter(); // Invalid CloudEvent Assert.Throws <ArgumentException>(() => formatter.EncodeBatchModeMessage(new[] { new CloudEvent() }, out _)); // Null argument Assert.Throws <ArgumentNullException>(() => formatter.EncodeBatchModeMessage(null, out _)); // Null value within the argument. Arguably this should throw ArgumentException instead of // ArgumentNullException, but it's unlikely to cause confusion. Assert.Throws <ArgumentNullException>(() => formatter.EncodeBatchModeMessage(new CloudEvent[1], out _)); }
public async Task ToCloudEventBatchAsync_Valid() { var batch = CreateSampleBatch(); var formatter = new JsonEventFormatter(); var contentBytes = formatter.EncodeBatchModeMessage(batch, out var contentType); AssertBatchesEqual(batch, await CreateRequest(contentBytes, contentType).ToCloudEventBatchAsync(formatter, EmptyExtensionArray)); AssertBatchesEqual(batch, await CreateRequest(contentBytes, contentType).ToCloudEventBatchAsync(formatter, EmptyExtensionSequence)); }
public void EncodeBatchModeMessage_Empty() { var cloudEvents = new CloudEvent[0]; var formatter = new JsonEventFormatter(); byte[] bytes = formatter.EncodeBatchModeMessage(cloudEvents, out var contentType); Assert.Equal("application/cloudevents-batch+json; charset=utf-8", contentType.ToString()); var array = ParseJsonArray(bytes); Assert.Empty(array); }
public void EncodeBatchModeMessage_TwoEvents() { var event1 = new CloudEvent().PopulateRequiredAttributes(); event1.Id = "event1"; event1.Data = "simple text"; event1.DataContentType = "text/plain"; var event2 = new CloudEvent().PopulateRequiredAttributes(); event2.Id = "event2"; var cloudEvents = new[] { event1, event2 }; var formatter = new JsonEventFormatter(); byte[] bytes = formatter.EncodeBatchModeMessage(cloudEvents, out var contentType); Assert.Equal("application/cloudevents-batch+json; charset=utf-8", contentType.ToString()); var array = ParseJson(bytes).EnumerateArray().ToList(); Assert.Equal(2, array.Count); var asserter1 = new JsonElementAsserter { { "specversion", JsonValueKind.String, "1.0" }, { "id", JsonValueKind.String, event1.Id }, { "type", JsonValueKind.String, event1.Type }, { "source", JsonValueKind.String, "//test" }, { "data", JsonValueKind.String, "simple text" }, { "datacontenttype", JsonValueKind.String, event1.DataContentType } }; asserter1.AssertProperties(array[0], assertCount: true); var asserter2 = new JsonElementAsserter { { "specversion", JsonValueKind.String, "1.0" }, { "id", JsonValueKind.String, event2.Id }, { "type", JsonValueKind.String, event2.Type }, { "source", JsonValueKind.String, "//test" }, }; asserter2.AssertProperties(array[1], assertCount: true); }
public async Task ToCloudEventBatch_Valid() { var batch = CreateSampleBatch(); var formatter = new JsonEventFormatter(); var contentBytes = formatter.EncodeBatchModeMessage(batch, out var contentType); AssertBatchesEqual(batch, await GetBatchAsync(context => context.Request.ToCloudEventBatchAsync(formatter, EmptyExtensionArray))); AssertBatchesEqual(batch, await GetBatchAsync(context => context.Request.ToCloudEventBatchAsync(formatter, EmptyExtensionSequence))); AssertBatchesEqual(batch, await GetBatchAsync(context => Task.FromResult(context.Request.ToCloudEventBatch(formatter, EmptyExtensionArray)))); AssertBatchesEqual(batch, await GetBatchAsync(context => Task.FromResult(context.Request.ToCloudEventBatch(formatter, EmptyExtensionSequence)))); Task <IReadOnlyList <CloudEvent> > GetBatchAsync(Func <HttpListenerContext, Task <IReadOnlyList <CloudEvent> > > handler) { var request = HttpClientExtensionsTest.CreateRequestMessage(contentBytes, contentType); request.RequestUri = new Uri(ListenerAddress); return(SendRequestAsync(request, handler)); } }