コード例 #1
0
        /// <summary>
        /// Initailises valid customer object to be used in all tests. Also defines <see cref="ValidatorConfig"/>
        /// </summary>
        public CustomerValidatorTests()
        {
            this._customer = new CustomerDto()
            {
                FirstName             = "John",
                LastName              = "Test",
                PolicyReferenceNumber = "AA-000001",
                Email       = "*****@*****.**",
                DateOfBirth = DateTime.Now.AddYears(-20)
            };

            // Set up mock config to inject in Cstomer Validator
            ValidatorConfig config = new ValidatorConfig()
            {
                MinimumCustomerAge     = 18,
                MinimumNameLength      = 3,
                MaximumNameLength      = 50,
                PolicyReferencePattern = @"^[A-Z]{2}-\d{6}$",
                EmailPattern           = @"^[\w]{4,}@\w{2,}(.com|.co.uk)$"
            };

            IOptions <ValidatorConfig> options = Options.Create(config);

            this._customerValidator = new CustomerValidator(options);
        }
コード例 #2
0
        public async void PrimaryValidatorConfigIsReturned()
        {
            var expectedConfig = new ValidatorConfig
            {
                PrimaryValidator      = null,
                AccountNumber         = "2e86f48216567302527b69eae6c6a188097ed3a9741f43cc3723e570cf47644c",
                IpAddress             = "54.183.17.224",
                NodeIdentifier        = "2262026a562b0274163158e92e8fbc4d28e519bc5ba8c1cf403703292be84a51",
                Port                  = null,
                Protocol              = "http",
                Version               = "v1.0",
                DefaultTransactionFee = 1,
                RootAccountFile       = "http://54.183.17.224/media/root_account_file.json",
                RootAccountFileHash   = "cc9390cc579dc8a99a1f34c1bea5d54a0f45b27ecee7e38662f0cd853f76744d",
                SeedBlockIdentifier   = "",
                DailyConfirmationRate = null,
                NodeType              = NodeType.PrimaryValidator
            };

            var service = BuildValidatorConfigServiceMock(expectedConfig);

            var primaryValidatorConfig = await service.GetValidatorConfigAsync();

            var expectedConfigStr = JsonConvert.SerializeObject(expectedConfig);
            var actualConfigStr   = JsonConvert.SerializeObject(primaryValidatorConfig);

            Assert.Equal(expectedConfigStr, actualConfigStr);
        }
コード例 #3
0
        public void testNameRelation()
        {
            // Set up the validators.
            CertificateFetcher fetcher         = new CertificateFetcherOffline();
            ValidatorConfig    validatorPrefix = new ValidatorConfig(fetcher);
            ValidatorConfig    validatorEqual  = new ValidatorConfig(fetcher);
            ValidatorConfig    validatorStrict = new ValidatorConfig(fetcher);

            validatorPrefix.load(new FileInfo(System.IO.Path.Combine(policyConfigDirectory_.FullName, "relation_ruleset_prefix.conf")).FullName);
            validatorEqual.load(new FileInfo(System.IO.Path.Combine(policyConfigDirectory_.FullName, "relation_ruleset_equal.conf")).FullName);
            validatorStrict.load(new FileInfo(System.IO.Path.Combine(policyConfigDirectory_.FullName, "relation_ruleset_strict.conf")).FullName);

            // Set up a Data packet and result object.
            Data data = new Data();

            net.named_data.jndn.KeyLocator.getFromSignature(data.getSignature()).setType(
                net.named_data.jndn.KeyLocatorType.KEYNAME);
            net.named_data.jndn.KeyLocator.getFromSignature(data.getSignature()).setKeyName(
                new Name("/SecurityTestSecRule/KEY/123"));
            TestValidationPolicyConfig.TestValidationResult result = new TestValidationPolicyConfig.TestValidationResult(data);

            data.setName(new Name("/TestRule1"));
            result.checkPolicy(validatorPrefix);
            Assert.AssertTrue("Prefix relation should match prefix name",
                              result.calledContinue_ && !result.calledFailure_);
            result.checkPolicy(validatorEqual);
            Assert.AssertTrue("Equal relation should match prefix name",
                              result.calledContinue_ && !result.calledFailure_);
            result.checkPolicy(validatorStrict);
            Assert.AssertTrue("Strict-prefix relation should not match prefix name",
                              result.calledFailure_ && !result.calledContinue_);

            data.setName(new Name("/TestRule1/hi"));
            result.checkPolicy(validatorPrefix);
            Assert.AssertTrue("Prefix relation should match longer name",
                              result.calledContinue_ && !result.calledFailure_);
            result.checkPolicy(validatorEqual);
            Assert.AssertTrue("Equal relation should not match longer name",
                              result.calledFailure_ && !result.calledContinue_);
            result.checkPolicy(validatorStrict);
            Assert.AssertTrue("Strict-prefix relation should match longer name",
                              result.calledContinue_ && !result.calledFailure_);

            data.setName(new Name("/Bad/TestRule1/"));
            result.checkPolicy(validatorPrefix);
            Assert.AssertTrue("Prefix relation should not match inner components",
                              result.calledFailure_ && !result.calledContinue_);
            result.checkPolicy(validatorEqual);
            Assert.AssertTrue("Equal relation should not match inner components",
                              result.calledFailure_ && !result.calledContinue_);
            result.checkPolicy(validatorStrict);
            Assert.AssertTrue("Strict-prefix relation should  not match inner components",
                              result.calledFailure_ && !result.calledContinue_);
        }
