Ejemplo n.º 1
0
        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();
        }
Ejemplo n.º 2
0
        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();
        }
Ejemplo n.º 3
0
        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();
        }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
0
        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);
        }