public async Task CanProcessQueryAsync(string query, string expected, bool isValid, bool usesPremiumFeatures)
        {
            var context = new ElasticQueryVisitorContext();

            IQueryNode result;

            try {
                result = await _parser.ParseAsync(query, QueryType.Query, context).AnyContext();
            } catch (Exception ex) {
                _logger.Error(ex, $"Error parsing query: {query}. Message: {ex.Message}");
                if (isValid)
                {
                    throw;
                }

                return;
            }

            // NOTE: we have to do this because we don't have access to the right query parser instance.
            result = await EventFieldsQueryVisitor.RunAsync(result, context);

            Assert.Equal(expected, await GenerateQueryVisitor.RunAsync(result, context));

            var info = await _validator.ValidateQueryAsync(result);

            _logger.Info(() => $"UsesPremiumFeatures: {info.UsesPremiumFeatures} IsValid: {info.IsValid} Message: {info.Message}");
            Assert.Equal(isValid, info.IsValid);
            Assert.Equal(usesPremiumFeatures, info.UsesPremiumFeatures);
        }
Example #2
0
        private async Task <FindResults <PersistentEvent> > GetByFilterAsync(string filter)
        {
            var result = await _validator.ValidateQueryAsync(filter);

            Assert.True(result.IsValid);
            Log.SetLogLevel <EventRepository>(LogLevel.Trace);
            return(await _repository.GetByFilterAsync(null, filter, null, null, DateTime.MinValue, DateTime.MaxValue));
        }
    private async Task <FindResults <PersistentEvent> > GetEventsAsync(string search)
    {
        var result = await _validator.ValidateQueryAsync(search);

        Assert.True(result.IsValid);
        Log.SetLogLevel <EventRepository>(LogLevel.Trace);
        return(await _repository.FindAsync(q => q.SearchExpression(search)));
    }
        public async Task <ActionResult <QueryValidator.QueryProcessResult> > ValidateAsync(string query)
        {
            var eventResults = await _eventQueryValidator.ValidateQueryAsync(query);

            var stackResults = await _stackQueryValidator.ValidateQueryAsync(query);

            return(Ok(new QueryValidator.QueryProcessResult {
                IsValid = eventResults.IsValid || stackResults.IsValid,
                UsesPremiumFeatures = eventResults.UsesPremiumFeatures && stackResults.UsesPremiumFeatures,
                Message = eventResults.Message ?? stackResults.Message
            }));
        }
Example #5
0
 public async Task <ActionResult <QueryValidator.QueryProcessResult> > ValidateAsync(string query)
 {
     return(Ok(await _validator.ValidateQueryAsync(query)));
 }
 public async Task <IHttpActionResult> ValidateAsync(string query)
 {
     return(Ok(await _validator.ValidateQueryAsync(query)));
 }