コード例 #4
0
        public static IValidatorConfigService BuildValidatorConfigServiceMock(ValidatorConfig expectedConfig)
        {
            var response = new HttpResponseMessage(HttpStatusCode.OK);

            response.Content = new StringContent(JsonConvert.SerializeObject(expectedConfig), Encoding.UTF8, "application/json");

            var requestSenderMock           = new Mock <IHttpRequestSender>();
            IValidatorConfigService service = new ValidatorConfigService(requestSenderMock.Object);

            requestSenderMock
            .Setup(x => x.GetAsync("/config"))
            .ReturnsAsync(response);

            return(service);
        }
コード例 #5
0
 public IStringValidator CreateValidator(ValidatorConfig config)
 {
     return(config switch
     {
         ValidatorConfig {
             Validator : ValidatorType.Fqdn
         } fqdn when fqdn.Opt is string =>
         new FqdnValidator((string)fqdn.Opt),
         ValidatorConfig {
             Validator : ValidatorType.MaxChars
         } maxChars when maxChars.Opt is long =>
         new MaxCharsValidator((long)maxChars.Opt),
         ValidatorConfig {
             Validator : ValidatorType.OneOf
         } oneOf when oneOf.Opt is JArray =>
         new OneOfValidator(((JArray)oneOf.Opt).ToObject <string[]>()),
         null => throw new ArgumentNullException(),
         _ => throw new ArgumentException($"Invalid config for {config.Validator}, Opt: '{config.Opt}'"),
     });
コード例 #6
0
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);
            B2CPlatform.Init(UnityConfig.GetConfiguredContainer());
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            ValidatorConfig.SetupValidators(ModelValidatorProviders.Providers);

            IContentProvider contentProvider = UnityConfig.GetConfiguredContainer().Resolve <IContentProvider>();

            contentProvider.RegisterBundle("~\\Views", "BicycleQuote", false);
            contentProvider.RegisterBundle("~\\Views\\Shared", "Common", false);
            contentProvider.RegisterBundle("~\\Views\\Question", "Question", false);
            contentProvider.RegisterBundle("~\\Views\\Quote", "Quote", false);
            contentProvider.RegisterBundle("~\\Views\\PolicyDetail", "PolicyDetail", false);
            contentProvider.RegisterBundle("~\\Views\\Payment", "PolicyPayment", false);
            contentProvider.RegisterBundle("~\\Views\\Confirmation", "Confirmation", false);
        }
