public async Task produces_expected_message_without_headers_using_default_serializer() { var spy = new KafkaProducerSpy(); var sut = A.Producer .With(spy) .With(new MessageIdGeneratorStub(() => "1")) .With(A.OutgoingMessageRegistry .Register <Message>("foo", "bar", @event => @event.Id) .Build() ) .Build(); await sut.Produce( message : new Message { Id = "dummyId" }, headers : new Dictionary <string, object> { } ); var expected = @"{ ""messageId"":""1"", ""type"":""bar"", ""causationId"":""1"", ""correlationId"":""1"", ""data"":{ ""id"":""dummyId"" } }"; AssertJson.Equal(expected, spy.Value); }
public async Task Can_create_outgoing_message_from_registry_with_expected_raw_message() { const string dummyMessageId = "foo_id"; const string dummyAggregateId = "dummyId"; var spy = new KafkaProducerSpy(); var sut = A.Producer .With(spy) .With(A.OutgoingMessageRegistry .Register <DummyMessage>(DummyTopic, DummyType, x => x.AggregateId) .Build() ) .With(new MessageIdGeneratorStub(() => dummyMessageId)) .Build(); await sut.Produce(new DummyMessage(dummyAggregateId)); var expected = $@"{{ ""messageId"":""{dummyMessageId}"", ""type"":""{DummyType}"", ""causationId"":""foo_id"", ""correlationId"":""foo_id"", ""data"":{{ ""aggregateId"":""{dummyAggregateId}"" }} }}"; AssertJson.Equal(expected, spy.Value); }
public async Task Can_forward_headers() { var spy = new OutboxEntryRepositorySpy(); var sut = A.OutboxQueue .With( A.OutgoingMessageRegistry .Register <Message>("foo", "bar", @event => "baz") .Build() ) .With(spy) .Build(); var metadata = new Metadata() { MessageId = "183388b5-a8e9-4cb4-b553-6699632461c7", CausationId = "183388b5-a8e9-4cb4-b553-6699632461c7", CorrelationId = "183388b5-a8e9-4cb4-b553-6699632461c7" }; await sut.Enqueue(new[] { new Message() }, metadata); var expected = @"{ ""messageId"":""183388b5-a8e9-4cb4-b553-6699632461c7"", ""type"":""bar"", ""causationId"":""183388b5-a8e9-4cb4-b553-6699632461c7"", ""correlationId"":""183388b5-a8e9-4cb4-b553-6699632461c7"", ""data"":{ } }"; AssertJson.Equal(expected, spy.OutboxEntries[0].Payload); }
public async Task returns_expected_serialized_value_of_simple_payload_without_headers() { var sut = new DefaultPayloadSerializer(); var messageDataStub = "foo-message-data"; var payloadStub = new PayloadDescriptorBuilder() .WithMessageData(messageDataStub) .Build(); AssertJson.Equal( expected: $@" {{ ""messageId"":""{payloadStub.MessageId}"", ""type"":""{payloadStub.MessageType}"", ""data"":""{messageDataStub}"" }}", actual: await sut.Serialize(payloadStub) ); }
public async Task produces_message_using_message_handler_context() { var spy = new KafkaProducerSpy(); var sut = A.Producer .With(spy) .With(new MessageIdGeneratorStub(() => "1")) .With(A.OutgoingMessageRegistry .Register <Message>("foo", "bar", @event => @event.Id) .Build() ) .Build(); await sut.Produce( message : new Message { Id = "0" }, context : new MessageHandlerContext(new Metadata { CausationId = "my-causation", CorrelationId = "my-correlation" }) ); var expected = @" { ""messageId"":""1"", ""type"":""bar"", ""correlationId"":""my-correlation"", ""causationId"":""1"", ""data"":{ ""id"":""0"" } }"; AssertJson.Equal(expected, spy.Value); }
public async Task returns_expected_serialized_value_of_simple_payload_with_simple_headers() { var sut = new DefaultPayloadSerializer(); var messageDataStub = "foo-message-data"; var headerEntryStub = KeyValuePair.Create <string, object>("foo", "bar"); var payloadStub = new PayloadDescriptorBuilder() .WithMessageData(messageDataStub) .WithMessageHeaders(headerEntryStub) .Build(); AssertJson.Equal( expected: $@" {{ ""messageId"":""{payloadStub.MessageId}"", ""type"":""{payloadStub.MessageType}"", ""{headerEntryStub.Key}"":""{headerEntryStub.Value}"", ""data"":""{messageDataStub}"" }}", actual: await sut.Serialize(payloadStub) ); }