コード例 #1
0
        public async Task HandleAsync_ShouldReturnFalse_WhenContainerCreateThrows()
        {
            // Arrange
            var createContainerData = new RequestContainerCreateDTO {
                StorageAccountName = _storageAccountName, ContainerName = "unittestcontainer" + Guid.NewGuid().ToString()
            };
            var blobContainerCreateId = Guid.NewGuid().ToString();
            var testEvent             =
                new EventGridEvent
            {
                Data        = JObject.FromObject(createContainerData),
                EventType   = CustomEventTypes.RequestBlobContainerCreate,
                DataVersion = "1.0",
            };

            // Arrange Mocks
            Mock.Get(_storageService)
            .Setup(x => x.ContainerCreateAsync(createContainerData.StorageAccountName, createContainerData.ContainerName, It.IsAny <StorageClientProviderContext>()))
            .ThrowsAsync(new InvalidOperationException());

            // Act
            var handleAsyncResult = await _handler.HandleAsync(testEvent).ConfigureAwait(true);

            // Assert
            handleAsyncResult.ShouldBe(false);
            Uri appInsightUri;

            Mock.Get(_logger).Verify(x =>
                                     x.LogExceptionObject(out appInsightUri, LogEventIds.GridwichUnhandledException, It.IsAny <Exception>(), It.IsAny <object>()),
                                     Times.Once);
        }
コード例 #2
0
        public async Task HandleAsync_ShouldThrow_WhenInvalidEvent()
        {
            // Arrange
            var createContainerData = new RequestContainerCreateDTO {
                StorageAccountName = _storageAccountName, ContainerName = "unittestcontainer" + Guid.NewGuid().ToString()
            };
            var blobContainerCreateId = Guid.NewGuid().ToString();
            var testEvent             =
                new EventGridEvent
            {
                Data        = JObject.FromObject(createContainerData),
                EventType   = CustomEventTypes.RequestCreateMetadata,
                DataVersion = "1.0",
            };

            // // Act & Assert
            await Assert.ThrowsAsync <ArgumentException>(async() => await _handler.HandleAsync(testEvent).ConfigureAwait(true)).ConfigureAwait(true);
        }
コード例 #3
0
        public async Task HandleAsync_ShouldReturnTrueAndNotLog_WhenNoErrors()
        {
            // Arrange
            var createContainerData = new RequestContainerCreateDTO {
                StorageAccountName = _storageAccountName, ContainerName = "unittestcontainer" + Guid.NewGuid().ToString()
            };
            var blobContainerCreateId = Guid.NewGuid().ToString();
            var testEvent             =
                new EventGridEvent
            {
                Data        = JObject.FromObject(createContainerData),
                EventType   = CustomEventTypes.RequestBlobContainerCreate,
                DataVersion = "1.0",
            };

            // Arrange Mocks
            Mock.Get(_storageService)
            .Setup(x => x.ContainerCreateAsync(createContainerData.StorageAccountName, createContainerData.ContainerName, It.IsAny <StorageClientProviderContext>()))
            .ReturnsAsync(true);

            EventGridEvent resultEvent = null;

            Mock.Get(_eventGridPublisher)
            .Setup(x => x.PublishEventToTopic(It.IsAny <EventGridEvent>()))
            .Callback <EventGridEvent>((eventGridEvent) => resultEvent = eventGridEvent)
            .ReturnsAsync(true);

            // Act
            var handleAsyncResult = await _handler.HandleAsync(testEvent).ConfigureAwait(true);

            // Assert
            handleAsyncResult.ShouldBe(true);
            resultEvent.ShouldNotBeNull();
            resultEvent.EventType.ShouldBe(CustomEventTypes.ResponseBlobContainerSuccess);
            var resultEventData = (ResponseContainerCreatedSuccessDTO)resultEvent.Data;

            resultEventData.StorageAccountName.ShouldBe(createContainerData.StorageAccountName);
            resultEventData.ContainerName.ShouldBe(createContainerData.ContainerName);
        }