コード例 #7
0
        public async void ConfirmationValidatorConfigIsReturned()
        {
            var expectedConfig = new ValidatorConfig
            {
                PrimaryValidator = new ValidatorNode
                {
                    AccountNumber         = "2e86f48216567302527b69eae6c6a188097ed3a9741f43cc3723e570cf47644c",
                    IpAddress             = "54.183.17.224",
                    NodeIdentifier        = "2262026a562b0274163158e92e8fbc4d28e519bc5ba8c1cf403703292be84a51",
                    Port                  = null,
                    Protocol              = "http",
                    Version               = "v1.0",
                    DefaultTransactionFee = 1,
                    RootAccountFile       = "http://54.183.17.224/media/root_account_file.json",
                    RootAccountFileHash   = "cc9390cc579dc8a99a1f34c1bea5d54a0f45b27ecee7e38662f0cd853f76744d",
                    SeedBlockIdentifier   = "",
                    DailyConfirmationRate = null,
                    Trust                 = "100.00"
                },
                AccountNumber         = "d5c4db217c032ef21df84be4201766b73e623940ce6d95aedf153da2f8c38626",
                IpAddress             = "54.67.72.197",
                NodeIdentifier        = "61dbf00c2dd7886f01fda60aca6fffd9799f4612110fe804220570add6b28923",
                Port                  = null,
                Protocol              = "http",
                Version               = "v1.0",
                DefaultTransactionFee = 1,
                RootAccountFile       = "http://54.67.72.197/media/root_account_file.json",
                RootAccountFileHash   = "cc9390cc579dc8a99a1f34c1bea5d54a0f45b27ecee7e38662f0cd853f76744d",
                SeedBlockIdentifier   = "",
                DailyConfirmationRate = null,
                NodeType              = NodeType.ConfirmationValidator
            };

            var service = BuildValidatorConfigServiceMock(expectedConfig);

            var confirmationValidatorConfig = await service.GetValidatorConfigAsync();

            var expectedConfigStr = JsonConvert.SerializeObject(expectedConfig);
            var actualConfigStr   = JsonConvert.SerializeObject(confirmationValidatorConfig);

            Assert.Equal(expectedConfigStr, actualConfigStr);
        }
コード例 #8
0
        public BasePagedAndSortedRequestValidator(ValidatorConfig validatorConfig)
        {
            RuleFor(q => q.Limit)
            .NotNull()
            .NotEmpty()
            .InclusiveBetween(1, validatorConfig.MaxPageSize);

            RuleFor(q => q.Page)
            .NotNull()
            .NotEmpty()
            .GreaterThan(0);

            RuleFor(q => q.Order)
            .NotNull()
            .NotEmpty()
            .IsEnumName(typeof(OrderEnum));

            RuleFor(q => q.OrderBy)
            .NotNull()
            .NotEmpty()
            .Must(IsOrderCorrect)
            .WithMessage(SharedValidationMessages.InvalidOrderBy);
        }
コード例 #9
0
        public void testHyperRelation()
        {
            // Set up the validator.
            CertificateFetcher fetcher   = new CertificateFetcherOffline();
            ValidatorConfig    validator = new ValidatorConfig(fetcher);

            validator.load(new FileInfo(System.IO.Path.Combine(policyConfigDirectory_.FullName, "hyperrelation_ruleset.conf")).FullName);

            // Set up a Data packet and result object.
            Data data = new Data();

            net.named_data.jndn.KeyLocator.getFromSignature(data.getSignature()).setType(
                net.named_data.jndn.KeyLocatorType.KEYNAME);
            TestValidationPolicyConfig.TestValidationResult result = new TestValidationPolicyConfig.TestValidationResult(data);

            data.setName(new Name("/SecurityTestSecRule/Basic/Longer/Data2"));

            net.named_data.jndn.KeyLocator.getFromSignature(data.getSignature()).setKeyName(
                new Name("/SecurityTestSecRule/Basic/Longer/KEY/123"));
            result.checkPolicy(validator);
            Assert.AssertTrue(result.calledFailure_ && !result.calledContinue_);
            net.named_data.jndn.KeyLocator.getFromSignature(data.getSignature()).setKeyName(
                new Name("/SecurityTestSecRule/Basic/KEY/123"));
            result.checkPolicy(validator);
            Assert.AssertTrue(result.calledFailure_ && !result.calledContinue_);

            data.setName(new Name("/SecurityTestSecRule/Basic/Other/Data1"));

            net.named_data.jndn.KeyLocator.getFromSignature(data.getSignature()).setKeyName(
                new Name("/SecurityTestSecRule/Basic/Longer/KEY/123"));
            result.checkPolicy(validator);
            Assert.AssertTrue(result.calledFailure_ && !result.calledContinue_);
            net.named_data.jndn.KeyLocator.getFromSignature(data.getSignature()).setKeyName(
                new Name("/SecurityTestSecRule/Basic/KEY/123"));
            result.checkPolicy(validator);
            Assert.AssertTrue(result.calledFailure_ && !result.calledContinue_);
        }
