public void ParseToRaw_ValidRawEvent_ShouldSucceed()
        {
            // Arrange
            const string           eventId       = "2d1781af-3a4c-4d7c-bd0c-e34b19da4e66";
            const string           licensePlate  = "1-TOM-337";
            var                    originalEvent = new NewCarRegistered(eventId, licensePlate);
            var                    rawEventBody  = JsonConvert.SerializeObject(originalEvent.Data, Formatting.Indented);
            var                    rawEvent      = new RawEvent(eventId, originalEvent.EventType, rawEventBody, originalEvent.Subject, originalEvent.DataVersion, originalEvent.EventTime);
            IEnumerable <RawEvent> events        = new List <RawEvent>
            {
                rawEvent
            };

            var serializedRawEvents = JsonConvert.SerializeObject(events);

            // Act
            var eventGridMessage = EventGridParser.Parse <RawEvent>(serializedRawEvents);

            // Assert
            Assert.NotNull(eventGridMessage);
            Assert.NotNull(eventGridMessage.Events);
            Assert.Single(eventGridMessage.Events);
            var eventPayload = eventGridMessage.Events.Single();

            Assert.Equal(eventId, eventPayload.Id);
            Assert.Equal(originalEvent.Subject, eventPayload.Subject);
            Assert.Equal(originalEvent.EventType, eventPayload.EventType);
            Assert.Equal(originalEvent.EventTime, eventPayload.EventTime);
            Assert.Equal(originalEvent.DataVersion, eventPayload.DataVersion);
            Assert.NotNull(eventPayload.Data);
            Assert.Equal(rawEventBody, eventPayload.Data.ToString());
        }
        public async Task PublishSingleRawEvent_WithBuilder_ValidParameters_Succeeds()
        {
            // Arrange
            var          topicEndpoint   = Configuration.GetValue <string>("Arcus:EventGrid:TopicEndpoint");
            var          endpointKey     = Configuration.GetValue <string>("Arcus:EventGrid:EndpointKey");
            const string licensePlate    = "1-TOM-337";
            const string expectedSubject = "/";
            var          eventId         = Guid.NewGuid().ToString();
            var          @event          = new NewCarRegistered(eventId, licensePlate);
            var          rawEventBody    = JsonConvert.SerializeObject(@event.Data);

            // Act
            await EventGridPublisherBuilder
            .ForTopic(topicEndpoint)
            .UsingAuthenticationKey(endpointKey)
            .Build()
            .PublishRaw(@event.Id, @event.EventType, rawEventBody);

            TracePublishedEvent(eventId, @event);

            // Assert
            var receivedEvent = _serviceBusEventConsumerHost.GetReceivedEvent(eventId);

            AssertReceivedEvent(eventId, @event.EventType, expectedSubject, licensePlate, receivedEvent);
        }
Ejemplo n.º 3
0
        public void Parse_ValidNewCarRegisteredEvent_ShouldSucceed()
        {
            // Arrange
            string       eventId      = Guid.NewGuid().ToString();
            const string licensePlate = "1-TOM-337";
            const string subject      = licensePlate;

            var @event   = new NewCarRegistered(eventId, subject, licensePlate);
            var rawEvent = JsonConvert.SerializeObject(new[] { @event });

            // Act
            var eventGridBatch = EventGridParser.Parse <NewCarRegistered>(rawEvent);

            // Assert
            Assert.NotNull(eventGridBatch);
            Assert.NotNull(eventGridBatch.Events);
            var eventPayload = Assert.Single(eventGridBatch.Events);

            Assert.Equal(eventId, eventPayload.Id);
            Assert.Equal(subject, eventPayload.Subject);
            Assert.Equal(@event.EventType, eventPayload.EventType);
            Assert.Equal(@event.EventTime, eventPayload.EventTime);
            Assert.NotNull(eventPayload.Data);
            var eventInformation = eventPayload.GetPayload();

            Assert.NotNull(eventInformation);
            Assert.Equal(licensePlate, eventInformation.LicensePlate);
        }
        public void SerializedCustomEventGridEvent_AsJObject_IsNotCloudEvent()
        {
            // Arrange
            var newCarRegisteredEvent =
                new NewCarRegistered($"event-id-{Guid.NewGuid()}", $"license-plate-{Guid.NewGuid()}");

            JObject jObject = JObject.FromObject(newCarRegisteredEvent);

            // Act
            bool isCloudEvent = jObject.IsCloudEvent();

            // Assert
            Assert.False(isCloudEvent, "Serialized custom EventGridEvent should not be evaluated as CloudEvent schema");
        }
