コード例 #1
0
        public void EndpointValidatorDefault()
        {
            var validator = new EndpointValidator();

            Assert.True(validator.Validate(new Uri("http://google.com")));
            Assert.False(validator.Validate(new Uri("https://storagesample.blob.core.windows.net")));
        }
コード例 #2
0
        public void EndpointValidatorRegexp()
        {
            var validator = new EndpointValidator(new[] { "[a-z]+.com" });

            Assert.True(validator.Validate(new Uri("http://bing.com")));
            Assert.False(validator.Validate(new Uri("http://bing123.com")));
        }
コード例 #3
0
        public void Validate_HasChildEndpoints_CallsValidateForChildEndpoints()
        {
            // When an endpoint has child endpoints, Validate method calls
            // itself. No nice way to validate this, so setting up the child
            // endpoints to fail the path validation, and validate that is
            // happening

            // Arrange
            var validator = new EndpointValidator(_actionValidator.Object);
            var section   = new Endpoint
            {
                Path      = _defaultValidPath,
                Actions   = _defaultValidActionList,
                Endpoints = new List <Endpoint>
                {
                    new Endpoint
                    {
                        Path    = _defaultInvalidPath,
                        Actions = _defaultValidActionList
                    },
                    new Endpoint
                    {
                        Path    = _defaultInvalidPath,
                        Actions = _defaultValidActionList
                    }
                }
            };

            // Act
            var result = validator.Validate(section, _name);

            // Assert
            Assert.True(result.HasErrors);
            Assert.Equal(2, result.Errors.Length);
        }
コード例 #4
0
        public void Validate_InvalidPathAndActionsInArray_MergesErrors()
        {
            // Arrange
            var validator = new EndpointValidator(_actionValidator.Object);

            var section = new Endpoint
            {
                Path    = _defaultInvalidPath,
                Actions = _defaultValidActionList
            };

            var invalidValidationResult = new ValidationResult();

            invalidValidationResult.AddError(new SectionName("$"), "Something broke");
            _actionValidator.Setup(
                m => m.Validate(It.IsAny <EndpointAction>(), It.IsAny <SectionName>())
                ).Returns(invalidValidationResult);

            // Act
            var result = validator.Validate(section, _name);

            // Assert
            Assert.True(result.HasErrors);
            Assert.Equal(2, result.Errors.Length);
        }
コード例 #5
0
        public void EndpointValidatorBlacklist()
        {
            var validator = new EndpointValidator(new[] { "google" }, false);

            Assert.False(validator.Validate(new Uri("http://google.com")));
            Assert.True(validator.Validate(new Uri("http://bing.com")));
            Assert.True(validator.Validate(new Uri("http://microsoft.com")));
            Assert.True(validator.Validate(new Uri("http://visualstudio.com")));
        }
コード例 #6
0
        public void EndpointValidatorWhitelist()
        {
            var validator = new EndpointValidator(new [] { "bing", "microsoft", "visualstudio" });

            Assert.False(validator.Validate(new Uri("http://google.com")));
            Assert.True(validator.Validate(new Uri("http://bing.com")));
            Assert.True(validator.Validate(new Uri("http://microsoft.com")));
            Assert.True(validator.Validate(new Uri("http://visualstudio.com")));
        }
コード例 #7
0
        public void Validate_NullSection_ReturnsSingleError()
        {
            // Arrange
            var validator = new EndpointValidator(_actionValidator.Object);

            // Act
            var result = validator.Validate(null, _name);

            // Assert
            Assert.True(result.HasErrors);
            var error = Assert.Single(result.Errors);

            Assert.Equal(ErrorMessageFormatter.Format("$", "Endpoint is null"), error);
        }
コード例 #8
0
        public void Validate_ValidPath_ReturnsNoError(string path)
        {
            // Arrange
            var validator = new EndpointValidator(_actionValidator.Object);
            var section   = new Endpoint
            {
                Path    = path,
                Actions = _defaultValidActionList
            };

            // Act
            var result = validator.Validate(section, _name);

            // Assert
            Assert.False(result.HasErrors);
        }
コード例 #9
0
        public Endpoint Execute(EndpointVO endpointVo)
        {
            var matchedEndpoint = dao.FindOne(endpointVo.serialNumber);

            if (matchedEndpoint == null)
            {
                throw new AppException(I18nService.GetTranslate("DONT_HAVE_SERIAL_NUMBER"));
            }
            var endpoint = new Endpoint()
            {
                serialNumber = endpointVo.serialNumber,
            };

            EndpointValidator.ValidateSwitchState(endpointVo.switchState, endpoint);
            return(dao.Edit(endpoint));
        }
コード例 #10
0
        public void Validate_HasEmptyChildEndpointList_ReturnsNoError()
        {
            // Arrange
            var validator = new EndpointValidator(_actionValidator.Object);
            var section   = new Endpoint
            {
                Path      = _defaultValidPath,
                Actions   = _defaultValidActionList,
                Endpoints = new List <Endpoint>()
            };

            // Act
            var result = validator.Validate(section, _name);

            // Assert
            Assert.False(result.HasErrors);
        }
