Exemple #1
0
        private async Task StartAsync()
        {
            while (stated)
            {
                var context = await httpListenerWrapper.GetContextAsync().ConfigureAwait(false);

                if (context.IsInvalid)
                {
                    return;
                }

                try
                {
                    var request = await context.ReadRequestAsync().ConfigureAwait(false);

                    httpMockDebugLogger.LogHttpRequest(request);
                    var response = await ProcessRequestAsync(request).ConfigureAwait(false);

                    httpMockDebugLogger.LogHttpResponse(response);
                    await context.WriteResponseAsync(response).ConfigureAwait(false);
                }
                catch (Exception e)
                {
                    var verificationResult = VerificationResult.Create($"Unhandled exception: {e}");
                    verificationMockResults.Add(verificationResult);
                    httpMockDebugLogger.LogUnhandledException(e);
                    await context.WriteResponseAsync(HttpResponse.Create(500)).ConfigureAwait(false);
                }
            }
        }
Exemple #2
0
        private async Task <HttpResponse> ProcessRequestAsync(HttpRequest request)
        {
            var handlingInfo = handlingMockQueue.Dequeue(request);

            if (handlingInfo == null)
            {
                var verificationResult = VerificationResult.Create(
                    $"Actual request {request.Method} {request.Path}, but not expected.");
                verificationMockResults.Add(verificationResult);
                httpMockDebugLogger.LogNotExpected(request);
                return(HttpResponse.Create(500));
            }

            if (!handlingInfo.IsUsageCountValid())
            {
                var verificationResult = VerificationResult.Create(
                    $"Actual request {request.Method} {request.Path} repeat" +
                    $" count {handlingInfo.UsageCount}, but max expected repeat count {handlingInfo.ResponseMock.RepeatCount}.");
                verificationMockResults.Add(verificationResult);
                httpMockDebugLogger.LogCountSpent(request, handlingInfo.UsageCount, handlingInfo.ResponseMock.RepeatCount);
                return(HttpResponse.Create(500));
            }

            var httpResponseMock = handlingInfo.ResponseMock;

            if (httpResponseMock.ResponseInfoBuilder != null)
            {
                return(await SafeInvokeResponseInfoBuilderAsync(httpResponseMock.ResponseInfoBuilder, request).ConfigureAwait(false));
            }

            return(HttpResponse.Create(httpResponseMock.StatusCode,
                                       httpResponseMock.Content.Bytes,
                                       httpResponseMock.Content.Type,
                                       httpResponseMock.Headers));
        }
Exemple #3
0
 private async Task <HttpResponse> SafeInvokeResponseInfoBuilderAsync(Func <HttpRequest, Task <HttpResponse> > asyncResponseInfoBuilder, HttpRequest request)
 {
     try
     {
         return(await asyncResponseInfoBuilder(request).ConfigureAwait(false));
     }
     catch (Exception e)
     {
         var verificationResult = VerificationResult.Create($"Unhandled exception from response info builder: {e}");
         verificationMockResults.Add(verificationResult);
         return(HttpResponse.Create(500));
     }
 }
Exemple #4
0
        public async Task <VerificationResult[]> StopAsync()
        {
            var stopMockTasks = startedHttpMocks
                                .Select(startedHttpMock => startedHttpMock.StopAsync())
                                .ToArray();

            var verificationResults = await Task.WhenAll(stopMockTasks).ConfigureAwait(false);

            var results = verificationResults.SelectMany(x => x).ToList();

            foreach (var httpRequestMockHandlingInfo in handlingMockQueue.GetNotActual())
            {
                results.Add(VerificationResult.Create($"Request {httpRequestMockHandlingInfo.RequestMock} expected, but not actual. Actual count = {httpRequestMockHandlingInfo.UsageCount}, expect count = {httpRequestMockHandlingInfo.RequestMock.Response.RepeatCount}"));
            }

            return(results.ToArray());
        }