Example #1
0
        private OperationResult IsMatch(List<string> paths, string key, string expectedValue,
            Func<ConfigReader, string> chosenFunction)
        {
            OperationResult result = new OperationResult();

            if (!paths.Any())
            {
                paths = new List<string>() { "" };
            }

            foreach (string path in paths)
            {
                ConfigReader configReader = new ConfigReader(path);
                string foundValue = chosenFunction(configReader);

                if (String.IsNullOrEmpty(foundValue) || foundValue != expectedValue)
                {
                    result.Successful &= false;
                    result.Description += String.Format("Mismatch in file '{0}' on '{1}'. ",
                        path,
                        key);
                }
            }

            return result;
        }
Example #2
0
        private OperationResult RunCheckQuery(Query query)
        {
            OperationResult result = new OperationResult(false);

            if (!string.IsNullOrEmpty(query.KeyValue))
            {
                result = _commandRunner.IsMatchKeyValue(query.Paths,
                    query.KeyValue, query.Expected);
            }
            else if (!string.IsNullOrEmpty(query.ConnectionString))
            {
                result = _commandRunner.IsMatchConnectionString(query.Paths,
                    query.ConnectionString, query.Expected);
            }

            return result;
        }
Example #3
0
        public OperationResult RunQuery(string queryString)
        {
            OperationResult result = new OperationResult(false);
            Query query = _queryParser.ParseQuery(queryString);

            switch (query.Command)
            {
                case ECommand.check:
                    result = RunCheckQuery(query);
                    break;
                case ECommand.get:
                    result = RunGetQuery(query);
                    break;
            }

            return result;
        }
Example #4
0
        private OperationResult ValidateArguments(ECommand command, string[] arguments)
        {
            OperationResult result = new OperationResult();
            Dictionary<string, string> argumentsDict;
            try
            {
                argumentsDict = (from arg in arguments
                                 let splittedArg = arg.Split(new char[] { ':' }, 2)
                                 select splittedArg)
                                 .ToDictionary(x => x[0], x => x[1]);
            }
            catch (IndexOutOfRangeException)
            {
                result.Successful = false;
                result.Description = "Some argument has wrong format.";
                return result;
            }

            var unknownArguments = argumentsDict
                .Keys
                .Where(x => !_availableArgumentsKeys.Contains(x));

            if (unknownArguments.Any())
            {
                result.Description = String.Format("Unknown arguments: {0}",
                    String.Join(", ", unknownArguments));
                result.Successful = false;
                return result;
            }

            if (command == ECommand.check && !argumentsDict.ContainsKey("expected"))
            {
                result.Description = "Check query must contains 'expected'";
                result.Successful = false;
                return result;
            }

            return result;
        }
        public void TestQuerySyntaxValidator()
        {
            QueryValidator queryValidator = new QueryValidator();

            OperationResult validQueriesValidationResult = new OperationResult();
            foreach (var query in _validQueries)
            {
                OperationResult valResult = queryValidator.ValidateQuerySyntax(query);

                validQueriesValidationResult.Successful &= valResult.Successful;
                if (!valResult.Successful)
                {
                    validQueriesValidationResult.Description +=
                        String.Format("Error in query '{0}': {1}. ",
                            query, valResult.Description);
                }
            }

            Assert.IsTrue(validQueriesValidationResult.Successful,
                validQueriesValidationResult.Description);

            OperationResult invalidQueriesValidationResult = new OperationResult();
            foreach (var query in _invalidQueries)
            {
                OperationResult valResult = queryValidator.ValidateQuerySyntax(query);

                invalidQueriesValidationResult.Successful &= valResult.Successful;
                if (!valResult.Successful)
                {
                    invalidQueriesValidationResult.Description +=
                        String.Format("Error in query '{0}': {1} .",
                            query, valResult.Description);
                }
            }

            Assert.IsFalse(invalidQueriesValidationResult.Successful,
                invalidQueriesValidationResult.Description);
        }
Example #6
0
        public OperationResult RunQuery(string[] queryStringArray)
        {
            OperationResult result = new OperationResult(false);
            try
            {
                Query query = _queryParser.ParseQuery(queryStringArray);
                switch (query.Command)
                {
                    case ECommand.check:
                        result = RunCheckQuery(query);
                        break;
                    case ECommand.get:
                        result = RunGetQuery(query);
                        break;
                }
            }
            catch (Exception ex)
            {
                result.Description = ex.Message;
                result.Successful = false;
            }

            return result;
        }
Example #7
0
        public OperationResult ValidateQuerySyntax(string[] query)
        {
            OperationResult result = new OperationResult();
            if (query.Length == 0)
            {
                result.Successful = false;
                result.Description = "Query is empty.";
                return result;
            }

            string firstWord = query[0];
            ECommand command;
            if (!Enum.TryParse(firstWord, out command))
            {
                result.Successful = false;
                result.Description = "Command can't be recognized.";
                return result;
            }

            string[] argumentsArray = new string[query.Length - 1];
            Array.Copy(query, 1, argumentsArray, 0, query.Length - 1);
            if (argumentsArray.Length == 0)
            {
                result.Successful = false;
                result.Description = "Arguments list is empty.";
                return result;
            }

            OperationResult argumentsValidationResult = ValidateArguments(command, argumentsArray);
            if (!argumentsValidationResult.Successful)
            {
                result = argumentsValidationResult;
            }

            return result;
        }