コード例 #11
0
        public void Validate_InvalidPath_ReturnsSingleError(string path)
        {
            // Arrange
            var validator = new EndpointValidator(_actionValidator.Object);
            var section   = new Endpoint
            {
                Path    = path,
                Actions = _defaultValidActionList
            };

            // Act
            var result = validator.Validate(section, _name);

            // Assert
            Assert.True(result.HasErrors);
            var error = Assert.Single(result.Errors);

            Assert.Equal(ErrorMessageFormatter.Format("$.path", $"Invalid path '{path}'. Path can only contain A-Z, a-z, 0-9 and slashes (/)."), error);
        }
コード例 #12
0
        public void Validate_NullAndWhitespacePath_ReturnsSingleError(string path)
        {
            // Arrange
            var validator = new EndpointValidator(_actionValidator.Object);
            var section   = new Endpoint
            {
                Path    = path,
                Actions = _defaultValidActionList
            };

            // Act
            var result = validator.Validate(section, _name);

            // Assert
            Assert.True(result.HasErrors);
            var error = Assert.Single(result.Errors);

            Assert.Equal(ErrorMessageFormatter.Format("$.path", "Endpoint must have a path"), error);
        }
コード例 #13
0
        public void Validate_EmptyActions_ReturnsSingleError()
        {
            // Arrange
            var validator = new EndpointValidator(_actionValidator.Object);
            var section   = new Endpoint
            {
                Path    = _defaultValidPath,
                Actions = new List <EndpointAction>()
            };

            // Act
            var result = validator.Validate(section, _name);

            // Assert
            Assert.True(result.HasErrors);
            var error = Assert.Single(result.Errors);

            Assert.Equal(ErrorMessageFormatter.Format("$.actions", $"Actions array must have at least one item"), error);
        }
コード例 #14
0
        public void Validate_NullActions_ReturnsSingleError()
        {
            // Arrange
            var validator = new EndpointValidator(_actionValidator.Object);
            var section   = new Endpoint
            {
                Path    = _defaultValidPath,
                Actions = null
            };

            // Act
            var result = validator.Validate(section, _name);

            // Assert
            Assert.True(result.HasErrors);
            var error = Assert.Single(result.Errors);

            Assert.Equal(ErrorMessageFormatter.Format("$.actions", $"Endpoints must have an actions array"), error);
        }
コード例 #15
0
        public Endpoint Execute(EndpointVO endpointVo)
        {
            if (dao.FindOne(endpointVo.serialNumber) != null)
            {
                throw new AppException(I18nService.GetTranslate("SERIAL_NUMBER_DUPLICATED"));
            }

            var endpoint = new Endpoint()
            {
                serialNumber         = endpointVo.serialNumber,
                meterFirmwareVersion = endpointVo.meterFirmwareVersion,
                meterNumber          = int.Parse(endpointVo.meterNumber),
            };

            EndpointValidator.ValidateModelId(endpointVo.meterModelId, endpoint);
            EndpointValidator.ValidateSwitchState(endpointVo.switchState, endpoint);

            return(dao.Create(endpoint));
        }
コード例 #16
0
        public async Task SuccessFlowCustomInjectorBlockedEndpoint()
        {
            var injector  = new InjectorMock();
            var validator = new EndpointValidator();

            validator.AddEndpoint("google.com");

            var config = new AspNetCoreCorrelationConfiguration()
                         .WithEndpointValidator(validator);

            ContextTracingInstrumentation.Enable(config);

            var correlationId = Guid.NewGuid().ToString();

            ContextResolver.SetRequestContext(new CorrelationContext(correlationId));

            var client = new HttpClient();
            await client.GetAsync("http://google.com");

            Assert.False(injector.WasCalled);
        }
コード例 #17
0
        public void Validate_MultipleActionsInArray_CallsActionValidatorForAllActions()
        {
            // Arrange
            var validator = new EndpointValidator(_actionValidator.Object);
            var action1   = new EndpointAction();
            var action2   = new EndpointAction();
            var action3   = new EndpointAction();
            var section   = new Endpoint
            {
                Path    = _defaultValidPath,
                Actions = new List <EndpointAction>
                {
                    action1,
                    action2,
                    action3
                }
            };

            // Act
            var result = validator.Validate(section, _name);

            // Assert
            Assert.False(result.HasErrors);

            _actionValidator.Verify(m => m.Validate(
                                        action1,
                                        It.Is <SectionName>(s => s.PropertyPath == "$.actions[0]")
                                        ), Times.Once());

            _actionValidator.Verify(m => m.Validate(
                                        action2,
                                        It.Is <SectionName>(s => s.PropertyPath == "$.actions[1]")
                                        ), Times.Once());

            _actionValidator.Verify(m => m.Validate(
                                        action3,
                                        It.Is <SectionName>(s => s.PropertyPath == "$.actions[2]")
                                        ), Times.Once());
        }
コード例 #18
0
        public void EndpointValidatorEmpty()
        {
            var validator = new EndpointValidator(new string[0]);

            Assert.True(validator.Validate(new Uri("http://google.com")));
        }