Esempio n. 1
0
        public void ShouldSuccess()
        {
            // Arrange
            var requestName = "Handler";

            string[] features = null;

            // Act
            var handlerInfo = new HandlerFeatureInfo(requestName, null);

            // Assert
            Assert.Equal(requestName, handlerInfo.Name);
            Assert.Equal(features, handlerInfo.Features);


            // Arrange
            var featureName = "Feature";

            features = new string[]
            {
                featureName
            };

            // Act
            handlerInfo = new HandlerFeatureInfo(requestName, features);

            // Assert
            Assert.NotEmpty(handlerInfo.Features);
            Assert.Contains(featureName, handlerInfo.Features);
        }
        public async Task ShoulCallDecoratedHandlerAndAddUsedFeaturesToHeader()
        {
            // Arrange
            var featureC    = "FeatureC";
            var featureQ    = "FeatureQ";
            var features    = new string[] { featureC, featureQ };
            var featureInfo = new HandlerFeatureInfo(typeof(TestCommand).Name, features);

            mockProvider.Setup(x => x.GetHandlerInfo(It.IsAny <string>()))
            .Returns(featureInfo);

            var settingsHolder = new SettingsHolder();

            settingsHolder.Settings = new Setting[]
            {
                new Setting
                {
                    FeatureName = featureC,
                    Enable      = true
                },
                new Setting
                {
                    FeatureName = featureQ,
                    Enable      = true
                }
            };

            var command = new TestCommand();

            // Assert
            mockCommandHandler
            .Setup(x => x.Handle(command, It.IsAny <RequestContext>()))
            .ReturnsAsync(CommandResult.Success);

            var decodator = new FeatureManagementCommandHandlerDecorator <TestCommand>(mockCommandHandler.Object, settingsHolder, mockProvider.Object);

            // Act
            var result = await decodator.Handle(command, Helper.Context);

            // Assert
            Assert.True(result.IsSuccess);
            // Assert.True(Helper.Context.Headers.ContainsKey($"{FeatureHeader.Prefix}-{featureC}"));
            // Assert.True(Helper.Context.Headers.ContainsKey($"{FeatureHeader.Prefix}-{featureQ}"));
        }
Esempio n. 3
0
        public async Task ShoulNotCallDecoratedHandlerIfAllFeaturesNotEnabled()
        {
            // Arrange
            var featureC    = "FeatureC";
            var featureQ    = "FeatureQ";
            var features    = new string[] { featureC, featureQ };
            var featureInfo = new HandlerFeatureInfo(typeof(TestCommand).Name, features);

            mockProvider.Setup(x => x.GetHandlerInfo(It.IsAny <string>()))
            .Returns(featureInfo);

            var settingsHolder = new SettingsHolder();

            settingsHolder.Settings = new Setting[]
            {
                new Setting
                {
                    FeatureName = featureC,
                    Enable      = false
                },
                new Setting
                {
                    FeatureName = featureQ,
                    Enable      = true
                }
            };

            var query = new TestQuery();

            // Assert
            mockHandler
            .Verify(x => x.Handle(query, It.IsAny <RequestContext>()), Times.Never);

            var decodator = new FeatureManagementQueryHandlerDecorator <TestQuery, string>(mockHandler.Object,
                                                                                           settingsHolder, mockProvider.Object);

            // Act
            var result = await decodator.Handle(query, Helper.Context);

            // Assert
            Assert.Equal(Msg.FeatureNotEnabled, result.Code);
            Assert.True(result.IsSuccess);
        }
Esempio n. 4
0
        public async Task ShoulCallDecoratedHandlerAndAddUsedFeaturesToHeader()
        {
            // Arrange
            var featureC    = "FeatureC";
            var featureQ    = "FeatureQ";
            var features    = new string[] { featureC, featureQ };
            var featureInfo = new HandlerFeatureInfo(typeof(TestCommand).Name, features);

            mockProvider.Setup(x => x.GetHandlerInfo(It.IsAny <string>()))
            .Returns(featureInfo);

            var settingsHolder = new SettingsHolder();

            settingsHolder.Settings = new Setting[]
            {
                new Setting
                {
                    FeatureName = featureC,
                    Enable      = true
                },
                new Setting
                {
                    FeatureName = featureQ,
                    Enable      = true
                }
            };

            var query = new TestQuery();

            // Assert
            mockHandler
            .Setup(x => x.Handle(query, It.IsAny <RequestContext>()))
            .ReturnsAsync(QueryResult <string> .WithResult(""));

            var decodator = new FeatureManagementQueryHandlerDecorator <TestQuery, string>(mockHandler.Object,
                                                                                           settingsHolder, mockProvider.Object);

            // Act
            var result = await decodator.Handle(query, Helper.Context);

            // Assert
            Assert.True(result.IsSuccess);
        }