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);
        }
示例#5
0
        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));
            }
        }