public async Task WebhooksControllerPostReturnsErrorForInvalidUrl() { // Arrange var eventGridEvents = BuildValidEventGridEvent(EventTypePublished, new EventGridEventData { Api = "http:http://badUrl" }); using var controller = BuildWebhooksController(MediaTypeNames.Application.Json); controller.HttpContext.Request.Body = BuildStreamFromModel(eventGridEvents); // Act await Assert.ThrowsAsync <InvalidDataException>(async() => await controller.ReceiveEvents().ConfigureAwait(false)).ConfigureAwait(false); // Assert A.CallTo(() => FakeWebhooksService.ProcessMessageAsync(A <WebhookCacheOperation> .Ignored, A <Guid> .Ignored, A <Guid> .Ignored, A <string> .Ignored)).MustNotHaveHappened(); }
public async Task WebhooksControllerPostReturnsErrorForUnknownEventType() { // Arrange var eventGridEvents = BuildValidEventGridEvent("Unknown", new EventGridEventData { ItemId = Guid.NewGuid().ToString(), Api = "https://somewhere.com", }); var controller = BuildWebhooksController(MediaTypeNames.Application.Json); controller.HttpContext.Request.Body = BuildStreamFromModel(eventGridEvents); // Act await Assert.ThrowsAsync <InvalidDataException>(async() => await controller.ReceiveEvents().ConfigureAwait(false)).ConfigureAwait(false); // Assert A.CallTo(() => FakeWebhooksService.ProcessMessageAsync(A <WebhookCacheOperation> .Ignored, A <Guid> .Ignored, A <Guid> .Ignored, A <string> .Ignored)).MustNotHaveHappened(); controller.Dispose(); }
public async Task WebhooksControllerPublishCreatePostReturnsExceptionForConflict(string mediaTypeName, string eventType) { // Arrange var eventGridEvents = BuildValidEventGridEvent(eventType, new EventGridEventData { ItemId = ItemIdForCreate.ToString(), Api = "https://somewhere.com", }); using var controller = BuildWebhooksController(mediaTypeName); controller.HttpContext.Request.Body = BuildStreamFromModel(eventGridEvents); A.CallTo(() => FakeWebhooksService.ProcessMessageAsync(A <WebhookCacheOperation> .Ignored, A <Guid> .Ignored, A <Guid> .Ignored, A <string> .Ignored)).Returns(HttpStatusCode.Conflict); // Act await Assert.ThrowsAsync <InvalidDataException>(async() => await controller.ReceiveEvents().ConfigureAwait(false)).ConfigureAwait(false); // Assert A.CallTo(() => FakeWebhooksService.ProcessMessageAsync(A <WebhookCacheOperation> .Ignored, A <Guid> .Ignored, A <Guid> .Ignored, A <string> .Ignored)).MustHaveHappenedOnceExactly(); }
public async Task WebhooksControllerPostReturnsErrorForInvalidItemId(string id) { // Arrange var eventGridEvents = BuildValidEventGridEvent(EventTypePublished, new EventGridEventData { ItemId = id, Api = "https://somewhere.com", }); var controller = BuildWebhooksController(MediaTypeNames.Application.Json); controller.HttpContext.Request.Body = BuildStreamFromModel(eventGridEvents); // Act var result = await controller.ReceiveEvents().ConfigureAwait(false); var resultStatusCode = (StatusCodeResult)result; // Assert Assert.Equal((int)HttpStatusCode.InternalServerError, resultStatusCode.StatusCode); A.CallTo(() => FakeWebhooksService.ProcessMessageAsync(A <WebhookCacheOperation> .Ignored, A <Guid> .Ignored, A <Guid> .Ignored, A <string> .Ignored)).MustNotHaveHappened(); controller.Dispose(); }
public async Task WebhooksControllerDeletePostReturnsSuccess(string mediaTypeName, string eventType) { // Arrange const HttpStatusCode expectedResponse = HttpStatusCode.OK; var eventGridEvents = BuildValidEventGridEvent(eventType, new EventGridEventData { ItemId = ItemIdForDelete.ToString(), Api = "https://somewhere.com", }); using var controller = BuildWebhooksController(mediaTypeName); controller.HttpContext.Request.Body = BuildStreamFromModel(eventGridEvents); A.CallTo(() => FakeWebhooksService.ProcessMessageAsync(A <WebhookCacheOperation> .Ignored, A <Guid> .Ignored, A <Guid> .Ignored, A <string> .Ignored)).Returns(expectedResponse); // Act var result = await controller.ReceiveEvents().ConfigureAwait(false); // Assert A.CallTo(() => FakeWebhooksService.ProcessMessageAsync(A <WebhookCacheOperation> .Ignored, A <Guid> .Ignored, A <Guid> .Ignored, A <string> .Ignored)).MustHaveHappenedOnceExactly(); var okResult = Assert.IsType <OkResult>(result); Assert.Equal((int)expectedResponse, okResult.StatusCode); }
public async Task WebhooksControllerSubscriptionValidationReturnsSuccess() { // Arrange const HttpStatusCode expectedResponse = HttpStatusCode.OK; string expectedValidationCode = Guid.NewGuid().ToString(); var eventGridEvents = BuildValidEventGridEvent(Microsoft.Azure.EventGrid.EventTypes.EventGridSubscriptionValidationEvent, new SubscriptionValidationEventData(expectedValidationCode, "https://somewhere.com")); using var controller = BuildWebhooksController(MediaTypeNames.Application.Json); controller.HttpContext.Request.Body = BuildStreamFromModel(eventGridEvents); // Act var result = await controller.ReceiveEvents().ConfigureAwait(false); // Assert A.CallTo(() => FakeWebhooksService.ProcessMessageAsync(A <WebhookCacheOperation> .Ignored, A <Guid> .Ignored, A <Guid> .Ignored, A <string> .Ignored)).MustNotHaveHappened(); var jsonResult = Assert.IsType <OkObjectResult>(result); var response = Assert.IsAssignableFrom <SubscriptionValidationResponse>(jsonResult.Value); Assert.Equal((int)expectedResponse, jsonResult.StatusCode); Assert.Equal(expectedValidationCode, response.ValidationResponse); }