示例#1
0
        public void Policy_ArrayValidator_Test()
        {
            var validator       = new ArrayValidator();
            var validateResult1 = ValidateContractCode(_badContractCode, validator);

            validateResult1.Count.ShouldBeGreaterThan(0);
            validateResult1.First().Message.ShouldContain("Array size is too large");

            var validateResult2 = ValidateContractCode(_systemContractCode, validator);

            validateResult2.Count.ShouldBe(0);
        }
 private void AddArrayValidatorIfNeeded(List <IValidator> validators)
 {
     if (FieldType.Equals(TweezersFieldType.Array))
     {
         if (this.ArrayFieldProperties != null)
         {
             validators.Add(ArrayValidator.Create(ArrayFieldProperties));
         }
         else
         {
             throw new ArgumentException($"ArrayFieldProperties are required for 'array' type");
         }
     }
 }
        private static IValidator ValidatorFromTypeString(string type, IDictionary <string, object> o)
        {
            if (string.IsNullOrEmpty(type))
            {
                throw new Exception("Invalid type string used in validator creation.");
            }

            IValidator validator = null;

            switch (type)
            {
            case "object":
                validator = new ObjectValidator();
                break;

            case "string":
                validator = new StringTypeValidator();
                break;

            case "boolean":
                validator = new BooleanTypeValidator();
                break;

            case "array":
                validator = new ArrayValidator();
                break;
            }

            if (o.ContainsKey("id") &&
                o["id"] is string &&
                validator != null)
            {
                IdToValidatorMap.Add((string)o["id"], validator);
            }

            // Post fix

            if (type == "array")
            {
                ((ArrayValidator)validator).ItemValidator = GenerateArrayItemValidator(o);
            }
            else if (type == "object")
            {
                var v = GenerateObjectValidator(o) as ObjectValidator;
                ((ObjectValidator)validator).Requires   = v.Requires;
                ((ObjectValidator)validator).Validators = v.Validators;
            }

            return(validator);
        }
示例#4
0
        public void Policy_ArrayValidator_Test()
        {
            var validator       = new ArrayValidator();
            var validateResult1 = ValidateContractCode(_badContractCode, validator);

            validateResult1.Count.ShouldBeGreaterThan(0);
            var messages = validateResult1.Select(res => res.Message).ToArray();

            messages.ShouldContain("Array size is too large that causes overflow when estimating memory usage.");
            messages.ShouldContain("Array of AElf.Runtime.CSharp.Tests.BadContract.BadCase3 type is not allowed.");

            var validateResult2 = ValidateContractCode(_systemContractCode, validator);

            validateResult2.Count.ShouldBe(0);
        }
        private void AddTagsValidatorIfNeeded(List <IValidator> validators)
        {
            if (FieldType.Equals(TweezersFieldType.TagsArray))
            {
                TweezersFieldProperties tagsFieldProperties = new TweezersFieldProperties()
                {
                    FieldType = TweezersFieldType.String,
                    Min       = 1,
                    Max       = 50,
                    Regex     = $"^[A-Za-z\\d ]+$",
                };

                validators.Add(ArrayValidator.Create(tagsFieldProperties));
            }
        }