コード例 #10
0
        static void CollectValueArgs(
            Dictionary <MethodParameter, ObjExpr> result,
            ValidatorConfig def,
            string validatorName,
            MethodReference method,
            Func <int, TypeReference, ObjExpr> getField,
            int fieldCount,
            MetadataContext cx
            )
        {
            var parameters      = method.Params();
            var valueParameters = (def.ValueParameters ?? ImmutableArray.Create(parameters.Indexed().Single(x => x.value.Name == "value").index))
                                  .Select(i => parameters[i])
                                  .ToArray();

            foreach (var(index, p) in valueParameters.Indexed())
            {
                if (p.IsParams)
                {
                    if (result.ContainsKey(p))
                    {
                        throw new Exception($"Parameter {p.Name} was already filled");
                    }

                    var elementType = p.Type.GetElementTypeFromIEnumerable(cx, false, out _);
                    var list        = new List <ObjExpr>();
                    for (int pi = 0; pi + index < fieldCount; pi++)
                    {
                        list.Add(getField(index + pi, elementType));
                    }
                    result.Add(p, @this => ExpressionFactory.MakeArray(elementType, list.Select(x => x(@this)).ToArray()));
                }
                else if (index < fieldCount)
                {
                    if (result.ContainsKey(p))
                    {
                        throw new Exception($"Parameter {p.Name} was already filled");
                    }
                    result.Add(p, getField(index, p.Type));
                }
                else
                {
                    if (!result.ContainsKey(p))
                    {
                        if (!p.HasDefaultValue)
                        {
                            throw new Exception($"Required value parameter {p.Name} was not filled");
                        }
                        var a = Expression.Constant(p.DefaultValue, p.Type); //JsonToObjectInitialization.InitializeObject(p.Type, JToken.FromObject(p.GetConstantValue()));
                        result.Add(p, _ => a);
                    }
                }
            }

            foreach (var p in parameters)
            {
                if (!result.ContainsKey(p))
                {
                    if (p.HasDefaultValue)
                    {
                        var a = Expression.Constant(p.DefaultValue, p.Type);
                        result.Add(p, _ => a);
                    }
                    else
                    {
                        throw new Exception($"Method '{method}' registred as validator '{validatorName}' has an unexpected parameter '{p.Name}'.");
                    }
                }
            }
        }
コード例 #11
0
 public GetBooksByAuthorRequestValidator(ValidatorConfig validatorConfig) : base(validatorConfig)
 {
 }
コード例 #12
0
 protected override void Bootstrap(ServiceConfig config)
 {
     base.Bootstrap(config);
     ValidatorConfig.RegisterValidators(config.ValidatorsContainer);
     DataManagerConfig.RegisterDataManagers(config.DataManagerContainer);
 }
コード例 #13
0
 public UserDataValidatorManager(IEnumerable <IUserDataValidator> dataValidators, ValidatorConfig validatorConfig, UserDataStructureConvertor userDataStructureConvertor)
 {
     m_validatorConfig            = validatorConfig;
     m_userDataStructureConvertor = userDataStructureConvertor;
     m_dataValidatorsDic          = dataValidators.ToDictionary(x => x.Type);
 }
コード例 #14
0
 /// <summary>
 /// Call reset() then call validator.checkPolicy to set this object's results.
 /// When finished, you can check calledSuccess_, etc.
 /// </summary>
 ///
 /// <param name="validator">The ValidatorConfig for calling checkPolicy.</param>
 internal void checkPolicy(ValidatorConfig validator)
 {
     reset();
     validator.getPolicy().checkPolicy(data_, state_, this);
 }