public async Task SearchInternalAsync_WithValidInput_TranslatesAndExecutesQuery()
        {
            // Arrange
            (string header, string query) = ControllerExtractMethods.SplitQueryBody(ValidQueryContent);
            var queryData      = new QueryData(query, header);
            var ts             = new TimeSpan(1);
            var reader         = new Mock <IDataReader>();
            var mockTranslator = new Mock <ITranslator>();

            mockTranslator.Setup(translator => translator.Translate(
                                     header, query)).Returns(queryData);
            var mockQueryExecutor = new Mock <IQueryExecutor>();

            mockQueryExecutor.Setup(exec => exec.ExecuteQueryAsync(queryData, It.IsAny <RequestContext>())).Returns(Task.FromResult((ts, reader.Object)));
            var mockLogger         = new Mock <ILogger <QueryController> >();
            var mockResponseParser = new Mock <IResponseParser>();

            mockResponseParser.Setup(exec =>
                                     exec.Parse(
                                         reader.Object,
                                         queryData,
                                         ts));

            var uat = new QueryController(mockQueryExecutor.Object, mockTranslator.Object, mockLogger.Object, mockResponseParser.Object)
            {
                ControllerContext = new ControllerContext
                {
                    HttpContext = new DefaultHttpContext(),
                },
            };

            // Act
            await uat.SearchInternalAsync(true, true, ValidQueryContent, It.IsAny <RequestContext>());

            // Assert
            mockTranslator.Verify(
                translator => translator.Translate(header, query), Times.Once());
            mockQueryExecutor.Verify(
                executor => executor.ExecuteQueryAsync(queryData, It.IsAny <RequestContext>()), Times.Once());
            mockResponseParser.Verify(
                parsr => parsr.Parse(reader.Object, queryData, ts), Times.Once());
        }
Beispiel #2
0
 /// <summary>
 /// Apply this rule on the given context object.
 /// </summary>
 /// <param name="context">The context object which holds the request path.</param>
 public void ApplyRule(RewriteContext context)
 {
     // a workaround an illegal path. the app can' read a path
     // containing :. and replaces it, with a valid token
     context.HttpContext.Request.Path = ControllerExtractMethods.ReplaceTemplateString(context.HttpContext.Request.Path.Value);
 }