示例#1
0
        public async Task ToCloudEvent_StructuredMode(bool async)
        {
            var originalCloudEvent = new CloudEvent
            {
                Data            = "sample text",
                DataContentType = "text/plain"
            }.PopulateRequiredAttributes();

            var bytes   = new JsonEventFormatter().EncodeStructuredModeMessage(originalCloudEvent, out var contentType);
            var request = new HttpRequestMessage
            {
                RequestUri = new Uri(ListenerAddress),
                Content    = new ByteArrayContent(bytes.ToArray())
                {
                    Headers = { { "content-type", contentType.ToString() } }
                }
            };

            var parsedCloudEvent = await SendRequestAsync(request, async context =>
                                                          async
                                                          ?await context.Request.ToCloudEventAsync(new JsonEventFormatter())
                                                          : context.Request.ToCloudEvent(new JsonEventFormatter()));

            Assert.NotNull(parsedCloudEvent);
            Assert.Equal(originalCloudEvent.Id, parsedCloudEvent.Id);
            Assert.Equal(originalCloudEvent.Type, parsedCloudEvent.Type);
            Assert.Equal(originalCloudEvent.Source, parsedCloudEvent.Source);
            Assert.Equal(originalCloudEvent.DataContentType, parsedCloudEvent.DataContentType);
            Assert.Equal(originalCloudEvent.Data, parsedCloudEvent.Data);
        }