Ejemplo n.º 5
0
        public void Parse_ValidRawEvent_ShouldSucceed()
        {
            // Arrange
            const string eventId       = "2d1781af-3a4c-4d7c-bd0c-e34b19da4e66";
            const string licensePlate  = "1-TOM-337";
            var          originalEvent = new NewCarRegistered(eventId, licensePlate);
            var          rawEventBody  = JsonConvert.SerializeObject(originalEvent.Data);
            var          rawEvent      = new RawEvent(eventId, originalEvent.EventType, rawEventBody, originalEvent.Subject, originalEvent.DataVersion, originalEvent.EventTime);

            // Act
            var serializedOriginalEvent = JsonConvert.SerializeObject(originalEvent);
            var serializedRawEvent      = JsonConvert.SerializeObject(rawEvent);

            // Assert
            Assert.Equal(serializedRawEvent, serializedOriginalEvent);
        }
Ejemplo n.º 6
0
        public void Event_CreateWithId_ShouldSucceed()
        {
            // Arrange
            string       eventId      = Guid.NewGuid().ToString();
            const string licensePlate = "1-TOM-337";

            // Act
            var createdEvent = new NewCarRegistered(eventId, licensePlate);

            // Assert
            Assert.NotNull(createdEvent);
            Assert.Equal(eventId, createdEvent.Id);
            Assert.Null(createdEvent.Subject);
            Assert.NotNull(createdEvent.Data);
            Assert.Equal(licensePlate, createdEvent.Data.LicensePlate);
            Assert.NotEqual(default(DateTimeOffset), createdEvent.EventTime);
        }
Ejemplo n.º 7
0
        public async Task Publish_NoEventSpecified_ShouldFailWithArgumentNullException()
        {
            // Arrange
            const string     topicEndpoint     = "http://myTopic";
            const string     authenticationKey = "myKey";
            NewCarRegistered @event            = null;

            // Act
            var eventGridPublisher =
                EventGridPublisherBuilder
                .ForTopic(topicEndpoint)
                .UsingAuthenticationKey(authenticationKey)
                .Build();

            // Assert
            await Assert.ThrowsAsync <ArgumentNullException>(() => eventGridPublisher.PublishAsync(@event));
        }
        private static void AssertReceivedEvent(string eventId, string eventType, string eventSubject, string licensePlate, string receivedEvent)
        {
            Assert.NotEqual(string.Empty, receivedEvent);

            EventGridMessage <NewCarRegistered> deserializedEventGridMessage = EventGridParser.Parse <NewCarRegistered>(receivedEvent);

            Assert.NotNull(deserializedEventGridMessage);
            Assert.NotEmpty(deserializedEventGridMessage.SessionId);
            Assert.NotNull(deserializedEventGridMessage.Events);

            NewCarRegistered deserializedEvent = Assert.Single(deserializedEventGridMessage.Events);

            Assert.NotNull(deserializedEvent);
            Assert.Equal(eventId, deserializedEvent.Id);
            Assert.Equal(eventSubject, deserializedEvent.Subject);
            Assert.Equal(eventType, deserializedEvent.EventType);

            Assert.NotNull(deserializedEvent.Data);
            Assert.Equal(licensePlate, deserializedEvent.Data.LicensePlate);
        }
        public async Task PublishSingleEventGridEvent_WithBuilder_ValidParameters_Succeeds()
        {
            // Arrange
            const string eventSubject = "integration-test";
            const string licensePlate = "1-TOM-337";
            var          eventId      = Guid.NewGuid().ToString();
            var          @event       = new NewCarRegistered(eventId, eventSubject, licensePlate);

            IEventGridPublisher publisher = EventPublisherFactory.CreateEventGridEventPublisher(_config);

            // Act
            await publisher.PublishAsync(@event);

            TracePublishedEvent(eventId, @event);

            // Assert
            var receivedEvent = _endpoint.ServiceBusEventConsumerHost.GetReceivedEvent(eventId);

            ArcusAssert.ReceivedNewCarRegisteredEvent(eventId, @event.EventType, eventSubject, licensePlate, receivedEvent);
        }
Ejemplo n.º 10
0
        private static void AssertReceivedNewCarRegisteredEvent(string eventId, string eventType, string eventSubject, string licensePlate, string receivedEvent)
        {
            Assert.NotEqual(String.Empty, receivedEvent);

            EventBatch <NewCarRegistered> deserializedEventGridMessage = EventGridParser.Parse <NewCarRegistered>(receivedEvent);

            Assert.NotNull(deserializedEventGridMessage);
            Assert.NotEmpty(deserializedEventGridMessage.SessionId);
            Assert.NotNull(deserializedEventGridMessage.Events);

            NewCarRegistered deserializedEvent = Assert.Single(deserializedEventGridMessage.Events);

            Assert.NotNull(deserializedEvent);
            Assert.Equal(eventId, deserializedEvent.Id);
            Assert.Equal(eventSubject, deserializedEvent.Subject);
            Assert.Equal(eventType, deserializedEvent.EventType);

            Assert.NotNull(deserializedEvent.Data);
            CarEventData eventData = deserializedEvent.GetPayload();

            Assert.NotNull(eventData);
            Assert.Equal(JsonConvert.DeserializeObject <CarEventData>(deserializedEvent.Data.ToString()), eventData);
            Assert.Equal(licensePlate, eventData.LicensePlate);
        }