Exemplo n.º 1
0
        public async Task Verfier_Field_Simple_Valid()
        {
            var parserMgr = GetParserManager("one");

            var config = new DeviceMessageDefinitionField()
            {
                StorageType = EntityHeader <DeviceAdmin.Models.ParameterTypes> .Create(DeviceAdmin.Models.ParameterTypes.String)
            };

            var verifier = new Verifier();

            verifier.VerifierType = EntityHeader <VerifierTypes> .Create(VerifierTypes.MessageFieldParser);

            verifier.ShouldSucceed = true;
            verifier.InputType     = EntityHeader <InputTypes> .Create(InputTypes.Text);

            verifier.Input          = "abc123";
            verifier.ExpectedOutput = "one";

            var verifiers = new FieldParserVerifierRuntime(parserMgr, _resultRepo.Object, _deviceAdminManager.Object);
            var result    = await verifiers.VerifyAsync(new IoT.Runtime.Core.Models.Verifiers.VerificationRequest <DeviceMessageDefinitionField>()
            {
                Verifier      = verifier,
                Configuration = config
            }, null, null);

            WriteResults(result);

            Assert.IsTrue(result.Success);
            Assert.AreEqual(1, result.IterationsCompleted);
        }
Exemplo n.º 2
0
        protected DeviceMessageDefinitionField GetDeviceMessageField(string name, string key, ParameterTypes parameterType = ParameterTypes.String)
        {
            var field = new DeviceMessageDefinitionField();

            field.Name        = name;
            field.Key         = key;
            field.StorageType = EntityHeader <ParameterTypes> .Create(parameterType);

            return(field);
        }
        public DeviceMessageDefinitionField CreateValidMessageField(SearchLocations searchLocation, MessageContentTypes contentType = MessageContentTypes.JSON, ParameterTypes parameterType = ParameterTypes.String)
        {
            var fld = new DeviceMessageDefinitionField();

            fld.Key  = "key";
            fld.Name = "fld1";
            switch (parameterType)
            {
            case ParameterTypes.DateTime: fld.StorageType = new Core.Models.EntityHeader <DeviceAdmin.Models.ParameterTypes>()
            {
                    Id = TypeSystem.DateTime, Text = "Date Time"
            }; break;

            case ParameterTypes.Decimal: fld.StorageType = new Core.Models.EntityHeader <DeviceAdmin.Models.ParameterTypes>()
            {
                    Id = TypeSystem.Decimal, Text = "Decimal"
            }; break;

            case ParameterTypes.GeoLocation: fld.StorageType = new Core.Models.EntityHeader <DeviceAdmin.Models.ParameterTypes>()
            {
                    Id = TypeSystem.Geolocation, Text = "Geo Location"
            }; break;

            case ParameterTypes.Integer: fld.StorageType = new Core.Models.EntityHeader <DeviceAdmin.Models.ParameterTypes>()
            {
                    Id = TypeSystem.Integer, Text = "Integer"
            }; break;

            case ParameterTypes.State:
                fld.StorageType = new Core.Models.EntityHeader <DeviceAdmin.Models.ParameterTypes>()
                {
                    Id = TypeSystem.State, Text = "State"
                };
                fld.StateSet = new EntityHeader <StateSet>()
                {
                    Id   = "abc123",
                    Text = "text123"
                };

                break;

            case ParameterTypes.String: fld.StorageType = new Core.Models.EntityHeader <DeviceAdmin.Models.ParameterTypes>()
            {
                    Id = TypeSystem.String, Text = "String"
            }; break;

            case ParameterTypes.TrueFalse: fld.StorageType = new Core.Models.EntityHeader <DeviceAdmin.Models.ParameterTypes>()
            {
                    Id = TypeSystem.TrueFalse, Text = "True/False"
            }; break;

            case ParameterTypes.ValueWithUnit:
                fld.StorageType = new Core.Models.EntityHeader <DeviceAdmin.Models.ParameterTypes>()
                {
                    Id = TypeSystem.ValueWithUnit, Text = "value with unit"
                };
                fld.UnitSet = new EntityHeader <UnitSet>()
                {
                    Id   = "abc123",
                    Text = "text123"
                };
                break;
            }

            switch (searchLocation)
            {
            case SearchLocations.Body:
                fld.SearchLocation = new Core.Models.EntityHeader <SearchLocations>()
                {
                    Id = DeviceMessageDefinitionField.SearchLocation_Body, Text = "body"
                };
                switch (contentType)
                {
                case MessageContentTypes.Binary:
                    fld.BinaryOffset          = 32;
                    fld.ParsedBinaryFieldType = new Core.Models.EntityHeader <ParseBinaryValueType>()
                    {
                        Id = DeviceMessageDefinitionField.ParserStringType_String, Text = "uint64"
                    };
                    break;

                /*case MessageContentTypes.Custom:
                 *
                 *  break;*/
                case MessageContentTypes.Delimited:
                    fld.DelimitedIndex        = 3;
                    fld.ParsedStringFieldType = new Core.Models.EntityHeader <ParseStringValueType>()
                    {
                        Id = DeviceMessageDefinitionField.ParserStringType_String, Text = "abc123"
                    };
                    break;

                case MessageContentTypes.JSON:
                    fld.ParsedStringFieldType = new Core.Models.EntityHeader <ParseStringValueType>()
                    {
                        Id = DeviceMessageDefinitionField.ParserStringType_String, Text = "abc123"
                    };
                    fld.JsonPath = "one.two.three";
                    break;

                case MessageContentTypes.StringRegEx:
                    fld.ParsedStringFieldType = new Core.Models.EntityHeader <ParseStringValueType>()
                    {
                        Id = DeviceMessageDefinitionField.ParserStringType_String, Text = "abc123"
                    };
                    fld.RegExGroupName = "somefield";
                    break;

                case MessageContentTypes.StringPosition:
                    fld.ParsedStringFieldType = new Core.Models.EntityHeader <ParseStringValueType>()
                    {
                        Id = DeviceMessageDefinitionField.ParserStringType_String, Text = "abc123"
                    };
                    fld.StartIndex = 5;
                    fld.Length     = 5;
                    break;

                case MessageContentTypes.XML:
                    fld.ParsedStringFieldType = new Core.Models.EntityHeader <ParseStringValueType>()
                    {
                        Id = DeviceMessageDefinitionField.ParserStringType_String, Text = "abc123"
                    };
                    fld.XPath = "//foo/fee/fum";
                    break;
                }
                break;

            case SearchLocations.Header:
                fld.SearchLocation = new Core.Models.EntityHeader <SearchLocations>()
                {
                    Id = DeviceMessageDefinitionField.SearchLocation_Headers, Text = "headers"
                };
                break;

            case SearchLocations.Path:
                fld.SearchLocation = new Core.Models.EntityHeader <SearchLocations>()
                {
                    Id = DeviceMessageDefinitionField.SearchLocation_Path, Text = "Path"
                };
                fld.PathLocator = "/https/{foo}/fee";
                break;

            case SearchLocations.QueryString:
                fld.SearchLocation = new Core.Models.EntityHeader <SearchLocations>()
                {
                    Id = DeviceMessageDefinitionField.SearchLocation_QueryString, Text = "Query String"
                };
                fld.PathLocator = "fieldone";
                break;

            case SearchLocations.Topic:
                fld.SearchLocation = new Core.Models.EntityHeader <SearchLocations>()
                {
                    Id = DeviceMessageDefinitionField.SearchLocation_Topic, Text = "Topic"
                };

                break;
            }

            return(fld);
        }
 public ValidationResult ValidateMessageField(DeviceMessageDefinitionField field)
 {
     return(field.Validate());
 }