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; }
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; }
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; }
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); }
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; }
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; }