public void LmiWebhookReceiverServiceExtractEventReturnsExpected(string eventType, WebhookCommand webhookCommand, string api)
        {
            // Arrange
            var eventGridEventData = new EventGridEventData
            {
                ItemId = Guid.NewGuid().ToString(),
                Api    = api,
            };
            var eventGridEvents = BuildValidEventGridEvent(eventType, eventGridEventData);
            var expectedResult  = new WebhookRequestModel
            {
                WebhookCommand = webhookCommand,
                EventId        = Guid.Parse(eventGridEvents.First().Id),
                EventType      = eventGridEvents.First().EventType,
                ContentId      = Guid.Parse(eventGridEventData.ItemId),
                Url            = new Uri(eventGridEventData.Api, UriKind.Absolute),
                SubscriptionValidationResponse = null,
            };
            var requestBody = JsonConvert.SerializeObject(eventGridEvents);

            // Act
            var result = lmiWebhookReceiverService.ExtractEvent(requestBody);

            // Assert
            Assert.Equal(expectedResult.WebhookCommand, result.WebhookCommand);
            Assert.Equal(expectedResult.EventType, result.EventType);
            Assert.Equal(expectedResult.ContentId, result.ContentId);
            Assert.Equal(expectedResult.Url, result.Url);
            Assert.Null(result.SubscriptionValidationResponse?.ValidationResponse);
        }
Пример #2
0
        public async Task PostDraftEventAsync(string displayText, Uri?apiEndpoint, Guid?contentId)
        {
            logger.LogInformation($"Posting to event grid for: {displayText}");

            var eventGridEventData = new EventGridEventData
            {
                ItemId      = contentId.ToString(),
                Api         = apiEndpoint?.ToString(),
                DisplayText = displayText,
                VersionId   = Guid.NewGuid().ToString(),
                Author      = eventGridClientOptions.SubjectPrefix,
            };

            await eventGridService.SendEventAsync(eventGridEventData, eventGridClientOptions.SubjectPrefix, EventTypeDraft).ConfigureAwait(false);
        }
Пример #3
0
        public Task PostPublishedEventAsync(string displayText, Uri?apiEndpoint, Guid?contentId)
        {
            logger.LogInformation($"Posting to event grid for: {displayText}");

            var eventGridEventData = new EventGridEventData
            {
                ItemId      = contentId.ToString(),
                Api         = apiEndpoint?.ToString(),
                DisplayText = displayText,
                VersionId   = Guid.NewGuid().ToString(),
                Author      = eventGridClientOptions.SubjectPrefix,
            };

            return(eventGridService.SendEventAsync(eventGridEventData, eventGridClientOptions.SubjectPrefix, EventTypePublished));
        }
        public void LmiWebhookReceiverServiceExtractEventRaisesExceptionForInvalidApi()
        {
            // Arrange
            var eventGridEventData = new EventGridEventData
            {
                ItemId = Guid.NewGuid().ToString(),
                Api    = "https:somewhere.com",
            };
            var eventGridEvents = BuildValidEventGridEvent(EventTypePublished, eventGridEventData);
            var requestBody     = JsonConvert.SerializeObject(eventGridEvents);

            // Act
            var exceptionResult = Assert.Throws <InvalidDataException>(() => lmiWebhookReceiverService.ExtractEvent(requestBody));

            // Assert
            Assert.Equal($"Invalid Api url '{eventGridEventData.Api}' received for Event Id: {eventGridEvents.First().Id}", exceptionResult.Message);
        }
        public void LmiWebhookReceiverServiceExtractEventRaisesExceptionForInvalidItemId()
        {
            // Arrange
            var eventGridEventData = new EventGridEventData
            {
                ItemId = string.Empty,
                Api    = "https://somewhere.com",
            };
            var eventGridEvents = BuildValidEventGridEvent(EventTypePublished, eventGridEventData);
            var requestBody     = JsonConvert.SerializeObject(eventGridEvents);

            // Act
            var exceptionResult = Assert.Throws <InvalidDataException>(() => lmiWebhookReceiverService.ExtractEvent(requestBody));

            // Assert
            Assert.Equal($"Invalid Guid for EventGridEvent.Data.ItemId '{eventGridEventData.ItemId}'", exceptionResult.Message);
        }
        public async Task PostTransformationEventActivity([ActivityTrigger] EventGridPostRequestModel?eventGridPostRequest)
        {
            _ = eventGridPostRequest ?? throw new ArgumentNullException(nameof(eventGridPostRequest));

            logger.LogInformation($"Posting to event grid for: {eventGridPostRequest.DisplayText}: {eventGridPostRequest.EventType}");

            var eventGridEventData = new EventGridEventData
            {
                ItemId      = $"{eventGridPostRequest.ItemId}",
                Api         = eventGridPostRequest.Api,
                DisplayText = eventGridPostRequest.DisplayText,
                VersionId   = Guid.NewGuid().ToString(),
                Author      = eventGridClientOptions.SubjectPrefix,
            };

            await eventGridService.SendEventAsync(eventGridEventData, eventGridClientOptions.SubjectPrefix, eventGridPostRequest.EventType).ConfigureAwait(false);
        }
        public void LmiWebhookReceiverServiceExtractEventReturnsNone()
        {
            // Arrange
            var eventGridEventData = new EventGridEventData
            {
                ItemId = Guid.NewGuid().ToString(),
                Api    = "https://somewhere.com/api/",
            };
            var eventGridEvents = BuildValidEventGridEvent(EventTypePublished, eventGridEventData);
            var expectedResult  = new WebhookRequestModel
            {
                WebhookCommand = WebhookCommand.None,
            };
            var requestBody = JsonConvert.SerializeObject(eventGridEvents);

            // Act
            var result = lmiWebhookReceiverService.ExtractEvent(requestBody);

            // Assert
            Assert.Equal(expectedResult.WebhookCommand, result.WebhookCommand);
        }